WO2013062204A1 - Device and method for controlling a flash memory for storing an error correction code - Google Patents

Device and method for controlling a flash memory for storing an error correction code Download PDF

Info

Publication number
WO2013062204A1
WO2013062204A1 PCT/KR2012/004566 KR2012004566W WO2013062204A1 WO 2013062204 A1 WO2013062204 A1 WO 2013062204A1 KR 2012004566 W KR2012004566 W KR 2012004566W WO 2013062204 A1 WO2013062204 A1 WO 2013062204A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
error correction
page
flash memory
correction code
Prior art date
Application number
PCT/KR2012/004566
Other languages
French (fr)
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 한양대학교 산학협력단
Publication of WO2013062204A1 publication Critical patent/WO2013062204A1/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD

Definitions

  • the present invention relates to an apparatus and method for controlling a flash memory for storing an error correction code, and more particularly, to an apparatus and method for controlling a process of storing an error correction code used for error correction of data stored in a flash memory. It is about.
  • NAND flash memory has superior random read / write performance compared to hard drives, it is used to build storage on server systems that simultaneously handle a large number of user requests. Recently, due to the low power consumption and large capacity of NAND flash memory, it is widely used as a storage device for solid state drives and portable devices.
  • the controller of the NAND flash memory uses an error correction code (ECC) for error correction, which is generated during the data transfer time and stored in the spare area along with the data page for the page program time. do. Since the large-capacity NAND flash memory device uses a program command to write to both the data area and the spare area, no additional overhead for storing the error correction code occurs.
  • ECC error correction code
  • the error correction code stored as described above is decoded when data is read during the page read time, and the error corrected data is returned to the host by the error correction code. As with the write operation, the information stored in the data area and the spare area can be read by a single read operation.
  • the controller of the NAND flash memory generally uses a BCH code algorithm as an error correction code.
  • the BCH code algorithm requires a 13 bit error correction code to correct 1 bit of error in a 512 byte sector.
  • Recently produced flash memory based on 3-bit multi-level cells (MLC) and 20 nanometer-class memory manufacturing processes have increased the error rate per sector significantly, and an error correction code of 24 bits or 40 bits per 1024 bytes is recommended.
  • FIG. 1 is a diagram illustrating a conventional RAID-5 technique, in which five storage devices are connected in parallel, of which only four storage devices are used for general data storage, and one storage device has four storage devices. Parity bits for error correction of the stored data are stored.
  • FIG. 2 is a diagram for describing a technique of using an external extension block.
  • an error correction code of a low performance BCH code algorithm such as 4 bit error correction is first stored in a spare area of a corresponding page, and an error correction code of a high performance BCH code algorithm such as 24 bit error correction is externally designated. Secondary storage in the extension block.
  • the error is usually corrected using the first stored error correction code, but when an error that cannot be corrected first occurs, the error correction code is stored using the second stored error correction code for accurate error correction. Will be performed.
  • Korean Laid-Open Patent Publication No. 1998-0038438 encodes the state information of a sector when encoding data together without distinguishing an overhead area so that errors occurring in any part of the sector can be corrected by an error correction code.
  • this method also has a problem that the problem of securing an additional area for storing an error correcting code of increased size cannot be solved.
  • the present invention provides a flash memory controller for storing an error correction code for storing an error correction code of a large bit in a page in which data of a flash memory is to be stored together so that encoding and decoding can be performed without additional delay. To provide a way.
  • a flash memory control apparatus for storing an error correction code is configured to control a flash memory in which data is stored in units of pages, and the page is composed of a predetermined number of sectors.
  • a host interface for transmitting and receiving a control signal and data with the host; And a plurality of data corresponding to a data area in which write target data received together with a write control signal from the host and an error correction code generated corresponding to the write target data are stored in a page of the flash memory, wherein the write target data is stored.
  • a memory interface unit for further allocating a region corresponding to a preset number of sectors of the sectors to the storage region of the error correction code.
  • a method of controlling a flash memory for storing an error correction code is to control a flash memory in which data is stored in units of pages and the page is configured with a predetermined number of sectors.
  • a method using an RAID-5 structure or an external expansion block is employed by using a portion of a memory area for data storage for storing an error correction code.
  • data and error correction codes for the same page can be stored together, thereby reducing the delay time for reading and writing an external page.
  • FIG. 2 is a diagram for explaining a technique of using an external expansion block
  • FIG. 3 is a block diagram showing the configuration of a preferred embodiment of a flash memory controller for storing error correction codes in accordance with the present invention
  • FIG. 4 is a diagram illustrating a conventional method in which data and an error correction code are stored in one page
  • FIG. 5 is a diagram illustrating a method of storing data and an error correction code in one page according to the present invention
  • FIG. 6 is a graph illustrating a comparison of the number of error correctable bits according to the number of sectors used as spare areas in a page of a flash memory
  • FIG. 7 is a diagram illustrating an example of a clustering page used in an SSD using a multi-chip
  • CBER correctable block error rate
  • RBER raw bit error rate
  • FIG. 10 is a flowchart illustrating an exemplary embodiment of a flash memory control method for storing an error correction code according to the present invention.
  • FIG. 3 is a block diagram showing the configuration of a preferred embodiment of a flash memory control apparatus for storing an error correction code according to the present invention.
  • the flash memory controller 100 operates between the host 200 and the flash memory 300 and includes a host interface unit 110 and a memory interface unit 120.
  • the flash memory controller 100 may further include a buffer unit (not shown) in which data transmitted between the host 200 and the flash memory 300 is stored.
  • the host interface unit 110 transmits and receives a control signal and data to and from the host 200, and the memory interface unit 120 receives the write target data received together with the write control signal from the host 200. And an error correction code generated corresponding to the write target data in a page of the flash memory 300.
  • the flash memory 300 includes a plurality of blocks that are basic units of a data erase operation, and a block includes a plurality of pages that are basic units of a read and write operation.
  • the page is composed of a plurality of sectors, each of which consists of a data area in which actual data is stored and a spare area in which information such as an error correction code for managing the data area is stored. .
  • FIG. 4 is a diagram illustrating a conventional method in which data and an error correction code are stored in one page.
  • a (16K + 512) byte size page is composed of 32 sectors, and each sector is (512 + 16) byte size.
  • Each sector consists of a data area of 512 bytes and a spare area of 16 bytes, and stores data and an error correction code, respectively.
  • the memory interface unit 120 of the flash memory controller 100 adjusts the number of sectors constituting the page to further allocate an ECC storage area in which an error correction code is stored, thereby consequently the size of the spare area. You get the same effect as increasing.
  • FIG. 5 is a diagram illustrating a method of storing data and an error correction code in one page according to the present invention.
  • the page size of FIG. 5 is (16K + 512) bytes, and the page size of FIG. 4 and the flash memory 300 are the same, but the number of sectors is 31, which is reduced by one.
  • the number of sectors to be used as the ECC storage area can be adjusted by setting, and preferably, an area corresponding to one sector can be used as the ECC storage area.
  • another page may be additionally allocated to the data beyond the size of the reduced data area to handle the read / write request of the host.
  • the memory interface unit 120 uses a portion of the sector of the flash memory 300 as the ECC storage area, so that an error correction code for the write target data is stored together in the same page as the write target data, and further, for each sector. Since the error correction code is stored in succession to the data, error correction can be performed without delay in accordance with the sector-by-sector operation of the host.
  • the memory interface 120 flashes the read target data corresponding to the read control signal and the error correction code corresponding to the read target data. After reading from the same page of the memory 300 and performing error correction on the data to be read, the memory 300 is output to the host 200 through the host interface 110.
  • FIG. 6 is a graph illustrating a comparison of the number of error correctable bits according to the number of sectors used as an ECC storage area in one page of the flash memory 300. Referring to FIG. 6, by adjusting the number of sectors for data storage to secure an error correction code storage area, an error correction code of an increased bit may be stored for high performance error correction in an error correction scheme such as a BCH code algorithm. It can be confirmed.
  • an error correction code of an increased bit may be stored for high performance error correction in an error correction scheme such as a BCH code algorithm. It can be confirmed.
  • the flash memory controller 100 reduces the size of the data area and increases the size of the ECC storage area, the read / write request of the host is allocated in the same unit as the page size of the flash memory 300. If so, performance degradation can be expected.
  • the flash memory 300 included in the recently-used SSD products is used to extend the page size to 16 KB or more, and furthermore, eight or 16 pages are clustered and used as one clustering page. In practice, performance degradation does not occur much because page clustering is required to easily manage SSDs equipped with dozens of NAND flash memory or to reduce the size of the FTL map table.
  • FIG. 7 is a diagram illustrating an example of a clustering page used in an SSD using multiple chips. In the four flash memory chips, pages of the same location are clustered and used as one page. Therefore, the effect of actually increasing the size of the page will occur.
  • CBER correctable block error rate
  • RBER raw bit error rate
  • N is the number of bits in the block
  • E is the number of errors in the block
  • p is the bit error rate
  • FIG. 9 is a graph showing normalized operation delay time according to the conventional error correction code storage scheme and the present invention. Referring to FIG. 9, when the page size is small, the delay time increases rapidly as the number of sectors used for storing the error correction code increases. However, when the page size increases, some sectors are used for storing the error correction code. Even if the delay time does not show a difference.
  • a NAND flash memory based storage device may use a volatile memory buffer to improve performance.
  • the memory controller temporarily stores data of a write object in a buffer or outputs data of a read object to be output to the host in response to an I / O access command of the host.
  • buffer memory in this way reduces the latency that occurs while processing I / O access, and allows you to combine instructions for the same block or page.
  • CFLRU Clean-first LRU
  • Such a CRLRU buffer management technique may be applied to the flash memory management apparatus 100 according to the present invention.
  • the CFLRU technique applied to the present invention is referred to as an O-CFLRU technique.
  • the O-CFLRU scheme sector-by-sector instructions for the same page are grouped together regardless of the timing and type, thereby performing buffer allocation or flushing in units of pages.
  • the O-CFLRU classifies the received command according to the size of the command, that is, the size of the sector. If the size of the sector is larger than the preset reference value (for example, 32), the command is directly transmitted to the NAND flash memory. In other words, commands smaller than the reference value are stored in a buffer and merged or 'in-place' updated.
  • FIG. 10 is a flowchart illustrating an exemplary embodiment of a flash memory control method for storing an error correction code according to the present invention.
  • the host interface unit 110 of the flash memory controller 100 when the host interface unit 110 of the flash memory controller 100 according to the present invention receives a data write control signal from the host 200 (S1010), it writes to the write target data that is the target of the write control signal. A corresponding error correction code is generated (S1020).
  • the error correction code may be generated by an error correction unit (not shown) separately provided in the memory interface 120 or the flash memory controller 100.
  • the memory interface unit 120 stores the write target data and the error correction code corresponding thereto in the flash memory 300, and as described above, some sectors of the page where the write target data is to be stored, for example, 1 to 2 sectors.
  • An area corresponding to the Mn is allocated as an ECC storage area for storing an error correction code (S1030).
  • the memory interface unit 120 may read an error correction code stored together on the same page as the read target data and the read target data corresponding to the read control signal.
  • the flash memory 300 reads the data from the flash memory 300 (S1050), corrects an error of the data to be read using the error correction code, and outputs the error to the host 200 (S1060).
  • the error correction process may also be performed by an error correction unit (not shown) provided in the flash memory controller 100 separately.
  • the invention can also be embodied as computer readable code on a computer readable recording medium.
  • the computer-readable recording medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage, and the like, and may also be implemented in the form of a carrier wave (for example, transmission over the Internet). Include.
  • the computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

