KR20180011703A - 다중-레벨 낸드 셀들에서 용량을 이용한 소거 없는 재프로그램 - Google Patents

다중-레벨 낸드 셀들에서 용량을 이용한 소거 없는 재프로그램 Download PDF

Info

Publication number
KR20180011703A
KR20180011703A KR1020170043871A KR20170043871A KR20180011703A KR 20180011703 A KR20180011703 A KR 20180011703A KR 1020170043871 A KR1020170043871 A KR 1020170043871A KR 20170043871 A KR20170043871 A KR 20170043871A KR 20180011703 A KR20180011703 A KR 20180011703A
Authority
KR
South Korea
Prior art keywords
memory cells
level
program
state
logic section
Prior art date
Application number
KR1020170043871A
Other languages
English (en)
Other versions
KR102182225B1 (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
Priority claimed from US15/256,494 external-priority patent/US9627049B1/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180011703A publication Critical patent/KR20180011703A/ko
Application granted granted Critical
Publication of KR102182225B1 publication Critical patent/KR102182225B1/ko

Links

Images

Classifications

    • 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/0408Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
    • 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/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/5642Sensing 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/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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
    • 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

Abstract

본 발명은 하나 또는 그보다 많은 메모리 페이지들을 갖는 메모리 장치를 포함한다. 하나 또는 그보다 많은 메모리 페이지들은 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들 각각은 복수의 프로그램 가능한 상태 레벨들을 갖는다. 메모리 장치는 프로그램 로직 섹션 및 페이지-레벨 재프로그램 상태 메타데이터를 포함하는 메모리 제어 로직 섹션을 포함한다. 프로그램 로직 섹션은 페이지-레벨 재프로그램 상태 메타데이터에 의존하여 복수의 메모리 셀들을 프로그램 한다. 프로그램 로직 섹션은 프로그램 동작들 동안 또는 사이에 어떠한 소거 동작들 또는 읽기 동작들을 필요로 하지 않으며, 페이지-레벨 재프로그램 상태 메타데이터에 의존하여 복수의 메모리 셀들의 연속선인 프로그램 동작들에서 메모리 셀들의 각각의 제1 상태 레벨, 제2 상태 레벨 및 제3 상태 레벨을 프로그램 한다.

Description

다중-레벨 낸드 셀들에서 용량을 이용한 소거 없는 재프로그램{REPROGRAM WITHOUT ERASE USING CAPACITY IN MULTI-LEVEL NAND CELLS}
본 발명은 반도체 회로들에 관한 것으로, 더 상세하게는 다중-레벨 낸드 셀들에서 용량을 이용한 소거 없는 재프로그램 기술에 관한 것이다.
낸드(NAND) 메모리 셀은 전원이 셀로부터 제거된 후에도 정보를 저장하는 불휘발성 메모리 셀의 타입이다. 낸드 셀들은 통상적으로 'Vth'로 참조되는 문턱 전압을 변화시키는 트랜지스터의 플로팅 게이트로의 전하 주입에 의해 데이터 값을 저장한다. 일부 종류의 낸드 메모리 셀들은 동시에 다중 비트들의 정보를 저장할 수 있다. 예를 들어, 단일-레벨 셀(SLC)은 두 상태 레벨들(즉, 논리 0 또는 1) 중 하나를 나타내는 단일 비트를 저장하고, 다중-레벨 셀(MLC)은 다중 비트들을 저장할 수 있다. 예를 들어, MLC는 이진 코드로 00, 01, 10 및 11로 나타내어지는 논리 0, 1, 2 또는 3을 나타내는 네 상태 레벨들을 저장할 수 있다. 삼중-레벨 셀(TLC)은 이진 코드로 000, 001, 010, 011, 100, 101, 110 및 111로 나타내어지는 논리 0, 1, 2, 3, 4, 5, 6 또는 7을 나타내는 여덟 개의 상태 레벨들을 저장할 수 있다.
대부분의 통상적인 낸드 장치들은 셀에 새로운 데이터를 프로그램하기 전에 매번 메모리 셀들이 소거될 것을 필요로 한다. 각 프로그램에 대해 소거를 필요로 하지 않는 것들도 다음 쓰기 전에 상태 정보를 수집하는 추가적인 읽기를 필요로 한다. 추가적인 소거 및 읽기 동작들은 에너지 소비를 증가시킨다. 또한, 소거 사이클들은 메모리 셀들에 열화 및 추가적인 마모를 유발하고, 따라서 장치들의 수명이 감소한다.
쓰기 증폭은 통상적인 낸드 장치들에서 공통적인 또 다른 문제이다. 메모리 셀들이 데이터 값들을 재프로그램하기 전에 매번 소거되므로, 이러한 동작들을 수행하는 프로세스는 데이터 값들을 한 번보다 많이 이동하는 것을 유발한다. 일부 케이스들에서, 데이터 값들을 재프로그램 하는 것은 메모리의 이미 프로그램된 부분을 읽고, 갱신하고, 그리고 새로운 장소에 기입하는 것을 필요로 한다. 때때로 메모리의 상이한 부분들은 새로운 데이터 쓰기들을 수용하기 위해 소거되고 그리고 재기입되어야 한다. 상이한 부분들은 원래 새로운 데이터로 기입되어야 했을 것보다 클 수 있다. 이는 낸드 메모리 장치들의 수명 동안 필요한 쓰기들의 수를 증가시키는 증폭 효과를 갖는다. 이러한 데이터의 처닝(churning)은 낸드 메모리 장치들이 신뢰성있게 동작하는 시간을 줄인다.
본 발명의 목적은 중간 소거 사이클들 없이 낸드 메모리 셀들에서 다중 재프로그램 동작들을 수행하여 쓰기 시간을 줄이고, 쓰기 증폭을 줄이고, 그리고 소거, 읽기 및 쓰기 사이클들을 줄이는 것에 관한 것이다.
본 발명은 하나 또는 그보다 많은 메모리 페이지들을 갖는 메모리 장치 및 상기 하나 또는 그보다 많은 메모리 페이지들에 결합된 제어 로직 섹션을 포함한다. 하나 또는 그보다 많은 메모리 페이지들은 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들 각각은 복수의 프로그램 가능한 상태 레벨들을 갖는다. 메모리 제어 로직 섹션은 프로그램 로직 섹션 및 페이지-레벨 재프로그램 상태 메타데이터를 포함한다. 프로그램 로직 섹션은 페이지-레벨 재프로그램 상태 메타데이터의 제1 값에 의존하여 복수의 메모리 셀들의 제1 프로그램에서 메모리 셀들의 각각의 하나 또는 그보다 많은 2의 제1 내지 제N 번째 승과 연관된 제1 상태 레벨을 프로그램 하도록 구성된다. 프로그램 로직 섹션은 복수의 메모리 셀들의 어느 것과 연관된 제1 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 복수의 메모리 셀들의 제2 프로그램에서 메모리 셀들의 각각의 하나 또는 그보다 많은 2의 제2 내지 제N 번째 승과 연관된 제2 상태 레벨을 프로그램 한다.
본 발명은 다중-레벨 불휘발성 메모리 셀들을 프로그램 하는 방법을 더 포함한다. 방법은 메모리 제어 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터를 저장하는 단계를 포함한다. 방법은 메모리 제어 로직 섹션의 프로그램 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터에 의존하여 메모리 페이지의 복수의 메모리 셀들을 프로그램 하는 단계를 포함한다. 방법은 프로그램 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터의 제1 값에 의존하여 복수의 메모리 셀들의 제1 프로그램에서 메모리 셀들의 각각의 하나 또는 그보다 많은 2의 제1 내지 제N 번째 승과 연관된 제1 상태 레벨을 프로그램 하는 단계를 포함한다. 방법은 프로그램 로직 섹션에 의해, 복수의 메모리 셀들의 어느 것과 연관된 제1 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 복수의 메모리 셀들의 제2 프로그램에서 메모리 셀들의 각각의 하나 또는 그보다 많은 2의 제2 내지 제N 번째 승과 연관된 제2 상태 레벨을 프로그램 하는 단계를 포함한다.
본 발명의 실시 예들에 따르면, 중간 소거 사이클들 없이 낸드 메모리 셀들에서 다중 재프로그램 동작들이 수행된다. 따라서, 쓰기 시간이 줄고, 쓰기 증폭이 줄고, 그리고 소거, 읽기 및 쓰기 사이클들이 줄어든다.
앞서 언급된 그리고 추가적인 본 발명의 원칙들의 특징들이 첨부된 도면들을 참조하여 아래의 상세한 설명으로부터 더 손쉽게 명백하게 될 것이다.
도 1a 내지 도 1h는 다양한 프로그램 가능한 상태 레벨들을 갖는 불휘발성 낸드 메모리 셀의 예시적인 다이어그램들이다.
도 2는 본 발명의 기술적 사상의 실시 예들에 따른 메모리 페이지들과 연관된 메모리 셀 로직 섹션 및 다중-레벨 낸드 메모리에서 용량을 이용한 대응하는 소거 없는 재프로그램 흐름을 보여주는 예시적인 블록 및 개념 다이어그램이다.
도 3a는 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 낸드 메모리에서 용량을 이용한 소거 흐름 없는 재프로그램을 보여주는 또 다른 예시적인 블록 및 개념도이다.
도 3b는 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 낸드 메모리에서 용량을 이용한 소거 흐름 없는 재프로그램 흐름을 보여주는 또 다른 예시적인 블록 및 개념도이다.
도 4는 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 메모리 셀들에서 용량을 이용한 소거 없는 프로그램을 위한 기술을 보여주는 순서도이다.
도 5는 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 메모리 셀들에서 용량을 이용한 소거 없는 프로그램을 위한 또 다른 기술을 보여주는 순서도이다.
도 6은 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 메모리 셀들로부터 정보를 읽는 기술을 보여주는 순서도이다.
도 7은 여기에 기술된 본 발명의 기술적 사상의 실시 예들에 따른 도 2의 메모리 제어 로직 섹션을 포함하는 컴퓨팅 시스템의 예시적인 블록도이다.
본 발명의 기술적 사상의 실시 예들을 상세하게 참조하여, 첨부된 도면들에서 실시 예들이 설명된다. 본 발명의 기술적 사상의 실시 예들은 중간 소거 사이클들 없이 낸드(NAND) 메모리 셀들에서 다중 재프로그램 동작들을 수행하여 쓰기 시간을 줄이고, 쓰기 증폭을 줄이고, 그리고 소거, 읽기 및 쓰기 사이클들을 줄이는 것에 관한 것이다. 개시되는 기술을 이용하여, 읽기-수정-쓰기 동작들이 수행될 필요가 없다. 대신, 이전 프로그램 레벨이 페이지-레벨 재프로그램 상태 메타데이터로 저장되고, 다음 프로그램 레벨을 위해 참조될 수 있다. 다중-레벨 낸드 메모리 셀들의 용량은 일반적인 것보다 적은 수의 비트들을 저장하는 데에 사용되지만, 소거 사이클들, 읽기 사이클들 그리고 쓰기 사이클들이 감소하는 장점을 갖는다. 따라서, 낸드 메모리 셀들의 전반적인 수명이 크게 길어질 수 있다.
도 1a 내지 도 1h는 다양한 프로그램 가능한 상태 레벨들을 갖는 다중-레벨 낸드 메모리 셀(100)의 예시적인 다이어그램들이다. 도 1a는 저장된 전하가 없는 상태의 불휘발성 다중-레벨 낸드 메모리 셀(100)을 보여준다. 도 1b 내지 도 1h는, 아래에서 더 설명되는 바와 같이, 다양한 전하들이 저장된 셀(100)을 보여준다. 여기에서 사용되는 "다중-레벨"의 용어는 4-레벨 타입 셀들인 "MLC"에 대해 논의되는 셀들의 종류를 한정하는 것으로 의도되지 않는다. 여기에 사용되는 이 용어는 다중 상태 레벨들 및 4-레벨들의 비트들 및 그것을 초과한 것들을 저장할 수 있는 메모리 셀을 폭넓게 참조할 수 있다. 도 1a에 도시된 바와 같이, 낸드 메모리 셀(100)은 소스(105), 드레인(110), 제어 게이트(115), 그리고 플로팅 게이트(120)를 포함할 수 있다. 절연체(125)는 플로팅 게이트(120)와 소스(105) 및 드레인(110) 사이에 배치된다. 또 다른 절연체(130)는 플로팅 게이트(120) 및 제어 게이트(115) 사이에 배치된다. 플로팅 게이트(120)는 전기적 전하를 저장한다. 전자들은 인가되는 전기장에 응답하여 절연체(125)를 통한 터널링의 방법으로 플로팅 게이트(120)로 주입되거나 이로부터 배출될 수 있다. 셀(100)의 문턱 전압(Vth)은 플로팅 게이트(120)에 저장된 전하의 양에 따라 변화한다. 셀(100)의 상이한 상태 레벨들(즉, 문턱 전압(Vth)의 상이한 레벨들)은 상이한 데이터 값들을 나타낸다. 도 1a는 플로팅 게이트(120)에 저장된 전하를 갖지 않는 셀(100)을 보여준다. 도 1b 내지 도 1h는 플로팅 게이트(120)에 저장된 전하의 레벨들이 증가하는 셀(100)을 보여준다. 이 예에서, 낸드 메모리 셀(100)은 여덟 개의 상태 레벨들을 포함한다. 메모리 셀(100)은 이러한 상태 레벨들 중 임의의 하나로 프로그램될 수 있다. 여덟 개의 상태 레벨들은 이진 코드로 000, 001, 010, 011, 100, 101, 110 및 111로 나타내어질 수 있다. 다시 말하면, 셀(100)의 여덟 개의 상태 레벨들은 세 개의 비트들로 나타내어지거나 또는 개념화될 수 있다. 각 비트 위치는 2의 승일 수 있다. 최-우측 비트는 여기에서 1의 비트로 참조된다. 중간 비트는 여기에서 2의 비트로 참조된다. 최-좌측 비트는 여기에서 4의 비트로 참조된다.
메모리 셀(100)은 여덟 개의 상태 레벨들로 한정되지 않으며, 4와 같은 더 적은 상태 레벨들 또는 16과 같은 더 많은 상태 레벨들을 포함할 수 있음이 이해될 것이다. 메모리 셀(100)은 임의의 적절한 수의 상태 레벨들을 포함할 수 있음이 이해될 것이다. 예를 들어, 16 상태 레벨들에서, 상태 레벨들은 이진 코드로 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 그리고 1111로 나타내어질 수 있다. 상술된 네 개의 상태 레벨과 같이, 각 비트 위치는 2의 승이다. 이 예에서, 최-우측 비트는 여기에서 1의 비트로 참조되고, 다음 최-우측 비트는 여기에서 2의 비트로 참조되고, 다다음 최-우측 비트는 4의 여기에서 4의 비트로 참조되고, 그리고 최-좌측 비트는 여기에서 8의 비트로 언급된다. 이 개념은 2의 N승들로 확장될 수 있으며, N은 임의의 적합한 양의 정수일 수 있다. 예를 들어, N이 5인 경우, 메모리 셀(100)은 2의 5승을 포함할 수 있으며, 또는 32 상태 레벨들을 포함할 수 있다.
도 2는 본 발명의 기술적 사상의 실시 예들에 따른 메모리 페이지들(205)과 연관된 메모리 제어 로직 섹션(210) 및 다중-레벨 낸드 메모리에서 용량을 이용한 대응하는 소거 없는 재프로그램 흐름을 보여준다. 메모리 페이지들(205)은 도 2에 도시된 바와 같이 페이지 0 내지 페이지 N의 표지들에 의해 행들로 배열될 수 있다. 메모리 제어 로직 섹션(210)은 각 메모리 페이지 내의 메모리 셀들의 동작을 제어할 수 있다. 각 메모리 페이지 내의 각 사각형은 다중-레벨 낸드 메모리 셀(예를 들어, 240)을 나타낸다. 이 예시적인 실시 예에서, 각 메모리 셀은 여덟 레벨 메모리 셀이다. 여덟 상태 레벨들은 이진 코드로 000, 001, 010, 011, 100, 101, 110, 그리고 111로 나타내어질 수 있다.
단일 소거 동작(E1)이 추종하는 세 프로그램 동작들(P1, P2, P3)이 도시된다. 소거 동작들은 프로그램 동작들 동안에 또는 사이에 수행될 필요가 없다. 또한, 읽기 동작들은 프로그램 동작들 동안에 또는 사이에 수행될 필요가 없다. 다시 말하면, 새로운 데이터 비트를 갱신하는 데에 이전 데이터의 읽기가 필요하지 않다. 각 다중-레벨 셀(예를 들어, 240)은 특정한 문턱 전압(Vth) 레벨들(이 예시적인 실시 예에서 000 내지 111)로 복수회(예를 들어, 240, TLC 셀의 예에서 3) 프로그램(예를 들어, 재프로그램)되어 동일한 어드레스에 대해 오래된 데이터를 소거하지 않고 새로운 데이터를 나타낼 수 있다.
메모리 제어 로직 섹션(210)은 프로그램 로직 섹션(215), 페이지-레벨 재프로그램 상태 메타데이터(220), 그리고 읽기 로직 섹션(235)을 포함한다. 프로그램 로직 섹션(215)은 아래에서 더 설명되는 바와 같이 페이지-레벨 재프로그램 상태 메타데이터(220)에 의존하여 메모리 셀들(예를 들어, 240)을 프로그램할 수 있다.
제1 프로그램 동작(P1)은 이진 데이터 "0 0 1 1 1 0"이 메모리 셀(240) 및 메모리 셀(240)에 인접한 메모리 셀들과 같은 연관된 다중-레벨 메모리 셀에 대응하는 각 비트로 프로그램 되는 것으로 설명된다. 다시 말하면, 데이터의 스트링 "0 0 1 1 1 0"의 각 데이터 비트는 별도의 다중-레벨 메모리 셀에 프로그램될 수 있다. 프로그램 로직 섹션(215)은 제1 프로그램 동작(P1) 동안에 페이지-레벨 재프로그램 상태 메타데이터(220)의 제1 값(V1)에 의존하여, 다중-레벨 메모리 셀들 각각의 2의 제1 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨(예를 들어, 001, 001, 000, 000, 000, 001)을 프로그램할 수 있다. 낸드를 이용하여, 실제 논리 값의 보수가 메모리 셀들에 저장되고 읽혀진다. 예를 들어, 논리 0이 저장될 때, 001의 상태 레벨이 제1 프로그램 동작(P1) 동안에 다중-레벨 메모리 셀에 기입될 수 있다. 또 다른 예로서, 논리 1이 저장될 때, 000의 상태 레벨이 제1 프로그램 동작(P1) 동안에 다중-레벨 메모리 셀에 기입될 수 있다.
더 상세하게는, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제1 값(V1)은 특정한 메모리 페이지의 메모리 셀들(예를 들어, 240)에 아직 정보가 저장되지 않았음을-예를 들어, 메모리 셀들(예를 들어 240)의 문턱 전압(Vth)이 갓 소거되었고 가장 낮은 상태 레벨임을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제1 값(V1)인 것에 응답하여, 프로그램 로직 섹션(215)은 메모리 셀들(예를 들어, 240)의 각각의 1의 비트가 프로그램될 데이터의 스트링 "0 0 1 1 1 0"의 각 데이터 비트를 나타내도록 프로그램할 수 있다. 이 예시적인 실시 예에서, 전기적 전하가 메모리 셀(240)에 추가되어 문턱 전압(Vth)이 "0 0 1"을 나타내는 상태 레벨로 올라간다. 유사하게, 메모리 셀(240)의 우측의 메모리 셀은 추가되는 전기적 전하를 갖고 문턱 전압(Vth)이 "0 0 1"을 나타내는 상태 레벨로 올라간다. 다음의 세 개의 메모리 셀들은 제1 프로그램 동작(P1) 동안에 추가되는 전하를 갖지 않는다. 다음 메모리 셀은 처음 두 개의 메모리 셀들과 유사하며, 전기적 전하가 추가되어 문턱 전압(Vth)이 "0 0 1"을 나타내는 상태 레벨로 올라간다.
따라서, 메모리 셀들의 플로팅 게이트들(예를 들어, 도 1의 120)의 일부는 추가된 전하(+1)를 받아 0의 논리 값을 나타낸다. 또한, 메모리 셀들의 일부는 추가된 전하를 받지 않아(+0) 1의 논리 값을 나타낸다. 이러한 방법으로, "0 0 1 1 1 0"의 논리 값들이 메모리 셀들의 1의 비트 위치들로 프로그램된다. 프로그램 로직 섹션(215)은 제1 프로그램 동작(P1) 동안에 프로그램 되는 메모리 셀들 중 어느 비트도 소거하지 않고 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨(예를 들어, 001, 001, 000, 000, 000, 001)을 프로그램할 수 있다. 제1 프로그램 동작(P1)의 일부로서(또는 이후에), 메모리 제어 로직 섹션(210)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 프로그램 중 하나가 발생했음을 가리키는 제2 값(V2)으로 설정할 수 있다.
이진 데이터 "0 1 0 1 1 1"이 메모리 셀(240) 및 메모리 셀(240)에 인접한 메모리 셀들과 같은 대응하는 다중-레벨 메모리 셀들에 프로그램 되는 제2 프로그램 동작(P2)이 설명된다. 다시 말하면, 데이터 스트링 "0 1 0 1 1 1"에서 각 데이터 비트는 별도의 다중-레벨 메모리 셀에 프로그램될 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들의 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제2 값(V2)에 의존하여 제2 프로그램 동작(P2) 동안에 다중-레벨 메모리 셀들 각각의 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 제2 상태 레벨(예를 들어, 011, 001, 010, 000, 000, 001)을 프로그램할 수 있다.
더 상세하게는, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제2 값(V2)은 특정한 메모리 페이지의 메모리 셀들(예를 들어, 240)에서 제1 레벨의 프로그램이 이미 발생했음을, 예를 들어 메모리 셀들(예를 들어, 240)의 문턱 전압(Vth)이 1의 비트 정보가 프로그램 되었음을 가리키는 특정한 상태 레벨들임을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제2 값(V2)인 것에 응답하여, 프로그램 로직 섹션(215)은 메모리 셀들(예를 들어, 240)의 각각의 2의 비트가 데이터 스트링 "0 1 0 1 1 1"으로 프로그램된 것을 나타내도록 프로그램할 수 있다. 이 예시적인 실시 예에서, 전기적 전하는 메모리 셀(240)에 추가되어 문턱 전압(Vth)이 "0 1 1"을 나타내는 상태 레벨로 올라간다. 이러한 프로그램 동작은 부가적이며, 메모리 셀(240)의 소거 또는 읽기를 필요로 하지 않는다. 다시 말하면, 프로그램 동작(P2) 동안에, 프로그램 로직 섹션(215)은 추가적인 전하를 더하여 문턱 전압(Vth)을 두 레벨들(메몰 셀들(240)의 케이스와 같이) 만큼 올리(+2)거나, 그렇지 않으면 메모리 셀에 전하를 추가하지 않을(+0) 수 있다(메모리 셀(240)의 우측의 메모리 셀의 예에서와 같이).
따라서, 메모리 셀(240)의 우측의 메모리 셀은 전기적 전하가 더해지지 않고, 이는 문턱 전압(Vth)에 변화가 없음을 의미하며, 따라서 상태 레벨은 "0 0 1"로 유지된다. 우측의 다음 메모리 셀은 추가적인 전하가 더해져서 문턱 전압(Vth)이 "0 1 0"을 나타내는 상태 레벨로 두 레벨들만큼 증가(+2)한다. 이러한 방법으로, 추가 전하가 추가되는지 아닌지에 관계없이, 1의 비트 정보가 보존된다. 다음의 세 개의 메모리 셀들은 프로그램 동작(P2) 동안에 추가적인 전하가 추가되지 않으며, 따라서 2의 비트 정보가 변경되지 않고 남아있으며 1의 비트 정보가 보존된다.
따라서, 메모리 셀들의 플로팅 게이트들(예를 들어, 도 1의 120)의 일부는 추가 전하(+2)를 받아 2의 위치에 0의 논리 값을 나타낸다. 또한, 메모리 셀들의 일부는 추가 전하를 받지 않아(+2) 2의 위치에 1의 논리 값을 나타낸다. 이러한 방법으로, "0 1 0 1 1 1"의 논리 값들이 메모리 셀들의 2의 비트 위치들에 프로그램될 수 있다. 프로그램 로직 섹션(215)은 제2 프로그램 동작(P2) 동안에 프로그램 되는 메모리 셀들의 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 제2 상태 레벨(예를 들어, 011, 001, 010, 000, 000, 001)을 프로그램할 수 있다. 프로그램 동작(P2)의 일부로서(또는 이후에), 메모리 제어 로직 섹션(210)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 프로그램의 제2 레벨들이 발생했음을 가리키는 제3 값(V3)으로 설정할 수 있다.
이진 데이터 "1 0 1 1 0 1"이 메모리 셀(240) 및 메모리 셀(240)에 인접한 메모리 셀들과 같은 대응하는 다중-레벨 메모리 셀들에 프로그램 되는 제3 프로그램 동작(P3)이 설명된다. 다시 말하면, 데이터 스트링 "1 0 1 1 0 1"의 각 데이터 비트는 별도의 다중-레벨 메모리 셀에 프로그램될 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들의 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨 그리고/또는 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제3 값(V3)에 의존하여 제3 프로그램 동작(P3) 동안에 다중-레벨 메모리 셀들의 각각의 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제3 상태 레벨(예를 들어, 011, 101, 010, 000, 100, 001)을 프로그램할 수 있다.
더 상세하게는, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값(V3)은 제1 및 제2 레벨들의 프로그램이 특정한 메모리 페이지의 메모리 셀들(예를 들어, 240)에서 이미 발생하였음을-예를 들어, 메모리 셀들(예를 들어, 240)의 문턱 전압(Vth)이 2의 비트 정보가 프로그램 되었음을 가리키는 특정한 상태 레벨들임을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제3 값인 것에 응답하여, 프로그램 로직 섹션(215)은 메모리 셀들(예를 들어, 240)의 각각의 4의 비트가 데이터 스트링 "1 0 1 1 0 1"로 프로그램 되었음을 나타내도록 프로그램할 수 있다. 이 예시적인 실시 예에서, 메모리 셀(240)에 전하가 추가되지 않으며, 이는 문턱 전압(Vth)에 변화가 발생하지 않음을 의미하고, 상태 레벨은 "0 1 1"로 유지된다. 우측의 다음 메모리 셀은 추가되는 추가적인 전하를 갖고, 문턱 전압(Vth)이 "1 0 1"을 나타내는 상태 레벨로 네 레벨들만큼 올라(+4)간다. 이러한 방법으로, 1의 비트 및 2의 비트 정보가 추가적인 전하가 추가되는지 아닌지에 관계없이 보존된다. 이러한 프로그램 동작은 부가적이며, 메모리 셀(240)의 소거 또는 읽기를 필요로 하지 않는다. 다시 말하면, 프로그램 동작(P3) 동안에, 프로그램 로직 섹션(215)은 추가적인 전하를 추가하여 문턱 전압(Vth)을 네 레벨들만큼 올리(+4)거나(메모리 셀(240)의 우측의 메모리 셀의 케이스에서와 같이) 그렇지 않으면 메모리 셀에 전하를 추가하지 않는다(메모리 셀(240)의 케이스에서와 같이).
따라서, 메모리 셀(240)의 우측의 메모리 셀은 추가되는 추가적인 전하를 갖고, 이는 문턱 전압(Vth)이 변화함을 의미하며, 따라서 상태 레벨은 "1 0 1"로 변화한다. 우측의 다음 메모리 셀들은 프로그램 동작(P3) 동안에 추가되는 추가적인 전하를 갖지 않고, 따라서 4의 비트 정보가 변화하지 않으며 1의 비트 및 2의 비트 정보가 보존된다. 이러한 방법으로, 추가적인 전하가 추가되는지 아닌지에 관계없이, 1의 비트 및 2의 비트 정보가 보존된다. 다음 메모리 셀은 프로그램 동작(P3) 동안에 추가되는 추가적인 전하(+4)를 갖고, 따라서 1의 비트 및 2의 비트 정보가 보전되며 4의 비트 정보를 갱신된다.
따라서, 메모리 셀들의 플로팅 게이트들(예를 들어, 도 1의 120)의 일부는 추가되는 전하(+4)를 받아 0의 논리 값을 나타낸다. 또한, 메모리 셀들의 일부는 추가되는 전하를 받디 않고(+0) 1의 논리 값을 나타낸다. 이러한 방법으로, "1 0 1 1 0 1"의 논리 값들이 메모리 셀들의 4의 비트 위치들에 프로그램될 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들의 어느 비트도 소거하지 않고 제3 프로그램 동작(P3) 동안에 메모리 셀들의 각각의 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제3 상태 레벨(예를 들어, 011, 101, 010, 000, 100, 001)을 프로그램할 수 있다. 프로그램 동작(P3)의 일부로서(또는 이후에), 메모리 제어 로직 섹션(210)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 프로그램의 제3 레벨들이 발생했음을 가리키는 제4 값(V4)으로 설정할 수 있다.
일부 실시 예들에서, 페이지-레벨 재프로그램 상태 메타데이터(220)는 네 값들(V1, V2, V3, V4)을 나타낼 수 있는 2-비트 값이다. 예를 들어, 페이지-레벨 재프로그램 상태 메타데이터(220)가 제1 값(V1) 또는 '00'과 등가적이면, 이는 특정한 메모리 페이지에서 프로그램이 발생하지 않았음을 가리키거나 그리고/또는 메모리 페이지가 소거되었음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제2 값(V2) 또는 '01'과 등가적이면, 이는 특정한 메모리 페이지에서 프로그램의 하나의 레벨이 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제3 값(V3) 또는 '10'과 등가적이면, 이는 프로그램의 두 레벨들이 특정한 메모리 페이지에서 발생했음을 나타낼 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제4 값(V4) 또는 '11'과 등가적이면, 이는 프로그램의 세 레벨들이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)는 2-비트 값으로 한정될 필요가 없으며, 임의의 적절한 이진 표현을 이용하여 저장되고 액세스될 수 있음이 이해될 것이다. 페이지-레벨 재프로그램 상태 메타데이터(220) 값들에 대한 비트 값들의 다른 조합들이 여기에 게시된 본 발명의 실시 예들의 범위로부터 멀어지지 않으면서 사용될 수 있다.
따라서, 프로그램 로직 섹션(215)은 제1 상태 레벨, 제2 상태 레벨, 그리고 제3 상태 레벨의 프로그램 동안 또는 사이에, 메모리 셀들의 어느 비트도 소거하지 않으면서, 동일한 어드레스(즉, 메모리 셀(240)과 연관된 어드레스)에서 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨(예를 들어, '001'), 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 제2 상태 레벨(예를 들어, '011'), 그리고 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제3 상태 레벨(예를 들어, '111')을 프로그램할 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들의 어느 비트도 소거하지 않으면서 제1 프로그램 동작(P1) 동안에 메모리 셀들의 각각의 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨을 프로그램할 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들의 어느 비트도 소거하지 않으면서 제2 프로그램 동작(P2) 동안에 메모리 셀들의 각각의 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 제2 상태 레벨을 프로그램할 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들의 어느 비트도 소거하지 않으면서 제3 프로그램 동작(P3) 동안에 메모리 셀들의 각각의 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제3 상태 레벨을 프로그램할 수 있다.
메모리 제어 로직 섹션(210)은 읽기 로직 섹션(235)을 포함할 수 있다. 메모리 셀들의 각각의 제1 상태 레벨(예를 들어, 001, 001, 000, 000, 000, 001)은 문턱 전압(Vth)의 제1 값에 대응할 수 있다. 문턱 전압(Vth)의 제1 값은 메모리 셀들의 각각의 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 비트 위치에 저장되는 정보를 포함한다. 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)의 제2 값(V2)에 의존하여 메모리 셀들의 각각의 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 비트 위치에 저장된 정보를 선택적으로 읽을 수 있다. 논리 값은 1의 비트에 저장된 정보의 보수이다. 다시 말하면, 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 액세스하고, 제2 값(V2)인지 판별하고, 그리고 판별에 기반하여 1의 비트 정보를 읽을 것을 알 수 있다. 이러한 읽기 동작은 1의 비트 정보가 프로그램된 후에 어느 때에도 발생할 수 있으나, 위에서 설명된 프로그램 동작을 성공적으로 수행하기 위하여 읽기가 필요하지는 않다.
메모리 셀들의 각각의 제2 상태 레벨(예를 들어, 011, 001, 010, 000, 000, 001)은 문턱 전압(Vth)의 제2 값에 대응할 수 있다. 문턱 전압(Vth)의 제2 값은 메모리 셀들의 각각의 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 비트 위치에 저장된 정보를 포함한다. 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)의 제3 값(V3)에 의존하여 메모리 셀들의 각각의 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 비트 위치에 저장된 정보를 읽을 수 있다. 다시 말하면, 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 액세스하고, 제3 값(V3)을 판별하고, 그리고 판별에 기반하여 2의 비트 정보를 읽을 것을 알 수 있다. 이러한 읽기 동작은 2의 비트 정보가 프로그램된 후에 어느 때에도 발생할 수 있으나, 위에서 설명된 프로그램 동작을 성공적으로 수행하기 위하여 읽기가 필요하지는 않다.
메모리 셀들의 각각의 제3 상태 레벨(예를 들어, 011, 101, 010, 000, 100, 001)은 문턱 전압(Vth)의 제3 값에 대응할 수 있다. 문턱 전압(Vth)의 제3 값은 메모리 셀들의 각각의 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 비트 위치에 저장된 정보를 포함한다. 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)의 제4 값(V4)에 의존하여 메모리 셀들의 각각의 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 비트 위치에 저장된 정보를 읽을 수 있다. 다시 말하면, 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 액세스하고, 제4 값(V4)을 판별하고, 그리고 판별에 기반하여 2의 비트 정보를 읽을 것을 알 수 있다. 이러한 읽기 동작은 2의 비트 정보가 프로그램된 후에 어느 때에도 발생할 수 있으나, 위에서 설명된 프로그램 동작을 성공적으로 수행하기 위하여 읽기가 필요하지는 않다.
프로그램 동작들(P1, P2, P3)이 발생한 후에, 페이지는 전체 블록이 소거될 때까지 기입될 수 없음을 의미하는 더티(dirty)로 표시될 수 있다. 이후에, 프로그램 프로세스는 경우에 따라 유사한 프로그램 동작들(P1, P2, P3) 및 페이지-레벨 재프로그램 상태 메타데이터(220)의 값들(V1, V2, V3, V4)을 순환함으로써 반복될 수 있다. 따라서, 모든 세 프로그램 동작들(P1, P2, P3)에 대해 단일 소거 동작만이 필요하다. 데이터는 쓰기 동작들의 일부로서 또는 동안에 수행되는 소거 동작 없이 메모리 페이지 내의 다중의 연속적인 메모리 셀들에 기입될 수 있다. 또한, 프로그램 동작들 동안의 임의의 시점에, 또는 프로그램 동작들 동안 또는 사이에, 읽기 동작들이 필요하지 않다. 재프로그램 동작들은 쓰기 요청에 따라 부분 또는 전체 메모리 페이지에 대한 것일 수 있다. 새로운 상태 레벨들은 유입되는 새로운 데이터 비트들로부터 전적으로 결정될 수 있다. 페이지는 다중의 더 작은 부분 페이지들로 분할되어 부분 갱신들을 지원할 수 있다. 상태 메타데이터(220)는 제1 부분 페이지의 제1 레벨 값들을 나타내는 V11, V12 내지 V1n을 저장할 수 있으며, n은 부분 페이지들의 최대 수이다. 상태 메타데이터(220)는 또한 제2 부분 페이지의 제2 레벨 값들을 나타내는 V21, V22 내지 V2n을 저장할 수 있다. 유사하게, Vn1, Vn2 내지 Vnn은 마지막 부분 페이지의 마지막 레벨 값들을 나타낼 수 있다.
이러한 방법으로, 연속적인 쓰기들이 2의 메모리 셀의 수의 승 각각과 연관된 전압 레벨들을 이용하여 수행될 수 있다. 제1 프로그램이 1의 비트, 제2 프로그램이 2의 비트, 그리고 제3 프로그램이 4의 비트에서 수행될 수 있다. 메타데이터는 메모리 페이지가 몇 번 기입되었는지 판별하는 데에 사용될 수 있으며, 따라서 새로운 프로그램이 어떤 전압 레벨들에서 수행되어야 하는지, 또는 데이터의 어떤 비트가 읽혀질 수 있는지 나타낼 수 있다. 각 프로그램 동작 후의 비교 레벨은 이전 두 레벨들 전체보다 적어도 하나 더 클 수 있다. 제1 프로그램 동작(P1), 제2 프로그램 동작(P2), 그리고 제3 프로그램 동작(P3)은 이들이 상호 배타적이고 적절하게 추적되는 한 2의 임의의 승일 수 있다.
통상적으로, 6-비트 데이터(예를 들어, '0 0 1 1 1 0')를 프로그램하기 위하여, 두 개의 3중-레벨 메모리 셀들이 001 및 110의 데이터 비트들을 저장하는 데에 필요하다. 이러한 데이터 비트들은 초기 쓰기 후에 두 번 갱신된다. 초기 쓰기 후에 이러한 6개의 데이터 비트들을 두 번 재프로그램하기 위하여, 초기 쓰기, 두 번째 쓰기, 그리고 세 번째 쓰기를 포함하는 총 18개의 데이터 비트들에 대해 여섯 개의 3중-레벨 메모리 셀들이 필요하다. 또한, 초기 쓰기 및 두 번째 쓰기에 대한 두 소거 사이클들이 수행된다. 반대로, 여기에 게시된 본 발명의 실시 예들을 이용하면, 동일한 16비트들 또는 6개의 메모리 셀들(즉, 데이터의 1 비트를 나타내기 위한 3-비트들)이 사용될 수 있으나, 소거 동작들을 수행할 필요가 없다. 이 기술은 소거 없는(당분간) 메모리 셀들의 재프로그램을 허용하며, 따라서 더 빠른 쓰기 시간들 및 감소된 소거 사이클들을 제공한다. 추가적인 장점으로서, 메모리 셀들의 오래된 데이터 또한 보존되며, 어느 때건 읽을 수 있다. 예를 들어, 다중 체크-포인트 시스템은 메모리 셀의 "오래된" 비트를 읽음으로써, 이전에 저장된 정보를 다시 참조할 수 있다. 다르게 말하면, 메모리 셀들의 오래된 데이터는 보존되며, 어느 때건 읽을 수 있다. 또 다른 예의 방법에 의해, 버저닝(versioning) 시스템은 메모리 셀의 "더 오래된" 비트를 읽음으로써, 이전에 저장된 정보를 다시 참조할 수 있다.
일부 실시 예들에서, 재프로그램 상태 메타데이터(220)는 특정한 메모리 페이지에 전역적일 수 있으며, 특정한 메모리 페이지 내의 모든 메모리 셀들이 동일한 메타데이터 값을 사용할 수 있다. 일부 실시 예들에서, 재프로그램 상태 메타데이터(220)는 메모리 페이지들의 블록에 전역적일 수 있다. 일부 실시 예들에서, 재프로그램 상태 메타데이터(220)는 메모리 페이지들의 다중 블록들에 전역적일 수 있다. 일부 실시 예들에서, 재프로그램 상태 메타데이터(220)는 메모리 블록 내의 다중 메모리 페이지들에 전역적일 수 있다. 일부 실시 예들에서, 재프로그램 상태 메타데이터(220)는 특정한 메모리 페이지 내의 다중 메모리 셀들에 전역적일 수 있다.
통상적으로, 3중-레벨 메모리 셀들을 사용하고 데이터의 세 개의 비트들을 갱신할 때, 두 번째 셀 위치가 파악되어야 한다. 이러한 데이터의 세 개의 비트들을 다시 갱신할 때, 세 번째 셀 위치가 파악되어야 한다. 실질적으로, 정보의 9개의 비트들이 소비되어 데이터의 3개의 비트들을 3번 갱신하고, 오래된 셀들을 되찾기 위해 소거 동작들이 두 번 필요하다. 여기에 게시된 본 발명의 기술을 사용하면, 동일한 9개의 비트들(즉, 데이터의 1 비트를 나타내기 위한 3-비트들)이 사용되지만, 소거 동작들이 없다. 이 기술은 소거 없이 메모리 셀을 재프로그램 하는 것을 허용하며, 따라서 더 빠른 쓰기 시간들 및 감소된 소거 사이클들을 제공한다.
도 3a는 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 낸드 메모리에서 용량을 이용하여 소거 없는 재프로그램 흐름을 보여주는 또 다른 예시적인 블록 및 개념도(305)이다. 구성 요소들 및 흐름 설명의 일부가 도 2를 참조하여 제공되었으며, 따라서 이러한 것의 상세한 설명은 필수적으로 반복되지 않는다. 구체적인 차이점으로, 도 3a에 도시된 메모리 셀들 각각은 이진 코드로 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 그리고 1111로 나타내어지는 16 상태 레벨들을 포함한다. 이 예시적인 실시 예에서, 최 우측 비트는 1의 비트로 참조되고, 다음 최 우측의 비트는 2의 비트로 참조되고, 다다음의 최 우측 비트는 4의 비트로 참조되고, 그리고 최 좌측의 비트는 8의 비트로 참조된다.
예시적인 실시 예에서, 네 프로그램 동작들(예를 들어, P1, P2, P3, P4)이 소거 동작(E1)이 필요하기 전에 수행될 수 있다. 처음 세 개의 프로그램 동작들(예를 들어, P1, P2, P3)은 도 2를 참조하여 설명된 것과 유사한 방식으로 수행될 수 있으며, 따라서 이러한 단계들 각각의 상세한 설명은 반복되지 않는다. 제3 프로그램 동작(P3)이 완료된 후에, 제3 프로그램 동작(P4)이 수행될 수 있다.
메모리 셀(240) 및 메모리 셀(240)에 인접한 메모리 셀들과 같은 대응하는 다중-레벨 메모리 셀들에 "0 0 0 1 1 1"의 이진 데이터를 프로그램 하는 제4 프로그램 동작(P4)이 설명된다. 다시 말하면, 데이터 스트링 "0 0 0 1 1 1"의 각 데이터 비트는 별도의 다중-레벨 메모리 셀에 프로그램될 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들 중 어느 것의 제1 상태 레벨, 제2 상태 레벨, 그리고/또는 제3 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제4 값(V4)에 의존하여 제3 프로그램 동작(P4) 동안에 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 제4 상태 레벨(예를 들어, 1011, 1101, 1010, 0000, 0100, 0001)을 프로그램할 수 있다.
더 상세하게는, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제4 값(V4)은 특정한 메모리 페이지의 메모리 셀들(예를 들어, 240)에서 프로그램의 제1, 제2 및 제3 레벨들이 이미 발생하였음을-예를 들어, 메모리 셀들(예를 들어, 240)의 문턱 전압(Vth)이 4의 비트 정보가 프로그램 되었음을 가리키는 특정한 상태 레벨들임을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제4 값(V4)인 것에 응답하여, 프로그램 로직 섹션(215)은 메모리 셀들(예를 들어, 240)의 각각의 8의 비트가 데이터 스트링 "0 0 0 1 1 1"의 각 데이터 비트로 프로그램 되었음을 나타내도록 프로그램할 수 있다. 이 예시적인 실시 예에서, 메모리 셀(240)에 추가적인 전하가 추가되어 문턱 전압(Vth)이 "1 0 1 1"을 나타내는 상태 레벨로 8 레벨들만큼 올라(+8)갈 수 있다. 이러한 방법으로, 추가적인 전하가 추가되는지 아닌지에 관계없이, 1의 비트, 2의 비트, 그리고 4의 비트 정보는 보존된다. 이러한 프로그램 동작은 부가적이며 메모리 셀(240)의 소거 또는 읽기를 필요로 하지 않는다. 다시 말하면, 프로그램 동작(P4) 동안에, 프로그램 로직 섹션(215)은 추가적인 전하를 추가하여 문턱 전압(Vth)을 8 레벨들만큼 올리(+8)거나(메모리 셀(240) 및 메모리 셀(240)의 우측의 두 개의 메모리 셀들의 케이스에서와 같이) 그렇지 않으면 메모리 셀에 전하를 추가하지 않을(+0) 수 있다(최 우측의 세 개의 메모리 셀들의 케이스에서와 같이).
추가적인 전기적 전하가 추가되는 이러한 메모리 셀들에 대해, 문턱 전압(Vth)이 변경되고, 따라서 메모리 셀(240)의 상태 레벨이, 예를 들어, "1 1 0 1"로 변경된다. 우측으로 다음 두 개의 메모리 셀들은 추가되는 추가적인 전기적 전하를 가지며, 이는 이들의 문턱 전압(Vth) 또한 변경됨을 의미하고, 따라서 이들의 상태 레벨이 각각 "1 1 0 1" 및 "1 0 1 0"으로 변경된다. 다음 세 개의 메모리 셀들은 프로그램 동작(P4) 동안에 추가되는 추가적인 전하를 갖지 않으며, 따라서 8의 비트 정보가 변경되지 않고 1의 비트, 2의 비트, 그리고 4의 비트 정보가 보존된다. 이러한 방법으로, 추가적인 전하가 추가되는지 아닌지에 관계없이, 1의 비트, 2의 비트, 4의 비트, 그리고 8의 비트 정보가 보존된다.
따라서, 메모리 셀들의 플로팅 게이트들(예를 들어, 도 1의 120)의 일부는 추가되는 전하(+8)를 받아 논리 값 0을 나타낸다. 또한, 메모리 셀들의 일부는 추가되는 전하를 받지 않아(+0) 논리 값 1을 나타낸다. 이러한 방법으로, "0 0 0 1 1 1"의 논리 값들이 메모리 셀들의 8의 비트 위치들에 프로그램될 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들의 어느 비트도 소거하지 않고, 제4 프로그램 동작(P4) 동안에 메모리 셀들의 각각의 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 제4 상태 레벨(예를 들어, 1011, 1101, 1010, 0000, 0100, 0001)을 프로그램할 수 있다. 프로그램 동작(P4)의 일부로서(또는 이후에), 메모리 제어 로직 섹션(210)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 프로그램의 네 레벨들이 발생했음을 가리키는 제5 값(V5)으로 설정할 수 있다.
일부 실시 예들에서, 페이지-레벨 재프로그램 상태 메타데이터(220)는 적어도 다섯 값들(V1, V2, V3, V4, V5)을 나타낼 수 있는 3-비트 값이다. 예를 들어, 페이지-레벨 재프로그램 상태 메타데이터(220)가 제1 값(V1) 또는 '000'과 등가적이면, 이는 특정한 메모리 페이지에서 프로그램이 발생하지 않았거나 그리고/또는 메모리 페이지가 소거되었음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제2 값(V2) 또는 '001'과 등가적이면, 이는 프로그램의 하나의 레벨이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제3 값(V3) 또는 '010'과 등가적이면, 이는 프로그램의 두 개의 레벨들이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제4 값(V4) 또는 '011'과 등가적이면, 이는 프로그램의 세 개의 레벨들이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제5 값(V5) 또는 '100'과 등가적이면, 이는 프로그램의 네 개의 레벨들이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)는 3-비트 값으로 한정될 필요가 없으며, 적절한 이진 표현을 이용하여 저장되고 액세스될 수 있음이 이해될 것이다. 페이지-레벨 재프로그램 상태 메타데이터(220) 값들에 대한 비트 값들의 다른 조합들이 여기에 게시된 본 발명의 실시 예들의 범위로부터 멀어지지 않고 사용될 수 있음이 이해될 것이다.
따라서, 프로그램 로직 섹션(215)은 제1 상태 레벨, 제2 상태 레벨, 제3 상태 레벨, 그리고 제4 상태 레벨의 프로그램 동안 또는 사이에, 메모리 셀들로부터 어느 비트도 소거하지 않고, 동일한 어드레스(즉, 메모리 셀(240)과 연관된 어드레스)에 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨(예를 들어, '0001'), 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 제2 상태 레벨(예를 들어, '0011'), 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제3 상태 레벨(예를 들어, '0011'), 그리고 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 제4 레벨(예를 들어, '1011')을 프로그램할 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들로부터 어느 비트도 삭제하지 않고 제1 프로그램 동작(P1) 동안에 메모리 셀들의 각각의 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨을 프로그램할 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들로부터 어느 비트도 삭제하지 않고 제2 프로그램 동작(P2) 동안에 메모리 셀들의 각각의 2의 두 번째 승(예를 들어, 2의 비트)과 연관된 제2 상태 레벨을 프로그램할 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들로부터 어느 비트도 삭제하지 않고 제3 프로그램 동작(P3) 동안에 메모리 셀들의 각각의 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제4 상태 레벨을 프로그램할 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들로부터 어느 비트도 삭제하지 않고 제4 프로그램 동작(P4) 동안에 메모리 셀들의 각각의 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 제4 상태 레벨을 프로그램할 수 있다.
메모리 셀들의 각각의 제4 상태 레벨(예를 들어, 1011, 1101, 1010, 0000, 0100, 0001)은 문턱 전압(Vth)의 제4 값에 대응할 수 있다. 문턱 전압(Vth)의 제4 값은 메모리 셀들의 각각의 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 비트 위치에 저장된 정보를 포함할 수 있다. 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)의 제5 값(V5)에 의존하여, 메모리 셀들의 각각의 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 비트 위치에 저장된 정보를 선택적으로 읽을 수 있다. 다시 말하면, 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 액세스하고, 제5 값(V5)을 판별하고, 판별에 기반하여 8의 비트 정보를 읽을 것을 알 수 있다. 이러한 읽기 동작은 8의 비트 정보가 프로그램된 후 어느 때건 발생할 수 있지만, 읽기가 위에서 설명된 프로그램 동작들을 성공적으로 수행하기 위해 필요하지는 않다.
따라서, 24 비트 스트링의 단일 쓰기만을 허용하고 다음 쓰기 동작의 전에 수반되는 소거 동작을 갖는 일반적인 기술들과 비교하여, 도 3a를 참조한 예시적인 실시 예는 쓰기 동작들의 사이에 끼워진 통상적인 소거 또는 읽기 동작들 없이, 복수의 6비트 스트링들이 4번까지 기입되는 것을 허용한다.
도 3b는 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 낸드 메모리에서 용량을 이용하여 소거 흐름 없는 재프로그램을 보여주는 또 다른 예시적인 블록 및 개념도(307)이다. 구성 요소들 및 흐름 설명의 일부는 도 2를 참조하여 제공되었으며, 따라서 이러한 것들의 상세한 설명은 반복되지는 않는다. 구체적인 차이점으로, 도 3b에 도시된 메모리 셀들 각각은 0000, 0001, 0010, 0011, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 및 1111의 이진 코드로 나타내어지는 열여섯 상태 레벨들을 포함한다. 이 예시적인 실시 예에서, 최 우측 비트는 여기에서 1의 비트로 참조되고, 다음 최 우측의 비트는 여기에서 2의 비트로 참조되고, 다다음 최 우측 비트는 여기에서 4의 비트로 참조되고, 그리고 최 좌측 비트는 여기에서 8의 비트로 참조된다.
일부 실시 예들에서, 1의 비트, 2의 비트, 4의 비트, 그리고 8의 비트 위치들은 네 개의 별도의 프로그램 동작들을 이용하여 차례로 프로그램 될 필요는 없다. 예를 들어, 2의 비트 및 4의 비트 위치들은 동일한 프로그램 동작 동안 프로그램 될 수 있다. 이 예에서, 1의 비트는 제1 프로그램 동작(예를 들어, P1)에서 프로그램 될 수 있고, 2의 비트 및 4의 비트는 제2 프로그램 동작(예를 들어, P2)에서 프로그램 될 수 있고, 그리고 8의 비트는 제3 프로그램 동작(예를 들어, P3)에서 프로그램 될 수 있다. 이는 총 세 개의 쓰기들을 달성하며, 쓰기들 중 하나는 다른 두 개의 프로그램 동작들보다 크다(예를 들어, 2 비트들). 낮은 차수 비트들이 나중의 쓰기들에 대해 재사용되지 않는 한, 1의 비트, 2의 비트, 4의 비트 및 8의 비트의 임의의 조합이 단일 프로그램 동작에서 기입될 수 있고, 적절한 상태 유지가 유지된다. 이는 더 다재다능한 다중 쓰기 시스템을 제공한다.
더 상세하게는, 예시적인 실시 예에서, 세 프로그램 동작들(예를 들어, P1, P2, P3)은 소거 동작(E1)이 필요하기 전에 수행될 수 있다. 제1 프로그램 동작(예를 들어, P1)은 도 2를 참조하여 위에서 설명된 프로그램 동작(P1)과 유사한 방식으로 수행될 수 있으며, 따라서, 이 동작의 상세한 설명은 반복되지 않는다. 제1 프로그램 동작(P1)이 완료된 후에, 2-비트 프로그램 동작(예를 들어, P2)이 수행될 수 있다.
“10, 01, 10, 11, 01, 11”의 이진 데이터가 메모리 셀(240)과 같은 대응하는 다중-레벨 메모리 셀들 및 메모리 셀(240)에 인접한 메모리 셀들에 프로그램 되는 프로그램 동작(P2)이 지금 설명된다. 다시 말하면, “10, 01, 10, 11, 01, 11”의 데이터 스트링에서 각 데이터 비트 쌍은 상이한 다중-레벨 메모리 셀들 내의 상이한 비트 위치들에 동시에 프로그램 될 수 있다. 프로그램 로직 섹션(215)은, 프로그램 되는 메모리 셀들의 어느 것의 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제2 값(V2)에 의존하여 제2 프로그램 동작(P2) 동안 다중-레벨 메모리 셀들 각각의 2의 두 번째 승(예를 들어, 2의 비트) 및 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제2 상태 레벨(예를 들어, 0011, 0101, 0010, 0000, 0100, 0001)을 프로그램 할 수 있다. “10, 01, 10, 11, 01, 11”의 데이터 스트링은 칩에서 “01, 10, 01, 00, 10, 00”의 데이터 값들로 저장될 수 있다. 다르게 말하면, 프로그램 동작(P2)은 이전 프로그램 동작(P1)의 두 배의 비트들을 갖는 하나의 값을 프로그램 할 수 있다. 예를 들어, 프로그램 동작(P2)은 선택적으로 단일 값들(예를 들어, 10, 01, 10, 11, 01, 11)로 읽혀질 수 있는 다중-비트 값들을 단일 프로그램 동작 동안 프로그램 할 수 있다.
더 상세하게는, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제2 값(V2)은, 특정한 메모리 페이지의 메모리 셀들(예를 들어, 240)에서 프로그램의 제1 레벨이 이미 발생했음을, 예를 들어 메모리 셀들(예를 들어, 240)의 문턱 전압(Vth)이 1의 비트 정보가 프로그램 되었음을 가리키는 특정한 상태 레벨들임을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제2 값(V2)인 것에 응답하여, 프로그램 로직 섹션(215)은 “10, 01, 10, 11, 01, 11”의 데이터의 각 데이터 비트가 프로그램 되는 것을 나타내도록 메모리 셀들(예를 들어, 240) 각각의 2의 비트 및 4의 비트를 프로그램할 수 있다. 이 예시적인 실시 예에서, 전기적 전하가 메모리 셀(240)에 추가되어, 메모리 셀들의 문턱 전압(Vth)이 “0 0 1 1”을 나타내는 상태 레벨로 올라간다.
이러한 프로그램 동작은 부가적이며, 메모리 셀(240)의 소거뿐 아니라 읽기도 필요로 하지 않는다. 다시 말하면, 프로그램 동작(P2) 동안에, 프로그램 로직 섹션(215)은 (i) 추가적인 전하를 두 레벨들만큼 추가하여 문턱 전압(Vth)을 올리거나(+2)(메모리 셀(240)의 케이스에서와 같이) 또는 그렇지 않으면 메모리 셀에 전하를 추가하지 않고(+0)(메모리 셀(240)의 우측의 메모리 셀의 케이스에서와 같이), 그리고 (ii) 추가적인 전하를 네 레벨들만큼 추가하여 문턱 전압(Vth)을 올리거나(+4)(메모리 셀(240)의 우측의 메모리 셀의 케이스에서와 같이) 또는 그렇지 않으면 메모리 셀에 전하를 추가하지 않을 수 있다(+0)(메모리 셀(240)의 케이스에서와 같이)
다르게 말하면, 상술된 설명은 동시에 2의 비트 및 4의 비트 위치들에 대한 쓰기로 구조화될 수 있으며, 칩에 저장되는 11, 10, 01 및 00의 데이터 비트들의 대해 추가될 수 있는 전하들은 각각 +0/+2/+4/+6을 포함한다. 일부 실시 예들에서, 11, 10, 01 및 00의 값들은 칩으로부터 각각 선택적으로 읽혀질 수 있다.
1의 비트 정보는 추가적인 전하가 추가되는지 아닌지에 관계없이 보존된다. 따라서, 메모리 셀들의 플로팅 게이트들(예를 들어, 도 1의 120)의 일부는 추가되는 전하(+2/+4/+6)를 받아 2 및 4의 위치에 저장된 2-비트 값을 나타낸다. 또한, 메모리 셀들의 일부는 추가되는 전하를 받지 않아(+0) 1의 논리 값을 나타낸다. 이러한 방법으로, “01, 10, 01, 00, 10, 00”의 값들은 메모리 셀들의 2의 비트 위치들 및 4의 비트 위치들에 프로그램 될 수 있다. 프로그램 로직 섹션(215)은 프로그램 되는 메모리 셀들 중 어느 비트도 소거하지 않고, 제2 프로그램 동작(P2) 동안에 메모리 셀들 각각의 2의 두 번째 승(예를 들어, 2의 비트) 및 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제2 상태 레벨(예를 들어, 0011, 0101, 0010, 0000, 0100, 0001)을 프로그램 할 수 있다. 프로그램 동작(P2)의 일부로서(또는 이후에), 메모리 제어 로직 섹션(210)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 제4 값(V4)으로 설정(즉, V3 값을 생략하고)할 수 있으며, 제4 값(V4)은 프로그램의 두 레벨들이 발생하였고, 이들 중 하나는 2-비트 프로그램 동작이었음을 가리킬 수 있다.
“0 0 0 1 1 1”의 이진 데이터가 메모리 셀(240)과 같은 대응하는 다중-레벨 메모리 셀들 및 메모리 셀(240)에 인접한 메모리 셀들에 프로그램 되는 제3 프로그램 동작(P3)이 지금 설명된다. 다시 말하면, “0 0 0 1 1 1”의 데이터 스트링에서 각 데이터 비트는 별도의 다중-레벨 메모리 셀에 프로그램 될 수 있다. 프로그램 로직 섹션(215),은 프로그램 되는 메모리 셀들의 어느 것의 제1 상태 레벨 그리고/또는 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제4 값(V4)에 의존하여 제3 프로그램 동작(P3) 동안에 다중-레벨 메모리 셀들 각각의 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 제3 상태 레벨(예를 들어, 1011, 1101, 1010, 0000, 0100, 0001)을 프로그램 할 수 있다.
더 상세하게는, 페이지-레벨 재프로그램 상태 메타데이터(220)의 제4 값(V4)은 프로그램의 제1 및 제2 레벨들(1의 비트, 2의 비트 및 4의 비트를 포함하는)이 특정한 메모리 페이지의 메모리 셀들(예를 들어, 240)에서 이미 발생하였음을, 예를 들어 메모리 셀들(예를 들어, 240)의 문턱 전압(Vth)이 적어도 4의 비트 정보가 프로그램 되었음을 가리키는 특정한 상태 레벨들임을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 제4 값(V4)인 것에 응답하여, 프로그램 로직 섹션(215)은 “0 0 0 1 1 1”의 데이터 스트링의 각 데이터 비트가 프로그램 됨을 나타내도록 메모리 셀들(예를 들어, 240)의 각각의 8의 비트를 프로그램할 수 있다. 이 예시적인 실시 예에서, 추가적인 전하가 메모리 셀(240)에 추가되어 문턱 전압(Vth)이 “1 0 1 1”을 나타내는 상태 레벨로 8 레벨들만큼 높아질 수 있다(+8). 이러한 방법으로, 추가적인 전하가 추가되는지 아닌지에 관계없이, 1의 비트, 2의 비트, 4의 비트 정보가 보존된다. 이러한 프로그램 동작은 부가적이며, 메모리 셀(240)의 소거뿐 아니라 읽기 또한 필요로 하지 않는다. 다시 말하면, 프로그램 동작(P3) 동안에, 프로그램 로직 섹션(215)은 추가적인 전하를 추가하여 문턱 전압(Vth)을 8 레벨들만큼 올리거나(+8)(메모리 셀(240), 그리고 메모리 셀(240)의 우측의 두 개의 메모리 셀들의 케이스에서와 같이), 또는 그렇지 않으면 메모리 셀에 전하를 추가하지 않을 수 있다(+0)(최우측 세 개의 메모리 셀들의 케이스에서와 같이).
추가적인 전기적 전하가 추가되는 메모리 셀들에 대해, 문턱 전압(Vth)이 변경되고, 따라서 메모리 셀(240)에 대한 상태 레벨이 예를 들어 “1 0 1 1”로 변경된다. 우측의 다음 두 메모리 셀들 또한 추가되는 추가적인 전기적 전하를 갖고, 이는 그들의 문턱 전압(Vth) 또한 변경됨을 의미하며, 따라서 그들의 상태 레벨은 각각 “1 1 0 1” 및 “1 0 1 0”으로 변경된다. 다음 세 메모리 셀들은 프로그램 동작(P3) 동안에 추가되는 추가적인 전하를 갖지 않고, 따라서 1의 비트, 2의 비트, 그리고 4의 비트 정보가 보존되고, 또한 8의 비트 정보도 변경되지 않고 남겨진다. 이러한 방법으로, 추가적인 전하가 추가되는지 아닌지에 관계없이, 1의 비트, 2의 비트, 4의 비트, 그리고 8의 비트 정보가 보존된다.
따라서, 메모리 셀들의 플로팅 게이트들(예를 들어, 도 1의 120)의 일부는 추가되는 전하를 받아(+8) 0의 논리 값을 나타낸다. 또한, 메모리 셀들의 일부는 추가되는 전하를 받지 않아(+0) 1의 논리 값을 나타낸다. 이러한 방법으로, “0 0 0 1 1 1”의 논리 값들이 메모리 셀들의 8의 비트 위치들에 프로그램 될 수 있다. 프로그램 로직 섹션(215)은, 프로그램 되는 메모리 셀들 중 어느 것도 소거하지 않고, 제3 프로그램 동작(P3) 동안에 메모리 셀들 각각의 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 제3 상태 레벨(예를 들어, 1011, 1101, 1010, 0000, 0100, 0001)을 프로그램할 수 있다. 프로그램 동작(P3)의 일부로서(또는 이후에), 메모리 제어 로직 섹션(210)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 제5 값(V5)으로 설정하며, 이는 프로그램의 네 레벨들이 발생하였음을 가리킨다.
일부 실시 예들에서, 페이지-레벨 재프로그램 상태 메타데이터(220)는 적어도 다섯 개의 값들(V1, V2, V3, V4, V5)을 나타낼 수 있는 3-비트 값이다. 예를 들어, 페이지-레벨 프로그램 상태 메타데이터(220)가 V1 또는 '000'과 같으면, 이는 특정한 메모리 페이지에서 프로그램이 발생하지 않았으며 그리고/또는 메모리 페이지가 소거되었음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 V2 또는 '001'과 같으면, 이는 1의 비트 프로그램이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 V3 또는 '010'과 같으면, 이는 2의 비트 프로그램이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)가 V4 또는 '011'과 같으면, 이는 4의 비트 프로그램이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 그리고 페이지-레벨 재프로그램 상태 메타데이터(220)가 V5 또는 '100'과 같으면, 이는 8의 비트 프로그램이 특정한 메모리 페이지에서 발생했음을 가리킬 수 있다. 페이지-레벨 재프로그램 상태 메타데이터(220)는 3-비트 값으로 한정될 필요가 없으며, 임의의 적절한 이진 표현을 이용하여 저장되고 액세스될 수 있음이 이해될 것이다. 페이지-레벨 재프로그램 상태 메타데이터(220) 값들에 대한 비트 값들의 다른 조합들이 여기에 기재된 본 발명의 실시 예들의 범위로부터 멀어지지 않으면서 사용될 수 있다.
따라서, 프로그램 로직 섹션(215)은, 제1 상태 레벨, 제2 상태 레벨, 그리고 제3 상태 레벨의 프로그램 동안 또는 사이에 메모리 셀들 중 어느 것도 소거하지 않고, 동일한 주소(즉, 메모리 셀(240)과 연관된 주소)에서 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨(예를 들어, '0001')을 프로그램하고, 2의 두 번째 승(예를 들어, 2의 비트) 및 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제2 상태 레벨(예를 들어, '0011')을 동시에 프로그램하고, 그리고 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 제3 상태 레벨(예를 들어, '1011')을 프로그램 할 수 있다. 프로그램 로직 섹션(215)은, 프로그램 되는 메모리 셀들 중 어느 것도 소거하지 않고, 제1 프로그램 동작(P1) 동안에 메모리 셀들 각각의 2의 첫 번째 승(예를 들어, 1의 비트)과 연관된 제1 상태 레벨을 프로그램 할 수 있다. 프로그램 로직 섹션(215)은, 프로그램 되는 메모리 셀들 중 어느 것도 소거하지 않고, 제2 프로그램 동작(P2) 동안에 메모리 셀들 각각의 2의 두 번째 승(예를 들어, 2의 비트) 및 2의 세 번째 승(예를 들어, 4의 비트)과 연관된 제2 상태 레벨을 동시에 프로그램 할 수 있다. 프로그램 로직 섹션(215)은, 프로그램 되는 메모리 셀들 중 어느 것도 소거하지 않고, 제3 프로그램 동작(P3) 동안에 메모리 셀들 각각의 2의 네 번째 승(예를 들어, 8의 비트)와 연관된 제3 상태 레벨을 프로그램할 수 있다.
메모리 셀들 각각의 제3 상태 레벨(예를 들어, 1011, 1101, 1010, 0000, 0100, 0001)은 문턱 전압(Vth)의 제3 값에 대응할 수 있다. 문턱 전압(Vth)의 제3 값은 메모리 셀들 각각의 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 비트 위치에 저장된 정보를 포함할 수 있다. 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)의 제5 값(V5)에 의존하여 메모리 셀들 각각의 2의 네 번째 승(예를 들어, 8의 비트)과 연관된 비트 위치에 저장된 정보를 선택적으로 읽을 수 있다. 다시 말하면, 읽기 로직 섹션(235)은 페이지-레벨 재프로그램 상태 메타데이터(220)를 액세스하고, 페이지-레벨 재프로그램 상태 메타데이터(220)가 제5 값(V5)을 갖는지 판단하고, 그리고 판단에 기반하여 8의 비트 정보를 읽을 것을 알 수 있다. 이러한 읽기 동작은 8의 비트 정보가 프로그램된 후 어느 때에도 발생할 수 있지만, 읽기는 위에서 설명된 프로그램 동작이 성공적으로 수행되기 위해 필요하지는 않다.
따라서, 네 번 쓰여지는 단지 6개의 비트 스트링들만을 허용하는 도 3a의 예시적인 실시 예와 비교하면, 도 3b와 연관된 예시적인 실시 예는 쓰기 동작들 사이에 끼어드는 통상적인 소거 또는 읽기 동작들 없이 훨씬 큰 유연성을 허용한다. 도 3b를 참조하여 상세히 설명된 바와 같이, 기입될 데이터 스트링은 다중 비트 쌍들(예를 들어, 10, 01, 10, 11, 01, 11)을 포함할 수 있다. 비트 삼중 쌍들이 유사한 방식으로 기입될 수 있음이 이해될 것이다. 또한, 비트 단일들 유사한 방식으로 기입될 수 있음이 또한 이해될 것이다. 실제로, 비트 단일들, 비트 쌍들, 비트 삼중 쌍들, 비트 사중 쌍들 등의 임의의 적절한 조합이 여기에 기재된 실시 예들에 따라 다중-레벨 메모리 셀들에 동시에 기입될 수 있다. 예를 들어, 하나의 24 비트 쓰기, 두 개의 12 비트 쓰기들, 네 개의 6 비트 쓰기들 등이 잇달아 수행될 수 있다. 두 개의 12 비트 쓰기들의 경우에, 예를 들어, 첫 번째 12 비트 쓰기는 12 비트들의 동시 프로그램을 포함하고, 프로그램 동작들 사이에 끼어드는 통상적인 소거 또는 읽기 동작들 없이, 또 다른 12 비트들의 또 다른 동시 프로그램을 포함하는 두 번째 12 비트 쓰기가 후속될 수 있다. 또 다른 예시적인 방법으로, 프로그램 동작들 사이에 끼어드는 통상의 소거 또는 읽기 동작들 없이, 두 개의 6 비트 쓰기들에 하나의 12 비트 쓰기가 잇달아 수행될 수 있다. 또 다른 예시적인 방법으로, 프로그램 동작들 사이에 끼어드는 통상의 소거 또는 읽기 동작들 없이, 하나의 6 비트 쓰기에 하나의 18 비트 쓰기가 후속할 수 있다. 낮은 차수의 비트들이 나중의 쓰기들에 대해 재사용되지 않는 한, 프로그램 동작들 사이에 끼어드는 통상의 소거 또는 읽기 동작들 없이 상이한 비트 쓰기들의 임의의 적절한 조합이 잇달아 수행될 수 있으며, 적절한 상태 유지가 유지될 수 있다.
도 4는 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 메모리 셀들에서 용량을 이용한 소거 없는 프로그램을 위한 기술을 보여주는 순서도(400)이다. 405에서, 메모리 제어 로직 섹션은 페이지-레벨 재프로그램 상태 메타데이터를 저장할 수 있다. 예를 들어, 이전 프로그램 레벨이 다음 프로그램 레벨 위해 참조되는 페이지-레벨 재프로그램 상태 메타데이터로 저장될 수 있다. 더 상세하게는, 페이지-레벨 재프로그램 상태 메타데이터는 특정한 메모리 페이지의 메모리 셀들에 아직 정보가 저장되지 않았음을, 또는 프로그램의 제1, 제2, 제3, 제4 등의 레벨들이 특정한 메모리 페이지의 메모리 셀들에서 이미 발생하였음을 가리킬 수 있다. 410에서, 프로그램 로직 섹션은 페이지-레벨 재프로그램 상태 메타데이터의 제1 값에 의존하여 복수의 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제1 상태 레벨을 프로그램할 수 있다. 415에서, 프로그램 로직 섹션은 프로그램 되는 메모리 셀들의 어느 것의 제1 상태 레벨을 읽지 않고, 그리고 프로그램 되는 메모리 셀들 중에서 어느 비트도 소거하지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 복수의 메모리 셀들의 각각의 2의 제2 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제2 상태 레벨을 프로그램할 수 있다. 420에서, 프로그램 로직 섹션은 프로그램 되는 메모리 셀들의 어느 것의 제1 상태 레벨 그리고/또는 제2 상태 레벨을 읽지 않고, 그리고 프로그램 되는 메모리 셀들 중에서 어느 비트도 소거하지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 복수의 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램할 수 있다. 단계들은 도시된 순서로 수행될 필요가 없으며, 중간 단계들을 갖고 그리고/또는 다른 순서로 수행될 수 있다. 또한, 플래시 셀이 정보의 더 많은 레벨들을 가질 수 있는 실시 예들에서 특정한 단계들이 반복될 수 있다.
도 5는 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 메모리 셀들에서 용량을 이용한 소거 없는 프로그램을 위한 또 다른 기술을 보여주는 순서도(500)이다. 505에서, 페이지-레벨 재프로그램 상태 메타데이터의 현재 값에 대한 판별이 행해진다.
값이 메모리 페이지가 현재 소거된 상태임을 의미하는 제1 값(V1)이면, 흐름은 복수의 메모리 셀들의 각각의 제1 상태 레벨이 프로그램될 수 있는 510으로 진행한다. 값이 마지막 소거 동작 이후로 하나의 프로그램 레벨이 발생했음을 의미하는 제2 값(V2)이면, 흐름은 프로그램될 복수의 메모리 셀들의 어느 것의 제1 상태 레벨을 읽지 않고, 그리고 프로그램될 메모리 셀들 중 어느 비트도 소거하지 않고, 복수의 메모리 셀들의 각각의 제2 상태 레벨이 프로그램될 수 있는 515로 진행한다. 값이 마지막 소거 동작 이후로 두 개의 프로그램 레벨들이 발생했음을 의미하는 제3 값(V3)이면, 흐름은 프로그램될 복수의 메모리 셀들의 어느 것의 제1 상태 레벨 그리고/또는 제2 상태 레벨을 읽지 않고, 그리고 프로그램될 메모리 셀들 중 어느 비트도 소거하지 않고, 복수의 메모리 셀들의 각각의 제3 상태 레벨이 프로그램될 수 있는 520으로 진행한다. 값이 마지막 소거 동작 이후로 (N-1)개의 프로그램 레벨들이 발생했음을 의미하는 제N 값(VN)이면, 흐름은 프로그램될 복수의 메모리 셀들의 어느 것의 이전 (N-1) 상태 레벨들을 읽지 않고, 그리고 프로그램될 메모리 셀들 중 어느 비트도 소거하지 않고, 복수의 메모리 셀들의 각각의 제N 상태 레벨이 프로그램될 수 있는 525로 진행한다. 단계들은 도시된 순서도 수행될 필요가 없으며, 중간 단계들과 그리고/또는 다른 순서로 수행될 수 있다. 또한, 유사한 단계들이 페이지를 포함하는 셀들의 저장 용량들에 기반하여 추가되거나 제거될 수 있다.
도 6은 본 발명의 기술적 사상의 실시 예들에 따른 다중-레벨 메모리 셀들로부터 정보를 읽기 위한 기술을 보여주는 순서도(600)이다. 605에서, 페이지-레벨 재프로그램 상태 메타데이터의 현재 값에 대해 판단이 행해진다. 값이 메모리 페이지에서 하나의 프로그램 레벨이 발생했음을 가리키는 제2 값(V2)이면, 흐름은 각 메모리 셀의 1의 비트에 저장된 정보가 읽혀지는 610으로 진행하며, 625에서 상보되어(complemented) 원래 논리 값이 획득된다. 값이 메모리 페이지에서 두 개의 프로그램 레벨들이 발생했음을 가리키는 제3 값(V3)이면, 흐름은 각 메모리 셀의 2의 비트에 저장된 정보가 읽혀지는 615로 진행하며, 625에서 상보되어 원래 논리 값이 획득된다. 값이 메모리 페이지에서 세 개의 프로그램 레벨들이 발생했음을 가리키는 제4 값(V4)이면, 흐름은 각 메모리 셀의 4의 비트에 저장된 정보가 읽혀지는 620로 진행한다. 각 메모리 셀의 1의, 2의 또는 4의 비트 등을 읽은 후에, 해당 비트의 보수가 625에서 판별되어, 예를 들어 도 2 및 도 3a에 도시된 최종 논리 값이 획득된다. 단계들은 도시된 순서대로 수행될 필요가 없으며, 중간 단계들을 갖고 그리고/또는 다른 순서로 수행될 수 있다. 또한, 위에서 설명된 바와 같이, 이전에 저장된 값들이 읽혀지고 상보될 수 있다.
도 7은 여기에 게시된 본 발명의 기술적 사상의 실시 예들에 따른 도 2의 메모리 제어 로직 섹션(210)을 포함하는 컴퓨팅 시스템(700)의 예시적인 블록도이다. 메모리 제어기(745)는 위에서 설명된 메모리 제어 로직 섹션(210)을 포함할 수 있다. 메모리 제어기(745)는 시스템 서브(705)와 전기적으로 연결될 수 있다. 컴퓨팅 시스템(700)은 또한 다중-레벨 낸드 메모리(730), 클럭(710), 랜덤 액세스 메모리(RAM)(715), 사용자 인터페이스(720), 베이스밴드 칩셋과 같은 모뎀(725), 그리고/또는 자동화된 테스트 장비(ATE)(735)를 포함할 수 있으며, 이들 전부 또는 어느 것은 시스템 버스(705)와 전기적으로 결합될 수 있다.
컴퓨팅 시스템(700)이 모바일 장치이면, 컴퓨팅 시스템(700)에 전원을 공급하는 배터리(740)를 더 포함할 수 있다. 도 7에 도시되지 않지만, 컴퓨팅 시스템(700)은 응용 칩셋, 카메라 이미지 프로세서(CIS), 모바일 DRAM 등을 더 포함할 수 있다. 메모리 제어기(745) 및 다중-레벨 낸드 메모리(730)는 데이터를 저장하는 데에 불휘발성 메모리를 사용하는 솔리드 스테이트 드라이브/디스크(SSD)를 형성할 수 있다.
예시적인 실시 예들에서, 컴퓨팅 시스템(700)은 컴퓨터, 포터블 컴퓨터, 울트라 모바일 PC (UMPC), 워크스테이션, 넷-북, PDA, 웹 태블릿, 무선 전화, 모바일 전화, 스마트폰, 전자책, PMP (portable multimedia player), 디지털 카메라, 디지털 오디로 기록기/재생기, 디지털 화면/영상 기록기/재생기, 포터블 게임 기계, 네비게이션 시스템, 블랙 박스, 3차원 텔레비전, 무선 환경에서 정보를 송신 및 수신할 수 있는 장치, 홈 네트워크를 형성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 형성하는 다양한 전자 장치들 중 하나, RFID, 또는 컴퓨팅 시스템을 형성하는 다양한 전자 장치들 중 하나로 사용될 수 있다.
일부 실시 예들은 각각 복수의 프로그램 가능한 상태 레벨들을 갖는 복수의 메모리 셀들을 포함하는 하나 또는 그보다 많은 메모리 페이지들, 그리고 하나 또는 그보다 많은 메모리 페이지들과 결합되고, 프로그램 로직 섹션 및 페이지-레벨 재프로그램 상태 메타데이터를 포함하는 메모리 제어 로직 섹션을 포함하는 메모리 장치를 포함한다. 일부 실시 예들에서, 프로그램 로직 섹션은 페이지-레벨 재프로그램 상태 메타데이터의 제1 값에 의존하여 복수의 메모리 셀들의 제1 프로그램에서 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제1 상태 레벨을 프로그램 하도록 구성된다. 일부 실시 예들에서, 프로그램 로직 섹션은 복수의 메모리 셀들의 어느 것의 제1 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 복수의 메모리 셀들의 제2 프로그램에서 메모리 셀들의 각각의 2의 제2 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제2 상태 레벨을 프로그램 하도록 구성된다.
일부 실시 예들에서, 프로그램 로직 섹션은 복수의 메모리 셀들의 어느 것의 제1 상태 레벨 및 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 복수의 메모리 셀들의 제3 프로그램에서 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하도록 구성된다. 일부 실시 예들에서, 프로그램 로직 섹션은 제1 상태 레벨, 제2 상태 레벨, 그리고 제3 상태 레벨의 프로그램 동안 또는 사이에 복수의 메모리 셀들 중 어느 비트도 삭제하지 않고, 메모리 셀들의 각각의 동일한 어드레스에서 제1 상태 레벨, 제2 상태 레벨, 그리고 제3 상태 레벨을 프로그램 하도록 구성된다.
2의 제1 내지 제N 번째 승 중에서 2의 첫 번째 승은 1의 비트 위치에 대응하고, 2의 제1 내지 제N 번째 승 중에서 2의 두 번째 승은 2의 비트 위치에 대응하고, 2의 제1 내지 제N 번째 승 중에서 2의 세 번째 승은 4의 비트 위치에 대응하고, 그리고 2의 제1 내지 제N 번째 승 중에서 상기 2의 제N 번째 승은 2(N-1)의 비트 위치에 대응한다.
일부 실시 예들에서, 프로그램 로직 섹션은 제1 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제1 상태 레벨을 프로그램 하도록 구성된다. 일부 실시 예들에서, 프로그램 로직 섹션은 제2 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제2 상태 레벨을 프로그램 하도록 구성된다.
일부 실시 예들에서, 프로그램 로직 섹션은 복수의 메모리 셀들의 어느 것의 제1 상태 레벨 및 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 복수의 메모리 셀들의 제3 프로그램에서 메모리 셀들의 각각의 제3 상태 레벨을 프로그램 하도록 구성된다. 일부 실시 예들에서, 프로그램 로직 섹션은 제1 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제1 상태 레벨을 프로그램 하도록 구성된다. 일부 실시 예들에서, 프로그램 로직 섹션은 제2 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제2 상태 레벨을 프로그램 하도록 구성된다. 일부 실시 예들에서, 프로그램 로직 섹션은 제3 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제3 상태 레벨을 프로그램 하도록 구성된다.
일부 실시 예들에서, 메모리 제어 로직 섹션은 읽기 로직 섹션을 포함한다. 일부 실시 예들에서, 메모리 셀들의 각각의 제1 상태 레벨은 문턱 전압의 제1 값에 대응한다. 일부 실시 예들에서, 문턱 전압의 제1 값은 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함한다. 일부 실시 예들에서, 읽기 로직 섹션은 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 읽도록 구성된다.
일부 실시 예들에서, 메모리 셀들의 각각의 제2 상태 레벨은 문턱 전압의 제2 값에 대응하고, 문턱 전압의 제2 값은 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함하고, 읽기 로직 섹션은 페이지-레벨 재프로그램 상태 메타데이터에 의존하여 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 읽도록 구성된다.
일부 실시 예들에서, 프로그램 로직 섹션은 복수의 메모리 셀들의 어느 것의 제1 또는 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 복수의 메모리 셀들의 제3 프로그램에서 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하도록 구성된다. 일부 실시 예들에서, 메모리 셀들의 각각의 제3 상태 레벨은 문턱 전압의 제3 값에 대응한다. 일부 실시 예들에서, 문턱 전압의 제3 값은 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함한다. 일부 실시 예들에서, 읽기 로직 섹션은 페이지-레벨 재프로그램 상태 메타데이터의 제4 값에 의존하여 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 읽도록 구성된다.
일부 실시 예들에서, 메모리 제어 로직 섹션은 메모리 셀들의 각각의 제1 상태 레벨의 프로그램 후에, 페이지-레벨 재프로그램 상태 메타데이터를 제2 값으로 설정하도록 구성된다. 일부 실시 예들에서, 메모리 제어 로직 섹션은 메모리 셀들의 각각의 제2 상태 레벨의 프로그램 후에, 페이지-레벨 재프로그램 상태 메타데이터를 제3 값으로 설정하도록 구성된다.
일부 실시 예들에서, 프로그램 로직 섹션은 복수의 메모리 셀들의 제1 상태 레벨 및 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하도록 구성된다. 일부 실시 예들에서, 메모리 제어 로직 섹션은 메모리 셀들의 각각의 제3 상태 레벨의 프로그램 후에, 페이지-레벨 재프로그램 상태 메타데이터를 제4 값으로 설정하도록 구성된다.
일부 실시 예들은 다중-레벨 불휘발성 메모리 셀들을 프로그램 하는 방법을 포함한다. 방법은 메모리 제어 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터를 저장하는 단계를 포함할 수 있다. 방법은 메모리 제어 로직 섹션의 프로그램 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터에 의존하여 메모리 페이지의 복수의 메모리 셀들을 프로그램 하는 단계를 포함할 수 있다. 방법은 프로그램 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터의 제1 값에 의존하여 복수의 메모리 셀들의 제1 프로그램에서 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제1 상태 레벨을 프로그램 하는 단계를 포함할 수 있다. 방법은 프로그램 로직 섹션에 의해, 복수의 메모리 셀들의 제1 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 복수의 메모리 셀들의 제2 프로그램에서 메모리 셀들의 각각의 2의 제2 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제2 상태 레벨을 프로그램 하는 단계를 포함할 수 있다.
방법은 프로그램 로직 섹션에 의해, 복수의 메모리 셀들의 어느 것의 제1 상태 레벨 및 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 복수의 메모리 셀들의 제3 프로그램에서 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하는 단계를 포함할 수 있다. 방법은 프로그램 로직 섹션에 의해, 제1 상태 레벨, 제2 상태 레벨, 그리고 제3 상태 레벨의 프로그램 동안 또는 사이에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 동일한 어드레스에서 제1 상태 레벨, 제2 상태 레벨, 그리고 제3 상태 레벨을 프로그램 하는 단계를 포함할 수 있다.
방법은 프로그램 로직 섹션에 의해, 제1 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제1 상태 레벨을 프로그램 하는 단계를 포함할 수 있다. 방법은 프로그램 로직 섹션에 의해, 제2 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제2 상태 레벨을 프로그램 하는 단계를 포함할 수 있다.
방법은 프로그램 로직 섹션에 의해, 복수의 메모리 셀들의 어느 것의 제1 상태 레벨 및 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 복수의 메모리 셀들의 제3 프로그램에서 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하는 단계를 포함할 수 있다. 방법은 프로그램 로직 섹션에 의해, 제1 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제1 상태 레벨을 프로그램 하는 단계를 포함할 수 있다. 방법은 프로그램 로직 섹션에 의해, 제2 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제2 상태 레벨을 프로그램 하는 단계를 포함할 수 있다. 방법은 프로그램 로직 섹션에 의해, 제3 프로그램 동안에 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 메모리 셀들의 각각의 제3 상태 레벨을 프로그램 하는 단계를 포함할 수 있다.
일부 실시 예들에서, 메모리 셀들의 각각의 제1 상태 레벨은 문턱 전압의 제1 값에 대응하고, 문턱 전압의 제1 값은 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함한다. 방법은 메모리 제어 로직 섹션의 읽기 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 읽는 단계를 포함할 수 있다. 일부 실시 예들에서, 메모리 셀들의 각각의 제2 상태 레벨은 문턱 전압의 제2 값에 대응하고, 문턱 전압의 제2 값은 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함한다. 방법은 읽기 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 읽는 단계를 포함할 수 있다.
방법은 프로그램 로직 섹션에 의해, 복수의 메모리 셀들의 어느 것의 제1 상태 레벨 및 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 복수의 메모리 셀들의 제3 프로그램에서 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하는 단계를 포함할 수 있다. 일부 실시 예들에서, 메모리 셀들의 각각의 제3 상태 레벨은 문턱 전압의 제3 값에 대응한다. 일부 실시 예들에서, 문턱 전압의 제3 값은 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함한다. 방법은 읽기 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터의 제4 값에 의존하여 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 읽는 단계를 포함할 수 있다.
방법은 메모리 제어 로직 섹션에 의해, 메모리 셀들 각각의 제1 상태 레벨을 프로그램 후에 페이지-레벨 재프로그램 상태 메타데이터를 제2 값으로 설정하는 단계를 포함할 수 있다. 방법은 메모리 제어 로직 섹션에 의해, 메모리 셀들 각각의 제2 상태 레벨의 프로그램 후에 페이지-레벨 재프로그램 상태 메타데이터를 제3 값으로 설정하는 단계를 포함할 수 있다.
방법은 프로그램 로직 섹션에 의해, 복수의 메모리 셀들의 어느 것의 제1 상태 레벨 및 제2 상태 레벨을 읽지 않고, 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 복수의 메모리 셀들의 제3 프로그램에서 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하는 단계를 포함할 수 있다. 방법은 메모리 제어 로직 섹션에 의해, 메모리 셀들의 각각의 제3 상태 레벨의 프로그램 후에 페이지-레벨 재프로그램 상태 메타데이터를 제4 값으로 설정하는 단계를 포함할 수 있다.
본 발명의 기술적 사상의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행 가능하며, 여기에 게시된 본 발명의 기술적 사상의 원소들을 수행하는 명령들을 포함하는 비임시의 기계로 독출 가능한 매체를 포함할 수 있다.
105: 소스
110: 드레인
115: 제어 게이트
120: 플로팅 게이트
125: 절연체
130: 절연체
210: 메모리 제어 로직 섹션
215: 프로그램 로직 섹션
220: 페이지-레벨 재프로그램 상태 메타데이터
235: 읽기 로직 섹션
700: 컴퓨팅 시스템
705: 시스템 버스
710: 클럭
715: 랜덤 액세스 메모리
720: 사용자 인터페이스
725: 모뎀
730: 다중-레벨 낸드 메모리
735: 자동화된 테스트 장치
740: 배터리
745: 메모리 제어기

Claims (20)

  1. 각각 복수의 프로그램 가능한 상태 레벨들을 갖는 복수의 메모리 셀들을 포함하는 하나 또는 그보다 많은 메모리 페이지들; 그리고
    상기 하나 또는 그보다 많은 메모리 페이지들과 결합되고, 프로그램 로직 섹션 및 페이지-레벨 재프로그램 상태 메타데이터를 포함하는 메모리 제어 로직 섹션을 포함하고,
    상기 프로그램 로직 섹션은 상기 페이지-레벨 재프로그램 상태 메타데이터의 제1 값에 의존하여 상기 복수의 메모리 셀들의 제1 프로그램에서 상기 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제1 상태 레벨을 프로그램 하도록 구성되고, 그리고
    상기 프로그램 로직 섹션은 상기 복수의 메모리 셀들의 어느 것의 상기 제1 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 상기 복수의 메모리 셀들의 제2 프로그램에서 상기 메모리 셀들의 각각의 2의 제2 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제2 상태 레벨을 프로그램 하도록 구성되는 메모리 장치.
  2. 제1항에 있어서,
    상기 프로그램 로직 섹션은 상기 복수의 메모리 셀들의 어느 것의 상기 제1 상태 레벨 및 상기 제2 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 상기 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하도록 구성되고, 그리고
    상기 프로그램 로직 섹션은 상기 제1 상태 레벨, 상기 제2 상태 레벨, 그리고 상기 제3 상태 레벨의 프로그램 동안 또는 사이에 상기 복수의 메모리 셀들 중 어느 비트도 삭제하지 않고, 상기 메모리 셀들의 각각의 동일한 어드레스에서 상기 제1 상태 레벨, 상기 제2 상태 레벨, 그리고 상기 제3 상태 레벨을 프로그램 하도록 구성되는 메모리 장치.
  3. 제2항에 있어서,
    상기 2의 제1 내지 제N 번째 승 중에서 2의 첫 번째 승은 1의 비트 위치에 대응하고,
    상기 2의 제1 내지 제N 번째 승 중에서 2의 두 번째 승은 2의 비트 위치에 대응하고,
    상기 2의 제1 내지 제N 번째 승 중에서 2의 세 번째 승은 4의 비트 위치에 대응하고, 그리고
    상기 2의 제1 내지 제N 번째 승 중에서 상기 2의 제N 번째 승은 2(N-1)의 비트 위치에 대응하는 메모리 장치.
  4. 제1항에 있어서,
    상기 프로그램 로직 섹션은 상기 제1 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제1 상태 레벨을 프로그램 하도록 구성되고, 그리고
    상기 프로그램 로직 섹션은 상기 제2 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제2 상태 레벨을 프로그램 하도록 구성되는 메모리 장치.
  5. 제1항에 있어서,
    상기 프로그램 로직 섹션은 상기 복수의 메모리 셀들의 어느 것의 상기 제1 상태 레벨 및 상기 제2 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 상기 메모리 셀들의 각각의 제3 상태 레벨을 프로그램 하도록 구성되고,
    상기 프로그램 로직 섹션은 상기 제1 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제1 상태 레벨을 프로그램 하도록 구성되고,
    상기 프로그램 로직 섹션은 상기 제2 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제2 상태 레벨을 프로그램 하도록 구성되고, 그리고
    상기 프로그램 로직 섹션은 상기 제3 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제3 상태 레벨을 프로그램 하도록 구성되는 메모리 장치.
  6. 제1항에 있어서,
    상기 메모리 제어 로직 섹션은 읽기 로직 섹션을 포함하고,
    상기 메모리 셀들의 각각의 상기 제1 상태 레벨은 문턱 전압의 제1 값에 대응하고,
    상기 문턱 전압의 상기 제1 값은 상기 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함하고, 그리고,
    상기 읽기 로직 섹션은 상기 페이지-레벨 재프로그램 상태 메타데이터의 상기 제2 값에 의존하여 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 상기 비트 위치들에 저장된 상기 정보를 읽도록 구성되는 메모리 장치.
  7. 제6항에 있어서,
    상기 메모리 셀들의 각각의 상기 제2 상태 레벨은 상기 문턱 전압의 제2 값에 대응하고,
    상기 문턱 전압의 제2 값은 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 상기 비트 위치들에 저장된 정보를 포함하고,
    상기 읽기 로직 섹션은 상기 페이지-레벨 재프로그램 상태 메타데이터에 의존하여 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 상기 비트 위치들에 저장된 상기 정보를 읽도록 구성되는 메모리 장치.
  8. 제7항에 있어서,
    상기 프로그램 로직 섹션은 상기 복수의 메모리 셀들의 어느 것의 상기 제1 또는 제2 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 상기 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하도록 구성되고,
    상기 메모리 셀들의 각각의 상기 제3 상태 레벨은 상기 문턱 전압의 제3 값에 대응하고,
    상기 문턱 전압의 제3 값은 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함하고,
    상기 읽기 로직 섹션은 상기 페이지-레벨 재프로그램 상태 메타데이터의 제4 값에 의존하여 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 상기 비트 위치들에 저장된 상기 정보를 읽도록 구성되는 메모리 장치.
  9. 제1항에 있어서,
    상기 메모리 제어 로직 섹션은 상기 메모리 셀들의 각각의 상기 제1 상태 레벨의 프로그램 후에, 상기 페이지-레벨 재프로그램 상태 메타데이터를 상기 제2 값으로 설정하도록 구성되고,
    상기 메모리 제어 로직 섹션은 상기 메모리 셀들의 각각의 상기 제2 상태 레벨의 프로그램 후에, 상기 페이지-레벨 재프로그램 상태 메타데이터를 제3 값으로 설정하도록 구성되는 메모리 장치.
  10. 제9항에 있어서,
    상기 프로그램 로직 섹션은 상기 복수의 메모리 셀들의 상기 제1 상태 레벨 및 상기 제2 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 상기 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하도록 구성되고,
    상기 메모리 제어 로직 섹션은 상기 메모리 셀들의 각각의 상기 제3 상태 레벨의 프로그램 후에, 상기 페이지-레벨 재프로그램 상태 메타데이터를 제4 값으로 설정하도록 구성되는 메모리 장치.
  11. 다중-레벨 불휘발성 메모리 셀들을 프로그램 하는 방법에 있어서:
    메모리 제어 로직 섹션에 의해, 페이지-레벨 재프로그램 상태 메타데이터를 저장하는 단계;
    상기 메모리 제어 로직 섹션의 프로그램 로직 섹션에 의해, 상기 페이지-레벨 재프로그램 상태 메타데이터에 의존하여 메모리 페이지의 복수의 메모리 셀들을 프로그램 하는 단계;
    상기 프로그램 로직 섹션에 의해, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제1 값에 의존하여 상기 복수의 메모리 셀들의 제1 프로그램에서 상기 메모리 셀들의 각각의 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제1 상태 레벨을 프로그램 하는 단계; 그리고
    상기 프로그램 로직 섹션에 의해, 상기 복수의 메모리 셀들의 상기 제1 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제2 값에 의존하여 상기 복수의 메모리 셀들의 제2 프로그램에서 상기 메모리 셀들의 각각의 2의 제2 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제2 상태 레벨을 프로그램 하는 단계를 포함하는 방법.
  12. 제11항에 있어서,
    상기 프로그램 로직 섹션에 의해, 상기 복수의 메모리 셀들의 어느 것의 상기 제1 상태 레벨 및 상기 제2 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 상기 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하는 단계; 그리고
    상기 프로그램 로직 섹션에 의해, 상기 제1 상태 레벨, 상기 제2 상태 레벨, 그리고 상기 제3 상태 레벨의 프로그램 동안 또는 사이에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 동일한 어드레스에서 상기 제1 상태 레벨, 상기 제2 상태 레벨, 그리고 상기 제3 상태 레벨을 프로그램 하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 2의 제1 내지 제N 번째 승 중에서 2의 첫 번째 승은 1의 비트 위치에 대응하고,
    상기 2의 제1 내지 제N 번째 승 중에서 2의 두 번째 승은 2의 비트 위치에 대응하고, 그리고
    상기 2의 제1 내지 제N 번째 승 중에서 2의 세 번째 승은 4의 비트 위치에 대응하고,
    상기 2의 제1 내지 제N 번째 승 중에서 2의 N번째 승은 2(N-1)의 비트 위치에 대응하는 방법.
  14. 제11항에 있어서,
    상기 프로그램 로직 섹션에 의해, 상기 제1 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제1 상태 레벨을 프로그램 하는 단계; 그리고
    상기 프로그램 로직 섹션에 의해, 상기 제2 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제2 상태 레벨을 프로그램 하는 단계를 더 포함하는 방법.
  15. 제11항에 있어서,
    상기 프로그램 로직 섹션에 의해, 상기 복수의 메모리 셀들의 어느 것의 상기 제1 상태 레벨 및 상기 제2 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 상기 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하는 단계;
    상기 프로그램 로직 섹션에 의해, 상기 제1 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제1 상태 레벨을 프로그램 하는 단계;
    상기 프로그램 로직 섹션에 의해, 상기 제2 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제2 상태 레벨을 프로그램 하는 단계; 그리고
    상기 프로그램 로직 섹션에 의해, 상기 제3 프로그램 동안에 상기 복수의 메모리 셀들 중 어느 비트도 소거하지 않고, 상기 메모리 셀들의 각각의 상기 제3 상태 레벨을 프로그램 하는 단계를 더 포함하는 방법.
  16. 제11항에 있어서,
    상기 메모리 셀들의 각각의 상기 제1 상태 레벨은 문턱 전압의 제1 값에 대응하고, 상기 문턱 전압의 상기 제1 값은 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함하고,
    상기 방법은:
    상기 메모리 제어 로직 섹션의 읽기 로직 섹션에 의해, 상기 페이지-레벨 재프로그램 상태 메타데이터의 상기 제2 값에 의존하여 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 상기 비트 위치들에 저장된 상기 정보를 읽는 단계를 더 포함하는 방법.
  17. 제16항에 있어서,
    상기 메모리 셀들의 각각의 상기 제2 상태 레벨은 상기 문턱 전압의 제2 값에 대응하고, 상기 문턱 전압의 상기 제2 값은 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함하고,
    상기 방법은:
    상기 읽기 로직 섹션에 의해, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제3 값에 의존하여 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 상기 비트 위치들에 저장된 상기 정보를 읽는 단계를 더 포함하는 방법.
  18. 제17항에 있어서,
    상기 프로그램 로직 섹션에 의해, 상기 복수의 메모리 셀들의 어느 것의 상기 제1 상태 레벨 및 상기 제2 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 상기 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 상기 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하는 단계를 더 포함하고,
    상기 메모리 셀들의 각각의 상기 제3 상태 레벨은 상기 문턱 전압의 제3 값에 대응하고,
    상기 문턱 전압의 상기 제3 값은 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 비트 위치들에 저장된 정보를 포함하고, 그리고
    상기 방법은:
    상기 읽기 로직 섹션에 의해, 상기 페이지-레벨 재프로그램 상태 메타데이터의 제4 값에 의존하여 상기 메모리 셀들의 각각의 상기 2의 제1 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 상기 비트 위치들에 저장된 상기 정보를 읽는 단계를 더 포함하는 방법.
  19. 제11항에 있어서,
    상기 메모리 제어 로직 섹션에 의해, 상기 메모리 셀들 각각의 상기 제1 상태 레벨을 프로그램 후에 상기 페이지-레벨 재프로그램 상태 메타데이터를 상기 제2 값으로 설정하는 단계; 그리고
    상기 메모리 제어 로직 섹션에 의해, 상기 메모리 셀들 각각의 상기 제2 상태 레벨의 프로그램 후에 상기 페이지-레벨 재프로그램 상태 메타데이터를 제3 값으로 설정하는 단계를 더 포함하는 방법.
  20. 제19항에 있어서,
    상기 프로그램 로직 섹션에 의해, 상기 복수의 메모리 셀들의 어느 것의 상기 제1 상태 레벨 및 상기 제2 상태 레벨을 읽지 않고, 상기 페이지-레벨 재프로그램 상태 메타데이터의 상기 제3 값에 의존하여 상기 복수의 메모리 셀들의 제3 프로그램에서 상기 메모리 셀들의 각각의 2의 제3 내지 제N 번째 승 중 하나 또는 그보다 많은 것과 연관된 제3 상태 레벨을 프로그램 하는 단계; 그리고
    상기 메모리 제어 로직 섹션에 의해, 상기 메모리 셀들의 각각의 상기 제3 상태 레벨의 프로그램 후에 상기 페이지-레벨 재프로그램 상태 메타데이터를 제4 값으로 설정하는 단계를 더 포함하는 방법.
KR1020170043871A 2016-07-25 2017-04-04 다중-레벨 낸드 셀들에서 용량을 이용한 소거 없는 재프로그램 KR102182225B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662366621P 2016-07-25 2016-07-25
US62/366,621 2016-07-25
US15/256,494 2016-09-02
US15/256,494 US9627049B1 (en) 2016-07-25 2016-09-02 Reprogram without erase using capacity in multi-level NAND cells
US15/436,755 US9818476B1 (en) 2016-07-25 2017-02-17 Reprogram without erase using capacity in multi-level NAND cells
US15/436,755 2017-02-17

Publications (2)

Publication Number Publication Date
KR20180011703A true KR20180011703A (ko) 2018-02-02
KR102182225B1 KR102182225B1 (ko) 2020-11-25

Family

ID=60255665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170043871A KR102182225B1 (ko) 2016-07-25 2017-04-04 다중-레벨 낸드 셀들에서 용량을 이용한 소거 없는 재프로그램

Country Status (5)

Country Link
US (1) US9818476B1 (ko)
JP (1) JP6757298B2 (ko)
KR (1) KR102182225B1 (ko)
CN (1) CN107657982B (ko)
TW (1) TWI706248B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10564890B2 (en) * 2017-07-07 2020-02-18 Seagate Technology Llc Runt handling data storage system
KR102530641B1 (ko) * 2018-03-21 2023-05-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11049570B2 (en) 2019-06-26 2021-06-29 International Business Machines Corporation Dynamic writes-per-day adjustment for storage drives
US11163482B2 (en) 2019-06-26 2021-11-02 International Business Machines Corporation Dynamic performance-class adjustment for storage drives
US11137915B2 (en) 2019-06-27 2021-10-05 International Business Machines Corporation Dynamic logical storage capacity adjustment for storage drives
US11550510B2 (en) * 2021-05-10 2023-01-10 Micron Technology, Inc. Encoding and decoding data bits stored in a combination of multiple memory cells

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140021780A (ko) * 2012-08-10 2014-02-20 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 제어 방법
KR101438072B1 (ko) * 2010-04-15 2014-09-03 라모트 앳 텔-아비브 유니버시티 리미티드 소거 없는 플래시 메모리의 다중 프로그래밍

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815434A (en) 1995-09-29 1998-09-29 Intel Corporation Multiple writes per a single erase for a nonvolatile memory
DE60102203D1 (de) 2000-12-15 2004-04-08 St Microelectronics Srl Programmierverfahren für eine Mehrpegelspeicherzelle
KR100791341B1 (ko) * 2006-09-04 2008-01-03 삼성전자주식회사 비휘발성 메모리 장치의 기입 방법 및 그 방법을 사용하는비휘발성 메모리 장치
KR100816155B1 (ko) * 2006-12-28 2008-03-21 주식회사 하이닉스반도체 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 멀티레벨 셀 프로그램 방법
KR101541736B1 (ko) * 2008-09-22 2015-08-04 삼성전자주식회사 멀티-레벨 셀 플래시 메모리 장치에서의 lsb 페이지 복구 방법
US8233324B2 (en) * 2010-03-25 2012-07-31 Sandisk Il Ltd. Simultaneous multi-state read or verify in non-volatile storage
US8879319B1 (en) 2011-07-29 2014-11-04 Ecole Polytechnique Federale De Lausanne (Epfl) Re-writing scheme for solid-state storage devices
US8917559B2 (en) 2012-04-04 2014-12-23 Sandisk Technologies Inc. Multiple write operations without intervening erase
US20130343125A1 (en) * 2012-06-22 2013-12-26 Mosaid Technologies Incorporated Apparatus and methods for carrying out operations in a non-volatile memory cell having multiple memory states
KR20160006343A (ko) * 2014-07-08 2016-01-19 에스케이하이닉스 주식회사 반도체 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101438072B1 (ko) * 2010-04-15 2014-09-03 라모트 앳 텔-아비브 유니버시티 리미티드 소거 없는 플래시 메모리의 다중 프로그래밍
KR20140021780A (ko) * 2012-08-10 2014-02-20 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 제어 방법

Also Published As

Publication number Publication date
CN107657982A (zh) 2018-02-02
JP6757298B2 (ja) 2020-09-16
CN107657982B (zh) 2022-12-20
TWI706248B (zh) 2020-10-01
US9818476B1 (en) 2017-11-14
JP2018018570A (ja) 2018-02-01
TW201804327A (zh) 2018-02-01
KR102182225B1 (ko) 2020-11-25

Similar Documents

Publication Publication Date Title
KR102182225B1 (ko) 다중-레벨 낸드 셀들에서 용량을 이용한 소거 없는 재프로그램
US11568940B2 (en) Apparatus for determining data states of memory cells
US9281066B2 (en) Dynamically configurable MLC state assignment
US8107287B2 (en) Method of programming nonvolatile memory device
KR101396641B1 (ko) 플래시 메모리 장치에 데이터를 저장하는 방법
US8934297B2 (en) Method and system for programming non-volatile memory cells based on programming of proximate memory cells
US8004896B2 (en) Method of controlling operation of flash memory device
JP2008009919A (ja) カードコントローラ
KR20100010746A (ko) 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법
US9536603B2 (en) Methods and apparatuses for determining threshold voltage shift
JP2010250891A (ja) 不揮発性半導体記憶装置
US9395927B2 (en) Outputting a particular data quantization from memory
KR20090060319A (ko) 신호 커플링을 최소화하도록 비트 상태 할당을 선택하는 비휘발성 메모리 디바이스 및 방법
JP2011527807A (ja) 固体記憶装置におけるデータ収集および圧縮
US10811075B1 (en) Method for performing access control regarding quality of service optimization of memory device with aid of machine learning, associated memory device and controller thereof
KR101227368B1 (ko) 낸드 플래시 메모리 소자의 프로그래밍 방법 및 데이터읽기 방법.
US9627049B1 (en) Reprogram without erase using capacity in multi-level NAND cells
KR20110001058A (ko) 불휘발성 메모리 소자의 동작 방법
US9851921B1 (en) Flash memory chip processing

Legal Events

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