KR100916679B1 - 복수-레벨 셀 플래시 메모리에서 더 높은 레벨 상태들의 더빠른 프로그래밍 - Google Patents

복수-레벨 셀 플래시 메모리에서 더 높은 레벨 상태들의 더빠른 프로그래밍 Download PDF

Info

Publication number
KR100916679B1
KR100916679B1 KR1020077025688A KR20077025688A KR100916679B1 KR 100916679 B1 KR100916679 B1 KR 100916679B1 KR 1020077025688 A KR1020077025688 A KR 1020077025688A KR 20077025688 A KR20077025688 A KR 20077025688A KR 100916679 B1 KR100916679 B1 KR 100916679B1
Authority
KR
South Korea
Prior art keywords
programming
subset
storage elements
memory state
state
Prior art date
Application number
KR1020077025688A
Other languages
English (en)
Other versions
KR20080007568A (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 샌디스크 코포레이션
Publication of KR20080007568A publication Critical patent/KR20080007568A/ko
Application granted granted Critical
Publication of KR100916679B1 publication Critical patent/KR100916679B1/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/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
    • 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/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/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • 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/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3481Circuits or methods to verify correct programming of nonvolatile memory cells whilst programming is in progress, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • 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/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3486Circuits or methods to prevent overprogramming of nonvolatile memory cells, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • 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/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/14Circuits or methods to write a page or sector of information simultaneously into a nonvolatile memory, typically a complete row or word line in flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

일련의 증가하는 프로그램 전압 펄스로서 구현되는 프로그램 전압 신호가 비휘발성 저장 소자들의 세트에 인가된다. 다른 증분 값들이 메모리 셀들을 다른 메모리 상태에 프로그래밍할 때 사용될 수 있다. 더 작은 증분 값이 메모리 셀들을 더 낮은 임계 전압 메모리 상태에 프로그래밍할 때 사용될 수 있고, 그리고 더 큰 증분 값이 메모리 셀들을 더 높은 임계 전압 메모리 상태, 예를 들어 일 실시예에서 가장 높은 상태에 프로그래밍할 때 사용될 수 있다. 임의의 세트의 비휘발성 저장 소자들이, 단일 프로그램 전압 신호의 동시 인가하에서, 서로 다른 메모리 상태에 프로그래밍될 때, 프로그래밍은 더 낮은 상태 프로그래밍이 언제 완료되는 지를 결정하기 위해 모니터링될 수 있다. 그 다음으로 이 증분 값은 가장 높은 메모리 상태에 대한 프로그래밍을 완료할 수 있도록 증가될 수 있다. 증분 값이 합리적인 범위에서 임계 분포를 유지하도록 증가될 때 거침/섬세 프로그래밍 방법이 가장 높은 메모리 상태에 대해 통합될 수 있다.
프로그램 전압 펄스, 비휘발성 저장 소자, 임계 전압, 플래시 메모리

Description

복수-레벨 셀 플래시 메모리에서 더 높은 레벨 상태들의 더 빠른 프로그래밍{FASTER PROGRAMMING OF HIGHER LEVEL STATES IN MULTI-LEVEL CELL FLASH MEMORY}
우선권 정보
이 출원은 미국 특허출원번호 10/990,702(발명의 명칭: "HIGH SPEED PROGRAMMING SYSTEM WITH REDUCED OVERPROGRAMMING," 2004.11.16. 출원)(대리인 문서 번호 SAND-01037US0)의 CIP 출원(Continuation-In-Part application)이며, 이것은 그 전체가 참조로 본 명세서에 통합된다.
본 발명은 비휘발성 메모리를 프로그래밍하는 것에 관한 것이다.
반도체 메모리 디바이스들은 다양한 전자 디바이스들 내에서 점점 더 보편적으로 사용되고 있다. 예를 들어, 비휘발성 반도체 메모리는 셀률러 전화기, 디지털 카메라, PDA(Personal Digital Assistants), 모바일 컴퓨팅 디바이스들, 비휴대 컴퓨팅 디바이스들 및 다른 디바이스들 내에서 사용되고 있다. EEPROM(Electrical Erasable Programmable Read Only Memory) 및 플래시 메모리는 가장 보편적인 비휘발성 반도체 메모리들 가운데 하나이다.
EEPROM과 플래시 메모리 모두는 반도체 기판에서 채널 영역 위에 위치함과 아울러 채널 영역으로부터 절연되어 있는 플로팅 게이트를 사용한다. 플로팅 게이트는 소스 영역과 드레인 영역 사이에 위치한다. 제어 게이트는 플로팅 게이트 위에 제공되고 플로팅 게이트로부터 절연되어 있다. 트랜지스터의 임계 전압은 플로팅 게이트 상에 보유된 전하의 양에 의해 제어된다. 즉, 소스와 드레인 사이의 전도를 허용하기 위해 트랜지스터가 턴온(turn on)되기 전에 제어 게이트에 인가되어야 하는 최소 전압의 양은 플로팅 게이트 상의 전하의 레벨에 의해 제어된다.
EEPROM 또는 플래시 메모리 디바이스를 프로그래밍하는 경우, 일반적으로 프로그램 전압이 제어 게이트에 인가되고, 비트 라인(bit line)은 접지된다. 채널로부터의 전자들은 플로팅 게이트에 주입된다. 전자들이 플로팅 게이트에 축적되는 경우, 플로팅 게이트는 음으로 대전되고, 그리고 메모리 셀의 임계 전압은 상승되어 메모리 셀은 프로그래밍 상태에 있게 된다. 프로그래밍에 대한 더 많은 정보는 미국 특허 출원 10/379,608(발명의 명칭: "Self-Boosting Technique," 2003.03.05. 출원), 미국 특허 출원 10/629,068(발명의 명칭: "Detecting Over Programmed Memory," 2003.07.29. 출원)에서 알 수 있으며, 이 모두는 그 전체가 참조로 본 명세서에 통합된다.
일부 EEPROM과 플래시 메모리 디바이스들은 두 가지 범위의 전하들을 저장하는데 사용되는 플로팅 게이트를 가지고 있고, 따라서 메모리 셀은 두 가지 상태(소거 상태 및 프로그래밍 상태) 간에 프로그래밍/소거될 수 있다. 예를 들어, 도 1은 두 개의 임계 전압 분포를 도시한 그래프를 보여준다. x축은 임계 전압을 나타내고, y축은 메모리 셀들의 수를 나타낸다. 임계 전압 분포(2)는 제로(0) 볼트보다 더 작다. 일 실시예에서, 임계 전압 분포(2)는 데이터 "1"을 저장하는 소거된 메모리 셀들에 대응한다. 임계 전압 분포(4)는 제로(0) 볼트보다 더 크다. 일 실시예에서, 임계 전압 분포(4)는 데이터 "0"을 저장하는 프로그래밍된 메모리 셀들에 대응한다.
복수-상태 플래시 메모리 셀은 금지된 전압 영역(forbidden voltage ranges)에 의해 분리된 복수의 개별 허용 임계 전압 범위(multiple distinct allowed programmed threshold voltage ranges)를 식별함으로써 구현된다. 각각의 개별 임계 전압 범위는 데이터 비트들의 세트에 대한 소정의 값에 대응된다. 도 2는 두 비트의 데이터를 저장하는 메모리 셀들에 대한 임계 전압 분포를 나타내고 있다(예를 들어, 네 가지 데이터 상태). 일 실시예에서, 임계 전압 분포(2)는 소거 상태에 있는 (예를 들어, "11"을 저장하는) 메모리 셀들을 나타내고 있으며, 음의 임계 전압 레벨을 가지고 있다. 임계 전압 분포(10)는 데이터 "10"을 저장하는 메모리 셀들을 나타내고, 양의 임계 전압 레벨을 가지고 있다. 임계 전압 분포(12)는 데이터 "00"을 저장하는 메모리 셀들을 나타내고 있다. 임계 전압 분포(14)는 "01"을 저장하는 메모리 셀들을 나타내고 있다. (앞서 예시된 바와 같이) 일부 실시예들에서, 이러한 데이터 값들(예를 들어, 논리적 상태)은 그레이 코드 할당(gray code assignment)을 사용하여 임계 범위에 할당되고, 그래서 만약 플로팅 게이트의 임계 전압이 그 이웃하는 물리적 상태로 잘못 시프트한다면, 단지 하나의 논리적 비트만이 영향을 받는다. 다른 실시예들에서, 이러한 분포들 각각은 앞서 설명된 것과는 다른 데이터 상태에 대응할 수 있다. 메모리 셀로 프로그래밍되는 데이터와 이 셀 의 임계 전압 범위 사이의 특정 관계는 메모리 셀에 대해 채택된 데이터 인코딩 방식에 따라 다르다. 예를 들어, 미국 특허번호 6,222,762와 미국 특허출원번호 10/461,244(발명의 명칭: "Tracking Cells For A Memory System," 2003.06.13. 출원)는 복수-상태 플래시 메모리 셀에 대한 다양한 데이터 인코딩 방식을 설명하고 있으며, 이들 모두는 참조로 그 전체가 본 명세서에 통합된다. 추가적으로, 본 발명에 따른 실시예들은 두 비트의 데이터 이상을 저장하는 메모리 셀들에 적용가능하다.
임계 전압 분포(2 및 4)는 어떠한 검증 동작도 사용되지 않을 때의 소거된 전압 분포와 프로그래밍된 전압 분포를 보여준다. 이러한 분포들은 단 하나의 프로그래밍 혹은 소거 펄스로 메모리 셀들을 프로그래밍 혹은 소거함으로써 얻어질 수 있다. 생산 공정에서의 변형 및 메모리 어레이 크기에 따라, 임계 전압 분포(4)는 고유 Vth 폭(natural Vth width)으로 알려진 어떤 폭을 갖는다.
도 2로부터 알 수 있는 바와 같이, (복수-상태 디바이스 프로그래밍에 대응하는) 분포(10, 12, 및 14)는 분포(4)의 고유 Vth 폭보다 훨씬 더 좁을 필요가 있다. 이러한 더 좁은 임계 전압 분포를 달성하기 위해, 도 3A, 3B, 및 3C에 의해 설명되는 것과 같은 복수의 프로그래밍 펄스들과 검증 동작을 사용하는 프로세스가 사용될 수 있다.
도 3A는 일련의 펄스로서 제어 게이트에 인가되는 프로그래밍 전압 신호(Vpgm)를 도시한다. 펄스의 크기는 도 3A에서 △Vpgm으로 도시된 소정의 단계 크 기(step size)(예를 들어, 0.2V - 0.4V)만큼 각각의 연속적인 펄스로 증가된다. 펄스들 사이의 주기에서, 검증 동작이 수행된다. 프로그래밍 가능 상태의 수가 증가함에 따라, 검증 동작의 수도 증가하고 그리고 더 많은 시간이 필요하다. 시간에 대한 부담을 감소시키는 한가지 방법은 보다 효율적인 검증 프로세스인데, 예를 들면 미국 특허출원 번호 10/314,055(발명의 명칭: "Smart Verify For Multi-State Memories," 2002.12.05. 출원)에서 개시되는 프로세스이며, 이것은 참조로 그 전체가 본 명세서에 통합된다. 실제로, 도 3A의 펄스는 검증을 위한 시간 주기에 의해 서로 분리된다. 그러나, 도 3을 더 판독하기 쉽게 하기 위해 검증을 위한 시간 주기는 도면에서 생략되었다.
도 3B는 프로그래밍되는 관련 메모리 셀에 대해 비트 라인에 인가되는 전압 신호를 도시한다. 도 3C는 프로그래밍되는 메모리 셀의 임계 전압을 도시한다. 주의할 것으로 도 3C에서의 그래프는 판독을 더 쉽게 하기 위해 부드럽게 되었다. 각각의 프로그래밍 펄스 이후에, 검증 동작이 수행된다(도시되지 않음). 검증 동작 동안, 프로그래밍될 메모리 셀의 임계 전압이 점검된다. 만약 메모리 셀의 임계 전압이 타겟 값(target value)(예를 들어, Vverify)보다 더 크다면, 그 메모리 셀에 대한 프로그래밍은 비트 라인 전압을 (예를 들어, 시간 t4에서) 0V에서 Vinhibit로 상승시킴으로써 다음 싸이클에서 금지된다.
다른 전자 디바이스들에 있어서, 가능한 한 빠르게 프로그래밍되는 메모리 디바이스에 대한 수요자의 요구가 존재한다. 예를 들어, 플래시 메모리 카드에 이 미지를 저장하는 디지털 카메라의 사용자는 불필요하게 매 사진 간 긴 시간 주기 동안 기다리기를 원하지 않는다. 합리적인 속도로 프로그래밍하는 것에 더하여, 복수-상태 메모리 셀에 대한 적당한 데이터 저장을 달성하기 위해, 복수-상태 메모리 셀들의 복수 범위의 임계 전압들은 메모리 셀의 레벨이 확실하게 프로그래밍 및 판독될 수 있도록 서로 충분한 여유만큼 분리되어야 한다. 빡빡한 임계 전압 분포(tight threshold voltage distribution)가 바람직하다. 빡빡한 임계 전압 분포를 달성하기 위해, 작은 프로그램 단계가 일반적으로 사용되며, 그럼으로써 셀들의 임계 전압을 더 느리게 프로그래밍할 수 있다. 요구된 임계 전압 분포가 더 빡빡할수록 단계는 더 작아지고 프로그래밍 프로세스는 더 느려진다.
프로그래밍 프로세스를 비합리적으로 느리게 함이 없이 빡빡한 임계 전압 분포를 달성하기 위한 한가지 해법은 두-단계 프로그래밍 프로세스를 사용하는 것을 포함한다. 제 1 단계, 거침 프로그래밍 단계(coarse programming phase)는 더 빠르게 임계 전압을 상승시키려하고 반면에 빡빡한 임계 전압 분포를 달성하려고 덜 주의를 기울이는 것을 포함한다. 제 2 단계, 섬세 프로그래밍 단계(fine programming phase)는 타겟 임계 전압에 도달하기 위해 더 느리게 임계 전압을 상승시키려하고 따라서 더 빡빡한 임계 전압 분포를 달성한다. 거침/섬세 프로그래밍 방법의 예는 미국 특허번호 6,643,188에서 찾을 수 있으며, 이것은 그 전체가 참조로 본 명세서에 통합된다.
도 4와 도 5는 거침/섬세 프로그래밍 방법의 일 예를 더 상세히 제공한다. 도 4A와 도 5A는 제어 게이트에 인가되는 프로그래밍 펄스(Vpgm)를 도시한다. 도 4B와 도 5B는 프로그래밍되는 메모리 셀들에 대한 비트 라인 전압을 도시한다. 도 4C와 도 5C는 프로그래밍되는 메모리 셀들의 임계 전압을 도시한다. 도 4와 도 5의 예는 VvA1과 VvA로 도면에 표시된 두 개의 검증 레벨을 사용하여 메모리 셀들을 상태 A에 프로그래밍하는 것을 도시한다. 최종 타겟 값은 VvA이다. 메모리 셀의 임계 전압 분포가 VvA에 도달할 때, 메모리 셀에 대응하는 비트 라인에 금지 전압을 인가함으로써 그 메모리 셀의 후속 프로그래밍은 금지된다. 예를 들어, 비트 라인 전압은 Vinhibit까지 상승될 수 있다(도 4B와 도 5B를 참조). 그러나, 메모리 셀이 타겟 값(VvA)에 가까운 (그러나 이 타겟 값보다는 더 낮은) 임계 전압에 도달할 때, 후속 프로그래밍 펄스들 동안 메모리 셀의 임계 전압 시프트(shift)는 어떤 바이어스 전압 일반적으로, 약 0.3V에서 0.8V를 비트 라인에 인가함으로써 느리게 된다. 임계 전압 시프트의 속도는 다음 얼마간의 프로그래밍 펄스 동안 감소되기 때문에, 최종 임계 전압 분포는 도 3에 도시된 방법에서보다 더 좁게될 수 있다. 이러한 방법을 구현하기 위해, VvA보다 더 낮은 제 2 검증 레벨이 사용된다. 이 제 2 검증 레벨은 VvA1로서 도 4와 도 5에 도시된다. 메모리 셀의 임계 전압이 VvA1보다는 크지만 VvA보다는 휠씬 작을 때, 메모리 셀에 대한 임계 전압 시프트는 후속 프로그래밍 펄스들 동안 비트 라인 바이어스(Vs)를 인가함으로써 감소된다(도 5B). 주의할 것으로 이 경우에 두 개의 검증 동작이 각 상태에 대해 요구된다. 그 두 개의 검증 동작은, 거침/섬세 프로그래밍 방법이 적용되는 각각의 상태에 대해 대응하는 최종 검증 레벨(예를 들어, VvA)에서의 하나의 검증 동작과 그리고 각각의 상태에 대해 대응하는 제 2 검증 레벨(예를 들어, VvA1)에서의 하나의 검증 동작이다. 이것은 메모리 셀들을 프로그래밍하는데 필요한 총 시간을 증가시킬 수 있다. 그러나 더 큰 △Vpgm 단계 크기가 프로세스의 속도를 높이는데 사용될 수 있다.
도 4A, 도 4B, 및 도 4C는 메모리 셀의 동작을 보여주는데, 메모리 셀의 임계 전압은 하나의 프로그래밍 펄스에서 VvA1과 VvA를 지나간다. 예를 들어, 임계 전압이 t2와 t3 사이에서 VvA1와 VvA를 지나도록 도 4C에 도시된다. 따라서, t3 전에, 메모리 셀은 거침 단계에 있다. t3 이후에 메모리 셀은 금지 모드에 있다.
도 5A, 5B, 및 5C는 거침 및 섬세 프로그래밍 단계 양쪽 모두에 진입한 메모리 셀을 도시한다. 메모리 셀들의 임계 전압은 시간 t2와 시간 t3 사이에서 VvA1과 교차한다. t3 이전에, 메모리 셀은 거침 단계에 있다. t3 이후에, 비트 라인 전압이 Vs까지 상승되어 섬세 단계에 메모리 셀을 놓는다. t3와 t4 사이에서, 메모리 셀의 임계 전압은 VvA와 교차한다. 따라서, 비트 라인 전압을 Vinhibit까지 상승시킴으로써 메모리 셀의 후속 프로그래밍은 금지된다.
일반적으로, 합리적인 프로그래밍 시간을 유지하기 위해, 거침/섬세 알고리 즘이 가장 높은 메모리 상태(가장 큰 양의 임계 전압 범위에 대응하는 상태)에는 적용되지 않는다. 도 2의 분포(14)에 의해 나타내어진 상태 C와 같은 가장 높은 상태는 더 높은 상태와 구별될 필요가 없다. 일반적으로, 단지 필요한 것은 그 다음 가장 낮은 상태(예를 들어, 분포(12)에 의해 나타내진 상태 B)와 구별되도록 최소 임계 레벨 위의 상태에 대해 셀들을 프로그래밍하는 것이다. 따라서, 이러한 셀들의 분포는 디바이스 성능에 역효과 없이 더 넓은 임계 전압 범위를 차지할 수 있다. 거침/섬세 프로그래밍 방법은 앞서 설명된 바와 같은 더 많은 검증 단계를 요구한다. 더욱이, 거침/섬세 프로그래밍 방법은 요구된 프로그래밍 펄스들의 전체 개수를 증가시킬 수 있다. 가장 높은 임계 전압 상태는 대부분의 경우 빡빡한 임계 전압 분포를 요구하지 않기 때문에, 거침/섬세 프로그래밍은 일반적으로 전체 프로그래밍 시간을 감소시키기 위해 사용되지 않는다.
증가된 프로그래밍 시간에 더하여, 가장 높은 임계 전압 상태에 대해 거침/섬세 프로그래밍 방법을 사용함으로써 (아래에서 더 상세히 설명되는) NAND 아키텍처로 구현되는 플래시 메모리 디바이스 내의 프로그램 디스터브(program disturb)의 발생을 증가시킬 수 있다. 선택된 NAND 스트링 상의 선택된 셀의 제어 게이트에 프로그램 전압을 인가하기 위해, 프로그램 전압이 적절한 워드 라인 상에 인가된다. 이 워드 라인은 또한 메모리 셀들의 선택된 블록 내의 다른 모든 NAND 스트링 상의 메모리 셀에 연결된다. 이러한 메모리 셀들의 일부는 프로그래밍을 위해 의도된 것이 아닐 수 있다. 워드 라인 상의 하나의 셀을 프로그래밍하고 동일 워드 라인에 연결된 다른 셀들을 프로그래밍하지 않을 필요가 있을 때 문제가 발생한다. 프로그램 전압이 워드 라인에 연결된 모든 셀들에 인가되기 때문에, 워드 라인에 연결된 선택되지 않은 셀(프로그래밍 되지 않아야 하는 셀)은 의도된 바와 달리 프로그래밍 될 수 있다. 선택된 워드 라인 상의 선택되지 않은 셀의 의도되지 않은 프로그래밍은 "프로그램 디스터브"로 언급된다.
프로그램 디스터브를 제거하거나 제한시키기 위한 다양한 기술이 존재하지만, 많은 아키텍처는 프로그램 디스터브에 대한 잠재성을 더욱 감소시키기 위해 가장 높은 임계 전압 메모리 상태에 대한 거침/섬세 프로그래밍 알고리즘을 사용하지 않는 것을 선택한다. 프로그램 디스터브는 큰 프로그램 전압을 워드 라인에 인가 하는 경우 가장 자주 발생한다. 거침/섬세 프로그래밍에 의해 요구된 프로그래밍 펄스의 개수가 증가됨에 따라 거침/섬세 프로그래밍이 사용되지 않는다면 도달할 수 있는 것보다 더 높은 레벨에 도달하는 프로그램 전압을 야기할 수 있다. 따라서, NAND 아키텍처의 많은 구현들은 프로그램 디스터브의 발생을 최소화시키 위해 가장 높은 임계 전압 상태에 대해 거침/섬세 프로그래밍을 적용하지 않는다.
플래시 메모리에 대한 프로그래밍 시간을 감소시키기 위해 거침/섬세 프로그래밍과 같은 이러한 기술을 사용함에도 불구하고, 프로그래밍 시간을 감소시킴으로써 디바이스 성능을 증가시킬 필요성이 더욱 요구되고 있다.
본 명세서에서 설명되는 기술은 비휘발성 메모리와 관련된 프로그래밍 시간을 감소시키려는 것이다.
일 실시예에서, 일련의 증가하는 프로그램 전압 펄스들로서 구현되는 프로그램 전압 신호가 비휘발성 저장 소자들에 인가된다. 메모리 셀들을 다른 메모리 상태들에 프로그래밍할 때 다른 증분 값들이 사용될 수 있다. 메모리 셀들을 더 낮은 임계 전압 메모리 상태들에 프로그래밍할 때 더 작은 증분 값이 사용될 수 있고, 그리고 메모리 셀들을 더 높은 임계 전압 상태들 예를 들어, 구현에 있어서 가장 높은 메모리 상태에 프로그래밍할 때 더 큰 증분 값이 사용될 수 있다. 임의 세트의 비휘발성 저장 소자들이 단일 프로그래밍 전압 신호를 동시에 인가하는 경우 서로 다른 메모리 상태들에 프로그래밍될 때에, 언제 더 낮은 상태 프로그래밍이 완료되는지 혹은 부분적으로 완료되는지를 결정하기 위해 프로그래밍은 모니터링될 수 있다. 그 다음으로 가장 높은 메모리 상태에 대한 프로그래밍을 완료하기 위해 증분 값은 증가될 수 있다. 거침/섬세 프로그래밍 기술은 증분 값이 합리적인 범위 내에서의 임계 분포를 유지하도록 증가될 때 가장 높은 메모리 상태에 대해 통합될 수 있다.
일 실시예에 따르면, 비휘발성 저장소를 프로그래밍하는 방법이 제공되며, 이 방법은 비휘발성 저장 소자들의 세트에 프로그램 전압 신호를 인가하는 것을 포함한다. 비휘발성 저장 소자들의 세트의 제 1 서브세트는, 제 1 서브세트의 각각의 비휘발성 저장 소자가 제 1 타겟 상태에 도달할 때까지 프로그램 전압 신호를 제 1 증분 값만큼 증가시킴으로써 제 1 타겟 상태에 프로그래밍된다. 비휘발성 저장 소자들의 세트의 제 2 서브세트는 제 2 타겟 상태에 프로그래밍된다. 제 2 서브세트 프로그래밍은 제 1 서브세트의 각각의 비휘발성 저장 소자가 제 1 타겟 상태에 도달할 때까지 프로그램 전압 신호를 제 1 증분 값만큼 증가시키고 그리고 그 다음에 제 1 서브세트의 각각의 비휘발성 저장 소자가 제 1 타겟 상태에 도달할 때 프로그램 전압 신호를 제 2 단계 크기만큼 증가시키는 것을 포함한다. 일 실시예에서, 제 1 서브세트는 제 1 타겟 상태에 프로그래밍되도록 의도된 세트의 비휘발성 저장 소자들의 더 큰 서브세트 부분일 수 있다. 제 1 타겟 상태에 성공적으로 프로그래밍되지 않은 더 큰 서브세트의 비휘발성 저장 소자들은 판독 동작 동안 에러 정정을 사용하여 처리될 수 있다.
본 발명의 이러한 목적 및 다른 목적 그리고 장점은 다음의 상세한 설명으로부터 보다 명백하게 나타날 것이고, 이러한 상세한 설명에는 본 발명의 바람직한 실시예가 도면들과 함께 설명된다.
도 1은 두 개의 임계 전압 분포를 도시한 그래프이다.
도 2는 네 개의 임계 전압 분포를 도시한 그래프이다.
도 3A, 3B, 및 3C는 프로그래밍 프로세스를 도시한다. 도 3A는 비휘발성 저장 소자의 제어 게이트에 인가되는 프로그래밍 전압 신호를 도시한다. 도 3B는 NAND 스트링에 대한 비트 라인에 인가되는 전압 신호를 도시한다. 도 3C는 프로그래밍되는 비휘발성 저장 소자의 임계 전압을 도시한다.
도 4A, 4B, 및 4C는 거침/섬세 프로그래밍의 일부로서 수행되는 프로그래밍 프로세스의 일 실시예이다.
도 5A, 5B, 및 5C는 거침/섬세 프로그래밍 일부로서 수행되는 프로그래밍 프로세스의 일 실시예이다.
도 6은 NAND 스트링의 평면도이다.
도 7은 도 6의 NAND 스트링의 등가 회로도이다.
도 8은 도 6의 NAND 스트링의 단면도이다.
도 9는 비휘발성 메모리 시스템의 일 실시예의 블록도이다.
도 10은 메모리 어레이 조직의 일 예를 나타낸다.
도 11은 임계 전압 분포의 예시적 세트 및 전체 시퀀스 프로그래밍 프로세스를 도시한다.
도 12는 임계 전압 분포의 예시적 세트 및 투-패스 프로그래밍 프로세스(two-pass programming process)를 도시한다.
도 13A-13C는 임계 전압 분포의 예시적 세트 및 또 다른 투-패스 프로그래밍 프로세스를 도시한다.
도 14A-14B는 다양한 실시예에서의 비휘발성 메모리를 프로그래밍하는 순서를 도시하는 테이블이다.
도 15는 메모리 시스템의 페이지를 프로그래밍하는 프로세스의 일 실시예를 타낸 흐름도이다.
도 16은 일 실시예에 따른 프로그램 전압 신호를 도시한다.
도 17은 일 실시예에 따른 프로그램 전압 신호를 도시한다.
도 18A-18C는 일 실시예에 따른 임계 분포의 예시적 세트들 도시한다.
도 19는 일 실시예에 따른 거침/섬세 프로그래밍 프로세스를 설명하는 흐름도이다.
도 20은 메모리 시스템의 페이지를 프로그래밍하는 프로세스의 일 실시예를 나타낸 흐름도이다.
도 21A-21C는 임계 전압 분포를 도시한다.
도 22A-22C는 프로그래밍 프로세스의 일 실시예를 도시한다.
도 23A-23C는 프로그래밍 프로세스의 일 실시예를 도시한다.
본 발명을 구현하는 데 적합한 플래시 메모리 시스템의 일 예는 NAND 구조를 사용하고, 이것은 두 개의 선택 게이트들 사이에 직렬로 연결된 복수의 트랜지스터들을 배열하는 것을 포함한다. 직렬로 연결된 트랜지스터들과 선택 게이트는 NAND 스트링으로 언급된다. 도 6은 하나의 NAND 스트링을 보여 주는 평면도이다. 도 7은 그것의 등가 회로이다. 도 5 및 도 6에 도시된 NAND 스트링은 네 개의 트랜지스터들(100, 102, 104 및 106)을 포함하는데, 이들은 선택 게이트(120)와 제 2 선택 게이트(122) 사이에서 직렬로 연결되어 있고 그리고 샌드위치되어 있다. 선택 게이트(120)는 NAND 스트링을 비트 라인 콘택(126)에 연결한다. 선택 게이트(122)는 NAND 스트링을 소스 라인 콘택(128)에 연결한다. 선택 게이트(120)는 적당한 전압을 제어 게이트(120CG)에 인가함으로써 제어된다. 선택 게이트(122)는 적당한 전압을 제어 게이트(122CG)에 인가함으로써 제어된다. 트랜지스터들(100, 102, 104 및 106) 각각은 제어 게이트와 플로팅 게이트를 갖는다. 트랜지스터(100)는 제어 게이트(100CG)와 플로팅 게이트(100FG)를 갖는다. 트랜지스터(102)는 제어 게이트(102CG)와 플로팅 게이트(102FG)를 포함한다. 트랜지스터(104)는 제어 게이 트(104CG)와 플로팅 게이트(104FG)를 포함한다. 트랜지스터(106)는 제어 게이트(106CG)와 플로팅 게이트(106FG)를 포함한다. 제어 게이트(1OOCG)는 워드 라인(WL3)에 연결되고, 제어 게이트(102CG)는 워드 라인(WL2)에 연결되고, 제어 게이트(104CG)는 워드 라인(WL1)에 연결되고, 그리고 제어 게이트(106CG)는 워드 라인(WL0)에 연결된다. 일 실시예에서, 트랜지스터들(100, 102, 104 및 106)은 각각의 메모리 셀들이다. 다른 실시예에서, 메모리 셀들은 복수의 트랜지스터들을 포함할 수 있거나 또는 도 5 및 도 6에 도시된 것과 다를 수 있다. 선택 게이트(120)는 선택 라인(SGD)에 연결되고, 선택 게이트(122)는 선택 라인(SGS)에 연결된다.
도 8은 상기 설명된 NAND 스트링의 단면도를 제공한다. 도 8에 도시된 바와 같이, NAND 스트링의 트랜지스터들은 p-웰 영역(140)에 형성된다. 각각의 트랜지스터는 제어 게이트(lOOCG, 102CG, 104CG 및 106CG)와 플로팅 게이트(100FG, 102FG, 104FG 및 106FG)로 구성되는 적층된 게이트 구조를 포함한다. 플로팅 게이트들은 p-웰의 표면 상의 옥사이드 막의 상부에 형성된다. 제어 게이트는 플로팅 게이트 위에 있고, 폴리실리콘 간 절연체 층은 제어 게이트와 플로팅 게이트를 분리시킨다. 메모리 셀들(100, 102, 104 및 106)의 제어 게이트들은 워드 라인을 형성한다. N+ 확산 층(130, 132, 134, 136 및 138)은 이웃하는 셀들 간에 공유되고, 그럼으로써 셀들은 직렬로 서로 연결되어 NAND 스트링을 형성한다. 이러한 N+ 확산 층은 셀들 각각의 소스 및 드레인을 형성한다. 예를 들어, N+ 확산 층(130)은 트랜지스터(122)의 드레인 그리고 트랜지스터(106)에 대한 소스 역할을 하고, N+ 확산 층(132)은 트랜지스터(106)에 대한 드레인 그리고 트랜지스터(104)에 대한 소스 역할을 하고, N+ 확산 층(134)은 트랜지스터(104)에 대한 드레인 그리고 트랜지스터(102)에 대한 소스 역할을 하고, N+ 확산 층(136)은 트랜지스터(102)에 대한 드레인 그리고 트랜지스터(100)에 대한 소스 역할을 하고, 그리고 N+ 확산 층(138)은 트랜지스터(100)에 대한 드레인 그리고 트랜지스터(120)에 대한 소스 역할을 한다. N+ 확산 층(126)은 NAND 스트링에 대해 비트 라인에 연결되고, 반면에 N+ 확산 층(128)은 복수의 NAND 스트링에 대해 공통 소스 라인에 연결된다.
주의할 것으로, 비록 도 6 내지 도 8이 NAND 스트링에서 네 개의 메모리 셀들을 보여주고 있지만, 네 개의 트랜지스터들을 사용하는 것은 단지 예로서 제공된 것이다. NAND 스트링은 네 개의 메모리 셀들보다 더 적거나 혹은 네 개의 메모리 셀들 보다 더 많은 셀들을 가질 수 있다. 예를 들어, 일부 NAND 스트링들은 8 메모리 셀, 16 메모리 셀, 32 메모리 셀, 등을 포함할 수 있다. 본 명세서에서의 설명은 NAND 스트링에서 임의의 특별한 수의 메모리 셀들에 한정되지 않는다.
각각의 메모리 셀은 아날로그 또는 디지털 형태로 나타내진 데이터를 저장할 수 있다. 한 비트의 디지털 데이터를 저장할 때, 메모리 셀의 가능한 임계 전압의 범위는 두 가지 범위로 나누어지며, 이것은 논리적 데이터 "1"과 "0"으로 할당되어 있다. NAND형 플래시 메모리의 일 예에서, 임계 전압은 메모리 셀이 소거된 이후에 음의 값이고 로직 "1"로 정의된다. 프로그램 동작 이후에 임계 전압은 양의 값이고, 로직 "0"으로 정의된다. 임계 전압이 음의 값이고 워드 라인 상에 0 볼트를 인가함으로써 판독이 시도되는 경우, 메모리 셀은 턴온되어 로직 1이 저장되는 것을 표시한다. 임계 전압이 양의 값이고 워드 라인 상에 0V를 인가함으로써 판독 동작 이 시도되는 경우, 메모리 셀은 턴온되지 않고, 이것은 로직 0이 저장되어 있다는 것을 표시한다. 메모리 셀은 또한 복수 레벨의 정보를 저장할 수 있고, 그럼으로써 복수 비트의 디지털 데이터를 저장할 수 있다. 복수 레벨의 데이터를 저장하는 경우, 가능한 임계 전압의 범위는 저장 레벨의 개수로 나누어진다. 예를 들어, 만약, 네 가지 레벨의 정보가 저장된다면, 데이터 값 "11," "10," "01," 및 "00"에 할당된 네 가지 임계 전압 범위가 존재한다. NAND형 메모리의 일 예에서, 소거 동작 이후의 임계 전압은 음의 값이고 "11"로 정의된다. 양의 임계 전압은 "10," "01," 및 "00"의 상태에 대해 사용된다.
NAND형 플래시 메모리들 및 그들의 동작의 관련 예는 다음의 미국 특허/특허출원에서 제공되며, 이것들은 그 전체가 참조로 본 명세서에 통합된다: 미국 특허번호 5,570,315; 미국 특허번호 5,774,397; 미국 특허번호 6,046,935; 미국 특허번호 5,386,422; 미국 특허번호 6,456,528 및 미국 특허출원번호 09/893,277(공개번호 US2003/0002348). 셀프 부스팅 기술(self boosting techniques)을 포함하는 NAND 플래시 메모리 프로그래밍에 대한 정보는 미국 특허출원 10/379,608(발명의 명칭: "Self Boosting Technique," 2003.03.05. 출원); 및 미국 특허출원 10/629,068(발명의 명칭: "Detecting Over Programmed Memory," 2003.07.29. 출원)에서 찾을 수 있으며, 이 두 개의 출원은 모두 그 전체가 참조로 본 명세서에 통합된다. 다른 타입의 플래시 메모리 디바이스가 본 발명과 함께 또한 사용될 수 있다. 예를 들어, 다음의 특허들은 NOR형 플래시 메모리들을 설명하고 있으며, 이것은 그 전체가 참조로 본 명세서에 통합된다: 미국 특허번호 5,095,344; 5,172,338; 5,890,192 및 6,151,248. 플래시 메모리 타입의 또 다른 예는 미국 특허번호 6,151,248에서 찾을 수 있으며, 이것은 그 전체가 본 명세서에 참조로 통합된다.
본 명세서에서 사용되는 이러한 기술은 플로팅 게이트 타입의 메모리에 한정되지 않으며 전하 저장을 위해 다른 형태의 물질을 사용하는 메모리 셀들에 또한 적용될 수 있다. 예를 들어, 본 명세서에서 설명되는 기술은 나노-크리스털(nano-crystals)로 더 잘 알려진 작은 실리콘 섬(small silicon islands) 혹은 나이트리드 층(nitride layer)과 같은, 제어 게이트(혹은, 워드 라인)와 기판 사이에 다양한 형태의 전하 저장 영역/층(들)을 사용하는 메모리 디바이스들과 함께 사용될 수 있다.
도 9는 본 발명을 구현하는데 사용될 수 있는 플래시 메모리의 일 실시예의 블록도이다. 메모리 셀 어레이(202)는 열 제어 회로(204), 행 제어 회로(206), c-소스 제어 회로(210) 및 p-웰 제어 회로(208)에 의해 제어된다. 열 제어 회로(204)는 메모리 셀 어레이(202)의 비트 라인들에 연결되어 메모리 셀들 내에 저장된 데이터를 판독하고, 프로그램 동작 동안 메모리 셀들의 상태를 결정하고, 그리고 프로그래밍을 촉진시키거나 혹은 프로그래밍을 금지시키기 위해 비트 라인의 전위 레벨(potential levels)을 제어한다. 행 제어 회로(206)는 워드 라인들에 연결되어 워드 라인들 중 하나를 선택하고, 판독 전압을 인가하고, 프로그램 전압을 인가하고 그리고 소거 전압을 인가한다. C-소스 제어 회로(210)는 메모리 셀들에 연결된 공통 소스 라인(도 10에서 "C-소스"로 명명됨)을 제어한다. P-웰 제어 회로(208)는 p-웰 전압을 제어한다.
메모리 셀들에 저장된 데이터는 열 제어 회로(204)에 의해 판독되고, 그리고 데이터 입력/출력 버퍼(212)를 통해 외부 I/O 라인에 출력된다. 메모리 셀들에 저장될 프로그램 데이터는 외부 I/O 라인을 통해 데이터 입력/출력 버퍼(212)에 입력되고, 열 제어 회로(204)에 전달된다. 외부 I/O 라인은 제어기(218)에 연결된다.
플래시 메모리 디바이스를 제어하는 명령 데이터는 제어기(218)에 입력된다. 명령 데이터는 플래시 메모리에 어떤 동작이 요구되고 있는지에 관한 정보를 제공한다. 입력 명령은 상태 머신(216)에 전달되고, 상태 머신은 열 제어 회로(204), 행 제어 회로(206), c-소스 제어(210), p-웰 제어 회로(208) 및 데이터 입력/출력 버퍼(212)를 제어한다. 상태 머신(216)은 또한 READY/BUSY 혹은 PASS/FAIL과 같은 플래시 메모리의 상태 데이터를 출력할 수 있다.
제어기(218)는 개인용 컴퓨터, 디지털 카메라, PDA, 등과 같은 호스트 시스템에 연결되거나 또는 연결될 수 있다. 제어기(218)는 호스트로부터 명령을 수신하기 위해, 호스트로부터 데이터를 수신하기 위해, 데이터를 호스트에 제공하기 위해, 그리고 상태 정보를 호스트에 제공하기 위해 호스트와 통신한다. 제어기(218)는 호스트로부터의 명령을 명령 회로(214)에 의해 해석될 수 있고 실행될 수 있는 명령 신호로 변환하며, 명령 회로는 상태 머신(216)과 통신하고 있다. 제어기(218)는 일반적으로 메모리 어레이로부터 판독되거나 메모리 어레이에 쓰여지는 사용자 데이터에 대한 버퍼 메모리를 포함한다.
하나의 예시적 메모리 시스템은 그 각각이 메모리 어레이 및 관련 제어 회로, 입력/출력 회로 그리고 상태 머신 회로를 포함하는 하나 또는 그 이상의 집적 회로 칩들과 그리고 제어기(218)를 포함하는 하나의 집적 회로를 포함한다. 최근의 경향은 시스템의 제어기 회로 및 메모리 어레이를 하나 또는 그 이상의 집적 회로 칩에 함께 통합시키는 것이다. 메모리 시스템은 호스트 시스템의 일부로서 내장(embed)되거나 호스트 시스템에 제거가능하게 삽입되는 메모리 카드에 포함될 수 있다. 이러한 제거가능한 카드는 (예를 들어, 제어기를 포함하는) 전체 메모리 시스템을 포함할 수 있거나 단지 메모리 어레이(들) 및 관련 주변 회로들(호스트 내에 내장되는 제어기를 갖음)을 포함할 수 있다. 따라서, 제어기(혹은 제어 능력)는 호스트 내에 내장될 수 있거나 제거가능한 메모리 시스템 내에 포함될 수 있다.
일부 실시예에서, 도 9의 구성요소 일부는 결합될 수 있다. 다양한 설계에서, 메모리 셀 어레이(202) 이외에 도 9의 하나 또는 그 이상의 구성요소들은 제어 회로로서 고려될 수 있다. 예를 들어, 하나 또는 그 이상의 제어 회로는 명령 회로, 상태 머신, 행 제어 회로, 열 제어 회로, 웰 제어 회로, 소스 제어 회로, 데이터 I/O 회로, 혹은 제어기 중 어느 하나 혹은 이들의 결합을 포함할 수 있다.
도 10을 참조하여, 메모리 셀 어레이(202)의 예시적 구조가 설명된다. 예를 들어, 1,024 개의 블록으로 분할된 NAND 플래시 EEPROM이 설명된다. 각각의 블록에 저장된 데이터는 동시에 소거된다. 일 실시예에서, 블록은 동시에 소거되는 셀들의 최소 단위이다. 각각의 블록은 일반적으로 프로그래밍의 단위일 수 있는 수 많은 페이지들로 나누어진다. 프로그래밍을 위한 데이터의 다른 단위들이 또한 가능하고 고려될 수 있다. 일 실시예에서, 개별 페이지들은 세그먼트로 나누어질 수 있고 그리고 이 세그먼트들은 기본 프로그래밍 동작으로 한 번에 쓰여지는 가장 낮은 수의 셀들을 포함할 수 있다. 데이터의 하나 또는 그 이상의 페이지들은 일반적으로 메모리 셀들의 하나의 행에 저장된다.
도 10에서의 예의 각각의 블록에서, 짝수 열과 홀수 열로 나누어진 8,512개의 열이 있다. 비트 라인은 또한 짝수 비트 라인(BLe)과 홀수 비트 라인(BLo)으로 나누어 진다. 홀수/짝수 비트 라인 아키텍처에서, 홀수 비트 라인에 연결되고 공통 워드 라인을 따라 있는 메모리 셀들은 한번에 프로그래밍되고, 반면에 짝수 비트 라인에 연결되고 공통 워드 라인을 따라 있는 메모리 셀들은 또 다른 한번에 프로그래밍된다. 도 10은 NAND 스트링을 형성하도록 직렬로 연결된 네 개의 메모리 셀들을 보여준다. 네 개의 셀들이 각각의 NAND 스트링 내에 포함되도록 도시되었지만, 네 개의 메모리 셀들 보다 더 많거나 더 적은 메모리 셀이 사용될 수도 있다. NAND 스트링의 하나의 단자는 선택 트랜지스터(SGD)를 통해 대응하는 비트 라인에 연결되고, 그리고 또 다른 단자는 제 2 선택 트랜지스터(SGS)를 통해 c-소스에 연결된다.
다른 실시예에서, 비트 라인은 홀수 및 짝수 비트 라인으로 나누어 지지 않는다. 이러한 아키텍처는 모든 비트 라인 아키텍처로서 공통적으로 언급된다. 모든 비트 라인 아키텍처에서, 블록의 모든 비트 라인들은 판독 및 프로그램 동작 동안 동시에 선택된다. 임의의 비트 라인에 연결되고 공통 워드 라인을 따라 있는 메모리 셀들은 동시에 프로그래밍된다.
홀수/짝수 비트 라인 아키텍처에서 판독 및 프로그래밍 동작의 일 실시예 동안, 4,256 개의 메모리 셀들이 동시에 선택된다. 선택된 메모리 셀들은 동일한 워드 라인을 가지며 그리고 동일한 종류의 비트 라인(예를 들어, 짝수 비트 라인 또는 홀수 비트 라인)을 갖는다. 따라서, 532 바이트의 데이터는 동시에 판독될 수 있거나 프로그래밍될 있다. 동시에 판독되고 혹은 프로그래밍되는 이러한 532 바이트의 데이터는 논리적 페이지를 형성한다. 따라서, 하나의 블록은 적어도 여덟 개의 논리적 페이지(네 개의 워드 라인, 각각 짝수 및 홀수 페이지를 가짐)를 저장할 수 있다. 각각의 메모리 셀이 두 비트의 데이터를 저장할 수 있을 때(예를 들어, 복수-상태 메모리 셀)(여기서 이러한 두 비트 각각은 서로 다른 페이지에 저장됨), 하나의 블록은 16 논리적 페이지를 저장한다. 다른 크기의 블록 및 페이지가 본 발명과 함께 사용될 수도 있다. 추가적으로, 도 9와 도 10에 도시된 것과 다른 아키텍처가 본 발명을 구현하는데 사용될 수도 있다.
메모리 셀들은 p-웰을 소거 전압(예를 들어, 20 볼트)까지 상승시키고 선택된 블록의 워드 라인을 접지시킴으로써 소거된다. 소스 및 비트 라인이 플로팅 된다. 소거는 전체 메모리 어레이, 개별 블록, 혹은 셀들의 또 다른 유닛 상에서 수행될 수 있다. 전자들은 플로팅 게이트로부터 p-웰 영역으로 전달되고 그리고 임계 전압은 (일 실시예에서) 음의 값이 된다.
판독 및 검증 동작에서, 선택 게이트(SGD 및 SGS) 및 선택되지 않은 워드 라인(예를 들어, WL0, WL2, 및 WL3)은 판독 패스 전압(예를 들어, 4.5볼트)까지 상승되어 트랜지스터들을 패스 게이트로서 동작하도록 한다. 선택된 워드 라인(예를 들어, WL1)은 전압에 연결되는데, 이 전압의 레벨은 해당 메모리 셀의 임계 전압이 이러한 레벨 이상인지 혹은 이하인지를 결정하기 위해 각각의 판독 및 검증 동작에 대해 구체적으로 특정되어 있다. 예를 들어, 두 가지 레벨 메모리 셀에 대한 판독 동작에서, 선택된 워드 라인(WL1)은 접지될 수 있고, 그래서 임계 전압이 0V보다 더 높은지 여부가 검출된다. 두 가지 레벨 메모리 셀에 대한 검증 동작에서, 선택된 워드 라인(WL1)은 예를 들어, 0.8V에 연결되고, 그래서 임계 전압이 적어도 0.8V에 도달했는지 안했는지 여부가 검증된다. 소스 및 p-웰은 제로(0) 볼트에 있다. 선택된 비트 라인(BLe)은 예를 들어, 0.7V의 레벨까지 사전 충전된다. 만약 임계 전압이 워드 라인 상의 판독 또는 검증 레벨보다 더 높다면, 해당 셀과 관련된 비트 라인(BLe)의 전위 레벨은 비전도성 메모리 셀로 인해 높은 레벨을 유지한다. 반면에, 만약 임계 전압이 판독 또는 검증 레벨보다 더 낮다면, 비트 라인을 방전시키는 전도성 메모리 셀로 인해 해당 비트 라인(BLe)의 전위 레벨은 낮은 레벨, 예를 들어, 0.5V보다 작은 레벨로 감소한다. 그럼으로써, 메모리 셀의 상태는 비트 라인에 연결된 전압 비교기 감지 증폭기에 의해 검출된다.
앞서 설명된 소거, 판독, 및 검증 동작은 종래 기술에서 알려진 기술에 따라 수행된다. 따라서, 세부적으로 설명된 많은 부분은 본 발명의 기술분야에서 숙련된 자에 의해 다양하게 변경될 수 있다. 종래 기술에서 공지된 다른 소거, 판독, 및 검증 기술이 또한 사용될 수 있다.
성공적인 프로그램 프로세스의 끝에서, 메모리 셀들의 임계 전압은, 적절하게, 프로그래밍되는 메모리 셀들에 대한 임계 전압의 하나 또는 그 이상의 분포 내에 있어야 하고 또는 소거되는 메모리 셀들에 대한 임계 전압의 분포 내에 있어야 한다. 도 11은 각각의 메모리 셀이 두 비트의 데이터를 저장할 때 메모리 셀 어레 이에 대한 임계 전압 분포를 나타낸다. 도 11은 소거된 메모리 셀들에 대한 제 1 임계 전압 분포(E)를 나타낸다. 프로그래밍된 메모리 셀들에 대한 세 가지 임계 전압 분포(A, B, 및 C)가 또한 도시된다. 일 실시예에서, E 분포에서의 임계 전압은 음의 값이고, A, B, 및 C 분포에서의 임계 전압은 양의 값이다.
도 11의 각각의 개별 임계 전압 범위는 데이터 비트들의 세트에 대한 소정의 값들에 대응된다. 메모리 셀에 프로그래밍되는 데이터와 셀의 임계 전압 레벨 사이의 특정 관계는 셀들에 대해 채택된 데이터 인코딩 방식에 따라 다르다. 일 실시예에서, 데이터 값들이 그레이 코드 할당을 사용하여 임계 전압 범위에 할당되고, 그래서 만약 플로팅 게이트의 임계 전압이 그 이웃하는 물리적 상태로 잘못 시프팅 할지라도, 단지 하나의 비트만이 영향을 받는다. 그러나, 다른 실시예에서 그레이 코딩은 사용되지 않는다. 하나의 예는 임계 전압 범위 E(상태 E)에 "11"을 할당하고, 임계 전압 범위 A(상태 A)에 "10"을 할당하고, 임계 전압 범위 B(상태 B)에 "00"을 할당하고, 임계 전압 범위 C(상태 C)에 "01"을 할당한다. 도 11이 네 가지 상태를 도시하고 있지만, 본 발명은 또한 네 가지 상태보다 많은 상태 혹은 적은 상태를 포함하는 것을 포함하는 다른 복수-상태 구조와 함께 사용될 수도 있다.
도 11은 또한 메모리 셀들로부터 데이터를 판독하기 위한 세 가지 판독 기준 전압(VrA, VrB 및 VrC)을 보여주고 있다. 주어진 메모리 셀의 임계 전압이 VrA, VrB 및 VrC 이상 혹은 이하에 있는지 여부를 테스트함으로써, 시스템은 메모리 셀이 어떤 상태에 있는지를 결정할 수 있다. 도 11은 또한 세 가지 검증 기준 전압(VvA, VvB 및 VvC)을 보여주고 있다. 메모리 셀들을 상태 A에 프로그래밍하는 경우, 시스템은 이러한 메모리 셀들이 VvA 이상의 임계 전압을 갖는지 여부를 테스트한다. 메모리 셀들을 상태 B에 프로그래밍하는 경우, 시스템은 이러한 메모리 셀들이 VvB 이상의 임계 전압을 갖는지 여부를 테스트한다. 메모리 셀들을 상태 C에 프로그래밍하는 경우, 시스템은 이러한 메모리 셀들이 VvC 이상의 임계 전압을 갖는지 여부를 결정한다.
도 11은 전체 시퀀스 프로그래밍(full sequence programming)을 사용하는 일 실시예를 도시한다. 전체 시퀀스 프로그래밍에서, 메모리 셀들은 소거 상태 E로부터 프로그래밍 상태 A, B, 및 C 중 어느 하나로 직접 프로그래밍될 수 있다. 예를 들어, 프로그래밍될 한 무리(population)의 메모리 셀들은 먼저 소거될 수 있고 그래서 그 무리 내의 모든 메모리 셀들은 소거 상태 E에 있게 된다. 그 다음으로 선택된 메모리 셀들의 제어 게이트에 인가되는 일련의 프로그램 전압 펄스들을 사용하여, 도 15에 관하여 이후에 설명되는 프로세스가 메모리 셀들을 상태 A, B, 혹은 C로 직접 프로그래밍하는 데 사용된다. 일부 메모리 셀들이 상태 E에서 상태 A로 프로그래밍 되고 있는 반면에, 다른 메모리 셀들은 상태 E에서 상태 B로 그리고/또는 상태 E에서 상태 C로 프로그래밍된다.
도 12는 두 개의 서로 다른 페이지들(더 낮은 페이지 및 더 위쪽 페이지)에 대한 데이터를 저장하는 복수-상태 메모리 셀을 프로그래밍하는 투-패스 기술(two- pass technique)의 예를 나타낸다. 네 가지 상태, 상태 E(11), 상태 A(10), 상태 B(00) 및 상태 C(01)가 도시된다. 상태 E에 대해, 양쪽 페이지는 "1"을 저장한다. 상태 A에 대해, 더 낮은 페이지는 "0"을 저장하고 더 위쪽 페이지는 "1"을 저장한다. 상태 B에 대해, 양쪽 페이지는 "0"을 저장한다. 상태 C에 대해, 더 낮은 페이지는 "1"을 저장하고 더 위쪽 페이지는 "0"을 저장한다. 주의할 것으로, 특정 비트 패턴들이 상태들 각각에 할당되었지만, 다른 비트 패턴들이 할당될 수도 있다. 제 1 프로그래밍 패스에서, 셀의 임계 전압 레벨은 더 낮은 논리적 페이지에 프로그래밍될 비트에 따라서 세팅된다. 만약 그 비트가 로직 "1"이라면, 임계 전압은 변화되지 않는데, 왜냐하면 그것은 더 앞서 소거된 결과로서 적절한 상태에 있기 때문이다. 그러나, 만약 프로그래밍될 비트가 로직 "0"이라면, 화살표(302)에 의해 도시된 바와 같이 셀의 임계 레벨은 증가되어 상태 A가 된다. 이것은 제 1 프로그래밍 패스로 결론내린다.
제 2 프로그래밍 패스에서, 셀의 임계 전압 레벨은 더 위쪽 논리적 페이지에 프로그래밍되는 비트에 따라 세팅된다. 만약 더 위쪽 논리적 페이지 비트가 로직 "1"을 저장해야 한다면, 더 낮은 페이지 비트의 프로그래밍에 따라 셀은 상태 E 혹은 상태 A(이들 양쪽 모두는 "1"의 더 위쪽 페이지 비트를 지니고 있다) 중 하나에 있기 때문에 어떠한 프로그래밍도 일어나지 않는다. 만약 더 위쪽 페이지 비트가 로직 "0"이 되어야 한다면, 임계 전압은 시프트된다. 만약 제 1 패스의 결과로 셀이 소거 상태 E에 남아 있다면, 제 2 단계에서 셀은 프로그래밍되고 그래서 임계 전압은 증가되어 화살표(306)에 의해 도시된 바와 같이 상태 C에 있게 된다. 만약 셀이 제 1 프로그래밍 패스의 결과로서 상태 A에 프로그래밍 되었다면, 메모리 셀은 또한 제 2 패스에서 프로그래밍되고, 그래서 임계 전압은 증가되어 화살표(304)에 의해 도시된 바와 같이 상태 B에 있게 된다. 제 2 패스의 결과는 더 낮은 페이지에 대한 데이터의 변경 없이 더 위쪽 페이지에 대해 로직 "0"을 저장하도록 지정된 상태에 셀을 프로그래밍하는 것이다.
일 실시예에서, 충분한 데이터가 전체 페이지를 채우도록 쓰여져야 한다면 시스템은 전체 시퀀스 쓰기를 수행하도록 설정될 수 있다. 만약 충분한 데이터가 전체 페이지에 대해 써지지 않는다면, 프로그래밍 프로세스는 수신된 데이터로 더 낮은 페이지 프로그래밍을 프로그래밍할 수 있다. 후속 데이터가 수신될 때, 시스템은 더 위쪽 페이지를 프로그래밍한다. 또 다른 실시예에서, 만약 충분한 데이터가 계속해서 수신되어 워드 라인의 메모리 셀 전체(혹은 대부분)를 채운다면, 시스템은 투-패스 기술을 사용하여 데이터 쓰기를 시작할 수 있고 그 다음에 전체 시퀀스 프로그래밍 모드로 전환할 수 있다. 이러한 실시예의 더 세부적인 사항은 미국 특허출원 번호 11/013,125(발명의 명칭: "Pipelined Programming of Non- Volatile Memories Using Early Data," 2004.12.14. 출원, 발명자: Sergy Anatolievich Gorobets 및 Yan Li)에 개시되어 있으며, 이것은 그 전체가 참조로 본 명세서에 통합된다.
도 13A-13C는, 임의의 특별한 메모리 셀에 있어서, 이전 페이지에 대해 인접한 메모리 셀에 쓰기를 수행한 다음에 특별한 페이지에 관한 그 특별한 메모리 셀에 쓰기를 수행함으로써, 플로팅 게이트 대 플로팅 게이트 커플링을 감소시키는 비휘발성 메모리를 프로그래밍하는 또 다른 프로세스를 개시한다. 도 13A-13C에 의해 설명되는 프로세스의 구현의 일 예에서, 비휘발성 메모리 셀은 네 가지 데이터 상태를 사용하여 메모리 셀 당 두 비트의 데이터를 저장한다. 예를 들어, 상태 E가 소거 상태이고 상태 A, B, 및 C가 프로그래밍 상태라고 가정하자. 상태 E는 데이터 11을 저장한다. 상태 A는 데이터 01을 저장한다. 상태 B는 데이터 10을 저장한다. 상태 C는 데이터 00을 저장한다. 물리적 데이터 상태에 대한 데이터의 다른 코딩이 또한 사용될 수 있다. 각각의 메모리 셀은 두 페이지의 데이터를 저장한다. 참조 목적으로 데이터의 이러한 페이지들은 더 위쪽 페이지 및 더 낮은 페이지로 불린다. 그러나 이들은 다른 명칭을 부여받을 수 있다. 도 13A-13C의 프로세스에 대한 상태 A에 관하여, 더 위쪽 페이지는 비트 0을 저장하고 더 낮은 페이지는 비트 1을 저장한다. 상태 B에 관하여, 더 위쪽 페이지는 비트 1을 저장하고 더 낮은 페이지는 비트 0을 저장한다. 상태 C에 관하여, 양쪽 페이지는 비트 데이터 0을 저장한다. 도 13A-13C의 프로그래밍 프로세스는 두-단계 프로세스이다. 제 1 단계에서, 더 낮은 페이지가 프로그래밍된다. 더 낮은 페이지가 데이터 1을 유지해야 한다면 메모리 셀 상태는 상태 E에 남아있다. 만약 데이터가 0으로 프로그래밍 되어야 한다면, 메모리 셀의 전압의 임계 값은 상승되어 메모리 셀은 중간 상태 B'에 프로그래밍된다. 도 13B는 상태 E로부터 상태 B'로의 메모리 셀들의 프로그래밍을 보여준다. 도 13A에 도시된 상태 B'는 중간 상태 B'이다. 따라서 검증 포인트는 VvB'로 도시되고, 이것은 VvB보다 더 낮다.
일 실시예에서, 메모리 셀이 상태 E로부터 상태 B로 프로그래밍된 이후에, NAND 스트링 내의 그 이웃하는 메모리 셀은 더 낮은 페이지에 대해 프로그래밍된다. 예를 들어, 도 7를 다시 보면, 메모리 셀(106)에 대한 더 낮은 페이지가 프로그래밍된 이후에, 메모리 셀(104)에 대한 더 낮은 페이지가 프로그래밍된다. 메모리 셀(104)을 프로그래밍한 이후에, 플로팅 게이트 대 플로팅 게이트 커플링 효과는, 만약 메모리 셀(104)이 상태 E로부터 상태 B로 상승된 임계 전압을 갖는다면, 메모리 셀(106)의 겉보기 임계 전압을 상승시킨다. 이것은 상태 B에 대한 임계 전압 분포의 폭을 도 13B의 임계 전압 분포(320)로 도시된 것으로 확장시키는 효과가 있다. 임계 전압 분포의 겉보기 확장은 더 위쪽 페이지를 프로그램하는 경우 교정된다.
도 13C는 더 위쪽 페이지를 프로그래밍하는 프로세스를 도시한다. 만약 메모리 셀이 소거 상태 E에 있고 그리고 더 위쪽 페이지가 1에 남아있어야 한다면, 메모리 셀은 상태 E에 남아있다. 만약 메모리 셀이 상태 E에 있고 그리고 더 위쪽 페이지 데이터가 0으로 프로그래밍되어야 한다면, 메모리 셀의 임계 전압은 상승되어 메모리 셀은 상태 A에 있게 된다. 만약 메모리 셀이 중간 임계 전압 분포(320)에 있고 그리고 더 위쪽 페이지 데이터가 1에서 남아있어야 한다면, 메모리 셀은 최종 상태 B에 프로그래밍된다. 만약 메모리 셀이 중간 임계 전압 분포(320)에 있고, 더 위쪽 페이지 데이터가 데이터 0이 되어야 한다면, 메모리 셀의 임계 전압은 상승되어 메모리 셀은 상태 C에 있게 된다. 도 13A-13C에 의해 도시된 프로세스는 플로팅 게이트 대 플로팅 게이트 커플링의 효과를 감소시키는데, 왜냐하면 이웃하는 메모 리 셀들의 단지 더 위쪽 페이지 프로그래밍만이 주어진 메모리 셀의 겉보기 임계 전압에 영향을 주기 때문이다.
도 13A-13C가 네 가지 데이터 상태 및 두 페이지의 데이터에 관한 예를 제공하고 있지만, 도 13A-13C에 의해 설명되는 개념은 네 가지 상태보다 많거나 혹은 적은 상태 및 다른 개수의 페이지를 갖는 다른 실시예에 적용될 수 있다.
도 14A와 도 14B는 도 13A-13C의 프로그래밍 방법을 사용하는 메모리 셀들을 프로그래밍하는 순서를 설명한다. 도 14A는 모든 비트 라인 프로그래밍을 수행하는 아키텍처에 관한 것이다. 워드 라인 WL0에 연결된 메모리 셀들에 대해, 더 낮은 페이지는 페이지 0을 형성하고 그리고 더 위쪽 페이지는 페이지 2를 형성한다. 워드 라인 WL1에 연결된 메모리 셀들에 대해, 더 낮은 페이지는 페이지 1을 형성하고 그리고 더 위쪽 페이지는 페이지 4를 형성한다. 워드 라인 WL2에 연결된 메모리 셀들에 대해, 더 낮은 페이지는 페이지 3을 형성하고 그리고 더 위쪽 페이지는 페이지 6을 형성한다. 워드 라인 WL3에 연결된 메모리 셀들에 대해, 더 낮은 페이지는 페이지 5를 형성하고 그리고 더 위쪽 페이지는 페이지 7을 형성한다. 메모리 셀들은 페이지 번호에 따라 수치적 순서로 페이지 0으로부터 페이지 7까지 프로그래밍 된다.
도 14B의 테이블은 홀수/짝수 프로그래밍을 수행하는 아키텍처에 대한 것이다. 워드 라인(WL0)에 연결된 짝수 비트 라인 상의 메모리 셀에 대해, 더 낮은 페이지는 페이지 0을 형성하고 더 위쪽 페이지는 페이지 4를 형성한다. 워드 라인(WL0)에 연결된 홀수 비트 라인 상의 메모리 셀에 대해, 더 낮은 페이지는 페이지 1을 형성하고 더 위쪽 페이지는 페이지 5를 형성한다. 워드 라인(WL1)에 연결된 짝수 비트 라인 상의 메모리 셀에 대해, 더 낮은 페이지는 페이지 2을 형성하고 더 위쪽 페이지는 페이지 8를 형성한다. 워드 라인(WL1)에 연결된 홀수 비트 라인 상의 메모리 셀에 대해, 더 낮은 페이지는 페이지 3을 형성하고 더 위쪽 페이지는 페이지 9를 형성한다. 워드 라인(WL2)에 연결된 짝수 비트 라인 상의 메모리 셀에 대해, 더 낮은 페이지는 페이지 6을 형성하고 더 위쪽 페이지는 페이지 12를 형성한다. 워드 라인(WL2)에 연결된 홀수 비트 라인 상의 메모리 셀에 대해, 더 낮은 페이지는 페이지 7을 형성하고 더 위쪽 페이지는 페이지 13을 형성한다. 워드 라인(WL3)에 연결된 짝수 비트 라인 상의 메모리 셀에 대해, 더 낮은 페이지는 페이지 10을 형성하고 더 위쪽 페이지는 페이지 14를 형성한다. 워드 라인(WL3)에 연결된 홀수 비트 라인 상의 메모리 셀에 대해, 더 낮은 페이지는 페이지 11을 형성하고 더 위쪽 페이지는 페이지 15를 형성한다. 메모리 셀은 페이지 번호에 따라 수치적 순서로 페이지 0으로부터 페이지 15까지 프로그래밍 된다. 주의할 것으로, 도 14A-14B의 실시예에서, 메모리 셀은 소스측으로부터 드레인측으로 NAND 스트링을 따라 프로그래밍된다. 또한, 테이블은 네 개의 워드 라인을 갖는 실시예만을 나타낸 것이다. 테이블에 나타난 다양한 방법이 네 개의 워드 라인보다 더 많거나 혹은 더 적은 워드 라인을 갖는 시스템에 적용될 수 있다.
도 11, 도 12, 및 도 13에 의해 설명되는 방법에 대한 다양한 실시예들에 따른 프로그래밍의 다양한 순서는 사용된 프로그래밍 아키텍처의 타입에 기초하여 수행될 수 있다. 홀수/짝수 비트 라인 프로그래밍을 사용하는 아키텍처의 예는 미국 특허번호 6,522,580과 6,643,188에서 찾을 수 있고, 이들 모두는 그 전체가 참조로 본 명세서에 통합된다. 모든 비트 라인 프로그래밍을 사용하는 아키텍처에 대한 더 많은 정보는 그 전체가 참조로 본 명세서에 통합되는 다음의 미국 특허 문서들에서 찾을 수 있다: 미국 특허출원공개 US 2004/0057283; 미국 특허출원공개 US 2004/006003l; 미국 특허출원공개 US 2004/0057285; 미국 특허출원공개 US 2004/0057287; 미국 특허출원공개 US 2004/0057318; 미국 특허출원공개 US 2003/0161182; 미국 특허출원공개 US 2004/0047182. 추가적으로, 그 전체가 본 명세서에 참조로 통합되고 본 발명과 동시에 출원된 미국 특허출원번호 XX\XXX,XXX(대리인 문서 번호 SAND-01040US0)(발명의 명칭: "COMPENSATING FOR FLOATING GATE COUPLING DURING READ OPERATIONS")는 모든 비트 라인 및 홀수/짝수 프로그래밍 아키텍처 양쪽 모두에 대한 전체 시퀀스 및 투-패스 프로그래밍의 예를 설명한다.
앞서 설명된 바와 같이, 메모리 어레이에서의 메모리 셀의 프로그래밍은 프로그램 전압(Vpgm)을 일련의 펄스들로서 메모리 셀의 제어 게이트에 인가함으로써 달성된다. Vpgm의 크기의 선택과 △Vpgm에 대한 증분 값은 타협관계(compromise)에 있다. 예를 들어, △Vpgm에 대한 값이 너무 높으면 결과적으로 빠른 메모리 셀의 오버프로그래밍(over-programming)을 일으키고, 반면에 값이 너무 낮으면 결과적으로 프로그래밍 속도에서 비합리적인 감소를 일으킨다.
종래 기술은 프로그래밍되는 메모리 상태에 상관없이 동일한 증분 값을 인가 하는 것이었다. 전체 시퀀스 프로그래밍에서, 메모리 셀은 공통의 일련의 프로그램 전압 펄스들의 인가하에서 서로 다른 메모리 상태에 동시에 프로그래밍된다. 이것은 예를 들어, 공통의 프로그램 전압의 인가하에서 셀들을 소거 상태에서 상태 C로 그리고 다른 셀들을 상태 A에서 상태 B로 동시에 프로그래밍할 때 투-패스 프로그래밍에서 경우와 마찬가지이다. 결과적으로, 종래 기술에서 일반적인 것으로, 프로그래밍되는 실제 메모리 상태에 상관없이 단일 프로그램 전압 증분 값을 사용한다. 앞서 설명된 바와 같이, 이것은 결과적으로 더 높은 혹은 가장 높은 임계 전압 값 메모리 상태를 볼 때 성능의 손실을 일으킨다. 예를 들어, 가장 높은 메모리 상태는 이미 설명된 이유에 대해 더 낮은 메모리 상태만큼 빡빡한 임계 전압 분포를 가질 필요가 없다. 작은 증분 값을 사용하는 것은 빡빡한 분포를 유지하기 위해 더 낮은 메모리 상태를 프로그래밍할 때 필요할 수 있다. 그러나 가장 높은 메모리 상태를 프로그래밍할 때 작은 증분 값의 사용은 결과적으로 귀중한 프로그래밍 시간을 불필요하게 낭비할 수 있다.
다양한 실시예들에 따르면, 이러한 종래 기술의 단점은 가장 높은 메모리 상태의 고유 특성을 이용함으로써 극복된다. 일 실시예에서, 메모리 셀을 가장 높은 메모리 상태에 프로그래밍할 때 서로 다른 증분 값이 사용된다. 예를 들어, 더 낮은 상태에 대해 모든 메모리 셀이 그들의 타겟 레벨에 프로그래밍되었다고 결정되는 경우(또는 최대의 미리 결정된 개수의 셀들을 제외하고 거의 모든 메모리 셀들이 그들의 타겟 레벨에 프로그래밍된 경우), 프로그램 전압 증분 값이 증가되어 프로그래밍의 속도를 증가시킬 수 있다. 네 가지 상태 전체 시퀀스 프로그래밍 구현 에서, 두 개의 가장 낮은 프로그래밍 상태(A 및 B)에 대한 프로그래밍이 완성될 때, 예를 들어, 더 큰 Vpgm 증분 값이 사용될 수 있다. 네 가지 상태 투-패스(예를 들어, 더 위쪽/더 낮은 페이지 프로그래밍) 프로그래밍 실시예에서, 두 번째로 가장 높은 상태(B)에 대한 프로그래밍이 완성될 때 더 큰 증분 값이 사용될 수 있다. 이러한 기술의 변형은 많이 존재할 수 있으며 여러 실시예에 따라 달성될 수 있다. 일부 실시예에서, 가장 높은 메모리 상태에 대한 거침/섬세 프로그래밍은 더 큰 증분 값이 사용되는 경우 촉진될 수 있다. 이것은 (예를 들어, 작은 증분 값이 사용되고 거침/섬세 프로그래밍은 사용되지 않을 때) 임계 전압 분포를 그 정상 범위 이상으로 증가시키는 것을 피할 수 있다.
도 15는 일 실시예에 따른 비휘발성 메모리 시스템을 프로그래밍하는 방법을 도시한 흐름도이다. 본 발명의 기술분야에서 통상의 기술을 갖는 자들에게는 명백한 바와 같이, 특정 애플리케이션 혹은 실시예에 따라서 다양한 단계가 변경되고, 부가되고, 혹은 제거될 수 있으며, 이러한 것은 여전히 개시되는 본 발명의 범위 및 사상의 범위 내에 있는 것이다. 다양한 실시예들에서, 메모리 셀들은 프로그래밍 전에 (블록 혹은 다른 단위로) 소거된다. 도 15의 단계(400)에서 (그리고 도 9를 참조하여), 데이터 로드 명령은 제어기(218)에 의해 발행되고 그리고 명령 회로(214)에 입력되어 데이터가 데이터 입력/출력 버퍼(212)에 입력되도록 한다. 입력 데이터는 명령 회로(214)에 입력된 도시되지는 않은 명령 래치 신호를 통해 상태 머신(216)에 의해 명령으로 인식되고 래치된다. 단계(402)에서, 페이지 어드레스를 저장하는 어드레스 데이터가 제어기(218)로부터 행 제어기(206)에 입력된다. 입력 데이터는 명령 회로(214)에 입력된 어드레스 래치 신호에 의해 영향을 받는 상태 머신(216)을 통해 페이지 어드레스로서 인식되고 래치된다. 단계(404)에서, 532 바이트의 프로그램 데이터가 데이터 입력/출력 버퍼(212)에 입력된다. 주의할 것으로, 532 바이트의 프로그램 데이터는 설명된 특별한 실시예에 특정된 것이고 다른 실시예는 다양하고 다른 크기의 프로그램 데이터를 요구하거나 사용할 수 있다. 이 데이터는 선택된 비트 라인에 대한 레지스터에서 래치될 수 있다. 일부 실시예들에서, 데이터는 또한 선택된 비트 라인에 대해 제 2 레지스터에서 래치되어 검증 동작을 위해 사용된다. 단계(406)에서, 프로그램 명령은 제어기(218)에 의해 발행되고 그리고 데이터 입력/출력 버퍼(312)에 입력된다. 명령은 명령 회로(214)에 입력된 명령 래치 신호를 통해 상태 머신(216)에 의해 래치된다.
프로그램 명령에 의해 트리거(trigger)되고 단계(404)에서 래치된 데이터는 상태 머신(216)에 의해 제어되는 선택된 메모리 셀들로 프로그래밍된다. 전체 시퀀스 프로그래밍 기술을 사용하는 일 실시예에서, 데이터는 이후에 설명되는 도 16의 계단형 펄스(stepped pulses)를 사용하여 선택된 메모리 셀들로 프로그래밍된다. 단계(408)에서, 선택된 워드 라인에 인가된 프로그래밍 펄스 전압 레벨 Vpgm은 시작 펄스(예를 들어, 12 볼트)로 초기화되고, 그리고 상태 머신(516)에 의해 유지되는 프로그램 카운터(Program Counter, PC)는 0으로 초기화된다. 추가적으로, 프로그램 전압 증분 값 혹은 단계 크기(△Vpgm)는 제 1 증분 값(△Vpgm1)으로 설정된다.
단계(410)에서, 프로그램 전압(Vpgm) 펄스는 선택된 워드 라인에 인가된다. 프로그래밍될 메모리 셀을 포함하는 비트 라인들은 접지되어 프로그래밍을 인에이블하고, 반면에 프로그래밍 되지 않을 다른 비트 라인은 Vdd에 연결되어 프로그래밍 펄스의 인가 동안 프로그래밍을 금지시킨다.
단계(412)에서, 선택된 메모리 셀들의 상태가 검증된다. 만약 선택된 셀의 타겟 임계 전압이 적절한 레벨에 도달한 것으로 검출된다면, 선택된 셀은 그 타겟 상태에 프로그래밍된 것으로 검증된다. 만약 임계 전압이 적절한 레벨에 도달하지 못한 것으로 검출된다면, 선택된 셀은 그 타겟 상태에 프로그래밍된 것으로 검증되지 않는다. 단계(412)에서 그 타겟 상태에 프로그래밍된 것으로 검증된 이러한 셀들은 후속 프로그래밍으로부터 배제된다. 단계(414)에서, 프로그래밍될 모든 셀들이 그들의 대응하는 상태에 프로그래밍되었다고 검증되었는 지가 예를 들어, 이러한 상태를 검출하고 신호를 보내도록 설계된 적절한 데이터 저장 레지스터들을 점검함으로써 결정된다. 만약 그렇다면, 프로그래밍 프로세스는, 선택된 모든 메모리 셀들이 그들의 타겟 상태에 프로그래밍되고 검증되었기 때문에, 성공적으로 완료된다. 패스의 상태가 단계(416)에서 보고된다.
만약 단계(414)에서 메모리 셀들 모두가 그렇게 검증되지 않았다고 결정된다면, 프로세스는 단계(418)로 진행한다. 단계(418)에서, 프로그램 카운터(PC)는 프로그램 리미트 값(program limit value)에 대비하여 점검된다. 프로그램 리미트 값의 일 예는 20이지만, 다른 값도 다양한 실시예들에서 사용될 수 있다. 만약 프로그램 카운터(PC)가 20보다 작지 않다면, 단계(419)에서 성공적으로 프로그래밍 되지 않은 비트들의 개수가 미리 결정된 개수 이하인지 여부가 결정된다. 만약 비성공적으로 프로그래밍된 비트들의 개수가 미리 결정된 개수 이하라면, 프로그램 프로세스는 패스된 것으로 플래그(flag)되고 패스 상태가 단계(421)에서 보고된다. 그러나, 만약 비성공적으로 프로그래밍된 비트들의 개수가 미리 결정된 개수보다 더 많다면, 프로그램 프로세스는 실패로 플래그되고 그리고 실패의 상태가 단계(420)에서 보고된다. 성공적으로 프로그래밍되지 않은 비트들은 판독 프로세스 동안 에러 정정을 사용하여 정정될 수 있다.
만약 프로그램 카우터(PC)가 20(또는 임의의 적당한 값)보다 작다면, 단계(422)에서 메모리 셀들을 더 낮은 상태에 프로그래밍하는 것이 완료되었는지 여부가 결정된다. 이후에 더 상세히 설명되는 바와 같이, 단계(422)는 사용된 프로그래밍 아키텍처의 타입에 따라 달라지는 실시예에 따른 다양한 선택사항(options)을 포함할 수 있다. 예를 들어, 네 가지 상태 전체 시퀀스 프로그래밍 실시예(예를 들어, 도 11)에서, 단계(422)는 더 낮은 두 가지 상태(A 및 B)에 대한 프로그래밍이 완료되었는지 여부를 결정하는 것을 포함할 수 있다. 상태(B)와 상태(C)가 단일 프로그램 전압 신호로 동시에 프로그래밍되는 네 가지 상태 투-패스 프로그래밍 실시예(예를 들어, 도 12)에서, 단계(422)는 상태(B)에 대한 프로그래밍이 완료되었는지를 결정하는 것을 포함할 수 있다. 일 실시예에서, 프로그래밍이 완료되었는지를 결정하는 것은 타겟 상태(들)에 대한 모든 셀들이 프로그래밍되었는지를 결정하는 것을 포함한다. 또 다른 실시예에서, 이러한 결정은 최대의 미리 결정된 개수의 셀들을 제외하고 거의 모든 메모리 셀들이 그들의 타겟 상태(들)에 프로그래밍 되었는지 여부를 결정하는 것을 포함한다. 이러한 나중의 실시예에서, 에러 정정 제어(Error Correction Control, ECC) 기술은 일반적으로 그 타겟 상태에 완전하게 프로그래밍되지 않은 이러한 셀들에 대해 정정을 하는데 사용된다.
만약 더 낮은 상태(들)에 대한 모든 셀들(혹은 최대의 미리 결정된 개수를 제외한 모든 것과 같이 사용되는 일부 다른 개수의 셀들)이 그들의 타겟 레벨(들)에 도달한 것으로 검증되지 않는다면, 단계(424)에서 프로그램 전압은 제 1 증분 값(△Vpgm1)만큼 증분되고 그리고 프로그램 카운터(PC)는 1만큼 증분된다. 만약 더 낮은 상태(들)에 대한 모든(또는 거의 모든) 셀들이 그들의 타겟 레벨(들)에 도달한 것으로 검증된다면, 단계(426)에서 프로그램 전압은 제 2 증분 값(△Vpgm2)만큼 단계가 증가되거나 증분되고 그리고 프로그램 카운터(PC)는 1만큼 증분된다. 유의할 것으로, 일부 실시예들에서, 더 큰 단계 크기를 반영하기 위해 1과는 다른 값으로 프로그램 카운터를 증가시키는 것이 바람직할 수 있다. 예를 들어, 루프 카운터(loop counter)가, 더 큰 단계 크기가 더 작은 단계 크기보다 두 배 더 큰 경우에 2의 값만큼 증가될 수 있다. 가장 높은 상태가 프로그래밍되는 속도를 증가시키기 위해 △Vpgm2는 △Vpgm1보다 더 크다. 비한정적인 예로서, 각각 △Vpgm1은 0.2V 또는 0.4V일 수 있고, △Vpgm2는 0.4V 또는 0.8V일 수 있다. 프로그래밍 속도에 있어서 이러한 이득은 신뢰성 및 정확한 프로그래밍에 역영향을 미치지 않는데, 왜냐하면 가장 높은 상태는 임계 전압의 더 큰 분포를 갖는 능력에 있어서 유일하기 때문이다. △Vpgm2 대 △Vpgm1의 크기의 비율은 실시예 및 본 명세서에서 포함된 원리들이 구현되는 여러 타입의 아키텍처에 따라 달라질 수 있다. 일 실시예에서, △Vpgm2의 크기는 다양한 전압의 인가 하에서 메모리 셀들의 프로그래밍 특성을 검사함으로써 실험적으로 선택될 수 있다. 속도를 최대화시키고 반면에 합리적인 범위에서 분포를 유지할 수 있는 값이 선택될 수 있다. 다양한 증분 값들의 크기에 관한 더 세부적인 것은 도 16 및 도17과 관련되어 설명된다.
단계(426) 또는 단계(424) 이후에, 프로세서는 단계(410)으로 다시 돌아가 다음 Vpgm 프로그램 펄스를 인가한다. 성공적인 프로그램 프로세스의 끝에서, 메모리 셀들의 임계 전압은 프로그래밍된 메모리 셀들에 대한 임계 전압의 하나 또는 그 이상의 분포들 내에 있어야 하거나 또는 소거된 메모리 셀들에 대한 임계 전압의 분포 내에 있어야 한다.
주의할 것으로, 도 15는 전체 시퀀스 프로그래밍(예를 들어, 도 11)이 사용될 때와 같이, 단일 패스 기술에서 프로그래밍하는 방법을 설명하고 있다. 그러나, 투-패스 프로그래밍 방법에 대한 구체적 원리의 확장은 본 발명의 기술분야에서 통상의 기술을 가진자에게는 명백하다. 예를 들어, 도 12에서 예시된 바와 같이 네 가지 상태 2-패스 프로그래밍 프로세스에서, 단계들(410-426)의 반복의 제 1 세트가 수행되어, 필요한 셀들을 소거 상태 E로부터 제 1 프로그래밍 상태 A로 이동시킴으로써 데이터의 더 낮은 페이지를 프로그래밍할 수 있다. △Vpgm에 대한 더 큰 증분 값이 임의의 포인트에서 사용되지 않고 반면에 선택된 셀들을 상태 A로 프로그래밍하기 때문에, 단계(422 및 426)는 생략될 수 있고 Vpgm은 단계(424)에서 언제나 △Vpgm1만큼 증분될 수 있다. 더 낮은 페이지 프로그래밍이 더 낮은 페이지에 대해 단계(416)에서 보고된 패스의 상태에 의해 표시되는 바와 같이 완료된다면, 단계(410-426)의 반복의 제 2 세트가 더 위쪽 페이지 프로그래밍에 대해 수행되어 일부 셀들을 상태 A로부터 상태 B로 프로그래밍할 수 있고 일부 셀들을 상태 E로부터 상태 C로 프로그래밍할 수 있다. 반복의 제 2 세트에서, 단계(422 및 426)가 포함된다. 상태 B에 프로그래밍하는 것이 단계(422)에서 결정된 바와 같이 완료된다면, 상태 C에 프로그래밍하는 것을 완료하기 위해 반복의 나머지 동안 단계(426)에서 △Vp gm은 △Vpgm2만큼 증분된다. 구체화된 원리들이 네 가지 이상의 상태(예를 들어, 6, 8 혹은 그 이상의 상태)에 프로그래밍되는 디바이스에 동등하게 응용가능하다.
도 16은 다른 프로그램 전압 단계 크기를 이용하여 서로 다른 상태를 프로그래밍하기 위한 일 실시예에 따른 프로그램 전압 신호를 도시한다. 도 16의 신호는 단지 예시적 신호이고, 프로그래밍의 다양한 레벨을 완료하도록 요구된 펄스들의 수는 실시예에 따라 변할 수 있다. 도 16에 도시된 프로그램 전압 시퀀스가 전체 시퀀스 프로그래밍을 사용하여 네 가지 상태 디바이스를 프로그래밍한다고 가정하며, 여기서 세 가지 프로그래밍 상태 각각은 동시에 프로그래밍된다. 그러나, 도 16의 구체화된 원리는 투-패스 프로그래밍과 같은 다른 프로그래밍 방법에 동등하게 응용가능하다. 예를 들어, 네 가지 상태 투-패스 실시예에서, Vpgm 펄스들의 제 1 세트가 소거 상태로부터 상태 A(또는, 앞서 설명된 바와 같이 중간 상태 B)로 프로그래밍하기 위해 인가된다. △Vpgm1의 단일 증분 값이 제 1 패스 전체를 통해 사용된다. 선택 셀들을 상태 E로부터 상태 C로 그리고 상태 A로부터 상태 B로 프로그래밍하기 위한 제 2 패스에 대해, Vpgm은 시작 값으로 다시 초기화될 수 있으며(선택 사항), 그리고 제 2 패스 프로그래밍이 시작할 수 있다. 이러한 실시예에서, 도 16과 같은 관련 도면은 단지 B-레벨 및 C-레벨 프로그래밍을 보여주고, 증분 값에서의 변화는 단지 B-레벨 프로그래밍의 완료에 따라 다르다. 추가적으로, 도 16의 프로그램 전압 신호의 원리는 임의 개수의 상태들에 응용가능하고, 그 확장은 본 발명의 기술분야에서 통상의 지식을 가진자들에게는 매우 명백하다.
도 16의 하나의 펄스는 단계(410-426)의 각각의 반복 동안 도 15의 단계(410)에서 선택된 워드 라인에 인가될 수 있다. 프로그램 전압(Vpgm)은 t0에서 V1(예를 들어, 12V)의 시작 값으로 초기화되고(단계(408)), 그리고 선택된 워드 라인에 인가된다. 검증이 t0에서의 제 1 Vpgm 펄스와 t1에서의 제 2 Vpgm 펄스 사이에서 수행된다. 시간 t1에서, Vpgm은 제 1 단계 크기(△Vpgm1)만큼 증분되는데, 왜냐하면, 상태 A 및 B에 대한 모든 셀들은 성공적으로 프로그래밍되지 않았기 때문이다. Vpgm은, 각각의 반복 동안 단계(410)에서 더 높은 값의 인가에 대해 메모리 셀들을 상태 A에 프로그래밍하는 것 전체에 대해 연속적으로 △Vpgm1만큼 증가된다. B-레벨 프로그래밍은 t6에서 시작한다. 유의할 것으로, B-레벨 프로그래밍의 시작은, 프로그램 전압이 타겟이 상태 B인 메모리 셀에 먼저 인가되는 시간이 아닌, 제 1 메모리 셀이 상태 B에 도달한 시간을 표시한다. 도 15로부터 명백한 바와 같이, 일부 셀들은 다른 셀들이 상태 A에 도달하기 이전에 상태 B에 도달한다. 상태 A 및 B에 대한 모든(혹은, 최대의 미리 결정된 개수를 제외한 거의 모든) 메모리 셀들이 그들 각각의 타겟 레벨에 도달할 때까지 Vpgm은 △Vpgm1만큼 계속 증분된다. 상태 A에 대한 모든(또는, 거의 모든) 메모리 셀들은 t11에서 Vpgm 펄스의 인가 이후에 그들의 타겟 레벨에 도달한다. 상태 B에 대한 모든(또는, 거의 모든) 메모리 셀들은 t17에서 Vpgm 펄스의 인가 이후에 그들의 타겟 레벨에 도달한다. 따라서, t17과 t18 사이의 기간 동안, 상태 A 및 B에 대한 모든(또는, 거의 모든) 메모리 셀들이 성공적으로 프로그래밍되었다고 결정된다(단계(422)). 그 다음으로, 프로그램 전압 증분 값이 △Vpgm2로 변경되고 그리고 프로그램 전압이 시간 t18에서 Vpgm 펄스의 인가 이전에 이 양만큼 증가된다. 상태 C에 대한 모든(또는, 거의 모든) 셀들이 t23에서 그들의 타겟 레벨에 도달할 때까지 Vpgm은 △Vpgm2만큼 계속 증분된다. 유의할 것으로, 일부 실시예들에서, 상태 A 및 B에 있는 모든(또는, 거의 모든) 셀들이 성공적으로 프로그래밍되었는지 여부를 검출하기 위해 필요한 시간은 두 개의 프로그래밍 펄스 사이에 이용가능한 시간보다 더 길 수 있다. 이러한 경우에, 증가된 단계 크기를 갖는 프로그래밍이 더 이후에 시작할 수 있는 데, 예를 들어 상기 예에서보다 하나의 펄스 이후에 시작할 수 있다.
더 큰 △Vpgm2를 사용함으로써, 상태 A 및 B의 프로그래밍이 완료될 때 프로그래밍 속도는 증가한다. 이것은 더 낮은 상태에 대한 좁은 임계 전압 분포를 유지하면서 전체 프로그래밍 시간을 증가시킬 수 있고 그리고 가장 높은 메모리 상태의 고유 특성으로 인해 디바이스 성능에 역영향을 미치지 않는다.
도 17은 또 다른 실시예에 따른 프로그램 전압 신호를 도시한다. 또한, 도 16은 네 가지 상태 디바이스의 전체 시퀀스 프로그래밍을 가정하지만, 이 원리는 네 가지 이상의 상태뿐만 아니라 복수의 패스 프로그래밍 기술과 같은 다른 프로그래밍 아키텍처를 갖는 디바이스들에 동등하게 응용가능하다. 도 17에서, 제 3 프로그램 전압 단계 크기(△Vpgm3)가, 상태 A 및 B에 대한 모든 셀들이 성공적으로 프로그래밍되었다고 검증된 이후에 제 1 펄스에 대해 사용된다.
일부 비휘발성 저장 소자들은 꾸준히 증가하는 프로그램 전압의 인가 하에서 초기에 느리게 그리고 비선형으로 프로그래밍할 수 있다(플로팅 게이트에 주입되어 느리게 충전된다). 얼마 간의 펄스 인가 이후에, 메모리 셀들은 인가된 프로그램 전압 펄스들이 꾸준히 증가됨에 따라 저장된 전하에서 실질적으로 선형 증가로 정착하는 경향이 있다. 프로그래밍 싸이클의 시작에서 발생하는 것에 더하여, 이 현상은 프로그램 전압 단계 크기의 크기를 스위칭할 때 발생할 수 있다. 더 큰 프로그램 전압 단계 크기로 인한 프로그래밍 속도에서의 증가의 임의의 지연을 최소화하기 위해, △Vpgm2보다 더 큰 하나 또는 그 이상의 증가들이 프로그램 전압을 △Vpgm2만큼 증가시키기 전에 적용될 수 있다. 이러한 방식으로, 단일 펄스의 인가 하에서 디바이스의 플로팅 게이트로 전달되는 전하의 양에서의 즉각적인 증가가 달성될 수 있다. 이러한 기술은 또한 프로그램 전압 단계 크기에서의 변화로 인해 저장된 전하가 실질적으로 증가하지 않는 임의의 시간을 최소화하거나 제거함으로써 프로그래밍 시간을 줄일 수 있다.
도 17에서, 상태 A 및 B에 대한 셀의 프로그래밍이 또한 t17에서의 Vpgm 펄스의 인가 이후에 완료된다. Vpgm이 t18에서 △Vpgm3 만큼 증분된다. Vpgm이 △Vpgm3만큼 증가된 이후에, 상태 C에 대한 모든 셀들이 성공적으로 프로그래밍될 때까지, Vpgm이 남아있는 펄스들에 대해 △Vpgm2만큼 증가된다. 일 실시예에서, 비록 여러 실시예들이 또한 △Vpgm2보다 더 작은 △Vpgm3을 사용할 수 있을지라도 △Vpgm3이 △Vpgm2보다 더 크다. 일 실시예에서, △Vpgm3 = 2·△Vpgm2이다. 비한정적인 예로서, △Vpgm1은 0.2V일 수 있고, △Vpgm2는 0.4V일 수 있고, 그리고 △Vpgm3은 0.8V일 수 있다. △Vpgm3의 값은 요구된 프로그래밍 속도를 달성하기 위해 실시예 및 구현에 따라 달라질 수 있다. △Vpgm2보다 더 큰 △Vpgm3을 사용함으로써, 프로그램 전압 증분 값이 증가할 때 프로그래밍 속도에서의 더 빠른 증가가 달성될 수 있다.
프로그래밍할 때 다른 장점을 제공하기 위해, 프로그램 전압 단계 크기를 변화시키는 것은 거침/섬세 프로그래밍 방법과 결합될 수 있다. 도 18A-18C는 네 가지 상태에 프로그래밍된 메모리 셀들의 무리에 대한 임계 전압 분포를 나타낸다. 도 18A에서 상태 A, B, 및 C는 동일한 Vpgm 단계 크기를 사용하여 프로그래밍된다. 거침/섬세 프로그래밍 기술은 상태 A 및 B를 프로그래밍 할때 사용되지만 상태 C를 프로그래밍할 때는 사용되지 않는다. 상태 A 및 상태 B에서의 셀들에 대한 분포는 거침/섬세 프로그래밍을 사용하기 때문에 상태 C에서의 셀들에 대한 분포보다 더 좁다. 거침/섬세 프로그래밍은 보다 많이 제어되고 정확한 프로그래밍 프로세스로 인해 이러한 상태들에 대한 분포를 효율적으로 감소시킨다. 참조 목적으로, 상태 C 분포 내에 있는 임의의 메모리 셀의 가장 높은 임계 전압은 △VmaxC1으로 표시된다.
도 18B에서, (상태 A 및 상태 B의 프로그래밍이 완료된 이후에) 셀들을 상태 C에 프로그래밍할 때, 더 큰 Vpgm 단계 크기를 사용하는 일 실시예에 따라 다양한 상태들이 프로그래밍된다. 또한, 상태 A 및 상태 B에 대한 셀들이 거침/섬세 프로그래밍을 사용하여 프로그래밍되고, 반면에 상태 C에 대한 셀들은 프로그래밍 되지 않는다. 상태 C를 프로그래밍할 때 더 큰 단계 크기가 사용되기 때문에, 이러한 셀들에 대한 임계 전압 분포는 도 18A의 상태 C 분포를 넘어 증가된다. 도 18B에 대해 상태 C에서의 임의의 메모리 셀의 가장 높은 임계 전압은 VmaxC2로 표시된다. 도시된 바와 같이, 도 18B에서의 상태 C에 대해 가장 높은 임계 전압은 도 18A에서의 상태 C에 대해 가장 높은 임계 전압보다 더 크다. 많은 실시예들에서, 이것은 수용가능하다. 가장 높은 상태에 대해 더 큰 분포는 디바이스 성능에 영향(혹은 큰 영향)을 주지 못하는 데, 왜냐하면 이 상태와 더 높은 상태 간에 어떠한 차이도 필요 없기 때문이다. 그러나, C-상태에 대한 너무 높은 임계 전압은 결과적으로 NAND 스트링에서의 판독 전류를 감소시킨다. 이것은 결과적으로 선택된 메모리 셀을 정확하게 판독할 수 있기에는 너무 낮은 NAND 스트링 전류를 발생시킬 수 있다.
일부 실시예에서, 그러나 상태 C에 대한 임계 전압 분포를 한정하는 것이 바람직할 수 있고, 반면에 또한 프로그래밍 시간을 감소시키기 위해 더 큰 단계 크기를 사용하는 것이 바람직할 수 있다. 따라서, 더 큰 프로그램 전압 단계 크기로 인한 증가된 임계 전압 분포의 일부 혹은 전체를 오프셋(offset)하기 위해 가장 높은 프로그래밍 상태에 대해 증가된 프로그램 전압 단계 크기를 사용하는 거침/섬세 프로그래밍 기술이 사용될 수 있다. 도 18C는 상태 C가 더 큰 프로그램 전압 단계 크기로 프로그래밍되고 거침/섬세 프로그래밍을 사용하여 프로그래밍될 때, 결과로서 발생한 임계 전압 분포를 도시한다. 도시된 바와 같이, 결과적인 분포는 도 18A에서와 실질적으로 유사하고, 여기서 거침/섬세 프로그래밍 혹은 더 큰 단계 크기 그 어느 것도 상태 C에 대해 사용되지 않는다. 도 18C에서 상태 C에 프로그래밍되는 임의의 메모리 셀의 가장 높은 임계 전압은 도 18A에서와 동일하다. 더 큰 단계 크기의 사용으로 인한 상태 C 임계 분포에서의 증가는 거침/섬세 프로그래밍을 사용함으로써 오프셋된다.
다양한 실시예에서, 가장 높은 메모리 상태의 거침/섬세 프로그래밍이 다양한 시간에서 시작될 수 있다. 예를 들어, 일 실시예에서, 가장 높은 상태에 프로그래밍되는 셀들에 대한 거침/섬세 프로그래밍이 프로그래밍 전체에 대해 수행될 수 있다. 다른 실시예에서, 거침/섬세 프로그래밍은 단계 크기가 증가될 때(더 낮은 상태 레벨에 대한 모든(거의 모든) 셀들이 성공적으로 프로그래밍될 때)와 동시에 시작할 수 있다.
도 19는 더 낮은 상태 프로그래밍의 완료시에 거침/섬세 프로그래밍이 시작하는 일 실시예에 따른 흐름도이다. 도 19는 도 15의 검증 단계(412)의 일부로서 수행될 수 있다. 도 19는 개별 메모리 셀을 검증하는 프로세스를 도시한다. 이해할 것으로, 복수의 메모리 셀들이 도 19의 방법에 따라 병렬로 검증될 수 있다. 도 15의 단계(410)에서 프로그램 전압을 인가한 이후에, 메모리 셀의 임계 전압은 제 1 임계 전압 레벨(Vver2)(예를 들어, VvA1)(이것은 거침 프로그래밍으로부터 섬세 프로그래밍으로 변하도록 하는데 사용되는 더 낮은 검증 레벨(거침/섬세 프로그래밍 레벨)이다)에 대비하여 단계(450)에서 검증된다. 만약 메모리 셀의 임계 전압이 검증 레벨(Vver2)보다 더 작다면, 선택된 메모리 셀의 프로그램 상태는 상태(452)에서 실패로 세팅된다. 그러나, 만약 메모리 셀의 임계 전압이 Vver2 위에 있다면, 단계(454)에서 셀의 임계 전압이 타겟 상태에 대해 최종 검증 레벨(Vver1)(예를 들어, VvA) 위에 있는지 여부가 결정된다. 만약 임계 전압이 Vver1 위에 있다면, 선택된 셀의 상태는 단계(460)에서 패스로 세팅된다. 추가적인 프로그램 전압 펄스의 인가 동안 셀의 프로그래밍을 금지시키도록 선택된 셀의 비트라인을 Vinhibit까지 상승시키는 것과 같은 적당한 응답이 취해질 수 있다. 만약 메모리 셀의 임계 전압이 대략 Vver2 위에 있지만 Vver1 위에는 있지 않다면, 셀은 단계(456)에서 그 셀의 비트라인을 Vs까지 상승시킴으로써 섬세 프로그래밍 모드에 놓여진다. 앞서 설명된 바와 같이 Vs는 Vinhibit보다 더 낮고 추가적인 프로그램 펄스(들)의 인가 동안 셀의 채널 양단의 전위를 감소시킴으로써 셀의 프로그래밍을 느리게 한다. 단계(458)에서, 선택된 셀의 상태는 실패로 세팅된다. 이해할 것으로, 도 19의 다양한 단계는 도 15의 단계(412)에서 검증 동안과는 다른 시간에 수행될 수 있다. 예를 들어, 도 15의 단계(410)에서의 프로그램 펄스를 인가하기 바로 전에, 선택된 셀의 비트라인은 Vinhibt 혹은 Vs까지 상승될 수 있다.
일 실시예에서, 지금까지 설명된 수정된 형태의 거침/섬세 프로그래밍 방법이 사용될 수 있다. 수정된 형태에서, 거침/섬세 프로그래밍에 대해 일반적으로 사용되는 것보다 프로그램을 느리게 하기 위해 더 낮은 전압(Vs)이, 거침 프로그래밍으로부터 섬세 프로그래밍으로 변하도록 선택된 메모리 셀이 검증 레벨(Vver2)을 넘어갈 때, 비트라인에 인가될 수 있다. 일 실시예에서, 수정된 형태에서의 전압(Vs)이, 다음 펄스의 인가 이후의 셀의 임계 전압 시프트가 △Vpgm2/2와 동일(혹은 거의 동일)하도록, 선택된다. 이러한 구성을 선택함으로써, 임계 전압이 다음 프로그램 전압 펄스의 인가 이후에 최종 검증 레벨(Vver1)을 통과하는 것이 실질적으로 보장될 수 있다. 이러한 수정된 거침/섬세 프로그래밍 기술에서, 단지 하나의 추가적인 펄스가, 하나의 추가적인 펄스 이후의 메모리 셀의 임계 전압이 최종 검증 레벨(Vver1)보다 더 높은지 또는 낮은지 여부에 상관없이, Vver2에 도달한것으로 검증된 이후에, 선택된 메모리 셀에 인가된다. 이러한 수정된 기술은 선택된 메모리 셀에 인가되는 프로그래밍 펄스들의 수를 더 적게 하는 장점을 갖는다. 이것은 결과적으로 프로그래밍 시간을 더 짧게 하고, 더불어 프로그램 디스터브를 더 적게 발생시키는 데, 특히 가장 높이 프로그래밍된 메모리 상태에 대해 사용되는 경우 그러하다.
가장 높은 상태 레벨에 대한 복수의 프로그램 전압 단계 크기 및/또는 거침/섬세 프로그래밍을 구현한 실시예들은 다른 기술과 함께 결합될 수 있어 이후 프로그램 효율성 및/또는 신뢰도를 향상시킬 수 있다. 도 20-23은 여러 실시예들을 나타내는데, 여기서 데이터의 페이지 혹은 데이터의 다른 단위에 대한 프로그래밍 프로세스는 또한 여러 기술들을 통합하여 더 빠른 프로그래밍 셀들을 검출할 수 있고 그리고 이러한 셀들을 오버프로그래밍하는 것을 피하도록 그리고 반면에 합리적인 프로그래밍 시간을 유지하도록 프로그램 단계 크기를 조정할 수 있다.
앞서 설명된 바와 같이, 메모리 어레이 내의 메모리 셀들의 프로그래밍은 프로그램 전압(Vpgm)을 일련의 펄스들로서 메모리 셀의 제어 게이트에 인가함으로써 달성된다. Vpgm의 크기를 선택하는 것은 타협관계에 있다. 값이 너무 높으면 결과적으로 오버프로그래밍되는 빠른 셀들이 더 많아지고, 반면에 값이 너무 낮으면 결과적으로 프로그래밍 속도가 불합리하게 감소되다. 오버프로그래밍을 일으킬 수 있는 빠른 셀들의 개수는, 메모리 시스템 내의 메모리 셀들의 전체 개수와 비교하여, 상대적으로 작다. 결과적으로, 메모리 셀들의 페이지가 프로그래밍될 때, 이러한 페이지 내에 하나 또는 그 이상의 빠른 메모리 셀들이 존재할 확률은 매우 높지 않다. 이것은 만약 낮은 Vpgm이 오버프로그래밍을 피하기 위해 사용된다면, 요구된 프로그래밍 펄스들의 개수가 Vpgm의 시작 값에 의해 주로 결정되기 때문에, 대부분의 페이지들에서 불필요하게 프로그래밍 속도가 감소되는 것을 의미한다. 실제로, 메모리 시스템에서의 단지 작은 개수의 전체 페이지만이 낮은 Vpgm 값을 필요로 하고, 반면에, 다른 페이지는 성능 저하를 피하기 위해 더 높은 Vpgm으로 프로그래밍될 수 있다. 이러한 딜레마를 해결하기 위해, 다음의 프로세스가 제안된다.
먼저, Vpgm에 대한 낮은 초기 값이 제 1 프로그래밍 펄스에 대해 사용되고, 그래서 어떠한 메모리 셀들(혹은 작은 개수의 메모리 셀들)도 제 1 프로그래밍 펄스(또는 제1의 두 개 혹은 세 개의 펄스들) 동안 오버프로그래밍되지 않는다. 빠른 메모리 셀들을 가지지 않는 페이지들에 대한 프로그래밍 시간에 대한 영향을 감소시키기 위해, 후속 프로그래밍 펄스들의 크기가 더 큰 단계 크기(예를 들어, 일반적으로 .3V의 값 대신에 .6V)로 증가된다. Vpgm의 값은, 하나 또는 그 이상의 셀들(혹은 다른 최소 개수의 셀들)의 제 1 세트가 초기 검증 레벨(Vvstart)에 도달할 때 까지, 더 큰 단계 크기 만큼 빠르게 증가된다. 따라서, 많은 시간이 소비되지 않고 그리고 전체 프로그래밍 펄스의 개수는 다른 시스템과 비슷하거나 또는 심지어 훨씬 더 적을 수 있다.
하나 또는 그 이상의 빠른 메모리 셀들이 프로그래밍 되는 페이지에 존재하는 경우에, 이러한 빠른 메모리 셀들은 제 1 펄스 이후에 검출된다. 그러나, Vpgm에 대해 어떤 값이 사용되는 지에 따라 하나보다 많은 프로그램 펄스가 임의의 빠른 셀들이 검출되기 전에 필요할 수 있다. 일부 페이지에서, 빠른 셀 혹은 셀들은 제 1 펄스 이후에 검출될 수 있다. 다른 페이지에서, 빠른 셀 혹은 셀들이 두 개 또는 그 이상의 펄스들 이후에 검출될 수 있고, 반면에 다른 페이지에서 빠른 셀들이 전혀 검출되지 않을 수 있다. 후속 프로그래밍 펄스들이, 이러한 빠른 메모리 셀들의 오버프로그래밍을 피하기 위해, 더 작은 단계 크기로 증가된다. 빠른 메모리 셀들을 갖는 이러한 페이지는 많은 수의 프로그래밍 펄스들을 필요로 하는데, 왜냐하면 단계 크기가 시작부터 작기 때문이다. 메모리 어레이 내의 페이지들 대부분이 임의의 빠른 셀들을 가지지 않고 따라서 크게 느려지지 않기 때문에, 전체 프로그래밍 속도는 불합리하게 되지 않는다. 필요한 페이지들에 대해서만, 프로그래밍이 더 느리게 되어 오버프로그래밍을 피할 수 있다.
도 20은 데이터의 페이지를 프로그래밍하는 일 실시예를 나타낸 흐름도이고, 여기서 프로그램 단계 크기는 더 빠른 프로그래밍 셀들에 대해 조정된다. 도 20은 또한 앞서 설명된 가장 높은 메모리 상태를 프로그래밍하는 기술을 포함한다.
단계(500)에서, 데이터가 프로그래밍되는 특별한 페이지에 대해 로드된다. 단계(502)에서, 프로그램 전압(Vpgm)은 그 초기 낮은 값으로 세팅되고, 증분 값(△Vpgm)은 제 1 증분 값(△Vpgm1)으로 세팅되고, 그리고 프로그램 카운터(PC)는 제로(0)로 초기화된다. 제 1 프로그램 펄스의 값은 충분히 낮은 크기로 세팅되어, 프로그래밍되는 충분히 작은 개수의 비휘발성 저장 소자들(심지어 빠른 비휘발성 저장 소 자들)만이 오버프로그래밍(예를 들어, 15V) 되거나 혹은 어떠한 것도 오버프로그래밍 되지 않는다. 단계(504)에서, 제 1 프로그램 펄스가 인가된다. 크기가 충분히 낮게 세팅되기 때문에, 충분히 작은 개수의 메모리 셀만이 제 1 프로그래밍 펄스 이후에 오버프로그래밍 되거나 혹은 어떠한 것도 오버프로그래밍 되지 않는다. 앞서 설명된 바와 같이, 일 실시예에서, 데이터의 페이지 내의 메모리 셀들은 공통 워드 라인을 공유하고, 따라서 동일한 프로그래밍 펄스들을 그들 각각의 제어 게이트에서 수신한다. 프로그램 펄스 이후에, 메모리 셀은 단계(506)에서 전압(Vvstart)에 대비하여 검증된다. 전압 값(Vvstart)은 어느 메모리 셀들이 빠른 메모리 셀들인지를 결정하는데 사용된다. 이것은 하나의 프로그래밍 펄스 이후의 Vvstart를 통과한 임의의 셀들이 빠른 메모리 셀들로 고려되도록 디바이스 특성에 의해 선택된다. 만약 프로그래밍되는 특별한 페이지에 대한 메모리 셀들 중 어떠한 것도 Vvstart보다 더 큰 임계 전압을 가지지 않는다면(단계(508)), 단계(510)에서, 프로그램전압은 △Vpgm1 만큼 증분되고 프로그램 카운터(PC)는 1만큼 증분된다. 주의할 것으로, 일부 실시예에서 더 큰 단계 크기를 반영하기 위해 1과는 다른 값으로 프로그램 카운터를 증가시키는 것이 바람직할 수 있다. 예를 들어, 프로그램 카운터는 더 큰 단계 크기가 더 작은 단계 크기보다 두 배 더 큰 경우에 2의 값만큼 증가될 수 있다. 단계(510) 이후에, 프로세서는 단계(504)로 다시 돌아가고, 그리고 다음 프로그램 펄스가 인가된다. 단계(504-508)는 적어도 하나의 메모리 셀이 Vvstart보다 더 큰 임계 전압을 가질 때까지 반복된다.
주의할 것으로, 일 실시예에서 단계(508)는 Vvstart보다 더 큰 임계 전압을 가진 충분한 개수의 메모리 셀들이 존재하는지 여부를 테스트하기 위해 (하나의 메모리 셀이 아닌) 다른 최소 개수를 사용한다. 사용된 이 개수는 실시예에 따라 다르다.
단계(508)에서, 하나 또는 그 이상의 메모리 셀들(또는, 다른 최소 개수의 메모리 셀들)이 Vvstart보다 더 큰 임계 전압을 가지고 있다고 결정될 때, 프로세스는 단계(514)에서 계속되고, 그 시간에 메모리 셀들 모두는 다른 프로그램 상태에 대해 다양한 검증 레벨에 대비하여 검증된다. 일 실시예에서, 단계(504-510)의 반복은 Vvstart보다 더 큰 임계 전압을 갖는 하나 또는 그 이상(또는, 또 다른 최소 개수)의 메모리 셀들을 찾기 위해 단지 Vvstart에 대비하여 메모리 셀들을 검증하는 것을 포함한다. Vvstart보다 더 큰 임계 전압을 갖는 하나 또는 그 이상의 메모리 셀들이 발견된 이후에, 모든 메모리 셀들은 다양한 타겟들(또는 실시예에 따라 적절한 타겟 및 거침/섬세 검증 레벨)에 대비하여 검증된다. 예를 들어, 만약 거침/섬세 프로그래밍이 사용된다면, 각각의 메모리 셀은 다양한 프로그램 상태들 각각에 대한 최종 타겟 검증 레벨 및 거침/섬세 검증 레벨에 대비하여 검증된다(단계(514)).
주의할 것으로 서로 다른 타입의 거침/섬세 프로그래밍이 구현될 수 있고, 예를 들어, 어떤 요구된 상태의 거침 레벨에만 단지 대비하여 먼저 검증하는 것도 가능하고 제 1 셀이 그 상태의 거침 레벨을 통과한 이후에 섬세 레벨에 대비하여 검증을 시작하는 것도 가능하다. 더욱이, 만약 복수의 레벨이 동시에 프로그래밍된다면, 더 높은 레벨에 대한 거침/섬세 프로그래밍은 어떤 개수의 프로그래밍 펄스에 대해 연기될 수 있다. 가능한 또 다른 것은, 더 낮은 상태의 거침 검증을 통해 그 더 낮은 상태 거침 레벨을 통과한 하나 또는 그 이상의 셀들이 검출된 후, 일정 개수의 펄스들 이후에 더 높은 레벨에 대해 거침 검증을 시작하는 것이다. 앞서의 방법을 사용하여, 요구된 검증 동작의 전체 개수는 최소화될 수 있고, 그럼으로써 요구된 전체 프로그래밍 시간을 감소시킬 수 있다. 미국 특허출원 번호10/314,055(발명의 명칭: "Smart Verify For Multi-State Memories," 2002.12.05. 출원)은 앞서 설명된 바와 같은 효율적인 검증을 위한 다양한 기술을 설명한다.
만약 메모리 셀들 모두가 그들의 의도된 타겟 레벨에 도달한 것으로 검증된다면(단계(516)), 프로세스는 완료되고 상태는 패스로 세팅된다(단계(518)). 일부 실시예에서, 프로그래밍 프로세스는, 만약 모든 메모리 셀들보다 작은 메모리 셀들이 그들의 의도된 타겟에 도달하더라도, 성공적으로 완료할 수 있다. 예를 들어, 일부 실시예에서, 만약 거의 모든 메모리 셀들이 그들의 의도된 타겟에 도달한다면(예를 들어, 단지 미리 결정된 개수보다 많지 않은 셀들이 그들의 타겟에 도달하지 못한다면), 프로세스는 성공적인 것이다. 그들의 타겟에 도달하지 못한 메모리 셀들은 에러 정정을 사용하여 판독할 때 고려될 수 있거나 만약 그렇지 않다면, 너무 많은 셀들이 그들의 타겟에 도달하는데 실패한 경우에 메모리 어레이의 다른 어딘가에 데이터가 프로그래밍될 수 있다. 메모리 셀들 모두가 검증되지 않는다면(이것은 단계(514)가 수행되는 때에 발생하기 쉽다), 단계(520)에서 프로그램 카운터가 20(또는, 또 다른 적절한 값)보다 더 적은지 여부가 결정된다. 만약 프로그램 카운터가 20(혹은, 임의의 다른 적당한 값) 이상이라면, 프로세스는 단계(521)로 진행하는데, 단계(521)에서 비성공적으로 프로그래밍된 비트들의 개수가 미리 결정된 개수와 동일한지 혹은 미리 결정된 개수보다 더 적은지가 결정된다. 만약 비성공적으로 프로그래밍된 비트들의 개수가 미리 결정된 개수보다 더 적거나 혹은 미리 결정된 개수와 동일하다면, 프로그래밍 프로세스는 통과된 것으로 플래그되고 패스의 상태가 단계(523)에서 보고된다. 그러나, 만약 비성공적으로 프로그래밍된 비트들의 개수가 미리 결정된 개수보다 더 높다면, 프로그램 프로세스는 실패된 것으로 플래그되고 실패의 상태가 단계(522)에서 보고된다. 성공적으로 프로그래밍 되지 않은 비트들은 판독 프로세스 동안 에러 정정을 사용하여 정정될 수 있다. 만약 프로그램 카운터가 여전히 20(혹은 임의의 적절한 값)보다 작다면, 더 낮은 상태에 대한 모든 셀들(또는, 일부 실시예에서는 미리 결정된 개수의 거의 모든 셀들)이 그들의 타겟 레벨에 도달했는지 여부가 결정된다(단계(524)). 단계(524)는 다른 실시예들에 따라 다양한 결정을 포함할 수 있다. 예를 들어, 만약 네 가지 상태 디바이스들의 전체 시퀀스 프로그래밍이 수행되고 있다면, 단계(524)는 가장 낮은 두 개의 프로그래밍 상태(예를 들어, 상태 A 및 상태 B)에 대한 모든 셀들이 그들의 타겟 레벨에 도달했는지 여부를 결정하는 것을 포함할 수 있다. 만약 네 가지 상태 메모리에 대해 복수의 패스 프로그래밍 프로세스가 수행되고 있고 그럼으로써 더 낮은 페이지(및 결과적으로 상태 A)가 제 1 패스에서 프로그래밍된다면, 단계(512-528)의 반복의 제 1 세트가 제 1 패스에 대해 수행될 수 있고, 반복의 제 2 세트가 제 2 패스에 대해 수행될 수 있다. 이러한 경우에, 단계(524)와 단계(526)는 상태 B에 대한 모든 셀들이 그들의 타겟 레벨에 프로그래밍되었는지 여부를 결정하기 위해 제 2 패스 동안에만 수행될 필요가 있다. 제 1 패스 반복 동안, 모든(또는, 거의 모든) 셀들이 상태 A에 도달할 때까지 또는 실패 결정이 단계(522)에서 만들어질 때까지, Vpgm은 △Vpgm2 만큼 증가된다.
더 낮은 상태들 모두가 프로그래밍되지 않는다면, 단계(528)에서 Vpgm은 △Vpgm2만큼 증분되고 프로그램 카운터(PC)는 1만큼 증분된다. 만약 더 낮은 상태들 모두가 프로그래밍된다면, Vpgm은 단계(526)에서 △Vpgm3만큼 증분되고 프로그램 카운터는 1만큼 증분된다. 주의할 것으로 일부 실시예들에서 더 큰 단계 크기를 반영하기 위해 1과는 다른 값으로 프로그램 카운터를 증가시키는 것이 바람직할 수 있다. 예를 들어, 루프 카운터는 더 큰 단계 크기가 더 작은 단계 크기보다 두 배 더 큰 경우에 2의 값만큼 증가될 수 있다. 프로세스는 단계(526 혹은 528)로부터 단계(512)까지 맴돌고 여기서, 증가된 프로그램 전압 펄스는 선택된 워드 라인에 인가된다. 주의할 것으로 △Vpgm2는 △Vpgm1보다 더 작은 단계 크기이다. 따라서, 프로그램 전압(Vpgm)은, 증분 값(△Vpgm2)이 사용될 때 단계(512-528)의 반복 동안 프로그램 전압(Vpgm)의 더 느린 상승과 비교하여 볼 때, 단계(504-510)의 반복동안 훨씬 더 빠르게 증가한다. △Vpgm3은, 더 높은 상태를 프로그래밍하기 위해 더 큰 단계 크기를 사용하는 앞서 설명된 일 실시예에서와 같이, △Vpgm2보다 더 큰 단계 크기이다. 일 실시예에서, 단계(504-510)의 반복 동안 프로그래밍을 초기 속도로 복귀시키기 위해 △Vpgm3은 △Vpgm1과 동일한 크기일 수 있다. 다른 실시예에서, △Vpgm3은 △Vpgm1보다 더 작거나 혹은 더 크다. 다양한 크기가 △Vpgm1과 관련하여 △Vpgm3에 대해 선택되어 가장 높은 레벨 상태를 프로그래밍 하는 경우 요구된 프로그래밍 속도 증가를 달성할 수 있다. 다른 실시예에서, 도 19에 관하여 설명된 거침/섬세 프로그래밍 기술은 추가적으로 도 20의 방법에 통합될 수 있다.
도 20에 관하여 설명된 기술을 구현하는 방법에 따라 프로그래밍되는 메모리 셀의 행동은 도 21A, 도 21B, 및 도 21C와 관련되어 설명된다. 도 21A는 두 비트 복수-상태 셀에 대한 임계 전압 분포(2, 10, 12, 및 14)를 보여준다. 그러나, 주의할 것으로, 본 명세서에서 설명된 기술은 또한 두 비트의 데이터보다 더 많거나 더 적은 것을 저장하는 메모리 셀들에 적용된다. 도 21A에는 또한 판독 검증 포인트(VrB 및 VrC)가 도시된다. 판독 검증 포인트(VrB)는 임계 전압 분포들(10과 12) 사이를 구별하기 위한 것이다. 판독 검증 포인트(VrC)는 임계 전압 분포들(12와 14) 사이를 구별하기 위한 것이다. 제로(0) 볼트는 임계 전압 분포들(2와 10) 사이를 구별하기 위해 사용될 수 있다. 도 21A는 또한 임계 전압 분포(10)의 가장 낮은 전압으로서 전압 레벨 VvA를 보여주고 그리고 전압 분포(10)의 더 위쪽 전압 리미트로서 VmaxA를 보여준다.
도 21B는 빠른 메모리 셀이 페이지에 존재하지 않는 경우, 소거된 임계 전압 분포(2)와 프로그래밍된 임계 전압 분포(602 및 604)를 보여준다. 이 경우에, 검증 레벨(VvA)은 최종 타겟 검증 레벨을 나타내고 그리고 제로 볼트는 Vvstart로서 사용될 수 있다. 제 1 펄스 이후의 임계 전압 분포(602)가 소거 레벨로부터 어떤 정도까지 시프트업(shift up)한 것이지 알 수 있다. 그러나, 메모리 셀들 중 어느 것도 Vvstart(0V)에 아직 도달하지 못했고, 그래서 증분(△Vpgm1)만큼 증가된 Vpgm을 갖는 제 2 펄스로 프로그래밍은 계속된다. 결과로서, 임계 전압 분포는 △Vpgm1에 가까운 값으로 시프트업한다. 주의할 것으로 이러한 양의 시프트는 변할 수 있고 그리고 초기 Vpgm 펄스의 크기에 따라 크게 달라진다. 제 2 펄스 이후에, 분포(604)에 있는 많은 메모리 셀들이 Vvstart(0 볼트) 이상의 임계 전압에 도달한다. 따라서, Vpgm은 더 작은 단계 크기(△Vpgm2)로 이후 증가된다.
도 21C는 빠른 메모리 셀이 존재할 때 소거된 임계 전압 분포(2)와 프로그래밍된 임계 전압 분포(610)를 보여준다. 제 1 프로그래밍 펄스(예를 들어, 임계 전압 분포(610)) 이후에 많은 셀들은 Vvstart(0 볼트)보다 더 큰 임계 전압을 갖는다. 일부 메모리 셀들은 VvA보다 더 큰 임계 전압을 가질 수 있다. 따라서, 이후의 프로그래밍 펄스에 대한 단계 크기는 오버프로그래밍을 피하도록 △Vpgm2와 동일하다.
도 22와 도 23은 거침/섬세 프로그래밍과 함께 도 20에 관하여 설명된 기술 의 사용을 나타낸 그래프를 포함한다. 도 22A, 22B, 및 22C는 메모리 셀이 섬세 모드로 들어가지 못하도록 거침 및 타겟 검증 레벨 양쪽 모두를 동일한 펄스로 통과하는 임계 전압을 갖는 빠른 메모리 셀의 행동을 도시한다. 도 23A, 23B, 및 23C는 거침 및 섬세 모드 양쪽 모두에 관계하는 더 느린 메모리 셀을 나타내고 있다. 도 22A-22C와 도 23A-23C에서, 메모리 셀을 가장 높은 상태 레벨에 프로그래밍하는 것이 예시되어 있다. 이 예의 목적을 위해 메모리 셀들을 더 낮은 상태에 프로그래밍하는 것이 t7에서 완성된다고 가정한다. 도 22A와 도 23A는 프로그래밍되는 메모리 셀들의 제어 게이트에 인가된 프로그래밍 펄스(Vpgm)를 도시한다. 도 22B와 도 23B는 프로그래밍되는 메모리 셀들에 대한 비트 라인 전압(VBL)을 도시한다. 도 22C와 도 23C는 프로그래밍되는 메모리 셀들에 대한 임계 전압을 나타낸다.
도 22A-22C에 관하여, 빠른 메모리 셀이 도시된다. 시간(t0)에서 시작한 제 1 펄스에 응답하여, 메모리 셀의 임계 전압은 Vvstart 위로 상승된다. 따라서, 메모리 셀을 포함하는 페이지는 더 느리게 프로그래밍된다. 이와 같이, 후속 프로그래밍 펄스의 크기는 △Vpgm2만큼 증가한다. 유의할 것으로, 일 실시예에서, Vvstart는 VvA1보다 0.2V 내지 0.3V 낮을 수 있다. t6과 t7 사이에서, 메모리 셀의 임계 전압은 VvC1과 VvC 양쪽 모두보다 높게 올라간다. t7에서, 비트 라인 전압은 임의의 후속 프로그래밍을 금지시키기 위해 Vinhibit까지 상승된다. 추가적으로, t6에서 프로그램 전압을 인가한 이후에 메모리 셀의 임계 전압은 VvC1 및 VvC 양쪽 모두보다 높이 상승하기 때문에, 셀은 섬세 프로그래밍 모드로 진입하지 않는다. 메모리 셀의 임계 전압이 t7 이전에 VvC 보다 높이 올라가기 때문에 △Vpgm2보다 더 큰 프로그램 전압 단계 크기는 이 시간 이후의 셀의 프로그래밍을 완성시키는데 사용되지 않는다.
도 23A-23C의 더 느린 메모리 셀에 관하여, 메모리 셀의 임계 전압은 t1과 t2 사이의 기간까지 Vvstart보다 더 높게 올라가지 않는다. 따라서, 프로그래밍 펄스는 t2 전에 △Vpgm1 만큼 증분된다. 메모리 셀의 임계 전압이 t2에서 Vvstart보다 더 크기 때문에, 증분 값은 t2에서 △Vpgm2로 변한다. 시간(t7)에서 더 낮은 메모리 상태에 대한 모든 셀들은 그들의 타겟 레벨에 도달한다. 따라서, 증분 값은 △Vpgm3으로 변하고 그리고 후속 펄스의 크기는 △Vpgm3만큼 크기로 증가한다. 메모리 셀에서의 임계 전압은 t7과 t8 사이에서 VvC1보다 더 높이 증가한다. 따라서, 메모리 셀은 섬세 프로그래밍 단계로 진입하고 그리고 비트 라인은 t8에서 Vs까지 상승된다. t8과 t9 사이에서, 임계 전압 증가는 비트 라인 전압에서의 증가로 인해 느려진다. 임계 전압은 t8과 t9 사이에서 VvC보다 더 크게 된다. 임계 전압은 그 타겟 레벨에 도달하기 때문에, 비트 라인 전압은 t9에서 후속 프로그래밍을 금지시키기 위해 Vinhibit까지 상승된다.
주의할 것으로 도 22A와 도 23A는 그래프 판독을 더 쉽게 하기 위해 서로 인접한 프로그래밍 펄스들을 보여준다. 그러나, 펄스들 간에는 실제로 시간 간격이 있어 도 16과 도 17에 도시된 바와 같은 검증 동작들이 가능하다.
본 발명의 앞서의 상세한 설명은 예시와 설명의 목적으로 제공된 것이다. 본 발명을 이러한 개시 형태에 정확히 한정시키려하는 것은 아니며, 이러한 개시 형태가 본 발명의 전부가 아니다. 많은 수정 및 변형이 앞서의 설명에 비추어 가능하다. 설명된 실시예들은 본 발명의 원리 및 그 실질적인 응용을 설명하기 위해 선택된 것으로, 본 발명의 기술분야에서 숙련된 기술을 가지는 자들이, 고려되는 특별한 사용에 적합하도록 다양한 수정을 통해 그리고 다양한 실시예로 본 발명을 최상으로 이용할 수 있게 한다. 본 발명의 범위는 첨부되는 특허청구범위에 의해 정의되도록 의도되었다.

Claims (28)

  1. 비휘발성 저장소를 프로그래밍하는 방법에 있어서,
    비휘발성 저장 소자들의 세트에 프로그램 전압 신호를 인가하는 단계와;
    제 1 타겟 메모리 상태로 비휘발성 저장 소자들의 상기 세트의 제 1 서브세트를 프로그래밍하는 단계와, 여기서 상기 제 1 서브세트를 프로그래밍하는 단계는 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달할 때까지 상기 프로그램 전압 신호를 제 1 증분 값만큼 증가시킴으로써 이루어지고, 여기서 상기 제 1 타겟 메모리 상태는 사전에 결정된 제 1 데이터 값에 대응하고; 그리고
    제 2 타겟 메모리 상태로 비휘발성 저장 소자들의 상기 세트의 제 2 서브세트를 프로그래밍하는 단계를 포함하여 구성되며, 여기서 상기 제 2 타겟 메모리 상태는 사전에 결정된 제 2 데이터 값에 대응하고, 상기 제 2 서브세트를 프로그래밍하는 단계는 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달할 때까지 상기 프로그램 전압 신호를 상기 제 1 증분 값만큼 증가시키는 것과 그리고 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에 상기 프로그램 전압 신호를 제 2 증분 값만큼 증가시키는 것을 포함하고, 상기 제 2 증분 값은 상기 제 1 증분 값보다 더 큰 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  2. 제 1 항에 있어서,
    비휘발성 저장 소자들의 상기 세트는 네 가지 상태들 중 하나에 데이터를 저장하도록된 비휘발성 저장 소자들의 세트이고; 그리고
    상기 제 1 타겟 메모리 상태는 상기 제 2 타겟 메모리 상태의 임계 전압 범위보다 더 작은 임계 전압 범위를 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  3. 제 2 항에 있어서,
    상기 제 2 타겟 메모리 상태는 상기 네 가지 상태들 중 가장 높은 임계 전압 범위를 포함하고; 그리고
    상기 제 1 타겟 메모리 상태는 상기 네 가지 상태들 중 두 번째로 가장 높은 임계 전압 범위를 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  4. 제 1 항에 있어서,
    상기 제 1 서브세트를 프로그래밍하는 단계는,
    상기 프로그램 전압 신호를 상기 제 1 증분 값만큼 증가시키기 전에 상기 제 1 서브세트의 개별 비휘발성 저장 소자들이 상기 제 1 타겟 메모리 상태에 대한 제 1 타겟 레벨에 도달했는지 여부를 검증하는 것과;
    상기 제 1 타겟 레벨에 도달한 상기 제 1 서브세트의 개별 비휘발성 저장 소자들의 프로그래밍을 금지시키는 것과; 그리고
    상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 레벨에 도달할 때까지, 상기 검증하는 것, 상기 프로그램 전압 신호를 상기 제 1 증분 값만큼 증가시키는 것, 그리고 금지시키는 것을 반복하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  5. 제 1 항에 있어서,
    상기 제 2 서브세트를 프로그래밍하는 단계는, 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달하기 전에,
    상기 제 2 서브세트의 개별 비휘발성 저장 소자들이 상기 제 2 타겟 메모리 상태에 대한 제 2 타겟 레벨에 도달했는지 여부를 검증하는 것과;
    상기 제 2 타겟 레벨에 도달한 상기 제 2 서브세트의 개별 비휘발성 저장 소자들의 프로그래밍을 금지시키는 것과; 그리고
    상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 레벨에 도달할 때까지, 상기 검증하는 것, 금지시키는 것, 그리고 상기 프로그램 전압 신호를 상기 제 1 증분 값만큼 증가시키는 것을 반복하는 것을 포함하고;
    여기서 상기 검증하는 것과 금지시키는 것은 상기 프로그램 전압을 상기 제 1 증분 값만큼 증가시키기 전에 수행되는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  6. 제 5 항에 있어서,
    상기 제 2 서브세트를 프로그래밍하는 단계는, 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에,
    상기 프로그램 전압 신호를 상기 제 2 증분 값만큼 증가시키기 전에 상기 검증하는 것을 수행하는 것과;
    상기 금지시키는 것을 수행하는 것과; 그리고
    상기 제 2 서브세트의 각각의 비휘발성 저장 소자가 상기 제 2 타겟 메모리 상태에 도달할 때까지, 상기 프로그램 전압 신호를 상기 제 2 증분 값만큼 증가시키기 전에 검증하는 것과, 금지시키는 것과, 그리고 상기 프로그램 전압 신호를 상기 제 2 증분 값만큼 증가시키는 것을 반복하는 것을 더 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  7. 제 5 항에 있어서,
    상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에, 상기 제 2 서브세트를 프로그래밍하는 단계는:
    상기 제 2 서브세트의 개별 비휘발성 저장 소자들이 상기 제 2 타겟 메모리 상태에 대한 상기 제 2 타겟 레벨에 도달했는지 여부를 결정하고 그리고 상기 제 2 타겟 레벨에 도달하지 않은 상기 제 2 서브세트의 개별 비휘발성 저장 소자들이 상기 제 2 타겟 메모리 상태에 대한 거침/섬세 타겟 레벨(coarse/fine target level)에 도달했는지 여부를 결정함으로써 상기 제 2 서브세트를 검증하는 것과;
    상기 금지시키는 것을 수행하는 것과;
    상기 거침/섬세 타겟 레벨에 도달하지 않은 상기 제 2 서브세트의 개별 저장 소자들을 제 1 비트 라인 전압으로 프로그래밍하는 것과;
    상기 거침/섬세 타겟 레벨에는 도달하였지만 상기 제 2 타겟 레벨에는 도달하지 못한 상기 제 2 서브세트의 개별 저장 소자들을 제 2 비트 라인 전압으로 프로그래밍하는 것과; 그리고
    상기 제 2 서브세트의 각각의 비휘발성 저장 소자가 상기 제 2 타겟 레벨에 도달할 때까지, 상기 결정함으로써 상기 제 2 서브세트를 검증하는 것, 금지시키는 것, 그리고 상기 제 2 서브세트의 개별 저장 소자들을 프로그래밍하는 것을 반복하는 것을 더 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  8. 제 5 항에 있어서,
    상기 제 2 서브세트를 프로그래밍하는 단계는, 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에,
    상기 제 2 서브세트의 개별 비휘발성 저장 소자들이 상기 제 2 타겟 메모리 상태에 대한 상기 제 2 타겟 레벨에 도달했는지 여부를 결정하고 그리고 상기 제 2 타겟 레벨에 도달하지 않은 상기 제 2 서브세트의 개별 비휘발성 저장 소자들이 상기 제 2 타겟 메모리 상태에 대한 거침/섬세 타겟 레벨에 도달했는지 여부를 결정함으로써 상기 제 2 서브세트를 검증하는 것과;
    상기 금지시키는 것을 수행하는 것과;
    상기 거침/섬세 타겟 레벨에 도달하지 않은 상기 제 2 서브세트의 개별 저장 소자들을 제 1 비트 라인 전압으로 프로그래밍하는 것과;
    상기 거침/섬세 타겟 레벨에는 도달하였지만 상기 제 2 타겟 레벨에는 도달하지 않은 상기 제 2 서브세트의 개별 저장 소자들을 제 2 비트 라인 전압으로 프로그래밍하는 것과, 여기서 상기 거침/섬세 타겟 레벨에는 도달하였지만 상기 제 2 타겟 레벨에는 도달하지 않은 상기 제 2 서브세트의 개별 저장 소자들을 제 2 비트 라인 전압으로 프로그래밍하는 것은 이러한 개별 저장 소자들이 상기 제 2 타겟 레벨에 실제로 도달하였는지 여부에 상관없이 상기 프로그램 전압의 단일 펄스를 인가하여 이러한 개별 저장 소자들을 상기 제 2 타겟 레벨에 도달한 것으로 검증하는 것을 포함하고; 그리고
    상기 제 2 서브세트의 각각의 비휘발성 저장 소자가 상기 제 2 타겟 레벨에 도달한 것으로 검증될 때까지, 상기 결정함으로써 상기 제 2 서브세트를 검증하는 것, 금지시키는 것, 그리고 상기 제 2 서브세트의 개별 저장 소자들을 프로그래밍하는 것을 반복하는 것을 더 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  9. 제 1 항에 있어서,
    상기 제 2 서브세트를 프로그래밍하는 단계는, 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에,
    상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에 제 1 펄스에 대해 상기 프로그램 전압 신호를 제 3 증분 값만큼 증가시키고, 그 다음에 상기 프로그램 전압 신호를 상기 제 2 증분 값만큼 증가시키는 것을 더 포함하고, 상기 제 3 증분 값은 상기 제 2 증분 값보다 더 큰 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  10. 삭제
  11. 제 1 항에 있어서,
    상기 프로그램 전압 신호는 비휘발성 저장 소자들의 상기 세트 내의 모든 비휘발성 저장 소자들에 의해 수신되는 공통 제어 게이트 전압 신호인 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  12. 제 11 항에 있어서,
    상기 프로그램 전압 신호는 상기 제 1 증분 값 또는 상기 제 2 증분 값에 따라 크기가 증가하는 펄스들의 세트를 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  13. 제 1 항에 있어서,
    비휘발성 저장 소자들의 상기 세트는 데이터의 페이지에 대응하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  14. 제 1 항에 있어서,
    비휘발성 저장 소자들의 상기 세트는 NAND 플래시 메모리 디바이스들을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  15. 제 1 항에 있어서,
    비휘발성 저장 소자들의 상기 세트는 복수-상태 플래시 메모리 디바이스들을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  16. 제 1 항에 있어서,
    비휘발성 저장 소자들의 상기 세트는 NAND 복수-상태 플래시 메모리 디바이스들을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  17. 제 1 항에 있어서,
    비휘발성 저장 소자들의 상기 제 1 서브세트는 상기 제 1 타겟 메모리 상태에 대한 프로그래밍을 위해 의도된 상기 세트의 비휘발성 저장 소자들의 더 큰 서브세트의 부분이고;
    상기 더 큰 서브세트는 상기 제 1 타겟 메모리 상태에 성공적으로 프로그래밍되지 않은 비휘발성 저장 소자들을 포함하고; 그리고
    상기 제 1 타겟 메모리 상태에 성공적으로 프로그래밍되지 않은 상기 비휘발성 저장 소자들은 판독 동작 동안 에러 정정을 사용하여 처리되는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  18. 제 1 항에 있어서,
    제 3 타겟 메모리 상태로 비휘발성 저장 소자들의 상기 세트의 제 3 서브세트를 프로그래밍하는 단계를 더 포함하여 구성되며, 여기서 상기 제 3 서브세트를 프로그래밍하는 단계는 상기 제 3 서브세트의 각각의 비휘발성 저장 소자가 상기 제 3 타겟 메모리 상태에 도달할 때까지 상기 프로그램 전압 신호를 상기 제 1 증분 값만큼 증가시킴으로써 이루어지고; 그리고
    상기 제 2 서브세트를 프로그래밍하는 단계는 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달하고 그리고 상기 제 3 서브세트의 각각의 비휘발성 저장 소자가 상기 제 3 타겟 메모리 상태에 도달한 이후에 단지 상기 프로그램 전압 신호를 상기 제 2 증분 값만큼 증가시키는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  19. 제 1 항에 있어서,
    상기 제 1 서브세트를 프로그래밍하는 단계는 상기 제 1 서브세트의 부분이 제 1 검증 레벨에 도달할 때까지 상기 프로그램 전압 신호를 제 3 증분 값만큼 증가시키고, 그리고 그 다음에 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달할 때까지 상기 프로그램 전압 신호를 상기 제 1 증분 값만큼 증가시키는 것을 포함하고;
    상기 3 증분 값은 상기 제 1 증분 값보다 더 크고; 그리고
    상기 제 1 검증 레벨은 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태로 프로그래밍되는지 여부를 결정하기 위한 검증 레벨보다 더 낮은 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  20. 비휘발성 저장 시스템에 있어서,
    비휘발성 저장 소자들의 세트와; 그리고
    비휘발성 저장 소자들의 상기 세트와 통신하고 있는 하나 또는 그 이상의 제어 회로들을 포함하여 구성되며,
    상기 하나 또는 그 이상의 제어 회로들은,
    비휘발성 저장 소자들의 상기 세트에 프로그램 전압 신호를 인가하고, 제 1 타겟 메모리 상태로 비휘발성 저장 소자들의 상기 세트의 제 1 서브세트를 프로그래밍하고, 여기서 상기 제 1 서브세트를 프로그래밍하는 것은 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달할 때까지 상기 프로그램 전압 신호를 제 1 증분 값만큼 증가시킴으로써 이루어지고, 상기 제 1 타겟 메모리 상태는 사전에 결정된 제 1 데이터 값에 대응하며, 그리고 제 2 타겟 메모리 상태로 비휘발성 저장 소자들의 상기 세트의 제 2 서브세트를 프로그래밍함으로써 비휘발성 저장 소자들의 상기 세트를 프로그래밍하며,
    여기서, 상기 제 2 타겟 메모리 상태는 사전에 결정된 제 2 데이터 값에 대응하고, 상기 제 2 서브세트를 프로그래밍하는 것은 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달할 때까지 상기 프로그램 전압 신호를 상기 제 1 증분 값만큼 증가시키는 것과 그리고 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에 상기 프로그램 전압 신호를 제 2 증분 값만큼 증가시키는 것을 포함하고, 상기 제 2 증분 값은 상기 제 1 증분 값보다 더 큰 것을 특징으로 하는 비휘발성 저장 시스템.
  21. 제 20 항에 있어서,
    상기 제 2 타겟 메모리 상태는 상기 제 1 타겟 메모리 상태보다 더 큰 임계 전압 범위를 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  22. 제 20 항에 있어서,
    상기 제 2 서브세트를 프로그래밍하는 것은, 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에,
    상기 프로그램 전압 신호를 상기 제 2 증분 값만큼 증가시키기 전에 상기 제 2 서브세트의 개별 비휘발성 저장 소자들이 상기 제 2 타겟 메모리 상태에 대한 제 2 타겟 레벨에 도달했는지 여부를 검증하는 것과;
    상기 제 2 타겟 레벨에 도달한 상기 제 2 서브세트의 개별 비휘발성 저장 소자들의 프로그래밍을 금지시키는 것과; 그리고
    상기 제 2 서브세트의 각각의 비휘발성 저장 소자가 상기 제 2 타겟 레벨에 도달할 때까지, 상기 검증하는 것, 금지시키는 것, 그리고 상기 프로그램 전압 신호를 상기 제 2 증분 값만큼 증가시키는 것을 반복하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  23. 제 20 항에 있어서,
    상기 제 2 서브세트를 프로그래밍하는 것은, 상기 제 1 서브세트의 각각의 비휘발성 저장 소자가 상기 제 1 타겟 메모리 상태에 도달한 이후에,
    상기 제 2 서브세트의 개별 비휘발성 저장 소자들이 상기 제 2 타겟 메모리 상태에 대한 제 2 타겟 레벨에 도달했는지 여부를 결정하고 그리고 상기 제 2 타겟 레벨에 도달하지 않은 상기 제 2 서브세트의 개별 비휘발성 저장 소자들이 상기 제 2 타겟 메모리 상태에 대한 거침/섬세 타겟 레벨에 도달했는지 여부를 결정함으로써 상기 제 2 서브세트를 검증하는 것과;
    상기 제 2 타겟 레벨에 도달한 상기 제 2 서브세트의 개별 비휘발성 저장 소자들의 프로그래밍을 금지시키는 것과;
    상기 거침/섬세 타겟 레벨에 도달하지 않은 상기 제 2 서브세트의 개별 저장 소자들을 제 1 비트 라인 전압으로 프로그래밍하는 것과;
    상기 거침/섬세 타겟 레벨에는 도달하였지만 상기 제 2 타겟 레벨에는 도달하지 못한 상기 제 2 서브세트의 개별 저장 소자들을 제 2 비트 라인 전압으로 프로그래밍하는 것과; 그리고
    상기 제 2 서브세트의 각각의 비휘발성 저장 소자가 상기 제 2 타겟 레벨에 도달할 때까지, 상기 검증하는 것, 금지시키는 것, 그리고 상기 제 2 서브세트의 개별 저장 소자들을 프로그래밍하는 것을 반복하는 것을 더 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  24. 제 20 항에 있어서,
    상기 제 2 타겟 메모리 상태는 상기 제 1 타겟 메모리 상태보다 더 큰 임계 전압 범위를 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  25. 제 20 항에 있어서,
    상기 프로그램 전압 신호는 비휘발성 저장 소자들의 상기 세트 내의 모든 비휘발성 저장 소자들에 의해 수신되는 공통 제어 게이트 전압 신호인 것을 특징으로 하는 비휘발성 저장 시스템.
  26. 제 20 항에 있어서,
    비휘발성 저장 소자들의 상기 세트는 데이터의 페이지에 대응하는 것을 특징으로 하는 비휘발성 저장 시스템.
  27. 제 20 항에 있어서,
    비휘발성 저장 소자들의 상기 세트는 NAND 복수-상태 플래시 메모리 디바이스들을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  28. 제 20 항에 있어서,
    상기 하나 또는 그 이상의 제어 회로들은 명령 회로, 상태 머신, 행 제어 회로, 열 제어 회로, 웰 제어 회로, 소스 제어 회로, 데이터 입력/출력 회로, 및 제어기 중 적어도 하나를 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
KR1020077025688A 2005-04-05 2006-03-31 복수-레벨 셀 플래시 메모리에서 더 높은 레벨 상태들의 더빠른 프로그래밍 KR100916679B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/099,259 2005-04-05
US11/099,259 US7173859B2 (en) 2004-11-16 2005-04-05 Faster programming of higher level states in multi-level cell flash memory

Publications (2)

Publication Number Publication Date
KR20080007568A KR20080007568A (ko) 2008-01-22
KR100916679B1 true KR100916679B1 (ko) 2009-09-08

Family

ID=36950495

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077025688A KR100916679B1 (ko) 2005-04-05 2006-03-31 복수-레벨 셀 플래시 메모리에서 더 높은 레벨 상태들의 더빠른 프로그래밍

Country Status (7)

Country Link
US (1) US7173859B2 (ko)
EP (1) EP1866928B1 (ko)
JP (1) JP2008535145A (ko)
KR (1) KR100916679B1 (ko)
CN (1) CN100589202C (ko)
TW (1) TWI306607B (ko)
WO (1) WO2006107796A2 (ko)

Families Citing this family (159)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020017B2 (en) * 2004-04-06 2006-03-28 Sandisk Corporation Variable programming of non-volatile memory
US7564713B2 (en) * 2005-04-28 2009-07-21 Kabushiki Kaisha Toshiba Semiconductor integrated circuit device wherein during data write a potential transferred to each bit line is changed in accordance with program order of program data
EP1891644B1 (en) * 2005-06-15 2009-02-11 Micron Technology, Inc. Selective slow programming convergence in a flash memory device
US7656710B1 (en) * 2005-07-14 2010-02-02 Sau Ching Wong Adaptive operations for nonvolatile memories
US7751242B2 (en) * 2005-08-30 2010-07-06 Micron Technology, Inc. NAND memory device and programming methods
JP2007102865A (ja) * 2005-09-30 2007-04-19 Toshiba Corp 半導体集積回路装置
US7376034B2 (en) * 2005-12-15 2008-05-20 Stec, Inc. Parallel data storage system
KR100666183B1 (ko) * 2006-02-01 2007-01-09 삼성전자주식회사 3-레벨 불휘발성 반도체 메모리 장치 및 이에 대한구동방법
US8156403B2 (en) * 2006-05-12 2012-04-10 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US8239735B2 (en) * 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
WO2007132452A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
CN103208309B (zh) 2006-05-12 2016-03-09 苹果公司 存储设备中的失真估计和消除
WO2007149678A2 (en) * 2006-06-19 2007-12-27 Sandisk Corporation Programming defferently sized margins and sensing with compensations at select states for improved read operations in non-volatile memory
US7606084B2 (en) * 2006-06-19 2009-10-20 Sandisk Corporation Programming differently sized margins and sensing with compensations at select states for improved read operations in non-volatile memory
US7352628B2 (en) * 2006-06-19 2008-04-01 Sandisk Corporation Systems for programming differently sized margins and sensing with compensations at select states for improved read operations in a non-volatile memory
MX2009001345A (es) 2006-08-05 2009-07-17 Benhov Gmbh Llc Elemento y metodo de almacenamiento de estado solido.
US8060806B2 (en) 2006-08-27 2011-11-15 Anobit Technologies Ltd. Estimation of non-linear distortion in memory devices
US7474561B2 (en) * 2006-10-10 2009-01-06 Sandisk Corporation Variable program voltage increment values in non-volatile memory program operations
US7450426B2 (en) * 2006-10-10 2008-11-11 Sandisk Corporation Systems utilizing variable program voltage increment values in non-volatile memory program operations
WO2008045805A1 (en) * 2006-10-10 2008-04-17 Sandisk Corporation Variable program voltage increment values in non-volatile memory program operations
US7596031B2 (en) * 2006-10-30 2009-09-29 Sandisk Corporation Faster programming of highest multi-level state for non-volatile memory
WO2008053473A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Memory cell readout using successive approximation
EP2067142B1 (en) * 2006-10-30 2015-01-28 SanDisk Technologies Inc. Faster programming of highest multi-level state for non-volatile memory
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
JP2008117471A (ja) * 2006-11-02 2008-05-22 Toshiba Corp 不揮発性半導体記憶装置及び不揮発性メモリシステム
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) * 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US7593263B2 (en) * 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
US7900102B2 (en) * 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US8151166B2 (en) * 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) * 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
US7616495B2 (en) * 2007-02-20 2009-11-10 Sandisk Corporation Non-volatile storage apparatus with variable initial program voltage magnitude
CN102005244B (zh) * 2007-02-20 2015-10-21 桑迪士克科技公司 非易失性存储的可变编程
WO2008111058A2 (en) * 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) * 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US7656709B2 (en) 2007-05-03 2010-02-02 Micron Technology, Inc. NAND step up voltage switching method
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8234545B2 (en) * 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
KR100888847B1 (ko) * 2007-06-28 2009-03-17 삼성전자주식회사 불휘발성 반도체 메모리 장치 및 그것의 프로그램 방법
US7508715B2 (en) * 2007-07-03 2009-03-24 Sandisk Corporation Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
US7599224B2 (en) * 2007-07-03 2009-10-06 Sandisk Corporation Systems for coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US7489543B1 (en) * 2007-07-25 2009-02-10 Micron Technology, Inc. Programming multilevel cell memory arrays
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
KR101397549B1 (ko) * 2007-08-16 2014-05-26 삼성전자주식회사 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법
US8174905B2 (en) * 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7577034B2 (en) * 2007-09-26 2009-08-18 Sandisk Corporation Reducing programming voltage differential nonlinearity in non-volatile storage
US7978520B2 (en) 2007-09-27 2011-07-12 Sandisk Corporation Compensation of non-volatile memory chip non-idealities by program pulse adjustment
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
KR101403429B1 (ko) * 2007-10-09 2014-06-03 삼성전자주식회사 멀티 비트 프로그래밍 장치 및 방법
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8068360B2 (en) * 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8527819B2 (en) * 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
KR101509836B1 (ko) * 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US7688638B2 (en) * 2007-12-07 2010-03-30 Sandisk Corporation Faster programming of multi-level non-volatile storage through reduced verify operations
US8209588B2 (en) * 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) * 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US7916544B2 (en) 2008-01-25 2011-03-29 Micron Technology, Inc. Random telegraph signal noise reduction scheme for semiconductor memories
US8156398B2 (en) * 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) * 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) * 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8059457B2 (en) * 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US7986554B2 (en) * 2008-03-19 2011-07-26 Sandisk Technologies Inc. Different combinations of wordline order and look-ahead read to improve non-volatile memory performance
KR20090120205A (ko) 2008-05-19 2009-11-24 삼성전자주식회사 플래시 메모리 장치 및 그것의 동작 방법
US7800956B2 (en) * 2008-06-27 2010-09-21 Sandisk Corporation Programming algorithm to reduce disturb with minimal extra time penalty
US8498151B1 (en) 2008-08-05 2013-07-30 Apple Inc. Data storage in analog memory cells using modified pass voltages
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8254177B2 (en) * 2008-10-24 2012-08-28 Sandisk Technologies Inc. Programming non-volatile memory with variable initial programming pulse
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) * 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8248831B2 (en) * 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8223551B2 (en) * 2009-02-19 2012-07-17 Micron Technology, Inc. Soft landing for desired program threshold voltage
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) * 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
KR101053755B1 (ko) 2009-06-29 2011-08-02 주식회사 하이닉스반도체 불휘발성 메모리 소자의 프로그램 방법
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8081514B2 (en) * 2009-08-25 2011-12-20 Sandisk Technologies Inc. Partial speed and full speed programming for non-volatile memory using floating bit lines
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
WO2011058934A1 (en) * 2009-11-13 2011-05-19 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and driving method thereof
US8089815B2 (en) * 2009-11-24 2012-01-03 Sandisk Technologies Inc. Programming memory with bit line floating to reduce channel-to-floating gate coupling
US8218381B2 (en) * 2009-11-24 2012-07-10 Sandisk Technologies Inc. Programming memory with sensing-based bit line compensation to reduce channel-to-floating gate coupling
US7986573B2 (en) * 2009-11-24 2011-07-26 Sandisk Technologies Inc. Programming memory with direct bit line driving to reduce channel-to-floating gate coupling
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
KR101138101B1 (ko) * 2010-05-27 2012-04-24 에스케이하이닉스 주식회사 불휘발성 메모리 소자의 프로그램 방법
KR20110131648A (ko) * 2010-05-31 2011-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 메모리 카드 및 그것의 프로그램 방법
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
CN101901632B (zh) * 2010-08-11 2015-12-02 上海华虹宏力半导体制造有限公司 监控位线电压的监控电路及监控方法
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US8780620B2 (en) * 2010-09-20 2014-07-15 The Texas A&M University Information representation and coding for nonvolatile memories
JP5259667B2 (ja) * 2010-09-22 2013-08-07 株式会社東芝 不揮発性半導体記憶装置
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
KR101184830B1 (ko) * 2010-10-27 2012-09-20 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법
US8842469B2 (en) 2010-11-09 2014-09-23 Freescale Semiconductor, Inc. Method for programming a multi-state non-volatile memory (NVM)
KR101798013B1 (ko) 2010-12-30 2017-11-16 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
US8432752B2 (en) 2011-06-27 2013-04-30 Freescale Semiconductor, Inc. Adaptive write procedures for non-volatile memory using verify read
US8509001B2 (en) 2011-06-27 2013-08-13 Freescale Semiconductor, Inc. Adaptive write procedures for non-volatile memory
US8976352B2 (en) * 2011-08-30 2015-03-10 Sony Corporation Microparticle analysis apparatus
US8634239B2 (en) 2011-12-28 2014-01-21 Sandisk Technologies Inc. Hybrid multi-level cell programming sequences
US8797802B2 (en) * 2012-03-15 2014-08-05 Macronix International Co., Ltd. Method and apparatus for shortened erase operation
KR101915719B1 (ko) 2012-04-26 2019-01-08 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 동작 방법
US8886972B2 (en) 2012-06-21 2014-11-11 Transcend Information, Inc. Power control module has voltage setting module that determine burst operating voltage and operate during execution of command in flash drive
TWI460586B (zh) 2012-07-05 2014-11-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體操作方法
US8873316B2 (en) 2012-07-25 2014-10-28 Freescale Semiconductor, Inc. Methods and systems for adjusting NVM cell bias conditions based upon operating temperature to reduce performance degradation
US8902667B2 (en) 2012-07-25 2014-12-02 Freescale Semiconductor, Inc. Methods and systems for adjusting NVM cell bias conditions for program/erase operations to reduce performance degradation
US9142315B2 (en) 2012-07-25 2015-09-22 Freescale Semiconductor, Inc. Methods and systems for adjusting NVM cell bias conditions for read/verify operations to compensate for performance degradation
US9058126B2 (en) * 2012-09-10 2015-06-16 Texas Instruments Incorporated Nonvolatile logic array with retention flip flops to reduce switching power during wakeup
US9082510B2 (en) 2012-09-14 2015-07-14 Freescale Semiconductor, Inc. Non-volatile memory (NVM) with adaptive write operations
US9123401B2 (en) 2012-10-15 2015-09-01 Silicon Storage Technology, Inc. Non-volatile memory array and method of using same for fractional word programming
US20140198576A1 (en) * 2013-01-16 2014-07-17 Macronix International Co, Ltd. Programming technique for reducing program disturb in stacked memory structures
US9129700B2 (en) 2013-01-22 2015-09-08 Freescale Semiconductor, Inc. Systems and methods for adaptive soft programming for non-volatile memory using temperature sensor
US8971128B2 (en) 2013-01-31 2015-03-03 Sandisk Technologies Inc. Adaptive initial program voltage for non-volatile memory
US8942043B2 (en) * 2013-03-04 2015-01-27 Sandisk Technologies Inc. Non-volatile storage with process that reduces read disturb on end wordlines
US9224478B2 (en) 2013-03-06 2015-12-29 Freescale Semiconductor, Inc. Temperature-based adaptive erase or program parallelism
US8908445B2 (en) 2013-03-15 2014-12-09 Freescale Semiconductor, Inc. Non-volatile memory (NVM) with block-size-aware program/erase
JP6179206B2 (ja) * 2013-06-11 2017-08-16 株式会社リコー メモリ制御装置
KR102125376B1 (ko) 2013-07-01 2020-06-23 삼성전자주식회사 저장 장치 및 그것의 쓰기 방법
US8885418B1 (en) 2013-09-24 2014-11-11 SanDisk Technologies, Inc. Adaptive double pulse BCF programming
US9007841B1 (en) 2013-10-24 2015-04-14 Western Digital Technologies, Inc. Programming scheme for improved voltage distribution in solid-state memory
JP6262063B2 (ja) * 2014-03-18 2018-01-17 東芝メモリ株式会社 不揮発性メモリおよび書き込み方法
KR20160108770A (ko) 2015-03-06 2016-09-20 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
KR20170011644A (ko) * 2015-07-23 2017-02-02 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
US9711211B2 (en) 2015-10-29 2017-07-18 Sandisk Technologies Llc Dynamic threshold voltage compaction for non-volatile memory
US9620226B1 (en) * 2015-10-30 2017-04-11 Western Digital Technologies, Inc. Data retention charge loss and read disturb compensation in solid-state data storage systems
CN106920571A (zh) * 2015-12-25 2017-07-04 北京兆易创新科技股份有限公司 一种Nand Flash的编程方法
US9852800B2 (en) * 2016-03-07 2017-12-26 Sandisk Technologies Llc Adaptive determination of program parameter using program of erase rate
US10381094B2 (en) 2016-10-11 2019-08-13 Macronix International Co., Ltd. 3D memory with staged-level multibit programming
US10249382B2 (en) * 2017-08-22 2019-04-02 Sandisk Technologies Llc Determination of fast to program word lines in non-volatile memory
US10839896B2 (en) * 2018-12-21 2020-11-17 Micron Technology, Inc. Programming multiple-level memory cells with multiple-pass
US11316687B2 (en) 2019-03-04 2022-04-26 Cypress Semiconductor Corporation Encrypted gang programming
CN110619916A (zh) * 2019-08-12 2019-12-27 长江存储科技有限责任公司 存储器编程方法、装置、电子设备及可读存储介质
CN111081303B (zh) * 2019-11-25 2021-09-14 长江存储科技有限责任公司 存储器编程方法、装置、电子设备及计算机可读存储介质
US11532354B2 (en) 2020-03-22 2022-12-20 Silicon Storage Technology, Inc. Precision tuning of a page or word of non-volatile memory cells and associated high voltage circuits for an analog neural memory array in an artificial neural network
US20230410898A1 (en) * 2020-10-19 2023-12-21 Rambus Inc. Flash memory device with photon assisted programming
US11361834B1 (en) 2020-12-30 2022-06-14 Sandisk Technologies Llc Systems and methods for dual-pulse programming
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
CN113284541B (zh) * 2021-06-17 2022-05-20 长江存储科技有限责任公司 存储器系统及其编程方法
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US11790994B2 (en) 2021-09-22 2023-10-17 Western Digital Technologies, Inc. Non-volatile memory with reverse state program
WO2023048755A1 (en) * 2021-09-27 2023-03-30 Silicon Storage Technology, Inc. Method of determining defective die containing non-volatile memory cells

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926409A (en) * 1997-09-05 1999-07-20 Information Storage Devices, Inc. Method and apparatus for an adaptive ramp amplitude controller in nonvolatile memory application
EP1426968A2 (en) * 2002-12-05 2004-06-09 STMicroelectronics S.r.l. Method of programming an electrically programmable non-volatile semiconductor memory

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5220531A (en) 1991-01-02 1993-06-15 Information Storage Devices, Inc. Source follower storage cell and improved method and apparatus for iterative write for integrated circuit analog signal recording and playback
KR960002006B1 (ko) 1991-03-12 1996-02-09 가부시끼가이샤 도시바 2개의 기준 레벨을 사용하는 기록 검증 제어기를 갖는 전기적으로 소거 가능하고 프로그램 가능한 불휘발성 메모리 장치
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5712180A (en) 1992-01-14 1998-01-27 Sundisk Corporation EEPROM with split gate source side injection
US5412601A (en) 1992-08-31 1995-05-02 Nippon Steel Corporation Non-volatile semiconductor memory device capable of storing multi-value data in each memory cell
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
JP3476952B2 (ja) 1994-03-15 2003-12-10 株式会社東芝 不揮発性半導体記憶装置
JP3730272B2 (ja) 1994-09-17 2005-12-21 株式会社東芝 不揮発性半導体記憶装置
DE69421925T2 (de) 1994-09-30 2000-03-16 St Microelectronics Srl Speichergerät mit Fehlerdetektion und -korrektur und Verfahren zum Schreiben und Löschen des Speichergeräts
JPH09251782A (ja) 1996-03-14 1997-09-22 Fujitsu Ltd 半導体記憶装置
US5712815A (en) 1996-04-22 1998-01-27 Advanced Micro Devices, Inc. Multiple bits per-cell flash EEPROM capable of concurrently programming and verifying memory cells and reference cells
US6134148A (en) 1997-09-30 2000-10-17 Hitachi, Ltd. Semiconductor integrated circuit and data processing system
US5764568A (en) 1996-10-24 1998-06-09 Micron Quantum Devices, Inc. Method for performing analog over-program and under-program detection for a multistate memory cell
AU4996697A (en) 1996-12-20 1998-07-17 Intel Corporation Nonvolatile writeable memory with fast programming capability
JP3481817B2 (ja) 1997-04-07 2003-12-22 株式会社東芝 半導体記憶装置
EP0877386B1 (en) 1997-05-09 2003-07-30 STMicroelectronics S.r.l. Method and device for analog programming of non-volatile memory cells, in particular flash memory cells
US5969986A (en) 1998-06-23 1999-10-19 Invox Technology High-bandwidth read and write architectures for non-volatile memories
JP3439649B2 (ja) 1998-03-16 2003-08-25 富士通株式会社 パストレースチェック方法および装置
US6151248A (en) 1999-06-30 2000-11-21 Sandisk Corporation Dual floating gate EEPROM cell array with steering gates shared by adjacent cells
DE19939852B4 (de) * 1999-08-23 2006-01-12 Infineon Technologies Ag Stacked Via mit besonders ausgebildetem Landing Pad für integrierte Halbleiterstrukturen
JP2001067884A (ja) 1999-08-31 2001-03-16 Hitachi Ltd 不揮発性半導体記憶装置
US6343033B1 (en) 2000-02-25 2002-01-29 Advanced Micro Devices, Inc. Variable pulse width memory programming
US6301161B1 (en) 2000-04-25 2001-10-09 Winbond Electronics Corporation Programming flash memory analog storage using coarse-and-fine sequence
JP3940544B2 (ja) 2000-04-27 2007-07-04 株式会社東芝 不揮発性半導体メモリのベリファイ方法
JP3922516B2 (ja) 2000-09-28 2007-05-30 株式会社ルネサステクノロジ 不揮発性メモリと不揮発性メモリの書き込み方法
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6496410B1 (en) * 2001-02-08 2002-12-17 Advanced Micro Devices, Inc. Concurrent program reconnaissance with piggyback pulses for multi-level cell flash memory designs
US6424566B1 (en) 2001-02-08 2002-07-23 Advanced Micro Devices, Inc. Program reconnaissance to eliminate variations in vt distributions of multi-level cell flash memory designs
US6738289B2 (en) 2001-02-26 2004-05-18 Sandisk Corporation Non-volatile memory with improved programming and method therefor
US6456533B1 (en) 2001-02-28 2002-09-24 Advanced Micro Devices, Inc. Higher program VT and faster programming rates based on improved erase methods
EP1249842B1 (en) 2001-04-10 2009-08-26 STMicroelectronics S.r.l. Method for programming nonvolatile memory cells with program and verify algorithm using a staircase voltage with varying step amplitude
JP2002319286A (ja) 2001-04-19 2002-10-31 Hitachi Ltd 不揮発性記憶装置および記憶システム
US6532172B2 (en) 2001-05-31 2003-03-11 Sandisk Corporation Steering gate and bit line segmentation in non-volatile memories
US6535428B2 (en) 2001-06-14 2003-03-18 Stmicroelectronics S.R.L. Sensing circuit for memory cells
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6714457B1 (en) * 2001-09-19 2004-03-30 Aplus Flash Technology, Inc. Parallel channel programming scheme for MLC flash memory
US6529412B1 (en) 2002-01-16 2003-03-04 Advanced Micro Devices, Inc. Source side sensing scheme for virtual ground read of flash eprom array with adjacent bit precharge
JP3702229B2 (ja) * 2002-01-16 2005-10-05 株式会社東芝 半導体記憶装置
TWI292914B (ko) 2002-01-17 2008-01-21 Macronix Int Co Ltd
US6747893B2 (en) 2002-03-14 2004-06-08 Intel Corporation Storing data in non-volatile memory devices
US6714448B2 (en) * 2002-07-02 2004-03-30 Atmel Corporation Method of programming a multi-level memory device
JP4181363B2 (ja) * 2002-08-29 2008-11-12 スパンション エルエルシー 不揮発性半導体記憶装置及びデータ書き込み方法
US6657891B1 (en) 2002-11-29 2003-12-02 Kabushiki Kaisha Toshiba Semiconductor memory device for storing multivalued data
US6937520B2 (en) * 2004-01-21 2005-08-30 Tsuyoshi Ono Nonvolatile semiconductor memory device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926409A (en) * 1997-09-05 1999-07-20 Information Storage Devices, Inc. Method and apparatus for an adaptive ramp amplitude controller in nonvolatile memory application
EP1426968A2 (en) * 2002-12-05 2004-06-09 STMicroelectronics S.r.l. Method of programming an electrically programmable non-volatile semiconductor memory

Also Published As

Publication number Publication date
US20060120165A1 (en) 2006-06-08
EP1866928B1 (en) 2013-07-17
CN101176162A (zh) 2008-05-07
TW200643961A (en) 2006-12-16
WO2006107796A2 (en) 2006-10-12
TWI306607B (en) 2009-02-21
KR20080007568A (ko) 2008-01-22
WO2006107796A3 (en) 2006-11-30
JP2008535145A (ja) 2008-08-28
US7173859B2 (en) 2007-02-06
CN100589202C (zh) 2010-02-10
EP1866928A2 (en) 2007-12-19

Similar Documents

Publication Publication Date Title
KR100916679B1 (ko) 복수-레벨 셀 플래시 메모리에서 더 높은 레벨 상태들의 더빠른 프로그래밍
KR100952235B1 (ko) 비휘발성 메모리에서 프로그램 금지 방안들의 선택적인적용
KR100909721B1 (ko) 오버 프로그래밍을 저감하는 고속 프로그래밍 시스템
KR100751579B1 (ko) 비휘발성 메모리 프로그래밍
KR101020812B1 (ko) 비휘발성 메모리에서 개선된 판독 동작을 위해 선택 상태에서 보상을 사용하여 감지 및 다른 크기의 마진 프로그래밍
KR101736414B1 (ko) 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍
TWI389124B (zh) 於非揮發性記憶體中使用不同參考位準以改良感測之粗略/精細程式化確認方法及系統
EP1971984B1 (en) Continued verification in non-volatile memory write operations
EP1946323A1 (en) Method for programming of multi-state non-volatile memory using smart verify
KR101012130B1 (ko) 프로그램 혼란의 영향을 감소시키는 방법
KR101012131B1 (ko) 프로그램 혼란의 영향을 감소시키는 방법
KR101013200B1 (ko) 비휘발성 메모리 프로그램 동작에서의 가변 프로그램 전압 증분값
KR100847587B1 (ko) 비휘발성 메모리의 가변 프로그래밍

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
FPAY Annual fee payment

Payment date: 20120821

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130820

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 10