The present invention relates to a device and method for controlling a flash memory for storing an error correction code. Data is stored in page units, a host interface sends/transmits a control signal and data from/to a host such that a flash memory in which the page includes a preset number of sectors is controlled, and a memory interface unit stores data to be written that is received along with a write control signal from the host and an error correction code generated in response to the data to be written, in the page of the flash memory, wherein regions corresponding to the preset number of sectors that are among a plurality of sectors corresponding to data regions in which the data to be written is stored are further allocated as a storage region of the error correction code.

Description

에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법Flash memory controller and method for storing error correction codes
본 발명은 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법에 관한 것으로, 보다 상세하게는, 플래시 메모리에 저장된 데이터의 에러 정정시에 사용되는 에러 정정 코드가 저장되는 과정을 제어하는 장치 및 방법에 관한 것이다.The present invention relates to an apparatus and method for controlling a flash memory for storing an error correction code, and more particularly, to an apparatus and method for controlling a process of storing an error correction code used for error correction of data stored in a flash memory. It is about.
낸드(NAND) 플래시 메모리는 하드 드라이브에 비해 우수한 랜덤 읽기/쓰기 성능을 가지기 때문에 수많은 사용자의 요청을 동시에 처리하는 서버 시스템의 저장장치를 구축하는 데 사용된다. 또한 최근에는 낸드 플래시 메모리의 낮은 전력 소모 및 대용량 특성으로 인해 SSD(solid state drive)와 휴대용 기기의 저장장치로 널리 사용되고 있다.Because NAND flash memory has superior random read / write performance compared to hard drives, it is used to build storage on server systems that simultaneously handle a large number of user requests. Recently, due to the low power consumption and large capacity of NAND flash memory, it is widely used as a storage device for solid state drives and portable devices.
한편, 낸드 플래시 메모리의 제품 생산 기술이 미세화되고 한 개의 저장 셀(cell)에 여러 비트를 저장하는 멀티 레벨 셀(Multi Level Cell : MLC) 기술이 보급됨에 따라 장치의 제작 비용이 감소하였으나, 장치의 신뢰성과 내구성이 저하되는 결과를 초래하여 그에 따라 에러 검출 및 정정 기술이 사용되었다.On the other hand, as the production technology of NAND flash memory is miniaturized and the Multi Level Cell (MLC) technology, which stores several bits in one storage cell, has been spreading, the manufacturing cost of the device has been reduced. Error detection and correction techniques have been used accordingly, resulting in poor reliability and durability.
낸드 플래시 메모리의 제어기는 에러 정정을 위해 에러 정정 코드(Error Correction Code : ECC)를 사용하는데, 에러 정정 코드는 데이터 전송 시간 동안 생성되고, 페이지 프로그램 시간 동안 데이터 페이지와 함께 스페어(spare) 영역에 저장된다. 대용량 낸드 플래시 메모리 장치는 프로그램 명령을 사용하여 데이터 영역과 스페어 영역 양쪽에 쓰기 동작을 수행하므로 에러 정정 코드를 저장하기 위한 추가 오버헤드는 발생하지 않는다. 이와 같이 저장된 에러 정정 코드는 페이지 읽기 시간 동안 데이터가 읽혀질 때 복호화되며, 에러 정정 코드에 의해 에러 정정된 데이터가 호스트로 리턴된다. 쓰기 동작을 수행할 때와 마찬가지로 데이터 영역과 스페어 영역에 저장된 정보는 한 번의 읽기 동작에 의해 읽혀질 수 있다.The controller of the NAND flash memory uses an error correction code (ECC) for error correction, which is generated during the data transfer time and stored in the spare area along with the data page for the page program time. do. Since the large-capacity NAND flash memory device uses a program command to write to both the data area and the spare area, no additional overhead for storing the error correction code occurs. The error correction code stored as described above is decoded when data is read during the page read time, and the error corrected data is returned to the host by the error correction code. As with the write operation, the information stored in the data area and the spare area can be read by a single read operation.
낸드 플래시 메모리의 제어기는 에러 정정 코드로서 일반적으로 BCH 코드 알고리즘을 사용한다. BCH 코드 알고리즘은 512 바이트 크기의 섹터에서 1 비트의 에러를 정정하기 위해 13 비트의 에러 정정 코드를 요구한다. 또한 최근 생산되는 3 비트 멀티 레벨 셀(MLC) 및 20 나노미터 급 메모리 제조 공정 기반의 플래시 메모리는 섹터 당 에러 발생률이 크게 증가하여, 1024 바이트 당 24 비트 또는 40 비트의 에러 정정 코드가 권장된다.The controller of the NAND flash memory generally uses a BCH code algorithm as an error correction code. The BCH code algorithm requires a 13 bit error correction code to correct 1 bit of error in a 512 byte sector. In addition, recently produced flash memory based on 3-bit multi-level cells (MLC) and 20 nanometer-class memory manufacturing processes have increased the error rate per sector significantly, and an error correction code of 24 bits or 40 bits per 1024 bytes is recommended.
RAID-5는 고신뢰를 요구하는 저장장치 시스템에서 주로 사용되는 기법이다. 도 1은 종래의 RAID-5 기법을 설명하기 위한 도면으로, 5개의 저장장치가 병렬로 연결되어 이 중에서 4개의 저장장치만 일반 데이터 저장을 위해 사용되고, 1개의 저장장치에는 다른 4개의 저장장치에 저장된 데이터의 오류 정정을 위한 패리티 비트가 저장된다.RAID-5 is a commonly used technique in storage systems that require high reliability. FIG. 1 is a diagram illustrating a conventional RAID-5 technique, in which five storage devices are connected in parallel, of which only four storage devices are used for general data storage, and one storage device has four storage devices. Parity bits for error correction of the stored data are stored.
이와 같이 RAID-5에 의하면 저장 가능한 영역 중 1/5이 오류 정정을 위해 사용되므로 고신뢰 저장매체의 구현이 가능하지만, 저장 효율의 측면에서는 비효율적인 구조가 될 수 있어 낸드 플래시 메모리 기반의 저장장치에 대하여는 RAID 구조를 개선하여 패리티 비트가 저장되는 영역에 에러 정정 코드를 저장하는 기법이 제안되었다. 그러나 데이터의 읽기/쓰기 동작시 에러 정정 코드를 처리하기 위한 특정 페이지를 읽고 쓰는 동작이 수반되어 지연이 발생하는 문제가 있다.Thus, according to RAID-5, since 1/5 of the storage areas are used for error correction, a highly reliable storage medium can be implemented, but in terms of storage efficiency, it can be an inefficient structure. In this regard, a scheme for storing an error correction code in an area where parity bits are stored by improving a RAID structure has been proposed. However, there is a problem in that a delay occurs due to an operation of reading and writing a specific page for processing an error correction code during data read / write operation.
또한 BCH 코드 알고리즘을 적용하는 데 필요한 에러 정정 코드의 저장 영역을 확보하기 위하여 외부 확장 블록을 고정하여 사용하는 기법이 제안되었다. 도 2는 외부 확장 블록을 사용하는 기법을 설명하기 위한 도면이다. 도 2를 참조하면, 4 비트 에러 정정과 같은 저성능 BCH 코드 알고리즘의 에러 정정 코드를 해당 페이지의 스페어 영역에 1차로 저장하고, 24 비트 에러 정정과 같은 고성능 BCH 코드 알고리즘의 에러 정정 코드를 외부 지정된 확장 블록에 2차로 저장하게 된다. 이러한 방법을 사용할 경우, 일반적으로는 1차로 저장된 에러 정정 코드를 사용하여 에러를 정정하지만, 1차 정정이 불가능한 에러가 발생한 경우에는 정확한 에러 정정을 위해 2차로 저장된 에러 정정 코드를 사용하여 에러 정정을 수행하게 된다.In addition, in order to secure a storage area of an error correction code required to apply the BCH code algorithm, a technique of fixing an external extension block is proposed. 2 is a diagram for describing a technique of using an external extension block. Referring to FIG. 2, an error correction code of a low performance BCH code algorithm such as 4 bit error correction is first stored in a spare area of a corresponding page, and an error correction code of a high performance BCH code algorithm such as 24 bit error correction is externally designated. Secondary storage in the extension block. When using this method, the error is usually corrected using the first stored error correction code, but when an error that cannot be corrected first occurs, the error correction code is stored using the second stored error correction code for accurate error correction. Will be performed.
그러나, 이와 같이 외부 확장 블록을 사용하는 기법을 사용할 경우 하나의 데이터에 대해 2개의 에러 정정 코드를 생성 및 저장하여야 하는 오버헤드가 발생하며, 저장장치의 수명이 다하여 해당 블록의 삭제 횟수가 증가한 경우에 에러 정정을 위해 매번 2개의 페이지를 읽어 복원해야 하는 단점이 존재한다.However, in case of using the technique using an external extension block, there is an overhead of generating and storing two error correction codes for one data, and when the number of deletions of the corresponding block is increased due to the end of the storage life. There is a disadvantage in that two pages must be read and restored each time for error correction.
한편, 한국공개특허 제1998-0038438호에는 오버헤드 영역을 따로 구분하지 않고 데이터의 인코딩시 섹터의 상태정보를 함께 인코딩하여 섹터 내의 어떤 부분에서 발생한 에러도 에러 정정 코드에 의한 정정을 가능하게 하는 방법이 개시되어 있다. 그러나 이러한 방법 역시 증가된 크기의 에러 정정 코드를 저장하기 위한 추가 영역의 확보 문제는 해결할 수 없다는 문제를 가진다.Meanwhile, Korean Laid-Open Patent Publication No. 1998-0038438 encodes the state information of a sector when encoding data together without distinguishing an overhead area so that errors occurring in any part of the sector can be corrected by an error correction code. Is disclosed. However, this method also has a problem that the problem of securing an additional area for storing an error correcting code of increased size cannot be solved.
본 발명이 이루고자 하는 기술적 과제는, 플래시 메모리의 데이터가 저장될 페이지에 큰 비트의 에러 정정 코드를 함께 저장하여 추가 지연 없이 인코딩 및 디코딩이 가능하도록 하는 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법을 제공하는 데 있다.SUMMARY OF THE INVENTION The present invention provides a flash memory controller for storing an error correction code for storing an error correction code of a large bit in a page in which data of a flash memory is to be stored together so that encoding and decoding can be performed without additional delay. To provide a way.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치는, 페이지 단위로 데이터가 저장되며, 상기 페이지가 사전에 설정된 개수의 섹터로 구성된 플래시 메모리를 제어하기 위한 것으로, 호스트와 제어신호 및 데이터를 송수신하는 호스트 인터페이스부; 및 상기 호스트로부터 쓰기 제어신호와 함께 수신된 쓰기 대상 데이터 및 상기 쓰기 대상 데이터에 대응하여 생성된 에러 정정 코드를 상기 플래시 메모리의 페이지에 저장하되, 상기 쓰기 대상 데이터가 저장되는 데이터 영역에 해당하는 복수의 섹터 중 사전에 설정된 개수의 섹터에 대응하는 영역을 상기 에러 정정 코드의 저장영역으로 추가 할당하는 메모리 인터페이스부;를 구비한다.In order to achieve the above technical problem, a flash memory control apparatus for storing an error correction code according to the present invention is configured to control a flash memory in which data is stored in units of pages, and the page is composed of a predetermined number of sectors. A host interface for transmitting and receiving a control signal and data with the host; And a plurality of data corresponding to a data area in which write target data received together with a write control signal from the host and an error correction code generated corresponding to the write target data are stored in a page of the flash memory, wherein the write target data is stored. And a memory interface unit for further allocating a region corresponding to a preset number of sectors of the sectors to the storage region of the error correction code.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 에러 정정 코드의 저장을 위한 플래시 메모리 제어방법은, 페이지 단위로 데이터가 저장되며, 상기 페이지가 사전에 설정된 개수의 섹터로 구성된 플래시 메모리를 제어하기 위한 것으로, (a) 호스트로부터 쓰기 제어신호와 함께 쓰기 대상 데이터를 수신하는 단계; (b) 상기 쓰기 대상 데이터에 대응하는 에러 정정 코드를 생성하는 단계; 및 (c) 상기 쓰기 대상 데이터 및 에러 정정 코드를 상기 플래시 메모리의 페이지에 저장하되, 상기 쓰기 대상 데이터가 저장되는 데이터 영역에 해당하는 복수의 섹터 중 사전에 설정된 개수의 섹터에 대응하는 영역을 상기 에러 정정 코드의 저장영역으로 추가 할당하는 단계;를 갖는다.In order to achieve the above technical problem, a method of controlling a flash memory for storing an error correction code according to the present invention is to control a flash memory in which data is stored in units of pages and the page is configured with a predetermined number of sectors. (A) receiving a write target data with a write control signal from the host; (b) generating an error correction code corresponding to the write target data; And (c) storing the write target data and the error correction code in a page of the flash memory, wherein a region corresponding to a predetermined number of sectors is selected from among a plurality of sectors corresponding to a data region in which the write target data is stored. And further allocating to a storage area of the error correction code.
본 발명에 따른 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법에 의하면, 데이터 저장을 위한 메모리 영역의 일부를 에러 정정 코드의 저장에 사용함으로써, RAID-5 구조를 이용하는 방법 또는 외부 확장 블록을 사용하는 방법과 같은 기존의 에러 정정 코드 저장 기법들에 비해 동일 페이지에 데이터 및 그에 대한 에러 정정 코드를 함께 저장할 수 있으므로 외부 페이지를 읽고 쓰기 위한 지연시간을 줄일 수 있다.According to the flash memory control apparatus and method for storing an error correction code according to the present invention, a method using an RAID-5 structure or an external expansion block is employed by using a portion of a memory area for data storage for storing an error correction code. Compared with conventional error correction code storage techniques such as the method used, data and error correction codes for the same page can be stored together, thereby reducing the delay time for reading and writing an external page.
도 1은 종래의 RAID-5 기법을 설명하기 위한 도면,1 is a view for explaining a conventional RAID-5 technique,
도 2는 외부 확장 블록을 사용하는 기법을 설명하기 위한 도면,2 is a diagram for explaining a technique of using an external expansion block;
도 3은 본 발명에 따른 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치에 대한 바람직한 실시예의 구성을 도시한 블록도,3 is a block diagram showing the configuration of a preferred embodiment of a flash memory controller for storing error correction codes in accordance with the present invention;
도 4는 하나의 페이지에 데이터와 에러 정정 코드가 저장되는 기존의 방식을 도시한 도면,4 is a diagram illustrating a conventional method in which data and an error correction code are stored in one page;
도 5는 본 발명에서 하나의 페이지에 데이터와 에러 정정 코드가 저장되는 방식을 도시한 도면,5 is a diagram illustrating a method of storing data and an error correction code in one page according to the present invention;
도 6은 플래시 메모리의 한 페이지에서 스페어 영역으로 사용되는 섹터의 개수에 따른 에러 정정 가능 비트 수를 비교하여 나타낸 그래프,6 is a graph illustrating a comparison of the number of error correctable bits according to the number of sectors used as spare areas in a page of a flash memory;
도 7은 멀티 칩을 사용하는 SSD에서 사용되는 클러스터링 페이지의 일 예를 도시한 도면,7 is a diagram illustrating an example of a clustering page used in an SSD using a multi-chip;
도 8은 에러 정정 가능 비트수에 따른 CBER(Correctable Block Error Rate)과 RBER(Raw Bit Error Rate)의 관계를 도시한 그래프,8 is a graph illustrating a relationship between a correctable block error rate (CBER) and a raw bit error rate (RBER) according to the number of error correctable bits;
도 9는 종래의 에러 정정 코드 저장 기법과 본 발명을 적용함에 따라 나타나는 동작 지연시간을 정규화하여 도시한 그래프, 그리고,9 is a graph showing normalized operation delay time according to the conventional error correction code storage scheme and the present invention, and
도 10은 본 발명에 따른 에러 정정 코드의 저장을 위한 플래시 메모리 제어방법에 대한 바람직한 실시예의 수행과정을 도시한 흐름도이다.10 is a flowchart illustrating an exemplary embodiment of a flash memory control method for storing an error correction code according to the present invention.
이하에서 첨부된 도면들을 참조하여 본 발명에 따른 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법의 바람직한 실시예에 대해 상세하게 설명한다.Hereinafter, with reference to the accompanying drawings will be described in detail a preferred embodiment of the flash memory control apparatus and method for storing the error correction code according to the present invention.
도 3은 본 발명에 따른 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치에 대한 바람직한 실시예의 구성을 도시한 블록도이다.3 is a block diagram showing the configuration of a preferred embodiment of a flash memory control apparatus for storing an error correction code according to the present invention.
도 3을 참조하면, 본 발명에 따른 플래시 메모리 제어장치(100)는 호스트(200)와 플래시 메모리(300) 사이에서 동작하며, 호스트 인터페이스부(110) 및 메모리 인터페이스부(120)를 구비한다. 또한 플래시 메모리 제어장치(100)는 호스트(200)와 플래시 메모리(300) 사이에서 전송되는 데이터가 저장되는 버퍼부(미도시)를 더 구비할 수 있다.Referring to FIG. 3, the flash memory controller 100 according to the present invention operates between the host 200 and the flash memory 300 and includes a host interface unit 110 and a memory interface unit 120. In addition, the flash memory controller 100 may further include a buffer unit (not shown) in which data transmitted between the host 200 and the flash memory 300 is stored.
플래시 메모리 제어장치(100)에서 호스트 인터페이스부(110)는 호스트(200)와 제어신호 및 데이터를 송수신하며, 메모리 인터페이스부(120)는 호스트(200)로부터 쓰기 제어신호와 함께 수신된 쓰기 대상 데이터 및 쓰기 대상 데이터에 대응하여 생성된 에러 정정 코드를 플래시 메모리(300)의 페이지에 저장한다.In the flash memory controller 100, the host interface unit 110 transmits and receives a control signal and data to and from the host 200, and the memory interface unit 120 receives the write target data received together with the write control signal from the host 200. And an error correction code generated corresponding to the write target data in a page of the flash memory 300.
플래시 메모리(300)는 데이터 삭제 연산의 기본 단위인 복수의 블록으로 구성되며, 블록은 읽기 및 쓰기 연산의 기본 단위인 복수의 페이지로 구성된다. 또한 페이지는 복수의 섹터로 구성되며, 각각의 섹터는 실제 데이터가 저장되는 데이터 영역(data area)과 데이터 영역을 관리하기 위한 에러 정정 코드와 같은 정보가 저장되는 스페어 영역(spare area)으로 구성된다.The flash memory 300 includes a plurality of blocks that are basic units of a data erase operation, and a block includes a plurality of pages that are basic units of a read and write operation. In addition, the page is composed of a plurality of sectors, each of which consists of a data area in which actual data is stored and a spare area in which information such as an error correction code for managing the data area is stored. .
도 4는 하나의 페이지에 데이터와 에러 정정 코드가 저장되는 기존의 방식을 도시한 도면이다. 도 4를 참조하면, (16K+512) 바이트 크기의 페이지가 32개의 섹터로 구성되어 있으며, 각각의 섹터는 (512+16) 바이트 크기이다. 각 섹터는 512 바이트 크기의 데이터 영역과 16 바이트 크기의 스페어 영역으로 구성되어 데이터와 에러 정정 코드가 각각 저장된다.4 is a diagram illustrating a conventional method in which data and an error correction code are stored in one page. Referring to FIG. 4, a (16K + 512) byte size page is composed of 32 sectors, and each sector is (512 + 16) byte size. Each sector consists of a data area of 512 bytes and a spare area of 16 bytes, and stores data and an error correction code, respectively.
앞에서 설명한 바와 같이 페이지의 크기가 선형적으로 증가하는 반면 에러 발생 확률은 기하급수적으로 증가하므로, 에러 정정 코드가 저장될 스페어 영역이 부족하게 된다. 따라서 본 발명에 따른 플래시 메모리 제어장치(100)의 메모리 인터페이스부(120)는 페이지를 구성하는 섹터의 개수를 조절하여 에러 정정 코드가 저장되는 ECC 저장영역을 추가로 할당함으로써 결과적으로 스페어 영역의 크기가 증가하는 것과 동일한 효과를 얻게 된다.As described above, since the size of the page increases linearly and the probability of error occurrence increases exponentially, the spare area for storing the error correction code is insufficient. Therefore, the memory interface unit 120 of the flash memory controller 100 according to the present invention adjusts the number of sectors constituting the page to further allocate an ECC storage area in which an error correction code is stored, thereby consequently the size of the spare area. You get the same effect as increasing.
도 5는 본 발명에서 하나의 페이지에 데이터와 에러 정정 코드가 저장되는 방식을 도시한 도면이다. 도 5의 페이지 크기는 (16K+512) 바이트로, 도 4와 플래시 메모리(300)의 페이지 크기는 동일하나 섹터의 개수가 31개로 1개가 줄어든 것을 확인할 수 있다. 도 5에 도시된 플래시 메모리(300)의 페이지에서 각 섹터는 512 바이트 크기의 데이터 영역과 (32+α) 바이트 크기의 ECC 저장영역으로 구성되며, α=(줄어든 섹터의 크기/줄어든 섹터의 개수)이다.FIG. 5 is a diagram illustrating a method of storing data and an error correction code in one page according to the present invention. The page size of FIG. 5 is (16K + 512) bytes, and the page size of FIG. 4 and the flash memory 300 are the same, but the number of sectors is 31, which is reduced by one. In the page of the flash memory 300 shown in FIG. 5, each sector is composed of a data area of 512 bytes and an ECC storage area of (32 + α) bytes, and α = (reduced sector size / number of reduced sectors). )to be.
ECC 저장영역으로 사용될 섹터의 개수는 설정에 의해 조절 가능하며, 바람직하게는 1개의 섹터에 해당하는 영역을 ECC 저장영역으로 사용할 수 있다. 또한 섹터의 일부가 ECC 저장영역으로 사용됨에 따라 줄어든 데이터 영역의 크기를 벗어나는 데이터에 대하여는 다른 페이지를 추가로 할당하여 호스트의 읽기/쓰기 요청을 처리할 수 있다.The number of sectors to be used as the ECC storage area can be adjusted by setting, and preferably, an area corresponding to one sector can be used as the ECC storage area. In addition, as a part of the sector is used as an ECC storage area, another page may be additionally allocated to the data beyond the size of the reduced data area to handle the read / write request of the host.
이와 같이 메모리 인터페이스부(120)가 플래시 메모리(300)의 섹터의 일부를 ECC 저장영역으로 사용함으로써, 쓰기 대상 데이터에 대한 에러 정정 코드가 쓰기 대상 데이터와 동일한 페이지에 함께 저장되며, 나아가 각 섹터별 데이터에 연속하여 에러 정정 코드가 저장되므로, 호스트의 섹터 단위 연산에 맞추어 지연 없는 에러 정정이 가능하다.As such, the memory interface unit 120 uses a portion of the sector of the flash memory 300 as the ECC storage area, so that an error correction code for the write target data is stored together in the same page as the write target data, and further, for each sector. Since the error correction code is stored in succession to the data, error correction can be performed without delay in accordance with the sector-by-sector operation of the host.
이후 호스트(200)로부터 플래시 메모리(300)에 저장된 데이터의 읽기 제어신호가 수신되면, 메모리 인터페이스부(120)는 읽기 제어신호에 대응하는 읽기 대상 데이터와 읽기 대상 데이터에 대응하는 에러 정정 코드를 플래시 메모리(300)의 동일 페이지로부터 독출하고, 읽기 대상 데이터에 대한 에러 정정을 수행한 후 호스트 인터페이스부(110)를 통해 호스트(200)로 출력하게 된다.Thereafter, when a read control signal of data stored in the flash memory 300 is received from the host 200, the memory interface 120 flashes the read target data corresponding to the read control signal and the error correction code corresponding to the read target data. After reading from the same page of the memory 300 and performing error correction on the data to be read, the memory 300 is output to the host 200 through the host interface 110.
도 6은 플래시 메모리(300)의 한 페이지에서 ECC 저장영역으로 사용되는 섹터의 개수에 따른 에러 정정 가능 비트 수를 비교하여 나타낸 그래프이다. 도 6을 참조하면, 데이터 저장을 위한 섹터의 개수를 조절하여 에러 정정 코드의 저장 영역을 확보함으로써, BCH 코드 알고리즘과 같은 에러 정정 방식에서 고성능 에러 정정을 위해 증가된 비트의 에러 정정 코드를 저장할 수 있음을 확인할 수 있다.6 is a graph illustrating a comparison of the number of error correctable bits according to the number of sectors used as an ECC storage area in one page of the flash memory 300. Referring to FIG. 6, by adjusting the number of sectors for data storage to secure an error correction code storage area, an error correction code of an increased bit may be stored for high performance error correction in an error correction scheme such as a BCH code algorithm. It can be confirmed.
다만, 본 발명에 따른 플래시 메모리 제어장치(100)가 데이터 영역의 크기를 줄이고 ECC 저장영역의 크기를 증가시킴에 따라 호스트의 읽기/쓰기 요청이 플래시 메모리(300)의 페이지 크기와 같은 단위로 할당되는 경우에는 성능 저하가 발생할 것이 예상될 수 있다. 그러나 최근 널리 사용되는 SSD 제품에 구비된 플래시 메모리(300)는 페이지의 크기가 16 KB 이상으로 확장되어 사용되며, 나아가 8개 혹은 16개의 페이지가 클러스터링되어 하나의 클러스터링 페이지로 사용되고 있다. 실제로 수십 개의 낸드 플래시 메모리가 장착된 SSD를 용이하게 관리하거나 FTL의 맵 테이블 크기를 줄이기 위해 페이지 클러스터링 기법이 필수적으로 요구되므로 성능 저하는 크게 발생하지 않는다.However, as the flash memory controller 100 according to the present invention reduces the size of the data area and increases the size of the ECC storage area, the read / write request of the host is allocated in the same unit as the page size of the flash memory 300. If so, performance degradation can be expected. However, the flash memory 300 included in the recently-used SSD products is used to extend the page size to 16 KB or more, and furthermore, eight or 16 pages are clustered and used as one clustering page. In practice, performance degradation does not occur much because page clustering is required to easily manage SSDs equipped with dozens of NAND flash memory or to reduce the size of the FTL map table.
도 7은 멀티 칩을 사용하는 SSD에서 사용되는 클러스터링 페이지의 일 예를 도시한 도면으로, 4 개의 플래시 메모리 칩에서 동일 위치의 페이지들이 클러스터링되어 하나의 페이지로서 사용된다. 따라서 실질적으로 페이지의 크기가 커지는 효과가 발생하게 된다.FIG. 7 is a diagram illustrating an example of a clustering page used in an SSD using multiple chips. In the four flash memory chips, pages of the same location are clustered and used as one page. Therefore, the effect of actually increasing the size of the page will occur.
도 8은 에러 정정 가능 비트수에 따른 CBER(Correctable Block Error Rate)과 RBER(Raw Bit Error Rate)의 관계를 도시한 그래프이다. 도 8의 그래프는 현재 생산되고 있는 플래시 메모리 제품의 RBER이 24-비트 또는 40-비트 에러 정정 기법에 따라 가지게 되는 CBER을 나타낸 것이다. 여기서 CBER은 다음의 수학식 1에 의해 산출되는 값이다.8 is a graph illustrating a relationship between a correctable block error rate (CBER) and a raw bit error rate (RBER) according to the number of error correctable bits. The graph of FIG. 8 shows the CBER that the RBER of currently produced flash memory products has according to the 24-bit or 40-bit error correction technique. Here, CBER is a value calculated by Equation 1 below.
수학식 1
Figure PCTKR2012004566-appb-M000001
Equation 1
Figure PCTKR2012004566-appb-M000001
여기서, N은 블록 내의 비트 수, E는 블록 내의 에러 수, 그리고 p는 비트 에러율(bit error rate)을 나타낸다.Where N is the number of bits in the block, E is the number of errors in the block, and p is the bit error rate.
또한 도 9는 종래의 에러 정정 코드 저장 기법과 본 발명을 적용함에 따라 나타나는 동작 지연시간을 정규화하여 도시한 그래프이다. 도 9를 참조하면, 페이지의 크기가 작은 경우에는 에러 정정 코드의 저장에 사용되는 섹터의 개수가 증가할수록 지연시간이 급격하게 증가하나, 페이지의 크기가 커지면 일부 섹터를 에러 정정 코드의 저장에 사용하더라도 지연시간에 차이가 나타나지 않음을 확인할 수 있다.9 is a graph showing normalized operation delay time according to the conventional error correction code storage scheme and the present invention. Referring to FIG. 9, when the page size is small, the delay time increases rapidly as the number of sectors used for storing the error correction code increases. However, when the page size increases, some sectors are used for storing the error correction code. Even if the delay time does not show a difference.
한편, 하드 디스크 드라이브와 마찬가지로 낸드 플래시 메모리 기반의 저장장치에는 성능 향상을 위해 휘발성 메모리 버퍼가 사용될 수 있다. 이러한 시스템에서 메모리 제어기는 호스트의 I/O 액세스 명령에 대응하여 쓰기 대상의 데이터를 버퍼에 일시적으로 저장하거나 호스트로 출력할 읽기 대상의 데이터를 버퍼로부터 출력한다. 이와 같이 버퍼 메모리를 사용함으로써 I/O 액세스를 처리하는 동안 발생하는 지연시간을 줄일 수 있으며, 동일 블록 또는 페이지에 대한 명령을 합칠 수 있다.Meanwhile, like a hard disk drive, a NAND flash memory based storage device may use a volatile memory buffer to improve performance. In such a system, the memory controller temporarily stores data of a write object in a buffer or outputs data of a read object to be output to the host in response to an I / O access command of the host. Using buffer memory in this way reduces the latency that occurs while processing I / O access, and allows you to combine instructions for the same block or page.
버퍼 관리 알고리즘 중 하나인 CFLRU(Clean-first LRU)는 낸드 플래시 메모리를 구비한 저장 시스템을 위한 LRU 기반의 버퍼 관리 알고리즘으로서, 낸드 플래시 메모리의 소거 후 쓰기 특성으로 인해 버퍼에 빈 슬롯이 없을 때 클린 페이지 또는 블록을 사용한다.One of the buffer management algorithms, the Clean-first LRU (CFLRU), is an LRU-based buffer management algorithm for storage systems with NAND flash memory.It is clean when the NAND flash memory has no empty slots due to the erase and write characteristics. Use pages or blocks
본 발명에 따른 플래시 메모리 관리장치(100)에는 이와 같은 CRLRU 버퍼 관리 기법이 적용될 수 있으며, 이하에서는 본 발명에 적용되는 CFLRU 기법을 O-CFLRU 기법이라 한다. 구체적으로, O-CFLRU 기법에서는 동일 페이지에 대한 섹터 단위의 명령을 그 시기 및 유형에 무관하게 함께 그룹화함으로써 버퍼의 할당 또는 플러쉬(flush)를 페이지 단위로 수행하게 된다. 또한 O-CFLRU에서는 수신되는 명령을 그 명령의 크기, 즉 섹터의 크기에 따라 분류하고, 섹터의 크기가 사전에 설정된 기준값(예를 들면, 32)보다 크면 해당 명령은 낸드 플래시 메모리에 직접 전달되며, 기준값보다 작은 크기의 명령은 버퍼에 저장되어 합쳐지거나 'in-place' 업데이트 되는 과정을 거치게 된다.Such a CRLRU buffer management technique may be applied to the flash memory management apparatus 100 according to the present invention. Hereinafter, the CFLRU technique applied to the present invention is referred to as an O-CFLRU technique. Specifically, in the O-CFLRU scheme, sector-by-sector instructions for the same page are grouped together regardless of the timing and type, thereby performing buffer allocation or flushing in units of pages. In addition, the O-CFLRU classifies the received command according to the size of the command, that is, the size of the sector. If the size of the sector is larger than the preset reference value (for example, 32), the command is directly transmitted to the NAND flash memory. In other words, commands smaller than the reference value are stored in a buffer and merged or 'in-place' updated.
이상에서 설명한 버퍼 관리 알고리즘인 O-CFLRU 기법을 본 발명에 적용할 경우, 도 9에 도시된 바와 같이 버퍼를 임시 데이터 저장 용도로 사용할 경우에 버퍼의 크기가 커질수록 지연시간이 감소하여 성능 하락의 폭이 작아지게 된다.When the O-CFLRU technique, which is the above-described buffer management algorithm, is applied to the present invention, when the buffer is used for temporary data storage as shown in FIG. 9, as the size of the buffer increases, the delay time decreases, thereby reducing performance. The width becomes smaller.
도 10은 본 발명에 따른 에러 정정 코드의 저장을 위한 플래시 메모리 제어방법에 대한 바람직한 실시예의 수행과정을 도시한 흐름도이다.10 is a flowchart illustrating an exemplary embodiment of a flash memory control method for storing an error correction code according to the present invention.
도 10을 참조하면, 본 발명에 따른 플래시 메모리 제어장치(100)의 호스트 인터페이스부(110)가 호스트(200)로부터 데이터 쓰기 제어신호를 수신하면(S1010), 쓰기 제어신호의 대상인 쓰기 대상 데이터에 대응하는 에러 정정 코드가 생성된다(S1020). 에러 정정 코드는 메모리 인터페이스부(120) 또는 플래시 메모리 제어장치(100) 내에 별도로 구비된 에러 정정 유닛(미도시)에 의해 생성될 수 있다.Referring to FIG. 10, when the host interface unit 110 of the flash memory controller 100 according to the present invention receives a data write control signal from the host 200 (S1010), it writes to the write target data that is the target of the write control signal. A corresponding error correction code is generated (S1020). The error correction code may be generated by an error correction unit (not shown) separately provided in the memory interface 120 or the flash memory controller 100.
메모리 인터페이스부(120)는 쓰기 대상 데이터 및 그에 대응하는 에러 정정 코드를 플래시 메모리(300)에 저장하되, 앞에서 설명한 바와 같이 쓰기 대상 데이터가 저장될 페이지의 일부 섹터, 예를 들면 1~2개의 섹터에 대응하는 영역을 에러 정정 코드의 저장을 위한 ECC 저장영역으로 할당한다(S1030).The memory interface unit 120 stores the write target data and the error correction code corresponding thereto in the flash memory 300, and as described above, some sectors of the page where the write target data is to be stored, for example, 1 to 2 sectors. An area corresponding to the Mn is allocated as an ECC storage area for storing an error correction code (S1030).
이후 호스트(200)로부터 저장된 데이터에 대한 읽기 제어신호가 수신되면(S1040), 메모리 인터페이스부(120)는 읽기 제어신호에 대응하는 읽기 대상 데이터 및 읽기 대상 데이터와 동일한 페이지에 함께 저장된 에러 정정 코드를 플래시 메모리(300)로부터 독출하고(S1050), 에러 정정 코드를 이용하여 읽기 대상 데이터의 에러를 정정한 후 호스트(200)로 출력한다(S1060). 에러 정정 과정 역시 플래시 메모리 제어장치(100)에 별도로 구비된 에러 정정 유닛(미도시)에 의해 수행될 수 있다.Thereafter, when a read control signal for the stored data is received from the host 200 (S1040), the memory interface unit 120 may read an error correction code stored together on the same page as the read target data and the read target data corresponding to the read control signal. The flash memory 300 reads the data from the flash memory 300 (S1050), corrects an error of the data to be read using the error correction code, and outputs the error to the host 200 (S1060). The error correction process may also be performed by an error correction unit (not shown) provided in the flash memory controller 100 separately.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.The invention can also be embodied as computer readable code on a computer readable recording medium. The computer-readable recording medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage, and the like, and may also be implemented in the form of a carrier wave (for example, transmission over the Internet). Include. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.Although the preferred embodiments of the present invention have been shown and described above, the present invention is not limited to the specific preferred embodiments described above, and the present invention belongs to the present invention without departing from the gist of the present invention as claimed in the claims. Various modifications can be made by those skilled in the art, and such changes are within the scope of the claims.

