KR102005709B1 - 메모리 장치 구동 방법 및 메모리 시스템 - Google Patents

메모리 장치 구동 방법 및 메모리 시스템 Download PDF

Info

Publication number
KR102005709B1
KR102005709B1 KR1020120117371A KR20120117371A KR102005709B1 KR 102005709 B1 KR102005709 B1 KR 102005709B1 KR 1020120117371 A KR1020120117371 A KR 1020120117371A KR 20120117371 A KR20120117371 A KR 20120117371A KR 102005709 B1 KR102005709 B1 KR 102005709B1
Authority
KR
South Korea
Prior art keywords
bit data
data
state
memory cells
programmed
Prior art date
Application number
KR1020120117371A
Other languages
English (en)
Other versions
KR20140052181A (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 KR1020120117371A priority Critical patent/KR102005709B1/ko
Priority to US14/052,834 priority patent/US9098391B2/en
Publication of KR20140052181A publication Critical patent/KR20140052181A/ko
Application granted granted Critical
Publication of KR102005709B1 publication Critical patent/KR102005709B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input 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/10Programming or data input 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/10Programming or data input circuits
    • G11C16/12Programming voltage switching 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

메모리 구동 방법이 제공된다. 메모리 구동 방법은, 복수의 메모리셀에 제1 비트 데이터를 프로그램하고, 상기 제1 비트 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하고, 상기 복수의 메모리셀에 프로그램될 제2 비트 데이터를 제공받고, 상기 제2 비트 데이터를 제1 처리하여 복수의 제3 비트 데이터를 산출하고, 상기 복수의 제3 비트 데이터 중, 상기 각 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램했을 경우 상기 대상 메모리셀의 상태가 상기 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수가 최대가 되는 제3 비트 데이터를 결정하고, 상기 결정된 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램하는 것을 포함한다.

Description

메모리 장치 구동 방법 및 메모리 시스템{A method of operating the memory device and the memory system}
본 발명은 메모리 장치 구동 방법에 관한 것이다.
메모리 장치는 휘발성(volatile) 메모리 장치와 비휘발성(non-volatile) 메모리 장치로 분류된다. 휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등을 포함한다. 그러나, 비휘발성 메모리 장치는 전원이 제거되더라도 데이터는 유지된다.
비휘발성 메모리 장치의 예로서 플래시 메모리 장치, ROM(Read Only Memory), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 저항성 메모리 장치(예를 들어, PRAM(Phase-change RAM), FRAM(Ferroelectric RAM), RRAM(Resistive RAM)) 등이 있다.
플래시 메모리 장치는 블록(block) 단위로 전기적 소거(electric erase) 동작을 수행하고 비트 단위로 프로그램 동작을 수행할 수 있다.
플래시 메모리 장치에 포함된 프로그램된 다수개의 메모리 셀들의 문턱 전압들(threshold voltages)은 여러 가지 원인, 예컨대 플로팅 게이트 커플링 (floating gate coupling), 시간의 경과에 따른 전하 손실(charge loss), 등에 따라 변할 수 있다.
다수의 메모리 셀들의 문턱 전압들의 변화는 리드 데이터의 신뢰성 (reliability)을 악화시킬 수 있다.
본 발명이 해결하려는 과제는 리드 데이터의 신뢰성을 향상시키는 메모리 장치 구동 방법을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는 리드 데이터의 신뢰성을 향상시키는 메모리 시스템을 제공하는 것이다.본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 메모리 구동방법의 일 태양은 복수의 메모리셀에 제1 비트 데이터를 프로그램하고, 상기 제1 비트 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하고, 상기 복수의 메모리셀에 프로그램될 제2 비트 데이터를 제공받고, 상기 제2 비트 데이터를 제1 처리하여 복수의 제3 비트 데이터를 산출하고, 상기 복수의 제3 비트 데이터 중, 상기 각 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램했을 경우 상기 대상 메모리셀의 상태가 상기 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수가 최대가 되는 제3 비트 데이터를 결정하고, 상기 결정된 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램하는 것을 포함한다.
상기 일 메모리 구동방법의 일 태양에서, 상기 제2 비트 데이터는 MSB(Most Significant Bit) 데이터일 수 있고, 상기 제1 상태는 소거 상태일 수 있다. 또한, 상기 제2 비트 데이터를 제1 처리하여 복수의 제3 비트 데이터를 산출하는 것은, 상기 제2 비트 데이터를 미리 정한 복수의 마스크와 제1 연산하여 복수의 제3 비트 데이터를 산출하는 것을 포함할 수 있고, 상기 제3 비트 데이터를 산출한 상기 마스크의 어드레스를 상기 복수의 메모리셀에 프로그램하는 것을 더 포함할 수 있다. 또한, 상기 복수의 메모리 셀은 데이터 영역과 스페어 영역을 포함하고, 상기 결정된 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램하는 것은, 상기 결정된 제3 비트 데이터로 상기 데이터 영역을 프로그램하는 것을 포함하고, 상기 제3 비트 데이터를 산출한 상기 마스크의 어드레스를 상기 복수의 메모리셀에 프로그램하는 것은, 상기 제3 비트 데이터를 산출한 상기 마스크의 어드레스를 상기 스페어 영역에 프로그램하는 것을 포함할 수 있다.
한편, 상기 결정된 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램한 후에, 상기 제3 비트 데이터를 리드하고, 상기 제3 비트 데이터를 제2 처리하여 상기 제2 비트 데이터로 복구한 후 이를 출력하는 것을 포함할 수 있고, 상기 제1 연산 및 상기 제2 연산은 XOR연산일 수 있으며, 상기 제3 비트 데이터를 상기 복수의 메모리셀에 프로그램하기 전에, 상기 제3 비트 데이터에 대하여 ECC(Error Correcting Code) 인코딩을 수행하는 것과 상기 제3 비트 데이터를 리드하기 전에, 상기 제3 비트 데이터에 대하여 ECC 디코딩하는 것을 더 포함할 수 있다.
상기 제1 비트 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하는 것은, 상기 제1 비트 데이터를 n(여기서, n은 자연수)개의 제1 분할 데이터로 분할하고, 상기 제1 분할 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하는 것을 포함하고, 상기 제2비트 데이터를 제1 처리하여 복수의 제3 비트 데이터를 산출하는 것은, 상기 제2 비트 데이터를 n개의 제2 분할 데이터로 분할하고, 상기 제2 분할 데이터를 제3 처리하여 복수의 제3 분할 데이터를 산출하는 것을 포함하고, 상기 제3 비트 데이터를 결정하는 것은, 상기 복수의 제3 분할 데이터 중, 상기 각 제3 분할 데이터로 상기 복수의 메모리셀을 프로그램했을 경우 상기 대상 메모리셀의 상태가 상기 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수가 최대가 되는 제3 선택 분할 데이터를 결정하고, 상기 n개의 제2 분할 데이터 각각에 대하여 상기 제3 선택 분할 데이터를 결정하고, 상기 n개의 제3 선택 분할 데이터를 결합하여 제3 비트 데이터를 결정하는 것을 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 메모리 시스템은 복수의 메모리셀을 포함하는 비휘발성 메모리 장치, 상기 복수의 메모리셀에 프로그램되는 제1 비트 데이터와 제2 비트 데이터를 입력받는 입출력 장치 및 상기 비휘발성 메모리 장치를 제어하는 컨트롤러를 포함하며, 상기 비휘발성 메모리 장치는 상기 제1 비트 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하는 컨트롤 로직을 포함하고, 상기 컨트롤러는 상기 제2 비트 데이터와 제1 연산하는 복수의 마스크가 저장된 롬과, 상기 제2 비트 데이터와 상기 복수의 마스크가 상기 제1 연산하여 산출된 복수의 제3 비트 데이터를 저장하는 램과, 상기 제2 비트 데이터를 상기 복수의 마스크와 상기 제1 연산하여 상기 복수의 제3 비트 데이터를 산출하는 마이크로프로세서와, 상기 복수의 제3 비트 데이터 중에서 상기 각 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램했을 경우 상기 대상 메모리셀의 상태가 상기 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수를 카운트하고 상기 카운트 결과를 상기 마이크로프로세서로 제공하는 카운터를 포함하며, 상기 마이크로프로세서는 상기 카운트 결과를 참조하여, 변경되는 메모리셀의 개수가 최대가 되는 제3 비트 데이터를 선택하여 상기 비휘발성 메모리 장치에 프로그램한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 반도체 메모리 구동 방법의 순서도이다.
도 2는 제1 전압보다 큰 대상 메모리셀을 판별하는 모습을 도시한 예시도이다.
도 3은 제2 상태를 설명하는 도면이다.
도 4는 도 1의 S500에 대한 상세 순서도이다.
도 5는 하나의 페이지를 도시한 도면이다.
도 6은 페이지별 문턱 전압 산포 그래프이다.
도 7은 메모리셀을 프로그램할 때 오류가 발생하는 이유를 설명하기 위한 도면이다.
도 8은 제2 비트 데이터를 복수의 메모리셀에 프로그램하는 방법에 대한 흐름도이다.
도 9는 데이터 복원 과정에 대한 순서도이다.
도 10은 마스크 개수에 따른 프로그램 오류 감소 효과를 나타낸 그래프이다.
도 11은 본 발명의 다른 실시예에 따른 메모리 구동 방법의 순서도이다.
도 12는 데이터 복원 과정의 순서도이다.
도 13은 본 발명의 일 실시예에 따른 메모리 시스템의 블록도이다.
도 14는 도 13의 메모리셀 어레이의 한 페이지를 도시한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니된다.
본 발명의 개념에 따른 실시예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1 내지 도 8을 참조하여 메모리 구동방법에 대해 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 반도체 메모리 구동방법의 순서도이며, 도 2는 제1 전압보다 큰 대상 메모리셀을 판별하는 모습을 도시한 예시도이고, 도 3은 제2 상태를 설명하는 도면이고, 도 4는 도 1의 S500에 대한 상세 순서도이고, 도 5는 하나의 페이지를 도시한 도면이다.
도 6 및 도 7은 본 발명의 효과를 설명하는 도면으로, 도 6은 페이지별 문턱 전압 산포 그래프이고, 도 7은 메모리셀을 프로그램할 때 오류가 발생하는 이유를 설명하기 위한 도면이다.
도 8은 제2 비트 데이터를 복수의 메모리셀에 프로그램하는 방법에 대한 흐름도이다.
도 1을 참조하면, 먼저 복수의 메모리셀에 제1 비트 데이터를 프로그램한다(S100). 복수의 메모리셀은 셀 당 q(여기서, q는 자연수) 비트를 저장할 수 있다. 예를 들어, 복수의 메모리셀에는 셀 당 3 개의 비트, LSB(Least Significant Bit), CSB(Central Significant Bit), MSB(Most Significant Bit)가 차례대로 프로그램될 수 있으나, 이에 제한되지는 않는다.
한편, 제1 비트 데이터는 최상위 비트(MSB)를 제외한 다른 비트 데이터일 수 있다. 예를 들어, 제1 비트 데이터는 LSB 데이터 또는 CSB 데이터일 수 있다.
다시 도 1을 참조하면, 상기 제1 비트 데이터로 프로그램된 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별한다(S200).
여기서 제1 상태란 소거 상태(E, erase state)일 수도 있고, 프로그램 상태(P, program state)일 수도 있다. MLC(multi level cell)일 경우 복수의 프로그램 상태를 가질 수 있는데, 이 경우 제1 상태는 복수의 프로그램 상태(예를 들어, P1, P2, P3 등) 또는 소거 상태(E)를 의미할 수 있다.
소거 상태의 문턱 전압 산포는 다른 프로그램 상태보다 넓기 때문에 프로그램할 때 오류가 발생하는 확률이 높으므로 제1 상태가 소거 상태를 의미한다면 프로그램 시에 발생하는 오류를 훨씬 많이 줄일 수 있다.
제1 상태에 있는 복수의 메모리셀 중에서 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별한다. 예를 들어, 도 2를 참조하면, x축은 전압을 나타내고, y축은 메모리셀의 개수를 나타낸다, 메모리셀의 문턱 전압(Vth)과 제1 전압(V1)을 비교한다. 메모리셀의 문턱 전압(Vth)이 제1 전압(V1) 보다 클 경우, 메모리셀이 제1 부분 분포(10a)에 해당하는 것으로 판단될 수 있다. 제1 부분 분포(10a)는 도 2에 도시된 바와 같이 소거 상태 분포(E)(10)의 일부일 수 있으나, 이에 한정되지 않는다. 예를 들어, 제1 부분 분포(10a)는 프로그램 상태 분포(예를 들어, P1, P2, P3 등)의 일부일 수 있다.
판별한 결과, 복수의 메모리셀 중에서 제1 전압(V1) 이상의 문턱 전압이 없는 경우, 제2 비트 데이터를 그대로 복수의 메모리셀에 프로그램하면 된다. 그러나 복수의 메무리셀 중에서 적어도 하나 이상의 메모리셀이 제1 전압(V1) 이상의 문턱 전압을 갖는다고 판별된 경우, 하기의 과정을 진행할 수 있다. 앞으로, 제1 비트 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 S로 부르기로 한다.
제1 전압(V1)은 어느 값으로 특정되지 않으며, 메모리의 특성, 용도 등에 따라 임의로 정할 수 있다.
다시 도 1을 참조하면, 복수의 메모리셀에 프로그램될 제2 비트 데이터를 제공받는다(S300). 제2 비트 데이터는 제1 비트 데이터 다음에 복수의 메모리셀에 프로그램되는 데이터를 의미할 수 있다. 예를 들어, 제1 비트 데이터가 q번째 프로그램되는 데이터면, 제2 비트 데이터는 q+1번째 프로그램되는 데이터일 수 있다.
제2 비트 데이터는 MSB 데이터일 수 있다. MSB 데이터의 경우, 문턱 전압 산포가 다른 데이터보다 넓게 나타나고, 문턱 전압 산포 사이의 간격이 좁아 문턱 전압 산포가 서로 겹치는 경우가 발생할 수 있다. 따라서, 제2 비트 데이터가 MSB 데이터인 경우, 에러 확률을 좀더 크게 감소시킬 수 있다. 이는 추후 자세히 설명하기로 한다.
이어서, 제2 비트 데이터를 제1 처리하여 복수의 제3 비트 데이터를 산출한다(S400).
제1 처리는 제2 비트 데이터를 이용하여 복수의 제3 비트 데이터를 산출하기 위한 처리 과정일 수 있다. 예를 들어, 제공 받은 제2 비트 데이터를 복수의 마스크와 제1 연산하여 복수의 제3 비트 데이터를 산출할 수 있다. 복수의 마스크는 제3 비트 데이터를 산출하는 데에 사용되며 제2 비트 데이터와 비트 수가 같을 수 있다. 제3 비트 데이터를 산출할 때마다 복수의 마스크를 생성할 수도 있으나, 복수의 마스크를 미리 정해 놓은 경우 프로그램할 때마다 복수의 마스크를 생성할 필요가 없어 프로그램하는 시간이 단축될 수 있다. 마스크의 개수는 정해져 있지 않으나, 많을수록 본 발명의 목적에 부합할 수 있으며 그 이유는 추후 서술하기로 한다.
이어서, 복수의 제3 비트 데이터 중, 각 제3 비트 데이터로 복수의 메모리셀을 프로그램했을 경우 대상 메모리셀의 상태가 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수가 최대가 되는 제3 비트 데이터를 결정한다(S500).
제2 상태는 S의 상태가 바뀐 것을 말한다. 즉, 제1 상태가 아닌 상태를 의미한다. 예를 들어, 제1 상태가 소거 상태인 경우 제2 상태는 프로그램 상태를 의미하고, 제1 상태가 프로그램 상태인 경우 제2 상태는 다른 프로그램 상태인 경우를 의미할 수 있다. 구체적으로, 도 3을 참조하면, 제1 비트 데이터가 LSB 데이터인 경우 제3 비트 데이터는 CSB 데이터일 수 있다. 제1 비트 데이터는 제1 LSB 상태 L1 또는 제2 LSB 상태 L2로 프로그램될 수 있으며, 제3 비트 데이터는 제1 CSB 상태 C1 내지 제4 CSB 상태 C4로 프로그램될 수 있다. 이 때, 제1 LSB 상태 L1은 제1 CSB 상태 C1 또는 제2 CSB 상태 C2로 프로그램될 수 있으며 제2 LSB 상태 L2는 제3 CSB 상태 C3 또는 제4 CSB 상태 C4로 프로그램될 수 있다. 이 때, 제1 상태가 제1 LSB 상태 L1 또는 제2 LSB 상태 L2이면 제2 상태는 제1 상태 각각에 대하여 제2 CSB 상태 C2와 제4 CSB 상태 C4를 의미할 수 있다. 이와 마찬가지로, 제1 비트 데이터가 CSB 데이터이며 제3 비트 데이터는 MSB 데이터이고, 제1 상태가 제1 CSB 상태 C1 내지 제4 CSB 상태 C4이면, 제2 상태는 제1 상태 각각에 대하여 제2 MSB 상태 M2, 제4 MSB 상태 M4, 제6 MSB 상태 M6, 제8 MSB 상태 M8일 수 있다.
도 4를 참조하면, 제3 비트 데이터로 복수의 메모리셀을 프로그램했을 경우 대상 메모리셀의 상태가 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수를 카운트한다(S501). 이하에서, 제3 비트 데이터로 복수의 메모리셀을 프로그램했을 때, 대상 메모리셀의 상태가 제1 상태에서 제2 상태로 변경되는 메모리셀을 U라고 한다.
다음으로, 복수의 제3 비트 데이터를 생성한 뒤, 복수의 제3 비트 데이터 각각에 대하여 U의 개수를 카운트하고, U의 개수가 최대가 되는 제3 비트 데이터를 결정한다(S503).
이어서, 결정된 제3 비트 데이터로 복수의 메모리셀을 프로그램한다(S600). 즉, 제2 비트 데이터가 아닌 제3 비트 데이터로 복수의 메모리셀을 프로그램을 할 수 있다.
또한, 결정된 제3 비트 데이터를 프로그램할 때, 결정된 제3 비트 데이터를 산출한 마스크의 어드레스를 복수의 메모리셀에 프로그램할 수 있다. 구체적으로, 도 5를 참조하면, 복수의 메모리셀(20)은 실제 데이터가 저장되는 데이터 영역(21)과 메타 데이터, 기타 데이터 이외의 옵션 정보 또는 플래그 정보 등이 저장되는 스페어 영역(23)을 포함할 수 있다. 여기서, 결정된 제3 비트 데이터는 데이터 영역(21)에 프로그램될 수 있고 결정된 제3 비트 데이터를 산출한 마스크의 어드레스는 스페어 영역에 프로그램될 수 있다.
U의 개수가 최대가 되는 제3 비트 데이터를 산출한 마스크의 어드레스를 복수의 메모리 셀에 프로그램하면, 미리 정한 복수의 마스크 중에서 어떤 마스크를 사용했는지를 알 수 있고, 데이터 리드 시에 원본 데이터인 제2 데이터를 복구할 때 용이할 수 있다.
한편, 제2 비트 데이터를 S와 비교하여 U=0인 경우에는, 제3 비트 데이터를 산출할 필요없이 제2 비트 데이터를 복수의 메모리셀에 프로그램할 수 있다.
도 6 내지 도 7을 참조하여 제3 비트 데이터로 프로그램할 때의 효과에 대하여 설명하기로 한다.
도 6을 참조하면, 일반적으로 MLC에서는 하나의 메모리셀에 복수 개의 데이터가 프로그램(E, P1 내지 P7)될 수 있다. 집적도의 증가로 인접 셀과의 간격이 좁아지고 이에 따라 소거 상태나 프로그램 상태로 프로그램된 메모리셀들은 상호 간섭을 미치게 된다. 도 6에 도시된 바와 같이, LSB 데이터는 문턱 전압 산포 사이의 간격이 넓으나 CSB 데이터, MSB 데이터로 갈수록 문턱 전압 산포 사이의 간격이 좁아지고 서로 겹쳐질 수 있다. 특히, MSB 데이터의 경우, 소거 상태(E)의 문턱 전압 산포가 넓고 프로그램 상태(P1 내지 P7)의 문턱 전압 산포 사이의 간격이 좁다. 또한, 소거 상태(E)의 경우, 문턱 전압 산포가 넓기 때문에 인접 셀과 겹쳐질 확률이 커지고 커플링(coupling), 디스터브(disturb) 등이 발생할 확률이 높다.
한편, 복수의 메모리셀은 반복적인 사용에 의해서도 문턱 전압 산포가 변경될 수 있다. 반복적인 사용에 의해 복수의 메모리셀은 열화(degraded)될 수 있으며, 메모리셀의 열화에 의해 문턱 전압 산포가 넓어지거나 좌우로 이동할 수 있다. 결국, 복수의 메모리셀 각각의 문턱 전압 산포가 겹쳐질 수 있다.
도 6에서는 MLC에 대해서만 설명하였으나, SLC(single level cell)에서도 MLC와 마찬가지로 반복적인 사용에 의해 복수의 메모리셀이 열화될 수 있으며, 이에 의해 문턱 전압 산포가 넓어지거나 좌우로 이동하여 소거 상태와 프로그램 상태의 문턱 전압 산포가 겹쳐질 수 있다.
프로그램할 때 오류가 발생하는 현상을 도 7을 참조하여 설명하기로 한다. 다만, 도 7에서는 설명의 편의를 위하여 소거 상태에서 프로그램 상태로 이동하는 것을 도시하였으나, 본 발명은 이에 제한되지 않으며 프로그램 상태에서 다른 프로그램 상태로 상태 이동하는 경우에도 동일한 현상이 발생할 수 있다.
소거 상태 분포의 위쪽 부분에 해당하는 메모리 셀의 문턱 전압은, 인접 셀과의 커플링(coupling), 디스터브(disturb) 등에 의해서 프로그램 상태 분포 쪽으로 이동하기 쉽다. 예를 들어, 문턱 전압이 제1 전압(V1) 보다 큰 제1 부분 분포(11a)에 위치한다고 가정하자. 다음 비트 데이터에서, 소거 상태(E)가 프로그램 상태(P)로 상태 이동을 하는 경우, 아무런 문제 없이 프로그램 상태(P)로 프로그램될 수 있다. 그러나 다음 비트 데이터에서 다시 소거 상태(E)를 유지하는 경우, 소거 상태(E)와 프로그램 상태(P) 사이 또는 소거 상태(E)와 프로그램 상태(P)가 겹치는 부분(A 부분)에 프로그램될 수 있기 때문에, 메모리셀에 프로그램하는데 오류가 발생한다. 즉, 소거 상태(E)로 프로그램되어야 하나 프로그램 상태(P)로 프로그램될 수 있고, 추후 데이터 리드 시에 프로그램 상태(P)로 인식할 수 있다. 이와 같은 오류의 발생은 메모리셀이 열화되거나, 문턱 전압 산포가 넓어지거나 좌우로 이동한 경우에 빈번하게 발생할 수 있다. 특히, 문턱 전압 산포가 넓은 소거 상태(E)에서, 또는 문턱 전압 산포 사이가 좁은 MSB 데이터에서 프로그램할 때 오류가 더 크게 발생할 수 있다. 따라서 본 발명과 같이 제2 상태로 변경되는 메모리셀의 개수가 최대가 되는 제3 비트 데이터를 프로그램한다면, 원하지 않은 상태로 프로그램되는 경우를 감소시킬 수 있다.
도 8을 참조하여, 본 발명의 일 실시예에 따른 일 예를 설명하기로 한다.
제1 비트 데이터와 제2 비트 데이터가 [표1]과 같고 제1 상태는 소거 상태이고 S=3 이라고 가정하였다(S는 MC4, MC6 및 MC8). 소거 상태를 ‘1’, 프로그램 상태를 ‘0’으로 표시하였다. MC1 내지 MC8은 메모리셀을 나타낸다.
메모리셀 MC1 MC2 MC3 MC4 MC5 MC6 MC7 MC8
제1 비트 데이터 1 0 0 1 1 1 0 1 S=3
제2 비트 데이터(D) 1 1 0 0 0 1 1 1
제1 비트 데이터에서 S=0이 아니고 S=3 이기 때문에 제2 비트 데이터를 바로 프로그램하지 않고 U의 개수를 판단한다.
제2 비트 데이터를 S와 비교하면 ‘1’에서 ‘0’으로 변경된 메모리셀이 하나 이므로 U=1이다. 전부 변경되지 않았으므로 미리 정해진 마스크(M1, M2, M3)와 제1 연산을 한다. M1, M2, M3는 [표2]와 같다.
메모리셀
마스크
MC1 MC2 MC3 MC4 MC5 MC6 MC7 MC8
M1 1 0 1 0 0 0 1 0
M2 1 1 0 0 1 1 0 1
M3 0 0 1 1 0 1 0 1
상기의 마스크와 제2 비트 데이터에 대하여 제1 연산을 한다. 제1 연산은 XOR연산을 하기로 한다. 연산하여 산출한 복수의 제3 비트 데이터(X1, X2, X3)는 [표3]과 같다.
메모리셀

제3 비트 데이터
MC1 MC2 MC3 MC4 MC5 MC6 MC7 MC8
D xor M1 = X1 0 1 1 0 0 1 0 1 U=1
D xor M2 = X2 0 0 0 0 0 0 1 0 U=3
D xor M3 = X3 1 1 1 1 0 0 1 0 U=2
제1 비트 데이터 1 0 0 1 1 1 0 1
제3 비트 데이터(X1, X2, X3)를 제1 비트 데이터와 비교하면, 제1 상태에서 제2 상태로 변경된 개수가 최대인 제3 비트 데이터는 X2로 U=3이다. 따라서 X2를 선택하고, 제1 비트 데이터 다음에 X2로 프로그램한다. 또한, X2로 프로그램하면서 X2의 어드레스도 같이 프로그램할 수 있다.
도 9를 참고하여 데이터 복원 과정을 설명하기로 한다. 도 9는 데이터 복원 과정에 대한 순서도이다.
결정된 제3 비트 데이터로 복수의 메모리셀을 프로그램한 후에, 결정된 제3 비트 데이터를 리드한다(S700). 이어서, 제3 비트 데이터를 제2 처리하여 제2 비트 데이터로 복구한 후 이를 출력한다(S800). 제2 처리는 복수의 메모리셀에 프로그램된 제3 비트 데이터를 제2 비트 데이터로 복구하기 위한 처리 과정이다. 예를 들어, 결정된 제3 비트 데이터를 산출하는데 사용된 마스크와 결정된 제3 비트 데이터를 제2 연산하여 제2 비트 데이터를 복구할 수 있다. 제2 연산은 제2 비트 데이터로 복구할 수 있다면 어느 연산이든 상관없다. 결정된 제3 비트 데이터를 복수의 메모리셀에 프로그램할 때, 결정된 제3 비트 데이터를 산출한 마스크의 어드레스도 같이 프로그램할 수 있으므로, 프로그램된 마스크의 어드레스를 이용하여 결정된 제3 비트 데이터를 산출하는데 사용된 마스크를 불러올 수 있다.
여기서, 제1 연산 및 제2 연산은 XOR 연산일 수 있다. 제1 연산으로 XOR 연산을 사용하여 제3 비트 데이터를 산출하면, 제2 연산에서도 XOR 연산을 그대로 사용하여 제2 비트 데이터로 바로 복구가 가능하다.
한편, 제3 비트 데이터를 복수의 메모리셀에 프로그램하기 전에, 제3 비트 데이터에 대하여 ECC(Error Correcting Code) 인코딩을 수행하고, 제3 비트 데이터를 리드하기 전에, 상기 제3 비트 데이터에 대하여 ECC 디코딩할 수 있다. ECC 인코딩, ECC 디코딩을 수행하여 데이터 전송 도중에 발생하는 오류를 방지하여 데이터의 신뢰성 및 정확성을 확보할 수 있다.
도 10을 참조하여, 마스크의 개수가 프로그램 에러 감소에 미치는 효과에 대하여 설명하기로 한다. 도 10은 마스크 개수에 따른 프로그램 오류 감소 효과를 나타낸 그래프이다.
도 10은 원본 데이터의 크기가 2^13(8192) 비트이고 그 중에 S= 80일 때, 마스크의 개수에 따른 평균 U의 변화를 도시한 그래프이다. x축은 마스크의 개수, y축은 평균 U의 개수를 나타낸다. 마스크가 존재하지 않으면 평균적으로 U = 40(S의 50%)의 개수를 갖는다. 도 10에 도시된 바와 같이, 마스크의 개수가 증가할수록 U의 개수가 증가한다. 마스크가 2^10개가 되면 평균적으로 U = 55(S의 68.75%)까지 증가한다.
도 11 및 도12를 참조하여 본 발명의 다른 실시예에 따른 메모리 구동 방법에 대하여 설명하기로 한다. 설명의 편의를 위해, 상술한 것과 동일한 내용은 생략하기로 하며, 본 별명의 일 실시예와 차이점을 위주로 설명하기로 한다.
도 11은 본 발명의 다른 실시예에 따른 메모리 구동 방법의 순서도이고, 도 12는 데이터 복원 과정의 순서도이다.
먼저, 복수의 메모리셀에 제1 비트 데이터를 프로그램하고(S110), 제1 비트 데이터를 n(여기서, n은 자연수)개의 제1 분할 데이터로 분할한다(S210). 그리고 제1 분할 데이터로 프로그램된 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별한다(S220). 즉, 본 발명의 일 실시예와 달리 제1 비트 데이터가 아닌 제1 분할 데이터에 대하여 S가 존재하는지 판별한다. 제1 분할 데이터가 프로그램된 복수의 메모리셀 중에서, S가 존재하지 않으면 제2 분할 데이터를 프로그램하면 되나, S가 존재한다면 다음의 과정을 거친다.
이어서, 제2 비트 데이터를 제공받고(S310), 제2 비트 데이터를 제2 분할 데이터로 분할(S410)하고, 제2 분할 데이터를 제3 처리하여 복수의 제3 분할 데이터를 산출한다(S420). 제2 분할 데이터는 제2 비트 데이터를 n개로 분할하여 만든다. 제3 처리는 복수의 마스크와 제2 분할 데이터를 제1 연산하는 것을 의미할 수 있다. 이 때, 복수의 마스크는 본 발명의 일 실시예와 달리 제2 비트 데이터가 아닌 제2 분할 데이터와 같은 비트 수를 가질 수 있다.
이어서, 제3 처리를 통해 산출한 복수의 제3 분할 데이터 중에서, 각 제3 분할 데이터로 상기 복수의 메모리셀을 프로그램했을 경우 대상 메모리셀의 상태가 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수가 최대가 되는 제3 선택 분할 데이터를 결정한다(S510). 즉, 복수의 제3 분할 데이터 중에서 U의 개수가 가장 큰 제 3 선택 분할 데이터를 결정한다.
이어서, n개의 제2 분할 데이터 각각에 대하여 제3 선택 분할 데이터를 결정한다(S520). 제2 분할 데이터가 n개 이므로 n개의 제3 선택 분할 데이터를 결정할 수 있다. 다음으로, n개의 제3 선택 분할 데이터를 결합하여 제3 비트 데이터를 결정한다(S530). 제3 비트 데이터는 제2 비트 데이터와 크기가 같다. 마지막으로, 결정된 제3 비트 데이터를 복수의 메모리셀에 프로그램한다(S610).
본 발명의 일 실시예와 달리 제1 비트 데이터 및 제2 비트 데이터를 n개로 분할하는 이유는, 마스크의 크기 및 U의 개수를 늘리기 위함이다. 제1 비트 데이터 및 제2 비트 데이터의 크기가 크면 클수록 마스크의 크기가 커진다. 또한, U의 개수를 증가시키기 위해서는 마스크의 개수를 증가시켜야 하므로 마스크의 크기 및 개수가 커지면 마스크가 차지하는 메모리 용량이 증가한다. 따라서 마스크의 용량 및 크기를 감소시키면서 U의 개수를 증가시키기 위하여, 제1 비트 데이터 및 제2 비트 데이터를 n개로 분할하여 크기가 작은 제1 분할 데이터 및 제2 분할 데이터로 만들고, 제1 분할 데이터 및 제2 분할 데이터와 크기가 같은 복수의 마스크를 이용한다.
한편, 본 발명의 일 실시예에서와 같이 제2 비트 데이터는 MSB 데이터일 수 있고, 제1 상태는 소거 상태일 수 있으며, 제1 연산은 XOR연산일 수 있다. 또한 복수의 메모리셀에 제3 비트 데이터 프로그램 시, n개의 제3 선택 분할 데이터를 산출하는데 사용된 n개의 마스크의 어드레스도 프로그램할 수 있다.
도 12를 참조하여 본 발명의 다른 실시예에 따른 데이터 복원 과정에 대하여 설명하기로 한다.
결정된 제3 비트 데이터로 복수의 메모리셀을 프로그램한 후에, 결정된 제3 비트 데이터를 리드한다(S710). 이어서, 제3 비트 데이터를 제3 비트 데이터로 결합되기 전의 n개의 제3 분할 데이터로 분할한다(S810). 제3 분할 데이터로 분할한 후, n개의 제3 분할 데이터 각각을 제4 처리하여 제2 분할 데이터로 복구한다(S820). 제4 처리는 제3 분할 데이터를 제2 분할 데이터로 복구하기 위한 처리 과정이다. 제4 처리는, 예를 들어, 제3 선택 분할 데이터를 산출하는데 사용된 마스크와 제3 선택 분할 데이터를 제2 연산하여 제2 분할 데이터를 복구할 수 있다. 제3 비트 데이터를 복수의 메모리셀에 프로그램할 때, n개의 제3 선택 분할 데이터를 산출한 n개의 마스크 어드레스도 같이 프로그램할 수 있으므로, 프로그램된 n개의 마스크의 어드레스를 이용하여 제3 선택 분할 데이터를 산출하는데 사용된 마스크를 불러올 수 있다. 여기서 제2 연산은 XOR 연산일 수 있다.
이어서, n개의 제2 분할 데이터를 제2 비트 데이터로 결합한 후 제2 비트 데이터를 출력한다(S830). 제2 비트 데이터는 복수의 메모리셀에 프로그램되었어야 할 원본 데이터이다.
한편, 데이터의 신뢰성 확보를 위하여, 제3 비트 데이터 프로그램하기 전에 ECC 인코딩을 하고 제3 비트 데이터 리딩하기 전에 ECC 디코딩을 실시할 수 있다.
도 13 및 도 14를 참조하여 본 발명의 일 실시예에 따른 메모리 시스템에 대하여 설명하기로 한다. 상술한 것과 중복되는 내용은 생략하기로 한다.
도 13은 본 발명의 일실시예에 따른 메모리 시스템의 블록도이고, 도 14는 도 13의 메모리셀 어레이의 한 페이지를 도시한 도면이다.
도 13을 참조하면, 메모리 시스템(100)은 컨트롤러(110), 비휘발성 메모리 장치(120) 및 입출력 장치(130)를 포함한다. 비휘발성 메모리 장치(120)는 예를 들어, 낸드 플래시 메모리 장치, 노어 플래시 메모리 장치 등일 수 있으나, 이에 한정되는 것은 아니다. 비휘발성 메모리 장치(120)는 평면 구조의 메모리 셀 구조 및 적층으로 형성된 3차원 메모리 셀 구조 등을 포함할 수 있다.
비휘발성 메모리 장치(120)는 셀 어레이(122), X-decoder(행선택회로, 121), 전압발생회로(125), 입출력 패드(Input/output pad, 127) 입출력 버퍼(Input output buffer, 124), 페이지 버퍼(123), 컨트롤 로직(126)을 포함할 수 있다.
메모리 셀 어레이(122)는 복수의 메모리 셀, 다수의 워드라인(W/L) 및 다수의 비트라인(B/L)을 포함하며, 각 메모리 셀은 1-비트 데이터 또는 M-비트(멀티-비트) 데이터(M은 2 또는 그 보다 큰 자연수)를 저장할 수 있다.
메모리 셀 어레이(122)는 다수의 블록 및 다수의 페이지를 포함 할 수 있다. 하나의 블록은 다수의 페이지를 포함한다. 페이지는 프로그램 및 리드 동작시 단위가 될 수 있으며, 블록은 이레이즈(erase) 동작의 단위가 될 수 있다. 리드는 하나의 페이지에 프로그램된 데이터를 리드하는 것이다.
메모리 셀 어레이(122)는 단층 어레이 구조(single-layer array structure)(또는, 2차원 어레이 구조라고 불림) 또는 다층 어레이 구조(multi-layer array structure)(또는, 3차원 어레이 구조라고 불림)로 구현될 수 있다.
메모리 셀 어레이(122)에는 제1 비트 데이터와 제2 비트 데이터 또는 제1 비트 데이터와 제3 비트 데이터가 프로그램될 수 있고, 추가적으로 제3 비트 데이터를 산출하는데 사용된 마스크의 어드레스가 저장되는 복수의 메모리셀을 더 포함할 수 있다. 도 14를 참조하면, 메모리 셀 어레이(122)에서의 하나의 페이지(60)는 데이터 영역(60-1)과 스페어 영역(60-2)를 포함할 수 있다. 데이터 영역(60-1)에는 호스트가 제공해준 데이터를 저장 할 수 있고, 스페어 영역(60-2)는 데이터 영역(60-1)의 데이터에 관련된 메타 데이터, 타임 스탬프 데이터 등을 저장 할 수 있다. 제1 비트 데이터 내지 제3 비트 데이터는 데이터 영역(60-1)에, 제3 비트 데이터를 산출하는데 사용된 마스크의 어드레스는 스페어 영역(60-2)에 저장될 수 있다.
다시 도 13을 참조하면, 컨트롤 로직(126)은 비휘발성 메모리 장치(120)의 동작을 전반적으로 제어한다. 컨트롤러(110)로부터 명령어(CMD)가 입력되면, 컨트롤 로직(126)은 명령어(CMD)를 해석하고 비휘발성 메모리 장치(120)가 해석된 명령어에 따른 동작, 예컨대 프로그램 동작, 리드 동작, 리드 리트라이(read retry) 동작, 이레이즈(erase) 동작 등을 수행 하도록 한다. 또한, 컨트롤 로직(126)은 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별할 수 있다. 따라서, 컨트롤 로직(126)은 판별된 대상 메모리셀의 위치 및 개수에 대한 정보를 저장할 수 있다.
X-디코더(121)는 컨트롤 로직(126)에 의해서 제어되며, 로우 어드레스에 따라 메모리 셀 어레이(122)에 구현된 다수의 워드 라인들 중에서 적어도 하나의 워드 라인을 구동한다.
전압발생회로(125)는 컨트롤 로직(126)의 제어에 따라 프로그램 동작, 대상 메모리셀 판별 동작 또는 이레이즈 동작에 필요한 적어도 하나의 전압을 생성하고, X- 디코더(121)에 의하여 선택된 적어도 하나의 전압을 공급한다.
레지스터(128)는 컨트롤러(110)로부터 입력되는 정보들을 저장하는 공간이며, 다수의 래치(latch)들을 포함할 수 있다. 예를 들어, 레지스터(128)는 리드 전압 정보를 그룹핑하여 테이블로 형성한 정보를 저장할 수 있다.
페이지 버퍼 회로(123)는 컨트롤 로직(126)에 의해서 제어되며, 동작 모드, 예컨대 리드 동작 또는 프로그램 동작에 따라 감지 증폭기로서 또는 라이트 드라이버로서 동작한다.
입출력 패드(127), 입출력 버퍼(124)는 외부 장치, 예컨대 컨트롤러(110)와 비휘발성 메모리 장치(120)사이에서 주고 받는 데이터의 입출력 경로가 될 수 있다.
컨트롤러(110)는 마이크로프로세서(microprocessor, 111), 롬(ROM, 113), 램(RAM, 112), ECC 디코더(ECC decoder, 115), ECC 인코더(ECC encoder, 114), 메모리 인터페이스(116), 카운터(117), 버스(118)를 포함 할 수 있다. 상기 컨트롤러(110)의 구성요소들(111, 112, 113, 114, 115, 116, 117))은 상기 버스(118)를 통하여 서로 전기적으로 연결될 수 있다.
마이크로프로세서(111)는 컨트롤러(110)를 포함한 메모리 시스템(100)의 동작을 전반적으로 제어한다. 메모리 시스템(100)에 전원이 인가되면, 마이크로 프로세서(111)는 롬(113)에 저장된 상기 메모리 시스템(100) 동작을 위한 펌웨어(firmware)를 램(112)상에서 구동시킴으로써 상기 메모리 시스템(100)의 전반적인 동작을 제어할 수 있다.
도 13에서 상기 메모리 시스템(100)의 구동 펌웨어 코드는 롬(113)에 저장되나 본 발명의 범위가 이에 한정되는 것은 아니다. 펌웨어 코드는 롬(113)이외의 다양한 비휘발성 메모리 장치(120)에 저장될 수도 있다. 따라서, 마이크로프로세서(111)의 제어 또는 개입이란, 마이크로 프로세서(111)의 직접적 제어뿐만 아니라, 마이크로프로세서(111)에 의해서 구동되는 소프트웨어인 펌웨어의 간섭도 포함 할 수 있다.
한편, 롬(113)에는 미리 정해진 복수의 마스크가 저장될 수 있다. 마이크로프로세서(111)는 롬(113)에 저장된 복수의 마스크를 이용하여 제2 비트 데이터와 복수의 마스크를 제1 연산하여 복수의 제3 비트 데이터를 산출할 수 있다.
롬(113)에는 미리 정해진 복수의 마스크가 전부 저장될 수 있으나, 서로 다른 비트 패턴을 갖는 마스크만이 저장될 수도 있다. 예를 들어, [표4]와 같이, 3개의 메모리셀(MC1 내지 MC3)을 갖는 마스크(M11 내지 M17)가 존재한다고 하자. 복수의 제3 비트 데이터를 산출하기 위하여 제2 비트 데이터와 <표4>의 M11 내지 M17 각각을 제1 연산할 수 있다.
메모리셀
마스크
MC1 MC2 MC3
M11 0 0 1
M12 0 1 0
M13 1 0 0
M14 0 1 1
M15 1 0 1
M16 1 1 0
M17 1 1 1
이 때, 롬(113)에 [표4]의 M11 내지 M17 전부를 저장할 수 있으나, 그러면 롬(113)에서 차지하는 마스크의 용량이 커지는 문제가 있다. 따라서, [표4]에서 소거 상태(“1”)가 하나인 M11 내지 M13을 제1 비트 패턴으로, 소거 상태가 두 개인 M14 내지 M16을 제2 비트 패턴으로, 소거 상태가 세 개인 M17을 제3 비트 패턴으로 그룹핑하여 각각의 그룹에서 하나의 마스크만 롬(113)에 저장할 수 있다. 예를 들어, 제1 비트 패턴에서는 M11, 제2 비트 패턴에서는 M14, 제3 비트 패턴에서는 M17을 선택하여 마스크 3개만 롬(113)에 저장할 수 있다. M11이 롬(113)에 저장되어 있으면 비트 시프팅(shifting)을 통해서 제1 비트 패턴 전부를 생성할 수 있고, M14이 롬(113)에 저장되어 있으면 시프팅을 통해서 제2 비트 패턴 전부를 생성할 수 있다. 결국, 롬(113)에서 복수의 마스크가 차지하는 용량을 줄이면서도 복수의 마스크 전체가 롬(113)에 저장되어 있는 것과 동일한 효과를 가져올 수 있다.
램(112)은 버퍼(buffer)역할을 하는 메모리로, 호스트로부터 입력되는 최초 명령어, 데이터, 각종 변수들 또는 비휘발성 메모리 장치(120)로부터 출력되는 데이터들을 저장할 수 있고, 비휘발성 메모리 장치(120)로 입력되고 출력되는 데이터, 각종 파라미터 및 변수들을 저장할 수 있다. 예를 들어, 램(112)은 제1 비트 데이터, 제2 비트 데이터, 제1 연산, 제2 연산 및 제2 비트 데이터와 복수의 마스크가 제1 연산하여 산출된 복수의 제3 비트 데이터 등을 저장할 수 있다.
메모리 인터페이스(116)는 컨트롤러(110)와 비휘발성 메모리 장치(120) 사이의 인터페이스를 수행할 수 있다. 메모리 인터페이스(116)는 비휘발성 메모리 장치(120)의 I/O 패드(127)와 연결되어 있으며, 데이터를 주고 받을 수 있다. 또한 메모리 인터페이스(116)는 비휘발성 메모리에 적합한 명령어를 형성하고 I/O 패드(127)에 비휘발성 메모리 장치(120)에 적합한 명령어를 제공할 수 있다. 메모리 인터페이스(116)는 비휘발성 메모리 장치(120)가 수행하고자 하는 명령어와 비휘발성 메모리 장치(120)의 주소(ADD), 예를 들어 마스크의 어드레스, 제3 비트 데이터의 주소 등, 를 제공해 준다.
ECC 디코더(115) 및 ECC 인코더(114)는 에러 비트 정정을 수행한다. ECC 인코더(114)는 비휘발성 메모리 장치(120)으로 제공되는 데이터의 오류 정정 인코딩을 하여, 패리티(parity) 비트가 부가된 데이터를 형성한다. 패리티 비트는 비휘발성 메모리 장치(120)에 저장될 수 있다.
ECC 디코더(115)는 출력된 데이터에 대하여 에러 정정 디코딩을 수행하고 수행 결과에 따라 상기 에러 정정 디코딩의 성공 여부를 판단하고, 상기 판단 결과에 따라 지시 신호를 출력한다. 리드한 데이터는 ECC 디코더로 전송되고, ECC 디코더는 패리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정 할 수 있다. 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, ECC 디코더(115)는 에러 비트를 정정할 수 없고, 에러 정정 실패(fail)가 발생한다. ECC 인코더(114)와 ECC 디코더(115)는 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)을 사용하여 에러 정정을 할 수 있으며 이에 한정되는 것은 아니다.
예를 들어, 변경되는 메모리셀의 개수가 최대가 되는 제3 비트 데이터를 선택하여 비휘발성 메모리 장치(120)에 프로그램하기 전에, ECC 인코더(114)를 이용하여 선택된 제3 비트 데이터를 ECC 인코딩하고, 비휘발성 메모리 장치(120)에 저장된 제3 비트 데이터를 리드하기 전에, ECC 디코더(115)를 이용하여 ECC 디코딩을 할 수 있다.
ECC 인코더(114) 및 ECC 디코더(115)는 오류 정정을 위한 회로, 시스템 또는 장치를 모두 포함할 수 있다.
카운터(117)는 본 발명의 몇몇 실시예들에 따라 S의 위치를 저장하고, S 및 U의 개수를 카운트한다. 또한 카운터(117)는 카운트된 S 및 U 개수의 정보를 저장하고 이 정보를 마이크로프로세서(111)에 제공한다.
메모리 인터페이스(116)는 비휘발성 메모리 장치(120)로 리드 명령어 및 어드레스를 제공한다. 비휘발성 메모리 장치(120)는 제공 받은 어드레스에 해당하는 제 1 블록 내(123)의 페이지에 저장된 데이터를 리드한다. 리드한 데이터는 I/O 패드(127)를 통해서 ECC 디코더(115)로 제공된다. ECC 디코더(115)는 비휘발성 메모리 장치(120)로부터 제공받은 데이터의 에러 비트를 체크하고 에러 비트를 정정한다.
다시 도 13를 참조하면, 마이크로프로세서(111)는 각종 연산 등을 수행할 수 있다. 예를 들어, 컨트롤 로직(126)의 S의 개수를 판별한 정보를 받아, 제2 비트 데이터를 변조할지 결정하며, 상기 제2 비트 데이터를 상기 복수의 마스크와 상기 제1 연산하여 상기 복수의 제3 비트 데이터를 산출할 수 있다. 그리고, 카운터(117)가 카운트한 결과를 참조하여, 변경되는 메모리셀의 개수가 최대가 되는 제3 비트 데이터를 선택하여 비휘발성 메모리 장치(120), 그 중에서도 메모리셀 어레이(122)에 프로그램할 수 있다.
또한, 마이크로프로세서(111)는 프로그램된 데이터를 리딩하기 위하여, 복수의 메모리셀에 프로그램된 제3 비트 데이터를 프로그램된 제3 비트 데이터를 산출하는데 사용된 마스크와 제2 연산하여 제3 비트 데이터를 제2 비트 데이터로 복구할 수 있다.
입출력 장치(130)는 호스트(미도시)와 컨트롤러(110) 사이에서 연결될 수 있으며, 메모리 시스템(100)에 데이터를 입출력하는 역할을 한다. 예를 들어, 입출력 장치(130)는 메모리 시스템(100)에 제1 비트 데이터, 제2 비트 데이터를 전달할 수 있고, 제3 비트 데이터를 이용해 복구된 제2 비트 데이터를 메모리 시스템(100)으로부터 전달받아 출력시킬 수 있다.
제1 내지 제3 비트 데이터, 제1 및 제2 연산, 제1 및 제2 상태는 전술한 것과 같다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 메모리 시스템 110: 컨트롤러
120: 비휘발성 메모리 장치

