KR102326659B1 - 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템 - Google Patents

비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템 Download PDF

Info

Publication number
KR102326659B1
KR102326659B1 KR1020170091656A KR20170091656A KR102326659B1 KR 102326659 B1 KR102326659 B1 KR 102326659B1 KR 1020170091656 A KR1020170091656 A KR 1020170091656A KR 20170091656 A KR20170091656 A KR 20170091656A KR 102326659 B1 KR102326659 B1 KR 102326659B1
Authority
KR
South Korea
Prior art keywords
data
read
error
ecc
ecc decoding
Prior art date
Application number
KR1020170091656A
Other languages
English (en)
Other versions
KR20190009630A (ko
Inventor
김지석
박상인
박일한
윤상용
임규선
최성운
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170091656A priority Critical patent/KR102326659B1/ko
Priority to US15/901,175 priority patent/US10635532B2/en
Priority to CN201810691199.5A priority patent/CN109285582B/zh
Publication of KR20190009630A publication Critical patent/KR20190009630A/ko
Application granted granted Critical
Publication of KR102326659B1 publication Critical patent/KR102326659B1/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
    • 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
    • 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
    • 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
    • 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
    • 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
    • G11C16/28Sensing or reading circuits; Data output circuits using differential sensing or reference cells, e.g. dummy cells
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring

Landscapes

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

Abstract

비휘발성 메모리 장치의 ECC 제어 방법은, 오류 체크 및 정정(ECC) 인코딩을 수행하여 생성된 기입 데이터를 비휘발성 메모리 장치의 복수의 저장 영역들에 각각 기입하는 단계, 상기 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들의 각각에 기초한 단일 ECC 디코딩을 수행하는 단계, 상기 복수의 독출 데이터들의 모두에 대해 상기 단일 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 상기 복수의 독출 데이터들을 논리 연산하여 논리 연산 데이터를 제공하는 단계 및 상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행하는 단계를 포함한다. 논리 연산 데이터에 기초한 병합 ECC 디코딩을 통하여 불량 구제율을 높이고 비휘발성 메모리의 수율, 신뢰성 및 수명을 향상시킬 수 있다.

Description

비휘발성 메모리의 ECC 제어 방법 및 이를 수행하는 메모리 시스템{Method of controlling error check and correction (ECC) of non-volatile memory device and memory system performing the same}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 비휘발성 메모리의 ECC 제어 방법 및 이를 수행하는 메모리 시스템에 관한 것이다.
데이터를 저장하기 위한 반도체 메모리 장치는 크게 휘발성(volatile) 메모리 장치와 비휘발성(non-volatile) 메모리 장치로 대별될 수 있다. 셀 커패시터의 충전 또는 방전에 의해 데이터가 저장되는 디램(DRAM: Dynamic Random Access Memory) 등의 휘발성 메모리 장치는 전원이 인가되는 동안에는 저장된 데이터가 유지되지만 전원이 차단되면 저장된 데이터가 손실된다. 한편, 비휘발성 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 휘발성 메모리 장치는 주로 컴퓨터 등의 메인 메모리로 사용되고, 비휘발성 메모리 장치는 컴퓨터, 휴대용 통신기기 등 넓은 범위의 응용 기기에서 프로그램 및 데이터를 저장하는 대용량 메모리로 사용되고 있다.
반도체 메모리 장치의 메모리 용량은 제조 공정 기술의 발달로 증가하고 있다. 미세화 공정 기술이 진행됨에 따라서 불량이 있는 메모리 셀들의 개수도 증가하고 있다. 불량 메모리 셀들의 증가는 반도체 메모리 장치의 생산 수율을 감소시킨다. 불량 메모리 셀들을 구제하기 위하여 리던던트 메모리 셀들을 이용하거나 에러 체크 및 정정(ECC)을 수행할 수 있다. 이러한 구제 방법의 효율에 따라서 반도체 메모리 장치의 수율 및 성능이 결정될 수 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 효율적으로 에러를 정정할 수 있는 비휘발성 메모리 장치의 ECC 제어 방법을 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 에러를 정정할 수 있는 ECC 제어 방법을 수행하는 메모리 시스템을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 ECC 제어 방법은, 오류 체크 및 정정(ECC) 인코딩을 수행하여 생성된 기입 데이터를 비휘발성 메모리 장치의 복수의 저장 영역들에 각각 기입하는 단계, 상기 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들의 각각에 기초한 단일 ECC 디코딩을 수행하는 단계, 상기 복수의 독출 데이터들의 모두에 대해 상기 단일 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 상기 복수의 독출 데이터들을 논리 연산하여 논리 연산 데이터를 제공하는 단계 및 상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행하는 단계를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 메모리 시스템은, 오류 체크 및 정정(ECC) 인코딩을 수행하여 기입 데이터를 생성하는 ECC 인코더, 상기 기입 데이터를 복수의 저장 영역들에 각각 기입하는 비휘발성 메모리 장치 및 ECC 디코더를 포함한다. 상기 ECC 디코더는 상기 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들의 각각에 기초한 단일 ECC 디코딩을 수행하고, 상기 단일 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 상기 복수의 독출 데이터들을 논리 연산하여 논리 연산 데이터를 제공하고, 상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 ECC 제어 방법은, 오류 체크 및 정정(ECC) 인코딩을 수행하여 생성된 기입 데이터를 비휘발성 메모리 장치의 복수의 저장 영역들에 각각 기입하는 단계, 상기 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들을 비트 단위로 연산한 논리합 데이터 및 논리곱 데이터 중 적어도 하나를 제공하는 단계 및 상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행하는 단계를 포함한다.
본 발명의 실시예들에 따른 비휘발성 메모리 장치의 ECC 제어 방법 및 이를 수행하는 메모리 시스템은, 서로 다른 저장 영역들로부터의 복수의 독출 데이터들에 대한 동시 불량인 경우에도 상기 복수의 독출 데이터들을 논리 연산하여 발생되는 논리 연산 데이터에 기초한 병합 ECC 디코딩을 통하여 불량 구제율을 높이고 비휘발성 메모리의 수율, 신뢰성 및 수명을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리의 ECC 제어 방법을 나타내는 순서도이다.
도 2a 내지 2d는 본 발명의 실시예들에 따른 논리합 데이터에 기초한 병합 ECC 디코딩을 설명하기 위한 도면들이다.
도 3a 내지 3d는 본 발명의 실시예들에 따른 논리곱 데이터에 기초한 병합 ECC 디코딩을 설명하기 위한 도면들이다.
도 4는 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 5는 본 발명의 실시예들에 따른 메모리 장치를 나타내는 블록도이다
도 6은 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 7은 도 6의 메모리 시스템에 포함되는 메모리 장치의 일 실시예를 나타내는 블록도이다.
도 8은 본 발명의 실시예들에 따른 ECC 디코더를 나타내는 블록도이다.
도 9a 및 9b는 도 8의 ECC 디코더에 포함되는 논리 연산부의 실시예들을 나타내는 도면들이다.
도 10은 도 4의 메모리 셀 어레이의 실시예를 나타내는 블록도이다.
도 11은 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 12a 및 12b는 본 발명의 실시예들에 따른 비휘발성 메모리의 ECC 제어를 위한 기입 데이터의 저장 방법들을 나타내는 도면들이다.
도 13은 본 발명의 실시예들에 따른 비휘발성 메모리의 ECC 제어 방법을 나타내는 순서도이다.
도 14, 15 및 16은 본 발명의 실시예들에 따른 ECC 제어 방법이 적용될 수 있는 멀티 레벨 셀들의 독출 시퀀스의 일 예를 설명하기 위한 도면들이다.
도 17은 본 발명의 실시예들에 따른 에러 유형에 기초한 병합 ECC 디코딩을 나타내는 순서도이다.
도 18은 0-에러의 비율 및 1-에러의 비율을 설명하기 위한 도면이다.
도 19a, 19b, 20a 및 20b는 독출 조건 변경 및 병합 ECC 디코딩의 일 실시예를 설명하기 위한 도면들이다.
도 21a, 21b, 22a 및 22b는 독출 조건 변경 및 병합 ECC 디코딩의 다른 실시예를 설명하기 위한 도면들이다.
도 23은 멀티-레벨 셀에 대한 독출 조건 변경의 실시예들을 설명하기 위한 도면이다.
도 24는 본 발명의 실시예들에 따른 독출 조건 변경 및 병합 ECC 디코딩을 나타내는 순서도이다.
도 25a 및 25b는 에러 유형에 따른 병합 ECC 디코딩의 에러 비율을 나타내는 도면들이다.
도 26은 본 발명의 실시예들에 따른 에스에스디(SSD: solid state disk or solid state drive)를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리의 ECC 제어 방법을 나타내는 순서도이다.
도 1을 참조하면, 오류 체크 및 정정(ECC) 인코딩을 수행하여 생성된 기입 데이터를 비휘발성 메모리 장치의 복수의 저장 영역들에 각각 기입한다(S100). 상기 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들의 각각에 기초한 단일 ECC 디코딩을 수행한다(S200).
데이터 저장 환경에서 데이터 미러링(Data Mirroring) 기술은 제품의 신뢰성 향상을 목적으로 사용되는 방법이다. 예를 들면 동일한 데이터를 복수의 저장 영역들에 저장함으로써 메인 데이터가 손실되면 복수로 저장된 백업 데이터를 이용하여 정보의 손실을 방지할 수 있다. 그러나, 복수의 저장 영역들에서 모두 불량이 발생할 경우 해당 데이터는 복구가 불가능한 상황이 발생하게 된다.
미러링 기술은 하나의 저장장치가 불량이 날 확률보다 복수개의 저장장치가 동시에 불량이 발생할 확률이 매우 적다는 사실을 이용하여 신뢰성을 향상하는 방법이다. 하지만 실제 발생할 수 있는 불량에 대한 예측은 매우 힘들고, 평가를 통해 예측한 범위를 벗어나기도 한다. 예를 들면 복수의 데이터 저장장치의 수명의 마지막 구간에서 프로그램이 진행되고, 의도하지 않은 방치 기간을 거치게 되는 상황 등을 고려해야 한다.
본 발명의 실시예들에 따라서, 상기 단일 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 상기 복수의 독출 데이터들을 논리 연산하여 논리 연산 데이터를 제공한다(S300). 상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행한다(S400).
도 1에는 단일 ECC 디코딩을 먼저 수행하고 에러 정정 불능인 경우에만 병합 ECC 디코딩을 수행하는 실시예를 도시하였으나, 단일 ECC 디코딩을 생략하고 바로 병합 ECC 디코딩을 수행할 수 있다. 예를 들어, 프로그램/소거(P/E) 사이클이 한계 값에 가까워진 경우에는 페일 비트들의 개수가 현저하게 증가하고 단일 ECC 디코딩이 실패할 가능성이 크다. 이 경우에는 ECC 디코딩 시간의 절약을 위해 개별적인 독출 데이터에 기초한 단일 ECC 디코딩을 생략하고 바로 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행할 수 있다.
이와 같이, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 ECC 제어 방법은, 서로 다른 저장 영역들로부터의 복수의 독출 데이터들에 대한 동시 불량인 경우에도 상기 복수의 독출 데이터들을 논리 연산하여 발생되는 논리 연산 데이터에 기초한 병합 ECC 디코딩을 통하여 불량 구제율을 높이고 비휘발성 메모리의 수율, 신뢰성 및 수명을 향상시킬 수 있다.
도 2a 내지 2d는 본 발명의 실시예들에 따른 논리합 데이터에 기초한 병합 ECC 디코딩을 설명하기 위한 도면들이다.
도 2a에서 가로축은 메모리 셀들의 문턱 전압(VTH)을 나타내고 세로축은 해당 문턱 전압(VTH)을 갖는 메모리 셀들의 개수를 나타낸다. 독출 동작을 통해 독출 전압(VR)을 기준으로 왼쪽에 분포한 메모리 셀은 1의 값을, 오른쪽에 분포한 메모리 셀은 0의 값을 독출 데이터로 출력한다. 메모리 셀의 문턱 전압(VTH)이 넓은 범위에 걸쳐 산포를 형성하는 이유는 각각의 데이터를 저장하는 메모리 셀의 특성이 같지 않기 때문이다. 다시 말해 소거 및 프로그램 과정을 통하여 '1', '0' 메모리 셀들의 문턱 전압(VTH)를 왼쪽, 오른쪽 방향으로 모아주지만 메모리 셀들의 특성 차이로 인해 동일한 위치에 모이지 않고 일정한 분포를 이루게 된다.
도 2a는 낸드 셀의 열화 특성의 일 예로서, 본래의 소거 상태(ERS0)의 산포가 오른쪽으로 열화된 상태(ESR)의 산포로 변화되는 것을 나타낸다. P/E 사이클이 증가되면 소거 상태(ERS)의 산포는 초기 소거 상태(ERS0) 대비 오른쪽으로 문턱 전압(VTH)이 증가하는 열화 방향성을 가진다. 다른 경우로 프로그램 상태(PGM)에 대한 독출(Read) 동작을 계속해서 진행하게 되면 소거 상태(ERS) 산포가 오른쪽으로 증가하는 열화를 받게 되고 이것을 독출 교란(Read Disturb) 현상이라 한다. 도 2a의 열화 특성의 경우는 1의 값이 0의 값으로 잘못 독출되는 경우에 해당하므로 논리합(OR) 연산을 사용하면 페일 비트들의 수가 감소될 수 있다.
도 2b에 도시된 바와 같이, 동일한 기입 데이터를 복수의 저장 영역들에 기입한 후 독출하면 저장 영역들의 열화 특성의 차이 등으로 인해 독출 데이터는 서로 다른 값을 가질 수 있다. 예를 들어, 서로 다른 저장 영역들로부터 독출된 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 적어도 하나의 비트는 상이한 값을 가질 수 있다. 도 2b에 도시된 바와 같이 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)를 비트 단위로 논리합 연산하여 논리합 데이터(DTOR)를 제공할 수 있다.
도 2c에는 소거 상태(ERS)에 속하는 메모리 셀들에 대하여 제1 독출 데이터(DTR1)의 페일 비트들(FBD1)과 제2 독출 데이터(DTR2)의 페일 비트들(FBD2)이 각각 빗금으로 표시되어 있다. 소거 상태(ERS)에 있는 메모리 셀들은 1의 값으로 독출되는 것이 정상이지만 독출 전압(VR)보다 큰 문턱 전압(VTH)을 갖는 메모리 셀들은 0의 값으로 잘못 독출되고, 이러한 독출 에러를 0-에러라 지칭할 수 있다.
제2 독출 데이터(DTR2)의 0-에러 페일 비트들(FBD2)에 상응하는 제1 독출 데이터(DTR1)의 비트들은 소거 상태(ERS)의 문턱 전압 범위에 고르게 분포되고, 따라서, 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)에서 공통으로 0-에러가 발생하는 페일 비트들(FBDOR)은 상당히 감소하게 된다. 다시 말해서, 제1 독출 데이터(DTR1)와 제2 독출 데이터(DTR2)를 논리합 연산한 논리합 데이터(DTOR)의 0-에러 페일 비트들(FBDOR)은 제1 독출 데이터(DTR1)의 0-에러 페일 비트들(FBD1) 및 제2 독출 데이터(DTR2)의 0-에러 페일 비트(FBD2)보다 현저히 감소된다.
도 2d는 논리합 연산을 통하여 0-에러 페일 비트들을 감소되는 것을 나타낸다. 예를 들어, 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 0-에러 페일 비트들의 비율이 각각 0.1 (즉 10%)라고 가정한다. 이 경우, 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)에 대해, 모두 1로 독출(1-1)되는 비율은 0.81이고, 1 및 0으로 독출(1-0)되는 비율은 0.09 이고, 0 및 1로 독출(0-1)되는 비율은 0.09 이고, 모두 0으로 독출되는 비율은 0.01이다. 즉 논리합 데이터(DTOR)의 99%의 비트들은 정상적으로 1이 되고 1%의 비트들이 0-에러 페일 비트들에 해당하게 된다.
다시 말해서, 논리합 데이터(DTOR)가 1%의 에러 비율을 갖기 위해서는 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)는 각각 10%의 에러 비율이 허용될 수 있다. 결과적으로 도 2a와 같은 열화 특성의 경우에는 논리합 데이터(DTOR)에 기초하여 병합 ECC 디코딩을 수행함으로써 에러 정정의 성공 확률을 증가시킬 수 있다.
도 3a 내지 3d는 본 발명의 실시예들에 따른 논리곱 데이터에 기초한 병합 ECC 디코딩을 설명하기 위한 도면들이다. 도 2a 내지 2d와 중복되는 설명은 생략한다.
도 3a는 낸드 셀의 열화 특성의 일 예로서, 본래의 프로그램 상태(PGM0)의 산포가 왼쪽으로 열화된 상태(PGM)의 산포로 변화되는 것을 나타낸다. 프로그램 동작 후 장시간 방치를 하게 되면 프로그램된 메모리 셀에 저장된 전자(Electron)들이 빠져나가는 특성을 가지고 있고 이것은 프로그램 상태(PGM) 산포가 왼쪽으로 열화 하는 형태를 보여주게 된다. 도 3a의 열화 특성의 경우는 0의 값이 1의 값으로 잘못 독출되는 경우에 해당하므로 논리곱(AND) 연산을 사용하면 페일 비트들의 수가 감소될 수 있다.
도 3b에 도시된 바와 같이 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)를 비트 단위로 논리곱 연산하여 논리곱 데이터(DTAND)를 제공할 수 있다.
도 3c에는 프로그램 상태(PGM)에 속하는 메모리 셀들에 대하여 제1 독출 데이터(DTR1)의 페일 비트들(FBD1)과 제2 독출 데이터(DTR2)의 페일 비트들(FBD2)이 각각 빗금으로 표시되어 있다. 프로그램 상태(PGM)에 있는 메모리 셀들은 0의 값으로 독출되는 것이 정상이지만 독출 전압(VR)보다 작은 문턱 전압(VTH)을 갖는 메모리 셀들은 1의 값으로 잘못 독출되고, 이러한 독출 에러를 1-에러라 지칭할 수 있다.
제2 독출 데이터(DTR2)의 1-에러 페일 비트들(FBD2)에 상응하는 제1 독출 데이터(DTR1)의 비트들은 프로그램 상태(PGM)의 문턱 전압 범위에 고르게 분포되고, 따라서, 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)에서 공통으로 1-에러가 발생하는 페일 비트들(FBDAND)은 상당히 감소하게 된다. 다시 말해서, 제1 독출 데이터(DTR1)와 제2 독출 데이터(DTR2)를 논리곱 연산한 논리곱 데이터(DTAND)의 1-에러 페일 비트들(FBDAND)은 제1 독출 데이터(DTR1)의 1-에러 페일 비트들(FBD1) 및 제2 독출 데이터(DTR2)의 1-에러 페일 비트(FBD2)보다 현저히 감소된다.
도 3d는 논리곱 연산을 통하여 1-에러 페일 비트들을 감소되는 것을 나타낸다. 예를 들어, 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 1-에러 페일 비트들의 비율이 각각 0.1 (즉 10%)라고 가정한다. 이 경우, 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)에 대해, 모두 0으로 독출(1-1)되는 비율은 0.81이고, 0 및 1로 독출(1-0)되는 비율은 0.09 이고, 1 및 0으로 독출(0-1)되는 비율은 0.09 이고, 모두 1로 독출되는 비율은 0.01이다. 즉 논리곱 데이터(DTAND)의 99%의 비트들은 정상적으로 0이 되고 1%의 비트들이 1-에러 페일 비트들에 해당하게 된다.
다시 말해서, 논리곱 데이터(DTAND)가 1%의 에러 비율을 갖기 위해서는 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)는 각각 10%의 에러 비율이 허용될 수 있다. 결과적으로 도 3a와 같은 열화 특성의 경우에는 논리곱 데이터(DTAND)에 기초하여 병합 ECC 디코딩을 수행함으로써 에러 정정의 성공 확률을 증가시킬 수 있다.
도 4는 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 4를 참조하면, 메모리 시스템(100)은 메모리 컨트롤러(300) 및 적어도 하나의 메모리 장치(500)를 포함할 수 있다.
메모리 장치(500)는 메모리 컨트롤러(300)의 제어에 따라 독출, 기입 또는 소거 동작 등을 수행할 수 있다. 이를 위하여 메모리 장치(500)는 메모리 콘트롤러(300)로부터 제어 신호(CTRL), 커맨드(CMD), 어드레스(ADDR) 및 기입 데이터(DATA)를 수신하고, 메모리 콘트롤러(300)로 독출 데이터(DATA)를 송신한다.
메모리 콘트롤러(300)는 ECC 엔진(310)을 포함할 수 있다. ECC 엔진(310)은 에러 비트 정정을 수행하고, 도 3에 도시된 바와 같이 ECC 엔진(310)은 ECC 인코더(320)와 ECC 디코더(330)를 포함할 수 있다. ECC 엔진(310)은 ECC 섹터(sector)의 데이터 단위로 에러 비트 정정을 수행한다. 예를 들면, 페이지의 데이터 단위는 8KB~64KB이고, ECC 섹터의 데이터 단위는 1KB~4KB 일 수 있다.
ECC 인코더(320)는 메모리 장치(500)로 제공되는 데이터의 ECC 인코딩을 하여, 패리티(parity) 비트가 부가된 코드워드(codeword), 즉 기입 데이터를 생성한다. 상기 코드워드는 메모리 장치(500)에 전달되어 메모리 장치의 복수의 저장 영역에 저장될 수 있다. ECC 인코더(310)는 ECC 섹터의 데이터 단위로 인코딩을 수행할 수 있다. ECC 디코더(330)는 메모리 장치(500)로부터 독출된 데이터에 대하여 에러 정정 디코딩을 수행하고 수행 결과에 따라 상기 에러 정정 디코딩의 성공 여부를 판단한다. ECC 디코더(330)는 페리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정 할 수 있다. 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, ECC 디코더(330)는 에러 비트를 정정할 수 없고, 에러 정정 실패(fail)가 발생한다. 본 발명의 실시예들에 따라서, ECC 디코더(330)는 상기 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들을 논리 연산하여 논리 연산 데이터를 제공하고, 상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행할 수 있다.
ECC 인코더(320)와 ECC 디코더(330)는 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 할 수 있으며, 이에 한정되는 것은 아니다.
도 5는 본 발명의 실시예들에 따른 메모리 장치를 나타내는 블록도이다
도 5를 참조하면, 메모리 장치(500)는 메모리 셀 어레이(510), 어드레스 디코더(520), 독출-기입 회로(530), 데이터 입출력 회로(540), 전압 생성 회로(550) 및 제어 로직(560)을 포함한다.
메모리 셀 어레이(510)는 워드 라인들(WL) 및 선택 라인들(SSL, GSL)을 통해 어드레스 디코더(520)에 연결된다. 예를 들면, 선택 라인들은 스트링 선택 라인들(SSL) 및 접지 선택 라인들(GSL)을 포함할 수 있다. 또한, 메모리 셀 어레이(510)는 비트 라인들(BL)을 통해 독출-기입 회로(530)에 연결된다.
메모리 셀 어레이(510)는 복수의 메모리 셀들을 포함한다. 예를 들면, 메모리 셀 어레이(510)는 기판 상에 행 및 열 방향을 따라 배치된 메모리 셀들을 포함한다. 예시적으로, 메모리 셀 어레이(510)는 셀 당 하나 또는 그 이상의 비트를 저장할 수 있는 복수의 메모리 셀들로 구성된다. 메모리 셀 어레이(510)는 도 10 및 11에 도시된 바와 같은 수직형 낸드 플래시 구조를 가질 수 있다.
어드레스 디코더(520)는 워드 라인들(WL), 스트링 선택 라인들(SSL), 그리고 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(510)에 연결된다. 어드레스 디코더(520)는 제어 로직(560)의 제어에 응답하여 동작하도록 구성된다. 어드레스 디코더(520)는 외부로부터 어드레스(ADDR)를 수신한다.
어드레스 디코더(520)는 수신된 어드레스(ADDR) 중 행 어드레스를 디코딩하도록 구성된다. 어드레스 디코더(520)는 워드 라인들(WL) 중 디코디드 행 어드레스에 대응하는 워드 라인을 선택하도록 구성된다. 어드레스 디코더(520)는 스트링 선택 라인들(SSL) 및 접지 선택 라인들(GSL)을 포함하는 선택 라인들 중 디코디드 행 어드레스에 대응하는 선택 라인들을 선택하도록 구성된다.
어드레스 디코더(520)는 전압 생성 회로(550)로부터 수신되는 다양한 전압들을 선택된 워드 라인, 비선택된 워드 라인, 선택된 선택 라인, 그리고 비선택된 선택 라인에 전달하도록 구성된다.
어드레스 디코더(520)는 수신된 어드레스(ADDR) 중 열 어드레스를 디코딩하도록 구성된다. 어드레스 디코더(520)는 디코디드 열 어드레스(DCA)를 독출-기입 회로(530)에 전달한다.
예시적으로, 어드레스 디코더(520)는 행 어드레스를 디코딩하는 행 디코더, 열 어드레스를 디코딩하는 열 디코더, 수신된 어드레스(ADDR)를 저장하는 어드레스 버퍼를 포함할 수 있다.
독출-기입 회로(530)는 비트 라인들(BL)을 통해 메모리 셀 어레이(510)에 연결되고, 데이터 라인들(DL)을 통해 데이터 입출력 회로(540)에 연결된다. 독출-기입 회로(530)는 제어 로직(560)의 제어에 응답하여 동작한다. 독출-기입 회로(530)는 어드레스 디코더(520)로부터 디코디드 어드레스 신호들(DCA)을 수신한다. 디코디드 어드레스 신호들(DCA)을 이용하여, 독출-기입 회로(530)는 비트 라인들(BL)을 선택한다.
예시적으로, 독출-기입 회로(530)는 데이터 입출력 회로(540)로부터 데이터를 수신하고, 수신된 데이터를 메모리 셀 어레이(510)에 기입한다. 또한, 독출-기입 회로(530)는 메모리 셀 어레이(510)로부터 데이터를 독출하고, 독출 데이터를 데이터 입출력 회로(540)에 전달한다.
예를 들어, 독출-기입 회로(530)는 페이지 버퍼(또는 페이지 레지스터), 열 선택 회로 등과 구성 요소들을 포함할 수 있다. 다른 예로서, 독출-기입 회로(530)는 감지 증폭기, 쓰기 드라이버, 열 선택 회로 등과 같은 구성 요소들을 포함할 수 있다.
데이터 입출력 회로(540)는 데이터 라인들(DL)을 통해 독출-기입 회로(530)에 연결된다. 데이터 입출력 회로(530)는 제어 로직(560)의 제어에 응답하여 동작한다. 데이터 입출력 회로(540)는 외부와 데이터(DATA)를 교환하도록 구성된다. 데이터 입출력 회로(540)는 외부로부터 전달되는 데이터(DATA)를 데이터 라인들(DL)을 통해 독출-기입 회로(530)에 전달하도록 구성된다. 데이터 입출력 회로(540)는 독출-기입 회로(530)로부터 데이터 라인들(DL)을 통해 전달되는 데이터(DATA)를 외부로 출력하도록 구성된다. 예시적으로, 데이터 입출력 회로(540)는 데이터 버퍼와 같은 구성 요소를 포함할 수 있다.
전압 생성 회로(550)는 메모리 셀 어레이(510), 어드레스 디코더(520), 그리고 제어 로직(560)에 연결된다. 전압 생성 회로(550)는 외부로부터 전원을 공급받는다. 예를 들면, 전압 생성 회로(550)는 외부로부터 전원 전압(Vcc) 및 접지 전압(Vss)을 공급받는다. 제어 로직(560)의 제어에 응답하여, 전압 생성 회로(550)는 전원 전압(Vcc) 및 접지 전압(Vss)으로부터 다양한 레벨들을 갖는 전압들을 생성하도록 구성된다. 예를 들면, 전압 생성 회로(550)는 고전압(Vpp), 프로그램 전압(Vpgm), 패스 전압(Vpass), 읽기 전압(Vread), 소거 전압(Vers) 등과 같은 다양한 전압들을 생성하도록 구성된다.
전압 생성 회로(550)에 의해 생성된 전압들은 제어 로직(560)의 제어 하에 어드레스 디코더(520) 및 메모리 셀 어레이(510)에 공급된다. 예를 들면, 프로그램 동작 시에 프로그램 전압(Vpgm) 및 패스 전압(Vpass)이 어드레스 디코더(520)에 공급될 것이다. 읽기 동작 시에, 읽기 전압(Vread)이 어드레스 디코더(520)에 공급될 것이다. 메모리 셀 어레이(510)의 소거 시에, 소거 전압(Vers)이 메모리 셀 어레이(510)에 공급될 것이다.
제어 로직(560)은 어드레스 디코더(520), 독출-기입 회로(530) 및 데이터 입출력 회로(550)에 연결된다. 제어 로직(560)은 메모리 장치(500)의 제반 동작을 제어하도록 구성된다. 제어 로직(560)은 외부로부터 전달되는 제어 신호(CTRL)에 응답하여 동작한다.
도 6은 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 6을 참조하면, 메모리 시스템(101)은 메모리 컨트롤러(301) 및 적어도 하나의 메모리 장치(501)를 포함할 수 있다.
메모리 장치(501)는 메모리 컨트롤러(301)의 제어에 따라 독출, 기입 또는 소거 동작 등을 수행할 수 있다. 이를 위하여 메모리 장치(501)는 메모리 콘트롤러(301)로부터 제어 신호(CTRL), 커맨드(CMD), 어드레스(ADDR) 및 기입 데이터(DATA)를 수신하고, 메모리 콘트롤러(301)로 독출 데이터(DATA)를 송신한다.
메모리 장치(301)는 온칩 ECC 회로(580)를 포함할 수 있다. 온칩 ECC 회로(580)는 메모리 셀 어레이로 데이터를 기입하는 때에 데이터를 인코딩(encoding)하여 패리티 데이터를 생성한다. 온칩 ECC 회로(580)는 메모리 셀 어레이로부터 데이터를 독출하는 때에, 독출된 데이터의 패리티 데이터를 디코딩(decoding)하여 데이터의 에러를 체크하고 정정한다. 온칩 ECC 회로(580)는 상기의 동작을 수행하는 인코더 및 디코더를 포함할 수 있다. 본 발명의 실시예들에 따라서, 온칩 ECC 회로(580)의 ECC 디코더는 메모리 장치(501)의 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들을 논리 연산하여 논리 연산 데이터를 제공하고, 상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행할 수 있다.
도 7은 도 6의 메모리 시스템에 포함되는 메모리 장치의 일 실시예를 나타내는 블록도이다.
도 7을 참조하면, 메모리 장치(500b)는 메모리 셀 어레이(510), 어드레스 디코더(520), 독출-기입 회로(530), 데이터 입출력 회로(540), 전압 생성 회로(550), 제어 로직(560) 및 온칩 ECC 회로(580)를 포함한다.
도 7의 메모리 장치(500b)는 온칩 ECC 회로(580)를 더 포함하는 것을 제외하고는 도 5의 메모리 장치(500)와 실질적으로 동일하므로 중복되는 설명은 생략한다.
온칩 ECC 회로(580)는 독출-기입 회로(530)와 데이터 입출력 회로(540) 사이에 배치될 수 있고, 전술한 바와 같은 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
도 8은 본 발명의 실시예들에 따른 ECC 디코더를 나타내는 블록도이다.
도 8을 참조하면 ECC 디코더(10)는 저장부(600), 논리 연산부(LOU)(700), 선택부(MUX)(800) 및 ECC 디코딩부(EDU)(900)를 포함할 수 있다.
저장부(600)는 복수의 독출 데이터들(DTR1, DTR2)을 각각 저장하는 복수의 버퍼들(BF1, BF2)을 포함할 수 있다. 논리 연산부(700)는 버퍼들(BF1, BF2)로부터 제공되는 복수의 독출 데이터들(DTR1, DTR2)을 논리 연산하여 논리 연산 데이터(DTL)를 제공할 수 있다. 선택부(800)는 선택 신호(SEL)에 응답하여 독출 데이터들(DTR1, DTR2) 및 논리 연산 데이터(DTL) 중 하나를 선택하여 출력할 수 있다. ECC 디코딩부(900)는 독출 데이터들(DTR1, DTR2)의 각각에 기초한 단일 ECC 디코딩 및 독출 데이터들(DTR1, DTR2)의 연산 결과인 논리 연산 데이터(DTL)에 기초한 병합 ECC 디코딩을 수행할 수 있다. ECC 디코딩부(900)는 에러 정정의 패스 또는 패일을 나타내는 패스-페일 신호(PF)를 발생할 수 있고, 에러 정정이 성공된 경우, 정정된 데이터(DTC)를 제공할 수 있다.
도 9a 및 9b를 참조하여 설명하는 바와 같이, 논리 연산부(700)는, 복수의 독출 데이터들(DTR1, DTR2)을 비트 단위로 논리합 연산하여 논리합 데이터(DTOR)를 제공하는 논리합 연산부 및 복수의 독출 데이터들(DTR1, DTR2)을 비트 단위로 논리곱 연산하여 논리곱 데이터(DTAND)를 제공하는 논리곱 연산부 중 적어도 하나를 포함할 수 있다.
도 9a 및 9b는 도 8의 ECC 디코더에 포함되는 논리 연산부의 실시예들을 나타내는 도면들이다.
도 9a를 참조하면, 논리 연산부(720)는 논리합 게이트(722), 논리곱 게이트(724) 및 선택부(726)를 포함할 수 있다. 버퍼들(BF1, BF2)은 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)를 직렬 신호의 형태로 제공할 수 있다. 논리합 게이트(722)는 순차적으로 제공되는 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 비트 쌍들을 논리합 연산하여 논리합 데이터(DTOR)를 직렬 신호의 형태로 제공할 수 있다. 논리곱 게이트(724)는 순차적으로 제공되는 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 비트 쌍들을 논리곱 연산하여 논리곱 데이터(DTAND)를 직렬 신호의 형태로 제공할 수 있다. 선택부(726)는 선택 신호(LSEL)에 응답하여 논리합 데이터(DTOR) 및 논리곱 데이터(DTAND) 중 하나를 논리 연산 데이터(DTL)로서 제공할 수 있다.
도 9b를 참조하면, 논리 연산부(740)는 논리합 게이트들(742), 논리곱 게이트들(744) 및 선택부(746)를 포함할 수 있다. 버퍼들(BF1, BF2)은 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)를 병렬 신호의 형태로 제공할 수 있다. 논리합 게이트들(742)은 병렬로 제공되는 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 비트 쌍들을 논리곱 연산하여 논리합 데이터(DTOR)를 병렬 신호의 형태로 제공할 수 있다. 논리곱 게이트들(744)는 병렬로 제공되는 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 비트 쌍들을 논리곱 연산하여 논리곱 데이터(DTAND)를 병렬 신호의 형태로 제공할 수 있다. 선택부(726)는 선택 신호(LSEL)에 응답하여 논리합 데이터(DTOR) 및 논리곱 데이터(DTAND) 중 하나를 논리 연산 데이터(DTL)로서 제공할 수 있다.
도 9a 및 9b의 구성을 이용하여 전술한 각각의 독출 데이터에 기초한 단일 ECC 디코딩 및/또는 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행할 수 있다.
도 10은 도 4의 메모리 셀 어레이의 일 실시예를 나타내는 블록도이고, 도 11은 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 10에 도시된 바와 같이, 메모리 셀 어레이(510)는 복수의 메모리 블록들(BLK1~BLKz)을 포함할 수 있다. 메모리 블록들(BLK1~BLKz)은 어드레스 디코더(520)에 의해 선택된다. 예를 들면, 어드레스 디코더(520)는 메모리 블록들(BLK1~BLKz) 중 블록 어드레스에 대응하는 메모리 블록을 선택할 수 있다.
도 11에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 11을 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 11에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 워드 라인(WL1, WL2, ..., WL8)에 연결될 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 11에는 메모리 블록(BLK)이 여덟 개의 워드 라인들(WL1, WL2, ..., WL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
도 12a 및 12b는 본 발명의 실시예들에 따른 비휘발성 메모리의 ECC 제어를 위한 기입 데이터의 저장 방법들을 나타내는 도면들이다.
일 실시예에서, 도 12a에 도시된 바와 같이, 동일한 기입 데이터는 서로 다른 페이지들(PG1, PG2)에 각각 기입될 수 있다. 따라서, 복수의 독출 데이터들(DTR1, DTR2)은 복수의 페이지들(PG1, PG2)로부터 각각 독출될 수 있다. 페이지들(PG1, PG2)은 동일한 메모리 블록에 속할 수도 있고, 서로 다른 메모리 블록에 속할 수도 있다. 또한 페이지들(PG1, PG2)은 동일한 반도체 다이(semiconductor die)에 속할 수도 있고, 서로 다른 반도체 다이에 속할 수도 있다.
다른 실시예에서, 도 12b에 도시된 바와 같이, 동일한 기입 데이터는 동일한 페이지(PG)의 서로 다른 부분들에 각각 기입될 수 있다. 이 경우 복수의 독출 데이터들(DTR1, DTR2)은 프로그램 단위가 되는 동일한 페이지에 속하므로 한번의 독출 동작을 통하여 페이지 버퍼와 같은 저장 수단에 래치될 수 있고, 따라서 ECC 디코딩 시간이 감소될 수 있다.
도 13은 본 발명의 실시예들에 따른 비휘발성 메모리의 ECC 제어 방법을 나타내는 순서도이다.
도 13을 참조하면, 복수의 독출 데이터들 중 제1 독출 데이터(DTR1)를 독출하고(S11) 제1 독출 데이터(DTR1)에 기초하여 ECC 디코딩을 수행한다(S12). 제1 독출 데이터(DTR1)에 기초한 ECC 디코딩 결과 에러 정정이 가능한 경우(S13: YES), 패스 처리를 하고(S20) 에러 정정이 종료된다.
제1 독출 데이터(DTR1)에 기초한 ECC 디코딩 결과 에러 정정이 불가능한 경우(S13: NO), 복수의 독출 데이터들 중 제2 독출 데이터(DTR2)를 독출하고(S14) 제2 독출 데이터(DTR2)에 기초하여 ECC 디코딩을 수행한다(S15). 제2 독출 데이터(DTR2)에 기초한 ECC 디코딩 결과 에러 정정이 가능한 경우(S16: YES), 패스 처리를 하고(S20) 에러 정정이 종료된다.
제2 독출 데이터(DTR2)에 기초한 ECC 디코딩 결과 에러 정정이 불가능한 경우(S16: NO), 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)를 비트 단위로 논리 연산하여 논리 연산 데이터(DTL)를 제공한다(S17). 전술한 바와 같이, 논리 연산 데이터(DTL)는 논리합 데이터(DTOR) 및 논리곱 데이터(DTAND) 중 적어도 하나를 포함할 수 있다. 논리 연산 데이터(DTL)에 기초하여 ECC 디코딩, 즉 병합 ECC 디코딩을 수행한다(S18). 논리 연산 데이터(DTL)에 기초한 ECC 디코딩 결과 에러 정정이 가능한 경우(S19: YES), 패스 처리를 하고(S20) 에러 정정이 종료된다.
논리 연산 데이터(DTL)에 기초한 ECC 디코딩 결과 에러 정정이 불가능한 경우(S19: NO), 페일 처리를 하고(S21) 에러 정정이 종료된다.
이와 같이, 에러 정정 성공이라고 판단될 때까지, 복수의 독출 데이터들(DTR1, DTR2)을 순차적으로 이용하여 단일 ECC 디코딩을 수행할(S12, S15) 수 있고, 독출 데이터들(DTR1, DTR2)의 모두에 대해 상기 단일 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 병합 ECC 디코딩(S18)을 수행할 수 있다. 도 13에는 편의상 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)만을 도시하였으나, 3개 이상의 독출 데이터들에 대하여 단일 ECC 디코딩이 수행될 수도 있다.
도 14, 15 및 16은 본 발명의 실시예들에 따른 ECC 제어 방법이 적용될 수 있는 멀티 레벨 셀들의 독출 시퀀스의 일 예를 설명하기 위한 도면들이다.
도 14는 각 메모리 셀이 3 비트의 데이터를 저장하는 TLC(triple level cell)의 제1 내지 제8 상태들(S1~S8)이 도시되어 있다. 도 14에서 가로축은 메모리 셀의 문턱 전압(VTH)을 나타내고 세로축은 문턱 전압(VTH)에 상응하는 메모리 셀의 개수를 나타낸다. 제1 내지 제8 상태들(S1~S8)은 제1 내지 제7 독출 전압들(VR1~VR7)을 선택 워드 라인에 순차적으로 인가함으로써 판별될 수 있다.
도 15에는 제1 내지 제8 상태들(S1~S8)의 예시적인 비트 값들이 도시되어 있다. 제1 내지 제8 상태들(S1~S8)은 제1, 제2 및 제3 비트들(BT1, BT2, BT3)로 이루어진 서로 다른 값 'BT3 BT2 BT2'으로 구별될 수 있다. 예를 들어, 도 15에 예시된 바와 같이 제1 상태(S1)는 '111'에 상응하고, 제2 상태(S2)는 '110'에 상응하고, 제3 상태(S3)는 '100'에 상응하고, 제4 상태(S4)는 '000'에 상응하고, 제5 상태(S5)는 '010'에 상응하고, 제6 상태(S6)는 '011'에 상응하고, 제7 상태(S7)는 '001'에 상응하고, 제8 상태(S1)는 '101'에 상응할 수 있다.
이 경우, 제1 비트(BT1)를 판독하기 위해서는 제1 독출 전압(VR1) 및 제5 독출 전압(VR5)이 이용되고, 제2 비트(BT2)를 판독하기 위해서는 제2 독출 전압(VR2), 제4 독출 전압(VR4) 및 제6 독출 전압(VR6)이 이용되고, 제3 비트(BT3)를 판독하기 위해서는 제3 독출 전압(VR3) 및 제7 독출 전압(VR7)이 이용된다.
도 16은 도 15의 예에 상응하는 하이-투-로우(high-to-low) 독출 시퀀스를 나타내는 도면이다.
제1 비트(BT1)의 독출 동작의 경우에는 제5 독출 전압(VR5) 및 제1 독출 전압(VR1)이 순차적으로 선택 워드라인에 인가될 수 있다.
제2 비트(BT2)의 독출 동작의 경우에는 제6 독출 전압(VR6), 제4 독출 전압(VR4) 및 제2 독출 전압(VR2)이 순차적으로 선택 워드라인에 인가될 수 있다.
제3 비트(BT3)의 독출 동작의 경우에는 제7 독출 전압(VR7) 및 제3 독출 전압(VR3)이 순차적으로 선택 워드라인에 인가될 수 있다.
이하 각 메모리 셀이 3비트의 데이터를 저장하는 TLC에 대하여 본 발명의 실시예들에 따른 메모리 장치의 ECC 제어 방법을 설명하나, 당업자는 본 발명이 2비트 또는 4비트 이상의 데이터를 저장하는 임의의 MLC(multiple level cell)에 대해서도 적용될 수 있음을 이해할 것이다.
TLC 제품의 경우 하나의 메모리 셀에 3bit를 저장할 수 있고 S1~S8 8개의 산포 영역으로 구분하여 데이터를 저장한다. NAND 셀의 열화 방향 특성으로 인해 소거 상태에 해당하는 S1 영역은 오른쪽으로 올라오게 되고 S6~S8 영역은 왼쪽으로 내려오게 된다. TLC 상태에서도 마찬가지로 동일한 기입 데이터를 복수의 저장 영역들에 프로그램할 수 있다. 제1 비트(BT1)의 독출 데이터들에 대해 논리합 연산을 하게 되면 S1 산포는 좌측으로 몰리게 되고 S6~S8 산포는 우측으로 올리게 되는 효과를 얻게 된다. 마찬가지로, 제3 비트(BT3)의 독출 데이터들에 대해 논리합 연산을 하게 되면 S1~S3 산포는 좌측으로 몰리게 되고 S8 산포는 우측으로 올리게 되는 효과를 얻게 된다. 제2 비트(BT2)의 경우 1 또는 0 데이터가 연속되지 않는 상황이지만 NAND 메모리 셀의 열화 특성으로 인하여 S2의 교란(Disturb)이 올라오는 것보다 S7의 리텐션(Retention)이 더 큰 것이 일반적이기 때문에 '논리곱 연산을 함으로써 0에 상응하는 S7 및 S8 산포를 우측으로 올리는 것이 이득이 되는 방향이다.
도 17을 참조하여 후술하는 바와 같이, 복수의 독출 데이터들의 에러 타입을 판별하고, 상기 에러 타입의 판별 결과에 기초하여 논리합 데이터(DTOR)에 기초한 병합 ECC 디코딩 및 논리곱 데이터(DTAND)에 기초한 상기 병합 ECC 디코딩 중 하나만을 수행할 수 있다.
도 17은 본 발명의 실시예들에 따른 에러 유형에 기초한 병합 ECC 디코딩을 나타내는 순서도이다.
제1 에러 타입(TYPE1) 및 제2 에러 타입(TYPE2) 중에서 복수의 독출 데이터들의 에러 타입을 판별하고 상기 에러 타입의 판별 결과에 기초하여 병합 ECC 디코딩을 수행할 수 있다. 여기서, 제1 에러 타입(TYPE)은 1의 값이 0의 값으로 잘못 독출되는 0-에러의 비율이 0의 값이 1의 값으로 잘못 독출되는 1-에러의 비율보다 큰 에러 타입에 해당하고, 제2 에러 타입은 상기 0-에러 비율이 상기 1-에러 비율보다 작은 에러 타입에 해당한다.
도 17을 참조하면, 독출 데이터들이 제1 에러 타입인 경우(S31: TYPE1), 독출 데이터들을 비트 단위로 논리합 연산하여 논리합 데이터(DTOR)를 제공하고(S32), 논리합 데이터(DTOR)에 기초하여 병합 ECC 디코딩을 수행한다(S33).
논리합 데이터(DTOR)에 기초한 병합 ECC 디코딩 결과 에러 정정이 가능한 경우(S34: YES), 패스 처리를 하고(S38) 에러 정정이 종료된다. 논리합 데이터(DTOR)에 기초한 병합 ECC 디코딩 결과 에러 정정이 불가능한 경우(S34: NO), 페일 처리를 하고(S39) 에러 정정이 종료된다.
독출 데이터들이 제2 에러 타입인 경우(S31: TYPE2), 독출 데이터들을 비트 단위로 논리곱 연산하여 논리곱 데이터(DTAND)를 제공하고(S35), 논리곱 데이터(DTAND)에 기초하여 병합 ECC 디코딩을 수행한다(S36).
논리곱 데이터(DTAND)에 기초한 병합 ECC 디코딩 결과 에러 정정이 가능한 경우(S37: YES), 패스 처리를 하고(S40) 에러 정정이 종료된다. 논리곱 데이터(DTAND)에 기초한 병합 ECC 디코딩 결과 에러 정정이 불가능한 경우(S37: NO), 페일 처리를 하고(S39) 에러 정정이 종료된다.
도 18은 0-에러의 비율 및 1-에러의 비율을 설명하기 위한 도면이다.
도 18을 참조하면, 인접한 두 개의 상태들(Sa, Sb)의 산포는 서로 중첩될 수 있다. 이러한 현상은 열화가 심하거나, MLC과 같이 상태들의 개수가 많아서 상태들 사이의 간격 마진 확보가 곤란한 경우에 발생한다. 이 경우, 소프트 디시젼, 하드 디시젼 등의 방법을 통하여 인접한 두 개의 상태들(Sa, Sb)의 밸리(valley)에 상응하는 전압을 디폴트 독출 전압(VR)으로 설정할 수 있다.
도 18을 참조하면, 디폴트 독출 전압(VR)에 기초하여 독출 데이터를 독출한 경우, 0-에러 비율(ER01) 및 1-에러 비율(ER11)이 각각 빗금 친 부분의 면적으로 표현될 수 있다. 0-에러 비율(ER01) 및 1-에러 비율(ER11)은 실질적으로 동일한 것으로 간주될 수 있다.
도 19a, 19b, 20a 및 20b는 독출 조건 변경 및 병합 ECC 디코딩의 일 실시예를 설명하기 위한 도면들이다.
도 19a 및 19b는 디폴트 독출 전압(VR)에 기초하여 2개의 독출 데이터들을 독출하고, 상기 2개의 독출 데이터들을 논리합 연산한 경우의 에러 비율을 나타낸다. 도 2a 내지 도 3d을 참조하여 설명한 바와 같이, 도 19a의 빗금 친 부분의 면적은 논리합 데이터의 0-에러 비율(ER02)에 해당하고, 도 19b의 빗금 친 부분의 면적은 논리합 데이터의 1-에러 비율(ER12)에 해당한다.
도 20a 및 20b는 디폴트 독출 전압(VR)과 비교하여 1의 값에 상응하는 상태(Sa) 방향으로 변경된 제1 변경 독출 전압(VRa)에 기초하여 2개의 독출 데이터들을 독출하고, 상기 2개의 독출 데이터들을 논리합 연산한 경우의 에러 비율을 나타낸다. 도 2a 내지 도 3d을 참조하여 설명한 바와 같이, 도 20a의 빗금 친 부분의 면적은 논리합 데이터의 0-에러 비율(ER03)에 해당하고, 도 20b의 빗금 친 부분의 면적은 논리합 데이터의 1-에러 비율(ER13)에 해당한다.
디폴트 독출 전압(VR)을 제1 변경 독출 전압(VRa)으로 변경하는 경우, 0-에러 비율은 도 19a의 ER02에서 도 20a의 ER03으로 증가하지만 1-에러 비율은 도 19b의 ER12에서 도 20b의 ER13으로 더욱 감소한다. 따라서, 제1 변경 독출 전압(VRa)에 상응하는 총 에러 비율(ER03+ER13)은 디폴트 독출 전압(VR)에 상응하는 총 에러 비율(ER02+ER12)보다 감소한다. 다시 말해서, 논리합 데이터를 이용하여 병합 ECC 디코딩을 수행하는 경우에는 0-에러 비율이 증가하는 방향으로 독출 전압을 변경하는 것이 유리함을 알 수 있다.
도 21a, 21b, 22a 및 22b는 독출 조건 변경 및 병합 ECC 디코딩의 다른 실시예를 설명하기 위한 도면들이다.
도 21a 및 21b는 디폴트 독출 전압(VR)에 기초하여 2개의 독출 데이터들을 독출하고, 상기 2개의 독출 데이터들을 논리곱 연산한 경우의 에러 비율을 나타낸다. 도 2a 내지 도 3d을 참조하여 설명한 바와 같이, 도 21a의 빗금 친 부분의 면적은 논리곱 데이터의 0-에러 비율(ER04)에 해당하고, 도 21b의 빗금 친 부분의 면적은 논리곱 데이터의 1-에러 비율(ER14)에 해당한다.
도 22a 및 22b는 디폴트 독출 전압(VR)과 비교하여 0의 값에 상응하는 상태(Sb) 방향으로 변경된 제2 변경 독출 전압(VRb)에 기초하여 2개의 독출 데이터들을 독출하고, 상기 2개의 독출 데이터들을 논리곱 연산한 경우의 에러 비율을 나타낸다. 도 2a 내지 도 3d을 참조하여 설명한 바와 같이, 도 22a의 빗금 친 부분의 면적은 논리합 데이터의 0-에러 비율(ER05)에 해당하고, 도 22b의 빗금 친 부분의 면적은 논리합 데이터의 1-에러 비율(ER15)에 해당한다.
디폴트 독출 전압(VR)을 제2 변경 독출 전압(VRb)으로 변경하는 경우, 1-에러 비율은 도 21b의 ER14에서 도 22b의 ER15로 증가하지만 0-에러 비율은 도 21a의 ER04에서 도 22a의 ER05로 더욱 감소한다. 따라서, 제2 변경 독출 전압(VRb)에 상응하는 총 에러 비율(ER05+ER15)은 디폴트 독출 전압(VR)에 상응하는 총 에러 비율(ER04+ER14)보다 감소한다. 다시 말해서, 논리곱 데이터를 이용하여 병합 ECC 디코딩을 수행하는 경우에는 1-에러 비율이 증가하는 방향으로 독출 전압을 변경하는 것이 유리함을 알 수 있다.
도 23은 멀티-레벨 셀에 대한 독출 조건 변경의 실시예들을 설명하기 위한 도면이다.
도 23에는 도 15의 제1 비트(BT1)를 독출하기 위한 독출 전압들이 도시되어 있다.
만약 디폴트 전압들(VR1, VR5)을 이용하여 복수의 독출 데이터들을 독출하고 전술한 단일 ECC 디코딩 및 병합 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 독출 전압을 변경하고, 전술한 병합 ECC 디코딩을 수행할 수 있다. 즉, 상기 변경된 독출 전압에 기초하여 상기 복수의 저장 영역들의 각각으로부터 복수의 보정 독출 데이터들을 독출하고, 상기 복수의 보정 독출 데이터들을 논리 연산하여 보정 논리 연산 데이터를 제공하고, 상기 보정 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행할 수 있다.
일 실시예에서, 도 19a, 19b, 20a 및 20b를 참조하여 설명한 바와 같이, 논리합 데이터를 이용하여 병합 ECC 디코딩을 수행하는 경우에는 0-에러 비율이 증가하는 방향으로 독출 전압을 변경할 수 있다. 즉, 디폴트 독출 전압들(VR1, VR5)로부터 0-에러의 비율이 증가하는 방향으로 변경된 독출 전압들(VR1, VR5)에 기초하여 복수의 보정 독출 데이터들을 독출하고, 상기 복수의 보정 독출 데이터들을 비트 단위로 논리합 연산하여 보정 논리합 데이터를 제공하고, 상기 보정 논리합 데이터에 기초한 병합 ECC 디코딩을 수행할 수 있다.
다른 실시예에서, 도 21a, 21b, 22a 및 22b를 참조하여 설명한 바와 같이, 논리곱 데이터를 이용하여 병합 ECC 디코딩을 수행하는 경우에는 1-에러 비율이 증가하는 방향으로 독출 전압을 변경할 수 있다. 즉, 디폴트 독출 전압들(VR1, VR5)로부터 1-에러의 비율이 증가하는 방향으로 변경된 독출 전압들(VR1', VR5')에 기초하여 복수의 보정 독출 데이터들을 독출하고, 상기 복수의 보정 독출 데이터들을 비트 단위로 논리곱 연산하여 보정 논리곱 데이터를 제공하고, 상기 보정 논리곱 데이터에 기초한 병합 ECC 디코딩을 수행할 수 있다.
도 24는 본 발명의 실시예들에 따른 독출 조건 변경 및 병합 ECC 디코딩을 나타내는 순서도이다.
도 24를 참조하면, 제1 독출 조건(RCON1)을 설정하고(S51), 제1 독출 조건(RCON1)에 기초하여 독출 데이터들(DTR11, DTR12)를 독출한다(S52). 제1 독출 조건(RCON1)은 도 19a, 19b, 20a 및 20b를 참조하여 설명한 바와 같이, 0-에러 비율이 증가하는 방향으로 변경된 독출 전압을 포함할 수 있다.
독출 데이터들(DTR11, DTR12)를 비트 단위로 논리합 연산하여 논리합 데이터(DTOR)를 제공하고 논리합 데이터(DTOR)에 기초하여 병합 ECC 디코딩을 수행한다(S53).
논리합 데이터(DTOR)에 기초한 병합 ECC 디코딩 결과 에러 정정이 가능한 경우(S54: YES), 패스 처리를 하고(S39) 에러 정정이 종료된다. 논리합 데이터(DTOR)에 기초한 병합 ECC 디코딩 결과 에러 정정이 불가능한 경우(S54: NO), 페일 처리를 하고(S60) 에러 정정이 종료된다.
한편, 제2 독출 조건(RCON2)을 설정하고(S55), 제2 독출 조건(RCON2)에 기초하여 독출 데이터들(DTR21, DTR22)를 독출한다(S56). 제2 독출 조건(RCON1)은 도 21a, 21b, 22a 및 22b를 참조하여 설명한 바와 같이, 1-에러 비율이 증가하는 방향으로 변경된 독출 전압을 포함할 수 있다.
독출 데이터들(DTR21, DTR22)를 비트 단위로 논리곱 연산하여 논리곱 데이터(DTAND)를 제공하고 논리곱 데이터(DTAND)에 기초하여 병합 ECC 디코딩을 수행한다(S57).
논리곱 데이터(DTAND)에 기초한 병합 ECC 디코딩 결과 에러 정정이 가능한 경우(S58: YES), 패스 처리를 하고(S70) 에러 정정이 종료된다. 논리곱 데이터(DTAND)에 기초한 병합 ECC 디코딩 결과 에러 정정이 불가능한 경우(S58: NO), 페일 처리를 하고(S60) 에러 정정이 종료된다.
도 25a 및 25b는 에러 유형에 따른 병합 ECC 디코딩의 에러 비율을 나타내는 도면들이다.
도 25a는 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 열화 특성이 같은 경우에 해당하고, 도 25b는 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)의 열화 특성이 다른 경우에 해당한다.
도 25a 및 25b에서, 컬럼들(CL1~CL15)은 각각 상응하는 비율들을 나타낸다. 11은 1의 값이 1로 바르게 읽히는 경우를 나타내고, 10은 1의 값이 0으로 잘못 읽히는 경우, 즉 0-에러의 경우를 나타내고, 01은 0의 값이 1로 잘못 읽히는 경우, 즉 1-에러의 경우를 나타내고, 00은 0의 값이 0으로 바르게 읽히는 경우를 나타낸다. CL5는 논리 연산을 수행하지 않는 경우(NO LO)의 각 독출 데이터의 총 에러 비율(ER1)를 나타내고, CL14는 논리합 연산을 수행한 경우(OR)의 총 에러 비율(ER2)을 나타내고, CL15는 논리곱 연산을 수행한 경우(AND)의 총 에러 비율(ER3)을 나타낸다.
도 25a를 참조하면, 독출 데이터의 1-에러 비율과 0-에러 비율이 동일한 제3 경우(CASE3)에는 논리 연산에 의한 개선 효과가 없고, 독출 데이터의 1-에러가 증가하는 제2 경우(CASE2) 및 제1 경우(CASE1)에는 논리합 연산의 개선 효과가 증가하고, 독출 데이터의 0-에러가 증가하는 제4 경우(CASE4) 및 제5 경우(CASE5)에는 논리곱 연산의 개선 효과가 증가함을 알 수 있다.
도 25b를 참조하면, 독출 데이터의 1-에러 비율과 0-에러 비율이 각각 100%인 제 4 경우(CASE4)에는 논리 연산에 의한 개선 효과가 없고 제3 경우(CASE3), 제2 경우(CASE2), 제1 경우(CASE1)로 갈수로 논리합 연산의 개선 효과가 증가함을 알 수 있다.
도 26은 본 발명의 실시예들에 따른 에스에스디(SSD: solid state disk or solid state drive)를 나타내는 블록도이다.
도 26을 참조하면, SSD(1000)는 복수의 비휘발성 메모리 장치들(1100) 및 SSD 제어기(1200)를 포함한다.
비휘발성 메모리 장치들(1100)은 옵션적으로 외부 고전압(VPP)을 제공받도록 구현될 수 있다.
SSD 제어기(1200)는 복수의 채널들(CH1~CH4)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. SSD 제어기(1200)는 적어도 하나의 프로세서(1210), 버퍼 메모리(1220), 에러 정정 회로(1230), 호스트 인터페이스(1250) 및 비휘발성 메모리 인터페이스(1260)를 포함한다. 버퍼 메모리(1220)는 메모리 제어기(1200)의 구동에 필요한 데이터를 임시로 저장할 수 있다. 또한, 버퍼 메모리(1220)는 기입 요청시 프로그램 동작에 이용될 데이터를 버퍼링할 수 있다. 에러 정정 회로(1230)는 기입 동작에서 프로그램될 데이터의 에러 정정 코드 값을 계산하고, 독출 동작에서 읽혀진 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정하고, 데이터 복구 동작에서 비휘발성 메모리 장치(1100)로부터 복구된 데이터의 에러를 정정할 수 있다.
비휘발성 메모리 장치들(1100)은 전술한 바와 같이, 동일한 기입 데이터를 복수의 저장 영역들에 저장하고 에러 정정 회로(1230)는 복수의 독출 데이터들을 논리 연산하여 ECC 디코딩을 수행함으로써 에러 정정의 성공 확률을 향상시킬 수 있다.
본 발명의 실시예들에 따른 비휘발성 메모리 장치의 ECC 제어 방법 및 이를 수행하는 메모리 시스템은, 서로 다른 저장 영역들로부터의 복수의 독출 데이터들에 대한 동시 불량인 경우에도 상기 복수의 독출 데이터들을 논리 연산하여 발생되는 논리 연산 데이터에 기초한 병합 ECC 디코딩을 통하여 불량 구제율을 높이고 비휘발성 메모리의 수율, 신뢰성 및 수명을 향상시킬 수 있다.
이상, 제1 독출 데이터(DTR1) 및 제2 독출 데이터(DTR2)를 논리 연산하여 ECC를 제어하는 실시예들을 중심으로 본 발명의 실시예들을 설명하였으나, 본 발명은 동일한 기입 데이터를 3개 이상을 저장 영역들에 각각 저장하고, 이로부터 3개 이상의 독출 데이터를 독출하여 논리 연산하는 방식으로 구현될 수도 있음을 이해할 것이다.
일 실시예에서, 세 개 이상의 독출 데이터들을 모두 논리합 연산하거나 논리곱 연산하여 병합 ECC 디코딩을 위한 논리 연산 데이터를 제공할 수 있다.
다른 실시예에서, 네 개 이상의 독출 데이터 중 두 개의 독출 데이터들은 논리합 연산에 이용하고 다른 두 개의 독출 데이터들은 논리곱 연산에 이용할 수 있다.
본 발명의 실시예들은 에러 정정이 요구되는 메모리 장치 및 이를 포함하는 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 오류 체크 및 정정(ECC) 인코딩을 수행하여 생성된 동일한 기입 데이터를 비휘발성 메모리 장치의 복수의 저장 영역들에 각각 기입하는 단계;
    상기 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들의 각각에 기초한 단일 ECC 디코딩을 수행하는 단계;
    상기 복수의 독출 데이터들의 모두에 대해 상기 단일 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 상기 복수의 독출 데이터들을 논리 연산하여 논리 연산 데이터를 제공하는 단계; 및
    상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행하는 단계를 포함하고,
    상기 논리 연산 데이터를 제공하는 단계는,
    상기 복수의 독출 데이터들을 비트 단위로 논리합 연산하여 논리합 데이터를 제공하는 단계; 및
    상기 복수의 독출 데이터들을 비트 단위로 논리곱 연산하여 논리곱 데이터를 제공하는 단계 중 적어도 하나를 포함하는 비휘발성 메모리 장치의 ECC 제어 방법.
  2. 삭제
  3. 제1 항에 있어서,
    상기 복수의 독출 데이터들의 에러 특성에 관계 없이 상기 논리합 데이터에 기초한 상기 병합 ECC 디코딩 및 상기 논리곱 데이터 기초한 상기 병합 ECC 디코딩을 수행하는 것을 특징으로 하는 비휘발성 메모리 장치의 ECC 제어 방법.
  4. 제1 항에 있어서,
    1의 값이 0의 값으로 잘못 독출되는 0-에러의 비율이 0의 값이 1의 값으로 잘못 독출되는 1-에러의 비율보다 큰 제1 에러 타입 및 상기 0-에러의 비율이 상기 1-에러의 비율보다 작은 제2 에러 타입 중에서 상기 복수의 독출 데이터들의 에러 타입을 판별하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 ECC 제어 방법.
  5. 제4 항에 있어서
    상기 에러 타입의 판별 결과에 기초하여 상기 논리합 데이터에 기초한 상기 병합 ECC 디코딩 및 상기 논리곱 데이터에 기초한 상기 병합 ECC 디코딩 중 하나만을 수행하는 것을 특징으로 하는 비휘발성 메모리 장치의 ECC 제어 방법.
  6. 제5 항에 있어서,
    상기 복수의 독출 데이터들이 상기 제1 에러 타입인 경우, 상기 논리합 데이터에 기초한 상기 병합 ECC 디코딩을 수행하는 것을 특징으로 하는 비휘발성 메모리 장치의 ECC 제어 방법.
  7. 제5 항에 있어서,
    상기 복수의 독출 데이터들이 상기 제2 에러 타입인 경우, 상기 논리곱 데이터에 기초한 상기 병합 ECC 디코딩을 수행하는 것을 특징으로 하는 비휘발성 메모리 장치의 ECC 제어 방법.
  8. 오류 체크 및 정정(ECC) 인코딩을 수행하여 생성된 동일한 기입 데이터를 비휘발성 메모리 장치의 복수의 저장 영역들에 각각 기입하는 단계;
    상기 복수의 저장 영역들의 각각으로부터 독출된 복수의 독출 데이터들의 각각에 기초한 단일 ECC 디코딩을 수행하는 단계;
    상기 복수의 독출 데이터들의 모두에 대해 상기 단일 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 상기 복수의 독출 데이터들을 논리 연산하여 논리 연산 데이터를 제공하는 단계; 및
    상기 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행하는 단계;
    상기 병합 ECC 디코딩을 수행한 결과 에러 정정 불능이라고 판단된 경우, 독출 전압을 변경하는 단계;
    상기 변경된 독출 전압에 기초하여 상기 복수의 저장 영역들의 각각으로부터 복수의 보정 독출 데이터들을 독출하는 단계;
    상기 복수의 보정 독출 데이터들을 논리 연산하여 보정 논리 연산 데이터를 제공하는 단계; 및
    상기 보정 논리 연산 데이터에 기초한 병합 ECC 디코딩을 수행하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 ECC 제어 방법.
  9. 제8 항에 있어서,
    상기 독출 전압을 변경하는 단계는,
    1의 값이 0의 값으로 잘못 독출되는 0-에러의 비율이 증가하도록 독출 전압을 변경하는 단계를 포함하고,
    상기 복수의 보정 독출 데이터들을 비트 단위로 논리합 연산하여 보정 논리합 데이터를 제공하고, 상기 보정 논리합 데이터에 기초한 병합 ECC 디코딩을 수행하는 것을 특징으로 하는 비휘발성 메모리 장치의 ECC 제어 방법.
  10. 제8 항에 있어서,
    상기 독출 전압을 변경하는 단계는,
    0의 값이 1의 값으로 잘못 독출되는 1-에러의 비율이 증가하도록 독출 전압을 변경하는 단계를 포함하고,
    상기 복수의 보정 독출 데이터들을 비트 단위로 논리곱 연산하여 보정 논리곱 데이터를 제공하고, 상기 보정 논리곱 데이터에 기초한 병합 ECC 디코딩을 수행하는 것을 특징으로 하는 비휘발성 메모리 장치의 ECC 제어 방법.
