KR20090099756A - 메모리 장치 및 인코딩/디코딩 방법 - Google Patents

메모리 장치 및 인코딩/디코딩 방법 Download PDF

Info

Publication number
KR20090099756A
KR20090099756A KR1020080024929A KR20080024929A KR20090099756A KR 20090099756 A KR20090099756 A KR 20090099756A KR 1020080024929 A KR1020080024929 A KR 1020080024929A KR 20080024929 A KR20080024929 A KR 20080024929A KR 20090099756 A KR20090099756 A KR 20090099756A
Authority
KR
South Korea
Prior art keywords
message
codeword
ecc
data
decoding
Prior art date
Application number
KR1020080024929A
Other languages
English (en)
Other versions
KR101398212B1 (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 KR1020080024929A priority Critical patent/KR101398212B1/ko
Priority to US12/232,258 priority patent/US8713411B2/en
Priority to PCT/KR2008/006587 priority patent/WO2009116716A1/en
Priority to JP2011500685A priority patent/JP5345201B2/ja
Publication of KR20090099756A publication Critical patent/KR20090099756A/ko
Application granted granted Critical
Publication of KR101398212B1 publication Critical patent/KR101398212B1/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
    • 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/1072Adding 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 multilevel memories
    • 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

Abstract

메모리 장치 및 인코딩/디코딩 방법이 제공된다. 본 발명의 메모리 장치는 메모리 셀 어레이, 상기 메모리 셀 어레이로부터 읽은 제1 데이터로부터 생성된 제1 코드워드를 오류 제어 코드(ECC) 디코드하여 제1 메시지를 추정하고, 상기 추정된 제1 메시지 및 상기 메모리 셀 어레이로부터 읽은 제2 데이터를 결합하여 제2 코드워드를 생성하고, 상기 제2 코드워드를 오류 제어 코드 디코드하여 제2 메시지를 추정하는 디코더를 포함하며, 이를 통해 메모리 장치의 데이터를 읽고 쓸 때의 오류 비율을 줄일 수 있다.
멀티 비트 셀, 멀티 레벨 셀, ECC, Error Control Coding

Description

메모리 장치 및 인코딩/디코딩 방법 {MEMORY DEVICE AND ENCODING AND/OR DECODING METHOD}
본 발명은 오류 제어 코드(error control codes, ECC)에 관한 것으로서, 특히 메모리 장치를 위한 ECC 인코딩/디코딩 방법에 관한 것이다.
일반적으로 정보를 전송하는 경로를 채널(channel)이라 부를 수 있다. 정보가 유선 통신을 이용하여 전송되면, 채널은 정보가 전송되는 전송선(transmission line)이고, 정보가 무선 통신을 이용하여 전송되면, 채널은 정보를 포함하는 전자기파가 통과하는 대기(air)이다.
반도체 메모리 장치가 정보를 저장하고, 저장된 정보를 반도체 메모리 장치로부터 읽어 내는 과정도 채널이 될 수 있다. 채널은 반도체 메모리 장치가 정보를 저장한 순간부터 저장된 정보를 반도체 메모리 장치로부터 읽어 낼 때까지의 시간적 경과일 수도 있고, 반도체 메모리 장치가 정보를 저장하고 저장된 정보를 반도체 메모리 장치로부터 읽어 내는 물리적 경로일 수도 있다.
채널을 경유하여 정보가 전송되는 동안 정보가 오염될 수 있다. 오염된 정보는 오류를 포함하며, 오염된 정보로부터 오류를 검출하고, 검출된 오류를 제거하 여 최초의 정보를 복원하기 위한 장치 및 방법에 관한 연구는 꾸준히 진행되고 있다.
정보를 전송하기 전에 최초의 정보에 오류 제어 코드 또는 오류 정정 코드(error control codes or error correction codes, ECC)를 부가하여 전송 정보를 생성하는 과정을 ECC 인코딩이라 하고, 전송 정보를 수신한 뒤 수신된 전송 정보로부터 부가된 정보와 최초의 정보를 분리하여 최초의 정보를 복원하는 과정을 ECC 디코딩이라 한다.
채널의 특성에 따라서는, 채널에서 발생하는 오류의 비율이 매우 클 수 있다. 오류의 비율이 크면 클수록 이러한 오류를 극복하여 원하는 성능을 달성하기 위한 부호율(code rate)이 낮아지거나 ECC 인코딩 및 디코딩 방법을 구현하기 위한 하드웨어 복잡도는 증가한다.
본 발명의 실시예들에 따르면 메모리 장치에 새로운 ECC(error control codes or error correction codes) 인코딩 및/또는 디코딩 기법을 적용함으로써 메모리 장치의 데이터를 읽고 쓸 때의 오류를 줄일 수 있다.
본 발명의 실시예들에 따르면 멀티 레벨 셀(multi-level cell, MLC) 또는 멀티 비트 셀(multi-bit cell, MBC) 메모리 장치에 새로운 ECC 인코딩 및/또는 디코딩 기법을 적용함으로써 크리티컬한 데이터 페이지의 오류 비율을 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 메모리 셀 어레이 및 디코더를 포함할 수 있다. 디코더는 메모리 셀 어레이로부터 읽은 제1 데이터로부터 생성된 제1 코드워드를 ECC 디코드하여 제1 메시지를 추정하고, 상기 추정된 제1 메시지 및 메모리 셀 어레이로부터 읽은 제2 데이터를 결합하여 제2 코드워드를 생성하고, 제2 코드워드를 ECC 디코드하여 제2 메시지를 추정할 수 있다.
본 발명의 다른 실시예에 따른 메모리 장치는 메모리 셀 어레이, 인코더 및 프로그래밍부를 포함할 수 있다. 인코더는 제1 메시지를 ECC 인코드하여 제1 코드워드를 생성하고, 제1 메시지 및 제2 메시지를 ECC 인코드하여 제2 코드워드를 생성할 수 있다. 프로그래밍부는 제1 코드워드 및 제2 코드워드를 메모리 셀 어레이에 저장할 수 있다.
본 발명의 또 다른 실시예에 따른 디코딩 방법은 수신된 제1 데이터로부터 생성된 제1 코드워드를 오류 제어 코드(ECC) 디코드하여 제1 메시지를 추정하는 단계, 상기 제1 메시지 및 수신된 제2 데이터를 결합하여 제2 코드워드를 생성하는 단계 및 상기 제2 코드워드를 오류 제어 코드(ECC) 디코드하여 제2 메시지를 추정하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 인코딩 방법은 제1 메시지를 오류 제어 코드(ECC) 인코드하여 제1 코드워드를 생성하는 단계 및 상기 제1 메시지 및 제2 메시지를 오류 제어 코드(ECC) 인코드하여 제2 코드워드를 생성하는 단계를 포함할 수 있다.
이하에서, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치(100)를 도시하는 도면이다.
도 1을 참조하면, 메모리 장치(100)는 메모리 셀 어레이(110) 및 디코더(120)를 포함한다.
메모리 셀 어레이(110)는 복수의 메모리 셀들을 포함한다. 메모리 셀 어레이(110)에 포함되는 서브 어레이(111)는 디코더(120)에 의하여 동시에 읽히는 메모리 셀들의 집합일 수 있다. 디코더(120)는 서브 어레이(111)의 메모리 셀들로부터 동시에 데이터를 읽을 수 있다.
실시예에 따라서는, 서브 어레이(111)는 하나의 워드 라인(word line)에 연결된 메모리 셀들의 집합일 수 있다. 메모리 장치(100)는 서브 어레이(111)에 연결된 워드 라인에 특정 전압을 인가함으로써 서브 어레이(111) 내의 메모리 셀들로 부터 동시에 데이터를 읽을 수 있다. 본 명세서에서는 하나의 워드 라인에 연결된 메모리 셀들의 집합을 메모리 페이지(memory page)로 명명하기로 사용하기로 한다.
디코더(120)는 서브 어레이(111)로부터 읽은 제1 데이터로부터 생성된 제1 코드워드(codeword)를 ECC(error control codes or error control coding or error correction codes) 디코드하여 제1 메시지를 추정할 수 있다. 디코더(120)는 서브 어레이(111)로부터 제2 데이터를 읽을 수 있다. 디코더(120)는 상기 추정된 제1 메시지 및 상기 읽은 제2 데이터를 결합하여 제2 코드워드를 생성할 수 있다. 디코더(120)는 제2 코드워드를 ECC 디코드하여 제2 메시지를 추정할 수 있다.
ECC 중 메시지(message) 및 잉여 정보(redundant information)가 명백하게 구분되는 코드를 체계적 코드(systematic codes)라 하고, 메시지 및 잉여 정보가 명백하게 구분되지 않는 코드를 비체계적 코드(non-systematic codes)라 하기도 한다. 잉여 정보의 예로는 패리티(parity) 등을 들 수 있다.
디코더(120)가 체계적 코드를 이용하는 ECC 디코딩 기법을 이용하는 경우, 제1 코드워드는 제1 메시지 (m1)와 제1 패리티 (p1)로 구분될 수 있다. 제1 메시지 (m1) 및 제1 패리티 (p1)는 서브 어레이(111)에 데이터가 저장되는 과정에서 발생한 오류 또는 서브 어레이(111)로부터 판정부(120)에 의해 데이터를 읽히는 과정에서 발생한 오류를 포함할 수 있다. 디코더(120)는 제1 코드워드에 포함되어 있을 수 있는 오류를 제1 코드워드를 ECC 디코드함으로써 검출할 수 있고, 상기 검출된 오류의 제1 코드워드의 전체 정보 량에 대한 비율 (비트 오류 비율(BER, bit error rate))이 디코더(120)가 정정할 수 있는 범위 이하이면 상기 검출된 오류를 모두 정정할 수 있다. 전체 1000 비트인 코드워드의 오류 비트 수가 10이면, BER은 10/1000 = 10(-2)로 나타내어질 수 있다.
실시예에 따라서는 제1 코드워드의 오류 비율이 디코더(120)의 임계 오류 비율 이하이면 디코더(120)는 상기 ECC 디코드된 제1 코드워드의 오류 비율을 목표 오류 비율 이하로 줄일 수 있다.
실시예에 따라서는, 제1 코드워드 또는 제2 코드워드의 오류의 발생 레벨은 심볼 오류 비율(symbol error rate)에 의하여 나타내어질 수 있다.
제1 패리티 (p1)는 오류가 발생할 경우에 대비한 잉여 정보이므로, 디코더(120)는 제1 메시지 (m1) 및 제1 패리티 (p1)로부터 제1 메시지 (m1)가 서브 어레이(111)에 저장되기 전의 데이터를 추정할 수 있다. 이 때, 디코더(120)의 ECC 디코딩 결과는 추정된 제1 메시지 (m1(1))이고, 제1 패리티 (p1)는 제거될 수 있다.
디코더(120)는 서브 어레이(111)로부터 제2 데이터를 읽을 수 있다. 제2 데이터는 제1 메시지(m1), 제2 메시지(m2) 및 제2 패리티(p12)로 구분될 수 있다. 마찬가지로, 제2 데이터에도 데이터가 서브 어레이(111)에 저장되고 서브 어레이(111)로부터 읽히는 과정에서 발생한 오류가 포함되어 있을 수 있다. 디코더(120)는 추정된 제1 메시지(m1(1)) 및 상기 읽은 제2 데이터를 결합하여 제2 코드워드를 생성할 수 있다. 디코더(120)는 제2 코드워드를 ECC 디코드하여 제2 코드워드에 포함되어 있을 수 있는 오류를 검출하고, 상기 검출된 오류를 정정할 수 있다.
실시예에 따라서는, 디코더(120)는 제2 데이터 중 제1 메시지(m1) 부분을 상기 추정된 제1 메시지(m1(1))로 대체할 수 있다. 이 때, 생성된 제2 코드워드는 상기 추정된 제1 메시지(m1(1)), 서브 어레이(111)로부터 읽힌 제2 메시지(m2) 및 서브 어레이(111)로부터 읽힌 제2 패리티 p12)로 이루어질 수 있다. 디코더(120)는 제2 코드워드를 ECC 디코드하여 재추정된 제1 메시지(m1(2)) 및 추정된 제2 메시지(m2(1))를 생성할 수 있다.
제2 패리티 (p12)는 제1 메시지 (m1) 및 제2 메시지 (m2)의 오류가 발생할 경우에 대비한 잉여 정보이므로, 디코더(120)는 추정된 제1 메시지 (m1(1)), 제2 메시지 (m2) 및 제2 패리티 (p12)로부터 제2 메시지 (m2)가 서브 어레이(111)에 저장되기 전의 데이터를 추정할 수 있다. 이 때, 디코더(120)는 추정된 제1 메시지 (m1(1))를 한 번 더 추정할 수 있다. 이 때, 재추정된 제1 메시지(m1(2))는 두 번의 ECC 디코딩을 거쳤으므로 상기 재추정된 제1 메시지(m1(2))의 BER은 서브 어레이(111)로부터 읽힌 제1 메시지(m1)의 BER보다 매우 작을 수 있다. 서브 어레이(111)로부터 읽힌 제1 메시지(m1)의 BER로부터 상기 재추정된 제1 메시지(m1(2))의 BER의 감소 비율은 서브 어레이(111)로부터 읽힌 제2 메시지(m2)의 BER로부터 상기 추정된 제2 메시지(m2(1))의 BER의 감소 비율보다 클 수 있다.
예를 들어 한번의 ECC 디코딩을 통해 BER이 1/10으로 감소한다고 가정하면, BER[m1]/BER[m1(2)] = 100 이고, BER[m2]/BER[m2(1)] = 10 일 수 있다.
실시예에 따라서는, 디코더(120)는 제1 메시지(m1) 부분을 제외한 나머지 데 이터만을 제2 데이터로서 읽을 수 있다. 이 때, 제2 데이터는 제2 메시지(m2) 및 제2 패리티(p12)를 포함하고, 디코더(120)는 상기 추정된 제1 메시지(m1(1)) 및 제2 데이터를 결합하여 제2 코드워드를 생성할 수도 있다.
데이터가 서브 어레이(111)에 저장되고, 상기 저장된 데이터가 서브 어레이(111)로부터 읽히는 경로는 하나의 채널로 간주될 수 있다. 데이터가 채널을 통과하는 과정에서 오류를 포함할 수 있고, 디코더(120)는 데이터에 포함된 오류를 검출하고, 검출된 오류를 정정할 수 있다.
오류 정정 능력이 명시적으로 드러나는 코드로는 블록 코드(block codes) 등이 있다. 블록 코드의 예로는, BCH(Bose, Ray-Chaudhuri, Hocquenghem) 코드 또는 리드 솔로몬 (Reed-Solomon, RS) 코드 등이 있으며, 이에 대한 디코딩 기법으로 메짓(Meggitt) 디코딩 기법, 벌레캠프메시(Berlekamp-Massey) 디코딩 기법, 유클리드(Euclid) 디코딩 기법 등이 있다.
제1 데이터가 서브 어레이(111)에 저장되고, 상기 저장된 제1 데이터가 서브 어레이(111)로부터 읽히는 경로를 제1 채널이라고 하고, 제2 데이터가 서브 어레이(111)에 저장되고, 상기 저장된 제2 데이터가 서브 어레이(111)로부터 읽히는 경로를 제2 채널이라고 할 수 있다. 제1 채널을 통과한 제1 데이터에 포함되는 제1 메시지는 디코더(120)에 의해 두 번의 ECC 디코딩을 거치므로 재추정된 제1 메시지는 매우 낮은 BER을 가질 수 있다. 제2 채널을 통과한 제2 데이터는 한 번 ECC 디코딩을 거쳐 추정된 제1 메시지와 결합되어 ECC 디코드되므로, 추정된 제2 메시지는 매우 낮은 BER을 가질 수 있다. 추정된 제1 메시지는 상대적으로 낮은 BER을 가지므로, 제2 메시지 및 추정된 제1 메시지가 결합되어 생성된 제2 코드워드의 BER은 제2 메시지의 BER보다 낮을 수 있다. 제2 메시지의 BER이 디코더(120)가 정정할 수 있는 범위보다 크더라도, 상기 생성된 제2 코드워드의 BER은 디코더(120)가 정정할 수 있는 범위 이하일 수 있다. 디코더(120)는 추정된 제1 메시지 및 제2 메시지를 결합하여 생성된 제2 코드워드를 ECC 디코드함으로써 제2 메시지의 오류 정정 가능성을 높일 수 있다.
본 발명의 실시예들에 따르면, 서로 다른 채널을 통해 수신된 데이터를 순차적으로 ECC 디코드하고, 순차적으로 ECC 디코드하는 과정에서 이전에 추정된 메시지를 함께 ECC 디코드함으로써 ECC 디코드된 데이터의 BER을 최소화할 수 있다.
만일 두 번의 ECC 디코딩을 거치는 과정의 BER 감축이 추정된 다른 메시지와 결합되어 ECC 디코드되는 과정의 BER 감축보다 크면, 메모리 장치(100)는 BER이 상대적으로 높을 것으로 예측되는 채널을 제1 채널로 설정하고 BER이 상대적으로 낮을 것으로 예측되는 채널을 제2 채널로 설정하여 BER 감축을 극대화할 수 있다. 이 때, BER이 상대적으로 높을 것으로 예측되는 제1 채널의 BER은 두 번의 ECC 디코딩을 거치며 최소화되므로, 재추정된 제1 메시지 및 추정된 제2 메시지의 BER은 비슷한 레벨이 될 수 있다.
만일 추정된 다른 메시지와 결합되어 ECC 디코드되는 과정의 BER 감축이 두 번의 ECC 디코딩을 거치는 과정의 BER 감축보다 크면, 메모리 장치(100)는 BER이 상대적으로 낮을 것으로 예측되는 채널을 제1 채널로 설정하고 BER이 상대적으로 높을 것으로 예측되는 채널을 제2 채널로 설정하여 BER 감축을 극대화할 수 있다.
실시예에 따라서는, 디코더(120)는 채널의 특성에 기초하여 디코딩 기법을 선택하여 적용할 수도 있다. 디코더(120)는 제1 채널의 특성에 기초하여 제1 디코딩 기법을 선택하고, 선택된 제1 디코딩 기법을 제1 코드워드의 ECC 디코딩 과정에 적용할 수 있다. 디코더(120)는 제2 채널의 특성에 기초하여 제2 디코딩 기법을 선택하고, 선택된 제2 디코딩 기법을 제2 코드워드의 ECC 디코딩 과정에 적용할 수 있다.
본 발명의 실시예들에 적용 가능한 디코딩 기법은 LDPC(Low Density Parity Check) codes를 이용하는 디코딩 기법일 수도 있고, 길쌈 코드(convolutional codes)를 이용하는 디코딩 기법일 수도 있다. 본 발명의 실시예들에 적용 가능한 ECC의 종류의 예로는 LDPC codes(RA, zigzag), Convolutional codes, RSC codes, Turbo codes, BCH codes, RS codes, Goppa codes, RM codes 등이 있을 수 있다.
본 발명의 실시예들에 따르면 서로 다른 채널의 특성에 기초하여 ECC 디코딩 과정의 순서를 결정하고, 결정된 순서에 따라 먼저 ECC 디코드된 데이터를 결합하여 ECC 디코드함으로써 열등한 특성을 가진 채널의 오류 감축을 최대화할 수 있다. 또한, 본 발명의 실시예들에 따르면 열등한 특성을 가진 채널의 오류 감축을 최대화함으로써 오류 정정 가능성(error correctability)을 높일 수 있다.
싱글 레벨 셀(Single-Level Cell, SLC) 메모리는 하나의 메모리 셀에 1비트의 데이터를 저장하는 메모리이다. 싱글 레벨 셀 메모리는 싱글 비트 셀(Single-Bit Cell, SBC) 메모리로도 불린다. 싱글 레벨 셀 메모리의 싱글 레벨 셀에 1비트의 데이터를 저장하는 과정은 프로그램 과정이라고도 불리며, 싱글 레벨 셀의 문턱 전압을 변화 시킨다. 싱글 레벨 셀에 저장되는 1비트의 데이터가 "0"인지 "1"인지에 따라 싱글 레벨 셀의 메모리는 높은 문턱 전압 레벨 또는 낮은 문턱 전압 레벨을 가질 수 있다. 싱글 레벨 셀에 저장된 데이터를 읽는 과정은 싱글 레벨 셀의 문턱 전압을 감지(sense)하여 감지된 문턱 전압이 기준 전압(reference voltage) (또는 읽기 전압(read voltage) 레벨보다 높은지 또는 낮은지를 판정함으로써 실행된다.
메모리 장치(100)가 서브 어레이(111)의 메모리 셀들이 연결된 워드 라인에 읽기 전압 레벨과 연관된 특정 전압을 인가하면, 서브 어레이(111)의 메모리 셀들 각각의 문턱 전압 레벨이 읽기 전압 레벨보다 높은지 낮은지에 따라 메모리 셀들 각각에 연결된 비트 라인들 각각에 흐르는 전류가 결정될 수 있다. 디코더(120)는 서브 어레이(111)의 메모리 셀들 각각에 연결된 비트 라인들 각각에 흐르는 전류를 감지하고, 상기 감지된 전류의 레벨에 따라 서브 어레이(111)의 메모리 셀들 각각의 문턱 전압 레벨의 범위를 판정할 수 있다.
싱글 레벨 셀들 각각의 미세한 전기적 특성의 차이로 인해 싱글 레벨 셀들 각각의 문턱 전압은 일정한 범위의 산포(distribution)를 가질 수 있다. 예를 들어, 감지된 싱글 비트 셀의 문턱 전압이 0.5-1.5 볼트(volt)인 경우에는 싱글 비트 셀에 저장된 데이터는 논리 "1"이고, 감지된 싱글 비트 셀의 문턱 전압이 2.5-3.5 볼트인 경우에는 싱글 비트 셀에 저장된 데이터는 논리 "0"으로 판정될 수 있다.
메모리의 고집적화 요구에 응답하여 하나의 메모리 셀에 2비트 이상의 데이터를 저장할 수 있는 멀티 레벨 셀(MLC: multi-level cell) 메모리가 제안되었다. 멀티 레벨 셀 메모리는 멀티 비트 셀(MBC: multi-bit cell) 메모리로도 불린다. 하나의 메모리 셀에 저장되는 비트의 수가 증가할수록 신뢰성은 떨어지고, 판독 실패율(read failure rate)은 증가하게 된다. 하나의 메모리 셀이 m 비트의 데이터를 저장할 수 있다면, 하나의 메모리 셀에 형성되는 문턱 전압 레벨은 2m 개 중 어느 하나일 수 있다. 메모리 셀들 각각이 가지는 미세한 전기적 특성의 차이로 인해, 메모리 셀들 각각이 m비트의 데이터를 저장할 수 있다면, 메모리 셀들의 문턱 전압 레벨들은 2m개의 산포들을 형성할 수 있다.
메모리의 전압 윈도우(voltage window)는 제한되어 있으므로, m이 증가함에 따라 인접한 산포들 간의 간격은 줄어들게 되고, 더욱 m이 증가하면 인접한 산포들은 서로 겹칠 수 있다. 인접한 산포들이 서로 겹치면 메모리 셀들로부터 읽히는 데이터의 판독 실패율이 증가한다.
MLC 메모리에 데이터를 저장하고, MLC 메모리로부터 데이터를 읽는 과정에서 발생하는 오류를 검출하고, 검출된 오류를 정정하기 위하여 ECC 인코딩 및/또는 ECC 디코딩 기법이 MLC 메모리에 적용될 수 있다.
메모리 셀 어레이(110)는 멀티 비트 데이터를 저장할 수 있는 복수의 멀티 비트 셀들을 포함할 수 있다. 디코더(120)는 제1 데이터가 읽히는 멀티 비트 셀들로부터 제2 데이터를 읽을 수 있다.
제1 데이터 및 제2 데이터는 서브 어레이(111)의 멀티 비트 셀들에 저장된 데이터일 수 있다. 제1 데이터 및 제2 데이터는 동일한 멀티 비트 셀들에 저장된 데이터이지만, 서로 다른 비트 계층(bit layer)을 형성하는 데이터일 수 있다. 예를 들어, 디코더(120)는 최상위 비트(most significant bit, MSB)의 비트 계층을 형성하는 제1 데이터를 서브 어레이(111)의 멀티 비트 셀들로부터 읽고, 최하위 비트(least significant bit, LSB)의 비트 계층을 형성하는 제2 데이터를 서브 어레이(111)의 멀티 비트 셀들로부터 읽을 수 있다.
비트 계층(bit layer)을 형성하는 데이터를 페이지(page)를 형성한다고 하기도 한다. 본 명세서에서는, 하나의 워드 라인(word line)에 연결되는 멀티 비트 셀들의 집합을 메모리 페이지(memory page)라 명명하고, 하나의 메모리 페이지의 멀티 비트 셀들에 저장되며 하나의 비트 계층을 형성하는 데이터를 데이터 페이지(data page)라고 명명하여 사용하기로 한다. 상기 명칭은 설명의 편의를 위한 것으로 이로 인해 본 발명의 권리 범위가 좁아지도록 해석되어서는 안 될 것이다.
만일 멀티 비트 셀들이 4비트의 데이터를 저장하는 경우에, 4개의 비트 계층이 존재할 수 있다. MSB의 비트 계층을 제1 비트 계층이라 하고, LSB의 비트 계층을 제4 비트 계층이라 하면, 디코더(120)는 제1 비트 계층을 형성하는 데이터를 제1 데이터로서 읽고, 제2 비트 계층을 형성하는 데이터를 제2 데이터로서 읽을 수 있다. 디코더(120)는 제1 채널의 특성에 기초하여 제1 데이터에 대응하는 제1 디코딩 기법을 선택하고, 제2 채널의 특성에 기초하여 제2 데이터에 대응하는 제2 디코딩 기법을 선택할 수 있다.
실시예에 따라서는, 디코더(120)는 제1 비트 계층을 형성하는 데이터를 제1 데이터로서 읽고, 제2 비트 계층을 형성하는 데이터를 제2 데이터로서 읽고, 제3 비트 계층을 형성하는 데이터를 제3 데이터로서 읽고, 제4 비트 계층을 형성하는 데이터를 제4 데이터로서 읽을 수 있다. 실시예에 따라서는, 디코더(120)는 제1 코드워드 및 제2 코드워드의 ECC 디코딩을 위해 제1 디코딩 기법을 선택하고, 제3 코드워드 및 제4 코드워드의 ECC 디코딩을 위해 제2 디코딩 기법을 선택할 수 있다. 실시예에 따라서는, 디코더(120)는 제1 코드워드의 ECC 디코딩을 위해 제1 디코딩 기법을 선택하고, 제2 코드워드의 ECC 디코딩을 위해 제2 디코딩 기법을 선택하고, 제3 코드워드의 ECC 디코딩을 위해 제3 디코딩 기법을 선택하고, 제4 코드워드의 ECC 디코딩을 위해 제4 디코딩 기법을 선택할 수 있다.
실시예에 따라서는, MSB에 대응하는 비트 계층은 멀티 비트 셀들의 문턱 전압의 변화에 대하여 한 번의 천이(transition)를 경험할 수 있다. 천이는 비트 계층의 데이터의 값이 "1"에서 "0"으로 또는 "0"에서 "1"로 변화하는 이벤트이다. MSB에 대응하는 비트 계층에서는 읽기 전압 레벨보다 낮은 문턱 전압을 가지는 멀티 비트 셀들에는 "1"이 저장되고, 상기 읽기 전압 레벨보다 높은 문턱 전압을 가지는 멀티 비트 셀들에는 "0"이 저장된 것으로 판정될 수 있다. LSB에 대응하는 비트 계층은 멀티 비트 셀들의 문턱 전압의 변화에 대하여 2(m-1) 번의 천이들을 경험할 수 있다. LSB에 대응하는 비트 계층의 데이터를 판정하기 위해서는 2(m-1) 개의 읽기 전압 레벨들이 필요할 수 있다.
실시예에 따라서는, 서브 어레이(111)는 하나의 데이터 페이지이고, 제1 데이터는 MSB의 비트 계층을 형성하는 제1 데이터 페이지일 수 있다. 제2 데이터는 LSB의 비트 계층을 형성하는 제2 데이터 페이지일 수 있다. 제1 채널은 하나의 읽기 전압 레벨을 이용하여 제1 데이터 페이지를 읽는 과정이고, 제2 채널은 2(m-1) 개의 읽기 전압 레벨들을 이용하여 제2 데이터 페이지를 읽는 과정일 수 있다. 비트 계층이 경험하는 천이 횟수가 클수록 비트 계층에 대응하는 채널에서 오류가 발생할 확률이 증가한다. LSB의 비트 계층은 MSB의 비트 계층보다 많은 천이를 경험하므로 제2 채널에서 오류가 발생할 확률은 제1 채널에서 오류가 발생할 확률보다 클 수 있다. ECC 인코딩 및/또는 디코딩 기법은 많은 수의 잉여 정보를 이용할수록 많은 수의 오류를 정정할 수 있다. 제2 채널에서 오류가 발생할 확률이 제1 채널에서 오류가 발생할 확률보다 크면, 디코더(120)는 제1 디코딩 기법보다 오류 정정 능력이 높은 제2 디코딩 기법을 선택할 수 있다.
본 발명의 실시예들에 따르면, 멀티 비트 셀의 비트 계층에 따라 채널의 ECC 디코딩 순서를 결정할 수 있다. 본 발명의 실시예들은 상기 결정된 순서에 따라 데이터를 ECC 디코드하는 과정에서 ECC 디코드될 데이터 및 먼저 ECC 디코드된 데이터를 결합하여 함께 ECC 디코드함으로써 멀티 비트 셀의 비트 계층에 따라 변화하는 채널 특성에 최적화된 ECC 디코딩 기법의 구현이 가능하다. 본 발명의 실시예들에 따르면 오류가 발생할 확률이 가장 높은 크리티컬 페이지의 오류 정정 가능성(error correctability)을 높일 수 있다. 또한, 본 발명의 실시예들에 따르면 전반적인 페이지의 오류 정정 가능성을 높일 수 있다.
실시예에 따라서는, 디코더(120)는 제1 코드워드의 디코딩 기법에 대응하는 제1 내부 디코딩 모듈(도시되지 않음) 및 제2 코드워드의 디코딩 기법에 대응하는 제2 내부 디코딩 모듈(도시되지 않음)을 포함할 수 있다. 제1 내부 디코딩 모듈은 제1 코드워드를 ECC 디코드하여 제1 메시지를 추정하고, 제2 내부 디코딩 모듈은 제2 코드워드를 ECC 디코드하여 제2 메시지를 추정할 수 있다. 이 때, 각 내부 디코딩 모듈은 단순한 데이터 경로를 형성하므로 하드웨어의 복잡도를 낮출 수 있다. 복수의 디코딩 모듈을 이용하는 디코딩 과정은 도 2를 통하여 상세히 설명된다.
도 2는 도 1의 디코더(120)의 디코딩 과정의 일 예를 도시하는 도면이다.
도 2를 참조하면, 디코더(120)는 제1 디코딩 모듈(210), 제2 디코딩 모듈(220) 및 제3 디코딩 모듈(230)을 포함한다. 제1 디코딩 모듈(210)은 제1 비트 계층 (또는 레벨 1)에 대한 ECC 디코딩을 수행한다. 제2 디코딩 모듈(220)은 제2 비트 계층 (또는 레벨 2)에 대한 ECC 디코딩을 수행한다. 제3 디코딩 모듈(230)은 제3 비트 계층 (또는 레벨 3)에 대한 ECC 디코딩을 수행한다.
제1 디코딩 모듈(210)은 제1 코드워드(213)를 ECC 디코드한다. 제1 코드워드(213)는 메모리 셀 어레이(110)로부터 읽은 제1 메시지 m1 (211) 및 메모리 셀 어레이(110)로부터 읽은 제1 패리티 p1 (212)를 포함할 수 있다. 제1 디코딩 모듈(210)은 제1 코드워드(213)를 ECC 디코드하여 추정된 제1 메시지 m1(1) (214)를 생성한다.
제2 디코딩 모듈(220)은 제2 코드워드(223)를 ECC 디코드한다. 제2 코드워드(223)는 상기 추정된 제1 메시지 m1(1) (214), 메모리 셀 어레이(110)로부터 읽은 제2 메시지 m2(221) 및 메모리 셀 어레이(110)로부터 읽은 제2 패리티 p12 (222)를 포함할 수 있다. 제2 디코딩 모듈(220)은 제2 코드워드(223)를 ECC 디코드하여 추정된 제2 메시지 m2(1) (226) 및 재추정된 제1 메시지 m1(2) (225)를 생성할 수 있다. 제2 패리티 p12 (222)는 제1 메시지 m1(211) 및 제2 메시지 m2(221)가 메모리 셀 어레이(110)에 저장되기 전에 수행된 ECC 인코딩 과정의 잉여 정보일 수 있다.
제3 디코딩 모듈(230)은 제3 코드워드(233)를 ECC 디코드한다. 제3 코드워드(233)는 제2 디코딩 모듈(220)의 ECC 디코딩 결과(224), 메모리 셀 어레이(110)로부터 읽은 제3 메시지 m3 (231) 및 메모리 셀 어레이(110)로부터 읽은 제3 패리티 p13 (232)를 포함할 수 있다. 제2 디코딩 모듈(220)의 ECC 디코딩 결과(224)는 추정된 제2 메시지 m2(1) (226) 및 재추정된 제1 메시지 m1(2) (225)를 포함할 수 있다. 제3 패리티 p13 (232)는 제1 메시지 m1(211), 제2 메시지 m2(221) 및 제3 메시지 m3 (231)가 메모리 셀 어레이(110)에 저장되기 전에 수행된 ECC 인코딩 과정의 잉여 정보일 수 있다. 제3 디코딩 모듈(230)은 제3 코드워드(233)를 ECC 디코드하여 추정된 제3 메시지 m3(1) (237), 재추정된 제2 메시지 m2(2) (236) 및 3회 추정된 제1 메시지 m1(3) (235)를 생성할 수 있다.
메모리 장치(100)는 제3 디코딩 모듈(230)의 ECC 디코딩 결과(234)를 최종 디코딩 결과로서 출력할 수 있다.
메모리 셀 어레이(110)로부터 읽은 제1 메시지 m1 (211)는 3회 ECC 디코드되어 상기 3회 추정된 제1 메시지 m1(3) (235)로서 출력되므로, BER의 개선 정도가 제2 메시지 m2 (221) 또는 제3 메시지 m3 (231)보다 클 수 있다.
메모리 셀 어레이(110)로부터 읽은 제3 메시지 m3 (231)는 이미 한번 이상 ECC 디코드된 메시지들 (225, 226)과 함께 ECC 디코드되므로 제3 메시지 m3 (231)의 BER이 상대적으로 높더라도 제3 디코딩 모듈(230)에 의해 제3 메시지 m3 (213)의 오류가 정정될 수 있다.
도 3은 본 발명의 다른 실시예에 따른 메모리 장치(300)를 도시하는 도면이다.
도 3을 참조하면, 메모리 장치(300)는 메모리 셀 어레이(310), 프로그래밍부(320) 및 인코더(330)를 포함한다.
메모리 셀 어레이(310)는 서브 어레이(311)를 포함한다. 서브 어레이(311)는 프로그래밍부(320)에 의해 동시에 프로그래밍되는 메모리 셀들의 집합일 수 있다. 서브 어레이(311)는 하나의 워드 라인(word line)에 연결된 메모리 셀들의 집합일 수 있다.
인코더(330)는 제1 메시지를 ECC 인코드하여 제1 코드워드를 생성하고, 제1 메시지 및 제2 메시지를 ECC 인코드하여 제2 코드워드를 생성할 수 있다.
프로그래밍부(320)는 상기 생성된 제1 코드워드 및 상기 생성된 제2 코드워드를 서브 어레이(311)의 메모리 셀들에 프로그램할 수 있다.
인코더(330)에 의해 ECC 인코드된 코드워드는 인코더(330)의 인코딩 기법에 대응하는 디코딩 기법에 의해 ECC 디코드될 수 있다. 코드워드가 메모리 셀들에 저장되고, 상기 저장된 코드워드가 메모리 셀들로부터 읽히는 경로를 채널이라 할 수 있고, 코드워드는 채널을 거치면서 오류를 포함할 수 있다.
디코딩 기법은 정정 가능 범위 이하의 BER을 가지는 코드워드를 ECC 디코드함으로써 코드워드의 모든 오류를 정정할 수 있다. 메모리 장치(300)는 채널의 특성에 따라 채널을 거친 코드워드의 BER을 예측하고, 상기 예측된 BER을 초과하는 오류를 정정 수 있는 성능을 가지는 디코딩 기법을 설정하고, 상기 설정된 디코딩 기법에 대응하는 인코딩 기법을 설정할 수 있다.
ECC 인코딩 과정은 유효 정보인 메시지(message)에 잉여 정보(redundant information)를 부가하여 코드워드를 생성할 수 있다. 잉여 정보는 메시지가 채널을 거치는 과정에서 포함할 수 있는 오류를 정정하기 위한 정보이다. 동일한 크기의 유효 정보에 대해 잉여 정보의 크기가 클수록 ECC 디코딩 과정은 많은 오류를 정정할 수 있다. 잉여 정보의 예로는 패리티(parity) 등이 있을 수 있다.
BER이 상대적으로 높은 코드워드 및 BER이 상대적으로 낮은 코드워드를 결합하여 긴 코드워드를 생성하면 상기 생성된 긴 코드워드의 BER은 결합된 두 코드워드의 BER의 평균이 될 수 있다.
실시예에 따라서는, 메모리 셀 어레이(310)는 멀티 비트 데이터를 저장할 수 있는 복수의 멀티 비트 셀들을 포함할 수 있다. 프로그래밍부(320)는 상기 ECC 인코드된 제1 코드워드가 저장되는 멀티 비트 셀들에 상기 ECC 인코드된 제2 코드워드를 저장할 수 있다.
실시예에 따라서는, 서브 어레이(311)는 하나의 워드 라인에 연결된 멀티 비트 셀들로 이루어진 메모리 페이지일 수 있다. 프로그래밍부(320)는 서브 어레이(311)의 MSB의 비트 계층(bit layer)에 상기 ECC 인코드된 제1 코드워드를 저장 할 수 있고, 서브 어레이(311)의 LSB의 비트 계층에 상기 ECC 인코드된 제2 코드워드를 저장할 수 있다.
실시예에 따라서는, 메모리 셀 어레이(310)의 멀티 비트 셀들 각각은 m비트의 데이터를 저장할 수 있다. 이 때, 서브 어레이(311)의 MSB의 비트 계층은 제1 비트 계층이고, 서브 어레이(311)의 LSB의 비트 계층은 제m 비트 계층일 수 있다. 서브 어레이(311)의 멀티 비트 셀들 각각은 m개의 비트 계층을 가질 수 있다. 프로그래밍부(320)는 서브 어레이(311)의 제1 비트 계층에 상기 ECC 인코드된 제1 코드워드를 저장하고, 서브 어레이(311)의 제2 비트 계층에 상기 ECC 인코드된 제2 코드워드를 저장할 수 있다.
실시예에 따라서는, 메모리 셀 어레이(310)의 멀티 비트 셀들 각각은 4비트의 데이터를 저장할 수 있다. 이 때, 서브 어레이(311)의 멀티 비트 셀들 각각은 4개의 비트 계층을 가질 수 있다.
프로그래밍부(320)는 서브 어레이(311)의 MSB의 비트 계층인 제1 비트 계층에 상기 ECC 인코드된 제1 코드워드를 저장할 수 있고, 서브 어레이(311)의 제2 비트 계층에 상기 ECC 인코드된 제2 코드워드를 저장할 수 있다. 프로그래밍부(320)는 서브 어레이(311)의 제3 비트 계층에 상기 ECC 인코드된 제3 코드워드를 저장할 수 있고, 서브 어레이(311)의 LSB의 비트 계층인 제4 비트 계층에 상기 ECC 인코드된 제4 코드워드를 저장할 수 있다.
제1 채널은 상기 ECC 인코드된 제1 코드워드가 서브 어레이(311)의 제1 비트 계층에 저장되는 과정이고, 제2 채널은 상기 ECC 인코드된 제2 코드워드가 서브 어 레이(311)의 제2 비트 계층에 저장되는 과정일 수 있다. 제3 채널은 상기 ECC 인코드된 제3 코드워드가 서브 어레이(311)의 제3 비트 계층에 저장되는 과정이고, 제4 채널은 상기 ECC 인코드된 제4 코드워드가 서브 어레이(311)의 제4 비트 계층에 저장되는 과정일 수 있다.
인코더(330)는 제1 메시지를 ECC 인코드하여 제1 코드워드를 생성할 수 있다. 제1 코드워드는 ECC 인코드된 제1 메시지 및 ECC 인코드된 제1 패리티를 포함할 수 있다.
인코더(330)는 제1 메시지 및 제2 메시지를 ECC 인코드하여 제2 코드워드를 생성할 수 있다. 제2 코드워드는 ECC 인코드된 제1 메시지, ECC 인코드된 제2 메시지 및 ECC 인코드된 제2 패리티를 포함할 수 있다. ECC 인코드된 제2 패리티는 제1 메시지 및 제2 메시지에 대한 잉여 정보를 포함할 수 있다.
인코더(330)는 제1 메시지, 제2 메시지 및 제3 메시지를 ECC 인코드하여 제3 코드워드를 생성할 수 있다. 제3 코드워드는 ECC 인코드된 제1 메시지, ECC 인코드된 제2 메시지, ECC 인코드된 제3 메시지 및 ECC 인코드된 제3 패리티를 포함할 수 있다. 상기 ECC 인코드된 제3 패리티는 제1 메시지, 제2 메시지 및 제3 메시지에 대한 잉여 정보를 포함할 수 있다.
인코더(330)는 제1 메시지, 제2 메시지, 제3 메시지 및 제4 메시지를 ECC 인코드하여 제4 코드워드를 생성할 수 있다. 제4 코드워드는 ECC 인코드된 제1 메시지, ECC 인코드된 제2 메시지, ECC 인코드된 제3 메시지, ECC 인코드된 제4 메시지 및 ECC 인코드된 제4 패리티를 포함할 수 있다. 상기 ECC 인코드된 제4 패리티는 제1 메시지, 제2 메시지, 제3 메시지 및 제4 메시지에 대한 잉여 정보를 포함할 수 있다.
제1 비트 계층은 MSB에 대응하므로 한 번의 천이(transition)를 경험하고, 제2 비트 계층은 두 번의 천이를 경험할 수 있다. 제3 비트 계층은 4번의 천이를 경험하고, 제4 비트 계층은 8번의 천이를 경험할 수 있다. 비트 계층이 경험하는 천이의 횟수가 클수록 비트 계층에 대응하는 채널의 오류 발생 확률이 증가하므로 제4 채널의 특성 상 가장 높은 오류 발생 확률을 가질 것으로 예측될 수 있다.
인코더(330)는 비트 계층들 각각의 천이 횟수에 기초하여 채널들 각각의 오류 발생 확률을 예측할 수 있다. 인코더(330)는 코드워드가 채널을 거치면서 포함할 수 있는 오류의 비율을 디코딩 기법의 오류 정정 능력보다 낮출 수 있도록 채널에 대한 메시지 및 잉여 정보의 크기 비율을 조정할 수 있다. 디코딩 기법은 인코더(330)의 인코딩 기법에 대응하는 디코딩 기법을 의미한다. 동일한 메시지에 대하여 큰 크기의 잉여 정보가 부가될수록 오류 정정 능력이 증가할 수 있다.
실시예에 따라서는, 인코더(330)는 제1 채널의 특성에 따라 제1 코드워드의 유효 정보 및 잉여 정보의 크기를 설정할 수 있다. 인코더(330)는 설정된 유효 정보 및 잉여 정보의 크기를 이용하여 제1 코드워드를 생성할 수 있다. 인코더(330)는 제2 채널의 특성에 따라 제2 코드워드의 유효 정보 및 잉여 정보의 크기를 설정할 수 있다. 인코더(330)는 설정된 유효 정보 및 잉여 정보의 크기를 이용하여 제2 코드워드를 생성할 수 있다. 실시예에 따라서는, 인코더(330)는 하나의 인코딩 경로를 이용하여 제1 코드워드 및 제2 코드워드를 생성할 수 있으므로, 하드웨어의 구현에 필요한 회로의 면적을 줄일 수 있다.
인코더(330)는 제4 채널에 가장 높은 잉여 정보 비율을 설정하고, 제3 채널에는 제4 채널의 잉여 정보 비율보다 낮은 잉여 정보 비율을 설정할 수 있다. 내부 인코더(330)는 제1 채널에 가장 낮은 잉여 정보 비율을 설정할 수 있다.
인코더(330)는 가장 오류 발생 가능성이 높은 비트 계층인 LSB의 비트 계층에 대응하는 채널을 제4 채널로 선택하고, 가장 오류 발생 가능성이 낮은 비트 계층인 MSB의 비트 계층에 대응하는 채널을 제1 채널로 선택할 수 있다.
제4 채널을 거치는 메시지는 오류 발생 가능성이 상대적으로 낮은 제1 채널, 제2 채널 및 제3 채널을 거치는 메시지와 결합되어 제4 코드워드를 생성하고, 제4 코드워드는 ECC 인코드되어 메모리 셀 어레이(310)에 저장될 수 있다. ECC 인코드된 제4 코드워드는 메모리 셀 어레이(310)로부터 읽히고, 상기 읽힌 제4 코드워드는 ECC 디코드되어 복원될 수 있다. 제4 코드워드의 ECC 디코딩 과정에서는 상대적으로 오류 발생 가능성이 낮은 제1 채널, 제2 채널 및 제3 채널을 거치는 메시지들의 ECC 디코딩 결과를 이용할 수 있다. 디코딩 과정은 제1 채널, 제2 채널 및 제3 채널을 거치는 메시지들의 ECC 디코딩 결과를 이용하여 제4 코드워드의 BER을 낮출 수 있다. 메모리 장치(300)는 채널의 특성이 가장 열등한 제4 채널을 거친 코드워드의 BER을 낮출 수 있으므로, 크리티컬한 데이터 페이지의 오류 정정 가능성을 높일 수 있다.
실시예에 따라서는, 인코더(330)는 LSB의 비트 계층인 제4 비트 계층에 대응하는 채널을 제1 채널로 선택하고, MSB의 비트 계층에 대응하는 제1 비트 계층에 대응하는 채널을 제4 채널로 선택할 수도 있다. 인코더(330)에 의해 ECC 인코드된 데이터는 후에 도 1의 디코더(120)에 의해 ECC 디코드될 수 있다. 디코더(120)는 제1 메시지를 복수 회 ECC 디코드함으로써 제1 메시지에 대한 오류 개선을 최대화할 수 있다. 따라서 인코더(330)는 가장 오류 발생 가능성이 높은 비트 계층인 LSB의 비트 계층에 대응하는 채널을 제1 채널로 선택할 수 있다. 인코더(330)는 가장 오류 발생 가능성이 낮은 비트 계층인 MSB의 비트 계층에 대응하는 채널을 제4 채널로 선택할 수 있다. 채널의 특성이 가장 열등한 제1 채널을 거치는 메시지는 디코딩 과정에서 복수 회 반복적으로 ECC 디코드되므로 제1 채널을 거치는 메시지의 오류 정정 가능성이 높을 수 있다.
본 발명의 실시예들에 따르면 서로 다른 채널을 거치는 데이터를 순차적으로 결합하여 코드워드를 생성하고, 상기 생성된 코드워드를 ECC 인코드함으로써 멀티 비트 셀 메모리의 데이터 페이지 각각의 오류 비율을 조정할 수 있다.
본 발명의 실시예들에 따르면 멀티 비트 셀 메모리의 데이터 페이지 각각의 오류 비율을 조정할 수 있으므로 오류 발생 확률이 가장 높은 크리티컬 페이지의 오류 정정 가능성(error correctability)을 높일 수 있다.
실시예에 따라서는, 인코더(330)는 채널 각각의 잉여 정보의 비율을 조정하여 데이터 페이지 각각의 오류 정정 가능성을 높일 수 있다.
채널 각각의 잉여 정보의 비율이 조정되는 경우 채널 각각에 서로 다른 인코딩 기법이 적용될 수 있다. 인코더(330)는 제1 채널에는 제1 인코딩 기법을 적용하고, 제2 채널에는 제2 인코딩 기법을 적용할 수 있다. 실시예에 따라서는 인코 더(330)는 채널 각각에 서로 다른 종류의 인코딩 기법을 적용할 수 있다.
실시예에 따라서는, 인코더(330)는 채널 별로 동일한 종류의 ECC 인코딩 기법을 적용할 수 있고, 필요에 따라 extending, shortening, puncturing 등을 이용하여 코드의 성능을 조절할 수 있다.
인코더(330)는 채널 각각에 서로 다른 인코딩 기법(서로 다른 인코딩 기법은 서로 다른 잉여 정보의 비율을 포함할 수 있다)을 적용하고, 서로 다른 인코딩 경로를 이용하여 채널 각각을 거치는 데이터를 ECC 인코드할 수 있다. 예를 들어 인코더(330)는 제1 인코딩 모듈 및 제2 인코딩 모듈을 포함할 수 있다. 인코더(330)는 제1 채널에 제1 인코딩 기법을 적용할 수 있다. 제1 인코딩 모듈은 제1 인코딩 기법에 대응하고 제1 메시지를 ECC 인코드하여 제1 코드워드를 생성할 수 있다. 인코더(330)는 제2 채널에 제2 인코딩 기법을 적용할 수 있다. 제2 인코딩 모듈은 제2 인코딩 기법에 대응하고 제1 메시지 및 제2 메시지를 ECC 인코드하여 제2 코드워드를 생성할 수 있다.
실시예에 따라서는, 인코더(330)는 하나의 인코딩 경로를 이용하여 채널 각각을 거치는 데이터를 ECC 인코드할 수도 있다.
실시예에 따라서는, 인코더(330)는 제1 채널 및 제2 채널에 제1 인코딩 기법을 적용하고, 제3 채널 및 제4 채널에 제2 인코딩 기법을 적용할 수도 있다.
실시예에 따라서는, 인코더(330)는 채널 각각에 서로 다른 종류의 ECC 인코딩 기법을 적용할 수도 있다. 예를 들어, 제1 인코딩 기법은 BCH codes를 이용하는 ECC 인코딩 기법이고, 제2 인코딩 기법은 RS codes를 이용하는 ECC 인코딩 기법 일 수 있다.
도 4는 도 3의 메모리 장치(300)의 인코딩 과정의 일 예를 도시하는 도면이다.
도 4를 참조하면, 인코더(330)는 제1 인코딩 모듈(410), 제2 인코딩 모듈(420) 및 제3 인코딩 모듈(430)을 포함한다.
제1 인코딩 모듈(410)은 제1 비트 계층(또는 레벨 1)에 대응하는 채널을 거치는 제1 메시지 m1 (411)를 ECC 인코드하여 제1 코드워드(414)를 생성할 수 있다. 제1 코드워드(414)는 ECC 인코드된 제1 메시지(412) 및 ECC 인코드된 제1 패리티 p1(413)를 포함할 수 있다. 제1 패리티 p1(413)는 제1 메시지 m1(411)의 오류를 검출 및 정정하기 위한 잉여 정보일 수 있다.
제2 인코딩 모듈(420)은 제2 비트 계층(또는 레벨 2)에 대응하는 채널을 거치는 제1 메시지 m1 (411) 및 제2 메시지 m2 (421)를 ECC 인코드하여 제2 코드워드(425)를 생성할 수 있다. 제2 코드워드(425)는 ECC 인코드된 제1 메시지(422), ECC 인코드된 제2 메시지(423) 및 ECC 인코드된 제2 패리티 p12(424)를 포함할 수 있다. 제2 패리티 p12(424)는 제1 메시지 m1(411) 및 제2 메시지 m2(421)의 오류를 검출 및 정정하기 위한 잉여 정보일 수 있다.
제3 인코딩 모듈(430)은 제3 비트 계층(또는 레벨 3)에 대응하는 채널을 거치는 제1 메시지 m1 (411), 제2 메시지 m2 (421) 및 제3 메시지 m3 (431)를 ECC 인코드하여 제3 코드워드(436)를 생성할 수 있다. 제3 코드워드(436)는 ECC 인코드된 제1 메시지(432), ECC 인코드된 제2 메시지(433), ECC 인코드된 제3 메시 지(434) 및 ECC 인코드된 제3 패리티 p13(435)를 포함할 수 있다. 제3 패리티 p13(435)는 제1 메시지 m1(411), 제2 메시지 m2(421) 및 제3 메시지 m3(431)의 오류를 검출 및 정정하기 위한 잉여 정보일 수 있다.
도 5는 도 4의 ECC 인코딩 방법에 의하여 생성된 데이터 페이지들이 저장되어 형성된 멀티 비트 셀들의 문턱 전압의 산포의 일 예를 도시하는 도면이다.
도 5를 참조하면, 가로축은 멀티 비트 셀들의 문턱 전압을 나타내고, 세로축은 해당 문턱 전압을 가지는 멀티 비트 셀들의 개수를 나타낸다.
제1 데이터 페이지의 저장 과정에서 "0"이 저장되고, 제2 데이터 페이지의 저장 과정에서 '1"이 저장되고, 제3 데이터 페이지의 저장 과정에서 "0"이 저장된 멀티 비트 셀은 데이터 "010"을 저장하게 된다.
산포(510)는 데이터 "111"을 저장하는 멀티 비트 셀들의 문턱 전압의 산포를 나타낸다.
산포(520)는 데이터 "110"을 저장하는 멀티 비트 셀들의 문턱 전압의 산포를 나타낸다.
산포(530)는 데이터 "100"을 저장하는 멀티 비트 셀들의 문턱 전압의 산포를 나타낸다.
산포(540)는 데이터 "101"을 저장하는 멀티 비트 셀들의 문턱 전압의 산포를 나타낸다.
산포(550)는 데이터 "001"을 저장하는 멀티 비트 셀들의 문턱 전압의 산포를 나타낸다.
산포(560)는 데이터 "000"을 저장하는 멀티 비트 셀들의 문턱 전압의 산포를 나타낸다.
산포(570)는 데이터 "010"을 저장하는 멀티 비트 셀들의 문턱 전압의 산포를 나타낸다.
산포(580)는 데이터 "011"을 저장하는 멀티 비트 셀들의 문턱 전압의 산포를 나타낸다.
MSB 계층은 문턱 전압이 증가함에 따라 산포(540) 및 산포(550) 사이에서 천이 ("1" -> "0")를 경험한다. 제2 비트 계층은 문턱 전압이 증가함에 따라 산포(520) 및 산포(530) 사이에서 제1 천이 ("1" -> "0")를 경험하고, 산포(560) 및 산포(570) 사이에서 제2 천이 ("0" -> "1")를 경험한다. LSB 계층은 문턱 전압이 증가함에 따라 산포(510) 및 산포(520) 사이에서 제1 천이 ("1" -> "0")를 경험하고, 산포(530) 및 산포(540) 사이에서 제2 천이 ("0" -> "1")를 경험한다. LSB 계층은 산포(550) 및 산포(560) 사이에서 제3 천이 ("1" -> "0")를 경험하고, 산포(570) 및 산포(580) 사이에서 제4 천이 ("0" -> "1")를 경험한다.
도 6은 본 발명의 또 다른 실시예에 따른 디코딩 방법을 도시하는 동작 흐름도이다.
도 6을 참조하면, 디코딩 방법은 제1 코드워드를 ECC 디코드하여 제1 메시지를 추정한다(S610). 제1 코드워드는 수신된 제1 데이터로부터 생성될 수 있다. 실시예에 따라서는 제1 코드워드는 제1 데이터와 동일할 수도 있다.
디코딩 방법은 상기 추정된 제1 메시지 및 수신된 제2 데이터를 결합하여 제 2 코드워드를 생성할 수 있다(S620).
디코딩 방법은 제2 코드워드를 ECC 디코드하여 제2 메시지를 추정할 수 있다(S630).
상기 추정된 제2 메시지는 상기 추정된 제1 메시지의 재추정 값을 포함할 수 있다.
단계(S620)는 상시 수신된 제2 데이터 중 상기 추정된 제1 메시지에 대응하는 부분을 상기 추정된 제1 메시지로 치환할 수도 있다.
도 7은 본 발명의 또 다른 실시예에 따른 인코딩 방법을 도시하는 동작 흐름도이다.
도 7을 참조하면, 인코딩 방법은 제1 메시지를 ECC 인코드하여 제1 코드워드를 생성한다(S710).
인코딩 방법은 제1 메시지 및 제2 메시지를 ECC 인코드하여 제2 코드워드를 생성한다(S720).
인코딩 방법은 제1 코드워드를 멀티 비트 셀들에 저장할 수 있다.
인코딩 방법은 제1 코드워드가 저장된 멀티 비트 셀들에 멀티 비트 프로그래밍 기법을 적용하여 제2 코드워드를 저장할 수 있다. 멀티 비트 프로그래밍 기법은 도 5를 통하여 앞에서 설명된 바와 같이 수행될 수 있다.
인코딩 방법은 특성이 서로 다른 채널을 거치는 제1 코드워드 및 제2 코드워드를 결합하여 긴 코드워드를 생성할 수 있다. 긴 코드워드의 BER은 제1 코드워드 및 제2 코드워드의 BER의 평균값일 수 있다. 따라서 인코딩 방법은 멀티 비트 셀 메모리의 크리티컬 페이지의 오류 정정 가능성을 높일 수 있다.
본 발명의 실시예들에 따른 ECC 인코딩 및/또는 디코딩 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명의 실시예들에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 구현될 수 있다. 예를 들면, 본 발명의 실시예들에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 구현될 수 있다.
플래시 메모리 장치와 메모리 컨트롤러는 메모리 카드를 구성할 수 있다. 이러한 경우, 메모리 컨트롤러는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 수 있다.
플래시 메모리 장치는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 비휘발성 메모리 장치이다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용될 수 있다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명의 실시예들에 따른 컴퓨팅 시스템은 버스에 전기적으로 연결된 마이크로프로세서, 사용자 인터페이스, 베이스밴드 칩셋(baseband chipset)과 같은 모뎀, 메모리 컨트롤러, 그리고 플래시 메모리 장치를 포함한다. 플래시 메모리 장치 에는 마이크로프로세서에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 컨트롤러를 통해 저장될 것이다. 본 발명의 실시예들에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리가 추가적으로 제공될 것이다.
본 발명의 실시예들에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 컨트롤러와 플래시 메모리 장치는, 예를 들면, 데이터를 저장하는 데 비휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치(100)를 도시하는 도면이다.
도 2는 도 1의 디코더(120)의 디코딩 과정의 일 예를 도시하는 도면이다.
도 3은 본 발명의 다른 실시예에 따른 메모리 장치(300)를 도시하는 도면이다.
도 4는 도 3의 메모리 장치(300)의 인코딩 과정의 일 예를 도시하는 도면이다.
도 5는 도 4의 ECC 인코딩 방법에 의하여 생성된 데이터 페이지들이 저장되어 형성된 멀티 비트 셀들의 문턱 전압의 산포의 일 예를 도시하는 도면이다.
도 6은 본 발명의 또 다른 실시예에 따른 디코딩 방법을 도시하는 동작 흐름도이다.
도 7은 본 발명의 또 다른 실시예에 따른 인코딩 방법을 도시하는 동작 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 메모리 셀 어레이
111: 서브 어레이
120: 디코더

Claims (18)

  1. 메모리 셀 어레이; 및
    상기 메모리 셀 어레이로부터 읽은 제1 데이터로부터 생성된 제1 코드워드를 오류 제어 코드(ECC) 디코드하여 제1 메시지를 추정하고, 상기 추정된 제1 메시지 및 상기 메모리 셀 어레이로부터 읽은 제2 데이터를 결합하여 제2 코드워드를 생성하고, 상기 제2 코드워드를 오류 제어 코드 디코드하여 제2 메시지를 추정하는 디코더
    를 포함하는 메모리 장치.
  2. 제1항에 있어서,
    상기 메모리 셀 어레이는
    멀티 비트 데이터를 저장할 수 있는 복수의 멀티 비트 셀들을 포함하고,
    상기 디코더는
    상기 제1 데이터가 읽히는 멀티 비트 셀들로부터 상기 제2 데이터를 읽는 메모리 장치.
  3. 제1항에 있어서,
    상기 제2 메시지는
    상기 제1 메시지의 재추정 값을 포함하는 메모리 장치.
  4. 제1항에 있어서,
    상기 디코더는
    상기 제2 데이터 중 상기 제1 메시지에 대응하는 부분을 상기 추정된 제1 메시지로 치환하여 상기 제2 코드워드를 생성하는 메모리 장치.
  5. 제1항에 있어서,
    상기 디코더는
    제1 채널을 경유하여 상기 메모리 셀 어레이로부터 상기 제1 데이터를 읽고, 상기 제1 채널의 특성에 기초하여 선택된 제1 디코딩 기법을 적용하여 상기 제1 코드워드를 오류 제어 코드 디코드하고, 제2 채널을 경유하여 상기 메모리 셀 어레이로부터 상기 제2 데이터를 읽고, 상기 제2 채널의 특성에 기초하여 선택된 제2 디코딩 기법을 적용하여 상기 제2 코드워드를 오류 제어 코드 디코드하는 메모리 장치.
  6. 제5항에 있어서,
    상기 디코더는
    상기 제1 디코딩 기법에 대응하고, 상기 제1 코드워드를 오류 제어 코드 디코드하여 상기 제1 메시지를 추정하는 제1 디코딩 모듈; 및
    상기 제2 디코딩 기법에 대응하고, 상기 제2 코드워드를 오류 제어 코드 디 코드하여 상기 제2 메시지를 추정하는 제2 디코딩 모듈
    을 포함하는 메모리 장치.
  7. 제5항에 있어서,
    상기 디코더는
    상기 제1 디코딩 기법에 따라 상기 제1 코드워드의 메시지 및 잉여 정보의 크기를 설정하여 상기 제1 코드워드를 오류 제어 코드 디코드하고, 상기 제2 디코딩 기법에 따라 상기 제2 코드워드의 메시지 및 잉여 정보의 크기를 설정하여 상기 제2 코드워드를 오류 제어 코드 디코드하는 메모리 장치.
  8. 메모리 셀 어레이;
    제1 메시지를 오류 제어 코드(ECC) 인코드하여 제1 코드워드를 생성하고, 상기 제1 메시지 및 제2 메시지를 오류 제어 코드(ECC) 인코드하여 제2 코드워드를 생성하는 인코더; 및
    상기 제1 코드워드 및 상기 제2 코드워드를 상기 메모리 셀 어레이에 저장하는 프로그래밍부
    를 포함하는 메모리 장치.
  9. 제8항에 있어서,
    상기 메모리 셀 어레이는
    멀티 비트 데이터를 저장할 수 있는 복수의 멀티 비트 셀들을 포함하고,
    상기 프로그래밍부는
    상기 제1 코드워드가 저장되는 멀티 비트 셀들에 상기 제2 코드워드를 저장하는 메모리 장치.
  10. 제8항에 있어서,
    상기 인코더는
    상기 제1 코드워드가 저장되는 제1 채널의 특성에 기초하여 선택된 제1 인코딩 기법을 적용하여 상기 제1 메시지를 오류 제어 코드 인코드하고, 상기 제2 코드워드가 저장되는 제2 채널의 특성에 기초하여 선택된 제2 인코딩 기법을 적용하여 상기 제1 메시지 및 상기 제2 메시지를 오류 제어 코드 인코드하는 메모리 장치.
  11. 제10항에 있어서,
    상기 인코더는
    상기 제1 인코딩 기법에 대응하고, 상기 제1 메시지를 오류 제어 코드 인코드하여 상기 제1 코드워드를 생성하는 제1 인코딩 모듈; 및
    상기 제2 인코딩 기법에 대응하고, 상기 제1 메시지 및 상기 제2 메시지를 오류 제어 코드 인코드하여 상기 제2 코드워드를 생성하는 제2 인코딩 모듈
    을 포함하는 메모리 장치.
  12. 제10항에 있어서,
    상기 인코더는
    상기 제1 인코딩 기법에 따라 상기 제1 코드워드의 메시지 및 잉여 정보의 크기를 설정하여 상기 제1 메시지를 오류 제어 코드 인코드하고, 상기 제2 인코딩 기법에 따라 상기 제2 코드워드의 메시지 및 잉여 정보의 크기를 설정하여 상기 제1 메시지 및 상기 제2 메시지를 오류 제어 코드 인코드하는 메모리 장치.
  13. 수신된 제1 데이터로부터 생성된 제1 코드워드를 오류 제어 코드(ECC) 디코드하여 제1 메시지를 추정하는 단계;
    상기 추정된 제1 메시지 및 수신된 제2 데이터를 결합하여 제2 코드워드를 생성하는 단계; 및
    상기 제2 코드워드를 오류 제어 코드(ECC) 디코드하여 제2 메시지를 추정하는 단계
    를 포함하는 디코딩 방법.
  14. 제13항에 있어서,
    상기 제2 메시지는 상기 추정된 제1 메시지의 재추정 값을 포함하는 디코딩 방법.
  15. 제13항에 있어서,
    상기 제2 코드워드를 생성하는 단계는
    상기 제2 데이터 중 상기 추정된 제1 메시지에 대응하는 부분을 상기 추정된 제1 메시지로 치환하는 디코딩 방법.
  16. 제1 메시지를 오류 제어 코드(ECC) 인코드하여 제1 코드워드를 생성하는 단계; 및
    상기 제1 메시지 및 제2 메시지를 오류 제어 코드(ECC) 인코드하여 제2 코드워드를 생성하는 단계
    를 포함하는 인코딩 방법.
  17. 제16항에 있어서,
    상기 제1 코드워드를 멀티 비트 셀들에 저장하는 단계; 및
    상기 제1 코드워드가 저장된 멀티 비트 셀들에 멀티 비트 프로그래밍 기법을 적용하여 상기 제2 코드워드를 저장하는 단계
    를 더 포함하는 인코딩 방법.
  18. 제13항 내지 제17항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020080024929A 2008-03-18 2008-03-18 메모리 장치 및 인코딩/디코딩 방법 KR101398212B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020080024929A KR101398212B1 (ko) 2008-03-18 2008-03-18 메모리 장치 및 인코딩/디코딩 방법
US12/232,258 US8713411B2 (en) 2008-03-18 2008-09-12 Encoding and/or decoding memory devices and methods thereof
PCT/KR2008/006587 WO2009116716A1 (en) 2008-03-18 2008-11-07 Encoding and/or decoding memory devices and methods thereof
JP2011500685A JP5345201B2 (ja) 2008-03-18 2008-11-07 符号化および/または復号化メモリ装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080024929A KR101398212B1 (ko) 2008-03-18 2008-03-18 메모리 장치 및 인코딩/디코딩 방법

Publications (2)

Publication Number Publication Date
KR20090099756A true KR20090099756A (ko) 2009-09-23
KR101398212B1 KR101398212B1 (ko) 2014-05-26

Family

ID=41090075

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080024929A KR101398212B1 (ko) 2008-03-18 2008-03-18 메모리 장치 및 인코딩/디코딩 방법

Country Status (4)

Country Link
US (1) US8713411B2 (ko)
JP (1) JP5345201B2 (ko)
KR (1) KR101398212B1 (ko)
WO (1) WO2009116716A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101234373B1 (ko) * 2011-04-28 2013-02-22 한국과학기술원 다차원 격자-rs 연접 부호의 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치를 위한 오류 정정 회로, 및 플래쉬 메모리 장치
US8650458B2 (en) 2011-01-19 2014-02-11 Samsung Electronics Co., Ltd. Methods of encoding/decoding for error correction code utilizing interdependent portions of codewords and related circuits
US9323594B2 (en) 2013-11-15 2016-04-26 SK Hynix Inc. Semiconductor device and method of operating the same
KR20160111594A (ko) * 2015-03-16 2016-09-27 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102203877B (zh) 2008-09-30 2016-07-06 Lsi公司 使用解码器性能反馈的用于存储器器件的软数据生成的方法和装置
KR20100104623A (ko) * 2009-03-18 2010-09-29 삼성전자주식회사 데이터 처리 시스템 및 그것의 부호율 제어 스킴
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US8386895B2 (en) * 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
WO2011161622A1 (en) * 2010-06-21 2011-12-29 Sandisk Il Ltd. Optimized flash memory without dedicated parity area and with reduced array size
US8612825B2 (en) 2010-09-10 2013-12-17 Qualcomm Incorporated Data classification based on cyclic redundancy check and decoder metric
US8578250B2 (en) * 2010-09-10 2013-11-05 Qualcomm Incorporated Data classification in a wireless communication system
CN103329103B (zh) * 2010-10-27 2017-04-05 希捷科技有限公司 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备
JP2012128660A (ja) * 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
US9106264B2 (en) * 2011-01-04 2015-08-11 Lsi Corporation Encoding and decoding in flash memories using convolutional-type low-density parity check codes
US9292377B2 (en) 2011-01-04 2016-03-22 Seagate Technology Llc Detection and decoding in flash memories using correlation of neighboring bits and probability based reliability values
US9898361B2 (en) 2011-01-04 2018-02-20 Seagate Technology Llc Multi-tier detection and decoding in flash memories
US9502117B2 (en) 2011-03-14 2016-11-22 Seagate Technology Llc Cell-level statistics collection for detection and decoding in flash memories
US8880977B2 (en) 2011-07-22 2014-11-04 Sandisk Technologies Inc. Systems and methods of storing data
US20130031431A1 (en) * 2011-07-28 2013-01-31 Eran Sharon Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats
US8737133B2 (en) * 2011-10-18 2014-05-27 Seagate Technology Llc Shifting cell voltage based on grouping of solid-state, non-volatile memory cells
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US8954817B2 (en) 2012-07-31 2015-02-10 Kabushiki Kaisha Toshiba Storage apparatus and controller
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US20140089561A1 (en) 2012-09-26 2014-03-27 Kiran Pangal Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
KR102002925B1 (ko) 2012-11-01 2019-07-23 삼성전자주식회사 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법
US9577673B2 (en) * 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US9098425B2 (en) 2013-01-10 2015-08-04 International Business Machines Corporation Implementing user mode foreign device attachment to memory channel
US9021328B2 (en) 2013-01-15 2015-04-28 International Business Machines Corporation Shared error protection for register banks
US9201727B2 (en) 2013-01-15 2015-12-01 International Business Machines Corporation Error protection for a data bus
US20140201599A1 (en) * 2013-01-15 2014-07-17 International Business Machines Corporation Error protection for integrated circuits in an insensitive direction
US9041428B2 (en) 2013-01-15 2015-05-26 International Business Machines Corporation Placement of storage cells on an integrated circuit
US9043683B2 (en) 2013-01-23 2015-05-26 International Business Machines Corporation Error protection for integrated circuits
US9124300B2 (en) * 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9026867B1 (en) * 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US20170046224A1 (en) * 2014-04-25 2017-02-16 Empire Technology Development Llc Storing data in storage devices
US9766976B2 (en) * 2015-06-08 2017-09-19 Sandisk Technologies Llc Data storage device and method for storing multiple codewords and redundancy information at a word line
KR101813132B1 (ko) * 2015-10-13 2017-12-28 후아웨이 테크놀러지 컴퍼니 리미티드 디코딩 장치 및 방법과 신호 전송 시스템
US9792175B2 (en) * 2015-10-21 2017-10-17 Sandisk Technologies Llc Bad column management in nonvolatile memory
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10289487B2 (en) 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
CN107391296B (zh) 2016-04-27 2020-11-06 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US9910772B2 (en) * 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
TWI594255B (zh) * 2016-07-01 2017-08-01 群聯電子股份有限公司 解碼方法、記憶體控制電路單元及記憶體儲存裝置
CN107590018B (zh) * 2016-07-07 2020-12-01 群联电子股份有限公司 译码方法、存储器控制电路单元及存储器存储装置
TWI675374B (zh) * 2018-07-24 2019-10-21 群聯電子股份有限公司 位元判斷方法、記憶體控制電路單元以及記憶體儲存裝置
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
KR20200099438A (ko) * 2019-02-14 2020-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러
US11637657B2 (en) * 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
US11546000B2 (en) * 2020-05-04 2023-01-03 Samsung Electronics Co., Ltd. Mobile data storage
KR20210147686A (ko) * 2020-05-29 2021-12-07 에스케이하이닉스 주식회사 오류 정정 회로 및 오류 정정 인코딩 방법
US11387848B1 (en) * 2021-03-11 2022-07-12 Samsung Electronics Co., Ltd. Hierarchical error correction code

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3893071A (en) 1974-08-19 1975-07-01 Ibm Multi level error correction system for high density memory
JPS5376637A (en) * 1976-12-17 1978-07-07 Nec Corp Diagnostic system of memory device only for reading
JPS5984141A (ja) 1982-11-05 1984-05-15 Nissan Motor Co Ltd 水滴検知装置
JPS61338U (ja) * 1984-06-06 1986-01-06 クラリオン株式会社 復号装置
JPS6356879A (ja) * 1986-08-28 1988-03-11 Canon Inc 情報記録再生装置
JPH01208029A (ja) 1988-02-15 1989-08-22 Hitachi Ltd 符号器及び復号器
JPH02131625A (ja) * 1988-11-11 1990-05-21 Matsushita Electric Ind Co Ltd 誤り訂正装置
JPH06161906A (ja) * 1992-11-19 1994-06-10 Toshiba Corp 半導体メモリー回路
US5600663A (en) * 1994-11-16 1997-02-04 Lucent Technologies Inc. Adaptive forward error correction system
JP3316414B2 (ja) 1996-03-28 2002-08-19 株式会社沖データ 画像符号化方法及び装置並びに画像復号化方法及び装置
JPH09115252A (ja) * 1996-10-21 1997-05-02 Canon Inc 情報記録媒体
DE19731021A1 (de) 1997-07-18 1999-01-21 Meyer Joerg In vivo abbaubares metallisches Implantat
JPH1165944A (ja) 1997-08-13 1999-03-09 Fujitsu Ltd データ誤り検出装置
US6405338B1 (en) 1998-02-11 2002-06-11 Lucent Technologies Inc. Unequal error protection for perceptual audio coders
CN1258763C (zh) * 2000-01-21 2006-06-07 索尼公司 识别光盘的方法、重放光盘的方法和光盘设备
US6580769B1 (en) 2000-02-14 2003-06-17 Motorola, Inc. Method and apparatus for backward recursion next state generation in recursive convolutional decoding
FR2810152A1 (fr) * 2000-06-13 2001-12-14 St Microelectronics Sa Memoire eeprom securisee comprenant un circuit de correction d'erreur
US6621871B2 (en) * 2001-03-30 2003-09-16 Nokia Corporation Incremental redundancy packet combiner and decoder
US7269781B2 (en) 2004-06-25 2007-09-11 Hewlett-Packard Development Company, L.P. Discrete universal denoising with reliability information
JP2006260619A (ja) 2005-03-15 2006-09-28 Matsushita Electric Ind Co Ltd 誤り訂正装置、誤り訂正方法及びデジタルデータ記録再生装置
US7227797B2 (en) 2005-08-30 2007-06-05 Hewlett-Packard Development Company, L.P. Hierarchical memory correction system and method
KR100737912B1 (ko) * 2005-10-11 2007-07-10 삼성전자주식회사 반도체 메모리 장치의 에러 검출 및 정정 회로
US8582905B2 (en) * 2006-01-31 2013-11-12 Qualcomm Incorporated Methods and systems for rate control within an encoding device
JP4953648B2 (ja) * 2006-02-03 2012-06-13 パナソニック株式会社 不揮発性記憶装置およびメモリコントローラ
JP2010092574A (ja) * 2008-10-12 2010-04-22 Kyoto Software Research Inc フラッシュファイルシステムの誤り訂正機能

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650458B2 (en) 2011-01-19 2014-02-11 Samsung Electronics Co., Ltd. Methods of encoding/decoding for error correction code utilizing interdependent portions of codewords and related circuits
KR101234373B1 (ko) * 2011-04-28 2013-02-22 한국과학기술원 다차원 격자-rs 연접 부호의 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치를 위한 오류 정정 회로, 및 플래쉬 메모리 장치
US9323594B2 (en) 2013-11-15 2016-04-26 SK Hynix Inc. Semiconductor device and method of operating the same
KR20160111594A (ko) * 2015-03-16 2016-09-27 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
JP2011515784A (ja) 2011-05-19
JP5345201B2 (ja) 2013-11-20
US8713411B2 (en) 2014-04-29
KR101398212B1 (ko) 2014-05-26
WO2009116716A1 (en) 2009-09-24
US20090241009A1 (en) 2009-09-24

Similar Documents

Publication Publication Date Title
KR101398212B1 (ko) 메모리 장치 및 인코딩/디코딩 방법
KR101398200B1 (ko) 메모리 장치 및 인코딩/디코딩 방법
US10135465B2 (en) Error correction methods and apparatuses using first and second decoders
USRE49253E1 (en) Semiconductor memory device
US8621318B1 (en) Nonvolatile memory controller with error detection for concatenated error correction codes
KR101995609B1 (ko) 복수의 패리티 세그먼트를 갖는 코드워드를 디코딩하기 위한 시스템, 방법 및 장치들
KR101436505B1 (ko) 메모리 장치
US8046660B2 (en) System and method for correcting errors in non-volatile memory using product codes
US8560901B2 (en) Apparatus, method and memory device for error correction by increasing or decreasing a read voltage and analyzing frequency information for a read error pattern
US8543892B2 (en) Memory device and method of storing data with error correction using codewords
US9654147B2 (en) Concatenated error correction device
US10326477B2 (en) Techniques for miscorrection detection for constituent codewords in product codes
JP2020042512A (ja) メモリシステム
US20230216526A1 (en) Systems and methods of decoding error correction code of a memory device with dynamic bit error estimation

Legal Events

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

Payment date: 20170427

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180430

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 6