KR101367351B1 - System and method of distributive ecc processing - Google Patents
System and method of distributive ecc processing Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1555—Pipelined decoder implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3723—Decoding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6561—Parallelized 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) 프로세싱에 관한 것이다. 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
일실시예에서, 호스트 디바이스(104)는 데이터 저장 디바이스(102)와 통신하도록 구성되며 그리고 데이터 저장 디바이스(102)에 저장된 데이터에 대한 요청들을 전송하도록 구성된다. 또한, 호스트 디바이스(104)는 상기 요청들에 응답하여 데이터 저장 디바이스(102)에 의해서 제공되는 데이터를 수신하도록 구성된다. 예를 들면, 호스트 디바이스(104)는 모바일 전화기, 음악 혹은 비디오 재생기, 게임 콘솔, 전자책 리더기(reader), 개인용 정보 단말기(personal digital assistant: PDA), 랩탑 컴퓨터 혹은 노트북 컴퓨터 등과 같은 컴퓨터, 혹은 임의의 다른 전자 디바이스들 혹은 이들의 임의의 조합을 포함할 수 있다. In one embodiment,
데이터 저장 디바이스(102)는 제어기(110)와 메모리(112)를 포함한다. 제어기(110)는 메모리(112)를 관리하도록 구성되며 그리고 데이터 저장 디바이스(102)가 호스트 디바이스(104)에 동작가능하게 연결되는 때에 호스트 디바이스(104)와 통신할 수 있게 한다. 제어기(110)는 ECC 엔진(114)을 포함하며 그리고 메모리(112)로부터 판독된 데이터를 수신하고, 수신된 데이터를 ECC 엔진(114)에 제공하도록 구성될 수 있다. 제어기(110)는 가령, 저장 혹은 전송 동안에 발생한 하나 이상의 에러들에 대한 정정이 수행된 디코딩된 데이터와 같은, ECC 엔진(114)에 의해서 출력된 데이터를 회수(retrieve)하도록 구성될 수 있으며, 그리고 디코딩된 정정 데이터를 호스트 디바이스(104)로 제공하도록 구성될 수 있다. The
메모리(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
대표적인 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)을 더 포함한다.
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 데이터(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
각각의 서브-블록들(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
도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.
메인 ECC 프로세싱 회로(202)와 서브-ECC 프로세싱 회로(204)에서의 프로세싱을 위한 병렬 프로세싱 경로들을 통하여 ECC 페이지(120)가 제공된다. 메인 ECC 프로세싱 회로(202)는 전체 ECC 페이지(120)에 대한 ECC 프로세싱을 수행할 수 있다. 예를 들어, 메인 ECC 프로세싱 회로(202)는, 신드롬들을 생성하고, ECC 페이지(120)에 있는 다수의 에러들을 나타내는 순서(order)를 갖는 키 방정식을 결정하고, 그리고 가령, 치엔 검색을 수행함으로써 에러들의 위치를 찾을 수 있다. 에러들이 정정된 결과적인 데이터는 정정된 데이터(240)로서 제공된다. An
서브-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
서브-ECC 프로세싱의 결과들(250)은 제어 회로(206)에 제공된다. 이러한 결과들은 서브-블록들(121-124) 각각의 서브-ECC 프로세싱 동안 검출된 다수의 에러들(254), 서브-블록들(121-124) 중 어떤 것이 정정불가능이었는지(즉, 서브-ECC 데이터(125-128)를 이용하여 정정될 수 있는 것보다 많은 에러들을 갖는)를 나타내는 하나 이상의 인디케이션들(252), 다른 정보들 또는 이들의 임의의 조합을 포함할 수 있다. 제어 회로(206)는, 서브-ECC 프로세싱 회로(204)로부터 반환된 결과들에 기초하여 메인 ECC 프로세싱 회로(202)의 프로세싱을 더욱 효율적으로 지속하기 위하여, 가령, 치엔 검색 시작 위치(260)와 치엔 검색 종료 위치(262) 등과 같은 하나 이상의 파라미터들을 결정하도록 구성될 수도 있다. The
예를 들어, 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
도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 동작(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
서브-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
제 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
제 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
제 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
제 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
제 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
만일, 제 3 서브-블록(123)의 서브-ECC 동작(302)이 정정불가능한 에러들을 나타내는 반면에 제 4 서브-블록(124)은 서브-ECC 동작(302)에 의해서 정정가능한 것으로 표시된다면, 제 3 서브-블록(123) 및 제 3 ECC 블록(127)만을 프로세싱하도록 치엔 검색 프로세싱(322)이 제어될 수 있다. If the sub-ECC operation 302 of the
메인 ECC 동작(304)에 대해서 치엔 검색 프로세싱(322)을 수행하기 위한 전체 프로세싱 시간(종래의 시스템에서는 ECC 페이지(120)의 길이에 비례할 수 있으며 그리고 디코딩 프로세스의 실질적인 부분(substantial proportion)을 구성함)은, 4배 이상 감소될 수 있다. 또 다른 일례로서, 서브-워드들(121-124) 중 그 어떤 것도 정정불가능한 에러들을 갖지 않음을 서브-ECC 동작(302)이 나타내는 경우, 메인 ECC 동작(304)의 치엔 검색 프로세싱(323)은 ECC 데이터(129)의 검색만으로 한정될 수 있으며 혹은 전부 스킵될 수도 있다. Total processing time for performing
도4a 내지 도4b를 참조하면, 방법(400)의 특정 실시예가 도시되는데, 상기 방법은 도4a에서 시작하여 도4b로 진행된다. 방법(400)은 서브-ECC 프로세싱의 결과에 기초하여 가령, 도2의 제어 회로(206)에 의해서 수행될 수 있는 프로세스를 예시한다. 도3의 데이터 흐름도를 참조하여 방법(400)이 설명된다. 도4a는 정정불가능한 에러들을 갖는 것으로 서브-ECC 동작에 의해서 표시되는 서브-블록들에 대해서 치엔 검색을 수행하고 그리고 ECC 워드의 모든 에러들이 정정되었는지의 여부를 판별하는 것을 도시한다. 도4b는 에러들이 정정되지 않은 채로 남아있는 경우(즉, 하나 이상의 서브-블록들이 서브-ECC 프로세싱 동안 오-정정되었음)의 프로세싱을 도시하며 그리고 정정불가능한 에러들을 갖지 않는 것으로 표시되는 서브-블록들에 대해 치엔 검색을 수행하는 것을 포함한다. 4A-4B, a particular embodiment of a
메인 키 생성 프로세싱이 완료되었다는 표시가 단계 402에서 수신된다. 예를 들어, 이러한 표시는, 도3의 키 생성 프로세싱(322)에 후속하여 수신될 수 있다. 단계 404에서, 제 1 서브-블록(121)이 정정불가능한 에러를 야기하는지에 대한 여부가 판별된다. 제 1 서브-블록(121)이 단계 404에서 정정불가능한 에러를 야기한다는 것에 응답하여, 제 1 서브-블록(121)의 처음(beginning)에서 시작하여 제 1 서브-ECC 데이터(125)의 끝까지 계속되는 치엔 검색이 메인 ECC 동작에서 개시될 수 있다. An indication is received at
단계 408에서, 제 2 서브-블록(122)이 정정불가능한 에러를 야기하는지에 대한 여부가 판별된다. 제 2 서브-블록(122)이 정정불가능한 에러를 야기하지 않는다고 판별되는 경우, 프로세싱은 단계 412로 진행한다. 그렇지 않고, 제 2 서브-블록(122)이 정정불가능한 에러를 야기한다라고 판별되는 경우, 제 2 서브-블록(122) 및 제 2 서브-블록(122)에 대한 제 2 ECC 데이터(126)에 대응하는 메인 ECC 치엔 검색이 메인 ECC에서 수행되며(단계 410) 그리고 프로세싱은 단계 412로 진행한다. In
단계 412에서, 제 3 서브-블록(123)이 정정불가능한 에러를 야기하는지에 대한 여부가 판별된다. 제 3 서브-블록(123)이 정정불가능한 에러를 야기하지 않는다고 판별되는 경우, 프로세싱은 단계 416으로 진행한다. 그렇지 않고, 제 3 서브-블록(123)이 정정불가능한 에러를 야기한다라고 판별되는 경우, 제 3 서브-블록(123) 및 제 3 서브-블록(123)에 대한 제 3 ECC 데이터(127)에 대응하는 메인 ECC 치엔 검색이 수행되며(단계 414) 그리고 프로세싱은 단계 416으로 진행한다. In
제 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
발견된 에러들의 합계가 메인 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
제 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
만일, 정정된 에러들의 개수가 메인 키 방정식의 차수와 동등하다고 단계 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
정정된 에러들의 개수가 메인 키 방정식의 차수와 동등하다고 단계 450에서 판별되는 경우, 검출된 모든 에러들은 정정되었으며 그리고 프로세싱은 단계 452에서 완료된다. 그렇지 않다면, 제 4 서브-블록(124)이 정정불가능한 에러들을 갖는다고 서브-ECC 동작(302)에 의해서 판별되었는지의 여부가 판별된다(단계 454). 만일, 제 4 서브-블록(124)이 정정불가능한 에러들을 갖지 않는다고 서브-ECC 동작(302)에 의해서 판별되었다면, 메인 ECC 동작(304)의 치엔 검색 프로세싱이 제 4 서브-블록(124) 및 제 4 서브-ECC 데이터(128)에 대해 수행된다(단계 456). If at
정정된 에러들의 총 개수가 메인 키 방정식의 차수와 동등한지의 여부가 단계 458에서 판별된다. 만일 그렇다면, 검출된 모든 에러들은 정정되었으며 그리고 프로세싱은 단계 460에서 종료한다. 단계 458에서, 정정된 에러들의 개수가 메인 키 방정식의 차수와 동등하지 않다면, 발생된 에러들의 개수는 메인 ECC 동작(304)의 용량을 넘어서는 것이며, 단계 462에서 에러가 생성되고 그리고 프로세싱은 종결된다. It is determined at
도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
메인 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
제 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
데이터 블록 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
데이터 블록 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,
데이터 블록이 복수의 서브-블록들을 포함하는 경우, 에러 위치 검색은 서브-블록 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
정정된 에러들의 개수는, 메인 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
비록, 도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 페이지(120)는 4개의 서브-블록들(121-124)을 갖는 것으로 예시되어 있지만, 다른 실시예에서 ECC 페이지(120)는 4개 보다 많거나 혹은 4개 보다 적은 서브-블록들을 가질 수도 있다. 서브-블록들은 ECC 페이지(120) 내에서 같은 사이즈를 갖거나 혹은 서로 다른 사이즈들을 가질 수도 있다. 또한, 비록 도3의 서브-블록 동작(302)과 도4의 프로세싱은 서브-블록들(121-124)을 순차적으로 프로세싱하는 것으로 예시되었지만, 다른 실시예에서 서브-블록 프로세싱은 비-순차적인 순서로 수행될 수도 있으며 또는 하나 이상의 서브-블록들이 스킵될 수도 있다. 예를 들어, 메인 블록과 동시에 하나의 서브-블록을 프로세싱하고 그리고 서브-블록 프로세싱의 결과에 기초하여 메인 블록에서의 치엔 검색을 제어함으로써, 평균 ECC 디코드 지연(average ECC latency)이 감소할 수 있다. Although the
여기에 서술된 다양한 구성요소들은 블록 요소로 예시되고 그리고 일반적인 용어로 설명되었지만, 이들 구성요소들은 하나 이상의 마이크로프로세서들, 상태 머신들, 혹은 도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
도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
본 명세서에 서술된 실시예들의 예시들은 다양한 실시예에 대한 일반적인 이해를 제공하기 위한 것이다. 본 개시 내용으로부터 다른 실시예들이 활용 및 유도될 수도 있는바, 따라서 본 발명의 범위를 벗어남이 없이 구조적 및 논리적 대체물 그리고 변경들이 가해질 수도 있다. 본 개시 내용은 다양한 실시예들의 임의의 혹은 모든 후속적인 개조 혹은 변동들을 포괄하도록 의도된다. 따라서, 본 개시 내용과 도면들은 제한적인 것이 아니라 예시적인 것으로 간주된다. 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) 데이터를 포함하는 데이터를 수신하는 단계와, 상기 데이터 블록은 데이터의 제 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 서브-블록 내의 정정불가능한 에러들을 나타내는 상기 서브-블록 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.
상기 에러 위치 검색은 치엔 검색(Chien search)을 포함하는 것을 특징으로 하는 분산형 ECC 프로세싱 방법. The method of claim 1,
The error location search comprises a Chien search.
상기 데이터 블록은 제 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.
상기 서브-블록 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.
상기 데이터 블록 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.
상기 데이터 블록은 다수의 서브-블록들을 포함하며, 그리고
정정불가능한 에러들을 갖는다고 상기 서브-블록 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.
정정불가능한 에러들을 갖는다고 식별된 다수의 서브-블록들 각각에 대한 에러 위치 검색이 완료된 이후에,
정정된 에러들의 개수와 상기 데이터에 있는 에러들의 제 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.
에러들의 상기 제 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.
메인 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.
상기 메모리 디바이스는 비휘발성 메모리를 더 포함하며, 그리고
상기 데이터를 수신하는 단계는,
상기 비휘발성 메모리로부터 데이터를 판독하고; 그리고
판독된 상기 데이터를 상기 제어기의 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.
상기 데이터 블록 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.
상기 데이터 블록 ECC 동작과 상기 서브-블록 ECC 동작은 동시에 개시되는 것을 특징으로 하는 분산형 ECC 프로세싱 방법. The method of claim 12,
The data block ECC operation and the sub-block ECC operation are initiated simultaneously.
상기 서브-블록 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.
상기 데이터 블록 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.
상기 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.
상기 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.
상기 데이터 블록 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.
상기 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.
상기 데이터 저장 디바이스는 호스트 디바이스에 착탈가능하게(removably) 결합되는 것을 특징으로 하는 데이터 저장 디바이스. 21. The method of claim 20,
And the data storage device is removably coupled to a host device.
상기 데이터 저장 디바이스는 내장된 메모리로서 호스트 디바이스에 결합되는 것을 특징으로 하는 데이터 저장 디바이스. 21. The method of claim 20,
And the data storage device is coupled to a host device as an embedded memory.
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)
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)
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)
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 |
-
2011
- 2011-09-12 KR KR1020137007541A patent/KR101367351B1/en active IP Right Grant
- 2011-09-12 CN CN201180043802.5A patent/CN103098378B/en active Active
- 2011-09-12 WO PCT/US2011/051231 patent/WO2012037032A2/en active Application Filing
Patent Citations (1)
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 |