KR101367351B1 - System and method of distributive ecc processing - Google Patents

System and method of distributive ecc processing Download PDF

Info

Publication number
KR101367351B1
KR101367351B1 KR1020137007541A KR20137007541A KR101367351B1 KR 101367351 B1 KR101367351 B1 KR 101367351B1 KR 1020137007541 A KR1020137007541 A KR 1020137007541A KR 20137007541 A KR20137007541 A KR 20137007541A KR 101367351 B1 KR101367351 B1 KR 101367351B1
Authority
KR
South Korea
Prior art keywords
ecc
sub
block
data
processing
Prior art date
Application number
KR1020137007541A
Other languages
Korean (ko)
Other versions
KR20130054385A (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
Priority claimed from US12/882,357 external-priority patent/US8392807B2/en
Application filed by 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20130054385A publication Critical patent/KR20130054385A/en
Application granted granted Critical
Publication of KR101367351B1 publication Critical patent/KR101367351B1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1555Pipelined decoder implementations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

분산형 ECC 동작들을 수행하기 위한 시스템들 및 방법들이 개시된다. 본 발명에 따른 방법은, 메모리 디바이스의 제어기에서, 데이터 블록과 상기 데이터 블록에 대한 메인 에러 정정 코딩(ECC) 데이터를 포함하는 데이터를 수신하는 단계를 포함한다. 데이터 블록은 데이터의 제 1 서브-블록과 상기 제 1 서브-블록에 대응하는 제 1 ECC 데이터를 포함한다. 상기 방법은 상기 메인 ECC 데이터를 이용하여 상기 데이터 블록을 프로세싱하도록 데이터 블록 ECC 동작을 개시하는 단계 및 상기 제 1 ECC 데이터를 이용하여 상기 제 1 서브-블록을 프로세싱하도록 서브-블록 ECC 동작을 개시하는 단계를 포함한다. 또한, 상기 방법은 상기 서브-블록 ECC 동작의 결과에 기초하여 상기 데이터 블록 ECC 동작의 에러 위치 검색을 선택적으로 개시하는 단계를 포함한다. Systems and methods for performing distributed ECC operations are disclosed. The method according to the invention comprises receiving, at a controller of a memory device, data comprising a data block and main error correction coding (ECC) data for the data block. The data block includes a first sub-block of data and first ECC data corresponding to the first sub-block. The method includes initiating a data block ECC operation to process the data block using the main ECC data and initiating a sub-block ECC operation to process the first sub-block using the first ECC data. Steps. The method also includes selectively initiating an error location search of the data block ECC operation based on a result of the sub-block ECC operation.

Description

분산형 ECC 프로세싱 시스템 및 방법{SYSTEM AND METHOD OF DISTRIBUTIVE ECC PROCESSING}Distributed ECC Processing System and Method {SYSTEM AND METHOD OF DISTRIBUTIVE ECC PROCESSING}

일반적으로 본 발명은 에러 정정 코딩(ECC) 프로세싱에 관한 것이다. In general, the present invention relates to error correction coding (ECC) processing.

데이터를 메모리에 기입하는 프로세스 동안, 데이터는 종종 여분의 비트들(패리티 비트들)로 인코딩되어 코드워드를 형성한다. 노이즈의 존재로 인하여 코드워드를 나타내는 비트들 중 일부가 변화될 수 있으며, 에러들로 인해 원래의 코드워드가 오염될 수 있다. 코드워드가 메모리로부터 판독되는 때, 에러 정정 코딩(ECC)을 이용하여 에러들을 식별 및 정정하는데 디코더가 이용될 수 있다. 예를 들면, 비트 에러들이 상관되지 않는(uncorrelated) 경향이 있는 어플리케이션들에서는, Bose-Chaudhuri-Hocquenghem(BCH) ECC 체계들이 이용된다. ECC 체계의 에러 정정 능력은 코드워드의 길이가 증가함에 따라 증가하는 경향이 있다. 결과적으로, 데이터 저장 시스템과 통신 디바이스에 구현되는 ECC 체계들은 더 긴 코드워드들을 이용하는 경향이 있다. During the process of writing data to memory, the data is often encoded into extra bits (parity bits) to form a codeword. Some of the bits representing the codeword may change due to the presence of noise, and errors may corrupt the original codeword. When a codeword is read from memory, a decoder can be used to identify and correct errors using error correction coding (ECC). For example, in applications where bit errors tend to be uncorrelated, Bose-Chaudhuri-Hocquenghem (BCH) ECC schemes are used. The error correction capability of the ECC scheme tends to increase as the length of the codeword increases. As a result, ECC schemes implemented in data storage systems and communication devices tend to use longer codewords.

수신된 데이터의 에러들을 보정하기 위하여 BCH 디코딩은 다수개의 연속적인 스테이지들에서 수행될 수 있다. 예를 들어, BCH 디코더는 에러들을 포함할 수도 있는 수신된 코드워드에 대한 신드롬 구성요소들(syndrome components)을 생성할 수 있다. BCH 디코더는 예컨대, 에러 위치 다항식(error location polynomial)과 같은 키 방정식(key equation)을 생성할 수 있는바, 이는 계산된 신드롬들에 기초하여 생성될 수 있으며 그리고 수신된 코드워드에서 검출된 다수의 에러들을 나타낼 수도 있다. 수신된 코드워드 내에서의 검출된 에러들의 위치들은, 가령, 치엔 검색(chien search) 등과 같은 이터레이티브 프로세스를 통하여 키 방정식의 루트(roots)에 기초하여 판별될 수 있다. 일반적으로, 치엔 검색 프로세스는 수신된 코드워드의 각각의 값에 대하여 순차적으로 수행되기 때문에, 코드워드를 프로세싱하는데 걸리는 시간의 양은 코드워드의 길이에 비례할 수 있다. 코드워드의 길이가 증가함에 따라, 치엔 검색 프로세스에 의해서 야기되는 지연들은, ECC 데이터 정정의 속도에 제한을 가할 수 있다. BCH decoding may be performed in multiple successive stages to correct errors in the received data. For example, the BCH decoder may generate syndrome components for the received codeword that may include errors. The BCH decoder can generate a key equation, such as, for example, an error location polynomial, which can be generated based on the calculated syndromes and can detect a number of detected in the received codeword. It may indicate errors. The locations of the detected errors within the received codeword can be determined based on the roots of the key equation, for example through an iterative process such as a chien search or the like. In general, since the Chien search process is performed sequentially for each value of the received codeword, the amount of time it takes to process the codeword may be proportional to the length of the codeword. As the length of the codeword increases, the delays caused by the Chien search process may limit the rate of ECC data correction.

분산형 ECC 프로세싱은 데이터 블록과 상기 데이터 블록의 하나 이상의 서브-블록들에 대한 동시 프로세싱을 포함한다. 서브-블록이 에러를 갖지 않는다고 판별되는 경우 혹은 서브-블록 프로세싱 동안에 정정될 수 있는 에러들을 갖는다고 판별되는 경우, 데이터 블록 프로세싱의 하나 이상의 부분들(portions)이 스킵(skip)될 수 있다. 예를 들면, 데이터 블록 프로세싱 동안에 수행되는 치엔 검색은, 서브-블록 프로세싱 동안에 정정되었던 서브-블록들을 스킵할 수 있다. 그 결과, 수신된 모든 코드워드에 대해서 풀(full) 치엔 검색을 수행하는 것에 비하여, ECC 코드워드를 프로세싱하는 평균 시간이 감소될 수 있다. Distributed ECC processing includes simultaneous processing of a data block and one or more sub-blocks of the data block. If it is determined that the sub-block has no errors or it is determined that there are errors that can be corrected during sub-block processing, one or more portions of the data block processing may be skipped. For example, a Chien search performed during data block processing may skip sub-blocks that were corrected during sub-block processing. As a result, compared to performing a full Chien search for all received codewords, the average time for processing ECC codewords can be reduced.

도1은 분산형 ECC 프로세싱을 구비한 에러 정정 코딩(ECC) 엔진을 갖는 데이터 저장 디바이스를 포함하는 시스템의 예시적인 일실시예의 블록도이다.
도2는 분산형 ECC 프로세싱을 수행하는 시스템의 예시적인 일실시예의 블록도이다.
도3은 파이프라인화된 분산형 ECC 프로세싱의 예시적인 일실시예에 대한 데이터 순서도이다.
도4a 내지 도4b는 분산형 ECC 프로세싱 시스템에서 서브-블록 프로세싱의 결과에 기초하여 데이터 블록 프로세싱 동안 치엔 검색을 제어하는 방법에 대한 예시적인 일실시예의 순서도이다.
도5는 분산형 ECC 프로세싱 방법의 예시적인 일실시예의 순서도이다.
1 is a block diagram of one exemplary embodiment of a system including a data storage device having an error correction coding (ECC) engine with distributed ECC processing.
2 is a block diagram of one exemplary embodiment of a system that performs distributed ECC processing.
3 is a data flow diagram for one exemplary embodiment of pipelined distributed ECC processing.
4A-4B are flowcharts of one exemplary embodiment of a method of controlling Chien search during data block processing based on the results of sub-block processing in a distributed ECC processing system.
5 is a flowchart of one exemplary embodiment of a distributed ECC processing method.

ECC 디코딩 동안 치엔 검색들(Chien searches) 등과 같은 선형 에러 위치 검색들을 이용하며 그리고 데이터 블록의 말미(end)에서 에러들이 발생하는 때에도 지연을 감소시킨 시스템들 및 방법들이 개시된다. 하나 이상의 에러들의 대략적인 위치가 판별될 수 있으며 그리고 판별된 위치로부터 에러 위치 검색이 시작될 수 있다. 대략적인 에러 위치는, 데이터 블록을 서브-블록들로 분할하고 그리고 각각의 서브-블록들에 대하여 분산형 ECC 프로세싱을 수행함으로써, 판별될 수 있다. 서브-블록들에 있는 에러들은 메인 블록을 위해 이용되는 ECC 보다 작은 ECC를 이용하여 발견될 수 있다. 적은 에러들을 갖는 서브-블록들은 서브-블록 프로세싱 동안에 정정될 수 있는바, 이는 메인 블록 에러 위치 검색을 수행하기 위한 싸이클들의 횟수를 감소시킬 수 있으며 따라서 지연을 감소시킬 수 있다. Systems and methods are disclosed that use linear error location searches such as Chien searches and the like during ECC decoding and reduce the delay even when errors occur at the end of the data block. The approximate location of one or more errors can be determined and an error location search can be started from the determined location. The approximate error location can be determined by dividing the data block into sub-blocks and performing distributed ECC processing for each sub-block. Errors in sub-blocks may be found using an ECC smaller than the ECC used for the main block. Sub-blocks with fewer errors can be corrected during sub-block processing, which can reduce the number of cycles for performing main block error location search and thus reduce delay.

도1을 참조하면, 분산형 에러 정정 코딩(ECC) 프로세싱을 수행하기 위한 시스템(100)의 특정 실시예가 도시되어 있다. 시스템(100)은 ECC 엔진(114)을 구비한 데이터 저장 디바이스(102)를 포함하며, ECC 엔진(114)은 분산형 ECC 프로세싱을 수행하도록 구성된다. 또한, 시스템(100)은 데이터 저장 디바이스(102)에 동작가능하게 연결된 호스트 디바이스(104)를 포함한다. Referring to FIG. 1, a particular embodiment of a system 100 for performing distributed error correction coding (ECC) processing is shown. System 100 includes a data storage device 102 having an ECC engine 114, which is configured to perform distributed ECC processing. The system 100 also includes a host device 104 operatively connected to the data storage device 102.

일실시예에서, 호스트 디바이스(104)는 데이터 저장 디바이스(102)와 통신하도록 구성되며 그리고 데이터 저장 디바이스(102)에 저장된 데이터에 대한 요청들을 전송하도록 구성된다. 또한, 호스트 디바이스(104)는 상기 요청들에 응답하여 데이터 저장 디바이스(102)에 의해서 제공되는 데이터를 수신하도록 구성된다. 예를 들면, 호스트 디바이스(104)는 모바일 전화기, 음악 혹은 비디오 재생기, 게임 콘솔, 전자책 리더기(reader), 개인용 정보 단말기(personal digital assistant: PDA), 랩탑 컴퓨터 혹은 노트북 컴퓨터 등과 같은 컴퓨터, 혹은 임의의 다른 전자 디바이스들 혹은 이들의 임의의 조합을 포함할 수 있다. In one embodiment, host device 104 is configured to communicate with data storage device 102 and is configured to send requests for data stored at data storage device 102. In addition, the host device 104 is configured to receive data provided by the data storage device 102 in response to the requests. For example, the host device 104 may be a mobile phone, music or video player, game console, e-book reader, personal digital assistant (PDA), laptop computer or notebook computer, or any other. Other electronic devices or any combination thereof.

데이터 저장 디바이스(102)는 제어기(110)와 메모리(112)를 포함한다. 제어기(110)는 메모리(112)를 관리하도록 구성되며 그리고 데이터 저장 디바이스(102)가 호스트 디바이스(104)에 동작가능하게 연결되는 때에 호스트 디바이스(104)와 통신할 수 있게 한다. 제어기(110)는 ECC 엔진(114)을 포함하며 그리고 메모리(112)로부터 판독된 데이터를 수신하고, 수신된 데이터를 ECC 엔진(114)에 제공하도록 구성될 수 있다. 제어기(110)는 가령, 저장 혹은 전송 동안에 발생한 하나 이상의 에러들에 대한 정정이 수행된 디코딩된 데이터와 같은, ECC 엔진(114)에 의해서 출력된 데이터를 회수(retrieve)하도록 구성될 수 있으며, 그리고 디코딩된 정정 데이터를 호스트 디바이스(104)로 제공하도록 구성될 수 있다. The data storage device 102 includes a controller 110 and a memory 112. The controller 110 is configured to manage the memory 112 and enables communication with the host device 104 when the data storage device 102 is operably connected to the host device 104. The controller 110 includes an ECC engine 114 and can be configured to receive data read from the memory 112 and provide the received data to the ECC engine 114. The controller 110 may be configured to retrieve data output by the ECC engine 114, such as decoded data, for example, where corrections to one or more errors that occurred during storage or transmission have been performed, and And may provide the decoded correction data to the host device 104.

메모리(112)는 데이터(가령, 사용자 데이터) 및 상기 데이터에 관련된 ECC 데이터(가령, 리던던트 데이터 혹은 "패리티") 등과 같은 정보를 저장한다. 예를 들어, 데이터는 메모리(112)에 저장되는 멀티미디어 파일의 데이터를 포함할 수 있으며, 그리고 상기 패리티는 데이터에 있는 에러들을 ECC 엔진(114)이 검출 및 정정할 수 있게 하는 리던던트 정보를 포함할 수 있다. 데이터와 이에 대응하는 ECC 데이터는 데이터 워드로서 함께 저장될 수도 있다. 메모리(112)는 비휘발성 메모리가 될 수도 있다. 예를 들면, 메모리(112)는 낸드 플래시 메모리 등과 같은 플래시 메모리가 될 수 있다. 일례로서, 데이터 저장 디바이스(102)는 시큐어 디지탈 SD® 카드(Secure Digital SD® card), 마이크로SD® 카드(a microSD® card), 미니SD™ 카드(델라웨어, 웰링턴에 위치한 SD-3C LLC의 상표), 멀티미디어카드™ 카드(MMC™ 카드)(버지니아 알링톤의 JEDEC 솔리드 스테이트 기술 협회(JEDEC Solid State Technology Association)의 상표), 혹은 컴팩플래시(CF)® 카드(캘리포니아 밀피타스의 샌디스크의 상표) 등과 같은 메모리 카드가 될 수 있다. 다른 일례로서, 데이터 저장 디바이스(102)는, 예시적인 일례로서 가령, eMMC®(버지니아 알링톤의 JEDEC 솔리드 스테이트 기술 협회의 상표)와 eSD 등과 같은 내장 메모리로서, 호스트 디바이스(104)와 연결되도록 구성될 수도 있다. The memory 112 stores information such as data (eg, user data) and ECC data (eg, redundant data or "parity") associated with the data. For example, the data may include data of a multimedia file stored in memory 112, and the parity may include redundant information that enables the ECC engine 114 to detect and correct errors in the data. Can be. The data and corresponding ECC data may be stored together as data words. The memory 112 may be a nonvolatile memory. For example, the memory 112 may be a flash memory such as a NAND flash memory. As an example, the data storage device 102 may be a Secure Digital SD® card, a microSD® card, a MiniSD ™ card (Delaware, Wellington, SD-3C LLC). Trademark), Multimedia Card ™ card (MMC ™ card) (trademark of JEDEC Solid State Technology Association, Arlington, VA), or CompactFlash® card (Sandisk, Milpitas, Calif.) Memory card). As another example, the data storage device 102 is configured to be coupled to the host device 104 as an illustrative example, such as eMMC® (trademark of the JEDEC Solid State Technology Association of Arlington, Virginia) and eSD, or the like. May be

