KR101711056B1 - Method and Apparatus for Creating Error Correction Code - Google Patents

Method and Apparatus for Creating Error Correction Code Download PDF

Info

Publication number
KR101711056B1
KR101711056B1 KR1020150046782A KR20150046782A KR101711056B1 KR 101711056 B1 KR101711056 B1 KR 101711056B1 KR 1020150046782 A KR1020150046782 A KR 1020150046782A KR 20150046782 A KR20150046782 A KR 20150046782A KR 101711056 B1 KR101711056 B1 KR 101711056B1
Authority
KR
South Korea
Prior art keywords
data
error correction
correction code
variable
generating
Prior art date
Application number
KR1020150046782A
Other languages
Korean (ko)
Other versions
KR20160118526A (en
Inventor
임승호
Original Assignee
한국외국어대학교 연구산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국외국어대학교 연구산학협력단 filed Critical 한국외국어대학교 연구산학협력단
Priority to KR1020150046782A priority Critical patent/KR101711056B1/en
Publication of KR20160118526A publication Critical patent/KR20160118526A/en
Application granted granted Critical
Publication of KR101711056B1 publication Critical patent/KR101711056B1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/40Response verification devices using compression techniques
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Abstract

본 실시예는 쓰기 대상 데이터에 대해서 압축을 수행하여 데이터를 축약한 후 축약한 데이터에 대해서 가변형 ECC Coding 방법을 적용하여 에러 정정 코드 데이터를 생성함으로써 에러 발생 확률을 근본적으로 줄이는 한편, 데이터 축약으로 인해 확보된 영역에 기존 대비 추가 생성된 에러 정정 코드 데이터를 기재함으로써 추가적인 ECC 영역을 확보해 에러 발생 시 복원 과정이 보다 원활하게 수행될 수 있도록 하는 에러 정정 코드 생성방법 및 장치에 관한 것이다.In this embodiment, error-correcting code data is generated by compressing the data to be written and shortening the data and applying the variable ECC coding method to the reduced data, thereby fundamentally reducing the error occurrence probability. On the other hand, To an error correction code generating method and apparatus for allowing an additional ECC area to be secured by describing error correction code data generated in addition to the existing area, so that the restoration process can be smoothly performed when an error occurs.

Description

에러 정정 코드 생성방법 및 장치{Method and Apparatus for Creating Error Correction Code}[0001] The present invention relates to a method and an apparatus for generating an error correction code,

본 실시예는 에러 정정 코드 생성방법 및 장치에 관한 것이다.The present embodiment relates to a method and an apparatus for generating an error correction code.

이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.The contents described in this section merely provide background information on the present embodiment and do not constitute the prior art.

일반적으로 낸드 플래시 메모리(Nand Flash Memory)는 낮은 전력 소모 및 대용량 특성으로 인해 SSD(solid state drive)와 eMMC(embedded Multi Media Card) 등의 저장장치에서 저장 매체로서 주로 사용되고 있다.In general, NAND flash memory is mainly used as a storage medium in a storage device such as a solid state drive (SSD) and an embedded multi media card (eMMC) due to its low power consumption and large capacity.

최근, 낸드 플래시 메모리의 제품 생산 기술이 진보됨에 따라 메모리 셀(Cell) 당 저장할 수 있는 비트 수가 증가하고 있으며, 현재 널리 사용되는 메모리 셀은 TLC(Three Level Cell)로서 셀 당 세 비트를 저장한다. 한편, 낸드 플래시 메모리는 셀 당 저장 비트수가 증가함에 따라 장치의 제작 비용이 감소한 반면 인접 비트간의 간섭으로 인해 데이터를 읽고 쓸 때 에러 발생 확률이 급격히 증가하고 있다. In recent years, the number of bits that can be stored per memory cell (cell) has increased as the technology for producing NAND flash memory has been advanced. Currently, memory cells that are widely used are three level cells (TLC). On the other hand, in NAND flash memory, as the number of stored bits per cell increases, the manufacturing cost of the device decreases. However, the probability of occurrence of errors increases rapidly when data is read or written due to interference between adjacent bits.

전술한 문제를 해결하기 위해 낸드 플래시 메모리 시스템은 BCH(Bose, Chaudhuri, and Hocquenghem), LDPC(Low Density Parity Check) Code와 같은 통신 및 신호처리 ECC Coding 기법을 적용하여 에러 정정 코드를 생성하고, 에러 발생 시 에러 정정 코드를 이용하여 에러를 복구하는 방법을 적용하고 있다. 하지만 종래의 ECC Coding 기법의 경우 코딩 길이에 따른 오버헤드가 크다는 문제점이 존재하며, 이러한, 오버헤드를 줄이는 데 한계가 있어 향 후 셀 당 비트수가 점점 더 증가할 경우 발생한 에러를 완전히 복원할 수 없다는 문제점이 존재한다.In order to solve the above problems, the NAND flash memory system generates an error correction code by applying a communication and signal processing ECC coding technique such as BCH (Bose, Chaudhuri, and Hocquenghem) and LDPC (Low Density Parity Check) A method of recovering an error using an error correction code is applied. However, in the conventional ECC coding technique, there is a problem that the overhead due to the coding length is large, and there is a limit to reduce the overhead. Therefore, if the number of bits per cell increases gradually, There is a problem.

이에, 종래의 ECC Coding과는 독립적으로 상호 작용하여 에러의 발생을 줄이고, 발생한 에러에 대해서 원활하게 복원할 수 있도록 하는 시스템적이고 구조적인 접근 방식이 요구되고 있다.Accordingly, there is a need for a systematic and structured approach that can interact with the conventional ECC coding independently to reduce the occurrence of errors and to smoothly recover the generated errors.

본 실시예는 낸드 플래시 메모리 기반 저장장치가 쓰기 대상 데이터에 대해서 압축을 수행하여 데이터를 축약한 후 축약한 데이터에 대해서 가변형 ECC Coding 방법을 적용하여 에러 정정 코드 데이터를 생성함으로써 에러 발생 확률을 근본적으로 줄이는 한편, 데이터 축약으로 인해 확보된 영역에 기존 대비 추가 생성된 에러 정정 코드 데이터를 기재함으로써 추가적인 ECC 영역을 확보해 에러 발생 시 복원 과정이 보다 원활하게 수행될 수 있도록 하는 데 그 목적이 있다.In the present embodiment, the NAND flash memory based storage device compresses the data to be written and shortens the data, and then generates the error correction code data by applying the variable ECC coding method to the reduced data, thereby fundamentally increasing the error occurrence probability And an additional ECC area is secured by recording the generated error correction code data in addition to the existing area in the area secured by the data reduction, so that the restoration process can be performed more smoothly in the event of an error.

본 실시예는, 낸드 플래시 메모리 기반 저장장치의 에러 정정 코드 생성방법에 있어서, 호스트로부터 입력 데이터를 수신하고, 상기 입력 데이터를 페이지 단위로 분할하여 적어도 하나의 쓰기 대상 데이터를 생성하는 수신단계; 상기 쓰기 대상 데이터를 압축하여 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 생성하는 압축단계; 상기 압축 데이터를 가변 단위의 크기로 분할하여 에러 정정 코드(ECC: Error Correction Code) 데이터 생성을 위한 단위(ECC Codeword)의 가변 분할 데이터를 생성하고, 상기 가변 분할 데이터별로 각각 대응되는 대응 에러 정정 코드 데이터를 생성하는 생성단계; 및 상기 가변 분할 데이터 및 상기 가변 분할 데이터별 대응 에러 정정 코드 데이터를 조합한 조합 데이터를 생성하고, 상기 조합 데이터를 대응되는 낸드 플래시 메모리에 할당하는 할당단계를 포함하는 것을 특징으로 하는 에러 정정 코드 생성방법을 제공한다.According to another aspect of the present invention, there is provided a method of generating an error correction code for a NAND flash memory based storage device, the method comprising: receiving input data from a host and dividing the input data into pages; A compressing step of compressing the write target data to generate one or more pieces of compressed data divided into subpage units; And generating variable division data of a unit (ECC Codeword) for generating error correction code (ECC) data by dividing the compressed data into a variable unit size, and generating a corresponding error correction code A generating step of generating data; And an allocation step of generating combination data in which the variable division data and the corresponding error correction code data for each variable division data are combined and allocating the combination data to the corresponding NAND flash memory ≪ / RTI >

또한, 본 실시예의 다른 측면에 의하면, 낸드 플래시 메모리 기반 저장장치에 있어서, 호스트로부터 입력 데이터를 수신하고, 상기 입력 데이터를 페이지 단위로 분할하여 적어도 하나의 쓰기 대상 데이터를 제공하는 호스트 인터페이스부; 복수의 코어를 구비하며, 각 코어는 상기 쓰기 대상 데이터를 압축하여 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 생성하고, 상기 압축 데이터를 가변 단위의 크기로 분할하여 에러 정정 코드(ECC: Error Correction Code) 데이터 생성을 위한 단위(ECC Codeword)의 가변 분할 데이터를 생성하고, 상기 가변 분할 데이터별로 각각 대응되는 대응 에러 정정 코드 데이터를 생성하고, 상기 가변 분할 데이터 및 상기 가변 분할 데이터별 대응 ECC 데이터를 조합한 조합 데이터를 생성하는 코어부; 및 상기 조합 데이터를 대응되는 낸드 플래시 메모리에 할당하는 출력부를 포함하는 것을 특징으로 하는 저장장치를 제공한다.According to another aspect of the present invention, there is provided a storage device based on a NAND flash memory, comprising: a host interface unit for receiving input data from a host, dividing the input data into pages, and providing at least one data to be written; Each of the cores compresses the data to be written to generate one or more pieces of compressed data divided into subpage units, divides the compressed data into sizes of variable units, and generates an error correction code (ECC) (ECC codeword) for generating code data, generating corresponding error correction code data corresponding to each of the variable division data, and outputting the variable division data and the corresponding ECC data for each variable division data A core unit that generates combined data; And an output unit for allocating the combination data to a corresponding NAND flash memory.

본 실시예에 의하면, 낸드 플래시 메모리 기반 저장장치가 쓰기 대상 데이터에 대해서 압축을 수행하여 데이터를 축약한 후 축약한 데이터에 대해서 가변형 ECC Coding 방법을 적용하여 에러 정정 코드 데이터를 생성함으로써 에러 발생 확률을 근본적으로 줄이는 한편, 데이터 축약으로 인해 확보된 영역에 기존 대비 추가 생성된 에러 정정 코드 데이터를 기재함으로써 추가적인 ECC 영역을 확보해 에러 발생 시 복원 과정이 보다 원활하게 수행될 수 있도록 하는 효과가 있다.According to this embodiment, the storage device based on NAND flash memory compresses the data to be written and shortens the data, and then generates the error correction code data by applying the variable ECC coding method to the reduced data, In addition, it is possible to secure an additional ECC area by recording the error correction code data generated in addition to the existing area in the area reserved due to the data reduction, so that the restoration process can be performed more smoothly in the event of an error.

도 1은 본 실시예에 따른 낸드 플래시 메모리 기반 저장장치를 개략적으로 나타낸 블럭 구성도이다.
도 2는 본 실시예에 따른 코어를 개략적으로 나타낸 블럭 구성도이다.
도 3은 본 실시예에 따른 에러 정정 코드 생성방법을 설명하기 위한 순서도이다.
도 4는 본 실시예에 따른 코어가 에러 정정 코드를 생성하는 제1 방법을 예시한 예시도이다.
도 5는 본 실시예에 따른 코어가 에러 정정 코드를 생성하는 제2 방법을 예시한 예시도이다.
1 is a block diagram schematically illustrating a storage device based on a NAND flash memory according to an embodiment of the present invention.
2 is a block diagram schematically showing a core according to the present embodiment.
3 is a flowchart for explaining a method of generating an error correction code according to the present embodiment.
4 is an exemplary diagram illustrating a first method for generating an error correction code according to the present embodiment.
5 is an exemplary diagram illustrating a second method of generating an error correction code according to the present embodiment.

이하, 본 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, the present embodiment will be described in detail with reference to the accompanying drawings.

도 1은 본 실시예에 따른 낸드 플래시 메모리 기반 저장장치를 개략적으로 나타낸 블럭 구성도이다.1 is a block diagram schematically illustrating a storage device based on a NAND flash memory according to an embodiment of the present invention.

도 1에 도시하듯이, 본 실시예에 따른 낸드 플래시 메모리 기반 저장장치(100, 이하, 저장장치로 명시하도록 한다.)는 플래시 컨트롤러(110), DRAM(130, Dynamic Random Access Memory) 및 다수의 낸드 플래시 메모리(140)를 포함한다. 여기서, 플래시 컨트롤러(110)와 다수의 낸드 플래시 메모리(140)는 저장장치(100)가 eMMC(embedded Multi Media Card)인 경우 하나의 칩 안에 패키징된 형태로 구현될 수 있으며, SSD(solid state drive)인 경우 외부 인터페이스에 의해 칩과 서로 연결된 형태로 구현될 수 있다.1, a NAND flash memory based storage device 100 according to an embodiment of the present invention includes a flash controller 110, a DRAM (Dynamic Random Access Memory) 130, And a NAND flash memory 140. Here, the flash controller 110 and the plurality of NAND flash memories 140 may be packaged in a single chip when the storage device 100 is an eMMC (embedded Multi Media Card) ), It can be implemented as a form connected with the chip by an external interface.