Claims (8)

  1. 페이지 단위로 데이터가 저장되며, 상기 페이지가 사전에 설정된 개수의 섹터로 구성된 플래시 메모리를 제어하기 위한 플래시 메모리 제어장치에 있어서,In the flash memory controller for controlling the flash memory in which data is stored in units of pages and the page is composed of a predetermined number of sectors,
    호스트와 제어신호 및 데이터를 송수신하는 호스트 인터페이스부; 및A host interface for transmitting and receiving control signals and data with the host; And
    상기 호스트로부터 쓰기 제어신호와 함께 수신된 쓰기 대상 데이터 및 상기 쓰기 대상 데이터에 대응하여 생성된 에러 정정 코드를 상기 플래시 메모리의 페이지에 저장하되, 상기 쓰기 대상 데이터가 저장되는 데이터 영역에 해당하는 복수의 섹터 중 사전에 설정된 개수의 섹터에 대응하는 영역을 상기 에러 정정 코드의 저장영역으로 추가 할당하는 메모리 인터페이스부;를 포함하는 것을 특징으로 하는 플래시 메모리 제어장치.A plurality of write target data received with a write control signal from the host and an error correction code generated corresponding to the write target data in a page of the flash memory, and corresponding to a data area in which the write target data is stored; And a memory interface unit for allocating an area corresponding to a predetermined number of sectors among the sectors as a storage area of the error correction code.
  2. 제 1항에 있어서,The method of claim 1,
    상기 메모리 인터페이스부는 상기 호스트로부터 수신된 읽기 제어신호에 대응하는 읽기 대상 데이터 및 상기 읽기 대상 데이터와 동일한 페이지에 저장된 에러 정정 코드를 상기 플래시 메모리로부터 독출하는 것을 특징으로 하는 플래시 메모리 제어장치.And the memory interface unit reads from the flash memory the read target data corresponding to the read control signal received from the host and the error correction code stored in the same page as the read target data.
  3. 제 1항 또는 제 2항에 있어서,The method according to claim 1 or 2,
    상기 메모리 인터페이스부는 상기 페이지에에 저장된 데이터에 대응하는 에러 정정 코드를 상기 데이터가 저장된 섹터에 연속하여 저장하는 것을 특징으로 하는 플래시 메모리 제어장치.And the memory interface unit continuously stores an error correction code corresponding to data stored in the page in a sector in which the data is stored.
  4. 제 1항 또는 제 2항에 있어서,The method according to claim 1 or 2,
    상기 페이지는 상기 플래시 메모리가 복수 개 구비된 저장장치에서 서로 다른 플래시 메모리 내의 페이지가 클러스터링되어 단일 동작으로 처리되는 클러스터링 페이지인 것을 특징으로 하는 플래시 메모리 제어장치.And the page is a clustering page in which a page in different flash memories is clustered and processed in a single operation in a storage device having a plurality of flash memories.
  5. 페이지 단위로 데이터가 저장되며, 상기 페이지가 사전에 설정된 개수의 섹터로 구성된 플래시 메모리를 제어하기 위한 플래시 메모리 제어방법에 있어서,In the flash memory control method for controlling the flash memory in which data is stored in units of pages and the page is composed of a predetermined number of sectors,
    (a) 호스트로부터 쓰기 제어신호와 함께 쓰기 대상 데이터를 수신하는 단계;(a) receiving write target data together with a write control signal from a host;
    (b) 상기 쓰기 대상 데이터에 대응하는 에러 정정 코드를 생성하는 단계; 및(b) generating an error correction code corresponding to the write target data; And
    (c) 상기 쓰기 대상 데이터 및 에러 정정 코드를 상기 플래시 메모리의 페이지에 저장하되, 상기 쓰기 대상 데이터가 저장되는 데이터 영역에 해당하는 복수의 섹터 중 사전에 설정된 개수의 섹터에 대응하는 영역을 상기 에러 정정 코드의 저장영역으로 추가 할당하는 단계;를 포함하는 것을 특징으로 하는 플래시 메모리 제어방법.(c) storing the write object data and the error correction code in a page of the flash memory, wherein the error area corresponds to a predetermined number of sectors among a plurality of sectors corresponding to a data area in which the write object data is stored; And further allocating to a storage area of the correction code.
  6. 제 5항에 있어서,The method of claim 5,
    (d) 상기 호스트로부터 수신된 읽기 제어신호에 대응하는 읽기 대상 데이터 및 상기 읽기 대상 데이터와 동일한 페이지에 저장된 에러 정정 코드를 상기 플래시 메모리로부터 독출하는 단계; 및(d) reading from the flash memory the read object data corresponding to the read control signal received from the host and an error correction code stored in the same page as the read object data; And
    (e) 상기 플래시 메모리로부터 독출한 상기 에러 정정 코드에 의해 상기 읽기 대상 데이터의 에러를 정정하여 상기 호스트로 출력하는 단계;를 더 포함하는 것을 특징으로 하는 플래시 메모리 제어방법.and (e) correcting an error of the data to be read by the error correcting code read from the flash memory and outputting the corrected error to the host.
  7. 제 5항 또는 제 6항에 있어서,The method according to claim 5 or 6,
    상기 (c) 단계에서, 상기 페이지의 각각의 섹터에 저장된 데이터에 대응하는 에러 정정 코드를 상기 데이터가 저장된 섹터에 연속하여 저장하는 것을 특징으로 하는 플래시 메모리 제어방법.And in the step (c), continuously storing an error correction code corresponding to data stored in each sector of the page in a sector in which the data is stored.
  8. 제 5항 또는 제 6항에 있어서,The method according to claim 5 or 6,
    상기 페이지는 상기 플래시 메모리가 복수 개 구비된 저장장치에서 서로 다른 플래시 메모리 내의 페이지가 클러스터링되어 단일 동작으로 처리되는 클러스터링 페이지인 것을 특징으로 하는 플래시 메모리 제어방법.And the page is a clustering page in which pages in different flash memories are clustered and processed in a single operation in a storage device having a plurality of flash memories.