대표적인 ECC 페이지(120)가 메모리(112)에 저장된다. ECC 페이지(120)는 제 1 서브-블록(SB1)(121), 제 2 서브-블록(SB2)(122), 제 3 서브-블록(SB3)(123) 및 제 4 서브-블록(SB4)(124)을 포함하는 데이터 블록(130)을 포함한다. 데이터 블록(130)은 또한, 가령, 제 1 서브-ECC 데이터(125), 제 2 서브-ECC 데이터(126), 제 3 서브-ECC 데이터(127), 및 제 4 서브-ECC 데이터(128)와 같은, 각각의 서브-블록들(121-124)에 관련된 ECC 데이터를 포함한다. 조합된 서브-블록들(121-124) 및 조합된 서브-ECC 데이터(125-128)를 구비한 데이터 블록(130) 이외에도, ECC 페이지(120)는 또한 데이터 블록(130)에 대응하는 ECC 데이터를 저장하는 패리티 블록(129)을 더 포함한다. Representative ECC pages 120 are stored in memory 112. The ECC page 120 includes a first sub-block (SB1) 121, a second sub-block (SB2) 122, a third sub-block (SB3) 123, and a fourth sub-block (SB4). It includes a data block 130 that includes 124. Data block 130 may also include, for example, first sub-ECC data 125, second sub-ECC data 126, third sub-ECC data 127, and fourth sub-ECC data 128. ECC data associated with each sub-blocks 121-124, such as; In addition to the data block 130 with the combined sub-blocks 121-124 and the combined sub-ECC data 125-128, the ECC page 120 also includes ECC data corresponding to the data block 130. The parity block 129 further stores.

ECC 엔진(114)은 분산형 ECC 프로세싱을 통하여 수신된 데이터 상에 ECC 디코딩 동작을 수행하도록 구성된다. 예를 들어, ECC 엔진(114)은 BCH 체계, 리드-솔로몬(Reed-Solomon) 체계 혹은 가령, 치엔 검색을 이용함으로써 에러 위치들을 직렬로 검색하기 위한 임의의 다른 체계에 따라, 디코딩을 수행할 수 있다. ECC 엔진(114)은 메모리로부터 판독된 데이터(가령, ECC 페이지 120)를 수신하며, 그리고 병렬 프로세싱 경로들에 따라 판독 데이터(116)를 프로세싱한다. 제 1 프로세싱 경로는, 가령, 데이터 블록(130)과 ECC 데이터(129)를 포함하는 전체 ECC 페이지(120)와 같은, 전체 ECC 코드워드에 대한 디코딩을 수행하는 데이터 블록 ECC 디코더(142)를 포함한다. 병렬인 제 2 프로세싱 경로는, 서브-블록들에 대응하는 ECC 데이터(가령, 서브-ECC 데이터 125-128)를 이용하여 데이터의 하나 이상의 서브-블록들(가령, 서브-블록들 121-124)에 대한 ECC 프로세싱을 수행하는 서브-블록 ECC 디코더(140)를 포함한다. ECC 엔진(114)은 데이터 블록 ECC 디코더(142)에서의 데이터 블록 ECC 동작과 서브-블록 ECC 디코더(140)에서의 서브-블록 ECC 동작을 실질적으로 동시에 시작할 수 있다. The ECC engine 114 is configured to perform an ECC decoding operation on data received through distributed ECC processing. For example, the ECC engine 114 may perform decoding according to the BCH scheme, the Reed-Solomon scheme, or any other scheme for serially searching for error locations by using, for example, Chien search. have. The ECC engine 114 receives the data read from the memory (eg, ECC page 120) and processes the read data 116 according to parallel processing paths. The first processing path includes a data block ECC decoder 142 that performs decoding on the entire ECC codeword, such as the entire ECC page 120 including the data block 130 and the ECC data 129, for example. do. The second processing path in parallel is one or more sub-blocks of data (eg, sub-blocks 121-124) using ECC data (eg, sub-ECC data 125-128) corresponding to the sub-blocks. A sub-block ECC decoder 140 that performs ECC processing for. The ECC engine 114 may start the data block ECC operation at the data block ECC decoder 142 and the sub-block ECC operation at the sub-block ECC decoder 140 at substantially the same time.

동작 동안, 서브-ECC 데이터(125-128)를 이용하여 서브-블록 ECC 디코더(140)에서 정정될 수 있는, 하나 이상의 서브-블록들(121-124)에서 검출된 에러들에 응답하여, 데이터 블록 ECC 디코더(142)에서의 데이터 블록(130)에 대한 ECC 프로세싱의 분량이 감소될 수 있다. 예를 들면, 4개의 서브-블록들 중 3개(예컨대, 서브-블록들 121-123)는, 서브-블록 ECC 디코더(140)에서의 서브-블록 ECC 프로세싱를 통하여 정정될 수 있다라고 판별될 수 있다. 그 결과, 데이터 블록 ECC 디코더(142)에서의 에러 위치 검색은, 정정가능한 서브-블록들(121-123)을 바이패스(bypass)하도록 선택적으로 개시될 수 있으며 그리고 서브-블록 ECC 프로세싱에 의해서 정정불가능(uncorrectable)하다고 판별되었던 서브-블록(124)의 에러들을 위치찾기(locating)하는데 제한될 수 있다. 서브-블록 및 데이터 블록 프로세싱의 일례들은 도3 내지 도4를 참조하여 좀더 상세하게 후술된다. During operation, in response to errors detected in one or more sub-blocks 121-124, which may be corrected in sub-block ECC decoder 140 using sub-ECC data 125-128, the data The amount of ECC processing for data block 130 in block ECC decoder 142 may be reduced. For example, it may be determined that three of the four sub-blocks (eg, sub-blocks 121-123) may be corrected through sub-block ECC processing at the sub-block ECC decoder 140. have. As a result, error location retrieval at data block ECC decoder 142 may optionally be initiated to bypass correctable sub-blocks 121-123 and corrected by sub-block ECC processing. It may be limited to locating errors in sub-block 124 that have been determined to be uncorrectable. Examples of sub-block and data block processing are described in more detail below with reference to FIGS.

각각의 서브-블록들(121-124)은 ECC 페이지(120) 보다 빨리 프로세싱될 수도 있지만, 서브-ECC 데이터(125-128) 내의 더 적은 개수의 ECC 비트들로 인하여, 감소된 에러 정정 비율(그리고 아마도 오-정정(mis-correction)을 할 경우가 더 큼)을 가질 수도 있다. 분산형 ECC 프로세싱을 이용함으로써, ECC 엔진(114)은 ECC 페이지에 대한 전체 패리티에 관련된 강점(strength)을 갖는 ECC 디코딩을 제공하며, 아울러 ECC 페이지를 정정하는 것과 병렬로 하나 이상의 서브-블록들이 정정될 수 있는 경우 더 빠른 동작을 가능케할 수 있다. Each sub-blocks 121-124 may be processed faster than the ECC page 120, but due to fewer ECC bits in the sub-ECC data 125-128, a reduced error correction rate ( And perhaps more mis-correction). By using distributed ECC processing, the ECC engine 114 provides ECC decoding with strengths related to the overall parity for the ECC page, and also corrects one or more sub-blocks in parallel with correcting the ECC page. If possible, it can enable faster operation.

도2를 참조하면, 분산형 ECC 프로세싱을 수행하는 시스템의 특정 실시예가 도시되며 도면부호 200으로 표시된다. 시스템(200)은 메인 ECC 프로세싱 회로(202)와 서브-ECC 프로세싱 회로(204)를 포함한다. 예를 들어, 메인 ECC 프로세싱 회로(202)는 도1의 데이터 블록 ECC 디코더(142)에 대응할 수 있으며 그리고 서브-ECC 프로세싱 회로(204)는 도1의 서브-블록 ECC 디코더(140)에 대응할 수 있다. 서브-ECC 프로세싱 회로(204)의 출력은 제어 회로(206)에 제공된다. 제어 회로(206)는 메인 ECC 프로세싱 회로(202)에 연결된 출력을 갖는다. 시스템(200)은 ECC 페이지(120)로 예시된 데이터 워드를 수신하도록 구성된다. 2, a particular embodiment of a system for performing distributed ECC processing is shown and denoted with 200. System 200 includes a main ECC processing circuit 202 and a sub-ECC processing circuit 204. For example, the main ECC processing circuit 202 may correspond to the data block ECC decoder 142 of FIG. 1 and the sub-ECC processing circuit 204 may correspond to the sub-block ECC decoder 140 of FIG. 1. have. The output of the sub-ECC processing circuit 204 is provided to the control circuit 206. The control circuit 206 has an output connected to the main ECC processing circuit 202. System 200 is configured to receive a data word illustrated by ECC page 120.

메인 ECC 프로세싱 회로(202)와 서브-ECC 프로세싱 회로(204)에서의 프로세싱을 위한 병렬 프로세싱 경로들을 통하여 ECC 페이지(120)가 제공된다. 메인 ECC 프로세싱 회로(202)는 전체 ECC 페이지(120)에 대한 ECC 프로세싱을 수행할 수 있다. 예를 들어, 메인 ECC 프로세싱 회로(202)는, 신드롬들을 생성하고, ECC 페이지(120)에 있는 다수의 에러들을 나타내는 순서(order)를 갖는 키 방정식을 결정하고, 그리고 가령, 치엔 검색을 수행함으로써 에러들의 위치를 찾을 수 있다. 에러들이 정정된 결과적인 데이터는 정정된 데이터(240)로서 제공된다. An ECC page 120 is provided through parallel processing paths for processing in the main ECC processing circuit 202 and the sub-ECC processing circuit 204. The main ECC processing circuit 202 may perform ECC processing for the entire ECC page 120. For example, the main ECC processing circuit 202 may generate syndromes, determine a key equation with an order representing a number of errors in the ECC page 120, and perform a Chien search, for example, by performing a Chien search. Find the location of errors. The resulting data with errors corrected is provided as corrected data 240.

서브-ECC 프로세싱 회로(204)는 제 1 서브-ECC 데이터(125)를 이용하여 제 1 서브-블록(121)에 대한 ECC 프로세싱을 수행하도록 구성될 수 있다. 서브-ECC 프로세싱 회로(204)는 신드롬들을 결정하고, 키 방정식을 생성하고, 그리고 제 1 서브-ECC 데이터(125)를 이용하여 제 1 서브-블록(121)에 대한 치엔 검색을 수행할 수 있다. 또한, 서브-ECC 프로세싱 회로(204)는 제 2 서브-ECC 데이터(126)를 이용하여 제 2 서브-블록(122)을 프로세싱하고, 제 3 서브-ECC 데이터(127)를 이용하여 제 3 서브-블록(123)을 프로세싱하고, 그리고 제 4 서브-ECC 데이터(128)를 이용하여 제 4 서브-블록(124)을 프로세싱하도록 구성될 수 있다. 예를 들어, 서브-ECC 프로세싱 회로(204)는 ECC 프로세싱의 하나 이상의 스테이지들을 도3에 관하여 서술된 바와 같은 파이프라인화된 방식으로 프로세싱하도록 구성될 수 있다. 다른 일례로서, 서브-ECC 프로세싱 회로(204)는 2개 이상의 서브-블록들(121-124)을 서로 병렬로 프로세싱하도록 다수개의 병렬 ECC 프로세싱 회로들을 포함할 수 있다. The sub-ECC processing circuit 204 can be configured to perform ECC processing for the first sub-block 121 using the first sub-ECC data 125. The sub-ECC processing circuit 204 can determine syndromes, generate a key equation, and perform Chien search for the first sub-block 121 using the first sub-ECC data 125. . In addition, the sub-ECC processing circuit 204 processes the second sub-block 122 using the second sub-ECC data 126, and uses the third sub-ECC data 127 to generate the third sub-ECC data 127. Process the block 123, and process the fourth sub-block 124 using the fourth sub-ECC data 128. For example, the sub-ECC processing circuit 204 can be configured to process one or more stages of ECC processing in a pipelined manner as described with respect to FIG. 3. As another example, the sub-ECC processing circuit 204 can include a plurality of parallel ECC processing circuits to process the two or more sub-blocks 121-124 in parallel with each other.

서브-ECC 프로세싱의 결과들(250)은 제어 회로(206)에 제공된다. 이러한 결과들은 서브-블록들(121-124) 각각의 서브-ECC 프로세싱 동안 검출된 다수의 에러들(254), 서브-블록들(121-124) 중 어떤 것이 정정불가능이었는지(즉, 서브-ECC 데이터(125-128)를 이용하여 정정될 수 있는 것보다 많은 에러들을 갖는)를 나타내는 하나 이상의 인디케이션들(252), 다른 정보들 또는 이들의 임의의 조합을 포함할 수 있다. 제어 회로(206)는, 서브-ECC 프로세싱 회로(204)로부터 반환된 결과들에 기초하여 메인 ECC 프로세싱 회로(202)의 프로세싱을 더욱 효율적으로 지속하기 위하여, 가령, 치엔 검색 시작 위치(260)와 치엔 검색 종료 위치(262) 등과 같은 하나 이상의 파라미터들을 결정하도록 구성될 수도 있다. The results 250 of the sub-ECC processing are provided to the control circuit 206. These results indicate which of the multiple errors 254, sub-blocks 121-124, detected during sub-ECC processing of each of the sub-blocks 121-124 were uncorrectable (ie, sub-ECC). One or more indications 252, other information, or any combination thereof, indicating that there are more errors than can be corrected using data 125-128. The control circuit 206 may, for example, maintain the Chien search start position 260 in order to more efficiently continue the processing of the main ECC processing circuit 202 based on the results returned from the sub-ECC processing circuit 204. May be configured to determine one or more parameters, such as Chien search end location 262, and the like.

예를 들어, ECC 프로세싱의 다양한 구성요소들은 서로 다른 분량의 시간을 요구할 수 있다. 예시적으로, 신드롬 계산은 고정된 시간 기간(fixed time interval)에서 수행될 수 있는 반면에, 키 방정식의 생성은 ECC 페이지에 있는 에러들의 개수에 비례하는 시간량을 요구할 수 있으며 그리고 치엔 검색을 수행하는 것은 에러들의 개수와 ECC 페이지에 있는 에러들의 위치에 비례하는 시간량을 요구할 수 있다. 에러들이 정정되었는지 아닌지 또는 서브-블록들(121-124) 각각에서 에러들이 정정불가능이었는지를 나타내는 서브-ECC 프로세싱 회로(204)의 결과들은, 메인 ECC 프로세싱 회로(202)가 메인 ECC 프로세싱의 하나 이상의 양상들(aspects)의 수행을 바이패스하게 할 수 있다. 예시적으로, 서브-ECC 프로세싱 회로(204)가 처음 3개의 서브-블록들(121-123)에서 검출된 모든 에러들을 정정할 수 있지만, 제 4 서브-블록(124)에서 발생한 에러들이 정정불가능(uncorrectable)인 경우, 제어 회로(206)는, 제 4 서브-블록(124)의 처음(beginning)에서(즉, 제 3 ECC 데이터 127에 후속하는 첫번째 비트에서) 치엔 검색 프로세싱을 선택적으로 개시하도록 메인 ECC 프로세싱 회로(202)에게 지시하게끔 구성될 수 있다. 이러한 방식으로, 메인 ECC 프로세싱 회로(202)에서의 치엔 검색 프로세싱 싸이클들의 총 횟수가 실질적으로 감소될 수 있는바, 이는 처음 3개의 서브-블록들(121-123)에 대한 병렬 ECC 프로세싱 때문이다. For example, various components of ECC processing may require different amounts of time. By way of example, syndrome calculation may be performed at a fixed time interval, while generation of key equations may require an amount of time proportional to the number of errors in the ECC page and perform a Chien search. Doing so may require an amount of time proportional to the number of errors and the location of the errors in the ECC page. The results of the sub-ECC processing circuit 204 indicating whether errors were corrected or whether errors in each of the sub-blocks 121-124 were uncorrectable indicate that the main ECC processing circuit 202 is one or more aspects of main ECC processing. It may be possible to bypass the performance of aspects. By way of example, the sub-ECC processing circuit 204 may correct all errors detected in the first three sub-blocks 121-123, but the errors occurring in the fourth sub-block 124 are uncorrectable. (uncorrectable), the control circuit 206 may optionally initiate Chien search processing at the beginning of the fourth sub-block 124 (ie, at the first bit following the third ECC data 127). It may be configured to direct the main ECC processing circuit 202. In this way, the total number of Chien search processing cycles in the main ECC processing circuit 202 can be substantially reduced because of parallel ECC processing for the first three sub-blocks 121-123.

도3을 참조하면, 가령, 도1의 ECC 엔진(114) 혹은 도2의 시스템(200)과 같은 분산형 ECC 시스템에서의 ECC 프로세싱의 일례를 예시하는 데이터 흐름도가 도시되어 있으며, 일반적으로 도면부호 300으로 명명된다. 데이터 흐름은, 도1의 ECC 페이지(120)에 대한 ECC 프로세싱의 대표적인 타이밍에 따라 도시되며, 그리고 서브-ECC 동작(302)에서의 데이터 흐름과 메인-ECC 동작(304)에서의 데이터 흐름을 포함한다. 서브-ECC 동작(302)은 도1의 서브-블록 ECC 디코더(140)에서의 프로세싱 또는 도2의 서브-ECC 프로세싱 회로(204)에서의 프로세싱에 대응될 수 있다. 메인-ECC 동작(304)은 도1의 데이터 블록 ECC 디코더(142)에서의 프로세싱 또는 도2의 메인-ECC 프로세싱 회로(202)에서의 프로세싱에 대응될 수 있다. Referring to FIG. 3, there is shown a data flow diagram illustrating an example of ECC processing in a distributed ECC system such as, for example, the ECC engine 114 of FIG. 1 or the system 200 of FIG. It is named 300. The data flow is shown according to representative timing of ECC processing for the ECC page 120 of FIG. 1 and includes the data flow in the sub-ECC operation 302 and the data flow in the main-ECC operation 304. do. Sub-ECC operation 302 may correspond to processing at sub-block ECC decoder 140 of FIG. 1 or processing at sub-ECC processing circuit 204 of FIG. 2. Main-ECC operation 304 may correspond to processing in data block ECC decoder 142 of FIG. 1 or processing in main-ECC processing circuit 202 of FIG. 2.

예시된 바와 같이, 서브-ECC 동작(302)은 제 1 싸이클(310), 제 2 싸이클(311), 제 3 싸이클(312), 제 4 싸이클(313), 제 5 싸이클(314), 및 제 6 싸이클(315)과 같은 다수개의 파이프라인 싸이클들에 대해서 파이프라인화될 수 있다. 싸이클들(310-315) 각각은 ECC 페이지(120)의 각 부분에 일반적으로 대응하는 것으로 예시되었으며 그리고 또한 서브-ECC 프로세싱에 관련된 각각의 파이프라인 스테이지의 프로세싱 시간에 대응한다. As illustrated, the sub-ECC operation 302 may comprise a first cycle 310, a second cycle 311, a third cycle 312, a fourth cycle 313, a fifth cycle 314, and a first cycle. It can be pipelined for multiple pipeline cycles, such as six cycles 315. Each of the cycles 310-315 is illustrated as generally corresponding to each portion of the ECC page 120 and also corresponds to the processing time of each pipeline stage related to the sub-ECC processing.

서브-ECC 동작(302)은 수신된 서브-블록에 대한 신드롬들을 계산하는 제 1 파이프라인 스테이지, 계산된 신드롬들에 기초하여 각각의 서브-블록에 대한 키 방정식을 생성하는 제 2 파이프라인 스테이지, 그리고 서브-블록의 에러들을 위치찾기하고 정정하기 위한 치엔 검색을 수행하는 제 3 파이프라인 스테이지를 포함할 수 있다. 다음 서브-블록이 각 싸이클에서 제 1 파이프라인 스테이지에 순차적으로 진입하고 그리고 3개 이상의 서브-블록들이 각각의 파이프라인 스테이지에서 하나의 서브-블록과 동시에 프로세싱될 수 있으며, 그리고 각 서브-블록의 프로세싱은 하나 이상의 다른 서브-블록의 프로세싱과 적어도 부분적으로 중첩되도록, 상기 파이프라인 스테이지들이 구성될 수 있다. The sub-ECC operation 302 includes a first pipeline stage for calculating syndromes for the received sub-block, a second pipeline stage for generating a key equation for each sub-block based on the calculated syndromes, And a third pipeline stage for performing Chien search for locating and correcting errors in the sub-block. The next sub-block enters the first pipeline stage sequentially in each cycle and three or more sub-blocks can be processed simultaneously with one sub-block in each pipeline stage, and each sub-block's The pipeline stages can be configured such that the processing at least partially overlaps with the processing of one or more other sub-blocks.

예시적으로, 제 1 싸이클(310)은 제 1 신드롬 프로세싱(331)으로 예시된 바와 같은, 제 1 ECC 데이터(125)를 이용하는 제 1 서브-블록(121)에 대한 프로세싱을 포함하는바, 제 1 신드롬 프로세싱(331) 동안 제 1 서브-ECC 데이터(125)를 이용하여 제 1 서브-블록(121)에 대한 신드롬 계산이 수행된다. 또한, 메인 ECC 동작(304)에 대한 신드롬 계산(321)이 제 1 싸이클 동안에 개시된다. By way of example, the first cycle 310 includes processing for the first sub-block 121 using the first ECC data 125, as illustrated by the first syndrome processing 331, wherein The syndrome calculation for the first sub-block 121 is performed using the first sub-ECC data 125 during one syndrome processing 331. In addition, syndrome calculation 321 for the main ECC operation 304 is initiated during the first cycle.

제 2 싸이클(311)은 제 1 싸이클(310)에 후속되며 그리고 파이프라인에 진입하는 제 2 ECC 데이터(126)를 이용하는 제 2 서브-블록(122)에 대한 프로세싱을 포함하며, 제 2 신드롬 프로세싱(341)으로 시작된다. 또한, 제 2 싸이클(311) 동안, 제 1 서브-블록(121)에 대한 제 1 키 방정식 생성(332)이 수행된다. 제 1 서브-블록(121)에 대한 제 1 키 방정식 생성(332)에 후속하여, 제 1 서브-블록(121)과 제 1 서브-ECC 데이터(125)에 대한 제 1 치엔 검색 프로세싱(333)이 제 2 싸이클(311) 동안 개시되며 그리고 제 3 싸이클(312)로 계속된다. The second cycle 311 includes processing for the second sub-block 122 following the first cycle 310 and using the second ECC data 126 entering the pipeline, and the second syndrome processing Beginning with 341. In addition, during the second cycle 311, a first key equation generation 332 for the first sub-block 121 is performed. Subsequent to first key equation generation 332 for the first sub-block 121, first Chien search processing 333 for the first sub-block 121 and the first sub-ECC data 125. This is initiated during the second cycle 311 and continues to the third cycle 312.

제 3 싸이클(312) 동안, 제 3 ECC 데이터(127)를 이용하는 제 3 서브-블록(123)의 프로세싱이 제 3 서브-블록(123)에 대한 제 3 신드롬 프로세싱(351)으로 시작된다. 또한, 제 1 서브-블록(121)과 제 1 서브-ECC 데이터(125)에 대한 제 1 치엔 검색 프로세싱(333)이 완료하며, 그리고 제 2 서브-블록(122)에 대한 제 2 키 방정식 생성(342)이 수행된다. 또한, 예시된 바와 같이, 제 3 싸이클(312) 동안, 제 1 서브-블록(121)과 제 1 서브-ECC 데이터(125)에 대한 제 1 치엔 검색 프로세싱(333)이 종료하면, 제 2 서브-블록(122)과 제 2 서브-ECC 데이터(126)에 대한 제 2 치엔 검색 프로세싱(343)이 시작된다. 제 3 싸이클(312) 동안, 제 2 키 방정식 생성 프로세스(342)의 종료와 제 2 치엔 검색 프로세싱(343)의 시작 사이에는 경과된 시간이 예시되어 있는데, 이는, 치엔 검색 파이프라인 스테이지를 점유하고 있는 제 1 치엔 검색 프로세싱(333)으로부터 기인한다. 파이프라인 프로세싱을 일반적으로 예시하기 위하여 제 2 서브-블록(122)의 프로세싱에 대한 일시적인 중단이 도시되며, 그리고 이러한 중단이 시스템(300) 내에서의 프로세싱을 제한하거나 반드시 대표하는 것으로 간주되지 않아야 한다. During the third cycle 312, processing of the third sub-block 123 using the third ECC data 127 begins with a third syndrome processing 351 for the third sub-block 123. In addition, the first Chien search processing 333 for the first sub-block 121 and the first sub-ECC data 125 is completed, and a second key equation for the second sub-block 122 is generated. 342 is performed. Further, as illustrated, if the first Chien search processing 333 for the first sub-block 121 and the first sub-ECC data 125 ends during the third cycle 312, the second sub Second Chien search processing 343 for block 122 and second sub-ECC data 126 begins. During the third cycle 312, the elapsed time is illustrated between the end of the second key equation generation process 342 and the start of the second Chien search processing 343, which occupies the Chien search pipeline stage and From the first Chien search processing 333. A temporary interruption to the processing of the second sub-block 122 is shown to generally illustrate pipelined processing, and such interruption should not be considered limiting or necessarily representative of processing within the system 300. .

제 4 싸이클(313) 동안, 제 4 ECC 데이터(128)를 이용하는 제 4 서브-블록(124)의 프로세싱이 제 4 신드롬 프로세싱(361)으로 시작된다. 또한, 제 4 싸이클(313) 동안, 제 3 서브-블록(123)에 대한 제 3 키 방정식 생성(352)이 개시되며, 이에 후속하여 제 3 서브-블록(123)과 제 3 서브-ECC 데이터(127)에 대한 제 3 치엔 검색 프로세싱(353)이 시작된다. 또한, 제 4 싸이클(313) 동안, 제 2 치엔 검색 프로세싱(343)이 제 2 서브-블록(122)과 제 2 서브-ECC 데이터(126)에 대해서 완료된다. During the fourth cycle 313, processing of the fourth sub-block 124 using the fourth ECC data 128 begins with a fourth syndrome processing 361. In addition, during the fourth cycle 313, third key equation generation 352 for the third sub-block 123 is initiated, followed by the third sub-block 123 and the third sub-ECC data. Third Chien search processing 353 for 127 begins. In addition, during the fourth cycle 313, the second Chien search processing 343 is completed for the second sub-block 122 and the second sub-ECC data 126.