플래시 컨트롤러(110)는 호스트(미도시)와 낸드 플래시 메모리(140) 사이에서 동작하며, 호스트의 I/O 액세스 명령에 대응하여 쓰기 대상 데이터를 낸드 플래시 메모리(140)에 저장하거나 호스트로 출력할 읽기 대상 데이터를 낸드 플래시 메모리(140)로부터 출력한다. 한편, 본 실시예는 쓰기 대상 데이터가 발생 시의 에러 정정 코드 데이터의 생성방법에 관한 기술로서, 플래시 컨트롤러(110)가 수행하는 다수의 동작 중 쓰기 동작에 대해서 중점적으로 설명하도록 한다.The flash controller 110 operates between the host (not shown) and the NAND flash memory 140. The flash controller 110 stores the write target data in the NAND flash memory 140 or outputs it to the host in response to the host I / O access command And outputs the read target data from the NAND flash memory 140. On the other hand, the present embodiment focuses on a write operation among a plurality of operations performed by the flash controller 110 as a technique related to a method of generating error correction code data when data to be written occurs.

플래시 컨트롤러(110)는 호스트 인터페이스부(112), 코어부(114), 출력부(118) 및 버퍼 관리부(120)를 포함한다.The flash controller 110 includes a host interface unit 112, a core unit 114, an output unit 118, and a buffer management unit 120.

