KR20130027138A - 에러 정정 방법 및 이를 이용하는 메모리 장치 - Google Patents

에러 정정 방법 및 이를 이용하는 메모리 장치 Download PDF

Info

Publication number
KR20130027138A
KR20130027138A KR1020110090517A KR20110090517A KR20130027138A KR 20130027138 A KR20130027138 A KR 20130027138A KR 1020110090517 A KR1020110090517 A KR 1020110090517A KR 20110090517 A KR20110090517 A KR 20110090517A KR 20130027138 A KR20130027138 A KR 20130027138A
Authority
KR
South Korea
Prior art keywords
data
error
error correction
block
codeword
Prior art date
Application number
KR1020110090517A
Other languages
English (en)
Inventor
김관호
송승현
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110090517A priority Critical patent/KR20130027138A/ko
Priority to US13/599,467 priority patent/US20130061113A1/en
Publication of KR20130027138A publication Critical patent/KR20130027138A/ko

Links

Images

Classifications

    • 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
    • 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/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • 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
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • 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/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • H03M13/453Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD] wherein the candidate code words are obtained by an algebraic decoder, e.g. Chase decoding
    • H03M13/455Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD] wherein the candidate code words are obtained by an algebraic decoder, e.g. Chase decoding using a set of erasure patterns or successive erasure decoding, e.g. generalized minimum distance [GMD] 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/458Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
    • 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/47Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37
    • H03M13/49Unidirectional error detection or correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

에러 정정 방법에서는 메모리 셀 어레이에 저장된 메인 데이터 및 패리티 데이터를 포함하는 코드워드를 수신하고, 상기 코드워드에 대하여 ECC(Error check and correction) 디코딩을 수행한다. 상기 수행된 ECC 디코딩의 결과에 기초하여 선택적으로 상기 메인 데이터에 대한 에러 발생의 비대칭성을 이용하여 상기 코드워드에 대한 에러 정정을 수행한다.

Description

에러 정정 방법 및 이를 이용하는 메모리 장치{Method of correcting errors and memory device using the same}
본 발명은 에러 정정 분야에 관한 것으로, 보다 상세하게는 에러 정정 방법 및 이를 이용하는 메모리 장치에 관한 것이다.
모바일 시스템 및 여러 가지 응용 시스템의 개발에 따라 불휘발성 메모리인 플래시 메모리에 대한 요구가 증가되고 있다. 전기적으로 소거 및 프로그램이 가능한 불휘발성 메모리 장치인 플래시 메모리는, 전원이 공급되지 않는 상태에서도 데이터를 보존할 수 있는 특성을 가지며, 또한 마그네틱 디스크 메모리를 기반으로 하는 저장 매체에 비하여 전력 소모가 적으면서 하드 디스크와 같이 액세스 타임이 빠른 특징을 갖는다.
본 발명의 일 목적은 패리티 비트를 증가시키지 않고 에러 정정 능력을 향상시킬 수 있는 에러 정정 방법을 제공하는데 있다.
본 발명의 일 목적은 상기 에러 정정 방법을 이용하는 메모리 장치를 제공하는데 있다.
상기 일 목적을 달성하기 위한 본 발명의 일 실시예에 따른 에러 정정 방법에서는 메모리 셀 어레이에 저장된 메인 데이터 및 패리티 데이터를 포함하는 코드워드를 수신하고, 상기 코드워드에 대하여 ECC(Error correction code) 디코딩을 수행한다. 상기 수행된 ECC 디코딩의 결과에 기초하여 선택적으로 상기 메인 데이터에 대한 에러 발생의 비대칭성을 이용하여 상기 코드워드에 대한 에러 정정을 수행한다.
실시예에 있어서, 상기 선택적으로 수행된 에러 정정의 성공 여부를 리포팅할 수 있다.
실시예에 있어서, 상기 코드워드에 대한 에러 정정은 최대 반복 횟수 이내에서 수행될 수 있다.
실시예에 있어서, 상기 에러 정정을 선택적으로 수행하기 위하여, a)상기 메인 데이터가 정정 범위를 초과하는 에러를 포함하는 경우, 상기 에러를 포함하는 블록을 다른 블록으로 복사한다. b)상기 에러를 포함하는 블록을 소거하고, 소거된 블록에 제1 데이터를 기입한다. c)상기 제1 데이터가 기입된 블록에서 제1 데이터와는 다른 제2 데이터로 독출되는 비트 위치를 검출한다. d)상기 소거전 에러를 포함하는 블록에서 상기 제2 데이터로 독출되는 비트 위치와 상기 제1 데이터가 기입된 블록에서 상기 제2 데이터로 독출되는 비트 위치를 비교한다. e)상기 에러를 포함하는 블록에서 상기 제2 데이터로 독출되는 비트 위치와 매칭되는 상기 제1 데이터가 기입된 블록에서 상기 제2 데이터로 독출되는 비트 위치들의 적어도 일부에 상기 제1 데이터를 기입하면서 반복 횟수를 증가시킨다. f)상기 매칭되는 비트 위치의 적어도 일부에 제1 데이터가 기입된 블록에 대하여 ECC 디코딩을 수행한다. g)상기 수행된 ECC 디코딩에 의하여 상기 코드워드에 대한 에러 정정의 성공 여부를 판단한다.
실시예에 있어서, 상기 코드워드에 대한 에러 정정이 성공으로 판단되지 않는 경우, 최대 반복 횟수 이내에서 상기 e, f, g 단계들은 반복될 수 있다.
상기 코드워드에 대한 에러 정정이 상기 최대 반복 횟수 이내에서 성공으로 판단되지 않는 경우, 상기 ECC 디코딩은 실패로 리포팅될 수 있다.
상기 코드워드에 대한 에러 정정이 상기 최대 반복 횟수 이내에서 성공으로 판단되는 경우, 상기 ECC 디코딩은 성공으로 리포팅될 수 있다.
실시예에 있어서, 상기 제1 데이터는 데이터 "0"에 해당할 수 있다.
실시예에 있어서, 상기 제2 데이터는 데이터 "1"에 해당할 수 있다.
실시예에 있어서, 상기 에러를 포함하는 블록을 상기 다른 블록으로 복사하는 경우, 상기 메인 데이터의 에러 중 에러 정정이 가능한 페이지들은 정정 후 상기 다른 블록으로 복사할 수 있다.
상기 일 목적을 달성하기 위한 본 발명의 실시예에 따른 메모리 장치는 메모리 셀 어레이 및 에러 정정 회로를 포함한다. 상기 메모리 셀 어레이는 메인 데이터를 저장하는 메인 셀 및 패리티 데이터를 저장하는 패리티 셀을 구비한다. 상기 에러 정정 회로는 상기 저장된 메인 데이터 및 패리티 데이터를 포함하는 코드워드를 수신하고, 상기 메인 데이터의 에러 발생의 비대칭성을 이용하여 상기 코드워드에 대한 에러 정정을 선택적으로 수행한다.
실시예에 있어서, 상기 에러 정정 회로는 상기 저장된 메인 데이터의 에러를 감지하여 감지 신호를 생성하는 디텍터; 상기 메인 데이터와 상기 패리티 데이터를 수신하고, 상기 감지 신호에 응답하여 상기 패리티 데이터를 이용하여 상기 메인 데이터의 에러를 정정하여 정정된 데이터로 제공하되, 상기 메인 데이터의 에러가 정정 가능 범위를 초과하여도 최대 반복 횟수 이내에서 에러 정정 동작을 반복하여 상기 메인 데이터의 에러를 정정하는 정정부; 및 상기 정정부가 상기 최대 반복 횟수 이내에서 상기 메인 데이터의 에러를 정정하는지를 모니터링하여 상기 코드워드에 대한 에러 정정의 성공 여부를 리포팅하는 리포팅부를 포함할 수 있다.
상기 리포팅부는 상기 정정부가 상기 최대 반복 횟수 이내에서 상기 메인 데이터의 에러를 정정하는 경우 상기 에러 정정의 성공을 리포팅할 수 있다.
상기 리포팅부는 상기 정정부가 상기 최대 반복 횟수 이내에서 상기 메인 데이터의 에러를 정정하지 못하는 경우 상기 에러 정정의 실패를 리포팅할 수 있다.
실시예에 있어서, 상기 메인 셀은 싱글 비트 셀 및 멀티 비트 셀 중 어느 하나일 수 있다.
본 발명의 실시예들에 따르면 에러 정정 능력을 초과하는 에러가 포함되는 경우에도 에러 발생의 비대칭성을 이용하여 에러를 감소시켜 에러 정정을 수행할 수 있다.
도 1은 본 발명의 일 실시예에 따른 에러 정정 방법을 나타내는 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 도 1의 단계(S200)를 상세히 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 메모리 장치를 나타내는 블록도이다.
도 4는 도 3의 메모리 장치에 포함된 메모리 셀 어레이의 일 예를 나타내는 블록도이다.
도 5는 단일 비트 메모리 셀들의 각 상태별 문턱 전압을 나타내는 그래프이다.
도 6은 멀티 비트 메모리 셀들의 각 상태별 문턱 전압을 나타내는 그래프이다.
도 7a 및 도 7b는 2-비트 메모리 셀들의 프로그램 과정을 나타낸다.
도 8은 2-비트 멀티 비트 셀을 갖는 메모리에서 LSB 페이지와 MSB 페이지간의 "Paired Page" 구조를 개략적으로 나타낸다.
도 9는 도 8의 "Paired Page" 구조의 일 예를 나타내는 도면이다.
도 10은 도 9의 "Paired Page" 구조에서 LSB 패리티 페이지의 위치에 대한 일 예를 나타내는 도면이다.
도 11은 본 발명의 일 실시예에 따른 도 3의 에러 정정 회로의 일 예를 나타내는 블록도이다.
도 13은 본 발명의 일 실시예에 따른 도 3의 메모리 장치를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 14는 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 15는 도 13의 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일하거나 유사한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 에러 정정 방법을 나타내는 흐름도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 에러 정정 방법에서는 메모리 셀에 저장된 메인 데이터 및 패리티 데이터를 포함하는 코드워드를 수신하고, 수신된 코드워드에 대하여 ECC(Error correction code) 디코딩을 수행한다(S110). 메모리 셀에 데이터를 저장할 때 사용자 데이터인 메인 데이터와 메인 데이터에 관련된 패리티 데이터(또는 에러 정정 코드)가 소정의 연산을 통하여 메모리 셀에 저장된다. 메인 데이터와 패리티 데이터를 코드워드라 한다. 이러한 동작은 에러 정정 회로에 포함되는 ECC 인코더에서 수행될 수 있다. 메모리 셀로부터 데이터를 독출할 때는 상기 코드워드를 수신하고, 코드워드에 포함된 메인 데이터를 저장할 때와 동일한 방법으로 패리티 데이터를 생성하고, 코드워드에 포함된 패리티 데이터와 비교하여 메인 데이터에 에러가 포함되어 있는지 여부를 판단한다. 상기 수신된 코드워드의 메인 데이터의 에러가 에러 정정 가능 범위 이내인지 여부에 따라(S120), 선택적으로 상기 메인 데이터에 대한 에러 발생의 비대칭성을 이용하여 상기 코드워드에 대한 에러 정정을 수행한다(S200). 선택적으로 수행된 에러 정정의 성공 여부를 리포팅할 수 있다(S130). 여기서 단계(S120)에서 상기 수신된 코드워드에 메인 데이터의 에러가 에러 정정 가능 범위 이내인지의 여부는 메인 데이터의 에러가 정정 가능 범위인지 여부에 따라 판단된다. 즉, 본 발명의 실시예에 따른 에러 정정 방법의 에러 정정 가능 범위가 10비트라고 할 때, 수신된 코드워드에 대하여 ECC 디코딩을 수행한 결과 메인 데이터의 에러가 10비트 이하이면, 단계(S120)에서 ECC 디코딩이 성공(YES)이다. 또한 수신된 코드워드에 대하여 ECC 디코딩을 수행한 결과 메인 데이터의 에러가 10비트를 초과하면, 단계(S120)에서 ECC 디코딩이 실패(NO)이다. 메인 데이터의 에러가 10비트를 초과하면, ECC 디코딩에 의하여 에러를 감지하는 것은 가능하지만 에러를 모두 정정하는 것은 불가능하다.
플래시 메모리와 같은 저장 매체는 디폴트 상태인 "1"의 데이터를 갖는 셀을 프로그램 동작을 통하여 "0"의 데이터를 갖게 함으로써 정보를 저장한다. 이에 따라 플래시 메모리에 데이터를 기록할 때에는, 먼저 블록 내의 모든 데이터를 "1"로 리셋하기 위한 소거 동작이 수행되어야 한다. 이와 같은 플래시 메모리의 특성에 따라 플래시 메모리에서는 "0"의 데이터를 프로그램 하였는데 "1"의 데이터로 읽히는 에러가 "1"의 데이터를 프로그램 하였는데 "0"의 데이터로 읽히는 에러의 빈도보다 훨씬 높다. 이것이 메인 데이터의 에러 발생의 비대칭성이다. 또한 플래시 메모리와 같은 저장 매체에서는 한번 에러가 발생한 위치에서 또 다시 에러가 발생할 확률이 에러가 발생하지 않은 위치에서 에러가 발생할 확률보다 상대적으로 높다. 즉 플래시 메모리와 같은 저장 매체는 에러 발생의 비대칭성(채널의 비대칭성)과 동일한 위치에서 에러의 재현 가능성이 높은 물리적 특성을 갖는다. 따라서 사용자가 기록하는 데이터의 패턴이 데이터 "1"이 많은 패턴에서 "0"이 많은 패턴으로 갑자기 변화하게 된다면 갑자기 코드워드에 에러가 증가할 수 있고, 그 결과로 에러 정정 범위를 초과하는 에러가 발생할 수 있다.
종래에는 이렇게 에러 정정 범위를 초과하는 에러는 감지할 수는 있으나 정정이 불가능하기 때문에 이렇게 에러 정정 범위를 초과하는 에러를 포함하는 데이터는 정정 불가능으로 포기해야만 했다. 하지만 본 발명의 실시예에서는 메인 데이터의 에러의 비대칭성을 이용하여 에러 정정 범위를 초과하는 에러를 에러 정정 범위 이내로 감소시킬 수 있어, 에러 정정 범위를 초과하는 에러를 포함하는 데이터를 포기하지 않아도 된다.
도 2는 본 발명의 일 실시예에 따른 도 1의 단계(S200)를 상세히 나타내는 블록도이다.
도 2를 참조하면, 메인 데이터에 대한 에러 발생의 비대칭성을 이용하여 코드워드에 대한 에러 정정을 선택적으로 수행하기 위하여 에러가 포함된 블록의 데이터를 다른 블록(프리 블록)으로 복사한다(S210). 에러가 포함된 블록의 데이터를 다른 블록으로 복사할 때, 에러 정정이 가능한 페이지는 에러를 정정하고, 에러 정정이 불가능한 페이지는 그대로 다른 블록으로 복사할 수 있다. 즉 다른 블록에 복사된 데이터는 원래 블록보다 더 작은 에러를 포함할 수 있다. 에러를 포함하는 블록을 소거한 후에 소거된 블록의 모든 셀에 제1 데이터를 기입(프로그램)한다(S220). 여기서 제1 데이터는 데이터 "0"에 해당할 수 있다. 모든 셀에 제1 데이터가 기입된 블록을 독출하여 제1 데이터와는 다른 제2 데이터로 독출되는 비트 위치를 검출한다(S230). 여기서, 제2 데이터는 데이터 "1"에 해당할 수 있다. 모든 셀에 제1 데이터가 기입된 블록에서 제1 데이터와는 다른 제2 데이터로 독출되는 비트 위치는 오류 데이터 "1"로 고착된 비트(stuck at fault "1", SAF1)이라 한다. 소거 전 에러를 포함하는 블록에서 제2 데이터로 독출되는 비트 위치와 상기 제1 데이터가 기입된 블록에서 제2 데이터로 독출되는 비트 위치를 비교한다(S240). 비트 위치의 비교 결과에 따라 에러를 포함하는 블록에서 제2 데이터로 독출되는 비트 위치와 매칭되는 상기 제1 데이터가 기입되는 블록에서 제2 데이터로 독출되는 비트 위치들의 적어도 일부에 제1 데이터를 기입하면서 반복회수를 하나만큼 증가시킨다(S250). 적어도 일부분 제1 데이터가 기입된 블록에 대하여 ECC 디코딩을 다시 수행한다(S260). ECC 디코딩이 다시 수행된 현재 블록에 대하여 에러 정정의 성공 여부를 판단한다(S270). 단계(S270)에서 에러 정정이 성공되었으면(S270에서 YES) ECC 디코딩이 성공되었음을 리포팅한다(S131). 단계(S270)에서 에러 정정이 실패하고(S270에서 NO), 반복 회수가 최대 반복 횟수 이하이면(S280에서 NO), 단계들(S240, S250, S260)을 반복한다. 단계들(S240, S250, S260)이 반복되는 경우, 단계(S240)에서 제1 데이터가 기입되는 적어도 일부분의 비트 위치들을 변경할 수 있다. 단계(S270)에서 에러 정정이 실패하고(S270에서 NO), 반복 회수가 최대 반복 횟수를 초과하면(S280에서 YES), ECC 디코딩이 실패하였음을 리포팅한다(S132).
도 1 및 도 2를 참조한 본 발명의 실시예에 따른 에러 정정 방법은 도 3 내지 도 9를 참조하여 상세히 설명될 것이다.
도 3은 본 발명의 일 실시예에 따른 메모리 장치를 나타내는 블록도이다.
도 3을 참조하면, 메모리 장치(100)는 제어 회로(110), 메모리 셀 어레이(120), 페이지 버퍼부(130), 에러 정정 회로(200), 입출력 회로(140) 및 전압 생성기(150)를 포함하여 구성될 수 있다.
메모리 셀 어레이(120)는 메인 데이터(DATA)를 저장하는 메인 셀(121) 및 패리티 데이터(PBT)를 저장하는 패리티 셀(122)을 구비할 수 있다. 메인 셀(121) 및 패리티 셀(122)은 워드 라인들 및 비트 라인들에 연결될 수 있다. 메모리 장치(100)의 독출 단위로서 페이지에는 메인 셀(121)과 패리티 셀(122)이 포함되며, 메인 데이터와 패리티 데이터로 이루어지는 코드워드가 상기 페이지로부터 독출된다. 본 발명의 실시예에서는 패리티 데이터(PBT)는 하나의 예를 든 것으로 패리티 데이터(PBT)는 에러 정정 코드와 실질적으로 동일한 개념이다.
페이지 버퍼부(130)는 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 페이지 버퍼부(120)는 독출 동작 모드에서 감지 증폭기로서 동작하고, 프로그램 동작 모드에서는 기입 드라이버로서 동작할 수 있다. 페이지 버퍼부(130)는 비트 라인들에 연결되어 메인 데이터(DATA)와 페리티 데이터(PBT)를 일시적으로 저장할 수 있는 페이지 버퍼들을 포함할 수 있다. 상기 페이지 버퍼들 각각은 상기 비트라인들 중 상응하는 비트 라인에 연결된 데이터 래치들을 포함할 수 있다.
에러 정정 회로(200)는 기입 동작에서 메인 데이터(DATA)를 수신하고 패리티 데이터(PBT)를 생성하여 페이지 버퍼부(130)를 통하여 메모리 셀 어레이(110)에 제공한다. 또한 에러 정정 회로(200)는 독출 동작에서 메모리 셀 어레이에 저장된 메인 데이터(DATA)와 패리티 데이터(PBT)를 포함하는 코드워드를 수신하고, 상기 메인 데이터(DATA)의 에러 발생의 비대칭성을 이용하여 코드워드에 대한 에러 정정을 수행할 수 있다. 에러 정정 회로는 도 3과 같이 메모리 장치(100) 내부에 위치할 수도 있고, 다른 실시예에서는 메모리 장치(100)의 외부, 예를 들어 메모리 컨트롤러에 위치할 수도 있다.
입출력 회로(140)는 제어 회로(110)의 제어에 따라 외부로부터의 입력 데이터를 메모리 셀 어레이(120) 제공하거나, 메모리 셀 어레이(120)로부터의 출력 데이터를 메모리 장치(100) 외부로 제공할 수 있다.
전압 생성기(150)는 제어 회로(130)의 제어에 따라 프로그램을 위한 프로그램 전압, 패스 전압, 검증 전압 및 일반 독출 동작을 위한 독출 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(150)는 제어 회로(110)의 제어에 따라 프로그램 모드에서 선택된 워드 라인으로 프로그램 전압을 공급하고 비선택된 워드 라인으로 패스 전압을 공급할 수 있다. 또한 전압 생성기(150)는 제어 회로(110)의 제어에 따라 독출 모드에서 선택된 워드라인으로 접지 전압을 공급하고 비선택된 워드라인들로 읽기 전압을 공급할 수 있다. 프로그램 전압은 패스 전압보다 높고, 패스 전압을 읽기 전압보다 높을 수 있다.
도 4는 도 3의 메모리 장치에 포함된 메모리 셀 어레이의 일 예를 나타내는 블록도이다.
도 4를 참조하면, 메모리 셀 어레이(120)는 스트링 선택 트랜지스터들(125), 접지 선택 트랜지스터들(126) 및 메모리 셀들(127)을 포함한다.
스트링 선택 트랜지스터들(125)은 비트 라인들(BL1, BLm)에 연결되고, 접지 선택 트랜지스터들(126)은 공통 소스 라인(CSL)에 연결될 수 있다. 스트링 선택 트랜지스터들(125)과 접지 선택 트랜지스터들(126) 사이에는 메모리 셀들(127)이 직렬로 연결될 수 있다. 동일한 행에 배열된 메모리 셀들(127)의 제어 게이트들은 대응되는 워드 라인(WL1, WL2, WL3, WLn-1, WLn)에 공통으로 연결될 수 있다. 스트링 선택 트랜지스터들(125)은 스트링 선택 라인(SSL)을 통해 인가되는 전압에 의해 제어되고, 접지 선택 트랜지스터들(126)은 접지 선택 라인(GSL)을 통해 인가되는 전압에 의해 제어될 수 있다. 메모리 셀들(127)은 대응하는 워드 라인(WL1, WL2, WL3, WLn-1, WLn)을 통해 인가되는 전압에 의해서 제어될 수 있다. 메모리 셀들(127)의 일부분은 도 3의 메인 셀(121)에 해당하고, 메모리 셀들(127)의 나머지 부분은 도 3의 패리티 셀(122)에 해당할 수 있다. 또한 메모리 셀들(127) 각각은 단일 비트의 데이터를 저장할 수도 있고 멀티 비티의 데이터를 저장할 수도 있다.
도 5는 단일 비트 메모리 셀들의 각 상태별 문턱 전압을 나타내는 그래프이다.
도 5에서 x축은 문턱전압(Vth), y축은 각 상태에 해당하는 셀의 수를 나타낸다. 도 5를 참조하면, 단일 비트 메모리 셀들은 소거 상태(E)와 제1 프로그램 상태(P1)를 갖을 수 있다. 단일 비트 셀은 디폴트로 소거 상태(E)를 갖는데, 소거 상태(E)를 갖는 메모리 셀에 프로그램 전압을 인가하여 제1 상태(P1)를 갖게 할 수 있다. 여기서 제1 상태는 "0"의 데이터(제1 데이터)에 해당하고, 소거 상태(E)는 "1"의 데이터(제2 데이터)에 해당할 수 있다. 이와 같이 단일 비트 메모리 셀들에서는 디폴트 상태인 "1"의 데이터를 갖는 셀을 프로그램 동작을 통하여 "0"의 데이터를 갖게 함으로써 정보를 저장하므로 "0"의 데이터를 프로그램하였는데 "1"의 데이터로 읽히는 에러가 "1"의 데이터를 프로그램하였는데 "0"의 데이터로 읽히는 에러의 빈도보다 훨씬 높을 수 있다. 또한 한번 에러가 발생한 셀에서 다시 에러가 발생할 확률이 에러가 발생하지 않은 셀에서 에러가 발생할 확률보다 상대적으로 높다.
도 6은 멀티 비트 메모리 셀들의 각 상태별 문턱 전압을 나타내는 그래프이다. 도 6은 멀티 비트 메모리 셀이 각각 2 비트의 데이터를 저장하는 경우 메모리 셀들의 각 상태별 문턱 전압을 나타내는 그래프이다.
도 6에서 x축은 문턱전압(Vth), y축은 각 상태에 해당하는 셀의 수를 나타낸다. 도 6을 참조하면, 멀티 비트 메모리 셀들은 소거 상태(E)와 제1 내지 제3 프로그램 상태(P11, P12, P13)를 갖을 수 있다. 소거 상태(E)는 "11"의 데이터에 해당하고, 제1 프로그램 상태(P1)는 "01"의 데이터에 해당하고, 제2 프로그램 상태(P2)는 "00"의 데이터에 해당하고, 제3 프로그램 상태(P13)는 "10"의 데이터에 해당할 수 있다. 멀티 비트 중, 하위 비트는 LSB(the least significant bit)라 하고 상위 비트는 MSB(the most significant bit)라 한다. 이렇게 멀티 비트 메모리 셀들에서는 최소한 2 회의 프로그램 과정이 요구된다.
도 7a 및 도 7b는 2-비트 메모리 셀들의 프로그램 과정을 나타낸다.
도 7a를 참조하면, "11"(a)로 초기화된 메모리 셀의 LSB "1"이 "0"으로 프로그램되어(b), 프로그램된 메모리 셀은 "10"의 값을 갖는다. 다음으로 도 7b를 참조하면, "11"(a)로 초기화된 메모리 셀의 MSB "1"이 "0"(b)으로 프로그램되어 프로그램된 메모리 셀은 "01"의 값을 갖는다. 또한 "10"(a)으로 프로그램된 메모리 셀의 MSB "1"이 "0"(b)으로 프로그램되어 프로그램된 메모리 셀은 "00"의 값을 갖는다.
이렇게 각각 다른 페이지에 프로그램되는 LSB 및 MSB는 도 8에 도시되는 "Paired Page"구조에 의하여 연결될 수 있다.
도 8은 2-비트 멀티 비트 셀을 갖는 메모리에서 LSB 페이지와 MSB 페이지간의 "Paired Page" 구조를 개략적으로 나타낸다.
도 9는 도 8의 "Paired Page" 구조의 일 예를 나타내는 도면이다.
도 8 및 도 9를 참조하면, 도 8의 Paired Page" 구조는 도 9에 도시되는 바와 같이, 처음 두 개의 LSB 페이지들(0, 1)과 마지막 두 개의 LSB 페이지들(미도시)은 4 페이지만큼 이격하여 위치하는 MSB 페이지와 짝을 이루고, 나머지 LSB 페이지들(2, 3, 6, 7, ...)은 6 페이지만큼 이격하여 위치하는 MSB 페이지와 짝을 이룰 수 있다. 예를 들어 LSB 페이지 "0"과 MSB 페이지 "4"가 짝을 이루고, LSB 페이지 "2"과 MSB 페이지 "8"이 짝을 이룰 수 있다.
도 10은 도 9의 "Paired Page" 구조에서 LSB 패리티 페이지의 위치에 대한 일 예를 나타내는 도면이다.
도 10을 참조하면, 인접하여 위치하는 임의의 개수의 LSB 페이지들을 LSB 페이지 그룹이라고 하자. 이 때 제2 LSB 페이지 그룹(LPG2)은 제1 LSB 페이지 그룹(LPG1)에 가장 가까이 위치하는 LSB 페이지("F") 및 LSB 페이지("F")와 짝을 이루는 MSB "K" 및 LSB 페이지 "F" 사이에 존재하는 LSB 페이지들("G", "J" 및 "PAR1")로 이루어진다.
각 LSB 페이지 그룹에 속하는 LSB 페이지들에 대한 LSB 패리티 페이지가 구비된다. 예를 들어, 제1 LSB 페이지 그룹(LPG1)의 3 개의 LSB 페이지들("A", "B" 및 "C")에 대한 LSB 패리티 페이지(PAR1)가 구비된다. 이때, LSB 패리티 페이지(PAR1)는 3 개의 LSB 페이지들("A", "B" 및 "C")에 대하여 생성되는 패리티 생성 방법인 RAID(Redundant Array of Independen/Inexpensive Disks) 기법에서 사용되는 정보 생성 방법들을 이용하여 구현될 수 있다.
멀티 비트 메모리 셀의 메모리 장치에서는 서로 연관된 LSB 페이지와 MSB 페이지가 동일한 워드라인을 공유하기 때문에, MSB 페이지에서 에러가 발생하는 경우 LSB 페이지의 프로그램 상태가 보장될 수 없다. 즉 "Paired Page" 구조에서 같은 위치에서 에러가 발생할 확률이 상대적으로 높음을 알 수 있다.
본 발명의 실시예에 따른 메모리 장치에서는 메모리 장치의 이러한 물리적 특성을 이용하여 에러 정정을 수행할 수 있다.
도 11은 본 발명의 일 실시예에 따른 도 3의 에러 정정 회로의 일 예를 나타내는 블록도이다.
도 11을 참조하면, 에러 정정 회로(200)는 ECC 인코더(210) 및 ECC 디코더(220)를 포함하여 구성될 수 있다.
ECC 인코더(210)는 기입 데이터(WDATA)를 수신하고 기입 데이터(WDATA)에 기초하여 에러 정정시에 필요한 패리티 데이터(PBT)를 생성한다. 이렇게 생성된 패리티 데이터(PBT)는 기입 데이터(WDATA)와 함께 제어 로직(110)의 제어에 따라 페이지 버퍼부(130)를 거쳐 메모리 셀 어레이(120)에 저장된다.
ECC 디코더(220)는 독출 데이터(RDATA)와 패리티 데이터(PBT)를 수신하고 패리티 데이터(PBT)를 이용하여 독출 데이터(RDATA)의 에러를 감지하고 감지된 에러를 정정할 수 있다. ECC 디코더(220)는 감지기(221), 정정부(223) 및 리포팅부(225)를 포함하여 구성될 수 있다.
감지기(221)는 독출 데이터(RDATA)를 수신하고 수신된 독출 데이터(RDATA)에 에러가 포함되는지 여부를 나타내는 감지 신호(DS)를 정정부(223)에 출력한다. 예를 들어, 수신된 독출 데이터(RDATA)에 에러가 포함되지 않는 경우, 감지 신호(DS)는 제1 로직 레벨(로우 레벨)일 수 있다. 예를 들어 수신된 독출 데이터(RDATA)에 에러가 포함되는 경우, 감지 신호는 제2 로직 레벨(하이 레벨)일 수 있다.
정정부(223)는 독출 데이터(RDATA)와 패리티 데이터(PBT)를 수신하고 패리티 데이터(PBT)를 이용하여 독출 데이터(RDATA)의 에러를 정정할 수 있다. 예를 들어, 독출 데이터(RDATA)에 포함되는 에러가 정정부(223)의 정정 범위 이내인 경우에 정정부(223)는 즉시 독출 데이터(RDATA)에 포함되는 에러를 정정할 수 있다. 예를 들어, 독출 데이터(RDATA)에 포함되는 에러가 정정부(223)의 정정 범위를 초과하는 경우에는 정정부(223)는 독출 데이터(RDATA)에 포함되는 에러 발생의 비대칭성을 이용하여 정정 범위를 초과하는 에러를 정정 범위 이내로 감축시킨 후 독출 데이터(RDATA)에 포함되는 에러를 정정하여 정정된 데이터(CDATA)를 제공할 수 있다.
리포팅부(225)는 정정부(223)가 정해진 횟수 이내에 에러 정정을 완료하는지 여부를 모니터링하고, 이를 나타내는 리포팅 신호(RS)를 출력한다. 예를 들어, 정정부(223)가 정해진 횟수 이내에 독출 데이터(RDATA)에 포함된 에러를 정정하지 못하는 경우에 리포팅 신호(RS)는 제1 로직 레벨(로우 레벨)일 수 있다. 예들 들어, 정정부(223)가 정해진 횟수 이내에 독출 데이터(RDATA)에 포함된 에러를 정정하는 경우 리포팅 신호(RS)는 제2 로직 레벨(하이 레벨)일 수 있다.
도 12는 본 발명의 일 실시예에 따른 도 11의 ECC 디코더의 동작을 설명하기 위한 도면이다.
도 12를 참조하여 ECC 디코더(220, 보다 상세하게는 정정부(223))의 동작을 설명함에 있어, 도 11의 에러 정정 회로(200)의 에러 정정 능력이 10비트라고 가정한다. 또한 도 12를 참조하여 정정부(223)의 동작을 상세히 설명함에 있어, 참조번호들(310, 320, 330, 340, 350)은 동일한 블록을 가리킴을 밝혀둔다.
도 12를 참조하면, 블록(310)에 정정부(223)의 정정 능력을 초과하는 에러들이 포함되어 있다. 블록(310)에서 참조번호(311)는 블록(310) 포함되는 에러들의 위치를 나타낸다. 블록(310)에서는 포함되는 에러들(311)의 위치는 알 수 없고, 에러들이 발생되었음과 에러들의 개수만을 알 수 있다. 즉 블록(310)에는 정정부(223)의 정정능력을 초과하는 에러들이 포함되어 있으므로(즉, 독출 데이터(RDATA, 또는 메인 데이터)에 포함되는 에러가 10 비트를 초과하는 경우이므로 ECC 디코더(200)는 정정가능하지 않음(uncorrectable)을 리포트할 수 있다.
블록(310)에서와 같이 정정 능력을 초과하는 에러들이 포함되어 있으면, ECC 디코더(200)에 의하여 에러 정정이 불가능하므로, 에러를 포함하는 블록(310)을 다른 블록(프리 블록)으로 복사한 후, 블록(310)을 소거한다. 블록(310)을 소거하기 전에 블록(310)에 대하여 독출동작을 수행하여 에러를 포함하는 블록이 어떤 데이터로 독출되는지를 파악한다. 소거된 블록의 모든 셀에 제1 데이터(데이터 "0")를 기입하고 모든 셀에 제1 데이터가 기입된 블록에 대하여 독출 동작을 수행하면 블록(320)과 같이 여러 종류의 셀들을 포함할 수 있다.
블록(320)에서 참조번호(321)는 데이터 "0"을 기입하였는데 데이터 "1"(제2 데이터)로 독출되는 셀의 위치를 나타낸다. 참조번호(322)는 블록(310)에서는 데이터"1"로 독출된다. 참조번호(321)는 데이터 "0"을 기입하였는데 데이터 "1"로 독출되는 셀의 위치를 나타낸다. 참조번호(322)는 블록(310)에서는 데이터"0"으로 독출된다. 참조번호(323)는 데이터 "0"을 기입하였는데 데이터 "1"로 독출되는 셀의 위치를 나타낸다. 참조번호(323)는 블록(310)에서는 에러가 발생하지 않았던 위치이지만 원래 기입된 데이터가 "1"이라서 "1"로 독출되는 경우이다. 따라서 참조번호(323)는 에러 발생의 가능성이 있는 셀의 위치이다. 참조번호(324)는 데이터 "0"을 기입하였는데 데이터 "0"으로 독출되는 셀의 위치를 나타낸다. 참조번호(324)는 블록(310)에서는 데이터 "1"로 독출된 셀의 위치를 나타낸다. 따라서 참조번호(324)는 에러 발생의 가능성이 있는 셀의 위치를 나타낸다. 즉 블록(320)에서 참조번호들(321, 322, 323)은 정정부(223)의 정정 능력을 초과하는 에러가 포함된 블록을 소거하고 데이터 "0"을 기입한 후의 에러가 발생한 셀들의 위치를 나타낸다. 블록(320)에서 데이터 "1"로 독출되는 셀들의 위치(321, 322, 323)는 블록을 소거하고 데이터 "0"을 기입하였는데 데이터 "1"로 독출되는 위치이므로 에러가 발생했을 확률이 높은 곳인데 이렇게 에러가 발생했을 확률이 높은 곳을 고착 비트 위치(stuck bit position)이라 한다.
블록(320)에서 데이터 "1"로 독출되는 비트들의 위치와 (321, 322, 323)와 블록(310)에서 데이터 "1"로 독출되는 비트들의 위치가 서로 매칭되는 위치를 추출하면 블록(330)에서와 같은 결과가 나타난다. 블록(330)에서 참조번호(331)는 블록(310)에서 발생한 에러와 겹치는 부분이고, 블록(330)에서 참조번호(332)는 블록(310)에서는 에러가 발생한 위치는 아니지만, 원래 기입된 데이터가 "1"이라서 블록(320)에서 데이터 "1"로 독출되는 비트 위치이다. 즉, 블록(330)에서 참조 번호(331)는 데이터가 "0"을 기입하려고 한 부분이 데이터 "1"로 잘못 쓰여진 비트 위치이고 참조 번호(332)는 올바른 데이터 "1"이 기입되었다가 데이터 "0"으로 바뀌지 않은 비트 위치를 나타낸다. 즉 블록(330)에서 참조 번호들(331, 332)이 에러 후보 위치들일 수 있다.
블록(330)에서의 에러 위치 후보들(331, 332)과 블록(310)에서의 에러들(311)이 겹치는 부분에 데이터 "0"을 기입하면 블록(340)과 같은 결과가 얻어진다. 즉, 블록(330)에서 참조 번호(331)는 데이터가 "0"을 기입하려고 한 부분이 데이터 "1"로 잘못 쓰여진 비트 위치이므로 데이터 "0"의 기입에 의하여 에러가 정정되었다. 블록(340)에서 참조번호(341)는 올바른 데이터 "1"이 기입되었다가 데이터 "0"으로 바뀌지 않은 비트 위치이므로 새로 생긴 에러가 되고, 참조번호(342)는 블록(330)에서의 에러 위치 후보들(331, 332)과 블록(310)에서의 에러들(311)이 겹치는 부분에 포함되지 않으므로 에러가 정정되지 않았음을 나타낸다. 이제 블록(340)에는 4 개의 에러들이 포함되어 있고 4 개의 에러는 정정부(223)의 정정 능력 이내이므로 블록(340)의 에러들을 정정하면 블록(350)에서와 같이 에러가 포함되지 않는 블록을 얻을 수 있다.
블록(330)에서의 에러 위치 후보들(331, 332)과 블록(310)에서의 에러들(311)이 겹치는 부분에 데이터 "0"을 기입할 때, 블록(330)에서의 에러 위치 후보들(331, 332)과 블록(310)에서의 에러들(311)이 겹치는 모든 비트 위치들에 데이터 "0"을 기입하지 않고 정정부(223)의 정정 능력을 고려하여 겹치는 비트 위치들의 적어도 일부에 데이터 "0"을 기입하여 에러 정정을 수행하는 것도 가능하다.
상술한 바와 같이 본 발명의 실시예에 따른 에러 정정 회로와 에러 정정 방법에서는 패리티 데이터를 증가시키지 않고도 저장 장치의 물리적 특성, 즉 에러 발생의 비대칭성을 이용하여 메인 데이터에 포함된 에러가 정정 범위를 초과하는 경우에도 이를 정정 범위 이내로 축소시켜 에러 정정을 수행할 수 있다. 따라서 본 발명의 실시예에 따른 에러 정정 회로와 에러 정정 방법은 저장 장치의 물리적 특성을 이용하여 에러 정정을 수행하므로 메모리 셀이 단일 비트 셀이든 멀티 비트 셀이든지에 관계없이 적용될 수 있다.
또한 상술한 설명에서는 에러 패턴의 비대칭성과 에러가 발생한 위치에서 다시 에러가 발생할 확률이 높은 물리적 특성을 이용하였다. 또한 같은 블록 내에서는 대부분 같은 비트 라인 위치에서 에러가 발생하는 특징을 이용하여 ECC 디코딩을 패스하였던 페이지에서 얻은 데이터 corruption 위치 정보나 멀티 비트 셀의 경우 "Paired Page"에서는 같은 위치에서 에러가 발생한다는 물리적 특성으로부터 얻을 수 있는 정보를 추가적으로 이용할 수 있다. 또한 에러 발생의 빈도가 낮은 영영과 같은 물리적 특성도 본 발명에 이용될 수 있다
도 13은 본 발명의 일 실시예에 따른 도 3의 메모리 장치를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 13을 참조하면, 메모리 시스템(400)은 메모리 장치(100) 및 메모리 컨트롤러(410)를 포함한다.
메모리 장치(100)는 메모리 셀 어레이(110) 및 페이지 에러 정정 회로(200)를 포함한다. 메모리 셀 어레이(120)는 워드 라인들 및 상기 비트 라인들에 연결된 메모리 셀들을 포함할 수 있다. 에러 정정 회로(200)는 기입 동작에서 메인 데이터(DATA)를 수신하고 패리티 데이터(PBT)를 생성하여 메모리 셀 어레이(120)에 제공한다. 또한 에러 정정 회로(200)는 독출 동작에서 메모리 셀 어레이에 저장된 메인 데이터(DATA)와 패리티 데이터(PBT)를 포함하는 코드워드를 수신하고, 상기 메인 데이터(DATA)의 에러 발생의 비대칭성을 이용하여 코드워드에 대한 에러 정정을 수행할 수 있다.
메모리 컨트롤러(410)는 메모리 장치(100)를 제어한다. 메모리 컨트롤러(200)는 외부의 호스트와 메모리 장치(100) 사이의 데이터 교환을 제어할 수 있다. 메모리 컨트롤러(410)는 중앙 처리 장치(411), 버퍼 메모리(412), 호스트 인터페이스(413) 및 메모리 인터페이스(414)를 포함할 수 있다. 중앙 처리 장치(411)는 상기 데이터 교환을 위한 동작을 수행할 수 있다. 호스트 인터페이스(413)는 상기 호스트와 연결되고, 메모리 인터페이스(414)는 메모리 장치(100)와 연결된다. 중앙 처리 장치(411)는 호스트 인터페이스(413)를 통하여 상기 호스트와 통신할 수 있다. 또한, 중앙 처리 장치(411)는 메모리 인터페이스(414)를 통하여 메모리 장치(412)를 제어할 수 있다. 실시예에 있어서, 메모리 장치(100)는 플래시 메모리 장치일 수 있다. 다른 실시예에 있어서, 메모리 장치(100)는 비대칭적 에러 발생 특성을 가지며, 에러 위치가 재현 가능한 임의의 저장 매체일 수 있다.
실시예에 따라, 메모리 컨트롤러(410)는 스타트-업 코드를 저장하는 비휘발성 메모리 장치를 더 포함할 수 있다. 버퍼 메모리(412)는 DRAM(Dynamic random access memory), SRAM(Static random access memory), PRAM(Phase random access memory), FRAM(Ferroelectric random access memory), RRAM(Resistive random access memory), 또는 MRAM(Magnetic random access memory)으로 구현될 수 있다. 버퍼 메모리(412)는 중앙 처리 장치(411)의 동작 메모리일 수 있다.
메모리 시스템(400)은 메모리 카드 또는 솔리드 스테이트 드라이브(solid state drive/disk, SSD)일 수 있다. 메모리 컨트롤러(410)는 USB, MMC, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI, IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트와 통신하도록 구성될 수 있다.
메모리 장치(100) 및/또는 메모리 컨트롤러(410)는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들어, 메모리 장치(100) 및/또는 메모리 컨트롤러(410)는 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), 등과 같은 패키지들을 이용하여 실장될 수 있다.
도 14는 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 14를 참조하면, 메모리 시스템(500)은 메모리 컨트롤러(510) 및 메모리 장치(100a)를 포함한다.
메모리 장치(100a)는 메모리 셀 어레이(120a) 및 페이지 버퍼부(130a)를 포함한다. 페이지 버퍼부(130a)는 비트 라인들에 연결되는 페이지 버퍼들을 포함할 수 있다. 메모리 셀 어레이(120a)는 워드 라인들 및 상기 비트 라인들에 연결된 메모리 셀들을 포함할 수 있다.
메모리 컨트롤러(510)는 메모리 장치(100a)를 제어한다. 메모리 컨트롤러(510)는 외부의 호스트와 메모리 장치(100a) 사이의 데이터 교환을 제어할 수 있다. 메모리 컨트롤러(510)는 중앙 처리 장치(511), 버퍼 메모리(512), 호스트 인터페이스(513), 메모리 인터페이스(514) 및 에러 정정 회로(514)를 포함할 수 있다. 중앙 처리 장치(511), 버퍼 메모리(512), 호스트 인터페이스(513) 및 메모리 인터페이스(514)의 동작은 도 14의 메모리 시스템(400)의 중앙 처리 장치(411), 버퍼 메모리(412), 호스트 인터페이스(413) 및 메모리 인터페이스(414)의 동작과 실질적으로 동일하므로 이에 대한 상세한 설명은 생략한다. 도 15의 메모리 시스템(500)이 도 14의 메모리 시스템(400)과 다른 점은 에러 정정 회로(515)와 메모리 컨트롤러(510)에 포함된다는 점이다. 즉, 에러 정정 회로(515)는 중앙 처리 장치(511)의 제어에 따라 메모리 셀 어레이(120a)로부터의 독출 데이터에 대한 에러 정정을 수행하되, 독출 데이터의 에러의 비대칭성을 이용하여 독출 데이터에 포함되는 에러가 에러 정정 회로(515)의 에러 정정 범위를 초과하여도 이를 에러 정정 범위 이내로 축소시켜 독출 데이터에 대한 에러 정정을 수행할 수 있다. 즉 에러 정정 회로(515)는 도 11의 에러 정정 회로(200)와 실질적으로 동일한 구조를 가지고 실질적으로 동일한 동작을 수행할 수 있다.
도 15는 도 13의 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 15를 참조하면, 컴퓨팅 시스템(600)은 프로세서(610), 메모리 장치(620), 사용자 인터페이스(630) 및 메모리 시스템(400)을 포함한다.
프로세서(610)는 특정 계산들 또는 태스크들을 실행하는 특정 소프트웨어를 실행하는 것과 같이 다양한 컴퓨팅 기능들을 실행할 수 있다. 예를 들어, 프로세서(610)는 마이크로프로세서 또는 중앙 처리 장치일 수 있다. 프로세서(610)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 통하여 메모리 장치(620)에 연결될 수 있다. 예를 들어, 메모리 장치(620)는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM), 정적 랜덤 액세스 메모리(static random access memory, SRAM), 또는 이피롬(erasable programmable read-only memory, EPROM), 이이피롬(electrically erasable programmable read-only memory, EEPROM), 및 플래시 메모리 장치를 포함하는 모든 형태의 플래시 메모리일 수 있다. 또한, 프로세서(410)는 주변 구성요소 상호연결(peripheral component interconnect, PCI) 버스와 같은 확장 버스에 연결될 수 있다. 이에 따라, 프로세서(610)는 키보드 또는 마우스와 같은 하나 이상의 입력 장치, 프린터 또는 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함하는 사용자 인터페이스(630)를 제어할 수 있다. 메모리 장치(100)에는 사용자 인터페이스(630)를 통해 제공되거나, 프로세서(610)에 의해 처리된 멀티 비트 데이터가 메모리 컨트롤러(410)를 통해 저장될 수 있다. 컴퓨팅 시스템(600)은 동작 전압을 공급하기 위한 전원(640)을 더 포함할 수 있다. 또한, 컴퓨팅 시스템(600)은 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등을 더 포함할 수 있다.
본 발명의 일 실시예에 따른 컴퓨팅 시스템(600)은 셀룰러 폰, PDA, 디지털 카메라, 포터블 게임 콘솔, MP3 플레이어, 데스크 톱 컴퓨터, 노트북 컴퓨터, 스피커, 비디오, 텔레비전 등일 수 있다.
본 발명의 실시예들은 주로 플래시 메모리와 같은 메모리 장치에 대하여 설명되었지만, 본 발명은 이에 한정되지 아니하고, 비대칭적인 채널 특성을 가지고, 에러의 위치가 재현 가능한 임의의 저장 매체에 적용가능하다.
본 발명의 실시예들은 임의의 데이터 저장 장치 및 컴퓨팅 시스템에 유용하게 이용될 수 있다. 또한, 본 발명은 메모리 카드, 솔리드 스테이트 드라이브, 셀룰러 폰, PDA, 디지털 카메라, 포터블 게임 콘솔, MP3 플레이어, 데스크 톱 컴퓨터, 노트북 컴퓨터, 스피커, 비디오, 텔레비전 등에 유용하게 이용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (10)

  1. 메모리 셀 어레이에 저장된 메인 데이터 및 패리티 데이터를 포함하는 코드워드를 수신하고, 상기 코드워드에 대하여 ECC(Error check and correction) 디코딩을 수행하는 단계; 및
    상기 수행된 ECC 디코딩의 결과에 기초하여 선택적으로 상기 메인 데이터에 대한 에러 발생의 비대칭성을 이용하여 상기 코드워드에 대한 에러 정정을 수행하는 단계를 포함하는 에러 정정 방법.
  2. 제1항에 있어서, 상기 선택적으로 수행된 에러 정정의 성공 여부를 리포팅하는 단계를 더 포함하는 것을 특징으로 하는 에러 정정 방법.
  3. 제1항에 있어서, 상기 코드워드에 대한 에러 정정은 최대 반복 횟수 이내에서 수행되는 것을 특징으로 하는 에러 정정 방법.
  4. 제1항에 있어서, 상기 에러 정정을 선택적으로 수행하는 단계는,
    a)상기 메인 데이터가 정정 범위를 초과하는 에러를 포함하는 경우, 상기 에러를 포함하는 블록을 다른 블록으로 복사하는 단계;
    b)상기 에러를 포함하는 블록을 소거하고, 소거된 블록에 제1 데이터를 기입하는 단계;
    c)상기 제1 데이터가 기입된 블록에서 제1 데이터와는 다른 제2 데이터로 독출되는 비트 위치를 검출하는 단계;
    d)상기 소거전 에러를 포함하는 블록에서 상기 제2 데이터로 독출되는 비트 위치와 상기 제1 데이터가 기입된 블록에서 제2 데이터로 독출되는 비트 위치를 비교하는 단계;
    e)상기 에러를 포함하는 블록에서 상기 제2 데이터로 독출되는 비트 위치와 매칭되는 상기 제1 데이터가 기입된 블록에서 상기 제2 데이터로 독출되는 비트 위치들의 적어도 일부에 상기 제1 데이터를 기입하면서 반복 횟수를 증가시키는 단계;
    f)상기 매칭되는 비트 위치의 적어도 일부에 제1 데이터가 기입된 블록에 대하여 ECC 디코딩을 수행하는 단계; 및
    g)상기 수행된 ECC 디코딩에 의하여 상기 코드워드에 대한 에러 정정의 성공 여부를 판단하는 단계를 포함하는 에러 정정 방법.
  5. 제4항에 있어서, 상기 코드워드에 대한 에러 정정이 성공으로 판단되지 않는 경우, 최대 반복 횟수 이내에서 상기 e, f, g 단계들은 반복되는 것을 특징으로 하는 에러 정정 방법.
  6. 제5항에 있어서, 상기 코드워드에 대한 에러 정정이 상기 최대 반복 횟수 이내에서 성공으로 판단되지 않는 경우, 상기 ECC 디코딩은 실패로 리포팅되는 것을 특징으로 하는 에러 정정 방법.
  7. 제5항에 있어서, 상기 코드워드에 대한 에러 정정이 상기 최대 반복 횟수 이내에서 성공으로 판단되는 경우, 상기 ECC 디코딩은 성공으로 리포팅되는 것을 특징으로 하는 에러 정정 방법.
  8. 제4항에 있어서, 상기 에러를 포함하는 블록을 상기 다른 블록으로 복사하는 경우, 상기 메인 데이터의 에러 중 에러 정정이 가능한 페이지들은 정정 후 상기 다른 블록으로 복사하는 것을 특징으로 하는 에러 정정 방법.
  9. 메인 데이터를 저장하는 메인 셀 및 패리티 데이터를 저장하는 패리티 셀을 구비하는 메모리 셀 어레이; 및
    상기 저장된 메인 데이터 및 패리티 데이터를 포함하는 코드워드를 수신하고, 상기 메인 데이터의 에러 발생의 비대칭성을 이용하여 상기 코드워드에 대한 에러 정정을 선택적으로 수행하는 에러 정정 회로를 포함하는 메모리 장치.
  10. 제9항에 있어서, 상기 에러 정정 회로는,
    상기 저장된 메인 데이터의 에러를 감지하여 감지 신호를 생성하는 디텍터;
    상기 메인 데이터와 상기 패리티 데이터를 수신하고, 상기 감지 신호에 응답하여 상기 패리티 데이터를 이용하여 상기 메인 데이터의 에러를 정정하여 정정된 데이터로 제공하되, 상기 메인 데이터의 에러가 정정 가능 범위를 초과하여도 최대 반복 횟수 이내에서 에러 정정 동작을 반복하여 상기 메인 데이터의 에러를 정정하는 정정부; 및
    상기 정정부가 상기 최대 반복 횟수 이내에서 상기 메인 데이터의 에러를 정정하는지를 모니터링하여 상기 코드워드에 대한 에러 정정의 성공 여부를 리포팅하는 리포팅부를 포함하는 것을 특징으로 하는 메모리 장치.