KR1020170091656A 2017-07-19 2017-07-19 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템 KR102326659B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170091656A KR102326659B1 (ko) 2017-07-19 2017-07-19 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템
US15/901,175 US10635532B2 (en) 2017-07-19 2018-02-21 Method of controlling error check and correction (ECC) of non-volatile memory device and memory system performing the same
CN201810691199.5A CN109285582B (zh) 2017-07-19 2018-06-28 存储器系统、非暂时性计算机可读介质及错误校验与校正的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170091656A KR102326659B1 (ko) 2017-07-19 2017-07-19 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20190009630A KR20190009630A (ko) 2019-01-29
KR102326659B1 true KR102326659B1 (ko) 2021-11-16

Family

ID=65019048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170091656A KR102326659B1 (ko) 2017-07-19 2017-07-19 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템

Country Status (3)

Country Link
US (1) US10635532B2 (ko)
KR (1) KR102326659B1 (ko)
CN (1) CN109285582B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747614B2 (en) * 2018-07-23 2020-08-18 Micron Technology, Inc. Hybrid iterative error correcting and redundancy decoding operations for memory sub-systems
CN110136769B (zh) * 2019-04-16 2020-11-24 珠海市杰理科技股份有限公司 Otp寄存器数据修正方法、装置、计算机设备和存储介质
CN111984458B (zh) * 2019-05-23 2023-07-07 建兴储存科技(广州)有限公司 使用预测方程式的固态储存装置
CN110277131B (zh) * 2019-05-30 2021-03-23 百富计算机技术(深圳)有限公司 基于nand flash存储器的校验方法、终端设备及存储介质
KR20210092986A (ko) * 2020-01-17 2021-07-27 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법
JP7018089B2 (ja) * 2020-04-02 2022-02-09 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および読出し方法
CN113517018B (zh) * 2020-04-10 2024-04-12 华邦电子股份有限公司 存储器装置的测试方法
CN111755052A (zh) * 2020-07-30 2020-10-09 西安紫光国芯半导体有限公司 非易失性存储器、非易失性存储器系统及读取和写入方法
KR102404257B1 (ko) 2020-12-23 2022-06-02 청주대학교 산학협력단 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120324314A1 (en) 2011-06-17 2012-12-20 Texas Instruments Incorporated Low Power Retention Random Access Memory with Error Correction on Wake-Up
US20140380130A1 (en) 2009-05-18 2014-12-25 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method to increase data integrity in a redundant storage system
US20160110255A1 (en) 2014-10-15 2016-04-21 Samsung Electronics Co., Ltd. Data storage system, data storage device and raid controller
US20170075757A1 (en) 2015-09-14 2017-03-16 Jae-Woo Im Memory device and method of controlling ecc operation in the same

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4457019B2 (ja) 2005-01-05 2010-04-28 富士通株式会社 情報処理システム及び一次ストレージ装置
KR100609540B1 (ko) 2005-03-18 2006-08-08 주식회사 하이닉스반도체 불량 셀 처리 회로를 포함하는 불휘발성 강유전체 메모리장치 및 제어 방법
KR100935889B1 (ko) 2007-05-29 2010-01-07 삼성전자주식회사 플래시 메모리 장치에서의 e - fuse 데이터 저장 방법
US20090055906A1 (en) * 2007-08-20 2009-02-26 Infineon Technologies Ag Method and apparatus for embedded memory security
US8291181B2 (en) 2008-10-28 2012-10-16 Micron Technology, Inc. Temporary mirroring, logical segregation, and redundant programming or addressing for solid state drive operation
US8412987B2 (en) * 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
JP5644795B2 (ja) 2012-03-12 2014-12-24 日本電気株式会社 ストレージ装置、データ復旧方法およびプログラム
US8972824B1 (en) * 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US9280431B2 (en) 2013-04-17 2016-03-08 Globalfoundries Inc. Prioritizing backups on a disk level within enterprise storage
US9563502B1 (en) * 2013-12-20 2017-02-07 Seagate Technology Llc Read retry operations with read reference voltages ranked for different page populations of a memory
KR20150084244A (ko) * 2014-01-13 2015-07-22 삼성전자주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법
US9396068B2 (en) 2014-04-17 2016-07-19 International Business Machines Corporation Adaptive rebuild scheduling scheme
KR20170075065A (ko) * 2015-12-22 2017-07-03 에스케이하이닉스 주식회사 메모리 시스템 동작 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140380130A1 (en) 2009-05-18 2014-12-25 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method to increase data integrity in a redundant storage system
US20120324314A1 (en) 2011-06-17 2012-12-20 Texas Instruments Incorporated Low Power Retention Random Access Memory with Error Correction on Wake-Up
US20160110255A1 (en) 2014-10-15 2016-04-21 Samsung Electronics Co., Ltd. Data storage system, data storage device and raid controller
US20170075757A1 (en) 2015-09-14 2017-03-16 Jae-Woo Im Memory device and method of controlling ecc operation in the same

