KR102076624B1 - Storage system based flash memory and error correcting method thereof - Google Patents

Storage system based flash memory and error correcting method thereof Download PDF

Info

Publication number
KR102076624B1
KR102076624B1 KR1020180156206A KR20180156206A KR102076624B1 KR 102076624 B1 KR102076624 B1 KR 102076624B1 KR 1020180156206 A KR1020180156206 A KR 1020180156206A KR 20180156206 A KR20180156206 A KR 20180156206A KR 102076624 B1 KR102076624 B1 KR 102076624B1
Authority
KR
South Korea
Prior art keywords
ecc
data
flash memory
ecc data
data stored
Prior art date
Application number
KR1020180156206A
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 KR1020180156206A priority Critical patent/KR102076624B1/en
Application granted granted Critical
Publication of KR102076624B1 publication Critical patent/KR102076624B1/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
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error

Abstract

The present invention relates to a flash memory-based storage system and an error correction method thereof. According to the present invention, a flash memory-based storage system comprises a flash memory and a controller. An error correction code (ECC) module of the controller comprises an ECC codeword generation unit, an ECC data recovery verification unit, and an ECC data encoding unit. Accordingly, the size of an ECC codeword is increased as the size of a program/erase (PE) cycle of the flash memory is increased, thereby providing an effect of increasing error cover capability with respect to data. Moreover, even if ECC data is stored beyond an area due to an increase in the size of the ECC codeword, whether to recover ECC data of a part of the area is verified in advance when the ECC data is encoded, and encoding of the remaining area is omitted when the part of the area is verified, thereby providing an effect of reducing overhead generated during page reading caused by the increase in the size of the ECC codeword.

Description

플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법{STORAGE SYSTEM BASED FLASH MEMORY AND ERROR CORRECTING METHOD THEREOF}Flash memory based storage system and its error correction method {STORAGE SYSTEM BASED FLASH MEMORY AND ERROR CORRECTING METHOD THEREOF}

본 발명은 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법에 관한 것으로, 좀더 자세하게는, ECC 모듈의 기능이 향상된 낸드 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법에 관한 것이다.The present invention relates to a flash memory-based storage system and an error correction method thereof, and more particularly, to a NAND flash memory-based storage system and an error correction method of which an ECC module has an improved function.

낸드 플래시 메모리 기반의 저장 시스템에서, 컨트롤러에 ECC(Error Correcting Code) 모듈을 포함하고, 낸드 셀(NAND cell) 블록에 위치하는 페이지(Page)는 데이터 영역 및 스페어 영역을 포함한다.In a NAND flash memory-based storage system, an error correcting code (ECC) module is included in a controller, and a page located in a NAND cell block includes a data area and a spare area.

ECC 데이터(예로써, ECC codeword)가 증가할수록 데이터 에러 커버 능력이 증가하지만, 페이지 안에 ECC 데이터가 다 저장되지 않게 되므로 다른 영역에까지 저장하여야 하고, 이에 따라, 데이터 읽기 시 최대 페이지 읽기를 두 번 하게 되어 오버헤드가 증가하는 문제점이 있다.As the ECC data (e.g. ECC codeword) increases, the data error covering ability increases, but since ECC data is not stored in the page, it must be stored in another area. Therefore, the maximum page read twice when reading data. There is a problem that the overhead is increased.

이에 따라, 데이터의 에러 커버 능력 향상을 위해 ECC 데이터를 증가함과 동시에 페이지 읽기 오버헤드는 기존 대비 줄일 수 있는 ECC 모듈을 포함하는 낸드 플래시 메모리 기반의 저장 시스템의 개발이 필요한 실정이다.Accordingly, there is a need to develop a NAND flash memory-based storage system including an ECC module that increases ECC data and reduces page read overhead in order to improve data error covering capability.

대한민국 등록특허공보 제10-1606718호(플래시 메모리 기반 데이터 저장을 위한 적응적 ECC 기술들)Republic of Korea Patent Publication No. 10-1606718 (Adaptive ECC techniques for flash memory based data storage)