Claims (10)

  1. 복수의 메모리셀에 제1 비트 데이터를 프로그램하고,
    상기 제1 비트 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하고,
    상기 복수의 메모리셀에 프로그램될 제2 비트 데이터를 제공받고,
    상기 제2 비트 데이터를 제1 처리하여 복수의 제3 비트 데이터를 산출하고,
    상기 복수의 제3 비트 데이터 중, 상기 각 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램했을 경우 상기 대상 메모리셀의 상태가 상기 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수가 최대가 되는 제3 비트 데이터를 결정하고,
    상기 결정된 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램하는 것을 포함하는 메모리 장치 구동 방법.
  2. 제 1항에 있어서,
    상기 제2 비트 데이터를 제1 처리하여 복수의 제3 비트 데이터를 산출하는 것은,
    상기 제2 비트 데이터를 미리 정한 복수의 마스크와 제1 연산하여 복수의 제3 비트 데이터를 산출하는 것을 포함하는 메모리 장치 구동 방법.
  3. 제 2항에 있어서,
    상기 제3 비트 데이터를 산출한 상기 마스크의 어드레스를 상기 복수의 메모리셀에 프로그램하는 것을 더 포함하는 메모리 장치 구동 방법.
  4. 제 2항에 있어서,
    상기 결정된 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램한 후에,
    상기 제3 비트 데이터를 리드하고,
    상기 제3 비트 데이터를 제2 처리하여 상기 제2 비트 데이터로 복구한 후 이를 출력하는 것을 포함하는 메모리 장치 구동 방법.
  5. 제 4항에 있어서,
    상기 제2 처리는 상기 복수의 마스크 중 상기 결정된 제3 비트 데이터를 산출하는데 사용된 마스크와 제2 연산하는 것을 포함하는 메모리 장치 구동 방법.
  6. 제 1항에 있어서,
    상기 제1 비트 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하는 것은,
    상기 제1 비트 데이터를 n(여기서, n은 자연수)개의 제1 분할 데이터로 분할하고,
    상기 제1 분할 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하는 것을 포함하고,
    상기 제2비트 데이터를 제1 처리하여 복수의 제3 비트 데이터를 산출하는 것은,
    상기 제2 비트 데이터를 n개의 제2 분할 데이터로 분할하고,
    상기 제2 분할 데이터를 제3 처리하여 복수의 제3 분할 데이터를 산출하는 것을 포함하고,
    상기 제3 비트 데이터를 결정하는 것은,
    상기 복수의 제3 분할 데이터 중, 상기 각 제3 분할 데이터로 상기 복수의 메모리셀을 프로그램했을 경우 상기 대상 메모리셀의 상태가 상기 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수가 최대가 되는 제3 선택 분할 데이터를 결정하고,
    상기 n개의 제2 분할 데이터 각각에 대하여 상기 제3 선택 분할 데이터를 결정하고,
    상기 n개의 제2 분할 데이터 각각에 대해 결정된 제3 선택 분할 데이터를 결합하여 제3 비트 데이터를 결정하는 것을 포함하는 메모리 장치 구동 방법.
  7. 복수의 메모리셀을 포함하는 비휘발성 메모리 장치;
    상기 복수의 메모리셀에 프로그램되는 제1 비트 데이터와 제2 비트 데이터를 입력받는 입출력 장치; 및
    상기 비휘발성 메모리 장치를 제어하는 컨트롤러를 포함하며,
    상기 비휘발성 메모리 장치는,
    상기 제1 비트 데이터로 프로그램된 상기 복수의 메모리셀 중에서, 그 상태가 제1 상태이면서 그 문턱 전압이 제1 전압보다 큰 대상 메모리셀을 판별하는 컨트롤 로직을 포함하고,
    상기 컨트롤러는,
    상기 제2 비트 데이터와 제1 연산하는 복수의 마스크가 저장된 롬과,
    상기 제2 비트 데이터와 상기 복수의 마스크가 상기 제1 연산하여 산출된 복수의 제3 비트 데이터를 저장하는 램과,
    상기 제2 비트 데이터를 상기 복수의 마스크와 상기 제1 연산하여 상기 복수의 제3 비트 데이터를 산출하는 마이크로프로세서와,
    상기 복수의 제3 비트 데이터 중에서 상기 각 제3 비트 데이터로 상기 복수의 메모리셀을 프로그램했을 경우 상기 대상 메모리셀의 상태가 상기 제1 상태에서 제2 상태로 변경되는 메모리셀의 개수를 카운트하고 상기 카운트 결과를 상기 마이크로프로세서로 제공하는 카운터를 포함하며,
    상기 마이크로프로세서는 상기 카운트 결과가 최대가 되는 제3 비트 데이터를 선택하여 상기 비휘발성 메모리 장치에 프로그램하는 메모리 시스템.
  8. 제 7항에 있어서,
    상기 비휘발성 메모리 장치는,
    상기 선택된 제3 비트 데이터를 산출하는데 사용된 상기 마스크의 어드레스가 저장되는 복수의 메모리셀을 더 포함하는 메모리 시스템.
  9. 제 8항에 있어서,
    상기 마이크로프로세서는,
    상기 프로그램된 제3 비트 데이터를 상기 프로그램된 제3 비트 데이터를 산출하는데 사용된 마스크와 제2 연산하여 상기 제3 비트 데이터를 상기 제2 비트 데이터로 복구하는 것을 더 포함하고,
    상기 입출력장치는 상기 복구된 제2 비트 데이터를 출력하는 것을 더 포함하는 메모리 시스템.
  10. 제 7항에 있어서,
    상기 롬에 저장된 복수의 마스크는 각각의 마스크가 서로 다른 비트 패턴을 갖는 메모리 시스템.