Also Published As

Publication number Publication date
US20190026181A1 (en) 2019-01-24
US10635532B2 (en) 2020-04-28
CN109285582A (zh) 2019-01-29
KR20190009630A (ko) 2019-01-29
CN109285582B (zh) 2023-11-07

Similar Documents

Publication Publication Date Title
KR102326659B1 (ko) 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템
CN107093465B (zh) 包括电压搜索单元的数据存储器装置
CN108573722B (zh) 操作非易失性存储器件的方法和非易失性存储器件
KR101618311B1 (ko) 플래시 메모리 장치 및 그것의 읽기 방법
US7508704B2 (en) Non-volatile semiconductor storage system
US8059463B2 (en) Method for generating soft bits in flash memories
KR101518033B1 (ko) 멀티-레벨 비휘발성 메모리 장치, 상기 장치를 포함하는 메모리 시스템 및 그 동작 방법
KR101979734B1 (ko) 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
US9177660B2 (en) Method of operating memory device
KR102284658B1 (ko) 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 상기 비휘발성 메모리 장치의 동작 방법
US10706944B2 (en) Memory controller for controlling memory device based on erase state information and method of operating the memory controller
KR20150130636A (ko) 3차원 메모리 장치 및 그것을 포함하는 저장 장치
JP2013089082A (ja) メモリコントローラ、半導体記憶システムおよびメモリ制御方法
KR20190094968A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20150107575A (ko) 반도체 기억장치 및 nand 플래시 메모리의 프로그램 방법
US8218371B2 (en) Multi-bit flash memory device and method of analyzing flag cells of the same
CN104103318A (zh) 操作存储控制器的方法和包括存储控制器的数据存储设备
CN109559777B (zh) 非易失性存储装置及其操作方法
CN113010459A (zh) 存储器系统、存储器控制器以及操作存储器系统的方法
KR20210062845A (ko) 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터
US11249848B2 (en) Error check code (ECC) decoder and memory system including ECC decoder
CN114913908A (zh) 存储设备和操作存储设备的方法
KR20170032144A (ko) 메모리 장치의 에러 체크 및 정정(ecc) 제어 방법 및 이를 수행하는 메모리 장치
KR20210092986A (ko) 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법
CN111309517A (zh) 操作存储设备的方法和存储设备

Legal Events

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