호스트 인터페이스부(112)는 호스트와 제어신호 및 데이터를 송수신한다. 본 실시예에 따른 호스트 인터페이스부(112)는 호스트로부터 쓰기 제어신호 및 입력 데이터를 수신하는 경우, 입력 데이터를 페이지 단위로 분할하여 적어도 하나의 쓰기 대상 데이터를 생성한다. 일반적으로, 낸드 플래시 메모리(140)에서 쓰기 동작(Write Operation)은 페이지(Page) 단위로 수행된다. 이에, 본 실시예에 따른 호스트 인터페이스부(112)는 호스트로부터 수신한 입력 데이터를 페이지 단위로 분할하여 실질적으로 낸드 플래시 메모리(140)에 저장되는 데이터인 쓰기 대상 데이터를 생성한다.The host interface unit 112 transmits / receives control signals and data to / from the host. When receiving the write control signal and the input data from the host, the host interface unit 112 according to the present embodiment divides the input data into pages and generates at least one data to be written. Generally, a write operation in the NAND flash memory 140 is performed on a page basis. The host interface unit 112 according to the present embodiment divides the input data received from the host into pages and generates data to be written, which is data stored in the NAND flash memory 140.

호스트 인터페이스부(112)는 하나 이상의 쓰기 대상 데이터를 코어부(114) 내 구비된 복수의 코어(116) 중 어느 하나의 코어로 할당한다. 예컨대, 호스트 인터페이스부(112)는 각 코어(116)에 의해 관리되는 낸드 플래시 메모리(140) 내에 데이터가 기 저장되어 있는지 여부를 확인하고, 확인결과에 따라 쓰기 대상 데이터를 복수의 코어(116) 중 어느 하나의 코어로 할당할 수 있다. 본 실시예에서는 호스트 인터페이스부(112)가 쓰기 대상 데이터를 복수의 코어(116) 중 어느 하나의 코어로 할당하는 기준에 대해서 특정 기준으로 한정하지는 않는다.The host interface unit 112 allocates one or more write target data to one of a plurality of cores 116 provided in the core unit 114. For example, the host interface unit 112 checks whether or not data is stored in the NAND flash memory 140 managed by each core 116, and writes data to be written to the plurality of cores 116 according to the check result. Can be assigned to any one of the cores. In the present embodiment, the host interface unit 112 does not limit the data to be written to a specific one of the plurality of cores 116 to a specific standard.

코어부(114)는 복수의 코어(116)를 구비하며, 각 코어(116)는 호스트 인터페이스부(112)로부터 할당받은 쓰기 대상 데이터를 낸드 플래시 메모리(140)에 저장하기 위한 쓰기 동작을 수행한다. 본 실시예에 따른 코어부(114)는 멀티 코어 방식을 적용하여 호스트 인터페이스 처리 및 플래시 인터페이스 처리를 병렬화하며, 이를 통해 단일 코어 방식 대비 고속의 성능을 제공한다.The core unit 114 includes a plurality of cores 116. Each core 116 performs a write operation for storing write target data allocated from the host interface unit 112 in the NAND flash memory 140 . The core unit 114 according to the present embodiment parallelizes the host interface processing and the flash interface processing by applying the multi-core method, thereby providing high-speed performance compared to the single core method.

코어(116)는 쓰기 대상 데이터에 대한 쓰기 동작 수행 시 낸드 플래시 메모리(140)에 실제 저장되는 데이터에 대한 에러 발생 여부 검사 및 발생한 에러를 복원하기 위한 에러 정정 코드(ECC: Error Correction Code) 데이터를 생성하고, 이를 쓰기 대상 데이터와 함께 제공한다. 종래의 ECC Coding 방법에서는 쓰기 대상 데이터에 대해서 페이지를 구성하는 서브 페이지의 크기 단위만큼의 데이터별로 각각 에러 정정 코드 데이터를 생성하였다. 한편, 에러 정정 코드 데이터는 에러 정정 코드 데이터 생성을 위한 데이터 단위(이하, ECC Codeword로 명시하도록 한다.)의 크기에 따라 에러 정정 능력이 결정되며, ECC Codeword의 크기가 작을수록 에러 정정 능력이 좋아진다. 이에, 본 실시예에 따른 코어(116)는 쓰기 대상 데이터에 대해서 압축을 수행하여 데이터를 축약한 후 축약한 데이터에 대해서 가변형 ECC Coding 방법을 적용함으로써 ECC Codeword의 크기를 기존의 서브 페이지 크기 단위 대비 작은 크기로 감소시킨다. 코어(116)는 감소된 ECC Codeword에 기초하여 쓰기 대상 데이터에 대한 에러 정정 코드 데이터를 각각 생성함으로써 이전 크기의 ECC Codeword를 사용하는 경우 대비 에러 발생 확률을 근본적으로 줄이는 한편, 에러 정정 능력이 향상될 수 있도록 동작한다.The core 116 checks whether or not an error has occurred in data actually stored in the NAND flash memory 140 when performing a write operation on the write target data and generates error correction code (ECC) data for recovering the generated error And provides it with the data to be written. In the conventional ECC coding method, error correction code data is generated for each data of a size of a subpage constituting a page with respect to data to be written. On the other hand, the error correction capability is determined by the size of a data unit for generating error correction code data (hereinafter, it is specified as ECC codeword). The smaller the size of the ECC codeword, the better the error correction capability Loses. Accordingly, the core 116 according to the present embodiment compresses the data to be written, shortens the data, and applies the variable ECC coding method to the reduced data, thereby reducing the size of the ECC codeword to the size of the existing subpage size unit Decrease to small size. The core 116 generates error correction code data for the write target data based on the reduced ECC codeword, thereby fundamentally reducing the probability of occurrence of the contrast error when using the previous-size ECC codeword, and improving the error correction capability .

이하, 본 실시예에 따른 코어(116)가 에러 정정 코드 데이터를 생성하는 보다 구체적인 방법에 대해 설명하도록 한다.Hereinafter, a more specific method by which the core 116 according to the present embodiment generates error correction code data will be described.

코어(116)는 호스트 인터페이스부(112)로부터 수신한 쓰기 대상 데이터에 대해서 압축을 수행하여 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 생성한다. 이때, 쓰기 대상 데이터의 압축률은 쓰기 대상 데이터의 크기에 따라 결정된다. 예컨대, 쓰기 대상 데이터는 압축 과정을 통해 생성된 하나 이상의 압축 데이터를 쓰기 대상 데이터를 위해 할당된 공간 내 저장 시 적어도 하나의 서브 페이지의 크기만큼의 여유 공간(이하, 추가 생성영역으로 명시하도록 한다.)이 확보될 수 있을 정도의 크기로 압축되는 것이 바람직하나 반드시 이에 한정되는 것은 아니다. 본 실시예에 따른 코어(116)는 쓰기 대상 데이터에 대한 압축 과정을 수행함으로써 쓰기 대상 데이터에 대한 인코딩 시간 및 에러 발생 확률을 기존 대비 감소시킬 수 있다. 더불어, 코어(116)는 쓰기 대상 데이터의 압축으로 인해 확보된 추가 생성영역을 자유 영역으로 사용할 수 있게 된다.The core 116 performs compression on the write target data received from the host interface unit 112 to generate one or more pieces of compressed data divided in units of subpages. At this time, the compression rate of the write target data is determined according to the size of the write target data. For example, when writing one or more pieces of compressed data generated through a compression process in a space allocated for write data, the write target data specifies a spare area (hereinafter referred to as an additional generated area) of the size of at least one sub-page. ) Is secured, but the present invention is not limited thereto. The core 116 according to the present embodiment may reduce the encoding time and the error occurrence probability of the write target data by performing a compression process on the write target data. In addition, the core 116 can use the additional creation area secured by the compression of the data to be written as a free area.

코어(116)는 서브 페이지 단위로 분할된 하나 이상의 압축 데이터에 대해서 각각 가변형(Variable-Sized) ECC Coding 방법을 적용하여 에러 정정 코드 데이터를 생성한다. 가변형 ECC Coding 방법은 기 설정된 ECC Codeword를 상황에 따라 가변적으로 조정하고, 조정된 ECC Codeword에 기초하여 에러 정정 코드 데이터를 생성하는 방법이다. 한편, 본 실시예에 따른 코어(116)는 쓰기 대상 데이터의 압축률에 기초하여 ECC Codeword를 가변적으로 조정한다. The core 116 generates error correction code data by applying a Variable-Sized ECC Coding method to at least one compressed data segmented in units of subpages. The variable ECC coding method variably adjusts the preset ECC codeword according to the situation and generates error correction code data based on the adjusted ECC codeword. On the other hand, the core 116 according to the present embodiment variably adjusts the ECC codeword based on the compression rate of the write object data.

코어(116)는 가변형 ECC Coding 수행 시 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 각각 가변 단위의 크기로 분할하여 압축 데이터별 가변 분할 데이터를 생성하고, 이를 새로운 ECC Codeword로서 조정한다. 이후, 코어(116)는 가변 분할 데이터별로 각각 대응되는 대응 에러 정정 코드 데이터를 생성한다. 즉, 본 실시예에 따른 코어(116)는 하나 이상의 압축 데이터에 대해서 각각 가변형 ECC Coding 방법을 적용함으로써 ECC Codeword의 크기를 기존의 서브 페이지 크기 대비 작은 크기로 감소시킨다. 이에, 코어(116)는 쓰기 대상 데이터에 대해서 기존 보다 더 작은 영역으로 분할하여 에러 정정 코드 데이터를 생성할 수 있으며, 이를 통해, 이전 크기의 ECC Codeword를 사용하는 경우 대비 에러 발생 확률을 근본적으로 줄일 수 있다. 더불어, 에러 발생 시 에러 정정 과정을 더욱 원활하게 수행할 수 있다.The core 116 divides one or more pieces of compressed data, which are divided into subpage units, into sizes of variable units, and generates variable division data for each piece of compressed data when the variable ECC coding is performed, and adjusts the divided data as a new ECC codeword. Thereafter, the core 116 generates corresponding error correction code data corresponding to each of the variable division data. That is, the core 116 according to the present embodiment reduces the size of the ECC codeword to a size smaller than the existing subpage size by applying the variable ECC coding method to one or more compressed data. Accordingly, the core 116 can generate error-correcting code data by dividing the data to be written into a smaller area than the existing area, thereby fundamentally reducing the probability of occurrence of the contrast error when the ECC codeword of the previous size is used . In addition, the error correction process can be performed more smoothly when an error occurs.

코어(116)는 쓰기 대상 데이터의 압축률에 기초하여 가변 단위의 크기를 산출한다. 예컨대, 코어(116)는 쓰기 대상 데이터의 압축률이 높을수록 가변 단위의 크기를 감소시켜 더 작은 크기의 가변 분할 데이터를 생성할 수 있다.The core 116 calculates the size of the variable unit based on the compression rate of the write object data. For example, as the compression rate of the data to be written is higher, the core 116 may reduce the size of the variable unit and generate variable division data of a smaller size.

코어(116)는 가변 분할 데이터 및 가변 분할 데이터별 대응 에러 정정 코드 데이터를 조합한 조합 데이터를 생성한다.The core 116 generates combined data obtained by combining variable division data and corresponding error correction code data for each variable division data.

이하, 코어(116)가 가변 분할 데이터 및 가변 분할 데이터별 대응 에러 정정 코드 데이터를 조합한 조합 데이터를 생성하는 방법에 대해 설명하도록 한다.Hereinafter, a method for generating the combination data in which the core 116 combines the variable division data and the corresponding error correction code data for each variable division data will be described.

코어(116)는 하나 이상의 압축 데이터별로 생성된 가변 분할 데이터 중 어느 하나의 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 쓰기 대상 데이터에 대응되는 스페어(Spare) 영역에 저장한다. 이때, 어느 하나의 가변 분할 데이터는 생성된 가변 분할 데이터 중 쓰기 대상 데이터 공간 내 저장되는 순서가 가장 앞서는 가변 분할 데이터인 것이 바람직하나 반드시 이에 한정되는 것은 아니다.The core 116 stores the corresponding error correction code data corresponding to any one of the variable division data generated by the one or more pieces of compressed data in a spare area corresponding to the data to be written. At this time, it is preferable that any one of the variable divisional data is the variable divisional data which is stored in the write object data space among the generated variable divisional data which is the most preceding, but is not limited thereto.

코어(116)는 어느 하나의 가변 분할 데이터를 제외한 다른 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 쓰기 대상 데이터 공간 내 하나 이상의 압축 데이터의 저장 영역을 제외한 추가 생성영역에 저장한다. 즉, 코어(116)는 가변형 ECC Coding 방법을 이용하여 기존 대비 추가로 생성되는 에러 정정 코드 데이터에 대해서는 압축 과정을 이용하여 확보된 추가 생성영역에 저장한다.The core 116 stores the corresponding error correction code data corresponding to the variable division data other than any variable division data in the additional generation area excluding the storage area of the one or more compressed data in the data space to be written. That is, the core 116 stores the error correction code data generated by the variable ECC coding method in the additional generation area secured by using the compression process.

일반적으로 기존의 에러 정정 코드 데이터를 위해 할당된 스페어(Spare) 영역의 경우 페이지를 구성하는 복수의 서브 페이지에 대응되는 에러 정정 코드 데이터가 저장될 수 있을 정도의 크기를 갖는다. 이에, 종래의 저장 구조 방식에 따라서는 항상 정해진 양의 에러 정정 코드 데이터가 생성될 수밖에 없었다. 본 실시예의 경우 쓰기 대상 데이터의 압축으로 인해 확보된 추가 생성영역을 에러 정정 코드 데이터가 저장되는 추가적인 ECC 영역으로 제공함으로써 쓰기 대상 데이터에 대해서 기존 대비 더 많은 양의 에러 정정 코드 데이터를 생성하여 기재할 수 있도록 하였다.Generally, in the case of a spare area allocated for existing error correction code data, the size of the spare area is such that error correction code data corresponding to a plurality of sub pages constituting a page can be stored. Therefore, according to the conventional storage structure method, a predetermined amount of error correction code data has always been generated. In this embodiment, by providing the additional generation area secured by the compression of the write target data in the additional ECC area where the error correction code data is stored, a larger amount of error correction code data is generated and recorded in the write target data .

출력부(118)는 코어(116)로부터 생성된 조합 데이터를 대응되는 낸드 플래시 메모리(140)에 할당하는 역할을 수행한다.The output unit 118 functions to allocate the combined data generated from the core 116 to the corresponding NAND flash memory 140. [

버퍼 관리부(120)는 플래시 컨트롤러(110)와 DRAM(130) 사이의 데이터를 송수신하는 역할을 수행한다.The buffer management unit 120 transmits and receives data between the flash controller 110 and the DRAM 130.

DRAM(130)은 플래시 컨트롤러(110)의 읽기/쓰기 동작 과정에서 발생하는 중간 데이터를 버퍼 관리부(120)를 이용하여 제공받고, 이를 임시로 저장하여 제공한다.The DRAM 130 receives the intermediate data generated during the read / write operation of the flash controller 110 by using the buffer management unit 120, and temporarily stores and provides the intermediate data.

낸드 플래시 메모리(140)는 전기적으로 데이터를 지우고 다시 기록할 수 있는 비휘발성 컴퓨터 기억 장치를 말한다. 낸드 플래시 메모리(140)는 데이터 삭제 연산의 기본 단위인 복수의 블록으로 구성되며, 블록은 읽기 및 쓰기 연산의 기본 단위인 복수의 페이지로 구성된다.The NAND flash memory 140 is a nonvolatile computer memory device capable of electrically erasing and rewriting data. The NAND flash memory 140 is composed of a plurality of blocks which are basic units of the data erase operation, and the blocks are composed of a plurality of pages which are basic units of read and write operations.

도 2는 본 실시예에 따른 코어를 개략적으로 나타낸 블럭 구성도이다.2 is a block diagram schematically showing a core according to the present embodiment.

도 2에 도시하듯이, 본 실시예에 따른 코어(116)는 압축기(200) 및 ECC 생성부(210)를 포함한다.2, the core 116 according to the present embodiment includes a compressor 200 and an ECC generation unit 210. [

압축기(200)는 호스트 인터페이스부(112)로부터 수신한 쓰기 대상 데이터에 대해서 압축을 수행하여 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 생성한다. 이때, 쓰기 대상 데이터의 압축률은 쓰기 대상 데이터의 크기에 따라 결정된다. 예컨대, 쓰기 대상 데이터는 압축 과정을 통해 생성된 하나 이상의 압축 데이터를 쓰기 대상 데이터를 위해 할당된 공간 내 저장 시 적어도 하나의 서브 페이지의 크기만큼의 추가 생성영역이 확보될 수 있을 정도의 크기로 압축되는 것이 바람직하나 반드시 이에 한정되는 것은 아니다.The compressor 200 compresses the write target data received from the host interface unit 112 to generate one or more pieces of compressed data divided in units of subpages. At this time, the compression rate of the write target data is determined according to the size of the write target data. For example, when the one or more compressed data generated through the compression process is stored in the allocated space for the write target data, the write target data is compressed to a size such that an additional generated area corresponding to the size of at least one sub- But is not limited thereto.

ECC 생성부(210)는 하나 이상의 압축 데이터에 대해서 가변형 ECC Coding 방법을 적용한다.The ECC generation unit 210 applies a variable ECC coding method to one or more compressed data.

ECC 생성부(210)는 가변형 ECC Coding 방법에 따라 하나 이상의 압축 데이터를 가변 단위의 크기로 분할하여 압축 데이터별 가변 분할 데이터를 생성하고, 이를 새로운 ECC Codeword로서 조정한다. 즉, ECC 생성부(210)는 하나 이상의 압축 데이터에 대해서 가변형 ECC Coding 방법을 적용함으로써 ECC Codeword의 크기를 기존의 서브 페이지 크기 대비 작은 크기로 감소시킨다. 이때, ECC 생성부(210)는 쓰기 대상 데이터의 압축률에 기초하여 가변 단위의 크기를 산출한다.The ECC generation unit 210 divides one or more compressed data into sizes of variable units according to a variable ECC coding method to generate variable divided data for each compressed data, and adjusts the divided data as a new ECC codeword. That is, the ECC generation unit 210 reduces the size of the ECC codeword to a size smaller than the existing subpage size by applying the variable ECC coding method to one or more compressed data. At this time, the ECC generation unit 210 calculates the size of the variable unit based on the compression rate of the write object data.

ECC 생성부(210)는 가변 분할 데이터별로 각각 대응되는 대응 에러 정정 코드 데이터를 생성한다.The ECC generation unit 210 generates corresponding error correction code data corresponding to each of the variable division data.

ECC 생성부(210)는 가변 분할 데이터 및 가변 분할 데이터별 대응 에러 정정 코드 데이터를 조합한 조합 데이터를 생성한다. ECC 생성부(210)는 압축 데이터별로 생성된 가변 분할 데이터 중 어느 하나의 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 쓰기 대상 데이터에 대응되는 스페어 영역에 저장하고, 어느 하나의 가변 분할 데이터를 제외한 다른 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 추가 생성영역에 저장하여 조합 데이터를 생성한다. 즉, ECC 생성부(210)는 가변형 ECC Coding 방법을 이용하여 기존 대비 추가로 생성되는 에러 정정 코드 데이터에 대해서는 압축 과정을 이용하여 확보된 추가 생성영역에 저장한다.The ECC generation unit 210 generates combined data obtained by combining variable division data and corresponding error correction code data for each variable division data. The ECC generation unit 210 stores corresponding error correction code data corresponding to any one variable division data among the variable division data generated for each compression data in a spare area corresponding to the data to be written and outputs any one of the variable division data Corresponding error correcting code data corresponding to the other variable divided data excepting is stored in the additional generating area to generate combined data. That is, the ECC generator 210 stores the error correction code data generated by the variable ECC coding method in the additional generation area secured by using the compression process.

도 3은 본 실시예에 따른 에러 정정 코드 생성방법을 설명하기 위한 순서도이다.3 is a flowchart for explaining a method of generating an error correction code according to the present embodiment.

본 실시예에 따른 에러 정정 코드 생성방법은 먼저, 저장장치(100)가 호스트로부터 입력 데이터를 수신하고, 입력 데이터를 페이지 단위로 분할하여 적어도 하나의 쓰기 대상 데이터를 생성하는 과정으로부터 시작된다(S302).The method for generating an error correction code according to the present embodiment starts with a process in which the storage device 100 receives input data from a host and divides the input data into page units to generate at least one write target data (S302 ).

저장장치(100)는 쓰기 대상 데이터를 압축하여 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 생성한다(S304). 단계 S304에서 쓰기 대상 데이터의 압축률은 쓰기 대상 데이터의 크기에 따라 결정된다. 예컨대, 쓰기 대상 데이터는 압축 과정을 통해 생성된 하나 이상의 압축 데이터를 쓰기 대상 데이터를 위해 할당된 공간 내 저장 시 적어도 하나의 서브 페이지의 크기만큼의 여유 공간(=추가 생성영역)이 확보될 수 있을 정도의 크기로 압축되는 것이 바람직하나 반드시 이에 한정되는 것은 아니다.The storage device 100 compresses the data to be written and generates one or more pieces of compressed data divided into subpage units (S304). In step S304, the compression rate of the write target data is determined according to the size of the write target data. For example, when one or more compressed data generated through the compression process is stored in a space allocated for write data, a free space (= additional creation area) corresponding to the size of at least one sub-page can be secured , But is not limited thereto.

저장장치(100)는 단계 S304에서 생성된 하나 이상의 압축 데이터 각각에 대하여 가변형 ECC Coding 방법을 적용하여 각각 가변 단위의 크기로 분할하고, 이를 통해, 압축 데이터별 가변 분할 데이터를 생성한다(S306). 단계 S306에서 저장장치(100)는 하나 이상의 압축 데이터에 대해서 각각 가변형 ECC Coding 방법을 적용함으로써 ECC Codeword의 크기를 기존의 서브 페이지 크기 대비 작은 크기로 감소시킨다.In step S306, the storage apparatus 100 divides the one or more compressed data generated in step S304 into variable-size units by applying a variable ECC coding method to each variable data segment. In step S306, the storage apparatus 100 reduces the size of the ECC codeword to a size smaller than the size of the existing subpage by applying the variable ECC coding method to one or more compressed data.

저장장치(100)는 단계 S306에서 생성된 가변 분할 데이터별로 각각 대응되는 대응 에러 정정 코드 데이터를 생성한다(S308).The storage device 100 generates corresponding error correction code data corresponding to the variable division data generated in step S306 (S308).

저장장치(100)는 단계 S306에서 생성된 가변 분할 데이터 및 단계 S308에서 생성된 가변 분할 데이터별 대응 에러 정정 코드 데이터를 조합한 조합 데이터를 생성하고, 생성된 조합 데이터를 대응되는 낸드 플래시 메모리에 할당한다(S310). 단계 S310에서 저장장치(100)는 압축 데이터별로 생성된 가변 분할 데이터 중 어느 하나의 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 쓰기 대상 데이터에 대응되는 스페어 영역에 저장하고, 어느 하나의 가변 분할 데이터를 제외한 다른 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 추가 생성영역에 저장하여 조합 데이터를 생성한다.The storage device 100 generates the combination data in which the variable division data generated in step S306 and the corresponding error correction code data for each variable division data generated in step S308 are combined and assigns the generated combination data to the corresponding NAND flash memory (S310). In step S310, the storage device 100 stores the corresponding error correction code data corresponding to any one variable division data among the variable division data generated for each compressed data in the spare area corresponding to the data to be written, Corresponding error correcting code data corresponding to other variable divided data other than data is stored in the additional generating area to generate combined data.

여기서, 단계 S302 내지 S310은 앞서 설명된 저장장치(100)의 각 구성요소의 동작에 대응되므로 더 이상의 상세한 설명은 생략하도록 한다.Here, steps S302 to S310 correspond to the operations of the respective components of the storage device 100 described above, so that further detailed description will be omitted.

도 4는 본 실시예에 따른 코어가 에러 정정 코드를 생성하는 제1 방법을 예시한 예시도이다. 한편, 도 4에서는 코어(116)에 의해 생성된 에러 정정 코드가 스페어 영역 및 추가 생성영역에 나누어 기재되는 경우를 예시하였다.4 is an exemplary diagram illustrating a first method for generating an error correction code according to the present embodiment. On the other hand, FIG. 4 exemplifies the case where the error correction codes generated by the core 116 are divided into the spare area and the additional generating area.

도 4에서 도시하듯이, 본 실시예에 따른 코어가 에러 정정 코드를 생성하는 제1 방법은 ① 내지 ③의 단계로 이루어진다.As shown in FIG. 4, the first method for generating the error correction code according to the present embodiment includes the steps (1) to (3).

단계 ①에서 코어(116)는 호스트 인터페이스부(112)로부터 쓰기 대상 데이터를 수신한다. 도 4에서는 페이지가 8KB 크기를 갖는 것으로 예시하였으며, 이에, 코어(116)가 호스트 인터페이스부(112)로부터 수신하는 쓰기 대상 데이터 또한 8KB의 크기를 갖는 것으로 예시하였다.In step (1), the core 116 receives data to be written from the host interface unit 112. 4 illustrates that the page has a size of 8 KB, and the data to be written received from the host interface unit 112 by the core 116 has a size of 8 KB.

단계 ②에서 코어(116)는 쓰기 대상 데이터를 압축하여 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 생성한다. 도 4에서 코어(116)는 쓰기 대상 데이터를 압축하여 6KB 즉, 2KB의 서브 페이지 단위로 분할된 3개의 압축 데이터를 생성한다. 이 경우, 기존의 쓰기 대상 데이터를 위해 할당된 공간 내에 서브 페이지의 크기(=2KB)만큼의 추가 생성영역이 확보된다.In step (2), the core 116 compresses the data to be written and generates one or more pieces of compressed data divided in units of subpages. 4, the core 116 compresses the data to be written and generates three pieces of compressed data divided into sub-page units of 6 KB, that is, 2 KB. In this case, an additional creation area for the size of the subpage (= 2 KB) is secured in the space allocated for the existing write target data.

단계 ③에서 코어(116)는 3개의 압축 데이터에 대해서 각각 가변형 ECC Coding 방법을 적용하여 에러 정정 코드 데이터를 생성한다. 도 4에서 코어(116)는 3개의 압축 데이터에 대해서 각각 가변 단위의 크기(=압축 데이터의 1/2 크기)로 분할하여, 압축 데이터별 복수 개의 가변 분할 데이터를 생성하고, 이를 통해 새로운 ECC Codeword를 생성한다. 즉, 코어(116)는 3개의 압축 데이터에 대해서 각각 가변형 ECC Coding 방법을 적용함으로써 기존의 서브 페이지 크기 대비 1/2 크기로 감소된 ECC Codeword를 생성한다. 이후, 코어(116)는 가변 분할 데이터별 각각 대응되는 대응 에러 정정 코드 데이터를 생성한다. 도 4에서는 압축 데이터별 2개의 가변 분할 데이터가 생성되며, 이에 대응되는 총 6개의 대응 에러 정정 코드 데이터가 생성된다.In step 3, the core 116 applies the variable ECC coding method to each of the three compressed data to generate error correction code data. 4, the core 116 divides each of the three pieces of compressed data into a variable unit size (= half the size of the compressed data), generates a plurality of variable division data for each piece of compressed data, and generates a new ECC codeword . That is, the core 116 generates the ECC codeword, which is reduced to 1/2 size of the existing subpage size, by applying the variable ECC coding method to each of the three compressed data. Thereafter, the core 116 generates corresponding error correction code data for each of the variable division data. In Fig. 4, two variable divided data for each compressed data are generated, and a total of six corresponding error correcting code data are generated.

단계 ③에서 코어(116)는 가변 분할 데이터 및 가변 분할 데이터별 대응 에러 정정 코드 데이터를 조합한 조합 데이터를 생성한다. 한편, 본 실시예에 따른 에러 정정 코드를 생성하는 제1 방법은 코어(116)에 의해 생성된 에러 정정 코드가 스페어 영역 및 추가 생성영역에 나누어 기재된다. 즉, 단계 ③에서 코어(116)는 3개의 압축 데이터별로 생성된 복수 개의 가변 분할 데이터 중 첫 번째 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 쓰기 대상 데이터에 대응되는 스페어 영역에 저장하고, 두 번째 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 추가 생성영역에 저장하여 조합 데이터를 생성한다.In step 3 (3), the core 116 generates the combination data in which the variable division data and the corresponding error correction code data for each variable division data are combined. On the other hand, in the first method of generating the error correction code according to the present embodiment, the error correction code generated by the core 116 is divided into the spare area and the additional generating area. That is, in step 3, the core 116 stores the corresponding error correction code data corresponding to the first variable division data among the plurality of variable division data generated for each of the three pieces of compression data in the spare area corresponding to the data to be written, And the corresponding error correction code data corresponding to the i < th > variable division data is stored in the additional generation area to generate combined data.

도 5는 본 실시예에 따른 코어가 에러 정정 코드를 생성하는 제2 방법을 예시한 예시도이다. 5 is an exemplary diagram illustrating a second method of generating an error correction code according to the present embodiment.

도 5에 도시하듯이, 본 실시예에 따른 코어가 에러 정정 코드를 생성하는 제2 방법은 제1 방법과 마찬가지로 ① 내지 ③의 단계를 수행하여 에러 정정 코드 데이터를 생성한다. 다만, 제2 방법의 경우 코어(116)에 의해 생성된 에러 정정 코드가 스페어 영역이 아닌 추가 생성영역에만 저장된다. 즉, 단계 ③에서 코어(116)는 3개의 압축 데이터별로 생성된 복수 개의 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 단계 ②의 압축 과정을 통해 확보된 추가 생성영역에 저장하여 조합 데이터를 생성한다. 이 경우, 스페어 영역에 대응되는 데이터에 대한 인코딩 시간 및 디코딩 시간을 감소시킬 수 있는 추가 효과가 있다.As shown in FIG. 5, the second method in which the core according to the present embodiment generates an error correcting code generates error correcting code data by performing the steps 1 to 3 in the same manner as the first method. However, in the case of the second method, the error correction code generated by the core 116 is stored only in the additional generation area, not in the spare area. That is, in step 3, the core 116 stores corresponding error correction code data corresponding to a plurality of variable division data generated for each of the three pieces of compressed data in an additional generation area obtained through the compression process of step 2, do. In this case, there is an additional effect of reducing the encoding time and decoding time for data corresponding to the spare area.

본 실시예에 따른 코어(116)는 쓰기 대상 데이터의 압축률에 따라 제1 방법 또는 제2 방법을 선택적으로 이용하여 에러 정정 코드 데이터를 생성할 수 있다. 즉, 코어(116)는 쓰기 대상 데이터의 압축률에 따라 확보되는 추가 생성영역의 크기가 기 설정된 최대 크기 이상인 경우(=감소된 ECC Codeword에 기초하여 추가 생성되는 에러 정정 코드 데이터를 모두 수용 가능한 정도의 크기) 제2 방법에 따라 에러 정정 코드 데이터를 기재하여 제공할 수 있다. 또한, 코어(116)는 쓰기 대상 데이터의 압축률에 따라 확보되는 추가 생성영역의 크기가 기 설정된 최대 크기 미만인 경우 제1 방법에 따라 에러 정정 코드 데이터를 기재하여 제공할 수 있다. 한편, 코어(116)는 제1 방법 또는 제2 방법을 이용하여 에러 정정 코드 데이터를 생성 시 이를 구별하기 위한 플래그 정보를 조합 데이터 내 추가로 생성하여 기재함으로써 이후 디코딩 과정 시 야기될 수 있는 문제점을 사전에 차단한다.The core 116 according to the present embodiment can generate error correction code data selectively using the first method or the second method depending on the compression rate of the write object data. That is, when the size of the additional generation area secured according to the compression rate of the write object data is equal to or larger than a preset maximum size (= the error correction code data that is additionally generated based on the reduced ECC codeword, Size) According to the second method, error correction code data can be described and provided. In addition, the core 116 may write and provide error correction code data according to the first method when the size of the additional generation area secured according to the compression rate of the write object data is less than a preset maximum size. On the other hand, the core 116 generates flag information for distinguishing the error correction code data when generating the error correction code data by using the first method or the second method and additionally generates and records the flag information in the combination data, thereby causing a problem Block in advance.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The foregoing description is merely illustrative of the technical idea of the present invention, and various changes and modifications may be made by those skilled in the art without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are intended to illustrate rather than limit the scope of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments. The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents should be construed as falling within the scope of the present invention.

100: 저장장치 110: 플래시 컨트롤러
112: 호스트 인터페이스부 114: 코어부
116: 코어 118: 출력부
120: 버퍼 관리부 130: DRAM
141: 낸드 플래시 메모리 200: 압축기
210: ECC 생성부
100: storage device 110: flash controller
112: host interface unit 114: core unit
116: core 118: output section
120: buffer management unit 130: DRAM
141: NAND flash memory 200: compressor
210: ECC generator

Claims (5)

낸드 플래시 메모리 기반 저장장치의 에러 정정 코드 생성방법에 있어서,
호스트로부터 입력 데이터를 수신하고, 상기 입력 데이터를 페이지 단위로 분할하여 적어도 하나의 쓰기 대상 데이터를 생성하는 수신단계;
상기 쓰기 대상 데이터를 압축하여 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 생성하는 압축단계;
상기 압축 데이터를 상기 쓰기 대상 데이터의 압축률에 기초하여 산출된 가변 단위의 크기로 분할하여 에러 정정 코드(ECC: Error Correction Code) 데이터 생성을 위한 단위(ECC Codeword)의 가변 분할 데이터를 생성하고, 상기 가변 분할 데이터별로 각각 대응되는 대응 에러 정정 코드 데이터를 생성하는 생성단계; 및
상기 가변 분할 데이터 및 상기 가변 분할 데이터별 대응 에러 정정 코드 데이터를 조합한 조합 데이터를 생성하고, 상기 조합 데이터를 대응되는 낸드 플래시 메모리에 할당하는 할당단계
를 포함하는 것을 특징으로 하는 에러 정정 코드 생성방법.
A method of generating an error correction code for a NAND flash memory based storage device,
A receiving step of receiving input data from a host and dividing the input data into page units to generate at least one data to be written;
A compressing step of compressing the write target data to generate one or more pieces of compressed data divided into subpage units;
Dividing the compressed data into sizes of variable units calculated based on a compression rate of the write target data to generate variable division data of a unit for generating error correction code (ECC) data (ECC Codeword) A generation step of generating corresponding error correction code data corresponding to each of the variable division data; And
An allocation step of generating combination data in which the variable division data and the corresponding error correction code data for each variable division data are combined and allocating the combination data to a corresponding NAND flash memory
And generating an error correction code.
제 1항에 있어서,
상기 생성단계는,
상기 쓰기 대상 데이터의 압축률이 기 설정된 최저 압축률 이상인 경우 상기 가변 분할 데이터를 생성하는 단계를 수행하는 것을 특징으로 하는 에러 정정 코드 생성방법.
The method according to claim 1,
Wherein the generating comprises:
And generating the variable division data when the compression rate of the data to be written is equal to or greater than a predetermined minimum compression rate.
삭제delete 제 1항에 있어서,
상기 할당단계는,
상기 가변 분할 데이터 중 어느 하나의 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 상기 쓰기 대상 데이터에 대응되는 스페어(Spare) 영역에 저장하고, 상기 어느 하나의 가변 분할 데이터를 제외한 다른 가변 분할 데이터에 대응되는 대응 에러 정정 코드 데이터를 상기 쓰기 대상 데이터 공간 내 상기 하나 이상의 압축 데이터의 저장 영역을 제외한 추가 생성영역에 저장하여 상기 조합 데이터를 생성하는 것을 특징으로 하는 에러 정정 코드 생성방법.
The method according to claim 1,
Wherein the allocating step comprises:
Wherein the variable error correction code data corresponding to one of the variable divisional data is stored in a spare area corresponding to the data to be written and the variable divisional data other than the variable divisional data And the corresponding combination error correction code data is stored in an additional generation area excluding the storage area of the at least one compressed data in the writing object data space to generate the combination data.
낸드 플래시 메모리 기반 저장장치에 있어서,
호스트로부터 입력 데이터를 수신하고, 상기 입력 데이터를 페이지 단위로 분할하여 적어도 하나의 쓰기 대상 데이터를 제공하는 호스트 인터페이스부;
복수의 코어를 구비하며, 각 코어는 상기 쓰기 대상 데이터를 압축하여 서브 페이지 단위로 분할된 하나 이상의 압축 데이터를 생성하고, 상기 압축 데이터를 상기 쓰기 대상 데이터의 압축률에 기초하여 산출된 가변 단위의 크기로 분할하여 에러 정정 코드(ECC: Error Correction Code) 데이터 생성을 위한 단위(ECC Codeword)의 가변 분할 데이터를 생성하고, 상기 가변 분할 데이터별로 각각 대응되는 대응 에러 정정 코드 데이터를 생성하고, 상기 가변 분할 데이터 및 상기 가변 분할 데이터별 대응 ECC 데이터를 조합한 조합 데이터를 생성하는 코어부; 및
상기 조합 데이터를 대응되는 낸드 플래시 메모리에 할당하는 출력부
를 포함하는 것을 특징으로 하는 저장장치.







A NAND flash memory based storage device,
A host interface unit for receiving input data from a host, dividing the input data into pages, and providing at least one data to be written;
Each of the cores compresses the data to be written to generate one or more pieces of compressed data divided into subpage units, and the compressed data is divided into a variable unit size calculated on the basis of a compression ratio of the data to be written , Generates variable division data of a unit (ECC Codeword) for generating error correction code (ECC) data, generates corresponding error correction code data corresponding to each of the variable division data, A core unit for generating combination data in which data and corresponding ECC data for each variable division data are combined; And
An output unit for assigning the combination data to a corresponding NAND flash memory
≪ / RTI >







KR1020150046782A 2015-04-02 2015-04-02 Method and Apparatus for Creating Error Correction Code KR101711056B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150046782A KR101711056B1 (en) 2015-04-02 2015-04-02 Method and Apparatus for Creating Error Correction Code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150046782A KR101711056B1 (en) 2015-04-02 2015-04-02 Method and Apparatus for Creating Error Correction Code

Publications (2)

Publication Number Publication Date
KR20160118526A KR20160118526A (en) 2016-10-12
KR101711056B1 true KR101711056B1 (en) 2017-02-28

Family

ID=57173498

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150046782A KR101711056B1 (en) 2015-04-02 2015-04-02 Method and Apparatus for Creating Error Correction Code

Country Status (1)

Country Link
KR (1) KR101711056B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562803B2 (en) 2020-10-23 2023-01-24 Samsung Electronics Co., Ltd. Memory device storing parity and memory system including the same

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102076624B1 (en) * 2018-12-06 2020-02-12 한국외국어대학교 연구산학협력단 Storage system based flash memory and error correcting method thereof
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005143668A (en) 2003-11-12 2005-06-09 Olympus Corp Capsule endoscope

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10191272A (en) * 1996-12-20 1998-07-21 Kokusai Electric Co Ltd Multiplex transmitting method and its device
KR102081980B1 (en) * 2012-10-08 2020-02-27 삼성전자 주식회사 Method for performing write operation or read operation in memory system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005143668A (en) 2003-11-12 2005-06-09 Olympus Corp Capsule endoscope

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562803B2 (en) 2020-10-23 2023-01-24 Samsung Electronics Co., Ltd. Memory device storing parity and memory system including the same

Also Published As

Publication number Publication date
KR20160118526A (en) 2016-10-12

Similar Documents

Publication Publication Date Title
US10521292B2 (en) Error correction code unit, self-test method and associated controller applied to flash memory device for generating soft information
US8560926B2 (en) Data writing method, memory controller and memory storage apparatus
TWI514139B (en) Physical page, logical page, and codeword correspondence
US20140032992A1 (en) Memory controller, semiconductor memory system, and memory control method
CN107678695B (en) Selecting redundant storage configurations based on available memory space
US9336081B2 (en) Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access
US20150019933A1 (en) Memory controller, storage device, and memory control method
US10062418B2 (en) Data programming method and memory storage device
US9274706B2 (en) Data management method, memory control circuit unit and memory storage apparatus
US9208021B2 (en) Data writing method, memory storage device, and memory controller
WO2008145070A1 (en) Flash memory data read/write processing method
TW201545167A (en) Method of handling error correcting code in non-volatile memory and non-volatile storage device using the same
US9720609B1 (en) Data protecting method, memory control circuit unit and memory storage device
KR102628009B1 (en) Memory system for partial page compression
US9430327B2 (en) Data access method, memory control circuit unit and memory storage apparatus
KR101711056B1 (en) Method and Apparatus for Creating Error Correction Code
JP2020149195A (en) Memory system
CN109491828B (en) Decoding method, memory storage device and memory control circuit unit
US10997067B2 (en) Data storing method, memory controlling circuit unit and memory storage device
TWI732642B (en) Data writing method, memory control circuit unit and memory storage apparatus
US10713160B1 (en) Data writing method, memory control circuit unit and memory storage device
US9941907B2 (en) Memory management method, memory storage device and memory control circuit unit
CN107608817B (en) Decoding method, memory storage device and memory control circuit unit
CN112799874A (en) Memory control method, memory storage device and memory control circuit unit
CN107239224B (en) Data protection method, memory control circuit unit and memory storage device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200213

Year of fee payment: 4