KR1020120117371A 2012-10-22 2012-10-22 메모리 장치 구동 방법 및 메모리 시스템 KR102005709B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120117371A KR102005709B1 (ko) 2012-10-22 2012-10-22 메모리 장치 구동 방법 및 메모리 시스템
US14/052,834 US9098391B2 (en) 2012-10-22 2013-10-14 Memory system and method of operating memory system using reconstructed data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120117371A KR102005709B1 (ko) 2012-10-22 2012-10-22 메모리 장치 구동 방법 및 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20140052181A KR20140052181A (ko) 2014-05-07
KR102005709B1 true KR102005709B1 (ko) 2019-08-01

Family

ID=50486504

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120117371A KR102005709B1 (ko) 2012-10-22 2012-10-22 메모리 장치 구동 방법 및 메모리 시스템

Country Status (2)

Country Link
US (1) US9098391B2 (ko)
KR (1) KR102005709B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442835B1 (en) * 2014-02-28 2016-09-13 Ca, Inc. Dynamic memory allocation using suballocation of cell blocks
TWI566249B (zh) * 2014-11-21 2017-01-11 慧榮科技股份有限公司 快閃記憶體的資料寫入方法與其控制裝置
US10180876B2 (en) * 2015-08-04 2019-01-15 Toshiba Memory Corporation Memory controller and semiconductor memory device
US9639418B2 (en) * 2015-09-01 2017-05-02 International Business Machines Corporation Parity protection of a register

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050007801A1 (en) 2001-09-17 2005-01-13 Ron Barzilai Multi-purpose non-volatile memory card
US20070030732A1 (en) 2005-07-28 2007-02-08 Rino Micheloni Double page programming system and method
US20070121378A1 (en) 2004-11-12 2007-05-31 Noboru Shibata Semiconductor memory device
US20070153574A1 (en) 2005-12-28 2007-07-05 Kazuyuki Kouno Nonvolatile semiconductor memory for storing multivalued data
US20080101116A1 (en) 2006-10-31 2008-05-01 Hynix Semiconductor Inc. Multi-level cell copyback program method in a non-volatile memory device

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6333871B1 (en) * 1998-02-16 2001-12-25 Hitachi, Ltd. Nonvolatile semiconductor memory including a controller for providing an improved reprogram operation
JP3883687B2 (ja) * 1998-02-16 2007-02-21 株式会社ルネサステクノロジ 半導体装置、メモリカード及びデータ処理システム
US7196928B2 (en) 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
DE602006011451D1 (de) * 2006-06-21 2010-02-11 Hynix Semiconductor Inc Verfahren und Vorrichtung zum elektrischen Programmieren von Halbleiterspeicherzellen
KR100794311B1 (ko) 2006-12-27 2008-01-11 삼성전자주식회사 프로그램 에러를 차단할 수 있는 멀티 비트 플래시 메모리장치의 프로그램 방법
US7518923B2 (en) 2006-12-29 2009-04-14 Sandisk Corporation Margined neighbor reading for non-volatile memory read operations including coupling compensation
KR100850509B1 (ko) 2007-01-10 2008-08-05 삼성전자주식회사 프로그램 에러를 감소시킬 수 있는 멀티 비트 플래시메모리 장치의 프로그램 방법
KR100823174B1 (ko) * 2007-02-27 2008-04-18 삼성전자주식회사 멀티-페이지 프로그램 스킴을 갖는 플래시 메모리 장치 및그것의 멀티-페이지 프로그램 방법
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
KR100875979B1 (ko) * 2007-04-19 2008-12-24 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및그것의 엘에스비 읽기 방법
KR101393622B1 (ko) * 2007-08-30 2014-05-13 삼성전자주식회사 멀티 비트 플래시 메모리 장치를 포함하는 시스템 및그것의 데이터 처리 방법
US8174905B2 (en) * 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
KR101378602B1 (ko) * 2008-05-13 2014-03-25 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
KR101432108B1 (ko) * 2008-06-03 2014-08-21 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 구동 방법
KR101541736B1 (ko) * 2008-09-22 2015-08-04 삼성전자주식회사 멀티-레벨 셀 플래시 메모리 장치에서의 lsb 페이지 복구 방법
TWI581269B (zh) * 2008-09-30 2017-05-01 Lsi公司 利用解碼器效能回饋用於記憶體裝置之軟性資料產生的設備及方法
KR101497548B1 (ko) * 2009-02-02 2015-03-03 삼성전자주식회사 플래시 메모리 장치, 및 이의 프로그램 및 독출 방법
KR101519626B1 (ko) * 2009-02-27 2015-05-14 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR20100107294A (ko) * 2009-03-25 2010-10-05 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 불휘발성 메모리 장치의 프로그램 방법
KR101530997B1 (ko) * 2009-06-23 2015-06-25 삼성전자주식회사 셀간 간섭을 집중시키는 불휘발성 메모리 장치의 프로그램 방법
KR101824227B1 (ko) 2009-08-07 2018-02-05 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
US9245653B2 (en) * 2010-03-15 2016-01-26 Intelligent Intellectual Property Holdings 2 Llc Reduced level cell mode for non-volatile memory
KR101734204B1 (ko) * 2010-06-01 2017-05-12 삼성전자주식회사 프로그램 시퀀서를 포함하는 플래시 메모리 장치 및 시스템, 그리고 그것의 프로그램 방법
TWI455132B (zh) 2010-06-23 2014-10-01 Phison Electronics Corp 資料讀取方法、控制電路與記憶體控制器
KR101727707B1 (ko) * 2010-07-26 2017-04-19 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법과, 상기 방법을 수행할 수 있는 장치들
KR20120066347A (ko) * 2010-12-14 2012-06-22 삼성전자주식회사 비휘발성 메모리 장치 및 그 구동 방법
KR101798013B1 (ko) * 2010-12-30 2017-11-16 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
KR20130057086A (ko) * 2011-11-23 2013-05-31 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
JP2013118028A (ja) * 2011-12-02 2013-06-13 Toshiba Corp 半導体記憶装置
KR20130080203A (ko) * 2012-01-04 2013-07-12 삼성전자주식회사 셀 상태들의 비대칭 특성을 고려한 프로그램 데이터를 생성하는 방법 및 그것을 이용한 메모리 시스템

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050007801A1 (en) 2001-09-17 2005-01-13 Ron Barzilai Multi-purpose non-volatile memory card
US20070121378A1 (en) 2004-11-12 2007-05-31 Noboru Shibata Semiconductor memory device
US20070030732A1 (en) 2005-07-28 2007-02-08 Rino Micheloni Double page programming system and method
US20070153574A1 (en) 2005-12-28 2007-07-05 Kazuyuki Kouno Nonvolatile semiconductor memory for storing multivalued data
US20080101116A1 (en) 2006-10-31 2008-05-01 Hynix Semiconductor Inc. Multi-level cell copyback program method in a non-volatile memory device

Also Published As

Publication number Publication date
KR20140052181A (ko) 2014-05-07
US20140115424A1 (en) 2014-04-24
US9098391B2 (en) 2015-08-04

Similar Documents

Publication Publication Date Title
KR102244618B1 (ko) 플래시 메모리 시스템 및 플래시 메모리 시스템의 제어 방법
US8830743B2 (en) Method of operating memory controller, memory controller, memory device and memory system
CN109285582B (zh) 存储器系统、非暂时性计算机可读介质及错误校验与校正的方法
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
US9189322B2 (en) Memory system
US9177660B2 (en) Method of operating memory device
US9639419B2 (en) Read voltage level estimating method, memory storage device and memory control circuit unit
US9007854B1 (en) Method and system for optimized soft decoding in a data storage device
US9465552B2 (en) Selection of redundant storage configuration based on available memory space
US9424126B2 (en) Memory controller
KR102081581B1 (ko) 메모리 장치 구동 방법
JP2013089082A (ja) メモリコントローラ、半導体記憶システムおよびメモリ制御方法
JP2016506590A (ja) データストレージシステムのための対数尤度比及び一括対数尤度比生成
JP6730215B2 (ja) メモリコントローラ、メモリシステムおよび制御方法
US10514980B2 (en) Encoding method and memory storage apparatus using the same
KR102005709B1 (ko) 메모리 장치 구동 방법 및 메모리 시스템
US20150161001A1 (en) Misprogramming prevention in solid-state memory
CN107705817B (zh) 利用闪存通道特性的解码方法、装置及数据存储系统
CN106708649B (zh) 解码方法、存储器储存装置及存储器控制电路单元
US11146295B1 (en) Decoding method, memory storage device, and memory controlling circuit unit
US20210019082A1 (en) Nonvolatile memory bad row management
US20240103968A1 (en) Memory system and control method
CN116954984A (zh) Crc终止时的准确ber报告
JP2013218525A (ja) 半導体記憶システム、メモリコントローラおよびメモリ制御方法
JP2007179480A (ja) メモリコントローラおよびフラッシュメモリシステム

Legal Events

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