PCT/KR2012/004566 2011-10-24 2012-06-08 Device and method for controlling a flash memory for storing an error correction code WO2013062204A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020110108677A KR101417827B1 (en) 2011-10-24 2011-10-24 Apparatus and method for controlling flash memory for storing error correction code
KR10-2011-0108677 2011-10-24

Publications (1)

Publication Number Publication Date
WO2013062204A1 true WO2013062204A1 (en) 2013-05-02

Family

ID=48168008

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2012/004566 WO2013062204A1 (en) 2011-10-24 2012-06-08 Device and method for controlling a flash memory for storing an error correction code

Country Status (2)

Country Link
KR (1) KR101417827B1 (en)
WO (1) WO2013062204A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778337A (en) * 2021-09-10 2021-12-10 深圳大普微电子科技有限公司 Solid state disk based on flash memory and data management method thereof
CN113778337B (en) * 2021-09-10 2024-06-07 深圳大普微电子科技有限公司 Solid state disk based on flash memory and data management method thereof

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102549605B1 (en) 2016-03-04 2023-06-30 삼성전자주식회사 Recovering method of raid storage device
KR20230019573A (en) 2021-08-02 2023-02-09 에스케이하이닉스 주식회사 Controller and operation method thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005115562A (en) * 2003-10-06 2005-04-28 Media Logic:Kk Flash rom controller
JP2009157960A (en) * 2007-12-25 2009-07-16 Hitachi Global Storage Technologies Netherlands Bv Magnetic recording and playback device mounted with patterned medium
KR20090117747A (en) * 2007-01-26 2009-11-12 마이크론 테크놀로지, 인크. Programming management data for nand memories
KR20110093259A (en) * 2010-02-12 2011-08-18 삼성전자주식회사 Nonvolatile memory system and operation method using the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005115562A (en) * 2003-10-06 2005-04-28 Media Logic:Kk Flash rom controller
KR20090117747A (en) * 2007-01-26 2009-11-12 마이크론 테크놀로지, 인크. Programming management data for nand memories
JP2009157960A (en) * 2007-12-25 2009-07-16 Hitachi Global Storage Technologies Netherlands Bv Magnetic recording and playback device mounted with patterned medium
KR20110093259A (en) * 2010-02-12 2011-08-18 삼성전자주식회사 Nonvolatile memory system and operation method using the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778337A (en) * 2021-09-10 2021-12-10 深圳大普微电子科技有限公司 Solid state disk based on flash memory and data management method thereof
CN113778337B (en) * 2021-09-10 2024-06-07 深圳大普微电子科技有限公司 Solid state disk based on flash memory and data management method thereof

Also Published As

Publication number Publication date
KR20130044555A (en) 2013-05-03
KR101417827B1 (en) 2014-07-11

Similar Documents

Publication Publication Date Title
US10445016B2 (en) Techniques for storage command processing
US9996419B1 (en) Storage system with distributed ECC capability
KR101459861B1 (en) Stripe-based memory operation
JP6855102B2 (en) Recovery from multi-page failure in non-volatile memory systems
US8145828B2 (en) Flash memory-mounted storage apparatus
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
WO2015097956A1 (en) Extending useful life of a non-volatile memory by health grading
US20160188211A1 (en) Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes
US9898215B2 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US9524116B1 (en) Reducing read-after-write errors in a non-volatile memory system using an old data copy
US9632702B2 (en) Efficient initialization of a thinly provisioned storage array
US10254981B2 (en) Adaptive health grading for a non-volatile memory
US10062418B2 (en) Data programming method and memory storage device
US20170242789A1 (en) Garbage collection techniques for a data storage system
US20210157735A1 (en) Data placement in write cache architecture supporting read heat data separation
US20120233382A1 (en) Data storage apparatus and method for table management
US11049581B2 (en) Media error reporting improvements for storage drives
US9417809B1 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US8533549B2 (en) Memory system and computer system
US10282116B2 (en) Method and system for hardware accelerated cache flush
WO2013062204A1 (en) Device and method for controlling a flash memory for storing an error correction code
CN110600070B (en) Coding and repairing method for improving repairing performance of solid state disk array system
US10713160B1 (en) Data writing method, memory control circuit unit and memory storage device
US20200042386A1 (en) Error Correction With Scatter-Gather List Data Management
US9442866B1 (en) Self-adaptive solid state drive controller

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12843929

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12843929

Country of ref document: EP

Kind code of ref document: A1