KR1020110090517A 2011-09-07 2011-09-07 에러 정정 방법 및 이를 이용하는 메모리 장치 KR20130027138A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110090517A KR20130027138A (ko) 2011-09-07 2011-09-07 에러 정정 방법 및 이를 이용하는 메모리 장치
US13/599,467 US20130061113A1 (en) 2011-09-07 2012-08-30 Method of correcting errors and memory device using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110090517A KR20130027138A (ko) 2011-09-07 2011-09-07 에러 정정 방법 및 이를 이용하는 메모리 장치

Publications (1)

Publication Number Publication Date
KR20130027138A true KR20130027138A (ko) 2013-03-15

Family

ID=47754090

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110090517A KR20130027138A (ko) 2011-09-07 2011-09-07 에러 정정 방법 및 이를 이용하는 메모리 장치

Country Status (2)

Country Link
US (1) US20130061113A1 (ko)
KR (1) KR20130027138A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160007440A (ko) * 2014-07-10 2016-01-20 삼성전자주식회사 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법
KR20160050961A (ko) * 2014-10-31 2016-05-11 에스케이하이닉스 주식회사 에러를 보정하는 메모리 장치 및 그의 에러 보정 방법
KR20180103391A (ko) * 2017-03-09 2018-09-19 성균관대학교산학협력단 에러 정정 기능을 갖는 메모리 장치, 메모리 장치의 에러 정정 인코딩 방법 및 메모리 장치의 에러 정정 디코딩 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI537966B (zh) * 2014-10-03 2016-06-11 群聯電子股份有限公司 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元
CN105630425B (zh) * 2015-12-31 2020-06-26 深圳市紫光同创电子有限公司 一种数据管理方法、装置及终端
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
JP2018152146A (ja) * 2017-03-09 2018-09-27 東芝メモリ株式会社 半導体記憶装置及びデータ読み出し方法
JP2019079377A (ja) * 2017-10-26 2019-05-23 東芝メモリ株式会社 半導体記憶装置
KR102468721B1 (ko) * 2017-12-20 2022-11-21 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
KR20200058027A (ko) * 2018-11-19 2020-05-27 삼성전자주식회사 Ecc 회로를 포함하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 에러 정정 방법
US20240194284A1 (en) * 2021-03-02 2024-06-13 Micron Technology, Inc. Methods and systems for improving ecc operation of memories
WO2022185089A1 (en) * 2021-03-02 2022-09-09 Micron Technology, Inc. Methods and systems for managing memory with dynamic ecc protection

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160007440A (ko) * 2014-07-10 2016-01-20 삼성전자주식회사 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법
KR20160050961A (ko) * 2014-10-31 2016-05-11 에스케이하이닉스 주식회사 에러를 보정하는 메모리 장치 및 그의 에러 보정 방법
KR20180103391A (ko) * 2017-03-09 2018-09-19 성균관대학교산학협력단 에러 정정 기능을 갖는 메모리 장치, 메모리 장치의 에러 정정 인코딩 방법 및 메모리 장치의 에러 정정 디코딩 방법

Also Published As

Publication number Publication date
US20130061113A1 (en) 2013-03-07

Similar Documents

Publication Publication Date Title
CN108573722B (zh) 操作非易失性存储器件的方法和非易失性存储器件
US11256564B2 (en) Media quality aware ECC decoding method selection to reduce data access latency
KR102065665B1 (ko) 더미 워드라인을 포함하는 불휘발성 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
KR20130027138A (ko) 에러 정정 방법 및 이를 이용하는 메모리 장치
KR102135293B1 (ko) 메모리에서 수행된 에러 정정 동작을 모니터링하는 방법
US9606864B2 (en) Non-volatile memory device having adjustable read voltage, memory system comprising same, and method of operating same
US10528420B2 (en) Flash memory system having abnormal wordline detector and abnormal wordline detection method
KR102422478B1 (ko) 불휘발성 메모리 장치의 독출 방법
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
US8499210B2 (en) Flash memory device, flash memory system, and method of programming flash memory device
CN110347530B (zh) 数据存储装置及其操作方法
US20100241796A1 (en) Memory system protected from errors due to read disturbance and reading method thereof
US10725863B2 (en) Memory system and method for operating the same
KR20100033195A (ko) 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법
KR102178141B1 (ko) 비휘발성 메모리 장치의 동작 방법
US10522234B2 (en) Bit tagging method, memory control circuit unit and memory storage device
US10685711B1 (en) Decoding method, memory controlling circuit unit and memory storage device
KR20160051328A (ko) 데이터 복구 방법 및 이를 사용한 비휘발성 메모리 시스템
KR20200014135A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US20100287447A1 (en) Memory system identifying and correcting erasure using repeated application of read operation
US9824778B2 (en) Nonvolatile memory system and data recovery method thereof
TWI691967B (zh) 解碼方法及相關的快閃記憶體控制器與電子裝置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid