KR102081588B1 - Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 - Google Patents

Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 Download PDF

Info

Publication number
KR102081588B1
KR102081588B1 KR1020130094222A KR20130094222A KR102081588B1 KR 102081588 B1 KR102081588 B1 KR 102081588B1 KR 1020130094222 A KR1020130094222 A KR 1020130094222A KR 20130094222 A KR20130094222 A KR 20130094222A KR 102081588 B1 KR102081588 B1 KR 102081588B1
Authority
KR
South Korea
Prior art keywords
data
chunk data
chunk
error bit
nonvolatile memory
Prior art date
Application number
KR1020130094222A
Other languages
English (en)
Other versions
KR20150017948A (ko
Inventor
김현식
조영진
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to KR1020130094222A priority Critical patent/KR102081588B1/ko
Priority to US14/314,774 priority patent/US9602134B2/en
Publication of KR20150017948A publication Critical patent/KR20150017948A/ko
Application granted granted Critical
Publication of KR102081588B1 publication Critical patent/KR102081588B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • 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/17Burst error correction, e.g. error trapping, Fire codes
    • 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/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • 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/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • 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/6502Reduction of hardware complexity or efficient processing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • 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/1515Reed-Solomon codes
    • 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/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • 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/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
    • 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/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/251Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with block coding
    • 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/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/256Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with trellis coding, e.g. with convolutional codes and TCM

Abstract

LDPC(low density parity check) 코드를 사용하는 ECC(error correction code) 디코더의 동작 방법이 제공된다. ECC 디코더는 비휘발성 메모리 장치로부터 제1 청크 데이터와 상기 제 1 청크 데이터에 연속한 제2 청크 데이터를 제공받고, 제 1 청크 데이터의 에러 비트 정정을 수행한다. 그리고 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함할때, 상기 제 2 청크 데이터는 에러 비트 정정을 수행하지 않는다.

Description

ECC 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러{the method of ECC decoder operation and the memory controller including it}
본 발명은 ECC 디코더 동작 방법 및 ECC 디코더를 포함하는 메모리 컨트롤러에 관한것이다.
메모리 장치는 휘발성(volatile) 메모리 장치와 비휘발성(non-volatile) 메모리 장치로 분류된다. 휘발성 메모리 장치는 전원(power)이 제거될 때 데이터는 유지되지 않는다. 그러나, 비휘발성 메모리 장치는 전원이 제거되더라도 데이터는 유지된다.
비휘발성 메모리 장치의 예들로서 ROM(read only memory), 또는 EEPROM (Electrically Erasable Programmable Read-Only Memory) 등이 있다.
플래시(flash) EEPROM으로 소개된 플래시 메모리 장치의 구조와 동작은 종래의 EEPROM의 구조와 동작과 서로 다르다. 플래시 메모리 장치는 블락(block) 단위로 전기적 소거(electric erase) 동작을 수행하고 비트 단위로 프로그램 동작을 수행할 수 있다.
본 발명이 해결하려는 기술적 과제는, 메모리 컨트롤러의 에러 비트 정정 속도를 향상시키는 ECC 디코더 및 그 동작 방법을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 ECC 디코더의 동작 방법의 일 태양(aspect)은 비휘발성 메모리 장치로부터 제1 청크 데이터와 상기 제 1 청크 데이터에 연속한 제2 청크 데이터를 제공받는다. 그리고, 제 1 청크 데이터의 에러 비트 정정을 수행한다. ECC 디코더는 LDPC(low density parity check) 코드(code)를 사용하여 에러 비트 정정을 수행한다. 그리고 ECC 디코더는 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함할때, 제 2 청크 데이터는 에러 비트 정정을 수행하지 않는다. 제 1 청크 데이터는 ECC 수행 단위이다. 제 1 청크 및 제 2 청크 데이터는 데이터는 하드 디시젼 데이터일 수 있고, 하드 디시젼 데이터가 상기 정정 불가능한 에러 비트를 포함할때, ECC 디코더는 소프트 디시젼 데이터를 제공받는다. 또한, 제 1 청크 및 제 2 청크 데이터는 데이터는 소프트 디시젼 데이터일 수 있다, 그리고 1 청크 데이터가 정정 불가능한 에러 비트를 포함할때, ECC 디코더는 정정 불가능 지시 신호(uncorrectable error signal)를 마이크로프로세서로 제공한다. 또는 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함할때, ECC 디코더는 제 2 청크 데이터의 에러 비트 정정 중단 신호(stop signal)를 마이크로프로세서로 제공한다. 제1 청크 데이터와 제2 청크 데이터는 하나의 페이지에 포함되고, 상기 제 1 청크 데이터가 정정불가능한 에러 비트를 포함할때, 상기 페이지의 에러 비트 정정은 중지된다. 또한 제1 청크 데이터와 제2 청크 데이터는 인풋 버퍼(input buffer)에 저장된다. 그리고 비휘발성 메모리 장치와 ECC 디코더는 서로 처리 속도가 상이한 버스 인터페이스를 구비한다.
상기 과제를 해결하기 위한 본 발명의 메모리 컨트롤러의 태양(aspect)은 메모리 컨트롤러는 마이크로프로세서 및 마이크로프로세서와 버스로 연결되어 있으며, LDPC 코드(code)를 사용하여 에러 비트 정정을 수행하는 ECC 디코더(decoder)를 포함한다. ECC 디코더는 페이지 데이터 내의 적어도 하나의 청크 데이터가 정정 불가능한 에러 비트를 포함하면, 상기 페이지 데이터를 정정 불가능 데이터로 판단하고, 에러 비트 정정 중단 신호(stop signal)를 상기 마이크로프로세서로 제공하는 것을 포함한다. ECC 디코더는 제 1 청크 데이터의 데이터 사이즈 및 어드레스를 저장하는 큐를 더 포함한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
메모리 컨트롤러는 ECC 수행 단위인 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함하면, 제 1 청크 데이터에 연속한 제 2 청크 데이터는 에러 비트 정정을 수행하지 아니한다. 제 2 청크 데이터를 디코딩 수행하지 아니한 것은 페이지 데이터의 디코딩 시간을 단축시키고, 메모리 시스템 에러 비트 정정 수행능력의 성능을 향상시킨다.
도 1은 본 발명의 몇몇 실시 예들에 따른 비휘발성 메모리 시스템을 보여준다.
도 2a는 비휘발성 메모리 장치로부터 제공받은 페이지 단위의 데이터를 보여주고, 도 2b는 페이지 단위의 일부인 ECC 수행 단위인 청크 데이터를 보여준다.
도 3은 도 1의 메모리 컨트롤러를 상세히 도시한 블락도이다.
도 4는 도 1 및 도 3의 ECC 디코더를 상세하게 도시한 블록도이다.
도 5는 도 1 및 도 3의 ECC 디코더와 비휘발성 메모리 장치를 도시한 블락도이다.
도 6은 본 발명의 실시예들에 따른 ECC 디코더의 동작을 보여주는 개념도이다.
도 7은 본 발명의 몇몇 실시예들에 따른 비휘발성 메모리 시스템의 의 동작 순서도이다.
도 8은 본 발명의 실시 예에 따른 메모리 컨트롤러 및 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 9은 본 발명의 다른 실시 예에 따른 메모리 컨트롤러및 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 10은 본 발명의 또 다른 실시 예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 11는 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러 및 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 12은 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러 및 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 13은 도 12에 도시된 전자 장치를 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 몇몇 실시예들에 따른 비휘발성 메모리 시스템을 보여준다.
도 1을 참조하면, 본 발명의 몇몇 실시예들에 따른 비휘발성 메모리 시스템(1000)은 메모리 컨트롤러(1200) 및 비휘발성 메모리 장치(1100)를 포함한다.
메모리 컨트롤러(1200)는 비휘발성 메모리 장치(1100)를 전반적으로 제어 한다. 비휘발성 메모리 장치(1100)는 메모리 컨트롤러(1200)의 제어에 따라 소거, 쓰기 또는 읽기 동작 등을 수행할 수 있다. 이를 위해 비휘발성 메모리 장치(1100)는 입출력 라인을 통해 커맨드(CMD), 어드레스(ADDR), 그리고 데이터(DATA)를 입력 받는다. 또한, 비휘발성 메모리 장치(1100)는 전원 라인을 통해 전원(PWR)을 입력 받고, 제어 라인을 통해 제어 신호(CTRL)를 입력받는다. 제어 신호(CTRL)은 예를 들어, 커맨드 래치 인에이블(CLE), 어드레스 래치 인에이블(ALE), 칩 인에이블(nCE), 쓰기 인에이블(nWE), 읽기 인에이블(nRE) 등이 포함할 수 있다.
비휘발성 메모리 장치(1100)는 플래시 메모리(Flash Memory), EEPROM(electrically Erasable Programmable Read-Only Memory), FRAM(ferroelectrics random access memory), PRAM(phase change random access memory), MRAM(magneto resistive random access memory)를 포함할 수 있으나, 이에 한정되지 않는다. 도 1에서는 예시적으로 낸드 플래시 메모리 장치를 도시한다. 도 1을 참조하면, 비휘발성 메모리 장치(1100)는 메모리 컨트롤러(1200)부터 제공받은 데이터를 저장하는 스토리지 유닛(storage unit) 역할을 할 수 있다. 비휘발성 메모리 장치(1100)는 데이터를 저장하는 복수개의 셀 어레이를 포함할 수 있다. 셀 어레이는 복수개의 플래인(PL1~PLn)(단, n은 자연수)을 포함할 수 있다. 각각의 플래인(PL1~PLn)은 복수개의 블록(BLK1~BLKm)(단, m은 자연수)을 포함하며, 각각의 블록(BLK1~BLKm)은 복수개의 페이지(PAGE1~PAGEk)(단, k는 자연수)를 포함한다. 여기서, 블록(BLK1~BLKm)은 이레이즈 명령어를 수행하는 단위, 즉 이레이즈 동작이 동시에 이루어지는 단위일 수 있다. 페이지(PAGE1~PAGEk)는 프로그램 및 리드 명령어를 수행하는 단위, 즉, 프로그램 및 리드 동작이 동시에 이루어지는 단위일 수 있다.
복수개의 블록(BLK1~BLKm)은 호스트로부터 제공받은 일반 데이터를 저장하는 유저 데이터 블록과, 3 비트 이상의 MLC 메모리 장치에서의 SLC(single level cell) 백업 블록과, 또는 예를 들면, 어드레스 맵핑 정보를 저장하는 메타 데이터(meta data) 블록을 포함할 수 있다.
한편, 비휘발성 메모리 장치로 예를 들면, 플래시 메모리의 메모리 블록에는 결함이 생길 수 있다. 결함이 있는 블록은 배드 블록(bad block)으로 불린다. 배드 블록은 다양한 원인에 의해 발생할 수 있다. 예시적으로, 열 페일(column fail), 간섭 문제(disturbance), 마모(wear-out) 등에 의해 배드 블록이 발생될 수 있다.
메모리 컨트롤러(1200)는 에러 비트 정정을 수행하는 ECC 엔진(1210)을 포함한다. ECC 엔진(1210)은 ECC 인코더(1211) 및 ECC 디코더(1212)를 포함한다. ECC 인코더(1211)는 비휘발성 메모리 장치(1100)에 프로그램될 데이터를 오류정정 인코딩을 하여, 패리티(parity) 비트가 부가된 데이터를 형성한다. 패리티 비트는 비휘발성 메모리 장치(1100)에 저장될 수 있다. 또한, ECC 디코더(1212)는 비휘발성 메모리(1100)로부터 리드한 데이터에 대하여 에러 정정 디코딩을 수행하고 수행 결과에 따라 상기 에러 정정 디코딩의 성공 여부를 판단하고, 판단 결과에 따라 지시 신호를 출력한다. ECC 디코더(1212)는 ECC 인코딩시에 생성된 페리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정 할 수 있다. ECC 엔진(1210)은 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없다. 이러한 경우, 에러 정정 페일(fail)이 발생한다.
ECC 엔진(1210)은 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 할 수 있으며 이에 한정되는 것은 아니다.
ECC 엔진(1210)은 오류정정을 위한 회로, 시스템 또는 장치를 모두 포함할 수 있다. 상기 설명한 바와 같이, 에러 비트 정정 한계치보다 에러 개수가 많은 경우, ECC 엔진(1210)은 에러 비트 정정 페일(fail)을 발생시킬 수 있다. 본 발명의 몇몇 실시예들에 의하면, ECC 엔진(1210)이 LDPC(low density parity check) 코드를 사용하면, 로그 라이크후드 래시오 (log likehood ratio)정보를 사용하고, 반복하여 데이터의 에러 비트 정정한다. ECC 디코더(1212)가 LDPC 코드를 사용하여, 데이터의 에러 비트를 정정하면, 에러 비트 정정 능력은 향상되나, 정정 수행 시간이 길어질 수 있다. 따라서, 에러 비트들이 많이 발생한 경우, ECC 디코더(1212)는 에러 비트 정정 처리 속도가 급격히 느려진다. 이에 따라, 비휘발성 메모리 시스템(1000)의 성능이 급격히 하락한다.
ECC 디코더(1212)는 비휘발성 메모리 장치(1100)로부터 페이지(PAGE1~PAGEk) 단위의 데이터를 제공받는다. 여기서, ECC 수행 단위는 청크 데이터이고, 하나의 페이지(PAGE1~PAGEk)는 다수의 청크 데이터로 구분할 수 있다. ECC디코더(1212)는 청크 데이터의 에러 비트를 정정한다.
한편, 본 발명의 몇몇 실시예에 따르면, ECC 디코더(1212)는 제 1 청크 데이터의 에러 비트 정정을 수행하고, 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함할 때, 제 1 청크에 연속된 제 2 청크 데이터의 에러 비트 정정을 수행하지 않는다. 즉, 하나의 페이지(예를 들어, PAGE1)의 에러 비트 정정을 수행하던 중에, 페이지(PAGE1)의 일부 청크 데이터를 정정할 수 없으면, 페이지(PAGE1)의 나머지 청크 데이터에 대한 에러 비트 정정 동작을 중단한다. 이에 대해서는 도 2 내지 도 5에서 상세히 기술하도록 한다.
도 2a는 비휘발성 메모리 장치로부터 제공받은 페이지 단위의 데이터를 보여주고, 도 2b는 페이지 단위의 일부인 ECC 수행 단위인 청크 데이터를 보여준다.
도 1 및 도 2a를 참조하면, 비휘발성 메모리 장치(1100)는 페이지(PAGE1~PAGEk) 단위의 데이터(예: 8K byte)를 메모리 컨트롤러(1200)로 제공한다.
도 2a를 참조하면, 페이지 데이터는 복수 개의 청크 데이터를 포함한다. 예를 들면, 페이지 데이터가 8K 바이트 데이터이고, 청크 데이터가 1K 바이트 데이터이면, 하나의 페이지 데이터는 8개의 청크 데이터를 포함한다.
도 2b를 참조하면, 청크 데이터는 유저 데이터 및 ECC 디코딩을 위한 패리티 데이터를 포함한다. 청크 데이터는 ECC 수행 단위이고, ECC 디코더(1212)는 청크 데이터의 에러 비트 정정을 수행한다.
도 3은 도 1의 메모리 컨트롤러를 상세히 도시한 블락도이다.
도 3을 참조하면, 메모리 컨트롤러(1200)는 마이크로 프로세서(microprocessor;1240), 램(RAM;1230), 롬(ROM;1260), ECC 엔진(1210), 호스트 인터페이스(1220) 및 비휘발성 메모리 인터페이스(1250)를 포함하며, 상기 컨트롤러(1200)의 구성요소들(1210, 1220, 1230, 1240, 1250, 1260)은 버스(bus)(1270)를 통해서 전기적으로 연결될 수 있다.
비휘발성 메모리 인터페이스(1250)는 메모리 컨트롤러(1200)와 비휘발성 메모리 장치(1100) 사이에 인터페이스를 수행할 수 있다.
비휘발성 메모리 인터페이스(1250)를 통해서 도 1에서 개시한 바와 같이, 마이크로 프로세서(1240)가 제어하는 명령어가 비휘발성 메모리 장치(1100)로 제공될 수 있으며, 또한 컨트롤러(1200)로부터 비휘발성 메모리 장치(1100)로 데이터가 전송될 수 있다. 또한, 비휘발성 메모리 장치(1100)로부터 출력되는 데이터는 비휘발성 메모리 인터페이스(1250)를 통해서 컨트롤러(1200)로 제공된다.
호스트 인터페이스(1220)는 미리 결정된 프로토콜에 따라서 상기 메모리 컨트롤러(1200)를 포함한 메모리 시스템(1000)과 호스트 사이의 인터페이스를 수행할 수 있다.
호스트 인터페이스(1220)는 외부 호스트와 USB (Universal Serial Bus), SCSI (Small Computer System Interface), PCI express, ATA, PATA (Parallel ATA), SATA (Serial ATA), SAS (Serial Attached SCSI) 등을 통해서 통신할 수 있다.
마이크로 프로세서(1240)는 회로, 로직, 코드 또는 이들의 조합으로 구현가능하며, 마이크로 컨트롤러(1240)를 포함한 메모리 시스템(1000)의 동작을 전반적으로 제어한다. 메모리 시스템(1000)에 전원이 인가되면, 마이크로 프로세서(1240)는 롬(1260)에 저장된 상기 메모리 시스템(1000) 동작을 위한 펌웨어(firmware)를 램(1230)상에서 구동시킴으로써 상기 메모리 시스템(1000)의 전반적인 동작을 제어할 수 있다. 또한, 마이크로 프로세서(1240)는 호스트에서 인가되는 명령어를 해석하고, 해석 결과에 따라 비휘발성 메모리 장치(1100)의 전반적인 동작을 제어할 수 있다.
롬(1260)은 메모리 시스템(1000)의 구동 펌웨어 코드를 저장할 수 있으며, 본 발명의 범위가 이에 한정되는 것은 아니다. 펌웨어 코드는 롬(1260)이외의 비휘발성 메모리 장치(1100) 내에, 예를 들면, 낸드 플래시 메모리 장치에 저장될 수도 있다.
마이크로 프로세서(1240)의 제어 또는 개입이란, 마이크로 프로세서(1240)의 하드웨어적인 직접적 제어뿐만 아니라, 마이크로 프로세서(1240)에의해서 구동되는 소프트웨어인 펌웨어의 간섭도 포함 할 수 있다.
또한, 롬(1260)은 ECC 엔진(1210)이 사용하는 패리티 체크 매트릭스를 저장할 수 있다. 이에 대해서는 후술하도록 한다.
램(1230)은 버퍼(buffer)역할을 하는 메모리로, 호스트 인터페이스(1220) 를 통하여 입력되는 최초 명령어, 데이터, 각종 변수들를 저장하거나 비휘발성 메모리 장치(1100)에서 출력되는 데이터들을 저장할 수 있다. 그리고, 비휘발성 메모리 장치(1100)로 입력되는 데이터, 비휘발성 메모리 장치(1100)로 출력되는 데이터, 각종 파라미터 및 변수들을 저장할 수 있다.
ECC 엔진(1210)은 에러 비트 정정을 수행한다. ECC 엔진(1210)은 ECC 인코더(1211)와 ECC 디코더(1212)를 포함한다.
ECC 인코더(1211)는 메모리 시스템(1000)의 호스트 인터페이스(1220)를 통해 입력되는 데이터의 오류정정 인코딩을 하여, 패리티(parity) 비트가 부가된 코드워드(codeword)를 생성한다. 코드워드는 비휘발성 메모리 장치(1100)에 저장될 수 있다.
ECC 디코더(1212)는 출력된 데이터에 대하여 에러 정정 디코딩을 수행하고 수행 결과에 따라 상기 에러 정정 디코딩의 성공 여부를 판단하고 판단 결과에 따라 지시 신호를 출력한다. 리드한 데이터는 ECC 디코더(1212)로 전송되고, ECC 디코더(1212)는 페리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정 할 수 있다. 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, ECC 디코더(1212)는 에러 비트를 정정할 수 없고, 에러 정정 실패(fail)가 발생한다.
ECC 엔진(1210)이 사용하는 코드는 도 1에서 기술한 바와 같으나, 예시적으로 LDPC(low density parity check) code를 사용하는 ECC 엔진(1210)에 대해서 설명하도록 한다. 본 발명의 몇몇 실시예들에 따르면, 발명의 ECC 엔진(1210)은 아래의 수학식 1을 만족하는 패리티 검사 행렬 H를 갖는다.
Figure 112013072002425-pat00001
(단, S는 신드롬, H는 패리티 검사 행렬, cT는 부호어 c의 전치 행렬)
ECC 디코더(1212)는 패리티 체크 매트릭스를 사용하여, 비휘발성 메모리 장치(1100)로 받은 데이터의 에러 비트 정정을 수행한다. ECC 디코더(1212)는 비휘발성 메모리 장치로부터 하드 디시젼(hard decision data)를 제공받거나, 하드 디시젼 데이터에 부가되는 확률 정보인 소프트 디시젼 데이터(soft decision data)를 제공받을 수 있다. ECC 디코더(1212)는 하드 디시젼 데이터가 에러 비트 정정에 실패하면, 소프트 디시젼 데이터를 사용하여 에러 비트 정정을 수행한다.
ECC 디코더(1212)는 비휘발성 메모리 장치(1100)로부터 페이지 단위의 데이터를 제공받을 수 있다. ECC 수행 단위인 청크 데이터를 사용하여 에러 비트 정정을 수행한다. 도 2에서 설명한 바와 같이, 페이지 데이터는 복수 개의 청크 데이터를 포함할 수 있다. 예를 들면, 페이지 데이터가 8K 바이트 데이터이고, 청크 데이터가 1K 바이트 데이터이면, 하나의 페이지 데이터는 8개의 청크 데이터를 포함한다.
특히, ECC 디코더(1212)는 제 1 청크 데이터의 에러 비트 정정을 수행하고, 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함할 때, 제 1 청크 데이터에 연속된 제 2 청크 데이터의 에러 비트 정정을 수행하지 않는다. 그리고, ECC 디코더(1212)는 마이크로프로세서(1240)로 정정 실패(fail) 신호 또는 정정 불가능 지시 신호(uncorrectable signal)를 제공하고, 동시에 에러 비트 정정 종료 신호를 제공할 수 있. 따라서, 마이크로 프로세서(1240)는 페이지 데이터가 하드 디시젼 데이터일 때는, 하드 디시젼 데이터의 에러 비트 정정은 실패이고, 하드 디시젼 데이터의 에러 비트 정정은 종료한다. 그리고, 하드 디시젼 데이터의 에러 비트 정정이 실패일때, 마이크로프로세서(1240)는 비휘발성 메모리 장치(1100)가 소프트 디시젼 데이터를 제공하도록 명령할 수 있다. LDPC 디코더(1212)는 제공 받은 소프트 디시젼 데이터를 사용하여, 제 1 청크 소프트 디시젼 데이터의 에러 비트 정정을 수행한다. 그리고, 제 1 청크 소프트 디시젼 데이터의 에러 비트 정정이 실패할때, 마이크로 프로세서(1240)는 비휘발성 메모리 장치에, 예를 들면, 리드 전압을 바꾸어 다시 리드를 수행하는 리드 리트라이(retry)동작을 수행할 수 있다. 리드 리트라 동작은 하드 디시젼 및 소프트 디시젼 데이터에 해당하는 리드 전압보다 낮은 전압을 인가하여, 리드 동작을 다시 수행한다.
이와 같이 에러 비트 정정 종료를 하지 않으면, 다음과 같은 문제가 발생할 수 있다. 구체적으로, LDPC 코드를 사용하는 ECC 디코더(1212)는 반복(iteration) 동작을 통해서 에러 비트 정정을 시도한다. 제 1 청크 데이터가 예를 들면 반복 한계치인 20회의 반복(iteration) 동작에도 정정 불가능한 에러 비트가 존재하면, 제 1 청크 데이터에 연속된 데이터인 제 2 청크 데이터 또한 20회 이상의 반복 동작을 수행할 것이고, 정정 불가능한 에러 비트를 포함할 확률이 높다. 따라서, ECC 디코더(1212)는 페이지 데이터의 일부인 제 1 청크 데이터가 정정 불가능하면 제 1 청크 데이터에 연속된 제2 데이터는 에러 비트 정정을 하지 않고, 제 1 청트 데이터가 포함된 페이지 데이터 전체가 정정할 수 없다는 정정 불가능 지시 신호(uncorrectable error signal) 및 에러 비트 정정 중단 신호(stop signal)를 마이크로 프로세서(1240)으로 제공하다. 제 1 청크 데이터는 페이지 데이터에 포함된 특정 청크 데이터를 나타내는 것으로, 제 1 청크 데이터는 특정 페이지 데이터의 첫 번째 데이터를 나타내는 것은 아니다.
도 4는 도 1 및 도 3의 ECC 디코더를 상세하게 도시한 블록도이다.
도 4를 참조하면, ECC 디코더(1212)는 LDPC 코드를 사용하는 ECC 디코더이다. 따라서, ECC 디코더(1212)는 ECC 디코더 코아(decoder core)(120), 큐(121), 및 인풋 버퍼(122) 및 아웃풋 버퍼(123)를 포함한다. ECC 디코더 코아(120)는 LDPC 코드를 사용하여 청크 단위의 데이터의 에러 비트 정정을 수행한다.
인풋 버퍼(122)는 비휘발성 메모리 장치(1100)로부터 제공받은 페이지 데이터를 임시로 저장한다. 인풋 버퍼(122)는 페이지 데이터 중 일부인 청크 데이터를 ECC 디코더 코아(120)로 제공한다. 그리고 아웃풋 버퍼(123)는 ECC 디코더 코아(120)에서 정정된 데이터를 저장하고, 정정된 데이터는 비휘발성 메모리 장치(1100)로, 페이지 단위의 프로그램을 위해 제공된다. ECC 디코더 코아(120)는 에러 정정 능력은 우수하나, 데이터의 반복(iteration)연산으로 정정 속도가 느릴 수 있다. 즉, ECC 디코더 코아(120)는 에러 비트의 개수가 많으면, 정정 속도가 느려지고 시스템의 성능하락 요인으로 작용하게 된다. 따라서, ECC 디코더(1212)는 용량이 큰 인풋 버퍼(122) 및 아웃풋 버퍼(123)를 구성하여 ECC 디코더(1212)의 성능의 변화가 비휘발성 메모리 시스템(1000) 성능에 영향을 주지 않도록 구성한다.
큐(121)는 레지스터로 데이터의 크기(size) 및 데이터의 어드레스 정보를 저장한다. 구체적으로, 큐(121)는 각각의 청크 데이터의 크기 및 청크 데이터의 주소를 저장하고 있다. 큐(121)는 청크 데이터의 크기 및 청크 데이터 주소를 ECC 디코더 코아(120)로 제공한다.
ECC 디코더 코아(120)는 인풋 버퍼(122)로부터 제 1 청크 데이터를 제공받아서, LDCP 코드를 사용하여 에러 비트 정정을 수행한다. 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함하여 정정 실패가 될 때, ECC 디코더 코아(120)는 마이크로프로세서(1240)로 에러 비트 정정 중단 신호 및 정정 불가능 지시 신호(uncorrectable error signal)를 제공한다. 그 결과, 제 1 청크 데이터에 연속한 데이터인 제 2 청크 데이터는 에러 비트 정정을 수행하지 아니하고, 에러 비트 정정은 중지된다.
제 1 청크 데이터 및 제 2 청크 데이터는 ECC 정정 단위 데이터로, 비휘발성 메모리 장치(1100)로부터 제공된 페이지 데이터의 일부이다. 제 1 청크 데이터 및 2 청크 데이터는 하드 디시젼 데이터 또는 소프트 디시젼 데이터일 수 있다. 제 1 청크 데이터 및 제2 청크 데이터가 하드 디시젼 데이터인 경우, 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함한 경우, 하드 디시젼 데이터의 에러 비트 정정은 종료된다. 그리고 메모리 컨트롤러(1200)는 비휘발성 메모리 장치(1100)로부터 소프트 디시젼 데이터를 제공받고, ECC 디코더(1212)는 소프트 디시젼 데이터를 사용하여 제 1 청크 데이터의 에러 비트 정정을 수행한다. 따라서, ECC 디코더는 제 1 청크 하드 데이터에서 정정 불가능한 에러 비트가 발생한경우, 제 1 청크 하드 데이터를 포함한 페이지 데이터 전체에 대한 하드 디시젼 데이터의 ECC 디코딩을 중단하고, 소프트 디시젼 데이터를 제공받아 에러 비트 정정을 수행한다. 마찮가지로, ECC 디코더는 제 1 청크 소프트 디시젼 데이터가 정정 불가능한 에러 비트를 포함하는 경우, 제 1 청크 소프트 디시젼 데이터를 포함한 페이지 데이터 전체에 대한 소프트 디시젼 데이터의 ECC 디코딩을 중단한다. 즉, ECC 디코더(1212)는 하드 디시젼 데이터 인지 소프트 디시젼 데이터이지 상관없이 제 1 청크 데이터가 에러 비트 정정이 불가능하면, 제 1 청크에 연속된 제 2 청크 데이터의 디코딩은 수행하지 않고, 다음 페이지의 데이터를 ECC 정정을 수행한다. 따라서, ECC 디코더(1212)는 제 1 청크 데이터가 ECC 패일인 경우, 제 1 청크를 포함한 페이지 데이터는 ECC 페일이 발생할 확률이 매우 높다. 따라서, ECC 디코더는 제 1 청크 데이터를 포함한 페이지 데이터를 에러 비트 정정하지 않으므로서, ECC 정정 수행시간을 단축시킬 수 있다. 제 1 청크 데이터는 페이지 데이터에 포함된 특정 청크 데이터를 나타내는 것으로, 제 1 청크 데이터는 특정 페이지 데이터의 첫 번째 데이터를 나타내는 것은 아니다.
도 5는 도 1 및 도 3의 ECC 디코더 및 비휘발성 메모리 장치를 도시한 블락도이다.
도 5를 참고하면, ECC 디코더(1212)는 도 4와 동일하게 ECC 디코더 코어(120), 인풋 버퍼(122) 및 아웃풋 버퍼(123)를 포함한다.또한, 비휘발성 메모리 장치 인터페이스(1250)와 다른 독립된 제 1 및 제 2 ECC 버스 인터페이스(124, 125)를 포함한다. ECC 디코더 코아(120)는 비휘발성 메모리 장치 인터페이스(1250)의 처리 속도보다 수행속도가 느리므로 메모리 컨트롤러(1200)의 성능하락을 야기할 수 있다. 따라서, ECC 디코더 코아(120)와 비휘발성 메모리 장치 인터페이스(1250)을 분리시키는 별도의 제 1 및 제 2 ECC 버스(124, 125)를 추가할 수 있다. 즉, 제 1 및 제 2 버스(124, 125)의 수행속도는 비휘발성 메모리 장치 인터페이스(1250)와 다르다. 제 1 및 제 2 ECC 버스(124, 125)는 각각 인풋 버퍼(122) 및 아웃풋 버퍼(123)에 연결된다.
즉, 비휘발성 메모리 장치(1100)로부터 제공된 데이터는 비휘발성 메모리 장치 인터페이스(1250)에서 제 1 ECC 버스(124)로 제공되고, 그리고 제 1 ECC 버스(124)를 통해서 인풋 버퍼(122)로 제공된다. ECC 디코더 코아(120)는 인풋 버퍼(122)로부터 제 1 청크 데이터를 제공받아서, LDCP 코드를 사용하여 에러 비트 정정을 수행한다. 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함하여 정정 실패가 될 때, ECC 디코더 코아(120)는 마이크로프로세서(1240)로 정정 불가능 지시 신호(uncorrectable error signal) 및 에러 비트 정정 중단 신호(stop signal)를 제공하여, 제 1 청크 데이터에 연속한 데이터인 제 2 청크 데이터는 에러 비트 정정을 수행하지 아니하고, 에러 비트 정정은 중지된다. 제 1 청크 데이터는 페이지 데이터에 포함된 특정 청크 데이터를 나타내는 것으로, 제 1 청크 데이터는 특정 페이지 데이터의 첫 번째 데이터를 나타내는 것은 아니다.
도 6은 본 발명의 실시예들에 따른 ECC 디코더의 동작을 보여주는 개념도이다.
도 6을 참조하면, 페이지 데이터는 예시적으로 8개의 청크 데이터를 포함한다. 그리고, 제 1 청크 데이터부터 제 8 청크 데이터까지 연속적으로 ECC 디코더로 제공된다. ECC 디코더(1212)는 제 1 청크 데이터의 에러 비트 정정을 수행하고, 제 1 청크 데이터에서 정정 불가능한 에러 비트가 발행하면, ECC 디코더는 정정 불가능 지시 신호(uncorrectable error signal) 및 에러 비트 정정 중단 신호(stop signal)를 마이크로프로세서(1240)로 제공한다. 따라서, 제 1 청크 데이터에 연속된 제 2 청크 데이터는 ECC 정정이 수행되지 않고, 제 1 청크를 포함하는 페이지 데이터는 ECC 정정 수행이 종료된다.
도 6에서 제 1 청크 데이터는 페이지 데이터에 포함된 특정 청크 데이터를 나타내는 것으로, 제 1 청크 데이터 내지 제8 청크 데이터 중에 어느 하나의 청크 데이터일 수 있다. 따라서, 제 1 청크 데이터는물리적으로 페이지 데이터의 첫 번째 데이터를 나타내는 것은 아니다.
이와 같이 에러 비트 정정 종료를 하지 않으면, 다음과 같은 문제가 발생할 수 있다. 구체적으로, LDPC 코드를 사용하는 ECC 디코더는 반복(iteration) 동작을 통해서 에러 비트 정정을 시도한다. 제 1 청크 데이터가, 예를 들면, 반복 한계치인 20회의 반복(iteration) 동작에도 정정 불가능한 에러 비트를 포함하면, 제 1 청크에 연속된 데이터인 제 2 청크 데이터 또한 20회 이상의 반복 동작을 수행할 것이고, 정정 불가능한 에러 비트를 포함할 확률이 높다. 따라서, ECC 디코더(1212)는 페이지 데이터의 일부인 제 1 청크 데이터가 정정 불가능하면 제 1 청크에 연속된 데이터는 에러 비트 정정을 하지 않고, 제 1 청트 데이터가 포함된 페이지 데이터는 정정 불가능 지시 신호(uncorrectable error signal) 및 에러 비트 정정 중단 신호(stop signal)를 마이크로 프로세서로 제공하다.
도 7은 본 발명의 몇몇 실시예들에 따른 비휘발성 메모리 시스템의의 동작 순서도이다.
도 7을 참조하면, ECC 디코더는 비휘발성 메모리 장치로부터 리드된 데이터를 제공받는다 (S700). ECC 디코더는 제공받은 데이터 중에 ECC 수행 단위인 제 1 청크 데이터를 LDPC 코드를 사용하여 ECC 디코딩을 수행한다 (S710). 그리고, ECC 디코딩 결과가 정정 불가능한 에러 비트를 포함하면(S720), ECC 디코더는 제 1 청크 데이터에 연속된 제 2 청크 데이터의 ECC 디코딩을 종료한다 (S730). ECC 디코딩 결과가 정정 불가능한 에러 비트를 포함하지 않으면(S720), ECC 디코더는 제 1 청크 데이터에 연속된 제 2 청크 데이터의 ECC 디코딩을 수행한다(S740). ECC 디코더는 LDPC 코드를 사용하여 에러 비트 정정을 수행하고, ECC 수행 단위인 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함하면, 제 1 청크 데이터에 연속한 제 2 청크 데이터는 에러 비트 정정을 수행하지 아니한다. 제 2 청크 데이터를 디코딩 수행하지 아니한 것은 페이지 데이터의 디코딩 시간을 단축시키고, ECC 디코더 및 메모리 시스템 성능을 향상시킨다. 도 8은 본 발명의 실시 예에 따른 메모리 컨트롤러(15000) 및 비휘발성 메모리 장치(16000)를 포함하는 전자 장치(10000)의 블록도를 나타낸다.
도 8을 참조하면, 이동 전화기(cellular phone), 스마트 폰(smart phone), 또는 태블릿(tablet) PC와 같은 전자 장치(10000)는 플래시 메모리 장치로 구현될 수 있는 비휘발성 메모리 장치(16000)와, 비휘발성 메모리 장치(16000)의 동작을 제어할 수 있는 메모리 컨트롤러(15000)를 포함할 수 있다.
비휘발성 메모리 장치(16000)는 도 1 에서 도시한 비휘발성 메모리 장치(1100)를 의미할 수 있다. 비휘발성 메모리 장치(16000)는 랜덤 데이터를 저장 할 수 있다.
메모리 컨트롤러(15000)는 전자 장치의 전반적인 동작을 제어하는 프로세서(11000)에 의하여 제어된다.
비휘발성 메모리 장치(16000)에 저장된 데이터는 프로세서(11000)의 제어에 따라 동작하는 메모리 컨트롤러(15000)의 제어에 따라 디스플레이(13000)를 통하여 디스플레이될 수 있다.
무선 송수신기(12000)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(12000)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(11000)가 처리할 수 있는 신호로 변환할 수 있다. 따라서 프로세서(11000)는 무선 송수신기(12000)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 컨트롤러(15000)를 통하여 비휘발성 메모리 장치(16000)에 저장하거나 또는 디스플레이(13000)를 통하여 디스플레이할 수 있다.
무선 송수신기(12000)는 프로세서(11000)로부터 출력된 신호를 무선 신호로 변환하고, 변환된 무선 신호를 안테나(ANT)를 통하여 외부로 출력할 수 있다.
입력 장치(14000)는 프로세서(11000)의 동작을 제어하기 위한 제어 신호 또는 프로세서(11000)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(11000)는 비휘발성 메모리 장치(16000)로부터 출력된 데이터, 무선 송수신기(12000)로부터 출력된 무선 신호, 또는 입력 장치(14000)로부터 출력된 데이터가 디스플레이(13000)를 통하여 디스플레이될 수 있도록 디스플레이(13000)를 제어할 수 있다.
도 9은 본 발명의 다른 실시 예에 따른 메모리 컨트롤러(24000)및 비휘발성 메모리 장치(25000)를 포함하는 전자 장치(20000)의 블록도를 나타낸다.
도 9을 참조하면, PC(personal computer), 태블릿 컴퓨터(tablet computer), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어와 같은 데이터 처리 장치로 구현될 수 있는 전자 장치(20000)는 플래시 메모리 장치와 같은 비휘발성 메모리 장치(25000)와, 비휘발성 메모리 장치(25000)의 동작을 제어할 수 있는 메모리 컨트롤러(24000)를 포함한다.
비휘발성 메모리 장치(16000)는 도 1 및 도 8에서 도시한 비휘발성 메모리 장치를 의미할 수 있다. 비휘발성 메모리 장치(16000)는 랜덤 데이터를 저장 할 수 있다.
전자 장치(20000)는 전자 장치(20000)의 전반적인 동작을 제어하기 위한 프로세서(21000)를 포함할 수 있다. 메모리 컨트롤러(24000)는 프로세서(21000)에 의하여 제어된다.
프로세서(21000)는 입력 장치(22000)에 의하여 발생한 입력 신호에 따라 비휘발성 메모리 장치에 저장된 데이터를 디스플레이를 통하여 디스플레이할 수 있다. 예컨대, 입력 장치(22000)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
도 10은 본 발명의 또 다른 실시 예에 따른 비휘발성 메모리 장치(34000)를 포함하는 전자 장치(30000)의 블록도를 나타낸다.
도 10을 참조하면, 전자 장치(30000)는 카드 인터페이스(31000), 메모리 컨트롤러(32000), 및 비휘발성 메모리 장치(34000), 예컨대 플래시 메모리 장치를 포함한다.
전자 장치(30000)는 카드 인터페이스(31000)를 통하여 호스트(HOST)와 데이터를 주거나 받을 수 있다. 실시 예에 따라, 카드 인터페이스(31000)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(31000)는 전자 장치(30000)와 통신할 수 있는 호스트(HOST)의 통신 프로토콜에 따라 호스트(HOST)와 메모리 컨트롤러(32000) 사이에서 데이터 교환을 인터페이스할 수 있다.
메모리 컨트롤러(32000)는 전자 장치(30000)의 전반적인 동작을 제어하며, 카드 인터페이스(31000)와 비휘발성 메모리 장치(34000) 사이에서 데이터의 교환을 제어할 수 있다. 또한 메모리 컨트롤러(32000)의 버퍼 메모리(325)는 카드 인터페이스(31000)와 비휘발성 메모리 장치(34000) 사이에서 주고받는 데이터를 버퍼링할 수 있다.
메모리 컨트롤러(32000)는 데이터 버스(DATA) 및 어드레스 버스(ADDRESS)를 통하여 카드 인터페이스(31000)와 비휘발성 메모리 장치(34000)와 접속된다. 실시 예에 따라 메모리 컨트롤러(32000)는 카드 인터페이스(31000)로부터 리드 또는 라이트하고자 하는 데이터의 어드레스를 어드레스 버스(ADDRESS)를 통하여 수신하고 이를 비휘발성 메모리 장치(34000)로 전송한다.
또한, 메모리 컨트롤러(32000)는 카드 인터페이스(31000) 또는 비휘발성 메모리 장치(34000) 각각에 접속된 데이터 버스(DATA)를 통하여 리드 또는 라이트하고자 하는 데이터를 수신하거나 전송한다.
비휘발성 메모리 장치(16000)는 도 1에서 도시한 비휘발성 메모리 장치를 의미할 수 있다. 비휘발성 메모리 장치(16000)는 랜덤 데이터를 저장 할 수 있다.
도 10의 전자 장치(30000)가 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(HOST)에 접속될 때, 호스트(HOST)는 카드 인터페이스(31000)와 메모리 컨트롤러(32000)를 통하여 비휘발성 메모리 장치(34000)에 저장된 데이터를 주거나 받을 수 있다.
도 11는 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러 및 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 11를 참조하면, 전자 장치(40000)는 플래시 메모리 장치와 같은 비휘발성 메모리 장치(45000), 비휘발성 메모리 장치(45000)의 데이터 처리 동작을 제어하기 위한 메모리 컨트롤러(44000), 및 전자 장치(40000)의 전반적인 동작을 제어할 수 있는 이미지 센서(41000)를 포함한다.
비휘발성 메모리 장치(16000)는 도 1 및 도 12에서 도시한 비휘발성 메모리 장치를 의미할 수 있다.
전자 장치(40000)의 이미지 센서(42000)는 광학 신호를 디지털 신호로 변환하고, 변환된 디지털 신호는 이미지 센서(41000)의 제어하에 비휘발성 메모리 장치(45000)에 저장되거나 또는 디스플레이(43000)를 통하여 디스플레이된다. 또한, 비휘발성 메모리 장치(45000)에 저장된 디지털 신호는 이미지 센서(41000)의 제어하에 디스플레이(43000)를 통하여 디스플레이된다.
도 12은 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러(61000) 및 비휘발성 메모리 장치(62000A, 62000B, 62000C)를 포함하는 전자 장치(60000)의 블록도를 나타낸다.
도 12을 참조하면, 전자 장치(60000)는 SSD(solid state drive)와 같은 데이터 저장 장치로 구현될 수 있다.
전자 장치(60000)는 다수개의 비휘발성 메모리 장치들(62000A, 62000B, 62000C)과, 다수개의 비휘발성 메모리 장치들(62000A, 62000B, 62000C) 각각의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(61000)를 포함할 수 있다.
전자 장치(60000)는 메모리 시스템 또는 메모리 모듈로 구현될 수 있다.
비휘발성 메모리 장치(16000)는 도 1 및 도 12에서 도시한 비휘발성 메모리 장치를 의미할 수 있다. 비휘발성 메모리 장치(16000)는 랜덤 데이터를 저장 할 수 있다.
실시 예에 따라 메모리 컨트롤러(61000)는 전자 장치(60000)의 내부 또는 외부에 구현될 수 있다.
도 13은 도 12에 도시된 전자 장치를 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 13과 도 13을 참조하면, RAID(redundant array of independent disks) 시스템으로 구현될 수 있는 데이터 저장 장치(70000)는 RAID 컨트롤러(71000)와, 다수개의 메모리 시스템들(72000A, 72999B ~72000N; N는 자연수)을 포함할 수 있다.
다수개의 메모리 시스템들(72000A, 72999B ~72000N) 각각은 도 10에 도시된 전자 장치 (700)일 수 있다. 다수개의 메모리 시스템들(72000A, 72999B ~72000N)은 RAID 어레이를 구성할 수 있다. 데이터 저장 장치(70000)는 PC(personal computer) 또는 SSD로 구현될 수 있다.
프로그램 동작 동안, RAID 컨트롤러(71000)는 호스트로부터 출력된 프로그램 데이터를 다수개의 RAID 레벨들 중에서 호스트로부터 출력된 RAID 레벨 정보에 기초하여 선택된 어느 하나의 RAID 레벨에 따라 다수개의 메모리 시스템들(72000A, 72999B ~72000N) 중에서 어느 하나의 메모리 시스템으로 출력할 수 있다.
또한, 리드 동작 동안, RAID 컨트롤러(71000)는 다수개의 RAID 레벨들 중에서 호스트로부터 출력된 RAID 레벨 정보에 기초하여 선택된 어느 하나의 RAID 레벨에 따라서 다수개의 메모리 시스템중(72000A, 72999B ~72000N)에서 어느 하나의 메모리 시스템으로부터 리드된 데이터를 호스트로 전송할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1000: 비휘발성 메모리 시스템 1100: 비휘발성 메모리 장치
1200: 메모리 컨트롤러
1210: ECC 엔진 1211: ECC 인코더
1212: ECC 디코더

Claims (18)

  1. 비휘발성 메모리 장치로부터 하드 디시젼 데이터의 제1 청크 데이터와 상기 제 1 청크 데이터에 연속한 상기 하드 디시젼 데이터의 제2 청크 데이터를 제공받고,
    상기 제 1 청크 데이터의 에러 비트 정정을 수행하고,
    상기 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함할 때, 상기 제 2 청크 데이터는 에러 비트 정정을 수행하지 않고,
    상기 정정 불가능한 에러 비트를 포함하는 하드 디시젼 데이터에 응답하여 소프트 디시젼 데이터의 제3 청크 데이터와 상기 제3 청크 데이터에 연속한 상기 소프트 디시젼 데이터의 제4 청크 데이터를 제공받고,
    상기 제3 청크 데이터가 정정 불가능한 에러 비트를 포함할 때, 상기 제4 청크 데이터는 에러 비트 정정을 수행하지 않는 LDPC(low density parity check) 코드를 사용하는 ECC 디코더의 동작 방법.
  2. 제 1항에 있어서,
    상기 제1 청크 데이터와 제2 청크 데이터는 하나의 페이지 데이터에 포함되는 ECC 디코더의 동작 방법.
  3. 제 1항에 있어서,
    상기 제 1 청크 데이터는 ECC 수행 단위인. ECC 디코더의 동작 방법.
  4. 제1항에 있어서,
    상기 제1 청크 데이터와 제2 청크 데이터는 인풋 버퍼(input buffer)에 저장되는 ECC 디코더의 동작 방법.
  5. 삭제
  6. 제 1항에 있어서,
    상기 하드 디시젼 데이터가 상기 정정 불가능한 에러 비트를 포함할때, 상기 ECC 디코더는 소프트 디시젼 데이터를 제공받는 ECC 디코더의 동작 방법.
  7. 삭제
  8. 제 1항 있어서,
    상기 1 청크 데이터가 정정 불가능한 에러 비트를 포함할때, 정정 불가능 지시 신호(uncorrectable error signal)를 마이크로프로세서로 제공하는 것을 더 포함하는 ECC 디코더의 동작 방법.
  9. 제 1항에 있어서,
    상기 제 1 청크 데이터가 정정 불가능한 에러 비트를 포함할때, 상기 제 2 청크 데이터의 에러 비트 정정 중단 신호(stop signal)를 마이크로프로세서로 제공하는 것을 더 포함하는 ECC 디코더의 동작 방법.
  10. 제 1항에 있어서,
    상기 제1 청크 데이터와 상기 제2 청크 데이터는 하나의 페이지에 포함되고, 상기 제 1 청크 데이터가 정정불가능한 에러 비트를 포함할때, 상기 페이지의 에러 비트 정정은 중지되는 ECC 디코더의 동작 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
KR1020130094222A 2013-08-08 2013-08-08 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 KR102081588B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130094222A KR102081588B1 (ko) 2013-08-08 2013-08-08 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러
US14/314,774 US9602134B2 (en) 2013-08-08 2014-06-25 Operating method of error correction code decoder and memory controller including the error correction code decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130094222A KR102081588B1 (ko) 2013-08-08 2013-08-08 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러

Publications (2)

Publication Number Publication Date
KR20150017948A KR20150017948A (ko) 2015-02-23
KR102081588B1 true KR102081588B1 (ko) 2020-02-26

Family

ID=52449694

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130094222A KR102081588B1 (ko) 2013-08-08 2013-08-08 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러

Country Status (2)

Country Link
US (1) US9602134B2 (ko)
KR (1) KR102081588B1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102347418B1 (ko) 2015-09-25 2022-01-06 에스케이하이닉스 주식회사 데이터 처리 장치 및 그것의 동작 방법
US11177835B2 (en) 2015-09-25 2021-11-16 SK Hynix Inc. Data storage device
KR102285940B1 (ko) 2015-05-29 2021-08-05 에스케이하이닉스 주식회사 데이터 처리 회로, 데이터 처리 회로를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
US10396827B2 (en) 2015-09-25 2019-08-27 SK Hynix Inc. Data storage device
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
KR20160146332A (ko) * 2015-06-12 2016-12-21 에스케이하이닉스 주식회사 복수의 저장 영역들을 포함하는 메모리 시스템 및 그것의 동작 방법
KR20170000108A (ko) * 2015-06-23 2017-01-02 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
CN106708650B (zh) * 2015-11-17 2022-02-08 恩智浦美国有限公司 保护嵌入式非易失性存储器免受干扰
US10133627B2 (en) * 2015-12-11 2018-11-20 SK Hynix Inc. Memory device controller with mirrored command and operating method thereof
KR20180078864A (ko) 2016-12-30 2018-07-10 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20190092937A (ko) 2018-01-31 2019-08-08 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102085690B1 (ko) * 2018-04-27 2020-03-06 한양대학교 산학협력단 오류 정정 기능을 구비한 플래시 메모리 저장 장치 및 그 구동 방법
US10725862B2 (en) * 2018-07-06 2020-07-28 Macronix International Co., Ltd. Data recovery method to error correction code in memory
JP2020046823A (ja) * 2018-09-18 2020-03-26 キオクシア株式会社 メモリシステム
KR102645140B1 (ko) * 2018-12-06 2024-03-07 삼성전자주식회사 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법
KR20200114151A (ko) 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 오류 정정 디코더
KR20210121654A (ko) * 2020-03-31 2021-10-08 에스케이하이닉스 주식회사 메모리 시스템의 데이터 에러를 복구하는 장치 및 방법
US11468963B2 (en) * 2020-12-08 2022-10-11 Macronix International Co., Ltd. Memory device and read method thereof
CN113793635B (zh) * 2021-11-08 2022-04-19 阿里云计算有限公司 存储装置和存储设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055643A1 (en) * 2009-09-01 2011-03-03 Texas Instruments Incorporated Receiver power saving via block code failure detection
US20140019828A1 (en) 2011-06-08 2014-01-16 Olympus Corporation Low-power transmission system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5610929A (en) 1994-03-11 1997-03-11 Fujitsu Limited Multibyte error correcting system
US5668815A (en) * 1996-08-14 1997-09-16 Advanced Micro Devices, Inc. Method for testing integrated memory using an integrated DMA controller
JP2000278142A (ja) 1999-03-23 2000-10-06 Toshiba Video Products Japan Kk デジタルデータ記録再生装置
US6728927B2 (en) 2000-05-26 2004-04-27 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry Through The Communications Research Centre Method and system for high-spread high-distance interleaving for turbo-codes
JP4323707B2 (ja) 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
JP4551740B2 (ja) 2004-11-08 2010-09-29 株式会社東芝 低密度パリティチェック符号復号器及び方法
MX2009001345A (es) 2006-08-05 2009-07-17 Benhov Gmbh Llc Elemento y metodo de almacenamiento de estado solido.
KR100837730B1 (ko) 2006-09-29 2008-06-13 한국전자통신연구원 사전에 지정한 패리티를 검사한 결과를 이용해 ldpc코드를 부호화하는 방법
JP4261575B2 (ja) 2006-11-30 2009-04-30 株式会社東芝 誤り訂正処理装置及び誤り訂正処理方法
US8296337B2 (en) 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US8225166B2 (en) * 2009-02-09 2012-07-17 Mediatek Inc. Signal processing apparatus for setting error indication information according error detection result of outer-code decoder output and related method thereof
US8230255B2 (en) * 2009-12-15 2012-07-24 International Business Machines Corporation Blocking write acces to memory modules of a solid state drive
US8429468B2 (en) 2010-01-27 2013-04-23 Sandisk Technologies Inc. System and method to correct data errors using a stored count of bit values
KR101466555B1 (ko) * 2010-03-12 2014-12-02 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
KR101635506B1 (ko) * 2010-03-29 2016-07-04 삼성전자주식회사 데이터 저장 시스템 및 그것의 읽기 방법
US9116822B2 (en) * 2012-12-07 2015-08-25 Micron Technology, Inc. Stopping criteria for layered iterative error correction
US9081666B2 (en) * 2013-02-15 2015-07-14 Seagate Technology Llc Non-volatile memory channel control using a general purpose programmable processor in combination with a low level programmable sequencer
US9032264B2 (en) * 2013-03-21 2015-05-12 Kabushiki Kaisha Toshiba Test method for nonvolatile memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055643A1 (en) * 2009-09-01 2011-03-03 Texas Instruments Incorporated Receiver power saving via block code failure detection
US20140019828A1 (en) 2011-06-08 2014-01-16 Olympus Corporation Low-power transmission system

Also Published As

Publication number Publication date
US20150046771A1 (en) 2015-02-12
US9602134B2 (en) 2017-03-21
KR20150017948A (ko) 2015-02-23

Similar Documents

Publication Publication Date Title
KR102081588B1 (ko) Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러
US10700706B2 (en) Memory system with decoders and method of operating such memory system and decoders
US10923192B2 (en) Memory system and operating method thereof
US20140068159A1 (en) Memory controller, electronic device having the same and method for operating the same
CN110275796B (zh) 具有混合解码方案的存储器系统及其操作方法
CN108388525B (zh) 存储器系统及其操作方法
US10693496B2 (en) Memory system with LDPC decoder and method of operating such memory system and LDPC decoder
CN108694138B (zh) 控制器及其操作方法
CN108108308B (zh) 存储器系统及其操作方法
US10761953B2 (en) Memory system and method for operating the same
KR102068030B1 (ko) 메모리 컨트롤러 및 그 동작방법
KR20120096213A (ko) 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
KR102025088B1 (ko) 메모리 컨트롤러 및 상기 메모리 컨트롤러를 포함하는 전자장치
CN109491828B (zh) 解码方法、存储器存储装置及存储器控制电路单元
KR20170012006A (ko) 메모리 컨트롤러와 이를 포함하는 메모리 시스템
CN110277124B (zh) 具有混合解码方案的存储器系统及其操作方法
KR20160121905A (ko) 비휘발성 메모리 컨트롤러의 동작 방법
CN106158046B (zh) 用于turbo乘积码的误校正避免
US11036579B2 (en) Decoder for memory system and method thereof
US11726703B2 (en) Extending size of memory unit
KR20180064588A (ko) 메모리 제어 장치 및 방법
CN113498580A (zh) 用于存储器子系统的元数据辅助的编码和解码
CN108108122B (zh) 控制器和存储器系统及其操作方法
US20190288712A1 (en) Memory system with adaptive threshold decoding and method of operating such memory system

Legal Events

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