제 5 싸이클(314) 동안, 제 4 서브-워드(124)에 대한 제 4 키 방정식 생성(362)이 수행된다. 또한, 제 3 서브-블록(123)과 제 3 서브-ECC 데이터(127)에 대한 제 3 치엔 검색 프로세싱(353)이 완료되며 그리고 제 4 서브-블록(124)과 제 4 서브-ECC 데이터(128)에 대한 제 4 치엔 검색 프로세싱(363)이 시작된다. 또한, 제 5 싸이클(314) 동안, 메인 ECC 동작(304)의 신드롬 프로세싱(321)이 완료되며 그리고 메인 ECC 동작(304)의 키 방정식 생성(322)이 시작된다. 예시된 바와 같이, 메인 ECC 동작(304)이 키 방정식 생성(322)을 개시하는 때, 제 1 및 제 2 서브-블록들(121, 122)에 대한 서브-ECC 프로세싱은 완료되었으며 그리고 제 3 및 제 4 서브-블록들(123, 124)에 대한 서브-ECC 프로세싱은 진행중이다. During the fifth cycle 314, fourth key equation generation 362 for the fourth sub-word 124 is performed. In addition, the third Chien search processing 353 for the third sub-block 123 and the third sub-ECC data 127 is completed, and the fourth sub-block 124 and the fourth sub-ECC data ( The fourth Chien search processing 363 for 128 begins. In addition, during the fifth cycle 314, syndrome processing 321 of the main ECC operation 304 is completed and key equation generation 322 of the main ECC operation 304 begins. As illustrated, when the main ECC operation 304 initiates key equation generation 322, the sub-ECC processing for the first and second sub-blocks 121, 122 has been completed and the third and Sub-ECC processing for the fourth sub-blocks 123, 124 is in progress.

제 6 싸이클(315) 동안, 제 4 서브-블록(124)에 대한 서브-ECC 프로세싱은 종료되는 반면에 메인 ECC 키 생성(322)은 계속된다. 결과적으로, 메인 치엔 검색 프로세싱(323)이 개시되면, 검색 시작 위치 및/또는 치엔 검색 프로세싱(323) 동안에 분석될 하나 이상의 영역들이, 개별 서브-블록들(121-124)의 프로세싱의 결과로서, 알려질 수 있다. 예를 들어, 정정불가능(uncorrectable)한 에러들이 발생함이 없이, 제 1 서브-블록(121) 및 제 2 서브-블록(122)에 대한 서브-ECC 프로세싱이 완료되는 경우, 제 1 및 제 2 서브-블록들(121, 122)과 제 1 및 제 2 ECC-블록들(125, 126) 내에 있는 데이터 비트들에 대해서는 치엔 검색 프로세싱(322)이 메인 ECC 동작(304) 동안에 적용될 필요가 없다. During the sixth cycle 315, the sub-ECC processing for the fourth sub-block 124 ends while the main ECC key generation 322 continues. As a result, once main Chien search processing 323 is initiated, one or more areas to be analyzed during search start location and / or Chien search processing 323, as a result of the processing of the individual sub-blocks 121-124, Can be known. For example, when the sub-ECC processing for the first sub-block 121 and the second sub-block 122 is completed without uncorrectable errors occurring, the first and second For the data bits within the sub-blocks 121 and 122 and the first and second ECC-blocks 125 and 126, the Chien search processing 322 need not be applied during the main ECC operation 304.

만일, 제 3 서브-블록(123)의 서브-ECC 동작(302)이 정정불가능한 에러들을 나타내는 반면에 제 4 서브-블록(124)은 서브-ECC 동작(302)에 의해서 정정가능한 것으로 표시된다면, 제 3 서브-블록(123) 및 제 3 ECC 블록(127)만을 프로세싱하도록 치엔 검색 프로세싱(322)이 제어될 수 있다. If the sub-ECC operation 302 of the third sub-block 123 represents uncorrectable errors while the fourth sub-block 124 is marked as correctable by the sub-ECC operation 302, Chien search processing 322 may be controlled to process only the third sub-block 123 and the third ECC block 127.

메인 ECC 동작(304)에 대해서 치엔 검색 프로세싱(322)을 수행하기 위한 전체 프로세싱 시간(종래의 시스템에서는 ECC 페이지(120)의 길이에 비례할 수 있으며 그리고 디코딩 프로세스의 실질적인 부분(substantial proportion)을 구성함)은, 4배 이상 감소될 수 있다. 또 다른 일례로서, 서브-워드들(121-124) 중 그 어떤 것도 정정불가능한 에러들을 갖지 않음을 서브-ECC 동작(302)이 나타내는 경우, 메인 ECC 동작(304)의 치엔 검색 프로세싱(323)은 ECC 데이터(129)의 검색만으로 한정될 수 있으며 혹은 전부 스킵될 수도 있다. Total processing time for performing Chien search processing 322 for the main ECC operation 304 (in conventional systems may be proportional to the length of the ECC page 120 and constitutes a substantial proportion of the decoding process). May be reduced by more than four times. As another example, if the sub-ECC operation 302 indicates that none of the sub-words 121-124 have uncorrectable errors, the Chien search processing 323 of the main ECC operation 304 The search may be limited to the search of the ECC data 129 or may be skipped altogether.

도4a 내지 도4b를 참조하면, 방법(400)의 특정 실시예가 도시되는데, 상기 방법은 도4a에서 시작하여 도4b로 진행된다. 방법(400)은 서브-ECC 프로세싱의 결과에 기초하여 가령, 도2의 제어 회로(206)에 의해서 수행될 수 있는 프로세스를 예시한다. 도3의 데이터 흐름도를 참조하여 방법(400)이 설명된다. 도4a는 정정불가능한 에러들을 갖는 것으로 서브-ECC 동작에 의해서 표시되는 서브-블록들에 대해서 치엔 검색을 수행하고 그리고 ECC 워드의 모든 에러들이 정정되었는지의 여부를 판별하는 것을 도시한다. 도4b는 에러들이 정정되지 않은 채로 남아있는 경우(즉, 하나 이상의 서브-블록들이 서브-ECC 프로세싱 동안 오-정정되었음)의 프로세싱을 도시하며 그리고 정정불가능한 에러들을 갖지 않는 것으로 표시되는 서브-블록들에 대해 치엔 검색을 수행하는 것을 포함한다. 4A-4B, a particular embodiment of a method 400 is shown, which begins with FIG. 4A and proceeds to FIG. 4B. The method 400 illustrates a process that may be performed by, for example, the control circuit 206 of FIG. 2 based on the result of the sub-ECC processing. The method 400 is described with reference to the data flow diagram in FIG. 4A shows performing a Chien search on sub-blocks indicated by sub-ECC operation as having uncorrectable errors and determining whether all errors in the ECC word have been corrected. 4B shows the processing of where errors remain uncorrected (ie, one or more sub-blocks were miscorrected during sub-ECC processing) and sub-blocks indicated as having no uncorrectable errors. Involves performing a Chien search for.

메인 키 생성 프로세싱이 완료되었다는 표시가 단계 402에서 수신된다. 예를 들어, 이러한 표시는, 도3의 키 생성 프로세싱(322)에 후속하여 수신될 수 있다. 단계 404에서, 제 1 서브-블록(121)이 정정불가능한 에러를 야기하는지에 대한 여부가 판별된다. 제 1 서브-블록(121)이 단계 404에서 정정불가능한 에러를 야기한다는 것에 응답하여, 제 1 서브-블록(121)의 처음(beginning)에서 시작하여 제 1 서브-ECC 데이터(125)의 끝까지 계속되는 치엔 검색이 메인 ECC 동작에서 개시될 수 있다. An indication is received at step 402 that the main key generation processing is complete. For example, this indication may be received subsequent to key generation processing 322 of FIG. 3. In step 404, it is determined whether the first sub-block 121 causes an uncorrectable error. In response to the first sub-block 121 causing an uncorrectable error in step 404, beginning at the beginning of the first sub-block 121 and continuing to the end of the first sub-ECC data 125. Chien search may be initiated in the main ECC operation.

단계 408에서, 제 2 서브-블록(122)이 정정불가능한 에러를 야기하는지에 대한 여부가 판별된다. 제 2 서브-블록(122)이 정정불가능한 에러를 야기하지 않는다고 판별되는 경우, 프로세싱은 단계 412로 진행한다. 그렇지 않고, 제 2 서브-블록(122)이 정정불가능한 에러를 야기한다라고 판별되는 경우, 제 2 서브-블록(122) 및 제 2 서브-블록(122)에 대한 제 2 ECC 데이터(126)에 대응하는 메인 ECC 치엔 검색이 메인 ECC에서 수행되며(단계 410) 그리고 프로세싱은 단계 412로 진행한다. In step 408, it is determined whether the second sub-block 122 causes an uncorrectable error. If it is determined that the second sub-block 122 does not cause an uncorrectable error, processing proceeds to step 412. Otherwise, if it is determined that the second sub-block 122 causes an uncorrectable error, then the second ECC data 126 for the second sub-block 122 and the second sub-block 122 are added to the second sub-block 122. The corresponding main ECC Chien search is performed in the main ECC (step 410) and processing proceeds to step 412.

단계 412에서, 제 3 서브-블록(123)이 정정불가능한 에러를 야기하는지에 대한 여부가 판별된다. 제 3 서브-블록(123)이 정정불가능한 에러를 야기하지 않는다고 판별되는 경우, 프로세싱은 단계 416으로 진행한다. 그렇지 않고, 제 3 서브-블록(123)이 정정불가능한 에러를 야기한다라고 판별되는 경우, 제 3 서브-블록(123) 및 제 3 서브-블록(123)에 대한 제 3 ECC 데이터(127)에 대응하는 메인 ECC 치엔 검색이 수행되며(단계 414) 그리고 프로세싱은 단계 416으로 진행한다. In step 412, it is determined whether the third sub-block 123 causes an uncorrectable error. If it is determined that the third sub-block 123 does not cause an uncorrectable error, processing proceeds to step 416. Otherwise, if it is determined that the third sub-block 123 causes an uncorrectable error, the third ECC data 127 for the third sub-block 123 and the third sub-block 123 is not included. The corresponding main ECC Chien search is performed (step 414) and processing proceeds to step 416.

제 4 서브-블록(124)이 정정불가능한 에러들을 야기하는지 혹은 제 4 서브-블록(124)에 대한 프로세싱이 완료되지 않았는지가 단계 416에서 판별된다. 단계 416에서 제 4 서브-블록(124)이 정정불가능한 에러들을 야기하거나 혹은 제 4 서브-블록(124)에 대한 치엔 검색 프로세싱이 완료되지 않았다면, 메인 ECC 치엔 검색 프로세싱이 수행될 수 있는바, 메인 ECC 치엔 검색 프로세싱은 제 4 서브-블록(124)의 제 1 비트에 연속되어 시작하며 그리고 ECC 페이지(120)의 말미까지 계속된다(즉, ECC 데이터 129를 포함한다). 이와 달리, 제 4 서브-블록(124)이 정정불가능한 에러들을 갖는다고 표시되지 않거나 제 4 치엔 검색 프로세싱이 완료되었다면, 프로세싱은 단계 420으로 진행하며, 단계 420에서는 에러들(서브-ECC 동작 302과 그리고 치엔 검색들 406, 410, 414 중 임의의 것에서 검출된 것)의 합계가 메인 ECC 동작(304)의 키 방정식 프로세싱(322)으로부터 유래된 메인 키 방정식의 차수(order)와 동등한지의 여부가 판별된다. It is determined at step 416 whether the fourth sub-block 124 causes uncorrectable errors or whether processing for the fourth sub-block 124 has not been completed. If in step 416 the fourth sub-block 124 causes uncorrectable errors or the Chien search processing for the fourth sub-block 124 has not been completed, then the main ECC Chien search processing may be performed. ECC Chien search processing begins consecutively with the first bit of the fourth sub-block 124 and continues to the end of the ECC page 120 (ie, includes ECC data 129). Alternatively, if the fourth sub-block 124 is not marked as having uncorrectable errors or the fourth Chien search processing is completed, processing proceeds to step 420, where the errors (sub-ECC operation 302 and And determining whether the sum of the Chien searches 406, 410, 414 is equal to the order of the main key equation derived from the key equation processing 322 of the main ECC operation 304. do.

발견된 에러들의 합계가 메인 ECC 동작(304)의 메인 키 방정식의 차수와 동등하지 않다는 판별에 응답하여, ECC 페이지(120)의 ECC 데이터(129)의 처음(beginning)에서부터 치엔 검색 프로세싱이 수행된다(단계 424). 그렇지 않은 경우, 프로세싱은 단계 426으로 진행하며, 단계 426에서는 정정된 ECC 에러들의 개수가 메인 ECC 동작(304)의 메인 키 프로세싱(322)에 의해서 생성된 키 방정식의 차수와 동등한지의 여부가 판별된다. 정정된 ECC 에러들의 개수가(서브-ECC 및 메인 ECC 정정들을 포함하여), 키 방정식 프로세싱(322)으로부터 유래된 키 방정식의 차수와 동등한 경우, 검출된 모든 에러들은 메인 ECC 동작(304)에 기초하여 검출되었으며 그리고 서브-ECC 동작(302)에 의해서 및/또는 단계 406, 410, 414, 418 중 하나 이상에서 혹은 이들의 조합에서 수행된 타겟팅된 치엔 검색 프로세싱에 의해서 정정되었다. 결과적으로, 모든 검출된 에러들이 정정되었으며, 그리고 ECC 페이지(120)에 대한 ECC 프로세싱이 단계 428에서 완료된다. 정정된 에러들의 개수가 단계 426에서 메인 키 방정식의 차수와 동등하지 않다고 판별되는 경우, 프로세싱은 단계 430으로 진행하며, 단계 430은 도4b에 도시된다. In response to determining that the sum of the errors found is not equal to the order of the main key equation of the main ECC operation 304, the Chien search processing is performed from the beginning of the ECC data 129 of the ECC page 120. (Step 424). Otherwise, processing proceeds to step 426 where it is determined whether the number of corrected ECC errors is equal to the order of the key equation generated by the main key processing 322 of the main ECC operation 304. . If the number of corrected ECC errors (including sub-ECC and main ECC corrections) is equal to the order of the key equation derived from key equation processing 322, then all detected errors are based on main ECC operation 304. And corrected by the targeted Chien search processing performed by sub-ECC operation 302 and / or in one or more of steps 406, 410, 414, 418, or a combination thereof. As a result, all detected errors have been corrected, and ECC processing for the ECC page 120 is completed at step 428. If it is determined in step 426 that the number of corrected errors is not equal to the order of the main key equation, processing proceeds to step 430, where step 430 is shown in FIG. 4B.

제 1 서브-블록(121)이 정정불가능한 에러들을 갖는다고 서브-ECC 동작(302)에 의해서 판별되었는지의 여부가 판별된다. 제 1 서브-블록(121)이 정정불가능한 에러들을 갖지 않는다고 서브-ECC 동작(302)에 의해서 판별되었다면, 메인 ECC 동작(304)의 치엔 검색 프로세싱이 제 1 서브-블록(121) 및 제 1 서브-ECC 데이터(125)에 대해 수행된다(단계 432). 계속해서 단계 434에서, 정정된 에러들의 개수가 메인 키 방정식의 차수와 동등한지의 여부가 판별된다. 정정된 에러들의 개수가 메인 키 방정식의 차수와 동등하다고 단계 434에서 판별되는 경우, 검출된 모든 에러들은 정정되었으며 그리고 프로세싱은 단계 436에서 완료된다. 그렇지 않다면, 제 2 서브-블록(122)이 정정불가능한 에러들을 야기한다고 서브-ECC 동작(302)에 의해서 판별되었는지의 여부가 판별된다(단계 438). 만일, 제 2 서브-블록(122)이 정정불가능한 에러들을 갖지 않는다고 서브-ECC 동작(302)에 의해서 판별되었다면, 메인 ECC 동작(304)의 치엔 검색 프로세싱이 제 2 서브-블록(122) 및 제 2 서브-ECC 데이터(126)에 대해 수행된다(단계 440). 단계 440에서 제 2 치엔 검색 프로세싱이 완료된 이후, 혹은 제 2 서브-블록(122)이 정정불가능한 에러들을 갖는다고 서브-ECC 동작(302)에 의해서 판별되었던 경우, 정정된 에러들의 개수가 메인 키 방정식의 차수와 동등한지의 여부가 단계 442에서 판별된다. It is determined whether the sub-ECC operation 302 has determined that the first sub-block 121 has uncorrectable errors. If the sub-ECC operation 302 determines that the first sub-block 121 has no uncorrectable errors, the Chien search processing of the main ECC operation 304 is performed by the first sub-block 121 and the first sub. Is performed on the ECC data 125 (step 432). Subsequently at step 434, it is determined whether the number of corrected errors is equal to the order of the main key equation. If it is determined in step 434 that the number of corrected errors is equal to the order of the main key equation, all detected errors have been corrected and processing is completed in step 436. If not, it is determined whether sub-ECC operation 302 has determined that second sub-block 122 causes uncorrectable errors (step 438). If the sub-ECC operation 302 determines that the second sub-block 122 has no uncorrectable errors, the Chien search processing of the main ECC operation 304 is performed by the second sub-block 122 and the second. 2 is performed on the sub-ECC data 126 (step 440). After the second Chien search processing is completed in step 440, or if the sub-ECC operation 302 determines that the second sub-block 122 has uncorrectable errors, the number of corrected errors is the main key equation. It is determined in step 442 whether it is equivalent to the order of.

만일, 정정된 에러들의 개수가 메인 키 방정식의 차수와 동등하다고 단계 442에서 판별된다면, 검출된 모든 에러들은 정정되었으며 그리고 프로세싱은 단계 444에서 완료된다. 그렇지 않다면, 제 3 서브-블록(123)이 정정불가능하다고 서브-ECC 동작(302)에 의해서 판별되었는지의 여부가 판별된다(단계 446). 만일, 제 3 서브-블록(123)이 정정불가능한 에러들을 갖지 않는다고 서브-ECC 동작(302)에 의해서 판별되었다면, 메인 ECC 동작(304)의 치엔 검색 프로세싱이 제 3 서브-블록(123) 및 제 3 서브-ECC 데이터(127)에 대해 수행된다(단계 448). 단계 448에서 치엔 검색 프로세싱이 완료된 이후, 혹은 제 3 서브-블록(123)이 정정불가능한 에러들을 갖는다고 서브-ECC 동작(302)에 의해서 판별되었음을 단계 446에서 판별한 이후에, 정정된 에러들의 개수가 메인 키 방정식의 차수와 동등한지의 여부가 단계 450에서 판별된다. If at step 442 it is determined that the number of corrected errors is equal to the order of the main key equation, all detected errors have been corrected and processing is completed at step 444. If not, it is determined whether the third sub-block 123 has been determined by sub-ECC operation 302 as not correctable (step 446). If the sub-ECC operation 302 determines that the third sub-block 123 has no uncorrectable errors, the Chien search processing of the main ECC operation 304 is performed by the third sub-block 123 and the third. 3 sub-ECC data 127 is performed (step 448). After the Chien search processing is completed in step 448 or after step 446 determines that the third sub-block 123 has been determined by sub-ECC operation 302 that it has uncorrectable errors, the number of corrected errors Is determined in step 450 whether is equal to the order of the main key equation.

정정된 에러들의 개수가 메인 키 방정식의 차수와 동등하다고 단계 450에서 판별되는 경우, 검출된 모든 에러들은 정정되었으며 그리고 프로세싱은 단계 452에서 완료된다. 그렇지 않다면, 제 4 서브-블록(124)이 정정불가능한 에러들을 갖는다고 서브-ECC 동작(302)에 의해서 판별되었는지의 여부가 판별된다(단계 454). 만일, 제 4 서브-블록(124)이 정정불가능한 에러들을 갖지 않는다고 서브-ECC 동작(302)에 의해서 판별되었다면, 메인 ECC 동작(304)의 치엔 검색 프로세싱이 제 4 서브-블록(124) 및 제 4 서브-ECC 데이터(128)에 대해 수행된다(단계 456). If at step 450 it is determined that the number of corrected errors is equal to the order of the main key equation, all detected errors have been corrected and processing is completed at step 452. If not, it is determined whether the fourth sub-block 124 has been determined by sub-ECC operation 302 that it has uncorrectable errors (step 454). If the sub-ECC operation 302 determines that the fourth sub-block 124 has no uncorrectable errors, the Chien search processing of the main ECC operation 304 is performed by the fourth sub-block 124 and the second. 4 sub-ECC data 128 is performed (step 456).

정정된 에러들의 총 개수가 메인 키 방정식의 차수와 동등한지의 여부가 단계 458에서 판별된다. 만일 그렇다면, 검출된 모든 에러들은 정정되었으며 그리고 프로세싱은 단계 460에서 종료한다. 단계 458에서, 정정된 에러들의 개수가 메인 키 방정식의 차수와 동등하지 않다면, 발생된 에러들의 개수는 메인 ECC 동작(304)의 용량을 넘어서는 것이며, 단계 462에서 에러가 생성되고 그리고 프로세싱은 종결된다. It is determined at step 458 whether the total number of corrected errors is equal to the order of the main key equation. If so, all detected errors have been corrected and processing ends at step 460. If at step 458 the number of corrected errors is not equal to the order of the main key equation, then the number of errors generated is beyond the capacity of the main ECC operation 304, at step 462 an error is generated and processing is terminated. .

도5는 분산형 ECC 프로세싱 방법의 일실시예에 대한 순서도이다. 상기 방법은 가령, 도1의 제어기(110)와 같은 메모리 디바이스의 제어기에서 수행될 수 있다. 상기 방법은, 데이터 블록 및 상기 데이터 블록에 대한 메인 에러 정정 코딩(ECC) 데이터를 포함하는 데이터를 수신하는 단계(502)를 포함한다. 데이터 블록은 데이터의 제 1 서브-블록과 제 1 서브-블록에 대응하는 제 1 ECC 데이터를 포함한다. 메모리 디바이스는 비휘발성 메모리를 포함할 수 있으며 그리고 데이터를 수신하는 단계는, 비휘발성 메모리로부터 데이터를 판독하고 그리고 판독된 데이터를 제어기의 ECC 엔진으로 전송함으로써 수행될 수도 있다. 예를 들어, ECC 페이지(120)는, 판독된 데이터(116)로서 도1의 ECC 엔진(114)에서 수신될 수 있다. 5 is a flowchart of one embodiment of a distributed ECC processing method. The method may be performed, for example, in a controller of a memory device, such as controller 110 of FIG. The method includes receiving 502 data including a data block and main error correction coding (ECC) data for the data block. The data block includes a first sub-block of data and first ECC data corresponding to the first sub-block. The memory device may include a nonvolatile memory and the step of receiving data may be performed by reading data from the nonvolatile memory and transferring the read data to the controller's ECC engine. For example, the ECC page 120 may be received at the ECC engine 114 of FIG. 1 as read data 116.

메인 ECC 데이터를 이용하여 데이터 블록을 프로세싱하도록 데이터 블록 ECC 동작이 개시된다(단계 504). 데이터 블록 ECC 동작은 메인 신드롬 생성 프로세스, 메인 키 방정식 생성 프로세스, 및 메인 에러 위치찾기(location) 프로세스를 포함할 수 있다. 예를 들어, 데이터 블록 ECC 동작은 도3의 메인 ECC 동작(304)이 될 수 있다. 데이터 블록 ECC 동작을 개시하는 것은, 도1의 데이터 블록 ECC 디코더(142)와 같은 데이터 블록 ECC 디코더의 입력에 데이터를 제공하고 그리고 데이터 프로세싱을 시작하도록 데이터 블록 ECC 디코더에게 지시함으로써, 수행될 수 있다. A data block ECC operation is initiated to process the data block using the main ECC data (step 504). The data block ECC operation may include a main syndrome generation process, a main key equation generation process, and a main error location process. For example, the data block ECC operation may be the main ECC operation 304 of FIG. Initiating a data block ECC operation may be performed by providing data to an input of a data block ECC decoder, such as data block ECC decoder 142 of FIG. 1, and instructing the data block ECC decoder to begin data processing. .

제 1 ECC 데이터를 이용하여 제 1 서브-블록을 프로세싱하도록 서브-블록 ECC 동작이 시작될 수 있다(단계 506). 데이터 블록 ECC 동작과 서브-블록 ECC 동작은 실질적으로 동시에 시작될 수 있다. 서브-블록 ECC 동작은 데이터 블록 내의 각각의 서브-블록에 대한, 서브-블록 신드롬 생성 프로세스, 서브-블록 키 방정식 생성 프로세스, 및 서브-블록 에러 위치찾기(location) 프로세스를 포함할 수 있다. 데이터 블록은 제 2 서브-블록과 제 2 서브-블록에 대응하는 제 2 ECC 데이터를 포함할 수 있다. 서브-블록 ECC 동작은 또한, 제 2 ECC 데이터를 이용하여 제 2 서브-블록을 프로세싱할 수 있다. 서브-블록 ECC 동작은 파이프라인화될 수 있으며 그리고 제 2 서브-블록에 대한 프로세싱은 제 1 서브-블록에 대한 프로세싱과 적어도 일부분 중첩될 수 있다. 예를 들어, 서브-블록 ECC 동작은 도3의 서브-ECC 동작(302)이 될 수 있다. 서브-블록 ECC 동작을 개시하는 것은, 도1의 서브-블록 ECC 디코더(140)와 같은 서브-블록 ECC 디코더의 입력에 데이터를 제공하고 그리고 데이터 프로세싱을 시작하도록 서브-블록 ECC 디코더에게 지시함으로써, 수행될 수 있다. The sub-block ECC operation may begin to process the first sub-block using the first ECC data (step 506). The data block ECC operation and the sub-block ECC operation can be started substantially simultaneously. Sub-block ECC operations may include a sub-block syndrome generation process, a sub-block key equation generation process, and a sub-block error location process, for each sub-block in the data block. The data block may include a second sub-block and second ECC data corresponding to the second sub-block. The sub-block ECC operation may also process the second sub-block using the second ECC data. The sub-block ECC operation may be pipelined and the processing for the second sub-block may at least partially overlap with the processing for the first sub-block. For example, the sub-block ECC operation may be the sub-ECC operation 302 of FIG. Initiating sub-block ECC operation is provided by providing data to an input of a sub-block ECC decoder such as sub-block ECC decoder 140 of FIG. 1 and instructing the sub-block ECC decoder to start data processing. Can be performed.

데이터 블록 ECC 동작의 에러 위치 검색은, 서브-블록 ECC 동작의 결과에 기초하여 선택적으로 시작된다(단계 508). 예를 들면, 제 1 서브-블록 내의 정정불가능한 에러들을 나타내는 서브-블록 ECC 동작에 응답하여, 상기 에러 위치 검색은, 제 1 서브-블록의 처음(beginning)에서 시작하도록 개시될 수 있다. 에러 위치 검색은, 도3의 치엔 검색 프로세싱(323)과 같은 치엔 검색을 포함할 수 있다. Error location retrieval of the data block ECC operation is optionally initiated based on the result of the sub-block ECC operation (step 508). For example, in response to a sub-block ECC operation indicating uncorrectable errors in the first sub-block, the error location search may be initiated to begin at the beginning of the first sub-block. The error location search may include a Chien search, such as Chien search processing 323 of FIG.

예컨대, 서브-블록 ECC 동작의 결과에 기초하여 데이터 블록 ECC 동작의 에러 위치 검색을 선택적으로 개시하는 것은, 서브-블록 ECC 동작에 의해서 정정불가능한 서브-블록의 시작 비트 위치(가령, 도2의 치엔 검색 시작 위치 260)를 나타내는 시작 위치 데이터를 수신함으로써 수행될 수 있다. 서브-블록 ECC 동작에 의해서 정정불가능한 서브-블록에 대응하는 ECC 데이터의 종료 비트 위치(가령, 도2의 치엔 검색 종료 위치 262)를 나타내는 종료 위치 데이터가 또한, 수신될 수 있다. 상기 시작 비트 위치로부터 종료 비트 위치까지 데이터를 순차적으로 프로세싱하도록 에러 위치 검색이 개시될 수 있다. For example, selectively initiating an error location search of the data block ECC operation based on the result of the sub-block ECC operation may include: starting bit position of the sub-block that cannot be corrected by the sub-block ECC operation (eg, Chien of FIG. 2). By receiving start position data indicating search start position 260. End position data indicating an end bit position (eg, Chien search end position 262 of FIG. 2) of the ECC data corresponding to an uncorrectable sub-block by the sub-block ECC operation may also be received. An error location search can be initiated to sequentially process data from the start bit position to the end bit position.

데이터 블록 ECC 동작은 데이터에 있는 제 1 개수의 에러들을 판별할 수 있다. 제 1 개수의 에러들은 가령, 데이터 블록에 대응하는 키 방정식의 차수(order)에 기초하여 데이터 블록 ECC 동작에 의해서 판별된다. 제 1 개수의 에러들은, 가령 도4a의 결정 단계(420)와 같이, 서브-블록 ECC 동작에 의해서 정정되는 제 2 개수의 에러들과 비교될 수 있다. The data block ECC operation can determine a first number of errors in the data. The first number of errors is determined by the data block ECC operation, for example, based on the order of key equations corresponding to the data block. The first number of errors may be compared with the second number of errors corrected by the sub-block ECC operation, such as for example, decision step 420 of FIG. 4A.

데이터 블록이 복수의 서브-블록들을 포함하는 경우, 에러 위치 검색은 서브-블록 ECC 동작 동안에 정정불가능한 에러들을 갖는다고 식별된 복수개의 서브-블록들 각각을 프로세스하도록 제어될 수 있다. 예를 들면, 도4a의 판별들 404, 408, 412, 416에 응답하여 치엔 검색이 선택적으로 수행될 수 있다. 정정불가능한 에러들을 갖는다고 식별된 복수개의 서브-블록들 각각의 에러 위치 검색이 완료된 후에, 정정된 에러들의 개수는 상기 데이터에 있는 제 1 개수의 에러들과 비교될 수 있다. 제 1 개수의 에러들이 정정된 에러들의 개수를 초과한다는 것에 응답하여, 도4a의 420-424에 예시된 바와 같이 메인 ECC 데이터를 프로세싱하도록 에러 위치 검색이 제어될 수 있다. If the data block includes a plurality of sub-blocks, the error location search may be controlled to process each of the plurality of sub-blocks identified as having uncorrectable errors during the sub-block ECC operation. For example, a Chien search may optionally be performed in response to the determinations 404, 408, 412, 416 of FIG. 4A. After the error location search of each of the plurality of sub-blocks identified as having uncorrectable errors is completed, the number of corrected errors may be compared with the first number of errors in the data. In response to the first number of errors exceeding the number of corrected errors, the error location search may be controlled to process main ECC data as illustrated in 420-424 of FIG. 4A.

정정된 에러들의 개수는, 메인 ECC 데이터에서 하나 이상의 에러들이 정정되는 때에 업데이트될 수 있다. 제 1 개수의 에러들이 정정된 에러들의 개수를 초과하는 때, 가령, 도4의 결정들(430, 438, 446, 454)에 응답하는 것과 같이, 정정불가능한 에러들을 갖는 것으로 서브-블록 ECC 동작 동안 식별되지 않은 다수의 서브-블록들 중 적어도 하나를 프로세싱하도록 에러 위치 검색이 제어될 수 있다. The number of corrected errors can be updated when one or more errors in the main ECC data are corrected. When the first number of errors exceeds the number of corrected errors, during sub-block ECC operation as having uncorrectable errors, such as, for example, in response to the decisions 430, 438, 446, 454 of FIG. 4. The error location search can be controlled to process at least one of the plurality of sub-blocks that are not identified.

비록, 도1의 분산형 ECC 시스템 데이터 저장 디바이스에 구현되지만, 다른 실시예에서는 분산형 ECC 시스템은 통신 시스템 등과 같은 다른 시스템들에서 구현될 수 있다. 예를 들어, 도1의 ECC 엔진(114)은 인코딩된 신호의 전송 동안에 발생한 에러들을 정정하는 무선 수신기에 구현될 수 있다. Although implemented in the distributed ECC system data storage device of FIG. 1, in other embodiments the distributed ECC system may be implemented in other systems, such as a communication system. For example, the ECC engine 114 of FIG. 1 may be implemented in a wireless receiver that corrects errors that occur during transmission of an encoded signal.

비록, ECC 페이지(120)는 4개의 서브-블록들(121-124)을 갖는 것으로 예시되어 있지만, 다른 실시예에서 ECC 페이지(120)는 4개 보다 많거나 혹은 4개 보다 적은 서브-블록들을 가질 수도 있다. 서브-블록들은 ECC 페이지(120) 내에서 같은 사이즈를 갖거나 혹은 서로 다른 사이즈들을 가질 수도 있다. 또한, 비록 도3의 서브-블록 동작(302)과 도4의 프로세싱은 서브-블록들(121-124)을 순차적으로 프로세싱하는 것으로 예시되었지만, 다른 실시예에서 서브-블록 프로세싱은 비-순차적인 순서로 수행될 수도 있으며 또는 하나 이상의 서브-블록들이 스킵될 수도 있다. 예를 들어, 메인 블록과 동시에 하나의 서브-블록을 프로세싱하고 그리고 서브-블록 프로세싱의 결과에 기초하여 메인 블록에서의 치엔 검색을 제어함으로써, 평균 ECC 디코드 지연(average ECC latency)이 감소할 수 있다. Although the ECC page 120 is illustrated as having four sub-blocks 121-124, in other embodiments the ECC page 120 may have more than four or fewer than four sub-blocks. May have The sub-blocks may have the same size or different sizes within the ECC page 120. Also, although the sub-block operation 302 of FIG. 3 and the processing of FIG. 4 are illustrated as processing the sub-blocks 121-124 sequentially, the sub-block processing in other embodiments is non-sequential. May be performed in order or one or more sub-blocks may be skipped. For example, by processing one sub-block concurrently with the main block and controlling the Chien search in the main block based on the results of the sub-block processing, the average ECC decode latency may be reduced. .

여기에 서술된 다양한 구성요소들은 블록 요소로 예시되고 그리고 일반적인 용어로 설명되었지만, 이들 구성요소들은 하나 이상의 마이크로프로세서들, 상태 머신들, 혹은 도1의 데이터 저장 디바이스(102)가 이들 구성요소에 속한 특정 기능들을 수행할 수 있게 하는 다른 회로들을 포함할 수 있다. 예를 들어, 도1의 서브-블록 ECC 디코더(140)와 데이터 블록 ECC 디코더(142)는, 가령, 하드웨어 제어기들, 상태 머신들, 논리 회로들 혹은 도1의 ECC 엔진(114)이 데이터 블록 ECC 디코더(142)에서의 프로세싱을 조절하도록 서브-블록 ECC 디코더(140)의 결과를 이용하여 분산형 ECC 프로세싱을 수행할 수 있게 하는 다른 구조들과 같은 물리적인 구성요소들을 나타낼 수 있다. Although the various components described herein are illustrated in block terms and described in general terms, these components may be associated with one or more microprocessors, state machines, or the data storage device 102 of FIG. 1. Other circuits may be included to enable certain functions to be performed. For example, the sub-block ECC decoder 140 and data block ECC decoder 142 of FIG. 1 may be, for example, hardware controllers, state machines, logic circuits, or the ECC engine 114 of FIG. The results of sub-block ECC decoder 140 may be used to represent physical components, such as other structures, that may perform distributed ECC processing to coordinate processing at ECC decoder 142.

도1의 서브-블록 ECC 디코더(140)와 데이터 블록 ECC 디코더(142)는 감소된 지연을 위하여, 전용 하드웨어(예컨대, 회로들)로 구현될 수도 있다. 대안적으로, 도1의 서브-블록 ECC 디코더(140)와 데이터 블록 ECC 디코더(142) 중 어느 하나 혹은 이들 둘다는, 마이크로프로세서를 이용하여 구현될 수도 있으며 또는 가령, 신드롬 생성, 키 방정식 생성, 혹은 에러 위치 검색 등과 같은 ECC 디코딩의 하나 이상의 스테이지들을 수행하도록 프로그래밍된 마이크로콘트롤러를 이용하여 구현될 수도 있다. 특정 실시예에서, 서브-블록 ECC 디코더(140)와 데이터 블록 ECC 디코더(142) 중 어느 하나 혹은 이들 둘다는, 프로세서에 의해서 실행되는 실행가능한 명령어들을 포함하며 그리고 상기 명령어들은 메모리(112)에 저장된다. 대안적으로 혹은 부가적으로, 제어기(110) 내에 포함될 수도 있는 프로세서에 의해서 실행되는 실행가능한 명령어들은, 가령, 판독 전용 메모리(RAM)(미도시)와 같은 메모리(112)의 일부가 아닌 별도의 메모리 위치에 저장될 수도 있다. 특정 실시예에서, 데이터 저장 디바이스(102)는, 하나 이상의 외부 디바이스들에 선택적으로 결합되도록 구성된 휴대용 디비이스가 될 수 있다. 하지만, 다른 실시예에서, 데이터 저장 디바이스(102)는 부착될 수도 있으며 또는 하나 이상의 호스트 디바이스 내에(가령, 휴대용 통신 디바이스의 하우징 내에) 내장될 수도 있다. 예를 들어, 데이터 저장 디바이스(102)는 무선 전화, 퍼스널 디지털 어시스턴스(PDA), 게이밍 디바이스 혹은 콘솔, 휴대용 네비게이션 디바이스, 혹은 내부의 비-휘발성 메모리를 이용하는 다른 디바이스 등의 패키징된 장치 내에 있을 수 있다. 일실시예에서, 데이터 저장 디바이스(102)는 예컨대, NAND, NOR, 다중레벨 셀(MLC), 분리된 비트라인 NOR(Divided bit-line NOR:DINOR), AND, 고용량성 커플링 라티오(high capacitive coupling ratio: HiCR), 비대칭 콘택리스 트랜지스터(Asymmetrical Contactless Transistor: ACT) 혹은 다른 플래시 메모리들 등과 같은 플래시 메모리, 소거 및 프로그래밍가능한 판독 전용 메모리(erasable programmable read-only memory: EPROM), 전기적으로 소거 및 프로그래밍가능한 판독 전용 메모리(electrically-erasable programmable read-only memory: EEPROM), 판독 전용 메모리(RAM), 1회성 프로그래밍가능한 메모리(one-time programmable memory: OTP), 혹은 다른 유형의 메모리들과 같은 비휘발성 메모리를 포함할 수 있다. The sub-block ECC decoder 140 and data block ECC decoder 142 of FIG. 1 may be implemented in dedicated hardware (eg, circuits) for reduced delay. Alternatively, either or both of the sub-block ECC decoder 140 and data block ECC decoder 142 of FIG. 1 may be implemented using a microprocessor or may include, for example, syndrome generation, key equation generation, Or may be implemented using a microcontroller programmed to perform one or more stages of ECC decoding, such as error location search. In a particular embodiment, either or both of sub-block ECC decoder 140 and data block ECC decoder 142 includes executable instructions executed by a processor and the instructions are stored in memory 112. do. Alternatively or additionally, executable instructions executed by a processor that may be included in controller 110 are, for example, separate portions of memory 112 such as read-only memory (RAM) (not shown). It may be stored in a memory location. In certain embodiments, data storage device 102 may be a portable device configured to be selectively coupled to one or more external devices. However, in other embodiments, data storage device 102 may be attached or may be embedded within one or more host devices (eg, in a housing of a portable communication device). For example, the data storage device 102 may be in a packaged device such as a wireless telephone, personal digital assistant (PDA), gaming device or console, portable navigation device, or other device using internal non-volatile memory. have. In one embodiment, the data storage device 102 is, for example, NAND, NOR, multilevel cell (MLC), divided bit-line NOR (DINOR), AND, high-capacity coupling ratio (high). flash memory, such as capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT) or other flash memories, erasable programmable read-only memory (EPROM), electrically erased and Nonvolatile, such as electrically-erasable programmable read-only memory (EEPROM), read-only memory (RAM), one-time programmable memory (OTP), or other types of memories It may include a memory.

본 명세서에 서술된 실시예들의 예시들은 다양한 실시예에 대한 일반적인 이해를 제공하기 위한 것이다. 본 개시 내용으로부터 다른 실시예들이 활용 및 유도될 수도 있는바, 따라서 본 발명의 범위를 벗어남이 없이 구조적 및 논리적 대체물 그리고 변경들이 가해질 수도 있다. 본 개시 내용은 다양한 실시예들의 임의의 혹은 모든 후속적인 개조 혹은 변동들을 포괄하도록 의도된다. 따라서, 본 개시 내용과 도면들은 제한적인 것이 아니라 예시적인 것으로 간주된다. The examples of the embodiments described herein are intended to provide a general understanding of the various embodiments. Other embodiments may be utilized and derived from the present disclosure, and thus structural and logical substitutions and changes may be made without departing from the scope of the present invention. This disclosure is intended to cover any or all subsequent modifications or variations of the various embodiments. Accordingly, the disclosure and the drawings are to be regarded in an illustrative rather than a restrictive sense.

전술한 본 발명은 예시로서 고려되며 그리고 제한적인 것으로 고려되지 않는다. 그리고 첨부된 청구항들은 본 발명의 범위에 속하는 이러한 모든 변형예들, 개선예들 및 다른 실시예들을 커버하도록 의도된다. 따라서, 법에 의해서 허용되는 한, 본 발명의 범위는 다음의 청구항들 및 그들의 등가물들에 대한 허용가능한 가장 넓은 범위의 해석에 의해서 결정되며, 그리고 전술한 발명의 상세한 설명에 의해서 한정 혹은 제한되지 않는다. The foregoing invention is to be considered as illustrative and not restrictive. And the appended claims are intended to cover all such variations, refinements, and other embodiments that fall within the scope of the invention. Thus, to the extent permitted by law, the scope of the invention is to be determined by the broadest possible interpretation of the following claims and their equivalents, and is not limited or limited by the foregoing description of the invention. .

Claims (24)

분산형 ECC 프로세싱 방법으로서,
메모리 디바이스의 제어기에서,
데이터 블록과 상기 데이터 블록에 대한 메인 에러 정정 코딩(ECC) 데이터를 포함하는 데이터를 수신하는 단계와, 상기 데이터 블록은 데이터의 제 1 서브-블록과 상기 제 1 서브-블록에 대응하는 제 1 ECC 데이터를 포함하며;
상기 메인 ECC 데이터를 이용하여 상기 데이터 블록을 프로세싱하도록 데이터 블록 ECC 동작을 개시하는 단계와;
상기 제 1 ECC 데이터를 이용하여 상기 제 1 서브-블록을 프로세싱하도록 서브-블록 ECC 동작을 개시하는 단계와; 그리고
상기 서브-블록 ECC 동작의 결과에 기초하여 상기 데이터 블록 ECC 동작의 에러 위치 검색을 선택적으로 개시하는 단계
를 포함하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
As a distributed ECC processing method,
In the controller of the memory device,
Receiving data comprising a data block and main error correction coding (ECC) data for the data block, the data block comprising a first sub-block of data and a first ECC corresponding to the first sub-block; Includes data;
Initiating a data block ECC operation to process the data block using the main ECC data;
Initiating a sub-block ECC operation to process the first sub-block using the first ECC data; And
Selectively initiating an error location search of the data block ECC operation based on a result of the sub-block ECC operation
Distributed ECC processing method comprising a.
제1항에 있어서,
제 1 서브-블록 내의 정정불가능한 에러들을 나타내는 상기 서브-블록 ECC 동작에 응답하여, 상기 에러 위치 검색은, 상기 제 1 서브-블록의 처음(beginning)에서 시작하도록 개시되는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
In response to the sub-block ECC operation indicating uncorrectable errors in a first sub-block, the error location search is initiated to begin at the beginning of the first sub-block. Processing method.
제1항에 있어서,
상기 에러 위치 검색은 치엔 검색(Chien search)을 포함하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
The error location search comprises a Chien search.
제1항에 있어서,
상기 데이터 블록은 제 2 서브-블록과 상기 제 2 서브-블록에 대응하는 제 2 ECC 데이터를 포함하며, 그리고 상기 서브-블록 ECC 동작은 또한 상기 제 2 ECC 데이터를 이용하여 상기 제 2 서브-블록을 프로세싱하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
The data block includes a second sub-block and second ECC data corresponding to the second sub-block, and the sub-block ECC operation also uses the second ECC data for the second sub-block. Distributed ECC processing method, characterized in that for processing.
제4항에 있어서,
상기 서브-블록 ECC 동작은 파이프라인화되며 그리고 상기 제 2 서브-블록을 프로세싱하는 것은 상기 제 1 서브-블록을 프로세싱하는 것과 적어도 일부분 중첩되는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
5. The method of claim 4,
The sub-block ECC operation is pipelined and processing the second sub-block at least partially overlaps with processing the first sub-block.
제1항에 있어서,
상기 데이터 블록 ECC 동작은 상기 데이터에 있는 에러들의 제 1 개수를 판별하며, 그리고
에러들의 상기 제 1 개수와 상기 서브-블록 ECC 동작에 의해서 정정된 에러들의 제 2 개수를 비교하는 단계
를 더 포함하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
The data block ECC operation determines a first number of errors in the data, and
Comparing the first number of errors with a second number of errors corrected by the sub-block ECC operation
Distributed ECC processing method further comprising.
제1항에 있어서,
상기 데이터 블록은 다수의 서브-블록들을 포함하며, 그리고
정정불가능한 에러들을 갖는다고 상기 서브-블록 ECC 동작 동안에 식별된 상기 다수의 서브-블록들 각각을 프로세싱하도록 상기 에러 위치 검색을 제어하는 단계
를 더 포함하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
The data block comprises a plurality of sub-blocks, and
Controlling the error location search to process each of the plurality of sub-blocks identified during the sub-block ECC operation as having uncorrectable errors
Distributed ECC processing method further comprising.
제7항에 있어서,
정정불가능한 에러들을 갖는다고 식별된 다수의 서브-블록들 각각에 대한 에러 위치 검색이 완료된 이후에,
정정된 에러들의 개수와 상기 데이터에 있는 에러들의 제 1 개수를 비교하는 단계와, 에러들의 상기 제 1 개수는 상기 데이터 블록 ECC 동작에 의해서 판별되며; 그리고
에러들의 상기 제 1 개수가 정정된 에러들의 개수를 초과한다는 것에 응답하여, 상기 메인 ECC 데이터를 프로세싱하도록 상기 에러 위치 검색을 제어하는 단계
를 더 포함하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 7, wherein
After the error location search for each of the plurality of sub-blocks identified as having uncorrectable errors is complete,
Comparing the number of corrected errors with a first number of errors in the data, wherein the first number of errors is determined by the data block ECC operation; And
In response to the first number of errors exceeding the number of corrected errors, controlling the error location search to process the main ECC data.
Distributed ECC processing method further comprising.
제8항에 있어서,
에러들의 상기 제 1 개수는 데이터 블록에 대응하는 키 방정식의 차수(an order of a key euqation)에 기초하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
9. The method of claim 8,
And wherein said first number of errors is based on an order of a key euqation corresponding to a data block.
제8항에 있어서,
메인 ECC 데이터에서 하나 이상의 에러들이 정정되는 때에, 정정된 에러들의 상기 개수를 업데이트하는 단계와; 그리고
에러들의 상기 제 1 개수가 정정된 에러들의 상기 개수를 초과하는 때, 정정불가능한 에러들을 갖는다고 상기 서브-블록 ECC 동작 동안에 식별되지 않은 다수의 서브-블록들 중 적어도 하나를 프로세싱하도록 상기 에러 위치 검색을 제어하는 단계
를 더 포함하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
9. The method of claim 8,
When one or more errors in the main ECC data are corrected, updating the number of corrected errors; And
When the first number of errors exceeds the number of corrected errors, the error location search to process at least one of a plurality of sub-blocks not identified during the sub-block ECC operation that have uncorrectable errors. Steps to control
Distributed ECC processing method further comprising.
제1항에 있어서,
상기 메모리 디바이스는 비휘발성 메모리를 더 포함하며, 그리고
상기 데이터를 수신하는 단계는,
상기 비휘발성 메모리로부터 데이터를 판독하고; 그리고
판독된 상기 데이터를 상기 제어기의 ECC 엔진으로 전송함에 의해서 수행되는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
The memory device further comprises a nonvolatile memory, and
Receiving the data,
Read data from the nonvolatile memory; And
Distributed ECC processing, characterized in that performed by transmitting the read data to the controller's ECC engine.
제1항에 있어서,
상기 데이터 블록 ECC 동작을 개시하는 단계는,
데이터 블록 ECC 디코더의 입력에 데이터를 제공하고; 그리고
상기 데이터에 대한 프로세싱을 시작하도록 상기 데이터 블록 ECC 디코더에 지시함으로써 수행되며, 그리고
상기 서브-블록 ECC 동작을 개시하는 단계는,
서브-블록 ECC 디코더의 입력에 데이터를 제공하고; 그리고
상기 데이터에 대한 프로세싱을 시작하도록 상기 서브-블록 ECC 디코더에 지시함으로써 수행되는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
Initiating the data block ECC operation,
Provide data to an input of a data block ECC decoder; And
Performed by instructing the data block ECC decoder to begin processing for the data, and
Initiating the sub-block ECC operation,
Provide data to an input of a sub-block ECC decoder; And
Distributed ECC processing, characterized by instructing the sub-block ECC decoder to begin processing for the data.
제12항에 있어서,
상기 데이터 블록 ECC 동작과 상기 서브-블록 ECC 동작은 동시에 개시되는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 12,
The data block ECC operation and the sub-block ECC operation are initiated simultaneously.
제1항에 있어서,
상기 서브-블록 ECC 동작의 결과에 기초하여 상기 데이터 블록 ECC 동작의 에러 위치 검색을 선택적으로 개시하는 상기 단계는,
상기 서브-블록 ECC 동작에 의해서 정정불가능한 서브-블록의 시작 비트 위치를 나타내는 시작 위치 데이터를 수신하고;
상기 서브-블록 ECC 동작에 의해서 정정불가능한 상기 서브-블록에 대응하는 ECC 데이터의 종료 비트 위치를 나타내는 종료 위치 데이터를 수신하고; 그리고
상기 시작 비트 위치에서 종료 비트 위치까지 상기 데이터를 순차적으로 프로세싱하도록 상기 에러 위치 검색을 개시함으로써 수행되는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
Selectively initiating an error location search of the data block ECC operation based on a result of the sub-block ECC operation,
Receive start position data indicating a start bit position of a sub-block that is uncorrectable by the sub-block ECC operation;
Receive end position data indicating an end bit position of ECC data corresponding to the sub-block that cannot be corrected by the sub-block ECC operation; And
And performing the error position search to sequentially process the data from the start bit position to the end bit position.
제1항에 있어서,
상기 데이터 블록 ECC 동작은 메인 신드롬(syndrome) 생성 프로세스, 메인 키 방정식 생성 프로세스, 및 메인 에러 위치찾기(location) 프로세스를 포함하며,
상기 서브-블록 ECC 동작은 상기 데이터 블록 내의 각각의 서브-블록에 대한 서브-블록 신드롬 생성 프로세스, 서브-블록 키 방정식 생성 프로세스, 및 서브-블록 에러 위치찾기 프로세스를 포함하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법.
The method of claim 1,
The data block ECC operation includes a main syndrome generation process, a main key equation generation process, and a main error location process,
The sub-block ECC operation includes a sub-block syndrome generation process, a sub-block key equation generation process, and a sub-block error locating process for each sub-block in the data block. ECC processing method.
데이터 저장 디바이스로서,
메모리와; 그리고
상기 메모리에 접속되는 제어기를 포함하고,
상기 제어기는 에러 정정 코딩(ECC) 엔진을 포함하며, 상기 에러 정정 코딩 엔진은,
상기 메모리로부터 검색된 데이터를 프로세싱하도록 된 데이터 블록 ECC 디코더와, 상기 데이터는 데이터 블록 및 상기 데이터 블록에 대한 메인 에러 정정 코딩(ECC) 데이터를 포함하며; 그리고
상기 데이터 블록의 서브-블록들과 상기 서브-블록들에 대응하는 ECC 데이터를 프로세싱하도록 된 서브-블록 ECC 디코더
를 포함하며,
상기 ECC 엔진은 상기 데이터에 대한 프로세싱을 상기 데이터 블록 ECC 디코더와 상기 서브-블록 ECC 디코더에서 동시에 개시하도록 된 것을 특징으로 하는 데이터 저장 디바이스.
1. A data storage device,
A memory; And
A controller connected to the memory,
The controller includes an error correction coding (ECC) engine, the error correction coding engine,
A data block ECC decoder adapted to process data retrieved from the memory, the data comprising a data block and main error correction coding (ECC) data for the data block; And
Sub-block ECC decoder configured to process sub-blocks of the data block and ECC data corresponding to the sub-blocks
Including;
The ECC engine is configured to initiate processing of the data at the data block ECC decoder and the sub-block ECC decoder simultaneously.
제16항에 있어서,
상기 ECC 엔진은, 상기 서브-블록 ECC 디코더의 결과에 기초하여 에러 위치 검색을 상기 데이터 블록 ECC 디코더에서 선택적으로 개시하도록 된 것을 특징으로 하는 데이터 저장 디바이스.
17. The method of claim 16,
And the ECC engine is configured to selectively initiate an error position search at the data block ECC decoder based on a result of the sub-block ECC decoder.
제17항에 있어서,
상기 ECC 엔진은 제어 회로를 더 포함하며,
상기 제어 회로는, 상기 서브-블록 ECC 디코더에 응답하며 그리고 상기 서브-블록 ECC 디코더에 의해서 정정불가능하다고 식별된 서브-블록들의 에러들을 검색하도록 상기 데이터 블록 ECC 디코더에서의 에러 위치 검색의 시작 위치를 선택하도록 된 것을 특징으로 하는 데이터 저장 디바이스.
18. The method of claim 17,
The ECC engine further includes a control circuit,
The control circuitry sets a starting position of an error location search in the data block ECC decoder to search for errors in sub-blocks responsive to the sub-block ECC decoder and identified as uncorrectable by the sub-block ECC decoder. And a data storage device for selecting.
제16항에 있어서,
상기 데이터 블록 ECC 디코더에서의 프로세싱은, 상기 서브-블록 ECC 디코더에서의 프로세싱과 적어도 부분적으로 중첩되는 것을 특징으로 하는 데이터 저장 디바이스.
17. The method of claim 16,
Processing at the data block ECC decoder is at least partially overlapping with processing at the sub-block ECC decoder.
데이터 저장 디바이스로서,
플래시 메모리와; 그리고
상기 플래시 메모리에 접속된 제어기를 포함하며,
상기 제어기는 에러 정정 코딩(ECC) 엔진을 포함하며, 상기 에러 정정 코딩 엔진은,
상기 플래시 메모리로부터 검색된 데이터를 프로세싱하도록 된 데이터 블록 ECC 디코더와, 상기 데이터는 데이터 블록 및 상기 데이터 블록에 대한 메인 에러 정정 코딩(ECC) 데이터를 포함하며;
상기 데이터 블록의 서브-블록들과 상기 서브-블록들에 대응하는 ECC 데이터를 프로세싱하도록 된 서브-블록 ECC 디코더와; 그리고
상기 서브-블록 ECC 디코더에 응답하며 그리고 상기 서브-블록 ECC 디코더에 의해서 정정불가능하다고 식별된 서브-블록들의 에러들을 검색하도록 상기 데이터 블록 ECC 디코더에서의 에러 위치 검색의 시작 위치를 선택하도록 된 제어 회로
를 포함하는 것을 특징으로 하는 데이터 저장 디바이스.
1. A data storage device,
Flash memory; And
A controller connected to the flash memory,
The controller includes an error correction coding (ECC) engine, the error correction coding engine,
A data block ECC decoder adapted to process data retrieved from the flash memory, the data comprising a data block and main error correction coding (ECC) data for the data block;
A sub-block ECC decoder configured to process sub-blocks of the data block and ECC data corresponding to the sub-blocks; And
Control circuitry configured to select a starting position of an error location search in the data block ECC decoder in response to the sub-block ECC decoder and to search for errors in sub-blocks identified as uncorrectable by the sub-block ECC decoder.
Data storage device comprising a.
제20항에 있어서,
상기 ECC 엔진은 상기 데이터에 대한 프로세싱을 상기 데이터 블록 ECC 디코더와 상기 서브-블록 ECC 디코더에서 동시에 개시하도록 된 것을 특징으로 하는 데이터 저장 디바이스.
21. The method of claim 20,
The ECC engine is configured to initiate processing of the data at the data block ECC decoder and the sub-block ECC decoder simultaneously.
제20항에 있어서,
상기 데이터 저장 디바이스는 호스트 디바이스에 착탈가능하게(removably) 결합되는 것을 특징으로 하는 데이터 저장 디바이스.
21. The method of claim 20,
And the data storage device is removably coupled to a host device.
제20항에 있어서,
상기 데이터 저장 디바이스는 내장된 메모리로서 호스트 디바이스에 결합되는 것을 특징으로 하는 데이터 저장 디바이스.
21. The method of claim 20,
And the data storage device is coupled to a host device as an embedded memory.
삭제delete
KR1020137007541A 2010-09-15 2011-09-12 System and method of distributive ecc processing KR101367351B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/882,357 2010-09-15
US12/882,357 US8392807B2 (en) 2010-07-23 2010-09-15 System and method of distributive ECC processing
PCT/US2011/051231 WO2012037032A2 (en) 2010-09-15 2011-09-12 System and method of distributive ecc processing

Publications (2)

Publication Number Publication Date
KR20130054385A KR20130054385A (en) 2013-05-24
KR101367351B1 true KR101367351B1 (en) 2014-02-26

Family

ID=44652042

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137007541A KR101367351B1 (en) 2010-09-15 2011-09-12 System and method of distributive ecc processing

Country Status (3)

Country Link
KR (1) KR101367351B1 (en)
CN (1) CN103098378B (en)
WO (1) WO2012037032A2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102131230B1 (en) * 2018-11-26 2020-07-08 현대오트론 주식회사 Method for self diagnosis of ram error detection logic in powertrain ecu system and apparatus thereof
CN112214172A (en) * 2020-10-12 2021-01-12 北京泽石科技有限公司 Encoding method and encoding device for QLC NAND

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090123012A (en) * 2007-03-23 2009-12-01 빅풋 네트웍스, 인크. Distributed processing system and method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070268905A1 (en) * 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
KR100845529B1 (en) * 2007-01-03 2008-07-10 삼성전자주식회사 Ecc controller for use in flash memory device and memory system including the same
JP4672743B2 (en) * 2008-03-01 2011-04-20 株式会社東芝 Error correction apparatus and error correction method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090123012A (en) * 2007-03-23 2009-12-01 빅풋 네트웍스, 인크. Distributed processing system and method

Also Published As

Publication number Publication date
WO2012037032A3 (en) 2012-06-28
KR20130054385A (en) 2013-05-24
WO2012037032A2 (en) 2012-03-22
CN103098378A (en) 2013-05-08
CN103098378B (en) 2014-08-20

Similar Documents

Publication Publication Date Title
US8392807B2 (en) System and method of distributive ECC processing
US9197247B2 (en) Memory system and error correction method
KR101369444B1 (en) Hybrid error correction coding to address uncorrectable errors
JP4856110B2 (en) Chain search apparatus and chain search method
US8122329B2 (en) Methods of operating memory devices using error correction and rereading techniques
KR101645906B1 (en) Stopping criteria for layered iterative error correction
US8719677B2 (en) Using ECC encoding to verify an ECC decode operation
US8812942B2 (en) Interleaving apparatuses and memory controllers having the same
US20120144261A1 (en) Error checking and correcting circuit, memory system compising error checking and correcting circuit, and related methods of operation
US10725863B2 (en) Memory system and method for operating the same
JP2009211742A (en) Error correcting device and error correcting method
US10985780B2 (en) Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller
US10461777B2 (en) Error locator polynomial decoder and method
US10097208B2 (en) Error locator polynomial decoder method
TWI474329B (en) Method for enhancing error correction capability, and associated memory device and controller thereof
CN112306735A (en) Error correction circuit, memory controller having the same, and memory system having the memory controller
KR101367351B1 (en) System and method of distributive ecc processing
KR101157516B1 (en) BCH codec with improved data processing efficiency
CN110795271A (en) Error correction circuit for performing error correction on user data and error correction method using the same
US10439644B2 (en) Error locator polynomial decoder and method
US20170017544A1 (en) Systems and methods for providing low latency read path for non-volatile memory
JP5121947B2 (en) Error correction apparatus and error correction method
TWI844591B (en) Reducing the latency of a syndrome-based quasi-cyclic decoder
TW201312578A (en) System and method of distributive ECC processing

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20170119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 6