본 발명이 이루고자 하는 기술적 과제는 ECC 모듈을 포함하는 낸드 플래시 메모리 기반의 저장 시스템에서 P/E 사이클((Program/Erase Cycle)이 증가시 ECC codeword를 증가시켜 데이터의 에러 커버 능력을 향상하기 위한 것이다. An object of the present invention is to improve the error cover ability of data by increasing the ECC codeword when the P / E cycle (Program / Erase Cycle) increases in a NAND flash memory based storage system including an ECC module. .

또한, 본 발명이 이루고자 하는 기술적 과제는, 크기가 큰 ECC 데이터가 여러 영역에 저장되었을 때, ECC 데이터 인코딩 시 여러 영역 중 일부 영역에 저장된 ECC의 복원여부를 먼저 검증하고, 일부 영역의 ECC의 복원여부가 검증된 경우에는, 나머지 영역에 저장된 ECC 데이터의 인코딩을 생략하여 ECC 데이터의 인코딩에 소요되는 시간을 절감함으로써 저장 시스템의 성능을 향상하기 위한 것이다.In addition, the technical problem to be achieved by the present invention, when ECC data having a large size is stored in several areas, when ECC data encoding, first verify whether the ECC stored in some of the several areas to restore, and restore the ECC of some areas If it is verified, it is to improve the performance of the storage system by reducing the time required for encoding the ECC data by omitting the encoding of the ECC data stored in the remaining areas.

본 발명의 일 실시예에 따른 플래시 메모리 기반의 저장 시스템은, 데이터를 저장하는 데이터 영역과, 상기 데이터에 대한 ECC 데이터를 저장하는 스페어 영역을 구비하는 페이지를 포함하는 플래시 메모리, 그리고 상기 페이지에 저장된 상기 데이터의 에러 보정을 위한 ECC 모듈을 포함하여 상기 플래시 메모리를 제어하는 컨트롤러를 포함하고, 상기 ECC 모듈은, 상기 데이터 영역에 대한 ECC 데이터를 생성하여 상기 스페어 영역에 저장하되 상기 플래시 메모리의 PE 사이클을 기준값과 비교하여 상기 PE 사이클이 상기 기준값을 초과하는 경우 상기 ECC 데이터의 크기를 적어도 두 개의 페이지에 저장되도록 생성하는 ECC codeword 생성부, 적어도 두 개의 페이지에 저장된 상기 ECC codeword 중 하나의 페이지에 저장된 ECC 데이터가 상기 데이터 영역에 저장된 데이터를 복원가능한지를 판단하는 ECC 데이터 복원여부 검증부, 그리고 상기 ECC 데이터 복원여부 검증부가 하나의 페이지에 저장된 ECC 데이터가 상기 데이터 영역에 저장된 데이터를 복원가능한 것으로 판단함에 따라 하나의 페이지에 저장된 ECC 데이터를 인코딩하는 ECC 데이터 인코딩부를 포함하는 것을 특징으로 한다.A flash memory-based storage system according to an embodiment of the present invention, a flash memory including a page having a data area for storing data, a spare area for storing ECC data for the data, and stored in the page And a controller for controlling the flash memory, including an ECC module for error correction of the data, wherein the ECC module generates ECC data for the data area and stores the ECC data in the spare area. An ECC codeword generation unit for generating a size of the ECC data to be stored in at least two pages when the PE cycle exceeds the reference value, and stored in one page of the ECC codewords stored in at least two pages. Data in which ECC data is stored in the data area ECC data restoration verifier for determining whether the data can be restored, and the ECC data restoration verifier verifies that ECC data stored in one page is capable of restoring data stored in the data area. It characterized in that it comprises an ECC data encoding unit for encoding the.

상기 기준값은 상기 플래시 메모리의 PE 사이클의 80% 크기인 것을 특징으로 한다.The reference value is characterized in that the size of 80% of the PE cycle of the flash memory.

상기 ECC 데이터 복원여부 검증부가 두 개의 페이지에 저장된 ECC codeword 중 하나의 페이지에 저장된 ECC 데이터로는 상기 데이터 영역에 저장된 데이터를 복원할 수 없고, 다른 하나의 페이지에 저장된 ECC 데이터를 이용하는 경우 상기 데이터 영역에 저장된 데이터를 복원가능한 것으로 판단하는 경우, 상기 ECC 데이터 인코딩부는 상기 두 개의 페이지에 저장된 ECC 데이터를 모두 인코딩하는 것을 특징으로 한다.If the ECC data restoration verifier verifies that the ECC data stored in one page of ECC codewords stored in two pages cannot restore the data stored in the data area, and uses the ECC data stored in another page, the data area. If it is determined that the data stored in the reconstructed, the ECC data encoding unit is characterized in that for encoding both the ECC data stored in the two pages.

상기 ECC codeword 생성부는 LDPC 코드를 이용하여 ECC 데이터를 생성하는 것을 특징으로 한다.The ECC codeword generator generates ECC data using an LDPC code.

상기 ECC codeword 생성부는 하기의 식 1을 확장하여 하기의 식 2를 생성하고, 하기의 식 2를 이용하여 ECC codeword를 생성하는 것을 특징으로 한다.The ECC codeword generator extends Equation 1 below to generate Equation 2 below, and generates an ECC codeword using Equation 2 below.

[식 1][Equation 1]

Figure 112018122457958-pat00001
Figure 112018122457958-pat00001

[식 2][Equation 2]

Figure 112018122457958-pat00002
Figure 112018122457958-pat00002

Figure 112018122457958-pat00003
Figure 112018122457958-pat00003

(여기서, s는 k비트의 메시지, 즉, 데이터이고, c는 M비트의 패리티(체크)이고, x는 N비트의 codeword로 c+s이고, H는 codeword가 Hx=0을 만족하는 M by N 행렬의 생성 매트릭스이고, A는 M by M 행렬, B는 M by k 행렬이고, H’는 확장된 H이고, D는 0이고, E,F,G는 H의 Tanner 그래프를 확장할 수 있도록 식2의 수식(2)에서 설계된 값임.) (Where s is a k-bit message, i.e. data, c is an M-bit parity (check), x is an N-bit codeword, c + s, and H is M by which the codeword satisfies Hx = 0). Create matrix of matrix N, where A is an M by M matrix, B is an M by k matrix, H 'is an extended H, D is 0, and E, F, and G can extend the Tanner graph of H This is the value designed by Equation (2) of Equation 2.)

상기 ECC 데이터 복원여부 검증부는 두 개의 페이지에 저장된 ECC codeword가 모두 상기 데이터 영역에 저장된 데이터를 복원할 수 없는 경우 상기 두 개의 페이지에 저장된 ECC 데이터가 오류인 것으로 판단하는 것을 특징으로 한다.The ECC data restoration verifier verifies that the ECC data stored in the two pages is an error when the ECC codewords stored in the two pages cannot restore the data stored in the data area.

상기 플래시 메모리는 낸드 플래시 메모리인 것을 특징으로 한다.The flash memory is characterized in that the NAND flash memory.

본 발명의 일 실시예에 따른 하는 플래시 메모리 기반의 저장 시스템의 에러 보정 방법은 플래시 메모리와, ECC 모듈을 구비하여 플래시 메모리의 에러를 보정하는 컨트롤러를 포함하는 플래시 메모리 기반의 저장 시스템의 에러 보정 방법에 있어서, ECC 모듈의 ECC codeword 생성부가 상기 플래시 메모리의 PE 사이클의 크기에 따라 ECC codeword를 생성하되 상기 PE 사이클이 기준값을 초과하는 경우 적어도 두 개의 페이지에 저장되는 크기의 ECC codeword를 생성하는 단계; ECC 모듈의 ECC 데이터 복원여부 검증부가 상기 두 개의 페이지 중 하나의 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한지의 여부를 검증하는 단계; ECC 데이터 복원여부 검증부가 상기 하나의 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한 것으로 검증함에 따라, ECC 모듈의 ECC 데이터 인코딩부가 상기 하나의 페이지에 저장된 ECC 데이터만을 인코딩하는 단계;를 포함하여 이루어지는 것을 특징으로 한다.An error correction method of a flash memory based storage system according to an exemplary embodiment of the present invention includes a flash memory and an ECC module including a controller for correcting an error of the flash memory. The ECC codeword generation unit of the ECC module generates an ECC codeword according to the size of a PE cycle of the flash memory, but generates an ECC codeword having a size stored in at least two pages when the PE cycle exceeds a reference value; Verifying, by the ECC data restoration whether or not, the ECC data restoration unit of the ECC module can restore the data stored in the flash memory from the ECC data stored in one of the two pages; Encoding ECC data stored in the one page by the ECC data encoding unit of the ECC module as the ECC data restoration verifier verifies that the ECC data stored in the one page is capable of restoring the data stored in the flash memory; It is characterized by comprising.

ECC 데이터 복원여부 검증부가 상기 하나의 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원불가능한 것으로 검증함에 따라, ECC 데이터 복원여부 검증부는 두 번째 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한지의 여부를 검증하는 단계;를 추가적으로 더 수행하는 것을 특징으로 한다.As the ECC data restoration verifier verifies that the ECC data stored in the one page is impossible to restore the data stored in the flash memory, the ECC data restoration verifier verifies that the ECC data stored in the second page is stored in the flash memory. Verifying whether or not it can be restored;

ECC 데이터 복원여부 검증부가 두 번째 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한지의 여부를 추가적으로 검증하는 단계의 수행결과, 두 번째 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한 것으로 검증함에 따라, 상기 ECC 데이터 인코딩부는 하나의 페이지에 저장된 ECC 데이터 및 두 번째 페이지에 저장된 ECC 데이터를 모두 인코딩하는 단계;를 더 수행하는 것을 특징으로 한다.As a result of the step of verifying whether the ECC data restoration verifier verifies whether the ECC data stored in the second page can restore the data stored in the flash memory, the ECC data stored in the second page restores the data stored in the flash memory. According to the verification, the ECC data encoding unit may further encode both the ECC data stored in one page and the ECC data stored in the second page.

ECC 데이터 복원여부 검증부가 두 개의 페이지에 저장된 ECC 데이터가 모두 상기 플래시 메모리에 저장된 데이터를 복원불가한 것으로 검증하는 경우, ECC 데이터 복원여부 검증부는 상기 ECC codeword 생성부에서 생성한 ECC 데이터에 오류가 발생한 것으로 판단하는 단계를 더 수행하는 것을 특징으로 한다.If the ECC data restoration verifier verifies that all of the ECC data stored in the two pages cannot be restored, the ECC data restoration verifier verifies that the ECC data generated by the ECC codeword generator has an error. Characterized in that it further performs the step of determining.

이러한 특징에 따르면, 본원 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템은 PE 사이클 크기가 증가함에 따라 ECC codeword 크기가 증가하므로 데이터의 에러 커버 능력이 향상되는 효과가 있다.According to this aspect, the flash memory-based storage system according to an embodiment of the present invention increases the ECC codeword size as the PE cycle size increases, thereby improving the error cover capability of the data.

또한, ECC codeword의 크기 증가로 ECC 데이터가 영역을 초과하여 저장되더라도, ECC 데이터 인코딩시 일부 영역의 ECC 데이터의 복원여부를 먼저 검증하여 검증된 경우 나머지 영역의 ECC 데이터의 인코딩을 생략하므로 ECC codeword 크기 증가에 따른 페이지 읽기시 발생할 수 있는 오버헤드를 절감할 수 있는 효과가 있다.In addition, even if ECC data is stored beyond the area due to the increase in the size of the ECC codeword, the ECC codeword size is omitted since the ECC data encoding of the remaining area is skipped when the ECC data encoding is verified by first verifying the restoration of ECC data of some areas. There is an effect that can reduce the overhead that may occur when reading the page according to the increase.

도 1은 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템의 구조를 나타낸 블록도이다.
도 2는 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템 중 ECC 모듈의 구조를 나타낸 블록도이다.
도 3은 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템 중 ECC 모듈이 참조하는 H의 Tanner 그래프 및 이로부터 생성되는 확장된 H’의 Tanner 그래프를 나타낸 도면이다.
도 4는 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템의 에러 보정방법을 나타낸 흐름도이다.
1 is a block diagram illustrating a structure of a flash memory based storage system according to an exemplary embodiment of the present invention.
2 is a block diagram illustrating a structure of an ECC module in a flash memory based storage system according to an exemplary embodiment of the present invention.
FIG. 3 is a view illustrating a Tanner graph of H referred to by an ECC module and a Tanner graph of H 'generated therefrom in a flash memory based storage system according to an exemplary embodiment of the present invention.
4 is a flowchart illustrating an error correction method of a flash memory based storage system according to an exemplary embodiment of the present invention.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.

도 1은 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템의 구조를 나타낸 블록도이고, 도 2는 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템 중 ECC 모듈의 구조를 나타낸 블록도이고, 도 3은 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템 중 ECC 모듈이 참조하는 H의 Tanner 그래프 및 이로부터 생성되는 확장된 H'의 Tanner 그래프를 나타낸 도면이고, 도 4는 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템의 에러 보정방법을 나타낸 흐름도이다.1 is a block diagram illustrating a structure of a flash memory based storage system according to an embodiment of the present invention, and FIG. 2 is a block diagram illustrating a structure of an ECC module in a flash memory based storage system according to an embodiment of the present invention. 3 is a view showing a Tanner graph of H referred to by an ECC module and a Tanner graph of an extended H ′ generated therefrom among flash memory based storage systems according to an embodiment of the present invention, and FIG. A flowchart illustrating an error correction method of a flash memory based storage system according to an exemplary embodiment of the present invention.

도 1 내지 도 2를 참고로 하는 본 실시예에서, 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템(S)은 플래시 메모리(20)와 플래시 메모리(20)에서 발생할 수 있는 에러를 커버하기 위한 ECC 모듈(100)을 구비하는 컨트롤러(10)를 포함한다.1 and 2, the flash memory based storage system S according to an embodiment of the present invention covers an error that may occur in the flash memory 20 and the flash memory 20. It includes a controller 10 having an ECC module 100 for.

이때, ECC 모듈(100)은 플래시 메모리(20)의 에러를 정정하는 모듈로서, 도 2에 도시한 것처럼, ECC codeword 생성부(110)와 ECC 데이터 복원여부 검증부(120), 그리고 ECC 데이터 인코딩부(130)를 포함한다.In this case, the ECC module 100 is a module for correcting an error of the flash memory 20. As shown in FIG. 2, the ECC codeword generator 110, the ECC data restoration verifying unit 120, and the ECC data encoding are shown. The unit 130 is included.

본 도면 및 설명에서 컨트롤러(10) 및 플래시 메모리(20)의 구성을 간략히 도시하고 설명을 일부 생략하였지만, 플래시 메모리(20)는 특정 프레임을 갖는 데이터 구조를 저장하도록 형성되고, 컨트롤러(10)는 저장 시스템(S)을 동작시키고 플래시 메모리(20)에 저장되는 데이터를 제어하기 위한 버퍼 등을 더 포함하는 구조로 형성되어야 함은 당업자에게 자명한 부분으로서, 본 명세서 상에서 이를 구체적으로 설명하지 않더라도 당업자의 수준에서 이해되어야 할 것이다.Although the configurations of the controller 10 and the flash memory 20 are briefly shown and partially omitted in the drawings and the description, the flash memory 20 is formed to store a data structure having a specific frame. It is obvious to those skilled in the art that the storage system S should be formed in a structure including a buffer for operating the storage system S and controlling data stored in the flash memory 20, even if the present invention is not described in detail herein. It should be understood at the level of.

플래시 메모리(20)는 낸드(NAND) 플래시 메모리일 수 있다.The flash memory 20 may be a NAND flash memory.

페이지(200)는 데이터 영역(DATA)(210)과 스페어 영역(SPARE)(220)을 포함하고, ECC 모듈(100)은 페이지(200)의 데이터 영역(210)에 저장된 데이터에 대한 ECC 데이터를 생성하여 스페어 영역(220)에 저장한다.The page 200 includes a data area (DATA) 210 and a spare area (SPARE) 220, and the ECC module 100 stores ECC data for data stored in the data area 210 of the page 200. It is generated and stored in the spare area 220.

이때, ECC 모듈(100)의 ECC codeword 생성부(110)는 플래시 메모리(20)의 PE 사이클에 따라 ECC 코드워드(codeword)를 생성한다. 이때, PE 사이클이 기 설정된 기준값 미만인 경우, ECC codeword 생성부(110)는 하나의 스페어 영역의 크기를 갖는 ECC codeword를 생성하고, 한편, 플래시 메모리(20)의 PE 사이클이 기 설정된 기준값 이상인 경우, ECC codeword 생성부(110)는 두 개의 스페어 영역의 크기를 갖는 ECC codeword를 생성한다.At this time, the ECC codeword generator 110 of the ECC module 100 generates an ECC codeword according to the PE cycle of the flash memory 20. At this time, when the PE cycle is less than the predetermined reference value, the ECC codeword generator 110 generates an ECC codeword having the size of one spare area, and, on the other hand, when the PE cycle of the flash memory 20 is equal to or greater than the preset reference value, The ECC codeword generator 110 generates an ECC codeword having a size of two spare areas.

한 예예서, 페이지의 데이터 영역 크기가 4096byte이고 스페어 영역 크기가 256byte인 경우, ECC codeword 생성부(110)가 생성하는 ECC codeword의 크기는 256byte일 수 있다. As an example, when the data area size of the page is 4096 bytes and the spare area size is 256 bytes, the size of the ECC codeword generated by the ECC codeword generator 110 may be 256 bytes.

이처럼, ECC codeword 생성부(110)는 PE 사이클이 클수록, ECC codeword의 크기를 크게 생성하는데, ECC codeword의 크기를 결정하는 기준인 PE 사이클의 기준값은 PE 사이클의 80%로서, ECC codeword 생성부(110)에 설정되어 저장된다.As described above, the ECC codeword generation unit 110 generates a larger size of the ECC codeword as the PE cycle is larger. The reference value of the PE cycle, which is a standard for determining the size of the ECC codeword, is 80% of the PE cycle, and the ECC codeword generation unit ( 110 is set and stored.

한 예에서, 플래시 메모리(20)가 SLC(Single Level Cell) 낸드 플래시 메모리인 경우, 플래시 메모리(20)의 PE 사이클은 100,000이고, ECC codeword 생성부(110)에 설정된 기준값은 80,000일 수 있다.In one example, when the flash memory 20 is a single level cell (SLC) NAND flash memory, the PE cycle of the flash memory 20 may be 100,000, and the reference value set in the ECC codeword generator 110 may be 80,000.

다른 한 예에서, 플래시 메모리(20)가 MLC(Multi Level Cell) 낸드 플래시 메모리인 경우, 플래시 메모리(20)의 PE 사이클은 10,000이고, ECC codeword 생성부(110)에 설정된 기준값은 8,000일 수 있다.In another example, when the flash memory 20 is a multi-level cell (MLC) NAND flash memory, the PE cycle of the flash memory 20 may be 10,000, and the reference value set in the ECC codeword generator 110 may be 8,000. .

또는, 다른 한 예에서, 플래시 메모리(20)가 TLC(Triple Level Cell) 낸드 플래시 메모리인 경우, 플래시 메모리(20)의 PE 사이클은 5,000이고, ECC codeword 생성부(110)에 설정된 기준값은 4,000일 수 있다.Or, in another example, when the flash memory 20 is a triple level cell (TLC) NAND flash memory, the PE cycle of the flash memory 20 is 5,000, and the reference value set in the ECC codeword generator 110 is 4,000 days. Can be.

이처럼, ECC codeword 생성부(110)는 플래시 메모리(20)의 PE 사이클에 따른 기준값을 설정할 수 있고, PE 사이클의 기준값 초과여부에 따라 ECC codeword 크기를 하나의 스페어 영역의 크기 또는 두 개의 스페어 영역의 크기로 생성하여, PE 사이클에 따른 데이터의 에러 보정률을 향상할 수 있다.As such, the ECC codeword generation unit 110 may set a reference value according to the PE cycle of the flash memory 20, and the size of the ECC codeword according to whether the reference value of the PE cycle is exceeded may correspond to the size of one spare area or two spare areas. By generating the size, the error correction rate of the data according to the PE cycle can be improved.

ECC codeword 생성부(110)는 플래시 메모리(20)의 페이지(200)의 DATA 영역(210)에 저장된 데이터에 대한 ECC codeword를 생성하여 이를 페이지(200)의 스페어 영역(220)에 저장한다.The ECC codeword generator 110 generates an ECC codeword for data stored in the DATA area 210 of the page 200 of the flash memory 20 and stores it in the spare area 220 of the page 200.

이때, ECC codeword 생성부(110)에서 생성한 ECC codeword인 ECC 데이터가 페이지(200)의 스페어 영역(220)을 초과하는 경우, ECC 데이터는 제1 페이지(200a)의 스페어 영역(220)뿐만 아니라 제2 페이지(200b)의 스페어 영역(220)에도 ECC 데이터를 저장하게 된다.In this case, when the ECC data, which is the ECC codeword generated by the ECC codeword generator 110, exceeds the spare area 220 of the page 200, the ECC data is not only the spare area 220 of the first page 200a. ECC data is also stored in the spare area 220 of the second page 200b.

한 예에서, ECC codeword 생성부(110)는 LDPC 또는 BCH를 이용하여 ECC 데이터를 생성할 수 있다.In one example, the ECC codeword generator 110 may generate ECC data using LDPC or BCH.

ECC codeword 생성부(110)가 LDPC를 이용하여 ECC 데이터를 생성하는 한 예예서, ECC codeword 생성부(110)는 종래의 LDPC를 이용하여 하나의 스페어 영역(220)에 저장되는 ECC 데이터를 생성하는 하기의 식 1을 확장하여 식 2와 같이 확장된 H'를 생성하고 이를 이용하여 적어도 두 개의 페이지의 스페어 영역의 에 저장되는 크기를 갖는 ECC codeword를 생성한다.As an example in which the ECC codeword generator 110 generates ECC data using LDPC, the ECC codeword generator 110 generates ECC data stored in one spare area 220 using a conventional LDPC. Equation 1 below is extended to generate an extended H 'as shown in Equation 2, and an ECC codeword having a size stored in the spare area of at least two pages is generated using the same.

[식 1][Equation 1]

Figure 112018122457958-pat00004
Figure 112018122457958-pat00004

[식 2][Equation 2]

Figure 112018122457958-pat00005
Figure 112018122457958-pat00005

Figure 112018122457958-pat00006
Figure 112018122457958-pat00006

위의 식 1에서, s는 k비트의 메시지, 즉, 데이터이고, c는 M비트의 패리티(체크)이고, x는 N비트의 codeword로 c+s이고, H는 codeword가 Hx=0을 만족하는 M by N 행렬의 parity check 생성 매트릭스이고, A는 M by M 행렬, B는 M by k 행렬이다.In Equation 1 above, s is a k-bit message, that is, data, c is M-bit parity (check), x is N-bit codeword, c + s, H is codeword satisfying Hx = 0. The parity check generation matrix of the M by N matrix, A is the M by M matrix, and B is the M by k matrix.

이때, ECC codeword 생성부(110)는 위의 식 2과 같이, 식 1로부터 생성된 c에 추가적인 패리티(parity(c'))를 생성하도록 확장된 H'를 생성하고, D는 식 2의 수식 (1)로부터 모든 c'를 만족하기 위해 0으로 설정되고, E, F, G는 수식 (2)에서 기존의 H의 Tanner 그래프를 고려하여 Tanner 그래프를 확장할 수 있도록 설계되며, E, F, G의 값을 한정하지는 않는다.At this time, the ECC codeword generation unit 110 generates an extended H 'to generate an additional parity (c') in c generated from Equation 1, as shown in Equation 2 above, and D is an equation of Equation 2. It is set to 0 to satisfy all c 'from (1), E, F, G is designed to expand the Tanner graph in consideration of the Tanner graph of H in Equation (2), E, F, It does not limit the value of G.

ECC codeword 생성부(110)가 확장된 H'를 생성하는 일예에서, H 매트릭스는 H=[A|B]로 이루어진 3×7의 매트릭스로, 4 bit 데이터에 대해 3 bit ECC를 다음의 식 3과 같이 포함할 수 있고, ECC codeword 생성부(110)는 H 매트릭스를 이용하여 다음의 식 4로 표현되는 H' 매트릭스를 생성한다.In an example in which the ECC codeword generator 110 generates the extended H ', the H matrix is a 3 × 7 matrix having H = [A | B], and 3 bit ECC for 4 bit data is expressed by the following equation 3 The ECC codeword generator 110 generates an H 'matrix represented by Equation 4 using the H matrix.

[식 3][Equation 3]

1 0 0 1 1 1 01 0 0 1 1 1 0

0 1 0 1 1 0 10 1 0 1 1 0 1

0 0 1 0 1 1 10 0 1 0 1 1 1

[식 4][Equation 4]

0 0 1 0 0 1 1 1 00 0 1 0 0 1 1 1 0

0 0 0 1 0 1 1 0 10 0 0 1 0 1 1 0 1

0 0 0 0 1 0 1 1 10 0 0 0 1 0 1 1 1

0 1 1 1 1 0 0 0 00 1 1 1 1 0 0 0 0

1 0 1 0 0 1 0 0 11 0 1 0 0 1 0 0 1

위의 식 4와 같이, ECC codeword 생성부(110)에서 생성한 확장된 H' 매트릭스는 5×9의 매트릭스로, 4 bit 데이터에 대해 5 bit ECC를 생성한 매트릭스이며, 식 3의 H 매트릭스에 의해 생성되는 codeword에 2 bit의 C' 영역이 생성된 매트릭스이다.As shown in Equation 4 above, the extended H 'matrix generated by the ECC codeword generator 110 is a 5x9 matrix, which is a matrix that generates 5-bit ECC for 4-bit data, A matrix of 2 bits of C 'region is generated in the codeword generated by the codeword.

ECC codeword 생성부(110)가 식 3 및 식 4와 같이 H' 매트릭스를 생성하는 일 예에서, 샘플 데이터 스트림(Sample Data Stream), H 매트릭스에 의해 생성된 ECC codeword, 그리고 H' 매트릭스에 의해 생성된 ECC codeword는 다음의 표 1과 같다.In an example in which the ECC codeword generator 110 generates the H 'matrix as shown in Equations 3 and 4, the sample data stream, the ECC codeword generated by the H matrix, and the H' matrix are generated. The ECC codewords are shown in Table 1 below.

[표 1]TABLE 1

Figure 112018122457958-pat00007
Figure 112018122457958-pat00007

이처럼, ECC 데이터 생성부(110)는 기존의 H 매트릭스의 ECC를 재사용하여 확장된 H' 매트릭스를 생성할 수 있고, 식 3에 대한 H의 Tanner 그래프 및 식 4에 대한 H'의 Tanner 그래프는 도 3과 같이 표현될 수 있으며, 이를 한정하지는 않는다.As such, the ECC data generating unit 110 may generate the extended H 'matrix by reusing the existing ECC of the H matrix, and the Tanner graph of H for Equation 3 and the Tanner graph of H' for Equation 4 are shown in FIG. It may be expressed as 3, but is not limited thereto.

ECC 데이터 복원여부 검증부(120)는 페이지(200)의 스페어 영역(220)에 저장된 ECC 데이터가 데이터 영역(210)에 저장된 데이터를 에러 없이 복원할 수 있는지의 여부를 검증하는 부분으로서, ECC 데이터와 데이터 영역(210)에 저장된 데이터를 비교하여 ECC 데이터의 복원여부를 검증하며, 이때, ECC 데이터의 복원여부 검증은 당업자에게 공지기술이므로 본 명세서에서 자세하게 기재하지 않더라도 당업자의 수준에서 이해되어야 하며 본 명세서의 내용을 한정하지 않아야 할 것이다.ECC data restoration whether the verification unit 120 is a part for verifying whether the ECC data stored in the spare area 220 of the page 200 can restore the data stored in the data area 210 without error, ECC data Compares the data stored in the data area 210 and verifies whether the ECC data is restored. In this case, ECC data verification is known to those skilled in the art, and thus it should be understood at the level of those skilled in the art even if not described in detail herein. It should not be limited to the content of the specification.

ECC 데이터 복원여부 검증부(120)는 ECC codeword 생성부(110)가 하나의 스페어 영역을 초과하는 크기를 갖는 ECC 데이터를 생성함에 따라 복수 개의 페이지(200)에 ECC 데이터가 저장된 경우에만 동작하는 수단으로서, 먼저, 제1 페이지(200a)의 스페어 영역(220)에 저장된 ECC 데이터를 검증한다.The ECC data restoration verifier 120 operates only when ECC data is stored in the plurality of pages 200 as the ECC codeword generator 110 generates ECC data having a size exceeding one spare area. As an example, first, the ECC data stored in the spare area 220 of the first page 200a is verified.

이때, 도 4를 참고로 하여 ECC 데이터 복원여부 검증부(120)의 ECC 데이터 복원여부 검증처리의 일 예를 설명하면, ECC 데이터 복원여부 검증부(120)는 먼저, ECC codeword 생성부(110)에서 생성된 ECC codeword의 크기를 비교 대상값인 N과 비교(Q100)하여, ECC codeword의 크기가 N을 초과하는 경우, 예 화살표 방향을 따라 이동하여 단계들을 수행하고, ECC codeword 생성부(110)에서 생성된 ECC codeword의 크기가 N보다 작거나 같은 경우 아니오 화살표 방향을 따라 이동하여 ECC 데이터 인코딩(S600)을 수행한다.In this case, referring to FIG. 4, an example of the ECC data restoration restoration verification process of the ECC data restoration verification unit 120 will be described. The ECC data restoration verification unit 120 firstly checks the ECC codeword generation unit 110. Compare the size of the ECC codeword generated by the comparison target value with N (Q100), if the size of the ECC codeword exceeds N, the steps are carried out by moving in the direction of the arrow, for example, ECC codeword generation unit 110 If the size of the generated ECC codeword is less than or equal to N, the ECC data encoding is performed by moving along the direction of the NO arrow.

즉, ECC 데이터 복원여부 검증부(120)는 ECC codeword 생성부(110)에서 생성한 ECC codeword의 크기가 N을 초과하는 경우에만 특정 처리를 수행하고, ECC codeword의 크기가 N 이하인 경우 종래의 플래시 메모리 저장 시스템과 같이 ECC 데이터를 인코딩한다(S600). 위 단계(S600)는 ECC 데이터 인코딩부(130)에서 수행된다.That is, the ECC data restoration verification unit 120 performs a specific process only when the size of the ECC codeword generated by the ECC codeword generation unit 110 exceeds N, and the conventional flash when the size of the ECC codeword is N or less. The ECC data is encoded as in the memory storage system (S600). The above step S600 is performed by the ECC data encoding unit 130.

한 예에서, N은 페이지(200)의 스페어 영역(220)에 저장되는 크기로서, 256byte일 수 있다.In an example, N is a size stored in the spare area 220 of the page 200 and may be 256 bytes.

위 단계(Q100)에서, ECC codeword의 크기가 N을 초과하는 것으로 판단된 경우 예 화살표 방향을 따라 수행되는 단계로서, ECC 데이터 복원여부 검증부(120)는 제1 페이지(200a)의 스페어 영역(220)에 저장된 ECC 데이터의 복원여부를 먼저 검증(S100)한다.In the above step (Q100), when the size of the ECC codeword is determined to be greater than N, the step is performed in the direction of the arrow, the ECC data restoration verification unit 120 is a spare area (1) of the first page (200a) First, it is verified whether the ECC data stored in 220 is restored (S100).

이때, 위 단계(S100)로부터, ECC 데이터 복원여부 검증부(120)는 제1 페이지(200a)의 ECC 데이터를 이용하여 제1 페이지(200a)의 데이터 영역(210)에 저장된 데이터를 복원가능한지를 판단(Q200)하고, 복원가능한 경우 예 화살표 방향을 따라 제1 페이지에 저장된 ECC 데이터 인코딩을 수행(S410)한다.At this time, from the above step (S100), ECC data restoration whether the verification unit 120 can restore the data stored in the data area 210 of the first page 200a by using the ECC data of the first page (200a) In operation S410, the ECC data encoding stored in the first page is performed in the direction of the arrow, if possible.

이때, 제1 페이지의 ECC 데이터 인코딩을 수행(S410)하는 단계는 ECC 데이터 인코딩부(130)에서 수행되고, 제1 페이지의 ECC 데이터 복원가능 여부 판단(Q200)단계는 ECC 데이터를 이용하여 에러 보정을 수행한 결과를 제1 페이지의 데이터와 비교하여 동일한지를 판단하는 처리를 통해 이루어진다.In this case, the ECC data encoding of the first page (S410) is performed by the ECC data encoding unit 130, and the ECC data restoring determination (Q200) of the first page may be performed by using ECC data. Is performed by comparing the result of the step with the data of the first page to determine whether the result is the same.

한편, 위 단계(Q200)에서 제1 페이지의 ECC 데이터가 데이터 영역에 저장된 데이터를 복원하지 못하는 것으로 판단되는 경우, 아니오 화살표 방향을 따라, ECC 데이터 복원여부 검증부(120)가 제2 페이지에 저장된 ECC 데이터의 복원여부를 검증(S200)한다.On the other hand, if it is determined in step Q200 that the ECC data of the first page cannot restore the data stored in the data area, the ECC data restoration verification unit 120 stores the second page along the NO arrow direction. It is verified whether the ECC data is restored (S200).

위 단계(S200)에 따라, ECC 데이터 복원여부 검증부(120)는 제2 페이지의 ECC 데이터를 이용하여 제1 페이지(200a) 또는 제2 페이지(200b)의 데이터 영역에 저장된 데이터를 복원가능한지를 판단(Q300)하고, 복원가능한 경우 예 화살표 방향을 따라 제1 페이지 및 제2 페이지의 ECC 데이터 인코딩을 수행(S420)한다. According to the above step (S200), ECC data restoration whether the verification unit 120 can restore the data stored in the data area of the first page 200a or the second page 200b by using the ECC data of the second page In operation S300, ECC data encoding of the first page and the second page may be performed along the direction of the arrow if it is reconstructible (S420).

이와 같이, ECC 모듈(100)이 ECC 데이터를 생성(ECC codeword)하고 이를 인코딩함에 있어서 ECC 데이터의 크기로 인해 제1 페이지(200a)뿐만 아니라 제2 페이지(200b)에까지 저장되는 경우, 무조건 모든 ECC 데이터를 인코딩하는 것이 아니라 일부 ECC 데이터를 확인하여 복원가능 여부를 판단하고, 일부 ECC 데이터만으로 데이터를 충분히 복원가능한 경우에는 일부 ECC 데이터만을 인코딩하되 일부 ECC 데이터만으로는 데이터 복원이 불가한 경우 모든 ECC 데이터를 인코딩하도록 처리함으로써 ECC 데이터 인코딩에 소요되는 오버헤드를 줄일 수 있다.As such, when the ECC module 100 generates the ECC data (ECC codeword) and encodes the ECC data, the ECC module 100 stores all the ECCs unconditionally in the second page 200b as well as the first page 200a due to the size of the ECC data. Instead of encoding the data, some ECC data is checked to determine whether it can be restored, and if only ECC data can recover the data sufficiently, only some ECC data can be encoded, but some ECC data cannot restore all the ECC data. Processing to encode reduces the overhead of encoding ECC data.

한편, 제2 페이지의 ECC 데이터의 복원가능 여부를 판단하는 단계(Q300)에서, 제2 페이지의 ECC 데이터가 복원불가한 것으로 판단되는 경우, 이는, 제1 페이지에 저장된 ECC 데이터 및 제2 페이지에 저장된 ECC 데이터를 모두 이용하더라도 데이터 복원이 불가한 상태인 것이므로, ECC 데이터 복원여부 검증부(120)는 ECC 데이터에 오류(S500)가 발생한 것으로 처리한다.On the other hand, if it is determined in step Q300 whether ECC data of the second page can be restored, it is determined that the ECC data of the second page cannot be restored, and this means that the ECC data stored in the first page and the second page are not. Even if all of the stored ECC data is used, data restoration is impossible. Therefore, the ECC data restoration verification unit 120 processes that an error S500 has occurred in the ECC data.

본 실시예에서, ECC 데이터는 PE 사이클에 따라 제2 페이지에까지 저장될 수 있는 것을 예로 들어 설명하였으나, ECC 데이터가 저장되는 페이지의 수를 2개로 한정하지는 않아야 할 것이다.In the present embodiment, the ECC data may be stored in the second page according to the PE cycle as an example, but the number of pages in which the ECC data is stored should not be limited to two.

일 실시예예서, ECC 데이터가 2개를 초과하는 페이지에 저장되는 경우, ECC 데이터 복원여부 검증부(120)는 ECC 데이터를 이용하여 복원가능할 때까지 ECC 데이터의 복원가능 여부를 판단하고, ECC 데이터 인코딩부(130)는 복원가능한 것으로 판단된 페이지에 저장된 ECC 데이터들을 인코딩하도록 단계가 수행되어야 할 것이며, 2개를 초과하는 페이지에 ECC 데이터들이 저장되더라도 첫 번째 페이지에 저장된 ECC 데이터가 데이터를 복원가능한 것으로 판단되는 경우 ECC 데이터 인코딩부(130)는 첫 번째 페이지, 즉 제1 페이지에 저장된 ECC 데이터만을 인코딩한다.In an embodiment, when the ECC data is stored in more than two pages, the ECC data restoration verifier 120 determines whether the ECC data can be restored until it can be restored using the ECC data, and the ECC data. The encoding unit 130 may have to be performed to encode the ECC data stored in the page determined to be reconstructible, and even if the ECC data is stored in more than two pages, the ECC data stored in the first page may restore the data. If it is determined that the ECC data encoding unit 130 encodes only the ECC data stored in the first page, that is, the first page.

다시, 도 2를 참조하여 ECC 데이터 인코딩부(130)를 설명하면, ECC 데이터 인코딩부(130)는 ECC codeword 생성부(110)에서 생성한 ECC 데이터를 인코딩하고, 인코딩된 ECC 데이터는 추후 ECC 모듈(100)에서 디코딩되어 저장 시스템(S)의 에러가 보정된다.Again, referring to the ECC data encoding unit 130 with reference to FIG. 2, the ECC data encoding unit 130 encodes the ECC data generated by the ECC codeword generator 110, and the encoded ECC data is later described as an ECC module. Decoded at 100 to correct errors in storage system S.

도 1 내지 도 4를 참고로 하여 설명한 것처럼, 본 발명의 한 실시예에 따른 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법에 따라, PE 사이클에 따라 ECC codeword를 크게 생성하여 여러 페이지에 저장하되, 여러 페이지에 저장된 ECC 데이터는 데이터 복원가능 여부 판단결과에 따라 일부만 인코딩되거나 또는 전부 인코딩되는 구조를 가지므로, 저장 시스템의 에러 보정 성능이 향상되고 ECC 데이터가 여러 페이지에 저장되더라도 이를 모두 인코딩하는 대신 일부 페이지에 저장된 데이터만 인코딩할 수 있어 ECC 데이터 인코딩에 소요되는 오버헤드를 절감할 수 있고, 저장 시스템의 처리속도가 향상되는 효과가 있다.As described with reference to FIGS. 1 to 4, according to a flash memory based storage system and an error correction method thereof according to an embodiment of the present invention, a large ECC codeword is generated and stored in several pages according to PE cycles. ECC data stored in multiple pages has a structure in which only part of the ECC data is encoded or partially encoded depending on whether the data can be restored or not. Therefore, the error correction performance of the storage system is improved, and even if the ECC data is stored in multiple pages, some of the ECC data is stored instead of some. Since only the data stored in the page can be encoded, the overhead required for ECC data encoding can be reduced, and the processing speed of the storage system can be improved.

이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements of those skilled in the art using the basic concepts of the present invention defined in the following claims are also provided. It belongs to the scope of rights.

S : 플래시 메모리 기반의 저장 시스템 10 : 컨트롤러
20 : 플래시 메모리 100 : ECC 모듈
110 : ECC 코드워드 생성부
120 : ECC 데이터 복원여부 검증부
130 : ECC 데이터 인코딩부 200 : 페이지
210 : 데이터 영역 220 : 스페어 영역
S: flash memory based storage system 10: controller
20: flash memory 100: ECC module
110: ECC codeword generation unit
120: ECC data restoration verification unit
130: ECC data encoding section 200: page
210: data area 220: spare area

Claims (11)

데이터를 저장하는 데이터 영역과, 상기 데이터에 대한 ECC 데이터를 저장하는 스페어 영역을 구비하는 페이지를 포함하는 플래시 메모리, 그리고
상기 페이지에 저장된 상기 데이터의 에러 보정을 위한 ECC 모듈을 포함하여 상기 플래시 메모리를 제어하는 컨트롤러를 포함하고,
상기 ECC 모듈은,
상기 데이터 영역에 대한 ECC 데이터를 생성하여 상기 스페어 영역에 저장하되 상기 플래시 메모리의 PE 사이클을 기준값과 비교하여 상기 PE 사이클이 상기 기준값을 초과하는 경우 상기 ECC 데이터의 크기를 적어도 두 개의 페이지에 저장되도록 생성하는 ECC codeword 생성부,
적어도 두 개의 페이지에 저장된 상기 ECC codeword 중 하나의 페이지에 저장된 ECC 데이터가 상기 데이터 영역에 저장된 데이터를 복원가능한지를 판단하는 ECC 데이터 복원여부 검증부, 그리고
상기 ECC 데이터 복원여부 검증부가 하나의 페이지에 저장된 ECC 데이터가 상기 데이터 영역에 저장된 데이터를 복원가능한 것으로 판단함에 따라 하나의 페이지에 저장된 ECC 데이터를 인코딩하는 ECC 데이터 인코딩부를 포함하는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템.
A flash memory including a page having a data area for storing data and a spare area for storing ECC data for the data; and
A controller for controlling the flash memory, including an ECC module for error correction of the data stored in the page;
The ECC module,
Generate and store the ECC data for the data area in the spare area, and compare the PE cycle of the flash memory with a reference value so that the size of the ECC data is stored in at least two pages when the PE cycle exceeds the reference value. ECC codeword generation unit to generate,
An ECC data restoration verifier for determining whether ECC data stored in one page of the ECC codewords stored in at least two pages can restore data stored in the data area; and
And a ECC data encoding unit for encoding ECC data stored in one page according to the ECC data restoring verifier determining that ECC data stored in one page is capable of restoring the data stored in the data area. Based storage system.
제1항에 있어서,
상기 기준값은 상기 플래시 메모리의 PE 사이클의 80% 크기인 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템.
The method of claim 1,
The reference value is a flash memory based storage system, characterized in that the size of 80% of the PE cycle of the flash memory.
제1항에 있어서,
상기 ECC 데이터 복원여부 검증부가 두 개의 페이지에 저장된 ECC codeword 중 하나의 페이지에 저장된 ECC 데이터로는 상기 데이터 영역에 저장된 데이터를 복원할 수 없고, 다른 하나의 페이지에 저장된 ECC 데이터를 이용하는 경우 상기 데이터 영역에 저장된 데이터를 복원가능한 것으로 판단하는 경우, 상기 ECC 데이터 인코딩부는 상기 두 개의 페이지에 저장된 ECC 데이터를 모두 인코딩하는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템.
The method of claim 1,
If the ECC data restoration verifier verifies that the ECC data stored in one page of the ECC codewords stored in the two pages cannot restore the data stored in the data area, and uses the ECC data stored in the other page, the data area If it is determined that the data stored in the resilient data, the ECC data encoding unit Flash memory-based storage system, characterized in that for encoding both the ECC data stored in the two pages.
제1항에 있어서,
상기 ECC codeword 생성부는 LDPC 코드를 이용하여 ECC 데이터를 생성하는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템.
The method of claim 1,
The ECC codeword generation unit generates ECC data using an LDPC code.
제4항에 있어서,
상기 ECC codeword 생성부는 하기의 식 1을 확장하여 하기의 식 2를 생성하고, 하기의 식 2를 이용하여 ECC codeword를 생성하는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템.
[식 1]
Figure 112018122457958-pat00008

[식 2]
Figure 112018122457958-pat00009

Figure 112018122457958-pat00010

(여기서, s는 k비트의 메시지, 즉, 데이터이고, c는 M비트의 패리티(체크)이고, x는 N비트의 codeword로 c+s이고, H는 codeword가 Hx=0을 만족하는 M by N 행렬의 생성 매트릭스이고, A는 M by M 행렬, B는 M by k 행렬이고, H'는 확장된 H이고, D는 0이고, E,F,G는 H의 Tanner 그래프를 확장할 수 있도록 식2의 수식(2)에서 설계된 값임.)
The method of claim 4, wherein
The ECC codeword generator extends Equation 1 below to generate Equation 2 below, and generates an ECC codeword using Equation 2 below.
[Equation 1]
Figure 112018122457958-pat00008

[Equation 2]
Figure 112018122457958-pat00009

Figure 112018122457958-pat00010

(Where s is a k-bit message, i.e. data, c is an M-bit parity (check), x is an N-bit codeword, c + s, and H is M by which the codeword satisfies Hx = 0). Create matrix of matrix N, where A is an M by M matrix, B is an M by k matrix, H 'is an extended H, D is 0, and E, F, and G can extend the Tanner graph of H This is the value designed in Equation (2) of Equation 2.)
제3항에 있어서,
상기 ECC 데이터 복원여부 검증부는 두 개의 페이지에 저장된 ECC codeword가 모두 상기 데이터 영역에 저장된 데이터를 복원할 수 없는 경우 상기 두 개의 페이지에 저장된 ECC 데이터가 오류인 것으로 판단하는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템.
The method of claim 3,
The ECC data restoration verifier verifies that the ECC data stored in the two pages is an error if the ECC codewords stored in the two pages cannot restore the data stored in the data area. Storage system.
제1항에 있어서,
상기 플래시 메모리는 낸드 플래시 메모리인 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템.
The method of claim 1,
The flash memory is a flash memory based storage system, characterized in that the NAND flash memory.
플래시 메모리와, ECC 모듈을 구비하여 플래시 메모리의 에러를 보정하는 컨트롤러를 포함하는 플래시 메모리 기반의 저장 시스템의 에러 보정 방법에 있어서,
ECC 모듈의 ECC codeword 생성부가 상기 플래시 메모리의 PE 사이클의 크기에 따라 ECC codeword를 생성하되 상기 PE 사이클이 기준값을 초과하는 경우 적어도 두 개의 페이지에 저장되는 크기의 ECC codeword를 생성하는 단계;
ECC 모듈의 ECC 데이터 복원여부 검증부가 상기 두 개의 페이지 중 하나의 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한지의 여부를 검증하는 단계;
ECC 데이터 복원여부 검증부가 상기 하나의 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한 것으로 검증함에 따라, ECC 모듈의 ECC 데이터 인코딩부가 상기 하나의 페이지에 저장된 ECC 데이터만을 인코딩하는 단계;를 포함하여 이루어지는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템의 에러 보정 방법.
In the error correction method of a flash memory-based storage system comprising a flash memory and a controller for correcting an error of the flash memory having an ECC module,
An ECC codeword generator of an ECC module generating an ECC codeword according to the size of a PE cycle of the flash memory, but generating an ECC codeword having a size stored in at least two pages when the PE cycle exceeds a reference value;
Verifying, by the ECC data restoration whether or not, the ECC data restoration unit of the ECC module verifies whether the ECC data stored in one of the two pages can restore the data stored in the flash memory;
Encoding ECC data stored in the one page by the ECC data encoding unit of the ECC module as the ECC data restoration verifier verifies that the ECC data stored in the one page is capable of restoring the data stored in the flash memory; Error correction method of a flash memory-based storage system comprising a.
제8항에 있어서,
ECC 데이터 복원여부 검증부가 상기 하나의 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원불가능한 것으로 검증함에 따라, ECC 데이터 복원여부 검증부는 두 번째 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한지의 여부를 검증하는 단계;를 추가적으로 더 수행하는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템의 에러 보정 방법.
The method of claim 8,
As the ECC data restoration verifier verifies that the ECC data stored in the one page is impossible to restore the data stored in the flash memory, the ECC data restoration verifier verifies that the ECC data stored in the second page is stored in the flash memory. Verifying whether it is recoverable; or further comprising performing an error correction method of the flash memory-based storage system.
제9항에 있어서,
ECC 데이터 복원여부 검증부가 두 번째 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한지의 여부를 추가적으로 검증하는 단계의 수행결과, 두 번째 페이지에 저장된 ECC 데이터가 상기 플래시 메모리에 저장된 데이터를 복원가능한 것으로 검증함에 따라, 상기 ECC 데이터 인코딩부는 하나의 페이지에 저장된 ECC 데이터 및 두 번째 페이지에 저장된 ECC 데이터를 모두 인코딩하는 단계;를 더 수행하는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템의 에러 보정 방법.
The method of claim 9,
As a result of the step of verifying whether the ECC data restoration verifier verifies whether the ECC data stored in the second page can restore the data stored in the flash memory, the ECC data stored in the second page restores the data stored in the flash memory. According to the verification, the ECC data encoding unit may further encode both the ECC data stored in one page and the ECC data stored in the second page. .
제10항에 있어서,
ECC 데이터 복원여부 검증부가 두 개의 페이지에 저장된 ECC 데이터가 모두 상기 플래시 메모리에 저장된 데이터를 복원불가한 것으로 검증하는 경우, ECC 데이터 복원여부 검증부는 상기 ECC codeword 생성부에서 생성한 ECC 데이터에 오류가 발생한 것으로 판단하는 단계를 더 수행하는 것을 특징으로 하는 플래시 메모리 기반의 저장 시스템의 에러 보정 방법.
The method of claim 10,
If the ECC data restoration verifier verifies that all of the ECC data stored in the two pages cannot be restored, the ECC data restoration verifier verifies that the ECC data generated by the ECC codeword generator has an error. And performing the step of determining that the error is determined.
KR1020180156206A 2018-12-06 2018-12-06 Storage system based flash memory and error correcting method thereof KR102076624B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180156206A KR102076624B1 (en) 2018-12-06 2018-12-06 Storage system based flash memory and error correcting method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180156206A KR102076624B1 (en) 2018-12-06 2018-12-06 Storage system based flash memory and error correcting method thereof

Publications (1)

Publication Number Publication Date
KR102076624B1 true KR102076624B1 (en) 2020-02-12

Family

ID=69569828

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180156206A KR102076624B1 (en) 2018-12-06 2018-12-06 Storage system based flash memory and error correcting method thereof

Country Status (1)

Country Link
KR (1) KR102076624B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102404257B1 (en) 2020-12-23 2022-06-02 청주대학교 산학협력단 Asynchronous mass memory module with error corrction function using error correction code and error correction method of asynchronous mass memory module using error correction code

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040038709A (en) * 2002-10-28 2004-05-08 샌디스크 코포레이션 Method and apparatus for managing the integrity of data in a non-volatile memory system
KR101606718B1 (en) 2010-10-27 2016-03-28 엘에스아이 코포레이션 Adaptive ecc techniques for flash memory based data storage
KR20160118526A (en) * 2015-04-02 2016-10-12 한국외국어대학교 연구산학협력단 Method and Apparatus for Creating Error Correction Code
KR20180041473A (en) * 2016-10-14 2018-04-24 한국외국어대학교 연구산학협력단 Method And Computer Program of Implementing Virtual NAND Flash
KR20180087496A (en) * 2017-01-23 2018-08-02 에스케이하이닉스 주식회사 Memory system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040038709A (en) * 2002-10-28 2004-05-08 샌디스크 코포레이션 Method and apparatus for managing the integrity of data in a non-volatile memory system
KR101606718B1 (en) 2010-10-27 2016-03-28 엘에스아이 코포레이션 Adaptive ecc techniques for flash memory based data storage
KR20160118526A (en) * 2015-04-02 2016-10-12 한국외국어대학교 연구산학협력단 Method and Apparatus for Creating Error Correction Code
KR20180041473A (en) * 2016-10-14 2018-04-24 한국외국어대학교 연구산학협력단 Method And Computer Program of Implementing Virtual NAND Flash
KR20180087496A (en) * 2017-01-23 2018-08-02 에스케이하이닉스 주식회사 Memory system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102404257B1 (en) 2020-12-23 2022-06-02 청주대학교 산학협력단 Asynchronous mass memory module with error corrction function using error correction code and error correction method of asynchronous mass memory module using error correction code

Similar Documents

Publication Publication Date Title
KR100845529B1 (en) Ecc controller for use in flash memory device and memory system including the same
US9465692B2 (en) High reliability erasure code distribution
US20120096328A1 (en) Multi-write endurance and error control coding of non-volatile memories
US10719395B2 (en) Memory system
US20100281340A1 (en) Adaptive endurance coding of non-volatile memories
US20180278273A1 (en) Decoding device and decoding method
US10447301B2 (en) Optimal LDPC bit flip decision
US9852022B2 (en) Memory system, memory controller and memory control method
US9654147B2 (en) Concatenated error correction device
US8406051B2 (en) Iterative demodulation and decoding for multi-page memory architecture
US9588772B2 (en) Memory controller and decoding method
US11567825B2 (en) Generating error checking data for error detection during modification of data in a memory sub-system
US10574272B2 (en) Memory system
KR102628009B1 (en) Memory system for partial page compression
JP2019057812A (en) Memory system
US10200066B2 (en) Code reconstruction scheme for multiple code rate TPC decoder
KR102076624B1 (en) Storage system based flash memory and error correcting method thereof
KR20200110624A (en) Memory system, and operating method of memory controller
US11231994B2 (en) Memory system and method of controlling nonvolatile memory
US20160080004A1 (en) Memory controller and decoding method
CN109841252B (en) Flash memory controller and encoder arranged in flash memory controller
KR102007163B1 (en) Encoder, decoder and semiconductor device including the same
US20210058097A1 (en) Memory system and method for controlling non-volatile memory
US20160269046A1 (en) Memory controller, memory system, and decoding method
JP2021141369A (en) Memory system

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant