KR20190051570A - 메모리 시스템 및 그것의 동작 방법 - Google Patents

메모리 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20190051570A
KR20190051570A KR1020170147391A KR20170147391A KR20190051570A KR 20190051570 A KR20190051570 A KR 20190051570A KR 1020170147391 A KR1020170147391 A KR 1020170147391A KR 20170147391 A KR20170147391 A KR 20170147391A KR 20190051570 A KR20190051570 A KR 20190051570A
Authority
KR
South Korea
Prior art keywords
error correction
data
memory
read
correction circuit
Prior art date
Application number
KR1020170147391A
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 KR1020170147391A priority Critical patent/KR20190051570A/ko
Priority to US16/013,153 priority patent/US10778256B2/en
Priority to TW107121147A priority patent/TWI775879B/zh
Priority to CN201810772373.9A priority patent/CN109753375B/zh
Publication of KR20190051570A publication Critical patent/KR20190051570A/ko

Links

Images

Classifications

    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • 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/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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/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/63Joint error correction and other techniques
    • H03M13/6325Error control coding in combination with demodulation
    • 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

Abstract

본 기술은, 제1 메모리 블록으로부터 제1 데이터를 리드하는 제1 리드 단계; 제1 에러 정정 회로를 이용하여 상기 제1 데이터에 대해 에러 정정을 수행하는 제1 에러 정정 단계; 상기 제1 에러 정정 단계의 결과가 실패이면, 제2 에러 정정 회로를 이용하여 상기 제1 데이터에 대해 에러 정정을 수행하는 제2 에러 정정 단계; 및 상기 제1 에러 정정 단계의 결과가 실패이면, 상기 제1 메모리 블록에 대한 리드 리클레임 동작(read reclaim operation)을 수행하는 리클레임 단계를 포함하는 것을 특징으로 하는 메모리 시스템 및 그것의 동작 방법을 포함한다.

Description

메모리 시스템 및 그것의 동작 방법{Memory system and operating method thereof}
본 발명은 메모리 시스템 및 그것의 동작 방법에 관한 것으로, 보다 구체적으로는 데이터에 대해 제1 에러 정정 회로에 의한 에러 정정 동작(error correction operation)이 실패한 때 제2 에러 정정 회로를 이용하여 상기 데이터에 대해 다시 에러 정정 동작을 수행하고, 상기 데이터를 저장한 메모리 블록에 대해 리드 리클레임 동작(read reclaim operation)을 수행하도록 구성된 메모리 시스템 및 그것의 동작 방법에 관한 것이다.
메모리 장치는 다수의 메모리 블록들을 포함할 수 있다. 또한 각각의 메모리 블록은 다수의 메모리 셀들을 포함하고 있고, 하나의 메모리 블록에 포함된 메모리 셀들은 동시에 소거 동작이 수행될 수 있다.
메모리 블록에 다수의 리드 동작들이 수행된 때 메모리 블록에 저장된 데이터는 열화될 수 있다. 다시 말해 메모리 블록에 다수의 리드 동작들이 수행된 때 메모리 블록에 인가되는 전압에 의해 발생하는 전기장에 의해 메모리 셀들의 문턱 전압(threshold voltage)이 상승하여 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)가 넓어질 수 있다. 이를 리드 디스터브(read disturb) 현상이라고 부를 수 있다.
리드 디스터브(read disturb) 현상에 의해 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)가 넓어질 경우 리드 동작시 데이터의 에러 수준이 높아질 수 있다. 또한 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)가 과도하게 넓어질 경우 리드 동작시 데이터에 대한 에러 정정 동작이 실패할 수 있다. 메모리 시스템은 상기와 같이 에러 정정 동작이 실패하기 전 메모리 블록에 저장된 데이터를 다른 메모리 블록에 카피-프로그램(copy-program) 할 수 있다. 이러한 동작을 리드 리클레임 동작(read reclaim operation)이라고 부를 수 있다.
본 발명의 실시예는 효율적인 리드 리클레임 동작(read reclaim operation)을 수행할 수 있는 메모리 시스템 및 그것의 동작 방법을 제공한다.
본 발명의 실시예에 따른 메모리 시스템의 동작 방법은, 제1 메모리 블록으로부터 제1 데이터를 리드하는 제1 리드 단계; 제1 에러 정정 회로를 이용하여 상기 제1 데이터에 대해 에러 정정을 수행하는 제1 에러 정정 단계; 상기 제1 에러 정정 단계의 결과가 실패이면, 제2 에러 정정 회로를 이용하여 상기 제1 데이터에 대해 에러 정정을 수행하는 제2 에러 정정 단계; 및 상기 제1 에러 정정 단계의 결과가 실패이면, 상기 제1 메모리 블록에 대한 리드 리클레임 동작(read reclaim operation)을 수행하는 리클레임 단계를 포함한다.
본 발명의 실시예에 따른 메모리 시스템은, 제1 내지 제2 메모리 블록들; 상기 제1 메모리 블록으로부터 리드된 데이터에 대해 제1 에러 정정 동작을 수행하도록 구성된 제1 에러 정정 회로; 상기 제1 에러 정정 동작이 실패한 때, 상기 데이터에 대해 제2 에러 정정 동작을 수행하도록 구성된 제2 에러 정정 회로; 및 상기 제1 에러 정정 동작이 실패한 때, 상기 제1 메모리 블록에 저장된 데이터를 상기 제2 메모리 블록에 카피-프로그램(copy-program) 하는 리드 리클레임 동작(read reclaim operation)을 수행하도록 구성된 리드 리클레임 제어부를 포함하고, 상기 제2 에러 정정 회로는 상기 제1 에러 정정 회로 대비 에러 정정 능력이 더 우수하다.
본 발명의 다른 실시예에 따른 메모리 시스템의 동작 방법은, 메모리 블록으로부터 데이터를 리드하는 제1 리드 단계; 제1 에러 정정 시퀀스에 기초하여 상기 데이터에 대해 제1 에러 정정 동작을 수행하는 제1 에러 정정 단계; 상기 제1 에러 정정 동작이 실패한 때 제2 에러 정정 시퀀스에 기초하여 상기 데이터에 대해 제2 에러 정정 동작을 수행하는 제2 에러 정정 단계; 상기 제1 에러 정정 동작의 실패에 응답하여 상기 메모리 블록을 리클레임 리스트에 포함하는 단계; 및 상기 리클레임 리스트에 기초하여 리드 리클레임 동작을 수행하는 리클레임 단계를 포함한다.
본 기술은 메모리 시스템의 동작에 있어, 제1 에러 정정 회로 및 제1 에러 정정 회로 대비 에러 정정 능력이 더 우수한 제2 에러 정정 회로를 이용하여 메모리 시스템의 리드 리클레임 동작(read reclaim operation)을 효율적으로 수행할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1의 메모리 장치를 설명하기 위한 도면이다.
도 3은 도 2의 메모리 블록을 설명하기 위한 도면이다.
도 4는 리드 동작(read operation)을 설명하기 위한 도면이다.
도 5는 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)를 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 에러 정정 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 실시예에 따른 리드 리클레임 동작을 설명하기 위한 흐름도이다.
도 9는 본 발명의 다른 실시예에 따른 리드 리클레임 동작을 설명하기 위한 흐름도이다.
도 10은 본 발명의 다른 실시예에 따른 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 11은 본 발명의 또 다른 실시예에 따른 리드 리클레임 동작을 설명하기 위한 흐름도이다.
도 12는 도 6에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 13은 도 6에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 14는 도 6에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 15는 도 6에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(Memory System; 1000)은 데이터를 저장하는 메모리 장치(Memory Device; 1100)와 호스트(Host; 2000)의 제어에 따라 메모리 장치(1100)를 제어하는 메모리 컨트롤러(Memory Controller; 1200)를 포함할 수 있다.
호스트(2000)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 메모리 시스템(1000)과 통신할 수 있다.
메모리 컨트롤러(1200)는 메모리 시스템(1000)의 동작을 전반적으로 제어하며, 호스트(2000)와 메모리 장치(1100) 사이의 데이터 교환을 제어할 수 있다. 예를 들면, 메모리 컨트롤러(1200)는 호스트(2000)의 요청에 따라 메모리 장치(1100)를 제어하여 데이터를 프로그램(program)하거나 리드(read)할 수 있다. 또한, 메모리 컨트롤러(1200)는 메모리 장치(1100)에 포함된 메인 메모리 블록들 및 서브 메모리 블록들의 정보를 저장하고, 프로그램 동작을 위해 로딩된 데이터 량에 따라 메인 메모리 블록 또는 서브 메모리 블록에 프로그램 동작이 수행되도록 메모리 장치(1100)를 선택할 수 있다. 실시예에 따라, 메모리 장치(1100)는 플래시 메모리(Flash Memory)를 포함할 수 있다.
메모리 컨트롤러(1200)는 호스트(2000)로부터 입력된 데이터를 메모리 장치(1100)로 전송하여 저장할 수 있다. 또한 메모리 컨트롤러(1200)는 호스트(2000)로부터 데이터와 논리 어드레스(logical address)를 입력 받고, 논리 어드레스를 메모리 장치(1100) 내에 데이터가 실제 저장될 영역을 가리키는 물리 어드레스(physical address)로 변환할 수 있다.
다른 예시로서 메모리 시스템(1000)은 채널에 연결된 다수의 메모리 장치들(1100)을 포함할 수 있다. 또한 메모리 컨트롤러(1200)는 채널을 통하여 다수의 메모리 장치들(1100)을 제어할 수 있다.
도 2는 도 1의 메모리 장치를 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 장치(1100)는 데이터가 저장되는 메모리 셀 어레이(100)를 포함할 수 있다. 메모리 장치(1100)는 메모리 셀 어레이(100)에 데이터를 저장하기 위한 프로그램 동작(program operation), 저장된 데이터를 출력하기 위한 리드 동작(read operation) 및 저장된 데이터를 소거하기 위한 소거 동작(erase operation)을 수행하도록 구성된 주변 회로들(200)을 포함할 수 있다. 메모리 장치(1100)는 메모리 컨트롤러(1200)의 제어에 따라 주변 회로들(200)을 제어하는 제어 로직(300)을 포함할 수 있다.
메모리 셀 어레이(100)는 다수의 메모리 블록들(BLK1~BLKm; 110 (m은 양의 정수))을 포함할 수 있다. 각각의 메모리 블록들(BLK1~BLKm; 110)에는 로컬 라인들(local lines; LL)과 비트 라인들(BL1~BLn; n은 양의 정수)이 연결될 수 있다. 예를 들면, 로컬 라인들(LL)은 제1 셀렉트 라인(first select line), 제2 셀렉트 라인(second select line), 상기 제1 및 제2 셀렉트 라인들 사이에 배열된 다수의 워드 라인들(word lines)을 포함할 수 있다. 또한, 로컬 라인들(LL)은 제1 셀렉트 라인과 워드 라인들 사이, 제2 셀렉트 라인과 워드 라인들 사이에 배열된 더미 라인들을 포함할 수 있다. 여기서, 제1 셀렉트 라인은 소스 셀렉트 라인일 수 있고, 제2 셀렉트 라인은 드레인 셀렉트 라인일 수 있다. 예를 들면, 로컬 라인들(LL)은 워드 라인들, 드레인 및 소스 셀렉트 라인들 및 소스 라인들(source lines)을 포함할 수 있다. 예를 들면, 로컬 라인들(LL)은 더미 라인들(dummy lines)을 더 포함할 수 있다. 예를 들면, 로컬 라인들(LL)은 파이프 라인들(pipe lines)을 더 포함할 수 있다. 로컬 라인들(LL)은 메모리 블록들(BLK1~BLKm; 110)에 각각 연결될 수 있으며, 비트 라인들(BL1~BLn)은 메모리 블록들(BLK1~BLKm; 110)에 공통으로 연결될 수 있다. 메모리 블록들(BLK1~BLKm; 110)은 2차원 또는 3차원 구조로 구현될 수 있다. 예를 들면, 2차원 구조의 메모리 블록들(110)에서 메모리 셀들은 기판에 평행한 방향으로 배열될 수 있다. 예를 들면, 3차원 구조의 메모리 블록들(110)에서 메모리 셀들은 기판에 수직 방향으로 적층될 수 있다.
주변 회로들(200)은 제어 로직(300)의 제어에 따라 선택된 메모리 블록(110)의 프로그램, 리드 및 소거 동작을 수행하도록 구성될 수 있다. 예를 들면, 주변 회로들(200)은 제어 로직(300)의 제어에 따라 제1 셀렉트 라인, 제2 셀렉트 라인 및 워드 라인들에 검증 전압 및 패스 전압들을 공급하고, 제1 셀렉트 라인, 제2 셀렉트 라인 및 워드 라인들을 선택적으로 디스차지할 수 있고, 워드 라인들 중 선택된 워드 라인에 연결된 메모리 셀들을 검증할 수 있다. 예를 들면, 주변 회로들(200)은 전압 생성 회로(voltage generating circuit; 210), 로우 디코더(row decoder; 220), 페이지 버퍼 그룹(page buffer group; 230), 컬럼 디코더(column decoder; 240), 입출력 회로(input/output circuit; 250) 및 센싱 회로(sensing circuit; 260)를 포함할 수 있다.
전압 생성 회로(210)는 동작 신호(OP_CMD)에 응답하여 프로그램, 리드 및 소거 동작들에 사용되는 다양한 동작 전압들(Vop)을 생성할 수 있다. 또한, 전압 생성 회로(210)는 동작 신호(OP_CMD)에 응답하여 로컬 라인들(LL)을 선택적으로 디스차지할 수 있다. 예를 들면, 전압 생성 회로(210)는 제어 로직(300)의 제어에 따라 프로그램 전압, 검증 전압, 패스 전압들, 턴온 전압, 리드 전압, 소거 전압 및 소스 라인 전압 등을 생성할 수 있다.
로우 디코더(row decoder; 220)는 로우 어드레스(RADD)에 응답하여 동작 전압들(Vop)을 선택된 메모리 블록(110)에 연결된 로컬 라인들(LL)에 전달할 수 있다.
페이지 버퍼 그룹(230)은 비트 라인들(BL1~BLn)에 연결된 다수의 페이지 버퍼들(PB1~PBn; 231)을 포함할 수 있다. 페이지 버퍼들(PB1~PBn; 231)은 페이지 버퍼 제어 신호들(PBSIGNALS)에 응답하여 동작할 수 있다. 예를 들면, 페이지 버퍼들(PB1~PBn; 231)은 비트 라인들(BL1~BLn)을 통해 수신된 데이터를 임시로 저장하거나, 리드 또는 검증 동작 시, 비트 라인들(BL1~BLn)의 전압 또는 전류를 센싱(sensing)할 수 있다.
컬럼 디코더(240)는 컬럼 어드레스(CADD)에 응답하여 입출력 회로(250)와 페이지 버퍼 그룹(230) 사이에서 데이터를 전달할 수 있다. 예를 들면, 컬럼 디코더(240)는 데이터 라인들(DL)을 통해 페이지 버퍼들(231)과 데이터를 주고받거나, 컬럼 라인들(CL)을 통해 입출력 회로(250)와 데이터를 주고받을 수 있다.
입출력 회로(250)는 메모리 컨트롤러(도 1의 1200)로부터 전달받은 커맨드(CMD) 및 어드레스(ADD)를 제어 로직(300)에 전달하거나, 데이터(DATA)를 컬럼 디코더(240)와 주고받을 수 있다.
센싱 회로(260)는 리드 동작(read operation) 또는 검증 동작(verify operation)시, 허용 비트(VRY_BIT<#>)에 응답하여 기준 전류를 생성하고, 페이지 버퍼 그룹(230)으로부터 수신된 센싱 전압(VPB)과 기준 전류에 의해 생성된 기준 전압을 비교하여 패스 신호(PASS) 또는 페일 신호(FAIL)를 출력할 수 있다.
제어 로직(300)은 커맨드(CMD) 및 어드레스(ADD)에 응답하여 동작 신호(OP_CMD), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIGNALS) 및 허용 비트(VRY_BIT<#>)를 출력하여 주변 회로들(200)을 제어할 수 있다. 또한, 제어 로직(300)은 패스 또는 페일 신호(PASS 또는 FAIL)에 응답하여 검증 동작이 패스 또는 페일 되었는지를 판단할 수 있다.
메모리 장치(1100)의 동작에 있어 각각의 메모리 블록(110)은 소거 동작의 단위 일 수 있다. 다시 말해 하나의 메모리 블록(110)에 포함된 다수의 메모리 셀들은 서로 동시에 소거되며, 선별적으로 소거되지 못할 수 있다.
도 3은 도 2의 메모리 블록을 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 블록(110)은 제1 셀렉트 라인과 제2 셀렉트 라인 사이에 서로 평행하게 배열된 다수의 워드 라인들이 연결될 수 있다. 여기서, 제1 셀렉트 라인은 소스 셀렉트 라인(SSL)일 수 있고, 제2 셀렉트 라인은 드레인 셀렉트 라인(DSL)일 수 있다. 보다 구체적으로 설명하면, 메모리 블록(110)은 비트 라인들(BL1~BLn)과 소스 라인(SL) 사이에 연결된 다수의 스트링들(strings; ST)을 포함할 수 있다. 비트 라인들(BL1~BLn)은 스트링들(ST)에 각각 연결될 수 있고, 소스 라인(SL)은 스트링들(ST)에 공통으로 연결될 수 있다. 스트링들(ST)은 서로 동일하게 구성될 수 있으므로, 제1 비트 라인(BL1)에 연결된 스트링(ST)을 예를 들어 구체적으로 설명하도록 한다.
스트링(ST)은 소스 라인(SL)과 제1 비트 라인(BL1) 사이에서 서로 직렬로 연결된 소스 셀렉트 트랜지스터(SST), 다수의 메모리 셀들(F1~F16) 및 드레인 셀렉트 트랜지스터(DST)를 포함할 수 있다. 하나의 스트링(ST)에는 소스 셀렉트 트랜지스터(SST)와 드레인 셀렉트 트랜지스터(DST)가 적어도 하나 이상씩 포함될 수 있으며, 메모리 셀들(F1~F16) 또한 도면에 도시된 개수보다 더 많이 포함될 수 있다.
소스 셀렉트 트랜지스터(SST)의 소스(source)는 소스 라인(SL)에 연결될 수 있고, 드레인 셀렉트 트랜지스터(DST)의 드레인(drain)은 제1 비트 라인(BL1)에 연결될 수 있다. 메모리 셀들(F1~F16)은 소스 셀렉트 트랜지스터(SST)와 드레인 셀렉트 트랜지스터(DST) 사이에서 직렬로 연결될 수 있다. 서로 다른 스트링들(ST)에 포함된 소스 셀렉트 트랜지스터들(SST)의 게이트들은 소스 셀렉트 라인(SSL)에 연결될 수 있고, 드레인 셀렉트 트랜지스터들(DST)의 게이트들은 드레인 셀렉트 라인(DSL)에 연결될 수 있고, 메모리 셀들(F1~F16)의 게이트들은 다수의 워드 라인들(WL1~WL16)에 연결될 수 있다. 서로 다른 스트링들(ST)에 포함된 메모리 셀들 중에서 동일한 워드 라인에 연결된 메모리 셀들의 그룹을 물리 페이지(physical page; PPG)라 할 수 있다. 따라서, 메모리 블록(110)에는 워드 라인들(WL1~WL16)의 개수만큼의 물리 페이지들(PPG)이 포함될 수 있다.
하나의 메모리 셀은 1비트 데이터를 저장할 수 있다. 이를 통상적으로 싱글 레벨 셀(single level cell; SLC)라고 부른다. 이 경우 하나의 물리 페이지(PPG)는 하나의 논리 페이지(logical page; LPG) 데이터를 저장할 수 있다. 하나의 논리 페이지(LPG) 데이터는 하나의 물리 페이지(PPG)에 포함된 셀 개수 만큼의 데이터 비트들을 포함할 수 있다. 또한 하나의 메모리 셀(MC)은 2 이상의 비트 데이터를 저장할 수 있다. 이를 통상적으로 멀티 레벨 셀(multi-level cell; MLC)이라고 부른다. 이 경우 하나의 물리 페이지(PPG)는 2 이상의 논리 페이지(logical page; LPG) 데이터를 저장할 수 있다.
하나의 물리 페이지(PPG)에 포함된 다수의 메모리 셀들은 동시에 프로그램 될 수 있다. 다시 말해 메모리 장치(1100)는 물리 페이지(PPG)의 단위로 프로그램 동작을 수행할 수 있다. 하나의 메모리 블록에 포함된 다수의 메모리 셀들은 동시에 소거될 수 있다. 다시 말해 메모리 장치(1100)는 메모리 블록(110)의 단위로 소거 동작을 수행할 수 있다. 예시적으로 하나의 메모리 블록(110)에 저장된 데이터의 일부를 업데이트 하기 위해서는 메모리 블록(110)에 저장된 데이터 전체를 리드 하여 그 중 업데이트가 필요한 데이터를 변경한 후 다시 전체 데이터를 다른 메모리 블록(110)에 프로그램 할 수 있다. 왜냐하면 메모리 장치(1100)의 동작에서 메모리 블록(110)이 소거 동작의 단위일 경우, 메모리 블록(110)에 저장된 데이터의 일부만 소거한 뒤 다시 새로운 데이터로 프로그램할 수 없을 수 있기 때문이다.
도 4는 리드 동작(read operation)을 설명하기 위한 도면이다.
도 4를 참조하면, 메모리 장치(1100)는 메모리 블록(110)에 저장된 데이터를 리드 할 수 있다. 예시적으로 메모리 장치(1100)가 제8 워드 라인(WL8)에 연결된 메모리 셀들에 저장된 데이터를 리드할 때, 메모리 장치(1100)는 선택된 제8 워드 라인(WL8)에 리드 전압(Vread)을 인가하고, 비선택된 나머지 워드 라인들(WL1~WL7, WL9~WL16)에 패스 전압(Vpass)을 인가할 수 있다. 이때 패스 전압(Vpass)은 메모리 셀들을 턴-온(turn-on) 시킬 수 있는 전압일 수 있다. 예시적으로 패스 전압(Vpass)은 5V 이상의 전압일 수 있다.
메모리 블록(110)에 리드 동작이 수행되는 경우 메모리 블록(110)에 저장된 데이터가 열화(degradation)될 수 있다. 예시적으로 리드 동작 중 패스 전압(Vpass)이 인가되는 비선택된 워드 라인에 연결된 메모리 셀들의 문턱 전압(threshold voltage)이 상승할 수 있다. 다시 말해 패스 전압(Vpass)에 의해 발생하는 전기장(electric field)에 의해 메모리 셀들의 플로팅 게이트(floating gate) 또는 차지 트랩 레이어(charge trap layer)에 더 많은 전자가 트랩(trap)될 수 있고, 결과적으로 메모리 셀들의 문턱 전압(threshold voltage)이 상승할 수 있다. 이러한 현상을 리드 디스터브(read disturb) 현상이라고 부를 수 있다.
리드 동작에 의해 메모리 셀들의 문턱 전압(threshold voltage)이 상승되는 크기는 리드 동작이 수행되는 회수가 증가할수록 더욱 커질 수 있고, 결과적으로 리드 동작시 데이터의 에러 수준이 높아질 수 있다. 예시적으로 메모리 블록(110)에 저장된 데이터의 에러 수준이 과도하게 높아질 경우 데이터에 대한 에러 정정 동작(error correction operation)이 실패할 수 있다. 메모리 시스템(1000)은 상기와 같이 에러 정정 동작(error correction operation)이 실패하기 전 메모리 블록(110)에 저장된 데이터를 다른 메모리 블록(110)에 카피-프로그램(copy-program) 할 수 있다. 상기와 같은 동작을 리드 리클레임 동작(read reclaim operation)이라고 부를 수 있다. 다시 말해 리드 리클레임 동작(read reclaim operation)은 메모리 블록(110)에 저장된 데이터의 에러 수준이 일정 수준 이상인 때 메모리 블록(110)에 저장된 데이터를 다른 메모리 블록(110)에 카피-프로그램(copy-program) 하는 동작일 수 있다.
도 5는 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)를 설명하기 위한 도면이다.
도 5를 참조하면, 하나의 워드 라인(WL)에 연결된 메모리 셀들, 다시 말해 하나의 물리 페이지(PPG)에 포함된 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)는 다수의 리드 동작들에 의해 열화될 수 있다.
예시로서 하나의 물리 페이지(PPG)에 포함되는 메모리 셀들 각각에 2비트의 데이터가 저장될 수 있다. 다시 말해 하나의 물리 페이지(PPG)는 2개의 페이지 데이터를 저장할 수 있다. 이러한 경우 하나의 물리 페이지(PPG)에 포함된 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)는 소거 문턱 전압 분포(E), 제1 프로그램 문턱 전압 분포(P1), 제2 프로그램 문턱 전압 분포(P2) 및 제3 프로그램 문턱 전압 분포(P3)를 포함할 수 있다. 소거 문턱 전압 분포(E), 제1 프로그램 문턱 전압 분포(P1), 제2 프로그램 문턱 전압 분포(P2) 및 제3 프로그램 문턱 전압 분포(P3)는 각각 ‘11’, ‘10’, ‘00’ 및 ‘01’의 데이터 값에 대응될 수 있다. 다시 말해 메모리 셀이 2비트의 데이터를 저장할 경우 하나의 물리 페이지(PPG)에 포함된 메모리 셀들의 문턱 전압은 소거 문턱 전압 분포(E), 제1 프로그램 문턱 전압 분포(P1), 제2 프로그램 문턱 전압 분포(P2) 및 제3 프로그램 문턱 전압 분포(P3) 중 어느 하나에 포함될 수 있다.
예시로서 하나의 물리 페이지(PPG)에 포함되는 메모리 셀들 각각에 2비트의 데이터, 즉 하위 비트(LSB) 데이터 및 상위 비트(MSB) 데이터가 저장될 수 있다. 예시로서 메모리 장치(1100)는 메모리 셀들에 저장된 하위 비트 데이터를 리드할 때, 선택된 워드 라인에 제2 리드 전압(Vread2)를 인가하고, 비선택된 워드 라인들에 패스 전압(Vpass)을 인가할 수 있다. 다른 예시로서 메모리 장치(1100)는 메모리 셀들에 저장된 상위 비트 데이터를 리드할 때, 선택된 워드 라인에 제1 리드 전압(Vread1) 및 제3 리드 전압(Vread3)을 인가하고, 비선택된 워드 라인들에 패스 전압(Vpass)을 인가할 수 있다.
도 4를 통해 설명한 바와 같이 메모리 블록(110)에 다수의 리드 동작들이 수행된 때 메모리 블록(110)에 저장된 데이터는 열화될 수 있다. 다시 말해 메모리 블록(110)에 다수의 리드 동작들이 수행된 때 패스 전압(Vpass)에 의해 발생하는 전기장에 의해 메모리 셀들의 문턱 전압(threshold voltage)이 상승하여 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)가 초기 문턱 전압 분포 대비 넓어질 수 있다. 이를 리드 디스터브(read disturb) 현상이라고 부를 수 있다.
리드 디스터브(read disturb) 현상에 의해 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)가 넓어질 경우 리드 동작시 데이터의 에러 수준이 높아질 수 있다. 또한 메모리 셀들의 문턱 전압 분포(threshold voltage distribution)가 과도하게 넓어질 경우 리드 동작시 데이터에 대한 에러 정정 동작이 실패할 수 있다. 메모리 시스템(1000)은 상기와 같이 에러 정정 동작이 실패하기 전 메모리 블록(110)에 저장된 데이터를 다른 메모리 블록(110)에 카피-프로그램(copy-program) 할 수 있다. 상기와 같은 동작을 리드 리클레임 동작(read reclaim operation)이라고 부를 수 있다. 다시 말해 리드 리클레임 동작(read reclaim operation)은 메모리 블록(110)에 저장된 데이터의 에러 수준이 일정 수준 이상인 때 메모리 블록(110)에 저장된 데이터를 다른 메모리 블록(110)에 카피-프로그램(copy-program) 하는 동작일 수 있다. 상술한 리드 리클레임 동작(read reclaim operation)은 메모리 블록(110)에 저장된 데이터의 에러 수준이 과도하게 높아지기 전에 수행될 수 있다. 리드 리클레임 동작(read reclaim operation)이 수행된 메모리 블록(110)은 소거 동작이 수행된 후 재사용될 수 있다.
메모리 시스템(1000)의 리드 리클레임 동작(read reclaim operation)은 메모리 블록(110)의 프로그램-소거 사이클(program-erase cycle)의 회수를 증가시킬 수 있다. 메모리 블록(110)은 프로그램-소거 사이클(program-erase cycle)의 회수가 증가할수록 특성이 열화될 수 있다. 다시 말해 메모리 블록(110)에 수행된 프로그램-소거 사이클(program-erase cycle) 회수가 많을수록 메모리 블록(110)에 저장된 데이터의 에러 수준이 증가할 수 있다. 다시 말해 불필요한 리드 리클레임 동작(read reclaim operation)은 메모리 시스템(1000)의 신뢰성을 저하시킬 수 있다.
메모리 시스템(1000)은 메모리 블록(110)에 저장된 데이터의 에러 수준이 과도하게 높아지기 전에 상술한 리드 리클레임 동작(read reclaim operation)이 수행될 수 있도록 메모리 장치(1100)를 제어할 수 있다. 또한 메모리 시스템(1000)은 불필요한 리드 리클레임 동작(read reclaim operation)이 수행되지 않도록 메모리 장치(1100)를 제어할 수 있다.
도 6은 본 발명의 실시예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 6을 참고하면, 메모리 컨트롤러(1200)는 프로세서부(Processor; 710), 메모리 버퍼부(Memory Buffer; 720), 에러 정정부(ECC; 730), 호스트 인터페이스(Host Interface; 740), 버퍼 제어부(Buffer Control Circuit; 750), 메모리 인터페이스(Memory Interface; 760), 데이터 랜더마이저(Data Randomizer; 770) 및 버스(Bus; 780)를 포함할 수 있다. 프로세서부(710)는 리드 리클레임 제어부(Read Reclaim Control Section; 711)를 포함할 수 있다. 또한 에러 정정부(730)는 제1 에러 정정 회로(731), 제2 에러 정정 회로(732) 및 에러 정정 결과 저장부(733)를 포함할 수 있다.
버스(780)는 메모리 컨트롤러(1200)의 구성 요소들 사이에 채널(channel)을 제공하도록 구성될 수 있다.
프로세서부(710)는 메모리 컨트롤러(1200)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서부(710)는 호스트 인터페이스(740)를 통해 외부의 호스트(2000)와 통신하고, 메모리 인터페이스(760)를 통해 메모리 장치(1100)와 통신할 수 있다. 또한 프로세서부(710)는 버퍼 제어부(750)를 통해 메모리 버퍼부(720)를 제어할 수 있다. 프로세서부(710)는 메모리 버퍼부(720)를 동작 메모리, 캐시 메모리(cache memory) 또는 버퍼 메모리(buffer memory)로 사용하여 메모리 시스템(1000)의 동작을 제어할 수 있다.
메모리 버퍼부(720)는 프로세서부(710)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용될 수 있다. 메모리 버퍼부(720)는 프로세서부(710)가 실행하는 코드들 및 커맨드들을 저장할 수 있다. 메모리 버퍼부(720)는 프로세서부(710)에 의해 처리되는 데이터를 저장할 수 있다. 메모리 버퍼부(720)는 SRAM(Static RAM), 또는 DRAM(Dynamic RAM)을 포함할 수 있다.
에러 정정부(730)는 에러 정정을 수행할 수 있다. 에러 정정부(730)는 메모리 인터페이스(760)를 통해 메모리 장치(1100)에 기입될 데이터에 기반하여 에러 정정 인코딩(ECC encoding)을 수행할 수 있다. 에러 정정 인코딩 된 데이터는 메모리 인터페이스(760)를 통해 메모리 장치(1100)로 전달될 수 있다.
에러 정정부(730)는 메모리 장치(1100)로부터 메모리 인터페이스(760)를 통해 수신되는 데이터에 대해 에러 정정 디코딩(ECC decoding)을 수행할 수 있다. 예시적으로, 에러 정정부(730)는 메모리 인터페이스(760)의 구성 요소로서 메모리 인터페이스(760)에 포함될 수 있다.
에러 정정부(730)는 제1 에러 정정 회로(731), 제2 에러 정정 회로(732) 및 에러 정정 결과 저장부(733)를 포함할 수 있다.
제1 에러 정정 회로(731)는 메모리 장치(1100)로부터 리드되어 메모리 인터페이스(760)를 통해 수신되는 데이터에 대해 제1 에러 정정 동작을 수행할 수 있다. 예시로서 제1 에러 정정 회로(731)는 보즈-초두리-오켄젬 코드(BCH code)에 기초하여 제1 에러 정정 동작을 수행할 수 있다. 다른 예시로서 제1 에러 정정 회로(731)는 1비트 저밀도 패리티 체크 코드(LDPC code)에 기초하여 제1 에러 정정 동작을 수행할 수 있다.
제1 에러 정정 회로(731)에 의한 제1 에러 정정 동작이 실패한 때, 다시 말해 제1 에러 정정 회로(731)가 메모리 인터페이스(760)를 통해 수신되는 데이터에 대해 에러 정정을 실패한 때, 에러 정정 결과 저장부(733)는 상기 제1 에러 정정 동작의 결과를 저장할 수 있다. 또한 메모리 버퍼부(720)는 제1 에러 정정 회로(731)에 의해 에러 정정이 실패한 데이터를 저장할 수 있다.
제1 에러 정정 회로(731)가 메모리 인터페이스(760)를 통해 수신되는 데이터에 대해 에러 정정을 실패한 때, 제2 에러 정정 회로(732)는 에러 정정이 실패한 데이터에 대해 제2 에러 정정 동작을 수행할 수 있다. 예시로서 제2 에러 정정 회로(732)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 제2 에러 정정 동작을 수행할 수 있다. 다른 예시로서 제2 에러 정정 회로(732)는 2비트 저밀도 패리티 체크 코드(LDPC code)에 기초하여 제2 에러 정정 동작을 수행할 수 있다.
제2 에러 정정 회로(732)는 메모리 버퍼부(720)에 저장된 제1 에러 정정 회로(731)에 의해 에러 정정 실패한 데이터에 대해 제2 에러 정정 동작을 수행할 수 있다. 이때 제2 에러 정정 회로(732)는 에러 정정 결과 저장부(733)에 저장된 제1 에러 정정 동작의 결과에 기초하여 제2 에러 정정 동작을 수행할 수 있다.
제2 에러 정정 회로(732)의 에러 정정 능력이 제1 에러 정정 회로(731)의 에러 정정 능력 대비 더 클 수 있다. 에러 정정 능력이란 정정 가능한 에러 비트의 최대 개수를 의미할 수 있다. 다시 말해 제1 에러 정정 회로(731)에 의해 에러 정정이 실패한 데이터에 대해서 제2 에러 정정 회로(732)가 에러 정정을 성공할 수 있다.
제2 에러 정정 회로(732)가 제2 에러 정정 동작을 수행하는 동작 시간은 제1 에러 정정 회로(731)가 제1 에러 정정 동작을 수행하는 동작 시간 대비 더 길 수 있다. 예시적으로 제1 에러 정정 회로(731)는 보즈-초두리-오켄젬 코드(BCH code)에 기초하여 에러 정정 동작을 수행할 수 있고, 제2 에러 정정 회로(732)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다. 다른 예시로서 제1 에러 정정 회로(731)는 1비트의 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있고, 제2 에러 정정 회로(732)는 2비트의 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다. 이때 제2 에러 정정 회로(732)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 다수번의 정정 루프 반복(iteration)을 통해 제2 에러 정정 동작을 수행할 수 있고, 결과적으로 제2 에러 정정 동작은 제1 에러 정정 회로(731)에 의한 제1 에러 정정 동작 대비 소요 시간이 더 길 수 있다.
제2 에러 정정 동작 동안 상기 제2 에러 정정 회로(732)에 의해 소모 되는 전력(power)은 제1 에러 정정 동작 동안 상기 제1 에러 정정 회로(731)에 의해 소모 되는 전력 대비 더 클 수 있다. 예시로서 제1 에러 정정 회로(731)는 보즈-초두리-오켄젬 코드(BCH code)에 기초하여 수행될 수 있고, 제2 에러 정정 회로(732)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 수행될 수 있다. 이때 제2 에러 정정 회로(732)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 다수번의 정정 루프 반복(iteration)을 통해 제2 에러 정정 동작을 수행하고 이 과정에서 제1 에러 정정 회로(731)에 의한 제1 에러 정정 동작 대비 더 많은 전력을 소모할 수 있다.
제2 에러 정정 회로(732)는 제1 에러 정정 회로(731) 대비 메모리 컨트롤러(1200) 내에서 더 큰 면적을 차지할 수 있다. 즉 제2 에러 정정 회로(732)는 제1 에러 정정 회로(731) 대비 더 많은 트랜지스터들로 구성될 수 있다.
제1 에러 정정 회로(731)는 제1 에러 정정 동작시 미리 정해진 회수만큼의 정정 루프 반복(iteration)을 수행할 수 있다. 예시로서 제1 에러 정정 회로(731)가 정해진 회수의 정정 루프 반복 내에 에러 정정 동작을 실패한 때, 에러 정정 결과 저장부(733)는 상기 에러 정정 동작의 결과를 저장할 수 있다. 다시 말해 에러 정정 결과 저장부(733)는 제1 에러 정정 회로(731)가 미리 정해진 회수의 정정 루프 반복 내에 에러 정정 동작이 실패했음을 저장할 수 있다. 그리고 나서 제1 에러 정정 회로(731)는 에러 정정 실패한 데이터에 대해 추가적으로 정정 루프 반복(iteration)을 수행하는 제2 에러 정정 동작을 수행할 수 있다. 이때 제1 에러 정정 회로(731)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다.
다른 예시로서 제1 에러 정정 회로(731)가 제1 에러 정정 동작시 미리 정해진 시간 내에 에러 정정 동작이 실패한 때, 에러 정정 결과 저장부(733)는 상기 제1 에러 정정 동작의 결과를 저장할 수 있다. 다시 말해 에러 정정 결과 저장부(733)는 제1 에러 정정 회로(731)가 미리 정해진 시간 내에 에러 정정 동작을 실패했음을 저장할 수 있다. 그리고 나서 제1 에러 정정 회로(731)는 데이터에 대해 제1 에러 정정 동작 대비 더 긴 시간 동안 제2 에러 정정 동작을 수행할 수 있다. 이때 제1 에러 정정 회로(731)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다.
프로세서부(710)는 호스트(2000)로부터 입력된 다수의 커맨드들을 큐잉(queuing)할 수 있다. 이러한 동작을 멀티-큐(multi-queue)라고 부른다. 프로세서부(710)는 큐잉된 다수의 커맨드들을 순차적으로 메모리 장치(1100)에 전달할 수 있다.
프로세서부(710)는 리드 리클레임 제어부(711)를 포함할 수 있고, 리드 리클레임 제어부(711)는 메모리 시스템(1000)의 리드 리클레임 동작(read reclaim operation)을 제어할 수 있다. 또한 리드 리클레임 제어부(711)는 리드 리클레임 동작(read reclaim operation)이 수행될 메모리 블록들(110)의 리스트(list)를 관리할 수 있다. 이 리스트를 리클레임 리스트(reclaim list)라고 부를 수 있다. 리드 리클레임 제어부(711)는 상기 리클레임 리스트(reclaim list)에 기초하여 리드 리클레임 동작(read reclaim operation)을 수행할 수 있다.
에러 정정부(730)는 제1 에러 정정 회로(731)에 의한 에러 정정 동작이 실패한 때 에러 정정 결과 저장부(733)에 그 결과를 저장할 수 있다. 또한 에러 정정부(730)는 에러 정정 결과 저장부(733)에 저장된 제1 에러 정정 회로(731)에 의한 에러 정정 동작의 결과를 프로세서부(710)에 전송할 수 있다. 리드 리클레엠 제어부(711)는 에러 정정부(730)로부터 수신한 에러 정정 결과 저장부(733)에 저장된 제1 에러 정정 회로(731)에 의한 에러 정정 동작의 결과에 기초하여 리클레임 리스트(reclaim list)를 업데이트 할 수 있다. 다시 말해 에러 정정 결과 저장부(733)에 저장된 제1 에러 정정 회로(731)에 의한 에러 정정 동작의 결과가 에러 정정 실패인 때, 프로세서부(710), 구체적으로 리드 리클레임 제어부(711)는 제1 에러 정정 회로(731)에 의해 에러 정정 실패한 데이터를 저장하고 있는 메모리 블록(110)을 리클레임 리스트(reclaim list)에 추가할 수 있다. 그리고 나서 리드 리클레임 제어부(711)는 상기의 리클레임 리스트(reclaim list)에 기초하여 상기 에러 정정 실패한 데이터를 저장한 메모리 블록(110)에 대해 리드 리클레임 동작(read reclaim operation)을 수행할 수 있다. 예시로서 리드 리클레임 동작(read reclaim operation)은 리클레임 리스트(reclaim list)에 포함된 메모리 블록의 수가 일정 수준 이상인 때 시작될 수 있다.
다른 예시로서 에러 정정부(730)는 제1 에러 정정 회로(731)에 의해 미리 정해진 회수의 정정 루프 반복(iteration) 내에 에러 정정 동작이 실패한 때 에러 정정 결과 저장부(733)에 그 결과를 저장할 수 있다. 또한 에러 정정부(730)는 에러 정정 결과 저장부(733)에 저장된 제1 에러 정정 회로(731)에 의한 에러 정정 동작의 결과를 프로세서부(710)에 전송할 수 있다. 리드 리클레엠 제어부(711)는 에러 정정부(730)로부터 수신한 상기의 에러 정정 동작의 결과에 기초하여 리클레임 리스트(reclaim list)를 업데이트 할 수 있다. 다시 말해 에러 정정 결과 저장부(733)에 저장된 제1 에러 정정 회로(731)에 의한 미리 정해진 회수의 정정 루프 반복(iteration) 내에 에러 정정 동작이 실패한 때, 프로세서부(710), 구체적으로 리드 리클레임 제어부(711)는 에러 정정 실패한 데이터를 저장하고 있는 메모리 블록(110)을 리클레임 리스트(reclaim list)에 포함할 수 있다. 그리고 나서 리드 리클레임 제어부(711)는 상기의 리클레임 리스트(reclaim list)에 기초하여 상기 메모리 블록(110)에 대해 리드 리클레임 동작(read reclaim operation)을 수행할 수 있다.
다른 예시로서 에러 정정부(730)는 제1 에러 정정 회로(731)에 의해 미리 정해진 시간 내에 에러 정정 동작이 실패한 때 에러 정정 결과 저장부(733)에 그 결과를 저장할 수 있다. 또한 에러 정정부(730)는 에러 정정 결과 저장부(733)에 저장된 제1 에러 정정 회로(731)에 의한 에러 정정 동작의 결과를 프로세서부(710)에 전송할 수 있다. 리드 리클레엠 제어부(711)는 에러 정정부(730)로부터 수신한 상기의 에러 정정 동작의 결과에 기초하여 리클레임 리스트(reclaim list)를 업데이트 할 수 있다. 다시 말해 리드 리클레임 제어부(711)는 제1 에러 정정 회로(731)에 의해 미리 정해진 시간 내에 에러 정정 실패한 데이터를 저장한 메모리 블록(110)을 리클레임 리스트(reclaim list)에 포함할 수 있다. 그리고 나서 리드 리클레임 제어부(711)는 상기의 리클레임 리스트(reclaim list)에 기초하여 상기 미리 정해진 시간 내에 에러 정정 실패한 데이터를 저장한 메모리 블록(110)에 대해 리드 리클레임 동작(read reclaim operation)을 수행할 수 있다.
제1 에러 정정 회로(731)에 의해 에러 정정 실패한 데이터는 에러 수준이 매우 높을 수 있다. 다시 말해 상기의 데이터를 저장한 메모리 블록(110)은 전체적으로 열화된 상태일 수 있고, 상기 메모리 블록(110)에 저장된 데이터는 전체적으로 에러 수준이 높을 수 있다. 상술한 바와 같이 리드 디스터브(read disturb)에 의한 메모리 셀들의 문턱 전압 분포 열화는 패스 전압(Vpass)에 기인할 수 있기 때문이다. 메모리 블록(110)에 포함된 특정 페이지 데이터에 대해 제1 에러 정정 회로(731)에 의해 에러 정정 실패한 때, 해당 메모리 블록(110)에 저장된 데이터 전체에 대해 리드 리클레임 동작(read reclaim operation)이 수행될 수 있다. 즉 제1 에러 정정 회로(731)에 의해 에러 정정 실패한 때 해당 메모리 블록(110)에 저장된 데이터가 더 열화되어 제2 에러 정정 회로(732)에 의한 에러 정정이 실패하기 전에 해당 메모리 블록(110)에 대해 리드 리클레임 동작(read reclaim operation)이 수행될 수 있다.
호스트 인터페이스(740)는 프로세서부(710)의 제어에 따라, 외부의 호스트(2000)와 통신하도록 구성된다. 호스트 인터페이스(740)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 통신하도록 구성될 수 있다.
버퍼 제어부(750)는 프로세서부(710)의 제어에 따라, 메모리 버퍼부(720)를 제어하도록 구성될 수 있다.
메모리 인터페이스(760)는 프로세서부(710)의 제어에 따라, 메모리 장치(1100)와 통신하도록 구성된다. 메모리 인터페이스(760)는 채널을 통해 커맨드, 어드레스 및 데이터를 메모리 장치(1100)와 통신할 수 있다.
예시적으로, 메모리 컨트롤러(1200)는 메모리 버퍼부(720) 및 버퍼 제어부(750)를 포함하지 않을 수 있다.
예시적으로, 프로세서부(710)는 코드들을 이용하여 메모리 컨트롤러(1200)의 동작을 제어할 수 있다. 프로세서부(710)는 메모리 컨트롤러(1200)의 내부에 제공되는 불휘발성 메모리 장치(예를 들어, Read Only Memory)로부터 코드들을 로드할 수 있다. 다른 예로서, 프로세서부(710)는 메모리 장치(1100)로부터 메모리 인터페이스(760)를 통해 코드들을 로드(load)할 수 있다.
데이터 랜더마이저(Data Randomizer; 770)는 데이터를 랜덤화(randomizing) 하거나 랜덤화 된 데이터를 디랜덤화(de-randomizing) 할 수 있다. 데이터 랜더마이저(770)는 메모리 인터페이스(760)를 통해 메모리 장치(1100)에 기입될 데이터에 대해 데이터 랜덤화 동작을 수행할 수 있다. 랜덤화 된 데이터는 메모리 인터페이스(760)를 통해 메모리 장치(1100)로 전달될 수 있다. 데이터 랜더마이저(770)는 메모리 장치(1100)로부터 메모리 인터페이스(760)를 통해 수신되는 데이터에 대해 데이터 디랜덤화 동작을 수행할 수 있다. 예시적으로, 데이터 랜더마이저(770)는 메모리 인터페이스(760)의 구성 요소로서 메모리 인터페이스(760)에 포함될 수 있다.
예시적으로, 메모리 컨트롤러(1200)의 버스(780)는 제어 버스(control bus) 및 데이터 버스(data bus)로 구분될 수 있다. 데이터 버스는 메모리 컨트롤러(1200) 내에서 데이터를 전송하고, 제어 버스는 메모리 컨트롤러(1200) 내에서 커맨드, 어드레스와 같은 제어 정보를 전송하도록 구성될 수 있다. 데이터 버스와 제어 버스는 서로 분리되며, 상호간에 간섭하거나 영향을 주지 않을 수 있다. 데이터 버스는 호스트 인터페이스(740), 버퍼 제어부(750), 에러 정정부(730) 및 메모리 인터페이스(760)에 연결될 수 있다. 제어 버스는 호스트 인터페이스(740), 프로세서부(710), 버퍼 제어부(750) 및 메모리 인터페이스(760)에 연결될 수 있다.
도 7은 본 발명의 실시예에 따른 에러 정정 동작을 설명하기 위한 도면이다.
도 7을 참조하면, 에러 정정부(730)는 다수의 리드 전압들에 기초하여 에러 정정 동작을 수행할 수 있다.
예시로서 제1 에러 정정 회로(731)는 제2 가변 리드 전압(Vread2’)에 기초하여 수행된 리드 동작을 통해 리드된 데이터에 대해 에러 정정 동작을 수행할 수 있다. 제2 가변 리드 전압(Vread2’)에 기초하여 수행된 리드 동작을 통해 리드된 데이터를 하드 데이터(hard data) 라고 부를 수 있다. 제2 가변 리드 전압(Vread2’)은 열화된 문턱 전압 분포에 기초하여 도 5의 제2 리드 전압(Vread2) 대비 가변된 전압일 수 있다. 이때 제1 에러 정정 회로(731)는 보즈-초두리-오켄젬 코드(BCH code)에 기초하여 에러 정정 동작을 수행할 수 있다.
예시로서 제2 에러 정정 회로(732)는 제1 에러 정정 회로(731)에 의한 에러 정정 동작이 실패한 때 제2 가변 리드 전압(Vread2’)에 기초하여 수행된 리드 동작을 통해 리드된 데이터에 대해 제1 좌측 소프트 리드 전압(Vsd2_left1) 및 제1 우측 소프트 리드 전압(Vsd2_right1)에 기초하여 수행된 리드 동작을 통해 리드된 제1 소프트 데이터(soft data)를 이용하여 에러 정정 동작을 수행할 수 있다. 또한 제2 에러 정정 회로(732)는 제2 좌측 소프트 리드 전압(Vsd2_left2) 및 제2 우측 소프트 리드 전압(Vsd2_right2)에 기초하여 수행된 리드 동작을 통해 리드된 제2 소프트 데이터(soft data)를 추가적으로 이용하여 에러 정정 동작을 수행할 수 있다. 이때 제2 에러 정정 회로(732)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다.
다른 예시로서 제1 에러 정정 회로(731)는 제2 가변 리드 전압(Vread2’)에 기초하여 수행된 리드 동작을 통해 리드된 데이터에 대해 제1 좌측 소프트 리드 전압(Vsd2_left1) 및 제1 우측 소프트 리드 전압(Vsd2_right1)에 기초하여 수행된 리드 동작을 통해 리드된 제1 소프트 데이터(soft data)를 이용하여 에러 정정 동작을 수행할 수 있다. 이때 제1 에러 정정 회로(731)는 1비트 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다.
예시로서 제2 에러 정정 회로(732)는 제1 에러 정정 회로(731)에 의한 에러 정정 동작이 실패한 때 제2 가변 리드 전압(Vread2’)에 기초하여 수행된 리드 동작을 통해 리드된 데이터에 대해 제1 좌측 소프트 리드 전압(Vsd2_left1) 및 제1 우측 소프트 리드 전압(Vsd2_right1)에 기초하여 수행된 리드 동작을 통해 리드된 제1 소프트 데이터(soft data) 및 제2 좌측 소프트 리드 전압(Vsd2_left2) 및 제2 우측 소프트 리드 전압(Vsd2_right2)에 기초하여 수행된 리드 동작을 통해 리드된 제2 소프트 데이터(soft data)를 이용하여 에러 정정 동작을 수행할 수 있다. 이때 제2 에러 정정 회로(732)는 2비트 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다.
도 8은 본 발명의 실시예에 따른 리드 리클레임 동작을 설명하기 위한 흐름도이다.
도 8을 참조하면, 메모리 컨트롤러(1200)는 메모리 장치(1100)에 리드 커맨드(read command)를 인가할 수 있다(단계 S801). 메모리 장치(1100)는 리드 커맨드에 응답하여 메모리 블록(110)에 리드 동작을 수행하고(단계 S802), 메모리 컨트롤러(1200)는 메모리 장치(1100)로부터 리드 동작을 통해 리드된 데이터를 수신할 수 있다(단계 S803).
메모리 컨트롤러(1200)는 제1 에러 정정 회로(731)를 이용하여 메모리 장치(1100)로부터 수신한 데이터에 대해 에러 정정 동작을 수행할 수 있다(단계 S804). 이때 제1 에러 정정 회로(731)에 의한 에러 정정 동작이 실패한 때(단계 S805의 ‘아니오’에 해당), 메모리 컨트롤러(1200)의 에러 정정 결과 저장부(733)는 상기의 에러 정정 결과를 저장하고, 메모리 버퍼부(720)는 에러 정정 동작이 실패한 데이터를 저장할 수 있다(단계 S806).
그리고 나서 메모리 컨트롤러(1200)는 제2 에러 정정 회로(732)를 이용하여 메모리 장치(1100)로부터 수신한 데이터에 대해 에러 정정 동작을 수행할 수 있다(단계 S807). 다른 예시로서 메모리 컨트롤러(1200)는 제2 에러 정정 회로(732)를 이용하여 메모리 버퍼부(720)에 저장된 제1 에러 정정 회로(731)에 의해 에러 정정 실패한 데이터에 대해 에러 정정 동작을 수행할 수 있다. 제2 에러 정정 회로(732)에 의한 에러 정정 동작이 성공한 때(단계 S808의 ‘예’에 해당), 프로세서부(710)의 리드 리클레임 제어부(711)는 제1 에러 정정 회로(731)에 의한 에러 정정 동작 실패에 기초하여 데이터가 저장된 메모리 블록(110)을 리클레임 리스트(reclaim list)에 추가 할 수 있다(단계 S809). 다른 예시로서 단계 S809는 단계 S805와 단계 S807 사이에 수행될 수 있다. 다시 말해 제1 에러 정정 회로를 이용하여 데이터에 대한 에러 정정 동작이 실패한 때(단계 S805의 ‘아니오’에 해당), 메모리 블록을 리클레임 리스트에 추가하는 단계 S809를 수행할 수 있다. 다른 예시로서 단계 S809는 단계 S806 또는 단계 S807과 병렬적으로 수행될 수 있다.
그리고 나서 리드 리클레임 제어부(711)는 리클레임 리스트(reclaim list)에 기초하여 메모리 블록(110)에 대해 리드 리클레임 동작(read reclaim operation)을 수행할 수 있다(단계 S810). 메모리 컨트롤러(1200)는 리드 리클레임 동작(read reclaim operation) 후 메모리 블록(110)에 대한 논리-물리 어드레스 맵핑 정보(logical-to-physical address mapping information)를 업데이트 할 수 있다(단계 S811).
만일 제2 에러 정정 회로(732)에 의한 에러 정정 동작이 실패한 때(단계 S808의 ‘아니오’에 해당), 메모리 컨트롤러(1200)는 메모리 블록(110)을 배드 블록(bad block)으로 설정할 수 있다(단계 S812).
만일 제1 에러 정정 회로(731)에 의한 에러 정정 동작이 성공한 때(단계 S805의 ‘예’에 해당), 에러 정정 성공한 데이터를 호스트(2000)로 출력할 수 있다(단계 S813).
예시로서 제1 에러 정정 회로(731)는 보즈-초두리-오켄젬 코드(BCH code)에 기초하여 에러 정정 동작을 수행할 수 있다. 또한 제2 에러 정정 회로(732)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다. 다른 예시로서 제1 에러 정정 회로(731)는 1비트 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다. 또한 제2 에러 정정 회로(732)는 2비트 저밀도 패리티 체크 코드(LDPC code)에 기초하여 에러 정정 동작을 수행할 수 있다.
도 9는 본 발명의 다른 실시예에 따른 리드 리클레임 동작을 설명하기 위한 흐름도이다.
도 9를 참조하면, 메모리 컨트롤러(1200)는 메모리 장치(1100)에 리드 커맨드(read command)를 인가할 수 있다(단계 S901). 메모리 장치(1100)는 리드 커맨드에 응답하여 메모리 블록(110)에 리드 동작을 수행하고(단계 S902), 메모리 컨트롤러(1200)는 메모리 장치(1100)로부터 리드 동작을 통해 리드된 데이터를 수신할 수 있다(단계 S903).
메모리 컨트롤러(1200)는 제1 에러 정정 시퀀스(error correction sequence)에 기초하여 메모리 장치(1100)로부터 수신한 데이터에 대해 에러 정정 동작을 수행할 수 있다(단계 S904). 예시로서 제1 에러 정정 시퀀스(error correction sequence)는 보즈-초두리-오켄젬 코드(BCH code)에 기초한 에러 정정 동작을 포함할 수 있다. 다른 예시로서 제1 에러 정정 시퀀스(error correction sequence)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 1비트의 소프트 데이터를 이용하여 수행되는 에러 정정 동작을 포함할 수 있다. 또 다른 예시로서 제1 에러 정정 시퀀스(error correction sequence)는 미리 정해진 회수만큼의 정정 루프 반복(iteration)을 포함할 수 있다. 또한 제1 에러 정정 시퀀스(error correction sequence)는 미리 정해진 시간 내에서 에러 정정 동작을 수행할 수 있다.
제1 에러 정정 시퀀스(error correction sequence)에 기초한 에러 정정 동작이 실패한 때(단계 S905의 ‘아니오’에 해당), 메모리 컨트롤러(1200)의 에러 정정 결과 저장부(733)는 상기의 에러 정정 결과를 저장하고, 메모리 버퍼부(720)는 에러 정정 동작이 실패한 데이터를 저장할 수 있다(단계 S906).
그리고 나서 메모리 컨트롤러(1200)는 제2 에러 정정 시퀀스(error correction sequence)에 기초하여 메모리 장치(1100)로부터 수신한 데이터에 대해 에러 정정 동작을 수행할 수 있다(단계 S907). 다른 예시로서 메모리 컨트롤러(1200)는 제2 에러 정정 시퀀스에 기초하여 메모리 버퍼부(720)에 저장된 제1 에러 정정 시퀀스(error correction sequence)에 기초한 에러 정정 동작이 실패한 데이터에 대해 에러 정정 동작을 수행할 수 있다. 예시로서 제2 에러 정정 시퀀스(error correction sequence)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 수행되는 에러 정정 동작을 포함할 수 있다. 다른 예시로서 제2 에러 정정 시퀀스(error correction sequence)는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 2비트의 소프트 데이터를 이용하여 수행되는 수행되는 에러 정정 동작을 포함할 수 있다.
제2 에러 정정 시퀀스(error correction sequence)에 기초한 에러 정정 동작이 성공한 때(단계 S908의 ‘예’에 해당), 프로세서부(710)의 리드 리클레임 제어부(711)는 제1 에러 정정 시퀀스(error correction sequence)에 기초한 에러 정정 동작 실패에 기초하여 데이터가 저장된 메모리 블록(110)을 리클레임 리스트(reclaim list)에 추가 할 수 있다(단계 S909). 다른 예시로서 단계 S909는 단계 S905와 단계 S907 사이에 수행될 수 있다. 다시 말해 제1 에러 정정 시퀀스에 기초하여 데이터에 대한 에러 정정 동작이 실패한 때(단계 S905의 ‘아니오’에 해당), 메모리 블록을 리클레임 리스트에 추가하는 단계 S909를 수행할 수 있다. 다른 예시로서 단계 S909는 단계 S906 또는 단계 S907과 병렬적으로 수행될 수 있다.
그리고 나서 리드 리클레임 제어부(711)는 리클레임 리스트(reclaim list)에 기초하여 메모리 블록(110)에 대해 리드 리클레임 동작(read reclaim operation)을 수행할 수 있다(단계 S910). 메모리 컨트롤러(1200)는 리드 리클레임 동작(read reclaim operation) 후 메모리 블록(110)에 대한 논리-물리 어드레스 맵핑 정보(logical-to-physical address mapping information)를 업데이트 할 수 있다(단계 S911).
만일 제2 에러 정정 시퀀스(error correction sequence)에 기초한 에러 정정 동작이 실패한 때(단계 S908의 ‘아니오’에 해당), 메모리 컨트롤러(1200)는 메모리 블록(110)을 배드 블록(bad block)으로 설정할 수 있다(단계 S912).
만일 제1 에러 정정 시퀀스(error correction sequence)에 기초한 에러 정정 동작이 성공한 때(단계 S905의 ‘예’에 해당), 에러 정정 성공한 데이터를 호스트(2000)로 출력할 수 있다(단계 S913).
도 10은 본 발명의 다른 실시예에 따른 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 10을 참조하면, 메모리 컨트롤러(1200)는 도 6을 통해 설명한 예시 대비 파워 소모 관리부(790)를 더 포함할 수 있다. 파워 소모 관리부(790)는 메모리 시스템(1000)의 전체적인 파워 소모를 관리할 수 있다. 예시로서 파워 소모 관리부(790)는 비휘발성 메모리 장치(1100)에 일정량의 파워 버짓을 할당할 수 있고, 이때 비휘발성 메모리 장치(1100)는 할당된 파워 버짓 내에서 동작할 수 있다. 예시로서 파워 소모 관리부(790)는 메모리 컨트롤러(1200) 내의 여러 구성 장치들, 예시로서 프로세서부(710), 메모리 버퍼부(720), 에러 정정부(730), 호스트 인터페이스(740), 버퍼 제어부(750), 메모리 인터페이스(760) 및 데이터 랜드마이저(770) 각각에 대해 일정량의 파워 버짓을 할당할 수 있고, 상술한 각각의 장치들은 할당된 파워 버짓 내에서 동작할 수 있다.
다른 예시로서 파워 소모 관리부(790)는 메모리 시스템(1000)이 현재 전체적으로 사용하고 있는 파워 소모량을 모니터링 할 수 있다. 예시로서 파워 소모 관리부(790)는 메모리 시스템(1000)의 파워 소모량이 큰 경우 메모리 컨트롤러(1200) 내의 여러 구성 장치들, 예시로서 프로세서부(710), 메모리 버퍼부(720), 에러 정정부(730), 호스트 인터페이스(740), 버퍼 제어부(750), 메모리 인터페이스(760) 및 데이터 랜드마이저(770) 각각에 의한 새로운 동작의 시작을 일시적으로 홀드(hold) 시킬 수 있다. 그리고 나서 파워 소모 관리부(790)는 메모리 시스템(1000)의 전체적인 파워 소모량이 일정 수준 이하로 내려갈 경우 홀드(hold)된 동작을 시작하도록 메모리 컨트롤러(1200) 내의 여러 구성 장치들을 제어할 수 있다.
예시로서 메모리 컨트롤러(1200)의 프로세서부(710)는 리드 동작 수행시 비휘발성 메모리 장치(1100)로부터 리드 데이터를 수신한 후 파워 소모 관리부(790)에게 사용 가능한 파워 버짓이 기준치 이상인지 여부에 대한 정보를 요청하고, 사용 가능한 파워 버짓이 기준치 이상인 경우 제1 에러 정정 회로(713)에 의한 에러 정정 동작을 건너 뛰고 바로 제2 에러 정정 회로(732)를 이용하여 리드 데이터에 대한 에러 정정 동작을 수행할 수 있다.
다른 예시로서 메모리 컨트롤러(1200)의 프로세서부(710)는 리드 동작 수행시 비휘발성 메모리 장치(1100)로부터 리드 데이터를 수신한 후 제1 에러 정정 회로(731)를 이용하여 리드 데이터에 대한 에러 정정 동작을 수행할 수 있다. 이때 제1 에러 정정 회로(731)를 이용하여 리드 데이터에 대한 에러 정정이 실패한 때, 프로세서부(710)는 제2 에러 정정 회로(732)를 이용한 리드 데이터에 대한 에러 정정 동작 수행 전 파워 소모 관리부(790)에게 제2 에러 정정 회로(732)를 이용하여 데이터에 대한 에러 정정 동작 위한 파워 버짓 할당을 요청할 수 있다. 프로세서부(710)는 파워 소모 관리부(790)로부터 제2 에러 정정 회로(732)를 이용하여 리드 데이터에 대한 에러 정정 동작 위한 파워 버짓을 할당 받은 후 제2 에러 정정 회로(732)를 이용하여 리드 데이터에 대한 에러 정정 동작을 수행할 수 있다.
도 11은 본 발명의 또 다른 실시예에 따른 리드 리클레임 동작을 설명하기 위한 흐름도이다.
도 11을 참조하면, 메모리 컨트롤러(1200)는 메모리 장치(1100)에 리드 커맨드(read command)를 인가할 수 있다(단계 S1101). 메모리 장치(1100)는 리드 커맨드에 응답하여 메모리 블록(110)에 리드 동작을 수행하고(단계 S1102), 메모리 컨트롤러(1200)는 메모리 장치(1100)로부터 리드 동작을 통해 리드된 데이터를 수신할 수 있다(단계 S1103).
파워 소모 관리부(790)는 프로세서부(710)의 요청에 응답하여 사용 가능한 파워 버짓이 기준치 이상인지 여부를 확인할 수 있다(단계 S1104). 이때 만일 사용 가능한 파워 버짓이 기준치 이상이 아닌 경우(단계 S1104의 ‘아니오’에 해당), 메모리 컨트롤러(1200)는 제1 에러 정정 회로(731)를 이용하여 데이터에 대한 에러 정정 동작을 수행할 수 있다(단계 S1105).
이때 제1 에러 정정 회로(731)에 의한 에러 정정 동작이 실패한 때(단계 S1106의 ‘아니오’에 해당), 메모리 컨트롤러(1200)의 에러 정정 결과 저장부(733)는 상기의 에러 정정 결과를 저장하고, 메모리 버퍼부(720)는 에러 정정 동작이 실패한 데이터를 저장할 수 있다. 또한 프로세서부(710)는 파워 소모 관리부(790)에게 제2 에러 정정 회로(732)를 이용하여 데이터에 대한 에러 정정 동작 수행을 위한 파워 버짓을 요청할 수 있다(단계 S1107).
파워 소모 관리부(790)에 의해 제2 에러 정정 회로(732)에 의한 데이터에 대한 에러 정정 동작 수행을 위한 파워 버짓 할당이 완료된 경우(단계 S1108의 ‘예’에 해당), 메모리 컨트롤러(1200)는 제2 에러 정정 회로(732)를 이용하여 메모리 장치(1100)로부터 수신한 데이터에 대해 에러 정정 동작을 수행할 수 있다(단계 S1109). 다른 예시로서 메모리 컨트롤러(1200)는 제2 에러 정정 회로(732)를 이용하여 메모리 버퍼부(720)에 저장된 제1 에러 정정 회로(731)에 의해 에러 정정 실패한 데이터에 대해 에러 정정 동작을 수행할 수 있다.
제2 에러 정정 회로(732)에 의한 에러 정정 동작이 성공한 때(단계 S1110의 ‘예’에 해당), 프로세서부(710)의 리드 리클레임 제어부(711)는 제1 에러 정정 회로(731)에 의한 에러 정정 동작 실패에 기초하여 데이터가 저장된 메모리 블록(110)을 리클레임 리스트(reclaim list)에 추가 할 수 있다(단계 S1111). 다른 예시로서 제1 에러 정정 회로를 이용하여 데이터에 대한 에러 정정 동작이 실패한 때(단계 S1106의 ‘아니오’에 해당), 메모리 블록을 리클레임 리스트에 추가하는 단계 S1111를 수행할 수 있다.
그리고 나서 리드 리클레임 제어부(711)는 리클레임 리스트(reclaim list)에 기초하여 메모리 블록(110)에 대해 리드 리클레임 동작(read reclaim operation)을 수행할 수 있다(단계 S1112). 메모리 컨트롤러(1200)는 리드 리클레임 동작(read reclaim operation) 후 메모리 블록(110)에 대한 논리-물리 어드레스 맵핑 정보(logical-to-physical address mapping information)를 업데이트 할 수 있다(단계 S1113). 그리고 나서 메모리 컨트롤러(1200)는 에러 정정이 성공한 데이터를 호스트(2000)로 출력할 수 있다(단계 S1114).
만일 제2 에러 정정 회로(732)에 의한 에러 정정 동작이 실패한 때(단계 S1110의 ‘아니오’에 해당), 메모리 컨트롤러(1200)는 메모리 블록(110)을 배드 블록(bad block)으로 설정할 수 있다(단계 S1115).
단계 S1104에서 만일 사용 가능한 파워 버짓이 기준치 이상인 경우(단계 S1104의 ‘예’에 해당), 메모리 컨트롤러(1200)는 제1 에러 정정 회로(731)를 이용하여 데이터에 대한 에러 정정 동작을 수행을 건너 뛰고 바로 제2 에러 정정 회로(732)를 이용하여 데이터에 대한 에러 정정 동작을 수행할 수 있다(단계 1107).
예시로서 단계 S1111 내지 단계 S1113은 제2 에러 정정 회로(732)에 의한 에러 정정 동작이 성공하고(단계 S1110의 ‘예’에 해당), 데이터의 에러 수준이 일정 수준 이상인 때 수행될 수 있다. 예시로서 단계 S1104에서 만일 사용 가능한 파워 버짓이 기준치 이상인 경우(단계 S1104의 ‘예’에 해당), 메모리 컨트롤러(1200)는 제1 에러 정정 회로(731)를 이용하여 데이터에 대한 에러 정정 동작을 수행을 건너 뛰고 바로 제2 에러 정정 회로(732)를 이용하여 데이터에 대한 에러 정정 동작을 수행할 수 있는데(단계 1107), 이러한 경우 단계 S1111 내지 단계 S1113은 제2 에러 정정 회로(732)에 의해 수행된 에러 정정 동작에 의해 확인된 데이터의 에러 수준이 일정 수준 이상인 때 수행될 수 있다.
파워 소모 관리부(790)에 의해 제2 에러 정정 회로(732)에 의한 데이터에 대한 에러 정정 동작 수행을 위한 파워 버짓 할당이 완료되지 않은 경우(단계 S1108의 ‘아니오’에 해당), 프로세서부(710)는 상기의 파워 버짓이 할당될 때까지 단계1109의 수행을 홀드(hold) 할 수 있다.
도 12는 도 6에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 12를 참조하면, 메모리 시스템(Memory System; 30000)은 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant) 또는 무선 교신 장치로 구현될 수 있다. 메모리 시스템(30000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200)를 포함할 수 있다. 메모리 컨트롤러(1200)는 프로세서(Processor; 3100)의 제어에 따라 메모리 장치(1100)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작을 제어할 수 있다.
메모리 장치(1100)에 프로그램된 데이터는 메모리 컨트롤러(1200)의 제어에 따라 디스플레이(Display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(RADIO TRANSCEIVER; 3300)는 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(3100)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(3100)는 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 메모리 컨트롤러(1200) 또는 디스플레이(3200)로 전송할 수 있다. 메모리 컨트롤러(1200)는 프로세서(3100)에 의하여 처리(process)된 신호를 반도체 메모리 장치(1100)에 프로그램할 수 있다. 또한, 무선 송수신기(3300)는 프로세서(3100)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(Input Device; 3400)는 프로세서(3100)의 동작을 제어하기 위한 제어 신호 또는 프로세서(3100)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다. 프로세서(3100)는 메모리 컨트롤러(1200)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
실시 예에 따라, 메모리 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200)는 프로세서(3100)의 일부로서 구현될 수 있고 또한 프로세서(3100)와 별도의 칩으로 구현될 수 있다. 또한 메모리 컨트롤러(1200)는 도 7에 도시된 메모리 컨트롤러의 예시를 통해 구현될 수 있다.
도 13은 도 6에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 13을 참조하면, 메모리 시스템(Memory System; 40000)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
메모리 시스템(40000)은 메모리 장치(Memory Device; 1100)와 상기 메모리 장치(1100)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(memory Controller; 1200)를 포함할 수 있다.
프로세서(Processor; 4100)는 입력 장치(Input Device; 4200)를 통하여 입력된 데이터에 따라 메모리 장치(1100)에 저장된 데이터를 디스플레이(Display; 4300)를 통하여 출력할 수 있다. 예컨대, 입력 장치(4200)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
프로세서(4100)는 메모리 시스템(40000)의 전반적인 동작을 제어할 수 있고 메모리 컨트롤러(1200)의 동작을 제어할 수 있다. 실시 예에 따라 메모리 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200)는 프로세서(4100)의 일부로서 구현되거나, 프로세서(4100)와 별도의 칩으로 구현될 수 있다. 또한 메모리 컨트롤러(1200)는 도 6에 도시된 메모리 컨트롤러의 예시를 통해 구현될 수 있다.
도 14는 도 6에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 14를 참조하면, 메모리 시스템(50000)은 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 이동 전화기, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
메모리 시스템(50000)은 메모리 장치(Memory Device; 1100)와 상기 메모리 장치(1100)의 데이터 처리 동작, 예컨대 프로그램 동작, 소거 동작 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(1200)를 포함한다.
메모리 시스템(50000)의 이미지 센서(Image Sensor; 5200)는 광학 이미지를 디지털 신호들로 변환할 수 있고, 변환된 디지털 신호들은 프로세서(Processor; 5100) 또는 메모리 컨트롤러(1200)로 전송될 수 있다. 프로세서(5100)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(Display; 5300)를 통하여 출력되거나 메모리 컨트롤러(1200)를 통하여 반도체 메모리 장치(1100)에 저장될 수 있다. 또한, 메모리 장치(1100)에 저장된 데이터는 프로세서(5100) 또는 메모리 컨트롤러(1200)의 제어에 따라 디스플레이(5300)를 통하여 출력될 수 있다.
실시 예에 따라 메모리 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200)는 프로세서(5100)의 일부로서 구현되거나 프로세서(5100)와 별개의 칩으로 구현될 수 있다. 또한 메모리 컨트롤러(1200)는 도 6에 도시된 메모리 컨트롤러의 예시를 통해 구현될 수 있다.
도 15는 도 6에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설기 위한 도면이다.
도 15를 참조하면, 메모리 시스템(Memory System; 70000)은 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(70000)은 메모리 장치(Memory Device; 1100), 메모리 컨트롤러(Memory Controller; 1200) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다.
메모리 컨트롤러(1200)는 반도체 메모리 장치(1100)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 또한 메모리 컨트롤러(1200)는 도 6에 도시된 메모리 컨트롤러의 예시를 통해 구현될 수 있다.
카드 인터페이스(7100)는 호스트(HOST; 60000)의 프로토콜에 따라 호스트(60000)와 메모리 컨트롤러(1200) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라 카드 인터페이스(7100)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스는 호스트(60000)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
메모리 시스템(70000)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(60000)의 호스트 인터페이스(6200)와 접속될 때, 호스트 인터페이스(6200)는 마이크로프로세서(Microprocessor; 6100)의 제어에 따라 카드 인터페이스(7100)와 메모리 컨트롤러(1200)를 통하여 메모리 장치(1100)와 데이터 교신을 수행할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000: 메모리 시스템 1100: 메모리 장치
1200: 메모리 컨트롤러 100: 메모리 셀 어레이
200: 주변 회로들 300: 제어 로직

Claims (20)

  1. 제1 메모리 블록으로부터 제1 데이터를 리드하는 제1 리드 단계;
    제1 에러 정정 회로를 이용하여 상기 제1 데이터에 대해 에러 정정을 수행하는 제1 에러 정정 단계;
    상기 제1 에러 정정 단계의 결과가 실패이면, 제2 에러 정정 회로를 이용하여 상기 제1 데이터에 대해 에러 정정을 수행하는 제2 에러 정정 단계; 및
    상기 제1 에러 정정 단계의 결과가 실패이면, 상기 제1 메모리 블록에 대한 리드 리클레임 동작(read reclaim operation)을 수행하는 리클레임 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  2. 제1항에 있어서,
    상기 리클레임 단계는,
    상기 제1 메모리 블록으로부터 제2 데이터를 리드하는 단계;
    상기 제1 에러 정정 회로 또는 상기 제2 에러 정정 회로를 이용하여 상기 제2 데이터에 대해 에러 정정을 수행하는 단계; 및
    에러 정정된 상기 제1 내지 제2 데이터를 제2 메모리 블록에 프로그램 하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  3. 제1항에 있어서,
    상기 제2 에러 정정 회로의 에러 정정 능력이 상기 제1 에러 정정 회로의 에러 정정 능력 대비 더 큰 것을 특징으로 하는 메모리 시스템의 동작 방법.
  4. 제3항에 있어서,
    상기 제2 에러 정정 단계를 수행하는 동작 시간은 상기 제1 에러 정정 단계를 수행하는 동작 시간 대비 더 긴 것을 특징으로 하는 메모리 시스템의 동작 방법.
  5. 제1항에 있어서,
    상기 제2 에러 정정 단계 동안 상기 제2 에러 정정 회로에 의해 소모 되는 전력은 상기 제1 에러 정정 단계 동안 상기 제1 에러 정정 회로에 의해 소모 되는 전력 대비 더 큰 것을 특징으로 하는 메모리 시스템의 동작 방법.
  6. 제1항에 있어서,
    상기 제1 에러 정정 회로에 의해 에러 정정 실패된 상기 제1 데이터를 메모리 버퍼부에 저장하는 단계를 더 포함하고,
    상기 제2 에러 정정 단계는 상기 메모리 버퍼부에 저장된 상기 제1 데이터에 대해 수행되는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  7. 제1항에 있어서,
    상기 제1 메모리 블록을 리클레임 리스트에 추가하는 단계를 더 포함하고,
    상기 리클레임 단계는 상기 리클레임 리스트에 기초하여 수행되는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  8. 제1항에 있어서,
    상기 제1 에러 정정 단계 수행 전, 사용 가능한 파워 버짓이 기준치 이상인지 여부를 확인하는 단계를 더 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  9. 제1항에 있어서,
    상기 제1 에러 정정 단계에서 미리 정해진 회수의 정정 루프 반복(iteration) 내에서 상기 제1 데이터에 대한 에러 정정이 실패한 때 상기 제2 에러 정정 단계가 수행되는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  10. 제1항에 있어서,
    상기 제1 메모리 블록으로부터 소프트 데이터를 리드하는 제2 리드 단계를 더 포함하고,
    상기 제2 에러 정정 단계는 상기 소프트 데이터를 이용하여 수행되는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  11. 제1항에 있어서,
    상기 제1 메모리 블록으로부터 제1 리드 조건에 기초하여 제1 소프트 데이터를 리드하는 제2 리드 단계; 및
    상기 제1 메모리 블록으로부터 제2 리드 조건에 기초하여 제2 소프트 데이터를 리드하는 제3 리드 단계를 더 포함하고,
    상기 제1 에러 정정 단계는 상기 제1 소프트 데이터에 기초하여 수행되고,
    상기 제2 에러 정정 단계는 상기 제1 소프트 데이터 및 상기 제2 소프트 데이터에 기초하여 수행되는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  12. 제1 내지 제2 메모리 블록들;
    상기 제1 메모리 블록으로부터 리드된 데이터에 대해 제1 에러 정정 동작을 수행하도록 구성된 제1 에러 정정 회로;
    상기 제1 에러 정정 동작이 실패한 때, 상기 데이터에 대해 제2 에러 정정 동작을 수행하도록 구성된 제2 에러 정정 회로; 및
    상기 제1 에러 정정 동작이 실패한 때, 상기 제1 메모리 블록에 저장된 데이터를 상기 제2 메모리 블록에 카피-프로그램(copy-program) 하는 리드 리클레임 동작(read reclaim operation)을 수행하도록 구성된 리드 리클레임 제어부를 포함하고,
    상기 제2 에러 정정 회로는 상기 제1 에러 정정 회로 대비 에러 정정 능력이 더 우수한 것을 특징으로 하는 메모리 시스템.
  13. 제12항에 있어서,
    파워 소모를 관리하도록 구성된 파워 소모 관리부를 더 포함하고,
    상기 제2 에러 정정 회로는 상기 파워 소모 관리부로부터 기준치 이상의 파워 버짓을 할당 받은 때 상기 제2 에러 정정 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
  14. 제12항에 있어서,
    상기 제2 에러 정정 동작 동안 상기 제2 에러 정정 회로에 의해 소모 되는 전력은 상기 제1 에러 정정 동작 동안 상기 제1 에러 정정 회로에 의해 소모 되는 전력 대비 더 큰 것을 특징으로 하는 메모리 시스템.
  15. 제12항에 있어서,
    상기 제1 에러 정정 동작이 실패한 상기 데이터를 저장하도록 구성된 메모리 버퍼부를 더 포함하고,
    상기 제2 에러 정정 회로는 상기 메모리 버퍼부에 저장된 상기 데이터에 대해 상기 제2 에러 정정 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
  16. 제12항에 있어서,
    상기 제1 에러 정정 회로는 보즈-초두리-오켄젬 코드(BCH code)에 기초하여 상기 제1 에러 정정 동작을 수행하고,
    상기 제2 에러 정정 회로는 저밀도 패리티 체크 코드(LDPC code)에 기초하여 상기 제2 에러 정정 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
  17. 제12항에 있어서,
    상기 제1 에러 정정 동작의 결과를 저장하고, 상기 결과를 상기 리드 리클레임 제어부에 전달하도록 구성된 에러 정정 결과 저장부를 더 포함하고,
    상기 리드 리클레임 제어부는 상기 결과에 기초하여 상기 리드 리클레임 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
  18. 메모리 블록으로부터 데이터를 리드하는 제1 리드 단계;
    제1 에러 정정 시퀀스에 기초하여 상기 데이터에 대해 제1 에러 정정 동작을 수행하는 제1 에러 정정 단계;
    상기 제1 에러 정정 동작이 실패한 때 제2 에러 정정 시퀀스에 기초하여 상기 데이터에 대해 제2 에러 정정 동작을 수행하는 제2 에러 정정 단계;
    상기 제1 에러 정정 동작의 실패에 응답하여 상기 메모리 블록을 리클레임 리스트에 포함하는 단계; 및
    상기 리클레임 리스트에 기초하여 리드 리클레임 동작을 수행하는 리클레임 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  19. 제18항에 있어서,
    상기 리클레임 단계는 상기 리클레임 리스트에 포함된 메모리 블록의 수가 일정 수준 이상인 때 수행되는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  20. 제18항에 있어서,
    상기 메모리 블록으로부터 소프트 데이터를 리드하는 제2 리드 단계를 더 포함하고,
    상기 제2 에러 정정 단계는 상기 소프트 데이터를 이용하여 수행되는 것을 특징으로 하는 메모리 시스템의 동작 방법.
KR1020170147391A 2017-11-07 2017-11-07 메모리 시스템 및 그것의 동작 방법 KR20190051570A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170147391A KR20190051570A (ko) 2017-11-07 2017-11-07 메모리 시스템 및 그것의 동작 방법
US16/013,153 US10778256B2 (en) 2017-11-07 2018-06-20 Memory system and operating method thereof
TW107121147A TWI775879B (zh) 2017-11-07 2018-06-20 記憶體系統及其操作方法
CN201810772373.9A CN109753375B (zh) 2017-11-07 2018-07-13 存储器系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170147391A KR20190051570A (ko) 2017-11-07 2017-11-07 메모리 시스템 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20190051570A true KR20190051570A (ko) 2019-05-15

Family

ID=66327715

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170147391A KR20190051570A (ko) 2017-11-07 2017-11-07 메모리 시스템 및 그것의 동작 방법

Country Status (4)

Country Link
US (1) US10778256B2 (ko)
KR (1) KR20190051570A (ko)
CN (1) CN109753375B (ko)
TW (1) TWI775879B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230068718A (ko) * 2021-11-11 2023-05-18 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200028255A (ko) * 2018-09-06 2020-03-16 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
US11373726B2 (en) * 2019-04-03 2022-06-28 Texas Instruments Incorporated Management of multiple memory in-field self-repair options
DE102020133713A1 (de) * 2020-02-27 2021-09-02 Taiwan Semiconductor Manufacturing Co., Ltd. Speicheraktualisierung
WO2022204928A1 (en) * 2021-03-30 2022-10-06 Yangtze Memory Technologies Co., Ltd. Memory controller with read error handling

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090066691A (ko) 2007-12-20 2009-06-24 삼성전자주식회사 읽기 사이클 수를 늘릴 수 있는 반도체 메모리 장치
US8276043B2 (en) * 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
US9189322B2 (en) * 2012-08-31 2015-11-17 Kabushiki Kaisha Toshiba Memory system
US9323607B2 (en) * 2014-04-29 2016-04-26 Seagate Technology Llc Data recovery once ECC fails to correct the data
KR102149674B1 (ko) 2014-10-13 2020-09-01 삼성전자주식회사 에러 정정 디코더 및 에러 정정 디코더의 동작 방법
KR102262909B1 (ko) * 2014-12-18 2021-06-10 에스케이하이닉스 주식회사 메모리 시스템 동작 방법
KR102265220B1 (ko) * 2015-03-09 2021-06-16 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US20170177259A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Techniques to Use Open Bit Line Information for a Memory System
TWI600024B (zh) * 2016-07-05 2017-09-21 大心電子(英屬維京群島)股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US10579471B2 (en) * 2017-03-02 2020-03-03 Toshiba Memory Corporation Storage device and error correction method for storage device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230068718A (ko) * 2021-11-11 2023-05-18 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US11961559B2 (en) 2021-11-11 2024-04-16 Samsung Electronics Co., Ltd. Storage device and operating method of storage device

Also Published As

Publication number Publication date
CN109753375A (zh) 2019-05-14
US20190140666A1 (en) 2019-05-09
US10778256B2 (en) 2020-09-15
CN109753375B (zh) 2023-06-13
TW201919069A (zh) 2019-05-16
TWI775879B (zh) 2022-09-01

Similar Documents

Publication Publication Date Title
CN109992537B (zh) 存储系统及其操作方法
US11334448B2 (en) Memory system and operating method thereof
CN110032396B (zh) 存储器系统及其操作方法
CN109753375B (zh) 存储器系统及其操作方法
US20190121727A1 (en) Memory system and method for operating the same
KR102479483B1 (ko) 메모리 시스템 및 이의 동작 방법
US20190121743A1 (en) Memory system and method of operating the same
KR20190047459A (ko) 메모리 시스템 및 그것의 동작 방법
KR102353363B1 (ko) 메모리 시스템의 동작 방법
US10936421B2 (en) Memory system having storage device and memory controller and operating method thereof
KR101495795B1 (ko) 불휘발성 메모리 장치 및 그것의 프로그램 방법
US10978161B2 (en) Memory system, memory controller and memory device
CN113806254A (zh) 存储器系统、存储器控制器及存储器系统的操作方法
CN112783435A (zh) 存储设备和操作存储设备的方法
US20200160918A1 (en) Memory system and method of operating the same
CN111883198A (zh) 存储器控制器及其操作方法
KR102627873B1 (ko) 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법
US11275524B2 (en) Memory system, memory controller, and operation method of memory system
US11404137B1 (en) Memory system and operating method of memory system
US11544204B2 (en) Memory system, memory controller and method for operating memory controller
CN109902031B (zh) 存储系统及其操作方法
KR20210113743A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
CN114968078A (zh) 存储器装置及其操作方法