KR20120039562A - 비휘발성 저장 소자에 대한 프로그래밍 완료의 검출 - Google Patents

비휘발성 저장 소자에 대한 프로그래밍 완료의 검출 Download PDF

Info

Publication number
KR20120039562A
KR20120039562A KR1020117031554A KR20117031554A KR20120039562A KR 20120039562 A KR20120039562 A KR 20120039562A KR 1020117031554 A KR1020117031554 A KR 1020117031554A KR 20117031554 A KR20117031554 A KR 20117031554A KR 20120039562 A KR20120039562 A KR 20120039562A
Authority
KR
South Korea
Prior art keywords
state
storage elements
nonvolatile storage
programming
memory cells
Prior art date
Application number
KR1020117031554A
Other languages
English (en)
Other versions
KR101688603B1 (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 KR20120039562A publication Critical patent/KR20120039562A/ko
Application granted granted Critical
Publication of KR101688603B1 publication Critical patent/KR101688603B1/ko

Links

Images

Classifications

    • 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/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/3454Arrangements for verifying correct programming or for detecting overprogrammed cells

Landscapes

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

Abstract

비휘발성 저장 소자들의 세트는 데이터를 저장하기 위해 프로그래밍 프로세스를 받는다. 프로그래밍 프로세스 동안, 하나 이상의 검증 동작들(Vva, Vvb, Vvc)을 수행하여, 비휘발성 저장 소자들이 적절한 데이터를 저장하기 위해 자신들의 목표 상태에 도달했는지를 결정한다. 모든 비휘발성 저장 소자들이 자신들의 목표 레벨에 도달하거나, 또는 자신들의 목표 레벨에 도달하지 않은 비휘발성 저장 소자들의 수가 판독 동작(또는 다른 동작) 동안 에러 정정 프로세스를 이용하여 정정될 수 있는 메모리 셀들의 수 보다 적을 때, 프로그래밍은 중지될 수 있다. 자신들의 목표 레벨에 도달하지 않은 비휘발성 저장 소자들의 수는, 목표 레벨과 다른(예를 들어, 더 낮은) 상태(VvcL)에 도달하지 않은 비휘발성 저장 소자들의 수를 카운트함으로써 추정될 수 있다.

Description

비휘발성 저장 소자에 대한 프로그래밍 완료의 검출{DETECTING THE COMPLETION OF PROGRAMMING FOR NON-VOLATILE STORAGE}
본 발명은 비휘발성 저장 소자를 위한 기술에 관한 것이다.
반도체 메모리 디바이스들은 다양한 전자 디바이스들에서 보다 대중적으로 이용되어 왔다. 예를 들어, 비휘발성 반도체 메모리는 셀룰러 전화들, 디지털 카메라들, 개인 휴대 단말기들, 이동 계산 디바이스들, 비 이동 계산 디바이스들 및 기타 디바이스들에서 이용된다. 전기적으로 소거가능하고 프로그램가능한 판독 전용 메모리(EEPROM) 및 플래시 메모리가 가장 대중적인 비휘발성 반도체 메모리들이다.
EEPROM 및 플래시 메모리는 모두 플로팅 게이트를 이용하는바, 이러한 플로팅 게이트는 반도체 기판 내의 채널 영역 위에 위치되며 채널 영역으로부터 절연된다. 플로팅 게이트는 소스 영역과 드레인 영역 사이에 위치된다. 제어 게이트가 플로팅 게이트 위에 제공되며, 플로팅 게이트로부터 절연된다. 트랜지스터의 임계 전압은 플로팅 게이트 상에 유지되는 전하의 양에 의해 제어된다. 즉, 소스와 드레인 간의 도통을 가능하게 하기 위해 트랜지스터가 턴온되기 전에 제어 게이트에 인가되어야만 하는 최소량의 전압은 플로팅 게이트 상의 전하의 레벨에 의해 제어된다.
전형적으로, EEPROM 또는 플래시 메모리 디바이스를 프로그램할 때, 프로그램 전압이 제어 게이트에 인가되고, 비트라인은 접지된다. 채널로부터 전자들은 플로팅 게이트로 주입된다. 전자들이 플로팅 게이트에 누적되면, 그 플로팅 게이트는 음으로 대전되고, 메모리 셀의 임계 전압이 올라가게 됨으로써, 메모리 셀은 프로그램 상태로 된다. 이러한 프로그래밍에 대한 보다 많은 정보는, 그 명칭이 "Source Side Self Boosting Technique for Non-Volatile Memory"인 미국 특허 6,859,397호; 및 그 명칭이 "Detecting Over Programmed Memory"인 미국 특허 6,917,542호에서 찾아볼 수 있으며, 이들 모두는 그 전체가 본원의 참조로서 인용된다.
일부 EEPROM 및 플래시 메모리 디바이스들은 2 범위의 전하들을 저장하는 데에 이용되는 플로팅 게이트를 가지며, 이에 따라 메모리 셀은 2개의 상태들, 즉 데이터 "1" 및 데이터 "0"에 해당하는 소거 상태 및 프로그램 상태 사이에서 프로그램/소거될 수 있다. 이러한 디바이스는 이진 또는 2-상태 디바이스로서 불린다.
다중-상태 플래시 메모리 셀은 다수의 별개의 허용된(allowed) 임계 전압 범위들을 식별함으로써 구현된다. 각각의 별개의 임계 전압 범위는 데이터 비트들의 세트에 대한 소정의 값에 해당한다. 메모리 셀 내에 프로그램되는 데이터와 그 셀의 임계 전압 범위들 간의 특정의 관계는 메모리 셀들에 대해 채택되는 데이터 엔코딩 방식에 의존한다. 예를 들어, 미국 특허 6,222,762호 및 미국 특허 공개 2004/0255090호는 다중 상태 플래시 메모리 셀들에 대한 다양한 데이터 엔코딩 방식들을 설명하며, 이러한 2개의 인용 문헌들은 그 전체가 본원의 참조로서 인용된다.
몇몇 실시예들에서, 제어 게이트에 인가되는 프로그램 전압은 각각의 연속적인 펄스에 대해 미리 결정된 스텝 사이즈(예를 들어, 0.2V, 0.3V, 0.4V, 또는 다른 전압들) 만큼 크기가 증가되는 일련의 펄스들을 포함한다. 펄스들 사이에서, 메모리 시스템은 개별적인 메모리 셀들이 자신들의 각각의 목표 임계 전압 범위들에 도달했는 지를 검증할 것이다. 자신들의 목표 임계 전압 범위에 도달한 메모리 셀들은 (예를 들어, 비트라인 전압을 Vdd로 올림으로써) 미래의 프로그래밍으로부터 로크 아웃(lock out)될 것이다. 모든 메모리 셀들이 자신들의 목표 임계 전압 범위에 도달하면, 프로그래밍은 완료된다.
도 1은 NAND 스트링의 평면도이다.
도 2는 도 1의 NAND 스트링의 등가 회로도이다.
도 3은 비휘발성 메모리 시스템의 블록도이다.
도 4는 감지 블록의 일 실시예를 도시하는 블록도이다.
도 5A는 메모리 어레이의 일 실시예를 도시하는 블록도이다.
도 5B는 데이터의 페이지를 도시한다.
도 6은 임계 전압 분포들의 예시적인 세트를 도시하고, 비휘발성 메모리를 프로그래밍하는 프로세스를 설명한다.
도 7은 임계 전압 분포들의 예시적인 세트를 도시하고, 비휘발성 메모리를 프로그래밍하는 프로세스를 설명한다.
도 8A-8C는 다양한 임계 전압 분포들을 나타내고, 비휘발성 메모리를 프로그래밍하는 프로세스를 설명한다.
도 9는 일 실시예에서 비휘발성 메모리를 프로그램하는 순서를 도시하는 테이블이다.
도 10은 임계 전압 분포들의 예시적인 세트를 도시하고, 비휘발성 메모리를 프로그래밍하는 프로세스를 설명한다.
도 11A-I는 다양한 임계 전압 분포들을 도시하고, 비휘발성 메모리를 프로그래밍하는 프로세스를 설명한다.
도 12는 비휘발성 메모리를 동작시키기 위한 프로세스의 일 실시예를 설명하는 흐름도이다.
도 13은 비휘발성 메모리를 프로그래밍하기 위한 프로세스의 일 실시예를 설명하는 흐름도이다.
도 14-17은 비휘발성 메모리의 일 실시예에 대한 제어 게이트 신호를 도시한다.
도 18은 임계 전압 분포들의 예시적인 세트를 도시한다.
도 19는 하나의 예시적인 임계 전압 분포를 도시한다.
도 20-23은 비휘발성 메모리의 일 실시예에 대한 제어 게이트 신호를 도시한다.
도 24는 비휘발성 메모리를 프로그래밍하기 위한 프로세스의 일 실시예를 설명하는 흐름도이다.
도 25는 비휘발성 메모리를 프로그래밍하기 위한 프로세스의 일 실시예를 설명하는 흐름도이다.
도 26A, B 및 C는 거친/정교(coarse/fine) 프로그래밍의 일부로서 수행되는 프로그래밍 프로세스의 일 실시예를 도시한다.
도 27A, B 및 C는 거친/정교 프로그래밍의 일부로서 수행되는 프로그래밍 프로세스의 일 실시예를 도시한다.
비휘발성 저장 시스템에서, 비휘발성 저장 소자들의 세트는 데이터의 세트를 저장하기 위해 프로그래밍 프로세스를 받는다. 모든 비휘발성 저장 소자들이 자신들의 목표 레벨에 도달하거나, 또는 자신들의 목표 레벨에 도달하지 않은 비휘발성 저장 소자들의 수가 판독 동작(또는 다른 동작) 동안 에러 정정 프로세스를 이용하여 정정될 수 있는 메모리 셀들의 수 보다 적을 때, 프로그래밍은 중지된다. 자신들의 목표 레벨에 도달하지 않은 비휘발성 저장 소자들의 수는, 목표 레벨과 다른 상태에 도달하지 않은 비휘발성 저장 소자들의 수를 카운트함으로써 추정될 수 있다.
비휘발성 저장 시스템의 하나의 예는 NAND 구조를 이용하는 플래시 메모리 시스템인데, 이러한 NAND 구조는 2개의 선택 게이트들 사이에 다수의 트랜지스터들을 직렬로 배열하는 것을 포함한다. 직렬의 트랜지스터들 및 선택 게이트들은 NAND 스트링이라 지칭된다. 도 1은 하나의 NAND 스트링을 도시하는 평면도이다. 도 2는 그 등가 회로이다. 도 1 및 2에 도시된 NAND 스트링은 (드레인측) 선택 게이트(120)와 (소스측) 선택 게이트(122) 사이에 직렬로 연결된 4개의 트랜지스터들(100, 102, 104 및 106)을 포함한다. 선택 게이트(120)는 NAND 스트링을 비트라인 컨택(126)을 통해 비트라인에 연결한다. 선택 게이트(122)는 NAND 스트링을 소스 라인(128)에 연결한다. 선택 게이트(120)는 선택 라인(SGD)에 적절한 전압을 인가함으로써 제어된다. 선택 게이트(122)는 선택 라인(SGS)에 적절한 전압을 인가하여 제어된다. 트랜지스터들(100, 102, 104 및 106) 각각은 제어 게이트와 플로팅 게이트를 갖는다. 예를 들어, 트랜지스터(100)는 제어 게이트(100CG)와 플로팅 게이트(100FG)를 갖는다. 트랜지스터(102)는 제어 게이트(102CG)와 플로팅 게이트(102FG)를 갖는다. 트랜지스터(104)는 제어 게이트(104CG)와 플로팅 게이트(104FG)를 포함한다. 트랜지스터(106)는 제어 게이트(106CG)와 플로팅 게이트(106FG)를 포함한다. 제어 게이트(100CG)는 워드라인(WL3)에 연결되고, 제어 게이트(102CG)는 워드라인(WL2)에 연결되고, 제어 게이트(104CG)는 워드라인(WL1)에 연결되며, 그리고 제어 게이트(106CG)는 워드라인(WL0)에 연결된다.
도 1 및 2가 NAND 스트링 내에 4개의 메모리 셀을 도시하였지만, 이러한 4개의 메모리 셀들을 이용한 것은 단지 예로서 제공된 것임을 이해해야 한다. NAND 스트링은 4개 보다 적거나 많은 메모리 셀들을 가질 수 있다. 예를 들어, 일부 NAND 스트링은 8개, 16개, 32개, 64개, 128개 등의 메모리 셀을 포함한다. 여기에서의 설명은 NAND 스트링 내의 임의의 특정수의 메모리 셀들로 한정되지 않는다. 일 실시예는 66개의 메모리 셀들을 갖는 NAND 스트링들을 이용하는데, 여기서 64개의 메모리 셀들을 데이터를 저장하는 데에 이용되고, 2개의 메모리 셀들은 데이터를 저장하지 않기 때문에, 더미 메모리 셀들로서 지칭된다.
NAND 구조를 이용하는 플래시 메모리 시스템에 대한 전형적인 아키텍쳐는 복수개의 NAND 스트링들을 포함할 것이다. 각 NAND 스트링은 선택 라인(SGS)에 의해 제어되는 자신의 소스 선택 게이트에 의해 공통 소스 라인에 연결되고, 선택 라인(SGD)에 의해 제어되는 자신의 드레인 선택 게이트에 의해 자신의 관련 비트라인에 연결된다. 각각의 비트라인 및 비트라인 컨택을 통해 그 비트라인에 연결되는 각각의 NAND 스트링(들)은 메모리 셀들의 어레이의 칼럼들을 포함한다. 비트라인들은 다수의 NAND 스트링들에 의해 공유된다. 전형적으로, 비트라인은 워드라인들에 수직인 방향으로 NAND 스트링들의 상부로 뻗어있으며, 하나 이상의 감지 증폭기들에 연결된다.
NAND 타입 플래시 메모리들 및 이들의 동작에 대한 적절한 예들은 그 전체가 참조로서 본원에 통합되는 다음의 미국 특허들/특허 출원들: 미국 특허 제5,570,315호; 미국 특허 제5,774,397호; 미국 특허 제6,046,935호; 미국 특허 제6,456,528호; 및 미국 특허 공개 US2003/0002348에서 제공된다.
NAND 플래시 메모리 이외에, 다른 타입의 비휘발성 저장 디바이스들도 이용될 수 있다. 예를 들어, 기본적으로 (플로팅 게이트 대신) 질화물층(nitride layer) 내에서의 전하의 트래핑을 이용하는 메모리 셀인 TANOS 구조(실리콘 기판 상의 TaN-Al2O3-SiN-SiO2의 적층된 층으로 이루어짐) 역시 여기에 개시되는 기술과 함께 이용될 수 있다. 플래시 EEPROM 시스템들에서 이용가능한 다른 타입의 메모리 셀은 비휘발적인 방식으로 전하를 저장하는 전도성의 플로팅 게이트 대신에 비전도성의 유전 물질을 이용한다. 이러한 셀은 Chan 등의 논문, "A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device", IEEE Electron Device Letters, Vol. EDL-8, No. 3, 1987년 3월, 93-95페이지에 개시되어 있다. 실리콘 산화물, 실리콘 질화물 및 실리콘 산화물("ONO")로 형성되는 3중의 유전체가 메모리 셀의 채널 윗쪽의 반도체 기판의 표면과 전도성의 제어 게이트 사이에 끼워 넣어진다. 셀은 셀의 채널로부터 질화물 내로 전자들을 주입시킴으로써 프로그램되는 바, 이러한 전자들은 한정된 영역 내에 트랩되어 저장된다. 이후, 이러한 저장된 전하는 검출가능한 방식으로 셀의 채널의 일부의 임계 전압을 변경한다. 셀은 열 정공(hot hole)들을 질화물 내로 주입시킴으로써 소거된다. 또한, Nozaki 등의 "A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application," IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, 1991년 4월, 497-501 페이지를 참조한다. 이는 도핑된 폴리실리콘 게이트가 메모리 셀 채널의 일부 위로 연장되어 개별적인 선택 트랜지스터를 형성하는 스프리트 게이트 구성(split-gate configuration)의 유사한 셀을 설명한다.
다른 예는 Eitan 등의 논문 "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21. no. 11, 2000년 11월, 543-545 페이지에 설명되어 있다. ONO 유전층은 소스 확산부와 드레인 확산부 사이의 채널에 걸쳐서 연장된다. 하나의 데이터 비트에 대한 전하가 드레인에 인접하는 유전층 내에 국부화(localize)되고, 다른 데이터 비트에 대한 전하가 소스에 인접하는 유전층 내에 국부화된다. 미국 특허 5,768,192호 및 6,011,725호는 2개의 실리콘 이산화물 사이에 샌드위치되는 트래핑 유전체를 갖는 비휘발성 메모리 셀을 개시한다. 다중 상태 데이터의 저장은 유전체 내의 공간적으로 분리된 전하 저장 영역들의 이진 상태들을 개별적으로 판독함으로써 구현된다. 다른 타입의 메모리 디바이스들도 이용될 수 있다.
도 3은 메모리 셀들(예를 들어, NAND 멀티 상태 플래시 메모리)의 페이지를 병렬로 판독하고 기록하기 위한 판독/기록 회로들을 구비하는 메모리 디바이스(210)를 도시한다. 메모리 디바이스(210)는 하나 이상의 메모리 다이 또는 칩들(212)을 포함한다. 메모리 다이(212)는 메모리 셀들의 (2차원 또는 3차원의) 어레이(200), 제어 회로(220) 및 판독/기록 회로들(230A 및 230B)을 포함한다. 일 실시예에서, 다양한 주변 회로들에 의한 메모리 어레이(200)로의 액세스는, 그 어레이의 양측 상에서, 대칭적인 방식으로 구현되며, 이에 따라 각 측 상의 액세스 라인들 및 회로의 밀도들은 반으로 감소하게 된다. 판독/기록 회로들(230A 및 230B)은 다수의 감지 블록들(300)을 포함하는 바, 이러한 감지 블록들(300)은 메모리 셀들의 페이지가 병렬로 판독 또는 프로그램될 수 있게 한다. 메모리 어레이(200)는 로우 디코더들(240A 및 240B)을 통해 워드라인들에 의해 어드레스가능하고, 칼럼 디코더들(242A 및 242B)에 의해 비트라인들에 의해 어드레스가능하다. 전형적인 실시예에서, 제어기(244)는 하나 이상의 메모리 다이(212)와 동일한 메모리 디바이스(210)(예를 들어, 제거가능한 저장 카드 또는 패키지) 내에 포함된다. 커맨드들 및 데이터는, 라인들(232)을 통해 호스트와 제어기(244) 사이에, 그리고 라인들(234)을 통해 제어기와 하나 이상의 메모리 다이(212) 사이에 전송된다.
제어 회로(220)는 메모리 어레이(200) 상에서 메모리 동작들을 수행하기 위해 판독/기록 회로들(230A 및 230B)과 협동한다. 제어 회로(220)는 상태 머신(222), 온칩 어드레스 디코더(224) 및 전력 제어 모듈(226)을 포함한다. 상태 머신(222)은 메모리 동작들의 칩 레벨 제어를 제공한다. 온칩 어드레스 디코더(224)는 디코더들(240A, 240B, 242A 및 242B)에 의해 이용되는 하드웨어 어드레스와 호스트 또는 메모리 제어기에 의해 이용되는 것 간의 어드레스 인터페이스를 제공한다. 전력 제어 모듈(226)은 메모리 동작들 동안 워드라인들 및 비트라인들에 공급되는 전력 및 전압들을 제어한다. 일 실시예에서, 전력 제어 모듈(226)은 공급 전압 보다 큰 전압들을 생성할 수 있는 하나 이상의 전하 펌프들을 포함한다. 제어 회로(220), 디코더들(240A/B 및 242A/B), 판독/기록 회로들(230A/B) 및 제어기(244)는 집합적으로 또는 개별적으로 하나 이상의 관리 회로들로서 지칭될 수 있다.
도 4는 코어 부분(감지 모듈(480)로서 지칭됨)과 공통 부분(490)으로 분할되는 개별적인 감지 블록(300)의 블록도이다. 일 실시예에서, 각 비트라인에 대해 개별적인 감지 모듈(480)이 있고, 다수의 감지 모듈들(480)의 세트에 대해 하나의 공통 부분(490)이 있다. 일 예에서, 하나의 감지 블록은 하나의 공통 부분(490) 및 8개의 감지 모듈들(480)을 포함한다. 그룹 내의 감지 모듈들 각각은 데이터 버스(472)를 통해 관련된 공통 부분과 통신한다. 보다 상세한 사항들에 대해서는, 그 전체가 본원의 참조로서 인용되는 미국 공개 특허 2006/0140007을 참조한다.
감지 모듈(480)은 감지 회로(470)를 포함하는 바, 이 감지 회로(470)는 연결된 비트라인 내의 도통 전류가 소정의 임계 레벨 보다 큰지 아니면 작은 지를 결정한다. 일부 실시예들에서, 감지 모듈(480)은 일반적으로 감지 증폭기라 지칭되는 회로를 포함한다. 감지 모듈(480)은 또한 연결된 비트라인 상에 전압 조건을 설정하는 데에 이용되는 비트라인 래치(482)를 포함한다. 예를 들어, 비트라인 래치(482)에 래치되는 소정의 상태에 의해, 연결된 비트라인은 프로그램 금지를 나타내는 상태(예를 들어, Vdd)가 된다.
공통 부분(490)은 프로세서(492), 데이터 래치들의 세트(494), 및 데이터 버스(420)와 데이터 래치들의 세트(494) 사이에 결합되는 I/O 인터페이스(496)를 포함한다. 프로세서(492)는 계산을 수행한다. 예를 들어, 프로세서의 기능들중 하나는 감지된 메모리 셀에 저장된 데이터를 결정하고, 결정된 데이터를 데이터 래치들의 세트에 저장하는 것이다. 데이터 래치들의 세트(494)는 판독 동작 동안 프로세서(492)에 의해 결정되는 데이터 비트들을 저장하는 데에 이용된다. 이는 또한, 프로그램 동작 동안 데이터 버스(420)로부터 들어오는(imported) 데이터 비트들을 저장하는 데에 이용된다. 이러한 들어오는 데이터 비트들은 메모리 내에 프로그램되는 것으로 의도되는 기록 데이터를 나타낸다. I/O 인터페이스(496)는 데이터 래치들(494)과 데이터 버스(420) 간의 인터페이스를 제공한다.
판독 또는 감지 동안, 시스템의 동작은 상태 머신(222)에 의해 제어되는 바, 이러한 상태 머신은 어드레스되는 셀로의 서로 다른 제어 게이트 전압들의 공급을 제어한다. 메모리에 의해 지원되는 다양한 메모리 상태들에 해당하는 미리 정의되는 다양한 제어 게이트 전압들(판독 기준 전압들 또는 검증 기준 전압들)을 통해 스텝(step)형으로 진행할 때에, 감지 모듈(480)은 이러한 전압들중 하나의 전압으로 이동(trip)되며, 감지 모듈(480)로부터 버스(472)를 통해 프로세서(492)에 출력이 제공될 것이다. 이때, 프로세서(492)는 입력 라인들(493)을 통해 상태 머신으로부터 인가되는 제어 게이트에 대한 정보 및 감지 모듈의 트리핑 이벤트(들)를 고려하여, 결과적인 메모리 상태를 결정한다. 그런 다음, 그 메모리 상태에 대한 이진 엔코딩을 계산하고, 결과적인 데이터 비트들을 데이터 래치들(494)에 저장한다. 코어 부분의 다른 실시예에서, 비트라인 래치(482)는 이중의 임무를 한다. 즉, 감지 모듈(480)의 출력을 래치하는 래치로서, 그리고 상기 설명한 바와 같은 비트라인 래치로서의 임무를 한다.
어떠한 구현들은 다수의 프로세서들(492)을 포함할 것임이 예상된다. 일 실시예에서, 각 프로세서(492)는 출력 라인(도 4에는 미도시)을 포함할 것이며, 이에 따라 출력 라인들 각각은 서로 와이어드 오아(wired-OR)된다. 어떠한 실시예들에서, 출력 라인들은 와이어드-OR 라인에 연결되기 전에 반전(invert)된다. 이러한 구성은 프로그래밍 검증 프로세스 동안, 프로그래밍 프로세스가 완료된 때를 빠르게 결정할 수 있게 하는데, 이는 와이어드-OR 라인을 수신하는 상태 머신이 프로그램되고 있는 모든 비트들이 원하는 레벨에 도달되는 때를 결정할 수 있기 때문이다. 예를 들어, 각 비트가 자신의 원하는 레벨에 도달하면, 그 비트에 대한 논리 0이 와이어드-OR 라인에 전송될 것이다(또는 데이터 1이 반전된다). 모든 비트들이 데이터 0을 출력하면(또는 데이터 1이 반전되면), 상태 머신은 프로그래밍 프로세스를 종료해야 함을 알게 된다. 각 프로세서가 8개의 감지 모듈들과 통신하는 실시예들에서, 상태 머신은 (일부 실시예들에서) 와이어드-OR 라인을 8번 판독할 필요가 있거나, 또는 관련된 비트라인들의 결과를 누적하기 위해 프로세서(492)에 논리가 부가됨으로써, 상태 머신은 와이어드-OR 라인을 단지 한번만 판독하면 된다. 많은 감지 모듈들을 갖는 어떠한 실시예들에서, 이러한 많은 감지 모듈들의 와이어드-OR 라인들은 N개의 감지 모듈들의 세트 내에 그룹화될 수 있으며, 그룹들은 이진 트리(binary tree)를 형성하도록 그룹화될 수 있다.
프로그램 또는 검증 동안, 프로그램되어야 하는 데이터는 데이터 버스(420)로부터 데이터 래치들의 세트(494)에 저장된다. 상태 머신의 제어하에 있는 프로그램 동작은, 동시에 프로그램되는 메모리 셀들에 대하여, 어드레스되는 메모리 셀들의 제어 게이트들에 동시에 인가되는 (증가되는 크기를 갖는) 일련의 프로그래밍 전압 펄스들을 포함한다. 각 프로그래밍 펄스 다음에는, 검증 프로세스가 이어지는 바, 이러한 검증 프로세스는 메모리 셀이 원하는 상태로 프로그램되었는 지를 결정한다. 프로세서(492)는 원하는 메모리 상태에 대하여 검증된 메모리 상태를 모니터한다. 이러한 2개의 상태가 일치하면, 프로세서(492)는 비트라인이 프로그램 금지를 나타내는 상태가 될 수 있도록 비트라인 래치(482)를 설정한다. 이에 의해, 그 비트라인에 결합 메모리 셀은, 자신의 제어 게이트 상에 프로그래밍 펄스들이 가해진다고 할지라도, 더 이상 프로그램되는 것이 금지된다. 다른 실시예들에서, 프로세서는 처음에 비트라인 래치(482)를 로드(load)하고, 감지 회로는 검증 프로세스 동안 이를 금지 값으로 설정한다.
데이터 래치 스택(494)은 감지 모듈에 해당하는 데이터 래치들의 스택을 포함한다. 일 실시예에서는, 감지 모듈(480) 마다 3개(또는 4개 또는 다른 수)의 데이터 래치들이 있다. 일부 구현들에서(하지만, 반드시 요구되는 것은 아니다), 데이터 래치들은 시프트 레지스터로서 구현되며, 이에 따라 그 내에 저장된 병렬 데이터는 데이터 버스(420)에 대해 직렬로 변환되며, 그 반대의 경우 역시 마찬가지이다. 바람직한 일 실시예에서, m개의 메모리 셀들의 판독/기록 블록에 해당하는 모든 데이터 래치들은 함께 링크되어 블록 시프트 레지스터를 형성하며, 이에 따라 데이터의 블록은 직렬 전송에 의해 입력 또는 출력될 수 있다. 특히, 기록/판독 모듈들의 뱅크(bank)는, 자신의 데이터 래치들의 세트 각각이 (이들이 전체 판독/기록 블록에 대한 시프트 레지스터의 일부인 것 처럼) 데이터 버스로/로부터 데이터를 직렬로 시프트시키도록 적합하게 된다.
비휘발성 저장 디바이스들의 다양한 실시예들의 구조 그리고/또는 동작들에 대한 부가적인 정보는 다음의 미국 공개 특허들 및 특허 출원들에서 찾아볼 수 있다. (1) 2004년 3월 25일 공개되었으며 그 명칭이 "Non-Volatile Memory And Method With Reduced Source Line Bias Errors"인 미국 공개 특허 2004/0057287; (2) 2004년 6월 10일 공개되었으며 그 명칭이 "Non-Volatile Memory And Method with Improved Sensing"인 미국 공개 특허 2004/0109357; (3) 미국 공개 특허 2005/0169082; (4) 2005년 4월 5일 발명자 Jian Chen에 의해 출원되었으며 그 명칭이 "Compensating for Coupling During Read Operations of Non-Volatile Memory"인 미국 공개 특허 2006/0221692; 및 (5) 2005년 12월 28일 발명자들 Siu Lung Chan 및 Raul-Adrian Cernea에 의해 출원되었으며 그 명칭이 "Reference Sense Amplifier For Non-Volatile Memory"인 미국 공개 특허 2006/0158947. 이러한 5개의 모든 특허 문서들은 그 전체가 본원의 참조로서 인용된다.
도 5A는 메모리 셀 어레이(200)의 예시적인 구조를 도시한다. 일 실시예에서, 메모리 셀들의 어레이는 메모리 셀들의 많은 수의 블록들로 분할된다. 플래시 EEPROM 시스템들에 대해 일반적인 것으로서, 블록은 소거의 단위이다. 즉, 각 블록은 함께 소거되는 최소수의 메모리 셀들을 포함한다.
하나의 예로서, 도 5A는 1,024개의 블록들로 분할되는 NAND 플래시 EEPROM을 도시한다. 하지만, 1024개 보다 많거나 적은 블록들도 이용될 수 있다. 본 예에서, 각 블록에는, 비트라인들(BL0, BL1, ... BL69,623)에 해당하는 69,624개의 칼럼들이 있다. 일 실시예에서, 블록의 모든 비트라인들은 판독 및 프로그램 동작들 동안 동시에 선택될 수 있다. 공통 워드라인을 따라 있으며 임의의 비트라인에 연결되는 메모리 셀들은 동시에 프로그램(또는 판독)될 수 있다. 다른 실시예들에서, 비트라인들은 짝수 비트라인들 및 홀수 비트라인들로 분할된다. 짝수/홀수 비트라인 아키텍쳐에 있어서, 공통 워드라인을 따라 있으며 홀수 비트라인에 연결된 메모리 셀들은 하나의 시간에 프로그램되는 반면, 공통 워드라인을 따라 있으며 짝수 비트라인들에 연결된 메모리 셀들은 다른 시간에 프로그램된다.
도 5A는 NAND 스트링을 형성하기 위해 직렬 연결된 4개의 메모리 셀들을 도시한다. 비록 각 NAND 스트링 내에 4개의 셀들이 포함되는 것으로 나타나있지만, 4개 보다 많거나 적은 메모리 셀들이 이용될 수 있다(예를 들어, 16, 32, 64, 128 또는 다른 수의 메모리 셀들이 NAND 스트링 상에 있을 수 있다). NAND 스트링의 하나의 단자는 (선택 게이트 드레인 라인(SGD)에 연결된) 드레인 선택 게이트를 통해 해당하는 비트라인에 연결되고, 다른 단자는 (선택 게이트 소스 라인(SGS)에 연결된) 소스 선택 게이트를 통해 소스 라인에 연결된다.
전형적으로, 각 블록은 다수의 페이지들로 분할된다. 페이지는 프로그래밍의 단위이다. 전형적으로, 데이터의 하나 이상의 페이지들은 메모리 셀들의 하나의 로우에 저장된다. 페이지는 하나 이상의 섹터들을 저장할 수 있다. 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 전형적으로, 오버헤드 데이터는 섹터의 사용자 데이터로부터 계산되는 에러 정정 코드(ECC)를 포함한다. 제어기는, 데이터가 어레이 내에 프로그램되고 있을 때에는 ECC를 계산하고, 데이터가 어레이로부터 판독되고 있을 때에는 그것을 체크한다. 어떠한 실시예들에서는, 상태 머신 또는 다른 컴포넌트가 ECC를 계산하고 체크할 수 있다. 몇면 대안들에서, ECC들 그리고/또는 다른 오버헤드 데이터는 이들이 속하는 사용자 데이터의 것과 다른 페이지들에, 또는 심지어 다른 블록들에 저장된다. 전형적으로, 사용자 데이터의 섹터는 512 바이트인데, 이는 자기 디스크 드라이브들에서의 섹터의 사이즈에 대응한다. 예를 들어, 8 페이지들로부터 32, 64, 128 또는 그 이상의 페이지들까지의 많은 수의 페이지들이 블록을 형성한다. 도 5B는 페이지에 대한 데이터를 도시한다. 페이지의 사이즈에 따라, 그 페이지는 많은 섹터들을 포함한다. 각 섹터는 사용자 데이터, 에러 정정 코드들(ECC) 및 헤더 정보를 포함한다.
다중 상태 메모리 셀들을 이용하는 어떠한 메모리 시스템들에서, 메모리 셀 내의 각 데이터 비트는 다른 페이지 내에 있다. 예를 들어, 메모리 셀들의 어레이가 메모리 셀 마다 3개의 데이터 비트들(8개의 상태들 또는 데이터 레벨들)을 저장하는 경우, 각 메모리 셀은 3개의 페이지들에 데이터를 저장하는 바, 3개의 비트들 각각은 서로 다른 페이지 상에 있다. 따라서, 이러한 예에서, 블록 내에서, 각 워드라인은 3개의 페이지들 또는 3개의 페이지들의 정수배와 관련된다. 다른 배열들도 가능하다.
데이터 통신 시스템들 뿐 아니라, 대량(mass) 데이터 저장 디바이스들 및 저장 시스템들에서의 에러 정정 코딩(ECC)의 이용이 잘 알려져있다. 이러한 기술 분야에서의 기초로서, 에러 정정 코딩은 엔코드되는 "페이로드" (또는 최초 데이터) 데이터 비트들로부터 결정 또는 계산되는 부가적인 비트들(일반적으로, 패리티 비트들, 코드 비트들, 체크섬 디지트들(checksum digits), ECC 비트들 등이라 불림)의 저장 또는 통신을 필요로 한다. 예를 들어, 메모리 자원 내에 에러 정정 코드화된 데이터를 저장하기 위해서는, 선택된 코드를 이용하여, 실제 데이터 및 부가적인 코드 비트들을 포함하는 하나 이상의 코드 워드들을 엔코딩할 필요가 있다. 저장된 데이터를 검색(retrieval)하기 위해서는, 저장된 코드 워드들을 엔코드하는 데에 이용되는 것과 동일한 코드에 따라, 저장된 코드 워드들을 디코딩할 필요가 있다. 코드 비트들은 코드 워드들의 실제 데이터 부분을 "과도하게 지정(over-specify)"하기 때문에, 디코딩 이후 명백한 어떠한 실제 데이터의 손실도 없이, 어느 정도 수의 에러 비트들이 허용될 수 있다.
많은 ECC 코딩 방식들이 당업계에 널리 알려져있다. 이러한 통상의 에러 정정 코드들은, 이러한 코딩 방식들이 제공할 수 있는 제조 수율 및 디바이스 신뢰성에 대한 상당한 영향 때문에, 플래시 (및 다른 비휘발성) 메모리들을 포함하는 큰 규모의 메모리들에서 특히 유용하며, 이에 따라 수개의 프로그램불가능한 또는 결함있는 셀들을 갖는 디바이스들을 이용가능하게 한다. 물론, 수율을 지키는 것(yield saving)과 코드 비트들(즉, 코드 "레이트")을 저장하기 위한 부가적인 메모리 셀들을 제공하는 비용 간에는 협상(tradeoff)이 존재한다. 플래시 메모리 디바이스들에 대한 일부 ECC 코드들은 (1/2과 같은 낮은 코드 레이트를 가질 수 있는) 데이터 통신 응용들에서 이용되는 코드들 보다 더 높은 코드 레이트(즉, 데이터 비트들에 대한 코드 비트들의 더 낮은 비율)를 갖는 경향이 있다.
일부 메모리 셀들은 다른 메모리 셀들 보다 더 늦게 프로그램 또는 소거되는데, 그 이유는 이러한 셀들 간의 제조 편차 때문이고, 이러한 셀들이 다른 셀들 보다 더 낮은 임계 전압으로 이전에 소거되었기 때문이며, 그리고 페이지 내의 셀들 간의 균일하지 않은 마모(wear) 등 때문이다. 그리고, 물론, 일부 셀들은 무엇이든지 간에 프로그램 또는 소거될 수 없는데, 그 이유는 결함 또는 다른 이유 때문이다. 상기 언급한 바와 같이, 에러 정정 코딩은 쓸 수 있는 메모리를 여전히 유지하면서, 어느 정도 수의 느린 또는 실패한(failed) 셀들을 허용할 수 있는 능력을 제공한다. 어떠한 응용들에서, 데이터의 페이지는, 그 페이지 상의 모든 메모리 셀들이 요구되는 프로그램된 상태에 대해 검증될 때 까지, 프로그래밍 펄스들을 반복적으로 인가함으로써 프로그램된다. 이러한 응용들에서, 프로그램된 페이지를 성공적으로 검증하기 전에 최대수의 프로그래밍 펄스에 도달하면, 프로그래밍이 종료되며, 그런 다음 요구되는 상태에 대해 아직 검증되지 않은 셀들의 수가 임계 값과 비교되는데, 이러한 임계 값은 그 페이지로부터 데이터를 판독하는 데에 이용되게 될 에러 정정 코딩의 성능에 의존한다. 에러 정정이 충분히 견고한(robust) 다른 응용들에서, 프로그래밍 및 소거 시간은, 아직 충분히 프로그램 또는 소거되지 않은 느린 (또는 에러있는) 셀들의 수가 정정가능한 비트들의 수 보다 적을 때 프로그래밍 또는 소거 펄스들의 시퀀스를 종료함으로써 절감된다.
전형적으로, 에러 정정은 섹터 단위로 수행된다. 따라서, 각 섹터는 그 자신의 ECC 코드들의 세트를 가질 것이다. 이러한 에러 정정은 편리하고 유용한데, 그 이유는, 일 실시예에서, 섹터가 호스트 시스템으로/으로부터 데이터를 전송하는 데에 요구되는 단위이기 때문이다.
(검증에 의한) 성공적인 프로그래밍 프로세스의 끝에서, 메모리 셀들의 임계 전압들은, 프로그램되는 메모리 셀들에 대한 임계 전압들의 하나 이상의 분포들 내에 있거나, 또는 소거되는 메모리 셀들에 대한 임계 전압들의 분포 내에 적절하게 있어야 한다. 도 6은 각 메모리 셀이 2비트의 데이터를 저장할 때의 메모리 셀 어레이에 대한 예시적인 임계 전압 분포들을 도시한다. 하지만, 다른 실시예들은 메모리 셀 마다 2비트 이상 또는 미만의 데이터(이를 테면, 메모리 셀 마다 3비트의 데이터)를 이용할 수 있다. 도 6은 소거되는 메모리 셀들에 대한 제 1 임계 전압 분포(E)를 나타낸다. 프로그램되는 메모리 셀들에 대한 3개의 임계 전압 분포들(A, B 및 C)이 또한 나타나있다. 일 실시예에서, E 분포 내의 임계 전압들은 음(negative)이고, A, B 및 C 분포들 내의 임계 전압들은 양(positive)이다. 알 수 있는 바와 같이, A 임계 전압 분포는 A, B 및 C 중에서 가장 낮다. C 임계 전압 분포는 A, B 및 C 중에서 가장 높다.
도 6의 각각의 개별적인 임계 전압 범위는 데이터 비트들의 세트에 대해 미리 결정된 값들에 해당한다. 메모리 셀에 프로그램되는 데이터와 셀의 임계 전압 레벨 간의 특정의 관계는 셀들에 대해 채택되는 데이터 엔코딩 방식에 의존한다. 예를 들어, 그 명칭이 "Tracking Cells For A Memory System"인 미국 공개 특허 2004/0255090 및 미국 특허 6,222,762는 다중 상태 플래시 메모리 셀들에 대한 다양한 데이터 엔코딩 방식들을 개시하는바, 이러한 참조 문헌은 그 전체가 본원의 참조로서 인용된다. 일 실시예에서는, 그레이 코드 할당을 이용하여, 데이터 값들이 임계 전압 범위들에 할당되는 바, 이에 따라 플로팅 게이트의 임계 전압이 오류로 인해 자신의 이웃하는 임계 전압 분포로 시프트되더라도, 단지 하나의 비트만이 영향을 받을 것이다. 하나의 예는 임계 전압 범위 E(상태 E)에 "11"을 할당하고, 임계 전압 범위 A(상태 A)에 "10"을 할당하고, 임계 전압 범위 B(상태 B)에 "00"을 할당하며, 그리고 임계 전압 범위 C(상태 C)에 "01"을 할당한다. 하지만, 다른 실시예들에서는, 그레이 코드가 이용되지 않는다. 비록 도 6이 4개의 상태를 나타내었지만, 본 발명은 4개 이상 또는 미만의 상태를 포함하는 것들을 포함하는 다른 다중 상태 구조들에 대해서도 이용될 수 있다.
도 6은 또한 메모리 셀들로부터 데이터를 판독하기 위한 3개의 판독 기준 전압들(Vra, Vrb 또는 Vrc)을 나타낸다. 소정의 메모리 셀의 임계 전압이 Vra, Vrb 또는 Vrc 이상인지 아니면 미만인지를 테스트함으로써, 시스템은 메모리 셀이 무슨 상태에 있는 지를 결정할 수 있게 된다. 즉, Vra, Vrb 또는 Vrc에 응답하여 메모리 셀이 턴온되는 지를 알게 됨으로써, 프로세서는 그 메모리 셀이 어느 상태에 있는 지를 알 수 있게 된다. 예를 들어, 메모리 셀을 판독할 때, 메모리 셀이 Vrc에 응답해서는 턴온되지만, Vrb에 응답해서는 턴온되지 않는 다면, 메모리 셀은 상태 B에 있게 된다.
도 6은 또한 3개의 검증 기준 전압들(Vva, Vvb 및 Vvc)을 나타낸다. 메모리 셀들을 상태 A로 프로그램할 때, 시스템은 이러한 메모리 셀들이 Vva 보다 크거나 같은 임계 전압을 갖는 지를 테스트한다. 메모리 셀들을 상태 B로 프로그램할 때, 시스템은 이러한 메모리 셀들이 Vvb 보다 크거나 같은 임계 전압을 갖는 지를 테스트한다. 메모리 셀들을 상태 C로 프로그램할 때, 시스템은 이러한 메모리 셀들이 Vvc 보다 크거나 같은 임계 전압을 갖는 지를 테스트한다.
일반적으로, 검증 동작들 및 판독 동작들 동안, 선택된 워드라인은 어떠한 전압에 연결되는 바, 이 전압의 레벨은 관련된 메모리 셀의 임계 전압이 이러한 레벨에 도달했는 지를 결정하기 위해, 각각의 판독 동작(예를 들어, 도 6의 판독 비교 레벨들 Vra, Vrb 및 Vrc를 참조한다) 및 검증 동작(예를 들어, 도 6의 검증 레벨들 Vva, Vvb 및 Vvc를 참조한다)에 대해 특정된다. 워드라인 전압을 인가한 후, 메모리 셀의 도통 전류를 측정하여, 메모리 셀이 워드라인에 인가된 전압에 응답하여 턴온되었는 지를 결정한다. 만일 도통 전류가 어떠한 값 보다 큰 것으로 측정되면, 그 메모리 셀은 턴온되었고, 워드라인에 인가되는 전압은 그 메모리 셀의 임계 전압 보다 큰 것으로 여겨진다. 만일 도통 전류가 어떠한 값 보다 큰 것으로 측정되지 않으면, 그 메모리 셀은 턴온되지 않았고, 워드라인에 인가되는 전압은 그 메모리 셀의 임계 전압 보다 크지 않은 것으로 여겨진다.
판독 또는 검증 동작 동안 메모리 셀의 도통 전류를 측정하는 많은 방법들이 있다. 일 예에서, 메모리 셀의 도통 전류는 그 메모리 셀이 감지 증폭기 내의 전용 캐패시터를 방전 또는 충전시키는 속도(rate)에 의해 측정된다. 다른 예에서, 선택된 메모리 셀의 도통 전류는 그 메모리 셀을 포함하는 NAND 스트링이 해당하는 비트라인을 방전시키는 것을 가능하게 한다(또는 가능하게 하는 데에 실패한다). 어느 정도의 시간 기간 이후 비트라인 상의 전압을 측정하여, 그 비트라인이 방전되었는 지의 여부를 결정한다. 주목할 사항으로서, 여기에서 설명되는 기술은 검증/판독을 위해 종래에 알려져있는 다른 방법들과 이용될 수 있다. 검증/판독에 대한 보다 많은 정보는 그 전체가 본원의 참조로서 통합되는 다음의 미국 공개 특허들 및 특허 출원들: 미국 공개 특허 2004/0057287; (2) 미국 공개 특허 2004/0109357; (3) 미국 공개 특허 2005/0169082; 및 (4) 미국 공개 특허 2006/0221692 에서 찾아볼 수 있다. 상기 설명한 판독 및 검증 동작들은 종래에 알려진 기술에 따라 수행된다. 따라서, 설명되는 많은 상세사항들은 당업자에 의해 달라질 수 있다. 당업계에 알려진 다른 판독 및 검증 기술들도 이용될 수 있다.
풀 시퀀스 프로그래밍(full sequence programming)으로서 알려져있는 일 실시예에서, 메모리 셀들은 소거 상태(E)로부터 프로그램 상태들(A, B 또는 C)중 임의의 상태로 바로 프로그램될 수 있다. 예를 들어, 프로그램되어야 하는 메모리 셀들의 집단(population)이 먼저 소거됨으로써, 그 집단 내의 메모리 셀들은 소거 상태(E)가 된다. 제 1 세트의 메모리 셀들이 상태(E)로부터 상태(A)로 프로그램되는 동안, 제 2 세트의 메모리 셀들은 상태(E)로부터 상태(B)로 프로그램되고, 제 3 세트의 메모리 셀들은 상태(E)로부터 상태(C)로 프로그램된다. 풀 시퀀스 프로그래밍은 도 6의 구부려진 화살표들에 의해 그래픽적으로 도시된다.
도 7은 2개의 다른 페이지들, 즉 하위 페이지 및 상위 페이지에 대해 데이터를 저장하는 다중 상태 메모리 셀을 프로그래밍하는 2-패스 기술의 일례를 도시한다. 상태 E(11), 상태 A(10), 상태 B(00) 및 상태 C(01)의 4개의 상태(임계 전압 분포들)가 도시된다. 상태 E에 대해, 양 페이지들은 "1"을 저장한다. 상태 A에 대해, 하위 페이지는 "0"을 저장하고, 상위 페이지는 "1"을 저장한다. 상태 B에 대해, 양 페이지들은 "0"을 저장한다. 상태 C에 대해, 하위 페이지는 "1"을 저장하고, 상위 페이지는 "0"을 저장한다. 비록 특정의 비트 패턴들이 각 상태들에 할당되었지만, 다른 비트 패턴들이 또한 할당될 수 있다는 것을 주목해야 한다.
제 1 프로그래밍 패스에서, 메모리 셀의 임계 전압 레벨은 하위 논리 페이지 내에 프로그램될 비트에 따라 설정된다. 만일 그 비트가 논리 "1"이라면, 임계 전압은 변하지 않는데, 그 이유는 이전에 소거된 결과로서 적절한 상태에 있기 때문이다. 하지만, 만일 프로그램될 비트가 논리 "0"이라면, 셀의 임계 레벨은 화살표(530)로 나타낸 바와 같이 상태 A로 증가한다.
제 2 프로그래밍 패스에 있어서, 메모리 셀의 임계 전압 레벨은, 상위 논리 페이지 내에 프로그램되고 있는 비트에 따라 설정된다. 만일 상위 논리 페이지 비트가 논리 "1"을 저장하는 경우에는, 어떠한 프로그래밍도 발생하지 않는데, 그 이유는 셀은 하위 페이지 비트의 프로그래밍에 따라, 상태 E 또는 상태 A중 하나에 있기 때문이며, 이들 모두는 "1"의 상위 페이지 비트를 유지(carry)한다. 만일 상위 페이지 비트가 논리 "0"이 될 예정이라면, 임계 전압은 시프트된다. 만일 제 1 패스로 인해 메모리 셀이 소거 상태 E로 남아있다면, 제 2 페이즈(phase)에서, 메모리 셀이 프로그램됨으로써, 화살표(534)로 나타낸 바와 같이 임계 전압이 증가하여 상태 C 내에 있게 된다. 만일 메모리 셀이 제 1 프로그래밍 패스의 결과로서 상태 A로 프로그램되면, 메모리 셀은 제 2 패스에서 한층 더 프로그램되어, 화살표(532)로 나타낸 바와 같이, 임계 전압이 증가하여 상태 B 내에 있게 된다. 제 2 패스의 결과, 하위 페이지에 대한 데이터를 변경하지 않으면서, 상위 페이지에 대해 논리 "0"을 저장하도록 지정된 상태로 셀을 프로그램한다.
일 실시예에서, 충분한 데이터가 기록되어 워드라인을 채운다면, 시스템은 풀 시퀀스 기록을 행하도록 셋업될 수 있다. 만일 충분한 데이터가 기록되지 않으면, 프로그래밍 프로세스는 수신된 데이터로 하위 페이지를 프로그램할 수 있다. 후속 데이터가 수신되면, 시스템은 상위 페이지를 프로그램할 것이다. 또 다른 실시예에서, 시스템은 하위 페이지를 프로그램하는 모드에서 기록을 시작하고, 충분한 데이터가 후속하여 수신되어 전체(또는 대부분의) 워드라인의 메모리 셀들을 채우는 경우, 풀 시퀀스 프로그래밍 모드로 변환한다. 이러한 실시예에 대한 보다 상세한 사항들은, 발명자들 Sergy Anatolievich Gorobets 및 Yan Li에 의해 2004년 12월 14일 출원되었으며 그 명칭이 "Pipelined Programming of Non-Volatile Memories Using Early Data"인 미국 공개 특허 2006/0126390, 미국 특허 출원 11/013,125에 개시되어 있으며, 그 전체 내용은 본원의 참조로서 인용된다.
도 8A-8C는 플로팅 게이트들 간의 결합 효과(floating gate to floating gate coupling effect)를 감소시키는 비휘발성 메모리를 프로그램하는 다른 프로세스를 개시한다. 도 8A-C에 의해 교시되는 프로세스의 하나의 예시적인 구현에서, 비휘발성 메모리 셀들은 4개의 데이터 상태를 이용하여 메모리 셀 마다 2개의 데이터 비트를 저장한다. 예를 들어, 상태 E는 소거 상태이고, 상태 A, B 및 C는 프로그램 상태라고 가정한다. 상태 E는 데이터 11을 저장한다. 상태 A는 데이터 01을 저장한다. 상태 B는 데이터 10을 저장한다. 상태 C는 데이터 00을 저장한다. 이것은 비-그레이 코딩의 예인데, 그 이유는 양 비트들은 인접하는 상태들 A와 B 사이에서 변하기 때문이다. 또한, 물리 데이터에 대한 다른 데이터 엔코딩도 이용될 수 있다. 각 메모리 셀은 2개의 페이지에 2개의 데이터를 저장한다. 참조를 위해, 이러한 데이터 페이지는 상위 페이지 및 하위 페이지라 부를 수 있지만, 이것들에는 다른 라벨들이 붙여질 수 있다. 도 8A-C의 프로세스에 대한 상태 A와 관련하여, 상위 페이지는 비트 0을 저장하고, 하위 페이지는 비트 1을 저장한다. 상태 B와 관련하여, 상위 페이지는 비트 1을 저장하고, 하위 페이지는 비트 0을 저장한다. 상태 C와 관련하여, 양 페이지들은 비트 데이터 0을 저장한다.
도 8A-C의 프로그래밍 프로세스는 2-단계 프로세스이다. 제 1 단계에서는, 하위 페이지가 프로그램된다. 만일 하위 페이지가 데이터 1로 남는 경우, 메모리 셀의 상태는 상태 E로 유지된다. 만일 데이터가 0으로 프로그램되어야 한다면, 메모리 셀의 임계 전압이 올라감으로써, 그 메모리 셀은 상태 B'로 프로그램된다. 따라서, 도 8A는 상태 E로부터 상태 B'로의 메모리 셀들의 프로그래밍을 나타낸다. 도 8A에 나타낸 상태 B'는 중간 상태 B를 나타내며, 이에 따라 검증 포인트는 Vvb 보다 낮은 Vvb'로서 도시된다.
일 실시예에서, (워드라인 WLn 상의) 메모리 셀이 상태 E로부터 상태 B'로 프로그램된 후, NAND 스트링 상의 (워드라인 WLn+1 상의) 그의 인접하는 메모리 셀은 그 하위 페이지와 관련하여 프로그램될 것이다. 예를 들어, WL0에 연결된 메모리 셀에 대한 하위 페이지가 프로그램된 후, 동일한 NAND 스트링 상에 있지만 WL1에 연결된 메모리 셀(이웃 메모리 셀)에 대한 하위 페이지가 프로그램될 수 있다. 이웃 메모리 셀을 프로그램한 후, 플로팅 게이트들 간의 결합 효과는 프로그램되어야 하는 초기(earlier) 메모리 셀의 외관상 임계 전압을 올리는데, 이는 상기 이전의 메모리 셀이 상태 E로부터 상태 B'로 올라간 임계 전압을 갖는 경우에 그러하다. 이는, 도 8B에서 임계 전압 분포(550)로 나타낸 바와 같이 상태 B'에 대한 임계 전압 분포를 확장(widening)시키는 효과를 갖는다. 이와같은 임계 전압 분포의 외관상 확장은 상위 페이지를 프로그램할 때에 교정(remedy)될 것이다.
도 8C는 상위 페이지를 프로그램하는 프로세스를 도시한다. 만일 메모리 셀이 소거 상태 E이고, 상위 페이지가 1로 유지된다면, 그 메모리 셀은 상태 E로 유지된다. 만일 메모리 셀이 상태 E이고, 그 상위 페이지 데이터가 0으로 프로그램될 것이라면, 메모리 셀의 임계 전압이 올라감으로써, 그 메모리 셀은 상태 A가 된다. 만일 메모리 셀이 중간 임계 전압 분포(550) 내에 있었고, 상위 페이지 데이터가 1로 유지될 것이라면, 그 메모리 셀은 최종 상태 B로 프로그램될 것이다. 만일 메모리 셀이 중간 임계 전압 분포(550) 내에 있고, 상위 페이지 데이터가 데이터 0으로 될 것이라면, 메모리 셀의 임계 전압이 올라감으로써, 그 메모리 셀은 상태 C가 된다. 도 8A-C에 도시된 프로세스는 플로팅 게이트들 간의 결합 효과를 감소시키는데, 그 이유는 이웃하는 메모리 셀들의 상위 페이지 프로그래밍 만이 소정의 메모리 셀의 외관상 임계 전압에 대해 영향을 미치기 때문이다.
비록 도 8A-C가 4개의 데이터 상태들 및 2개의 데이터 페이지들에 대한 예를 제공하지만, 도 8A-C에 의해 교시되는 개념은 4개 보다 많거나 적은 상태들, 2개 이외의 페이지들 그리고/또는 다른 데이터 엔코딩들을 갖는 다른 구현들에도 적용될 수 있다.
도 9는 도 8A-C의 프로그래밍 방법을 이용하여 메모리 셀들을 프로그래밍하는 순서의 일 실시예를 설명하는 테이블이다. 워드라인(WL0)에 연결된 메모리 셀들에 대해, 하위 페이지는 페이지 0을 형성하고, 상위 페이지는 페이지 2를 형성한다. 워드라인(WL1)에 연결된 메모리 셀들에 대해, 하위 페이지는 페이지 1을 형성하고, 상위 페이지는 페이지 4를 형성한다. 워드라인(WL2)에 연결된 메모리 셀들에 대해, 하위 페이지는 페이지 3을 형성하고, 상위 페이지는 페이지 6을 형성한다. 워드라인(WL3)에 연결된 메모리 셀들에 대해, 하위 페이지는 페이지 5를 형성하고, 상위 페이지는 페이지 7을 형성한다. 메모리 셀들은 페이지 0부터 페이지 7까지의 페이지 번호에 따라 프로그램된다. 다른 실시예들에서는, 다른 순서의 프로그래밍이 이용될 수 있다.
도 10은 각 메모리 셀이 다중 상태 데이터의 3 비트를 저장할 때, 메모리 셀 어레이에 대한 예시적인 임계 전압 분포들(데이터 상태들이라고도 함)을 도시한다. 하지만, 다른 실시예들은 메모리 셀 마다 3비트 보다 많거나 적은 데이터(예를 들어, 메모리 셀 마다 4 비트 이상의 데이터)를 이용할 수 있다.
도 10의 예에서, 각 메모리 셀은 3 비트의 데이터를 저장하며, 이에 따라 8개의 유효한 데이터 상태들(S0-S7)이 있다. 일 실시예에서, 데이터 상태(S0)는 0V 미만이며, 데이터 상태들(S1-S7)은 0V 보다 높다. 다른 실시예들에서, 8개의 모든 데이터 상태들은 0V 보다 높거나, 또는 다른 구성들이 구현될 수 있다. 일 실시예에서, 임계 전압 분포(S0)는 분포들(S1-S7) 보다 더 넓다.
일 실시예에서, S0은 소거되는 메모리 셀들에 대한 것이다. 데이터는 S0으로부터 S1-S7로 프로그램된다. 도 10으로부터 알 수 있는 바와 같이, S1-S7 중에서, S1은 크기에 있어서 가장 낮으며, S7은 크기에 있어서 가장 높다(예를 들어, 맨 끝이다).
각 데이터 상태는 메모리 셀에 저장되는 3개의 데이터 비트들에 대한 고유한 값이다. 일 실시예에서, S0=111, S1=110, S2=101, S3=100, S4=011, S5=010, S6=001 및 S7=000 이다. 또한, S0-S7 상태들에 대한 다른 데이터 맵핑도 이용될 수 있다. 일 실시예에서, 메모리 셀에 저장되는 모든 데이터 비트들은 동일한 논리 페이지에 저장된다. 다른 실시예들에서, 메모리 셀에 저장되는 각 데이터 비트는 다른 논리 페이지에 해당한다. 따라서, 3개의 데이터 비트를 저장하는 메모리 셀은 제 1 페이지 내의 데이터, 제 2 페이지 내의 데이터 및 제 3 페이지 내의 데이터를 포함할 것이다. 몇몇 실시예들에서, 동일한 워드라인에 연결되는 모든 메모리 셀들은 동일한 3개의 데이터 페이지들 내에 데이터를 저장할 것이다. 몇몇 실시예들에서, 하나의 워드라인에 연결되는 메모리 셀들은, (예를 들어, 홀수 및 짝수 비트라인들에 의해, 또는 다른 배열들에 의해), 다른 세트들의 페이지들로 그룹화될 수 있다.
종래의 몇몇 디바이스들에서, 메모리 셀들은 상태(S0)로 소거될 것이다. 상태(S0)로부터, 메모리 셀들은 상태들(S1-S7)중 임의의 상태로 프로그램될 수 있다. 풀 시퀀스 프로그래밍으로서 알려져있는 일 실시예에서, 메모리 셀들은 소거 상태(S0)로부터 프로그램 상태들(S1-S7)중 임의의 상태로 바로 프로그램될 수 있다. 예를 들어, 프로그램되어야 하는 메모리 셀들의 집단이 먼저 소거됨으로써, 그 집단 내의 메모리 셀들은 소거 상태(S0)가 된다. 일부 메모리 셀들이 상태(S0)로부터 상태(S1)로 프로그램되는 동안, 나머지 메모리 셀들은 상태(S0)로부터 상태(S2)로, 상태(S0)로부터 상태(S3)로, 상태(S0)로부터 상태(S4)로, 상태(S0)로부터 상태(S5)로, 상태(S0)로부터 상태(S6)로, 그리고 상태(S0)로부터 상태(S7)로 프로그램된다. 풀 시퀀스 프로그래밍은 도 10의 7개의 구부러진 화살표들에 의해 그래픽적으로 도시된다.
도 10은 목표 검증 레벨들(Vv1, Vv2, Vv3, Vv4, Vv5, Vv 및 Vv7)의 세트를 나타낸다. 이러한 목표 검증 레벨들은 프로그래밍 프로세스 동안 비교 레벨들로서 이용된다. 예를 들어, 메모리 셀들을 상태 1로 프로그램할 때, 시스템은 그 메모리 셀들의 임계 전압들이 Vv1에 도달했는 지를 체크하여 확인할 것이다. 만일 메모리 셀의 임계 전압이 Vv1에 도달하지 않았다면, 그 임계 전압이 Vv1 보다 크거나 또는 같아질 때 까지, 그 메모리 셀에 대해 프로그래밍을 계속할 것이다. 만일 메모리 셀의 임계 전압이 Vv1에 도달했다면, 그 메모리 셀에 대한 프로그래밍은 중지될 것이다. 목표 검증 레벨(Vv2)은 상태 2로 프로그램되고 있는 메모리 셀들에 대해 이용된다. 목표 검증 레벨(Vv3)은 상태 3으로 프로그램되고 있는 메모리 셀들에 대해 이용된다. 목표 검증 레벨(Vv4)은 상태 4로 프로그램되고 있는 메모리 셀들에 대해 이용된다. 목표 검증 레벨(Vv5)은 상태 5로 프로그램되고 있는 메모리 셀들에 대해 이용된다. 목표 검증 레벨(Vv6)은 상태 6으로 프로그램되고 있는 메모리 셀들에 대해 이용된다. 목표 검증 레벨(Vv7)은 상태 7로 프로그램되고 있는 메모리 셀들에 대해 이용된다.
도 10은 또한 판독 비교 레벨들의 세트(Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 및 Vr7)를 나타낸다. 이러한 판독 비교 레벨들은 판독 프로세스 동안 비교 레벨들로서 이용된다. 메모리 셀들의 제어 게이트들에 개별적으로 인가되는 판독 비교 레벨들(Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 및 Vr7)에 응답하여, 메모리 셀들이 턴온되는지, 아니면 턴오프된 상태를 유지하는 지를 테스트함으로써, 시스템은 그 메모리 셀들이 어떤 상태들에 대한 데이터를 저장하고 있는 지를 결정할 수 있다.
도 11A-11I는 다중 상태 데이터를 프로그래밍하기 위한 다른 프로세스를 도시한다. 제 1 단계 이전에, 메모리 셀들이 소거됨으로써, 상태(S0)의 소거 임계 분포 내에 있게 될 것이다. 도 11A-11I의 프로세스는 각 메모리 셀이 3개의 데이터 비트를 저장하는 것으로 추정하며, 소정의 메모리 셀에 대한 각 비트는 다른 페이지 내에 있다. 제 1 데이터 비트(가장 왼쪽)는 제 1 페이지와 관련된다. 중간 비트는 제 2 페이지와 관련된다. 가장 오른쪽 비트는 제 3 페이지와 관련된다. 일 실시예에서, 데이터에 대한 데이터 상태들의 상관 관계는 다음과 같다: S0=111, S1=110, S2=101, S3=100, S4=011, S5=010, S6=001 및 S7=000. 하지만, 다른 실시예들은 다른 데이터 엔코딩 기법들을 이용할 수 있다.
(도 11A에 도시된 바와 같이) 제 1 페이지를 프로그램할 때, 비트가 데이터 "1"이 될 것이라면, 메모리 셀은 상태(S0)(임계 전압 분포 602) 내에 머무를 것이다. 비트가 데이터 "0"이 될 것이라면, 메모리 셀은 상태(S4)(임계 전압 분포 604)로 프로그램된다. 인접하는 메모리 셀들이 프로그램된 후, 인접하는 플로팅 게이트들 간의 용량성 결합에 의해, 도 11B에 도시된 바와 같이, 상태(S4)가 넓어지게 된다. 상태(S0) 역시 넓어질 수 있지만, S0과 S1 사이에는 그 효과를 무시할 수 있을 정도의 충분한 마진(margin)이 있다. 용량성 결합에 대한 보다 많은 정보는 미국 특허 5,867,429호 및 6,657,891호에서 찾아볼 수 있으며, 이들은 그 전체가 본원의 참조로서 통합된다.
제 2 페이지를 프로그램할 때(도 11C 참조), 메모리 셀이 상태(S0)에 있고, 제 2 페이지 비트가 데이터 "1"이면, 메모리 셀은 상태(S0)에 머무른다. 몇몇 실시예들에서, 제 2 페이지에 대한 프로그래밍 프로세스는 임계 전압 분포(602)를 새로운 S0으로 좁힌다. 만일 메모리 셀이 상태(S0)에 있었고, 제 2 페이지에 기록될 데이터가 "0"이면, 메모리 셀은 상태(S2)(임계 전압 분포 606)로 이동한다. 상태(S2)는 C*의 검증 포인트를 갖는다. 만일 메모리 셀이 상태(S4)에 있었고, 메모리 셀에 기록될 데이터가 "1"이면, 메모리 셀은 상태(S4)로 유지된다. 하지만, 도 11C에 도시된 바와 같이, 상태(S4)에 대해 메모리 셀들을 임계 전압 분포(604)로부터 임계 전압 분포(608)로 이동시킴으로써, 상태(S4)가 좁혀진다. 임계 전압 분포(608)는 (임계 전압 분포(604)의 E**와 비교하여) E*의 검증 포인트를 갖는다. 만일 메모리 셀이 상태(S4)에 있고, 제 2 페이지에 기록될 데이터가 "0"이면, 메모리 셀의 임계 전압은 상태(S6)(임계 전압 분포 610)로 이동되며, G*의 검증 포인트를 갖는다.
인접하는 메모리 셀들이 프로그램된 후, 도 11D의 임계 전압 분포들(602, 604, 606 및 610)에 의해 도시된 바와 같이, 플로팅 게이트들 간의 결합 효과로 인해 상태들(S0, S2, S4 및 S6)이 넓어지게 된다.
도 11E, 11F, 11G 및 11H는 제 3 페이지의 프로그래밍을 도시한다. 하나의 그래프가 이용될 수도 있지만, 프로그래밍 프로세스는 가시성의 이유로 4개의 그래프들로 도시된다. 제 2 페이지가 프로그램된 후, 메모리 셀들은 상태들(S0, S2, S4 또는 S6)이 된다. 도 11E는 제 3 페이지에 대해 프로그램되고 있는 상태(S0)의 메모리 셀들을 나타낸다. 도 11F는 제 3 페이지에 대해 프로그램되고 있는 상태(S2)의 메모리 셀들을 나타낸다. 도 11G는 제 3 페이지에 대해 프로그램되고 있는 상태(S4)의 메모리 셀들을 나타낸다. 도 11H는 제 3 페이지에 대해 프로그램되고 있는 상태(S6)의 메모리 셀들을 나타낸다. 도 11I는, 도 11E, 11F, 11G 및 11H가 메모리 셀들의 집단에 대해 (동시에 또는 연속적으로) 수행된 이후의 임계 전압 분포들을 나타낸다.
만일 메모리가 상태(S0)에 있고, 제 3 페이지 데이터가 "1"이라면, 메모리 셀은 상태(S0)로 유지된다. 만일 제 3 페이지에 대한 데이터가 "0"이면, 메모리 셀에 대한 임계 전압은 상태(S1)로 올라가며, B의 검증 포인트를 갖는다(도 11E 참조).
만일 메모리 셀이 상태(S2)에 있고, 제 3 페이지에 기록될 데이터가 "1"이면, 메모리 셀은 상태(S2)로 유지될 것이다(도 11F 참조). 하지만, 어떠한 프로그래밍은 임계 분포(606)를 새로운 상태(S2)로 좁히도록 수행될 것이며, C의 검증 포인트를 갖는다. 만일 제 3 페이지에 기록될 데이터가 "0"이면, 메모리 셀은 상태(S3)로 프로그램될 것이며, D의 검증 포인트를 갖는다.
만일 메모리 셀이 상태(S4)에 있고, 제 3 페이지에 기록될 데이터가 "1"이면, 메모리 셀은 상태(S4)로 유지될 것이다(도 11G 참조). 하지만, 어떠한 프로그래밍은 임계 분포(608)가 새로운 상태(S4)로 좁아지도록 수행될 것이며, E의 검증 포인트를 갖는다. 만일 메모리 셀이 상태(S4)에 있고, 제 3 페이지에 기록될 데이터가 "0"이면, 메모리 셀의 임계 전압은 상태(S5)로 올라갈 것이며, F의 검증 포인트를 갖는다(도 11G 참조).
만일 메모리 셀이 상태(S6)에 있고, 제 3 페이지에 기록될 데이터가 "1"이면, 메모리 셀은 상태(S6)로 유지될 것이다(도 11H 참조). 하지만, 어떠한 프로그래밍은 임계 분포(510)가 새로운 상태(S6)로 좁아지도록 수행될 것이며, G의 검증 포인트를 갖는다. 만일 제 3 페이지 데이터가 "0"이면, 메모리 셀의 임계 전압은 상태(S7)로 프로그램될 것이다. 제 3 페이지의 프로그래밍이 끝나면, 메모리 셀은 도 11I에 도시된 8개의 상태들중 하나에 있게 될 것이다.
도 12는 선택된 워드라인에 연결된 메모리 셀들을 동작시키기 위한 프로세스를 설명하는 흐름도이다. 일 실시예에서, 도 12의 프로세스는 메모리 셀들의 블록을 프로그램하는 데에 이용된다. 도 12의 프로세스의 일 구현에서, 메모리 셀들은 이러한 메모리 셀들 상에서 균일한 마모(wear)를 유지하기 위해 선 프로그램(pre-program)된다(단계 650). 일 실시예에서, 메모리 셀들은 최고 상태(highest state), 랜덤 패턴(random pattern), 또는 임의의 다른 패턴으로 선 프로그램된다. 어떠한 구현들에서는, 선 프로그래밍이 수행될 필요가 없다.
단계(652)에서, 프로그래밍 이전에, (블록들 또는 다른 단위로) 메모리 셀들이 소거된다. 일 실시예에서, 메모리 셀들은, 소스 및 비트라인들이 플로팅되는 동안, 충분한 시간 동안 p-웰을 소거 전압(예를 들어, 20V로 올리고, 선택된 블록의 워드라인들을 접지시킴으로써 소거된다. 소거될 것으로 선택되지 않은 블록들에서, 워드라인들은 플로팅된다. 용량성 결합으로 인해, 비선택 워드라인들, 비트라인들, 선택 라인들 및 공통 소스 라인 역시 소거 전압의 상당 부분(significant fraction)까지 올라가게 됨으로써, 소거될 것으로 선택되지 않은 블록들 상에서의 소거를 방해한다. 소거될 것으로 선택된 블록들에서, 선택된 메모리 셀들의 터널 산화물층들에 강한 전계가 걸리게 되고, 전형적으로 파울러-노드하임 터널링 메커니즘(Fowler-Nordheim tunneling mechanism)에 의해, 플로팅 게이트들의 전자들이 기판쪽으로 방출됨에 따라, 선택된 메모리 셀들이 소거된다. 전자들이 플로팅 게이트로부터 p-웰 영역으로 이동함에 따라, 선택된 셀의 임계 전압이 낮아지게 된다. 소거는 셀들의 전체 메모리 어레이 상에서 수행되거나, 개별적인 블록들 상에서 수행되거나, 또는 셀들의 다른 유닛 상에서 수행될 수 있다. 일 실시예에서, 메모리 셀들을 소거한 후, 소거되는 모든 메모리 셀들은 상태(E 또는 S0)가 될 것이다. 소거 프로세스의 하나의 구현은, p-웰에 몇 개의 소거 펄스들을 인가하고, 소거 펄들 사이에서, NAND 스트링들이 적절하게 소거되었는 지를 검증하는 것을 포함한다.
단계(654)에서, 소프트 프로그래밍을 (선택적으로) 수행하여, 소거되는 메모리 셀들에 대한 소거 임계 전압들의 분포를 좁힌다. 일부 메모리 셀들은, 소거 프로세스의 결과로서, 필요한 것 보다 더 깊은 소거 상태에 있을 수 있다. 소프트 프로그래밍은 더 깊은 소거되는 메모리 셀들의 임계 전압을 소거 임계 분포(예를 들어, 상태 E 또는 S0)로 이동시키기 위해 프로그래밍 펄스들을 인가할 수 있다.
단계(656)에서, 블록의 메모리 셀들이 프로그램된다. 프로그래밍 이후, 블록의 메모리 셀들이 판독될 수 있다(단계 658). 당업계에 알려진 많은 다른 판독 프로세스들을 이용하여 데이터를 판독할 수 있다. 몇몇 실시예들에서, 판독 프로세스는 ECC를 이용하여 에러들을 정정하는 것을 포함한다. 판독된 데이터는, 판독 동작을 요청했던 호스트들에게 출력된다. ECC 프로세스는 상태 머신, 제어기 또는 다른 장치에 의해 수행될 수 있다.
도 12는, 소거-프로그램 사이클은 판독없이 또는 판독과 상관없이 다수회 일어날 수 있고, 판독 프로세스는 프로그래밍없이 또는 프로그래밍과 상관없이 다수회 일어날 수 있으며, 그리고 판독 프로세스는 프로그래밍 이후 언제라도 일어날 수 있음을 보여준다. 도 12의 프로세스는 상기 설명한 다양한 회로들을 이용하여 상태 머신의 지시로 수행될 수 있다. 다른 실시예들에서, 도 12의 프로세스는 상기 설명한 다양한 회로들을 이용하여 제어기의 지시로 수행될 수 있다.
도 13은 공통 워드라인에 연결된 메모리 셀들에 대해 하나 이상의 목표 조건들(예를 들어, 데이터 상태들 또는 임계 전압 범위들)에 대하여 프로그래밍을 수행하기 위한 프로세스의 일 실시예를 설명하는 흐름도이다. 도 13의 프로세스는 도 12의 단계(656) 동안 한번 또는 다수회 수행될 수 있다. 예를 들어, 도 13의 프로세스는 메모리 셀들을 상태(E 또는 S0)로부터 상태들(A-C)(도 6 참조) 또는 (S1-S7)(도 10 참조) 중에서 임의의 상태로 바로 프로그램(예를 들어, 풀 시퀀스 프로그래밍)하는 데에 이용될 수 있다. 대안적으로, 도 13의 프로세스는 도 7의 프로세스의 페이즈들중 하나 또는 이러한 페이지들 각각, 도 8A-C의 프로세스의 단계들중 하나 또는 이러한 단계들 각각, 또는 도 11A-I의 프로세스의 단계들중 하나 또는 이러한 단계들 각각을 수행하는 데에 이용될 수 있다. 예를 들어, 도 7의 프로세스를 수행할 때, 도 13의 프로세스는 메모리 셀들중 일부를 상태(E)로부터 상태(A)로 프로그래밍하는 것을 포함하는 제 1 페이즈를 구현하는 데에 이용된다. 이후, 도 13의 프로세스는, 메모리 셀들중 일부를 상태(E)로부터 상태(C)로 프로그래밍하면서, 나머지 메모리 셀들을 상태(A)로부터 상태(B)로 프로그래밍하는 것을 포함하는 제 2 페이즈를 구현하는 데에 다시 한번 이용될 수 있다.
전형적으로, 프로그램 동작 동안 제어 게이트에 인가되는 프로그램 전압은 일련의 프로그램 펄스들로서 인가된다. 프로그래밍 펄스들 사이에는, 검증을 수행하기 위한 검증 펄스들의 세트가 있다. 많은 구현들에서, 프로그램 펄스들의 크기는 각각의 연속적인 펄스에 대해 소정의 스텝 사이즈 만큼 증가된다. 도 13의 단계(670)에서, 프로그래밍 전압(Vpgm)은 시작 크기(예를 들어, ~12V-16V 또는 다른 적절한 레벨)로 초기화되고, 상태 머신(222)에 의해 유지되는 프로그램 카운터(PC)는 0으로 초기화된다. 단계(672)에서, 프로그램 신호(Vgpm)의 프로그램 펄스가 선택된 워드라인(프로그래밍을 위해 선택된 워드라인)에 인가된다. 일 실시예에서, 프로그램되고 있는 메모리 셀들의 그룹은 모두 동일한 워드라인(선택된 워드라인)에 연결된다. 비선택 워드라인들은 하나 이상의 부스팅 전압들(예를 들어, ~9V)을 인가받아, 당업계에 알려져있는 부스팅 기법들을 수행한다. 메모리 셀이 프로그램되어야 한다면, 해당하는 비트라인은 접지된다. 한편, 메모리 셀이 자신의 현재 임계 전압으로 유지되어야 한다면, 해당하는 비트라인은 프로그래밍을 금지하기 위해 Vdd에 연결된다. 단계(672)에서, 선택된 워드라인에 연결된 모든 메모리 셀들에 프로그램 펄스가 동시에 인가되며, 이에 따라 선택된 워드라인에 연결된 모든 메모리 셀들은 동시에 프로그램된다. 즉, 이들은 동시에 (또는 겹치는 시간 동안) 프로그램된다. 이러한 방식으로, 선택된 워드라인에 연결된 모든 메모리 셀들은, 이들이 프로그래밍으로부터 로크아웃되지 않는한, 동시에 임계 전압을 변경할 것이다.
단계(674)에서, 목표 레벨들의 적절한 세트를 이용하여, 선택된 메모리 셀들의 상태들이 검증된다. 단계(674)는 한번 이상의 검증 동작들을 수행하는 것을 포함한다. 만일 메모리 셀의 임계 전압이 적절한 목표 레벨에 도달한 것으로 검출되면, 그 메모리 셀은 추가의 프로그래밍으로부터 로크아웃되는데, 이는 예를 들어 이후의 프로그래밍 펄스들 동안, 그 비트라인 전압을 Vdd로 올림으로써 이루어진다.
단계(676)에서, 모든 메모리 셀들이 자신들의 목표 임계 전압들에 도달했는 지를 체크한다. 모든 메모리 셀들이 자신들의 목표 임계 전압들에 도달했으면, 프로그래밍 프로세스가 완료되고 성공적이 되는데, 왜냐하면 선택된 모든 메모리 셀들이 자신들의 목표 상태들로 프로그램되었으며 검증되었기 때문이다. 단계(678)에서, "PASS"의 상태가 보고된다. 만일, 단계(676)에서, 모든 메모리 셀들이 자신들의 목표 임계 전압들에 도달한 것이 아니라면, 프로그래밍 프로세스는 단계(680)에서 계속된다.
단계(680)에서, 시스템은 자신들의 각각의 목표 임계 전압 분포에 아직 도달하지 않은 메모리 셀들의 수를 카운트한다. 즉, 시스템은 검증 프로세스에 실패한 셀들의 수를 카운트한다. 이러한 카운팅은 상태 머신, 제어기, 또는 다른 논리에 의해 이루어질 수 있다. 일 구현에서, 각 감지 블록(300)(도 3)은 이들 각각의 셀들의 상태(통과/실패)를 저장할 것이다. 이러한 값들은 디지털 카운터를 이용하여 카운트될 수 있다. 상기 설명한 바와 같이, 많은 감지 블록들은 함께 와이어드-OR 되는 출력 신호를 갖는다. 따라서, 하나의 라인을 체크하는 것은, 셀들의 큰 그룹의 어떠한 셀들도 검증에 실패하지 않았음을 나타낼 수 있다. 함께 와이어드-OR 되는 라인들을 적절하게(예를 들어, 이진 트리형 구조)로 조직함으로써, 이진 서치 방법을 이용하여, 실패한 셀들의 수를 결정할 수 있다. 이러한 방법에서, 적은 수의 셀들이 실패한다면, 카운팅은 신속하게 완료된다. 많은 수의 셀들이 실패한다면, 카운팅은 더 시간이 걸린다. 보다 많은 정보는 본원의 참조로서 통합되는 미국 공개 특허 2008/0126676에서 찾아볼 수 있다. 다른 대안에서, 해당하는 셀이 실패한 경우, 감지 증폭기들 각각은 아날로그 전압 또는 전류를 출력할 수 있으며, 아날로그 전압 또는 전류 가산 회로를 이용하여, 실패한 셀들의 수를 카운트할 수 있다.
일 예에서는, 하나의 총계가 카운트되는데, 이는 마지막 검증 단계에 실패한 현재 프로그램되고 있는 메모리 셀들의 총 개수를 나타낸다. 다른 실시예에서는, 각 데이터 상태에 대해 개별적인 카운트들이 유지된다.
단계(682)에서, 단계(680)로부터의 카운트가 소정의 제한치(limit) 미만인지, 아니면 소정의 제한치와 같은 지를 결정한다. 일 실시예에서, 이러한 소정의 제한치는 메모리 셀들의 페이지에 대한 판독 프로세스 동안 ECC에 의해 정정될 수 있는 비트들의 개수이다. 만일 실패한 셀들의 수가 소정의 제한치 미만이거나 또는 소정의 제한치와 같다면, 프로그래밍 프로세스는 중지될 수 있으며, 단계(678)에서, "PASS"의 상태가 보고된다. 이러한 상황에서는, 충분한 메모리 셀들이 정확하게 프로그램됨으로써, 완전히 프로그램되지 않은 소수의 나머지 메모리 셀들은 판독 프로세스(도 12의 단계(658) 참조) 동안 ECC를 이용하여 정정될 수 있다.
다른 실시예에서, 소정의 제한치가 미래의 에러들을 허용하기 위해 판독 프로세스 동안 ECC에 의해 정정될 수 있는 비트들의 수 미만이 될 수 있다. 페이지에 대한 모든 메모리 셀들 미만의 셀들을 프로그램할 때, 또는 단지 하나의 데이터 상태(또는 모든 상태들 보다 적은 상태)에 대한 카운트를 비교할 때, 소정의 제한치는 메모리 셀들의 페이지에 대한 판독 프로세스 동안 ECC에 의해 정정될 수 있는 비트들의 수의 (비례하거나 또는 비례하지 않는) 일부가 될 수 있다. 몇몇 실시예들에서, 이러한 제한치는 미리 결정되지 않는다. 대신에, 이러한 제한치는 페이지에 대해 이미 카운트된 에러들의 수, 수행된 프로그램-소거 사이클들의 수, 온도 또는 다른 기준들에 기초하여 달라진다.
만일 실패한 셀들의 수가 소정이 제한치 미만이 아니라면, 프로그래밍 프로세스는 단계(684)에서 계속되며, 프로그램 카운터(PC)는 프로그램 제한 값(PL)에 대해 체크된다. 이러한 프로그램 제한 값의 일 예는 20이지만, 다른 값들도 이용될 수 있다. 만일 프로그램 카운터(PC)가 프로그램 제한 값(PL) 미만이 아니라면, 프로그램 프로세스는 실패한 것으로 고려되며, 단계(688)에서, FAIL의 상태가 보고된다. 만일 프로그램 카운터(PC)가 프로그램 제한 값(PL) 미만이라면, 프로세스는 단계(686)에서 계속되는 바, 이 시간 동안 프로그램 카운터(PC)는 1 만큼 증분되며, 프로그램 전압(Vpgm)은 다음 크기로 스텝업(step up)된다. 예를 들어, 다음 펄스는 이전 펄스 보다 스텝 사이즈(예를 들어, 0.1-0.4V의 스텝 사이즈) 만큼 더 큰 크기를 가질 것이다. 단계(686) 이후, 프로세스는 단계(672)로 돌아가며, 선택된 워드라인에 다른 프로그램 펄스가 인가된다.
도 14는 도 13의 프로세스에 대한 프로그래밍 동안, 선택된 워드라인 및 이에 따라, 이러한 선택된 워드라인에 연결된 메모리 셀들의 제어 게이트들에 인가되는 전압 파형의 일부를 나타낸다. 이러한 파형은 도 13의 단계들(672-686)을 포함하는 루프들의 3번의 반복들의 일부들에 대해, 단계(672) 동안 인가되는 프로그래밍 펄스(Program), 단계(674) 동안 인가되는 검증 펄스들(Verify), 및 단계(680) 동안 실패한 셀들을 카운트하기 위한 시간 기간(실패한 셀들 카운트(count failed cells))을 나타낸다. 도 14의 예는 메모리 셀 마다 2개의 비트들 및 4개의 데이터 상태들을 갖는 실시예들에 해당한다. 따라서, 검증 프로세스는 Vva에서의 검증 펄스, Vvb에서의 검증 펄스, 및 Vvc에서의 검증 펄스를 포함한다. 메모리 셀 마다 3개의 비트들 및 8개의 데이터 상태들을 갖는 실시예들에서는, 최대 8개의 검증 펄스들이 있을 수 있다. 주목할 사항으로서, 몇몇 실시예들은 얼마의 반복들에서 어떠한 데이터 상태들에 대해 어떠한 메모리 셀도 테스트될 필요가 없는 것이 명확할 때, 모든 3개 또는 8개 미만의 검증 펄스들을 이용할 수 있다. 부가적으로, 다른 수의 데이터 상태들을 갖는 실시예들은 다른 수의 검증 펄스들을 이용할 것이다. 도 14의 실시예에서, 검증 동작들(단계 674) 및 실패한 셀들을 카운팅하는 것(단계 680)은 프로그래밍 펄스들 사이에서 수행된다. 따라서, 모든 데이터 셀들이 검증되었거나, 또는 검증에 실패한 메모리 셀들의 수가 미리 결정되는 제한치(또는 미리 결정되지 않는 제한치) 미만인 것으로 결정되자 마자, 다음 프로그래밍 펄스를 인가하지 않으면서, 프로그래밍 프로세스는 중지될 수 있다.
도 15는 도 13의 프로세스에 대한 프로그래밍 동안, 선택된 워드라인 및 이에 따라, 이러한 선택된 워드라인에 연결된 메모리 셀들의 제어 게이트들에 인가되는 전압 파형의 다른 실시예의 일부를 나타낸다. 이러한 파형은 도 13의 단계들(672-686)을 포함하는 루프들의 3번의 반복들의 일부들에 대해, 단계(672) 동안 인가되는 프로그래밍 펄스(Program), 단계(674) 동안 인가되는 검증 펄스들(Verify), 및 단계(680) 동안 실패한 셀들을 카운트하기 위한 시간 기간(실패한 셀들 카운트)을 나타낸다. 도 15의 예에서, 검증 동작들(단계 674)은 프로그래밍 펄스들 사이에서 수행된다. 하지만, 실패한 셀들의 카운팅은 다음 프로그램 펄스 동안 수행됨으로써, 시간을 세이브할 수 있다. 모든 데이터 셀들이 검증되었거나, 또는 검증에 실패한 메모리 셀들의 수가 미리 결정되는 제한치(또는 미리 결정되지 않는 제한치) 미만인 것으로 결정되면, 프로그래밍 프로세스는 중지될 수 있지만, 다음 프로그래밍 프로세스가 이미 인가되었다. 상기 설명한 바와 같이, 검증 프로세스의 결과는 래치들(494)에 저장될 수 있다. 이러한 래치들은 다음 프로그램 펄스 동안 판독될 수 있다.
도 16은 선택된 워드라인 및 이에 따라, 이러한 선택된 워드라인에 연결된 메모리 셀들의 제어 게이트들에 인가되는 전압 파형의 다른 실시예의 일부를 나타낸다. 이러한 파형은 도 13의 단계들(672-686)을 포함하는 루프들의 3번의 반복들의 일부들에 대해, 단계(672) 동안 인가되는 프로그래밍 펄스(Program), 단계(674) 동안 인가되는 검증 펄스들(Verify), 및 단계(680) 동안 실패한 셀들을 카운트하기 위한 시간 기간(실패한 셀들 카운트)을 나타낸다. 도 16의 실시예는 단지 하나의 상태에 대해서만 검증하는 프로그래밍 프로세스와 관련된다. 예를 들어, 4개, 8개 또는 그 이상의 상태로 데이터를 프로그램할 때, 프로세스는, 메모리 셀들이 가장 높은 상태(예를 들어, 상태(C) 또는 상태(S7))로 프로그램되는 것을 제외하고, 모든 메모리 셀들이 자신들의 목표 상태들에 도달하는 상태에 이를 수 있다. 이때, 검증 프로세스는 Vvc(도 6 참조) 또는 Vv7(도 7 참조)에서만 검증을 수행할 것이다. 따라서, 도 16은 메모리 셀들이 가장 높은 데이터 상태(또는, 가장 높지 않은 다른 상태)에 있는 지를 테스트하기 위한 검증 펄스 만을 나타낸다. 다른 예에서, 도 16의 파형은 단지 하나의 상태로만 프로그램하고 있는 프로그래밍 동작, 예를 들어 도 7의 프로세스의 제 1 페이즈, 도 8A의 프로세스, 도 11A의 프로세스 또는 다른 프로세스들에 대해 이용될 수 있다. 하나 보다 많은 상태로 프로그램하는 프로그래밍 동작들에 대해, 적절한 경우, 부가적인 검증 펄스들이 파형에 인가될 수 있다. 도 16의 실시예에서, 검증 동작들(단계 674) 및 실패한 셀들을 카운트하는 것(단계 680)은 프로그래밍 펄스들 사이에서 수행된다.
도 17은 선택된 워드라인 및 이에 따라, 이러한 선택된 워드라인에 연결된 메모리 셀들의 제어 게이트들에 인가되는 전압 파형의 다른 실시예의 일부를 나타낸다. 이러한 파형은 도 13의 단계들(672-686)을 포함하는 루프들의 3번의 반복들의 일부들에 대해, 단계(672) 동안 인가되는 프로그래밍 펄스(Program), 단계(674) 동안 인가되는 검증 펄스들(Verify), 및 단계(680) 동안 실패한 셀들을 카운트하기 위한 시간 기간(실패한 셀들 카운트)을 나타낸다. 도 16과 마찬가지로, 도 17의 파형은 단지 하나의 상태에 대해서만 검증하는 프로그래밍 프로세스와 관련된다. 도 17의 실시예에서, 검증 동작들(단계 674)이 프로그래밍 펄스들 사이에서 수행된다. 하지만, 실패한 셀들의 카운팅은 다음 프로그램 펄스 동안 수행된다.
프로그램 전압은 워드라인에 연결된 모든 메모리 셀들에 인가되기 때문에, 그 워드라인 상의 비선택 메모리 셀(프로그램되지 않을 메모리 셀)이 우연하게 프로그램될 수도 있다. 선택된 워드라인 상의 비선택 셀의 의도되지 않은 프로그래밍은 "프로그램 디스터브(program disturb)"라 불린다. 예를 들어, 상태(E)의 메모리 셀의 임계 전압은 상태(E) 바깥의 레벨로 증가할 수 있다. 도 18은 데이터 상태들(E, A, B 및 C)에 대한 임계 전압 대 메모리 셀들의 수를 나타낸다. 상태(E)는 프로그램 디스터브를 받고 있는 그 메모리 셀들의 서브세트(음영이 있는 영역(702))를 갖는 것으로 도시되어 있으며, 이에 따라 이들 각각의 임계 전압은 보통 상태(E)의 일부가 되도록 의도되는 레벨을 넘는다. 프로그램 디스터브는, 메모리 셀들을 가장 높은(가장 끝) 상태(예를 들어, 상태 C 또는 S7)로 프로그램할 때에 더 심하다. 왜냐하면, 메모리 셀들을 가장 높은 상태로 프로그램하는 것은 일반적으로 더 많은 전압 펄스들을 필요로 하고, 인가되는 더 많은 펄스들은 프로그램 디스터브의 기회를 증가시키기 때문이다. 또한, 전압의 크기가 각 펄스 마다 증가하기 때문에, 가장 높은 데이터 상태는 더 높은 전압들로 프로그램됨으로써, 프로그램 디스터브의 기회를 증가시킬 수 있다.
도 18은 또한 가장 높은 상태(C)로 프로그램되고 있는 메모리 셀들의 일부는 아직 Vvc에 도달하지 않았음을 나타낸다. 이러한 경우, 음영이 있는 영역(704)에 의해 표현되는 메모리 셀들을 계속해서 프로그램하게 되면, 음영이 있는 영역(702) 내의 메모리 셀들의 프로그램 디스터브 만을 악화시킬 것이다. 따라서, 상기 설명한 프로그래밍 프로세스는, 프로그램 디스터브를 줄이기 위해(또는 이러한 프로그램 디스터브가 더 악화되는 것을 막기 위해), 모든 메모리 셀들이 목표에 도달하기 전에(예를 들어, Vvc에 도달하기 전에), 메모리 셀들을 가장 높은 상태로 프로그래밍하는 것을 중지한다. 하지만, 도 13의 단계들(680 및 682)과 관련하여 상기 설명한 바와 같이, 프로그래밍은, 충분히 프로그램되지 않은 메모리 셀들의 수가 ECC에 의해 정정될 수 있는 메모리 셀들의 수 보다 작을 때에만 중지된다.
일 실시예에서, 검증 비교 값(예를 들어, Vvc) 미만의 셀들의 수를 카운트하는 대신, 시스템은 중간 비교 값 미만의 셀들의 수를 카운트한 다음, 이러한 카운트를 얼마나 많은 셀들이 검증 비교 값 미만인지의 추정치(estimate)로서 이용할 수 있다. 예를 들어, 도 19는 검증 비교 값(Vvc) 및 판독 비교 값(Vrc)을 갖는 데이터 상태(C)에 대한 임계 전압 분포를 나타낸다. 도 19는 또한 중간 비교 값(VvcL)을 나타낸다. 도 13의 단계(680)의 일 실시예에서, 시스템은, Vvc 미만의 임계 전압을 갖는, 상태(C)로 프로그램될 것으로 가정되는 메모리 셀들의 수를 추정하기 위해, VvcL 미만의 임계 전압을 갖는, 상태(C)로 프로그램될 것으로 가정된 메모리 셀들의 수를 카운트할 것이다.
VvcL 미만의 임계 전압을 갖는 메모리 셀들의 수는 Vvc 미만의 임계 전압을 갖는 메모리 셀들의 수에 비례한다. 예를 들어, VvcL이 Vvc 보다 낮은 0.4-0.5V 이면, VvcL 미만의 임계 전압을 갖는 메모리 셀들의 수는 Vvc 미만의 임계 전압을 갖는 메모리 셀들의 수의 약 1/10 이다. VvcL이 Vvc 보다 낮은 0.8-1.0V 이면, VvcL 미만의 임계 전압을 갖는 메모리 셀들의 수는 Vvc 미만의 임계 전압을 갖는 메모리 셀들의 수의 약 1/100 이다. 몇몇 실시예들에서, 비교 값 미만인 것으로 카운트되는 셀들의 수는 각 0.4-0.5V에 대해 10의 팩터(factor) 만큼 감소될 것이다. 도 19는 Vrc 보다 높고 Vvc 보다 낮은 임계 전압을 갖는 메모리 셀들을 나타내는 음영이 있는 영역(712)을 나타낸다. 음영이 있는 영역(714)은 VvcL 보다 높고 Vrc 보다 낮은 임계 전압을 갖는 메모리 셀들을 나타낸다. 음영이 있는 영역(716)은 VvcL 보다 낮은 임계 전압을 갖는 메모리 셀들을 나타낸다. 따라서, Vvc 미만의 임계 전압을 갖는 메모리 셀들의 수는 음영이 있는 영역들의 합인, 712+714+716 이다. 알 수 있는 바와 같이, 이것은 VvcL 미만의 임계 전압을 갖는 메모리 셀들의 수 보다 상당히 더 크다. 몇몇 실시예들에서, 중간 비교 값 VvcL 미만의 메모리 셀들의 수를 카운트하는 것은 Vvc 미만의 메모리 셀들의 수를 카운트하는 것 보다 더 빠를 것이다.
도 20은 시스템이, 중간 비교 값 VvcL 미만의 임계 전압을 갖는, 상태(C)로 프로그램될 것으로 가정되는 메모리 셀들의 수를 카운트하게 될 단계(680)의 실시예에 대해, 도 13의 프로그래밍 프로세스 동안, 선택된 워드라인 (및 이에 따라 이 선택된 워드라인에 연결된 메모리 셀들의 제어 게이트들)에 인가되는 전압 파형의 일부를 나타낸다. VvcL 미만의 임계 전압을 갖는, 상태(C)로 프로그램될 것으로 가정되는 메모리 셀들의 수가 특정의 제한치 이하이면(도 13의 단계 682), 프로그래밍 프로세스는 끝난다. VvcL은 Vvc 보다 낮기 때문에, 비교되는 특정의 제한치는 Vvc에 대해 비교하는 경우 보다 더 낮다. 상기의 2개의 예들에서, VvcL에 대해 이용되는 제한치는 Vvc에 대해 이용되는 제한치 보다 10 내지 100배 더 작다. 도 20의 파형은 도 13의 단계들(672-686)을 포함하는 루프들의 3번의 반복들의 일부들에 대해, 단계(672) 동안 인가되는 프로그래밍 펄스(Program), 단계(674) 동안 인가되는 검증 펄스들(Verify), 및 단계(680) 동안 실패한 셀들을 카운트하기 위한 시간 기간(실패한 셀들 카운트)을 나타낸다. 본 실시예에서, 단계(실패한 셀들 카운트)(680)는, 메모리 셀들이 적어도 VvcL의 임계 전압을 갖는 지를 테스트하기 위해, VvcL의 전압 펄스를 인가하는 것을 포함한다. 임계 전압을 테스트하는 다른 방법들도 이용될 수 있다. 부가적으로, 주목할 사항으로서, 비록 전압 펄스는 완전한 구형파로서 도시되었지만, 실제로 전압 펄스 (및 본 도면과 나머지 도면들에 도시된 다른 펄스들)은 완전한 구형파가 아닐 가능성도 있으며, 몇몇 경우들에서는,구형파와 다른 형상이 될 수 있다.
도 20의 예는 메모리 셀당 2 비트 및 4개의 데이터 상태들을 갖는 실시예들에 해당한다. 따라서, 검증 프로세스는 Vva에서의 검증 펄스, Vvb에서의 검증 펄스 및 Vvc에서의 검증 펄스를 포함한다. 메모리 셀당 3개의 비트 및 8개의 데이터 상태들을 갖는 실시예들에서는, 8개의 검증 펄스들까지 있을 수 있다. 주목할 사항으로서, 몇몇 실시예들은, 어떠한 데이터 상태들에 대해 어떠한 메모리 셀도 테스트될 필요가 없는 것이 명확할 때, 얼마의 반복들에서 모든 3개 또는 8개 미만의 검증 펄스들을 이용할 것이다. 부가적으로, 다른 수의 데이터 상태들을 갖는 실시예들은 다른 수의 검증 펄스들을 이용할 것이다. 도 20의 실시예에서, 검증 동작들(단계 674) 및 실패한 셀들을 카운팅하는 것(단계 680)은 프로그래밍 펄스들 사이에서 수행된다. 따라서, 모든 데이터 셀들이 검증되었거나, 또는 검증에 실패한 메모리 셀들의 수가 제한치 미만인 것으로 결정되자 마자, 다음 프로그래밍 펄스를 인가하지 않으면서, 프로그래밍 프로세스는 중지될 수 있다.
도 21은 시스템이, VvcL 미만의 임계 전압을 갖는, 상태(C)로 프로그램될 것으로 가정되는 메모리 셀들의 수를 카운트하게 될, 도 13의 단계(680)의 다른 실시예에 대해, 선택된 워드라인 (및 이에 따라 이 선택된 워드라인에 연결된 메모리 셀들의 제어 게이트들)에 인가되는 전압 파형의 일부를 나타낸다. 이러한 전압 파형은 도 13의 단계들(672-686)을 포함하는 루프들의 3번의 반복들의 일부들에 대해, 단계(672) 동안 인가되는 프로그래밍 펄스(Program), 단계(674) 동안 인가되는 검증 펄스들(Verify), 및 단계(680) 동안 실패한 셀들을 카운트하기 위한 시간 기간(실패한 셀들 카운트)을 나타낸다. 본 실시예에서, 단계(실패한 셀들 카운트)(680)는, 메모리 셀들이 적어도 VvcL의 임계 전압을 갖는 지를 테스트하기 위해, VvcL의 전압 펄스를 인가하는 것을 포함한다. 임계 전압을 테스트하는 다른 방법들도 이용될 수 있다. 도 21의 실시예에서, 검증 동작들(단계 674)은 프로그래밍 펄스들 사이에서 수행된다. 하지만, 실패한 셀들의 카운팅(단계 680)은 다음 프로그램 펄스 동안 수행된다. 상기 설명한 바와 같이, 검증 프로세스의 결과들은 래치들(494)에 저장될 수 있다. 이러한 래치들은 다음 프로그램 펄스 동안 판독될 수 있다.
도 22는 시스템이, VvcL 미만의 임계 전압을 갖는, 상태(C)로 프로그램될 것으로 가정되는 메모리 셀들의 수를 카운트하게 될, 도 13의 단계(680)의 다른 실시예에 대해, 선택된 워드라인 (및 이에 따라 이 선택된 워드라인에 연결된 메모리 셀들의 제어 게이트들)에 인가되는 전압 파형의 일부를 나타낸다. 이러한 전압 파형은 도 13의 단계들(672-686)을 포함하는 루프들의 3번의 반복들의 일부들에 대해, 단계(672) 동안 인가되는 프로그래밍 펄스(Program), 단계(674) 동안 인가되는 검증 펄스들(Verify), 및 단계(680) 동안 실패한 셀들을 카운트하기 위한 시간 기간(실패한 셀들 카운트)을 나타낸다. 도 16의 실시예는 단지 하나의 상태에 대해서만 검증하는 프로그래밍 프로세스와 관련된다. 예를 들어, 4개, 8개 또는 그 이상의 상태들로 데이터를 프로그램할 때, 프로세스는, 메모리 셀들이 가장 높은 상태(예를 들어, 상태(C) 또는 상태(S7))로 프로그램되는 것을 제외하고, 모든 메모리 셀들이 자신들의 목표 상태들에 도달하는 상태에 이를 수 있다. 이때, 검증 프로세스는 Vvc(도 6 참조) 또는 Vv7(도 7 참조)에서만 검증을 수행할 것이다. 따라서, 도 22는 메모리 셀들이 가장 높은 데이터 상태(또는, 가장 높지 않은 다른 상태)에 도달했는 지를 테스트하기 위한 검증 펄스 만을 나타낸다. 도 22의 파형은 단지 하나의 상태로만 프로그램하고 있는 프로그래밍 동작, 예를 들어 도 7의 프로세스의 제 1 페이즈, 도 8A의 프로세스, 도 11A의 프로세스 또는 다른 프로세스들에 대해 이용될 수 있다. 하나 보다 많은 상태로 프로그램하는 프로그래밍 동작들에 대해, 적절한 경우, 부가적인 검증 펄스들이 파형에 인가될 수 있다. 도 22의 실시예에서, 검증 동작들(단계 674) 및 실패한 셀들을 카운트하는 것(단계 680)은 프로그래밍 펄스들 사이에서 수행된다. 본 실시예에서, 도 21의 실시예와 마찬가지로, 단계(680)(실패한 셀들 카운트)는 메모리 셀들이 적어도 VvcL의 임계 전압을 갖는 지를 테스트하기 위해 VvcL의 전압 펄스를 인가하는 것을 포함한다. 임계 전압을 테스트하는 다른 방법들로 이용될 수 있다.
도 23은 시스템이, VvcL 미만의 임계 전압을 갖는, 상태(C)로 프로그램될 것으로 가정되는 메모리 셀들의 수를 카운트하게 될, 도 13의 단계(680)의 다른 실시예에 대해, 선택된 워드라인 (및 이에 따라 이 선택된 워드라인에 연결된 메모리 셀들의 제어 게이트들)에 인가되는 전압 파형의 일부를 나타낸다. 이러한 전압 파형은 도 13의 단계들(672-686)을 포함하는 루프들의 3번의 반복들의 일부들에 대해, 단계(672) 동안 인가되는 프로그래밍 펄스(Program), 단계(674) 동안 인가되는 검증 펄스들(Verify), 및 단계(680) 동안 실패한 셀들을 카운트하기 위한 시간 기간(실패한 셀들 카운트)을 나타낸다. 도 22와 마찬가지로, 도 23의 파형은 단지 하나의 상태에 대해서만 검증하는 프로그래밍 프로세스와 관련된다. 도 23의 실시예에서, 검증 동작들(단계 674)은 프로그래밍 펄스들 사이에서 수행된다. 하지만, 실패한 셀들의 카운팅(단계 680)(실패 셀들 카운트)은 다음 프로그램 펄스 동안 수행된다. 본 실시예에서, 도 21의 실시예와 마찬가지로, 단계(680)(실패 셀들 카운트)는 메모리 셀들이 적어도 VvcL의 임계 전압을 갖는 지를 테스트하기 위해, VvcL의 전압 펄스를 인가하는 것을 포함한다. 일 실시예에서, 실패한 셀들의 카운팅이 다음 프로그램 펄스와 동시에 수행되는 동안, VvcL의 전압 펄스는 다음 프로그램 펄스 이전에 인가된다. 임계 전압을 테스트하는 다른 방법들도 이용될 수 있다.
도 20-23은, 상태(C)로 프로그램되고 있는 메모리 셀들에 대해 단계(680)를 수행할 때 중간 비교 레벨(예를 들어, VvcL)의 이용을 설명한다. 하나의 세트의 실시예들에서, 단계(680)는, 각각의 검증 비교 레벨들(예를 들어, Vva 및 Vvb)에 도달하지 않은 메모리 셀들의 수를 카운트함으로써, (가장 높은 상태 또는 맨 끝 상태인) 상태(C) 이외의 상태들로 프로그램되고 있는 메모리 셀들 상에서 수행될 것이다. 따라서, 상태(A)로의 프로그래밍은, 상태(A)로 프로그램되도록 의도된 메모리 셀들의 제 1 소정 수 미만의 셀들이 Vva에 도달하지 않았을 때에 중지될 것이고, 상태(B)로의 프로그래밍은, 상태(B)로 프로그램되도록 의도된 메모리 셀들의 제 2 소정 수(제 1 소정수 수와 같거나, 또는 제 1 소정 수와 다를 수 있다) 미만의 셀들이 Vvb에 도달하지 않았을 때에 중지될 것이며, 그리고 상태(C)로의 프로그래밍은, 상태(C)로 프로그램되도록 의도된 메모리 셀들의 제 1 소정 수 미만의 셀들이 VvcL에 도달하지 않았을 때에 중지될 것이다.
다른 세트의 실시예에서, 단계들(680 및 682)은 가장 높은 또는 맨 끝 상태(예를 들어, 상태 C 또는 상태 S7)로 프로그램되고 있는 메모리 셀들에 의해서만 수행될 것이다.
다른 세트의 실시예들에서, 단계(680)는 각 상태에 대해 중간 비교 값을 이용할 것이다. 예를 들어, 단계(680)는 상태(A)로 프로그램되고 있는 메모리 셀들에 대해 Vva 보다 낮은 중간 비교 값을 이용할 것이며, 그리고 단계(680)는 상태(B)로 프로그램되고 있는 메모리 셀들에 대해 Vvb 보다 낮은 중간 비교 값을 이용할 것이다.
임계 전압들이 프로그래밍에 대해서는 낮춰지고, 소거 동안에는 올라가는 경우와 같은, 몇몇 실시예들에서, 중간 비교 값은 검증 비교 값 보다 높게 될 것이다.
도 20-23은 2개의 데이터 비트를 저장하는 메모리 셀들에 대해 중간 비교 레벨(예를 들어, VvcL)을 이용하는 것을 도시한다. 하지만, 도 20-23에 의해 교시되는 개념은 2개 보다 많은 데이터 비트를 저장하는 메모리 셀들에 대해서도 적용될 수 있다. 예를 들어, 단계(680)에서 중간 값 미만의 임계 전압을 갖는 메모리 셀들을 카운트하는 것이, 도 10 및 11의 프로그래밍 프로세스에 대해 이용될 수 있다. 3개의 데이터 비트를 저장하는 메모리 셀들을 포함하는 일 예에서, 단계(680)는 S1-S6으로 프로그램되고 있는 메모리 셀들에 대해 S1-S6에 대한 각각의 검증 레벨들(예를 들어, Vv1, Vv2, Vv3, Vv4, Vv5, Vv6) 미만의 임계 전압들을 갖는 메모리 셀들을 카운트하며, 그리고 상태(S7)로 프로그램되고 있는 메모리 셀들에 대해 Vv7L 미만인 메모리 셀들을 카운트하며, 상기 Vv7L은 Vv7 미만의 0.5V(또는 다른 값)이다. 하나의 대안에 있어서, Vv7L은 Vv6, Vv5 또는 이러한 값들에 가까운 다른 값이 될 수 있다.
3개의 데이터 비트를 저장하는 메모리 셀들을 포함하는 일 예에서, 단계(680)는 S1-S5로 프로그램되고 있는 메모리 셀들에 대해 S1-S5에 대한 각각의 검증 레벨들(예를 들어, Vv1, Vv2, Vv3, Vv4 및 Vv5) 미만의 임계 전압들을 갖는 메모리 셀들을 카운트하고, 상태(S6)로 프로그램되고 있는 메모리 셀들에 대해 Vv6L 미만인 메모리 셀들을 카운트하며, 그리고 상태(S7)로 프로그램되고 있는 메모리 셀들에 대해 Vv7L 미만인 메모리 셀들을 카운트할 것이며, 상기 Vv6L은 Vv6 미만의 0.5V(또는 다른 값)이다.
도 24는 다른 실시예를 도시하는 바, 여기에서는 VvcL이 Vvb로 설정되거나, Vv7L이 Vv6으로 설정된다. 부가적으로, 실패한 셀들(예를 들어, 중간 비교 값 미만의 임계 전압을 갖는 셀들)의 수가 소정 개수 미만인 것으로 결정한 후, 소정 개수의 하나 이상의 부가적인 프로그래밍 펄스들이 인가된다. 다음 프로그램 펄스 동안 단계(680)를 수행하는 실시예들에서(도 21 및 23 참조), 이러한 소정 개수의 하나 이상의 부가적인 프로그래밍 펄스들은 다음 프로그램 펄스 이후 인가된다. 도 24의 프로세스는 도 13의 프로세스와 유사(동일한 참조 번호들이 동일한 단계들을 도시함)하지만, 단계들(680 및 682)은 단계들(740-744)에 의해 대체된다. 단계(740)는, VvcL=Vvb 또는 Vv7L=Vv6 인 것을 제외하고, 단계(680)와 유사하다. 단계(742)는, 실패한 셀들에 대해 비교되는 소정의 제한치가 다를 수 있는 것을 제외하고, 단계(682)와 유사하다. 만일 실패한 셀들의 수가 소정의 제한치 보다 크면, 프로세스는 단계(684)에서 계속된다. 만일 실패한 셀들의 수가 소정의 제한치 미만이거나 같다면, 프로세스는 단계(744)에서 계속된다. 단계(744)에서, 선택된 워드라인을 통해 소정 개수의 프로그래밍 펄스들이 메모리 셀들에 인가된다. 검증 동작들(성공적으로 검증한 메모리 셀들은 로크아웃된다)이 이러한 소정 개수의 프로그래밍 펄스들 사이에서 수행된다. 소정의 제한치 및 소정 개수의 프로그래밍 펄스들은 시뮬레이션 또는 디바이스 특성(device characterization)에 기초하여 결정될 수 있다. 일 실시예에서, 제한치 및 프로그래밍 펄스들의 수는, 미리 결정되는 것이 아니라, 프로그램-소거 사이클들의 수, 온도 또는 다른 팩터들에 기초하여 동적으로 설정된다.
도 25는, 소정 개수의 프로그래밍 펄스들을 인가하고, 상태(B)로 프로그램되도록 의도된 모든 메모리 셀들이 상태(B)로 충분히 프로그램된 이후 프로그래밍을 끝내는 다른 실시예를 설명한다. 상태(B)로 프로그램되도록 의도된 모든 메모리 셀들이 상태(B)로 충분히 프로그램된 이후, 상태(C)로 프로그램되도록 의도된 작은 수의 메모리 셀들은 아직 Vvb에 도달한 임계 전압들을 갖지 않는 것으로 가정한다. "충분히 프로그램된다"는 어구는, 프로그래밍 프로세스를 성공적인 것으로 고려할 수 있을 정도로 충분한 메모리 셀들이 상태(B)에 도달했음을 의미한다. 예를 들어, 도 13의 프로세스를 이용하여 메모리 셀들이 그룹을 상태(B)로 프로그램할 때, 충분한 메모리 셀들이 성공적으로 검증되고, 이에 따라 검증에 실패한 메모리 셀들의 수가 소정의 제한치(예를 들어, ECC에 의해 정정될 수 있는 미리 결정되는 제한치) 미만일 때에, 메모리 셀들의 그룹은 충분히 프로그램된 것이다. 이때, 상태(C)로 프로그램되도록 의도된 메모리 셀들의 소정의 제한치 미만의 셀들은, 그렇게 테스트되는 경우, 상태(B)에 대한 검증에 실패하는 것으로 가정한다. 따라서, 하나 이상의 프로그래밍 펄스들의 소정의 부가적인 세트 만을 인가하고, 프로그래밍을 중지한다. (본 실시예에서, 또는 도 24의 실시예에서), 하나 이상의 프로그래밍 펄스들의 부가적인 세트를 인가할 때에는, 이러한 하나 이상의 프로그래밍 펄스들의 부가적인 세트 동안, 또는 이러한 하나 이상의 프로그래밍 펄스들의 부가적인 세트 사이에서, 실패한 셀들을 카운팅하지 않는다. 본 실시예를 달성하기 위해, 상태(C)로 프로그램되고 있는 메모리 셀들은 도 25의 프로세스를 수행할 것이며, 상태(A 및 B)로 프로그램되는 메모리 셀들은 도 13의 프로세스를 수행할 것이다.
도 25는, 다음의 예외들을 제외하고, 도 13의 프로세스와 유사하다. 단계(676)에서, 모든 메모리 셀들이 적절하게 검증되지 않은 것으로 결정되면, 다계(780)에서, 상태(B)로 프로그램되도록 의도된 모든 메모리 셀들이 상태(B)로 충분히 프로그램되었는 지를 결정한다. 상태(B)로 프로그램되도록 의도된 모든 메모리 셀들이 상태(B)로 충분히 프로그램되지 않았다면, 프로세스는 단계(684)에서 계속된다. 상태(B)로 프로그램되도록 의도된 모든 메모리 셀들이 상태(B)로 충분히 프로그램되었다면, 단계(782)에서, 선택된 워드라인을 통해 소정 개수의 프로그래밍 펄스들이 메모리 셀들에 인가된다. 검증 동작들(성공적으로 검증한 메모리 셀들은 로크아웃된다)이 이러한 소정 개수의 프로그래밍 펄스들 사이에서 수행된다. 단계(782) 동안 메모리 셀들에 인가되는 프로그래밍 펄스들의 수는 실험, 시뮬레이션 및/또는 디바이스 특성에 기초하여 결정될 수 있다. 프로그래밍 펄스들 간의 증분량은 단계(782) 동안 메모리 셀들에 인가되는 프로그래밍 펄스들의 수에 영향을 줄 수 있다.
도 25의 실시예는 또한 2개 보다 많은 데이터 비트를 저장하는 메모리 셀들에 대해서도 이용될 수 있다. 예를 들어, 도 25의 프로세스는 도 10 및 도 11H에 도시된 바와 같이 프로그램되고 있는 메모리 셀들 뿐 아니라, 다른 프로그래밍 프로세스들에 대해서도 이용될 수 있다. 일 실시예에서, 3개의 데이터 비트를 저장하는 메모리 셀들에 대해 도 25의 프로세스를 이용할 때, 단계(780)는 상태(S6)(두번째로 가장 높은 상태)로 프로그램되도록 의도된 모든 메모리 셀들이 상태(S60로 충분히 프로그램되었는 지를 테스트한다.
프로그래밍 프로세스의 속도를 불합리하게 떨어뜨리지 않으면서, 조밀한(tight) 임계 전압 분포들을 달성하기 위한 하나의 솔루션은 2-페이즈 프로그래밍 프로세스를 이용하는 것을 포함한다. 제 1 페이즈, 즉 거친(coarse) 프로그래밍 페이즈는 더 빠른 방식으로 임계 전압을 올리고자 시도하는 것을 포함하며, 조밀한 임계 전압 분포를 달성하는 데에는 덜 유의한다. 제 2 페이즈, 즉 정교 프로그래밍 페이즈는, 더 조밀한 임계 전압 분포를 달성하면서, 목표 임계 전압에 도달하기 위해 보다 느린 방식으로 임계 전압을 올리고자 시도한다. 거친/정교 프로그래밍 방법의 일 예는 그 전체가 본원의 참조로서 통합되는 미국 특허 6,643,188에서 찾아볼 수 있다.
도 26A-C 및 27A-C는 거친/정교 프로그래밍 방법의 일 예를 보다 상세하게 제공한다. 도 26A 및 27A는 제어 게이트에 인가되는 프로그래밍 펄스들(Vpgm)을 도시한다. 도 26B 및 27B는 프로그램되고 있는 메모리 셀들에 대한 비트라인 전압들을 도시한다. 도 26C 및 27C는 프로그램되고 있는 메모리 셀들의 임계 전압을 도시한다. 이러한 예는 도면에서 Vver1 및 Vver2로서 나타낸 2개의 검증 레벨들을 이용한다. 최종 목표 레벨은 Vver1 이다. 메모리 셀의 임계 전압이 Vver1 에 도달할 때, 이 메모리 셀에 해당하는 비트라인에 금지 전압을 인가함으로써 이 메모리 셀은 추가의 프로그래밍이 금지된다. 예를 들어, 비트라인 전압은 Vinhibit로 올라갈 수 있다(도 26B 및 27B 참조). 일 실시예에서, 이러한 Vinhibit는 Vdd 이다. 하지만, 메모리 셀이 목표 값 Vver1에 가까운(하지만, 더 낮은) 임계 전압에 도달할 때, 후속 프로그래밍 펄스들 동안 메모리 셀에 대한 임계 전압 시프트의 속도는, 비트라인에 일정한 바이어스 전압(전형적으로, 0.3V 내지 0.8V 정도)을 인가함으로써 감소된다. 다음 몇 개의 프로그래밍 펄스들 동안 임계 전압 시프트의 속도가 감소되기 때문에, 최종 임계 전압 분포는 그렇지 않은 경우 보다 더 좁아질 수 있게 된다. 이러한 방법을 구현하기 위해, Vver1의 검증 레벨 보다 더 낮은 제 2 검증 레벨이 이용된다. 이러한 제 2 검증 레벨은 Vver2로서 도시된다. 메모리 셀의 임계 전압이 Vver2 보다 크지만, Vver1 보다는 낮으면, 비트라인 바이어스 Vs(도 27)를 인가함으로써, 후속 프로그래밍 펄스들에 대하여, 메모리 셀에 대한 임계 전압 시프트가 감소될 것이다. 주목할 사항으로서, 이 경우에는, 각 상태에 대해 2개의 검증 동작들이 요구된다. 하나의 검증 동작은 각 상태에 대해 해당하는 Vver1에서 이루어지고, 하나의 검증 동작은 각 상태에 대해 해당하는 Vver2에서 이루어진다. 이는 메모리 셀들을 프로그램하는 데에 필요한 총 시간을 증가시킬 수 있다. 하지만, 더 큰 ΔVpgm 스텝 사이즈를 이용하여, 프로세스의 속도를 높일 수 있다.
도 26A, 26B 및 26C는 하나의 프로그래밍 펄스에서 임계 전압이 Vver2 및 Vverl를 통과(pass)하는 메모리 셀의 작용을 나타낸다. 예를 들어, 도 26C에서, 임계 전압은 t2와 t3 사이에서 Vver2 및 Vverl을 통과하는 것으로 도시되어 있다. 따라서, t3 이전에, 메모리 셀은 거친 페이즈에 있게 된다. t3 이후, 메모리 셀은 금지 모드에 있게 된다.
도 27A, 27B 및 27C는 거친 및 정교 프로그래밍 페이즈들 모두에 들어가는 메모리 셀을 도시한다. 메모리 셀의 임계 전압은 시간 t2와 시간 t3 사이에서 Vver2를 넘어가게 된다. t3 이전에, 메모리 셀은 거친 페이즈에 있게 된다. t3 이후, 비트라인 전압은 Vs로 올라가며, 이에 따라 메모리 셀은 정교 페이즈에 있게 된다. t3과 t4 사이에서, 메모리 셀의 임계 전압은 Vver1을 넘어가게 되며, 이에 따라 메모리 셀은 비트라인 전압을 Vinhibit로 올림으로써 추가의 프로그래밍이 금지된다.
검증에 실패한 메모리 셀들의 추정된 개수가 제한치 미만일 때 프로그래밍을 중지하는 것과 관련하여 상기 설명한 기술은, 도 26A-C 및 도 27A-C와 관련하여 설명한 거친/정교 프로그래밍(또는 다른 타입의 거친/정교 프로그래밍)에 대해 이용될 수 있다. 검증에 실패한 메모리 셀들의 개수를 추정하는 데에 이용되는 중간 값은 Vver2가 될 수 있다.
일 실시예는 제 1 세트의 비휘발성 저장 소자들을 제 1 목표 상태(target condition)로 프로그램하기 위해, 상기 제 1 세트의 상기 비휘발성 저장 소자들에 프로그래밍 신호를 인가하는 단계; 중간 상태(intermediate condition)에 아직 도달하지 않은 제 1 세트의 비휘발성 저장 소자들의 양이 비교 값(compare value) 미만인지를 결정하는 단계; 및 중간 상태에 아직 도달하지 않은 제 1 세트의 비휘발성 저장 소자들의 양이 비교 값 미만인 것으로 결정되는 것에 응답하여, 상기 제 1 세트의 비휘발성 저장 소자들의 프로그래밍을 끝내는 단계를 포함한다. 중간 상태는 제 1 목표 상태와 다르다.
일 실시예는 제 1 세트의 비휘발성 저장 소자들 및 이러한 제 1 세트의 비휘발성 저장 소자들과 통신하는 하나 이상의 관리 회로들을 포함한다. 이러한 하나 이상의 관리 회로들은 제 1 세트의 비휘발성 저장 소자들을 제 1 목표 상태로 프로그램하기 위해, 상기 제 1 세트의 상기 비휘발성 저장 소자들에 대해 프로그래밍 프로세스를 수행한다. 이러한 프로그래밍 프로세스는, 하나 이상의 관리 회로들이 제 1 세트의 비휘발성 저장 소자들에게 프로그래밍 신호를 인가하고, 제 1 세트의 비휘발성 저장 소자들이 제 1 목표 상태에 도달했는 지를 검증하는 것을 포함한다. 하나 이상의 관리 회로들은 프로그래밍 프로세스 동안 중간 상태에 아직 도달하지 않은 제 1 세트의 비휘발성 저장 소자들의 개수를 결정한다. 중간 상태는 제 1 목표 상태와 다르다. 하나 이상의 관리 회로들은, 중간 상태에 아직 도달하지 않은 제 1 세트의 비휘발성 저장 소자들의 개수가 비교 값 미만인 것으로 결정되는 것에 응답하여, 상기 제 1 세트의 비휘발성 저장 소자들에 대한 프로그래밍을 끝낸다.
일 실시예는 다수의 비휘발성 저장 소자들을 다른 목표 상태들로 동시에 프로그램하기 위해 이러한 비휘발성 저장 소자들에게 프로그래밍 신호를 인가하는 단계; 비휘발성 저장 소자들이 자신들의 각각의 목표 상태들에 도달했는 지를 검증하는 단계; 가장 높은 목표 상태에 대하여 중간 상태에 아직 도달하지 않은 제 1 서브세트의 비휘발성 저장 소자들을 카운트하는 단계; 및 제 1 서브세트의 비휘발성 저장 소자들의 소정 개수 미만이 아직 중간 상태에 도달하지 않은 것으로 카운트되고, 다른 목표 상태들의 나머지 목표 상태들에 대해 의도된 나머지 비휘발성 저장 소자들이 충분히 프로그램된 것으로 결정되는 것에 응답하여, 비휘발성 저장 소자들의 프로그래밍을 끝내는 단계를 포함한다. 가장 높은 목표 상태에 도달한 비휘발성 저장 소자들은 중간 상태를 통과한다. 다른 목표 상태들은 가장 낮은 목표 상태 및 가장 높은 목표 상태를 포함한다. 프로그래밍 신호는 펄스들의 세트를 포함한다. 다수의 비휘발성 저장 소자들은 가장 높은 목표 상태로 프로그램되고 있는 제 1 서브세트의 비휘발성 저장 소자들을 포함한다. 검증은 펄스들 사이에서 하나 이상의 검증 프로세스들을 수행하는 것을 포함한다.
일 실시예는 다수의 비휘발성 저장 소자들을 다른 목표 상태들로 프로그램하기 위해, 이러한 다수의 비휘발성 저장 소자들에 프로그래밍 신호를 인가하는 단계를 포함한다. 프로그래밍 신호는 펄스들의 세트를 포함한다. 다른 목표 상태들은 제 1 목표 상태 및 제 2 목표 상태를 포함한다. 다수의 비휘발성 저장 소자들은 제 1 목표 상태로 프로그램되는 비휘발성 저장 소자들의 제 1 서브세트 및 제 2 목표 상태로 프로그램되는 비휘발성 저장 소자들의 제 2 서브세트를 포함한다. 이러한 방법은 비휘발성 저장 소자들의 제 2 서브세트가 제 2 목표 상태에 충분히 도달했는 지를 검증하는 단계; 비휘발성 저장 소자들의 제 2 서브세트가 제 2 목표 상태에 충분히 도달한 것으로 결정되는 것에 응답하여, 비휘발성 저장 소자들의 제 1 서브세트에 하나 이상의 펄스들중 소정 개수를 인가하는 단계; 및 비휘발성 저장 소자들의 제 1 서브세트에 하나 이상의 펄스들중 소정 개수를 인가하는 것에 응답하여, 그리고 이러한 소정 개수를 인가한 후, 비휘발성 저장 소자들의 제 1 서브세트의 프로그래밍을 끝내는 단계를 더 포함한다.
상기 본 발명의 상세한 설명은 예시와 설명의 목적을 위해 제공되었다. 이러한 설명은 본 발명을 속속들이 규명한 것으로서, 또는 본 발명을 개시된 정확한 형태로 한정하는 것으로서 의도되지 않는다. 상기 교시에 비추어 많은 수정들 및 변형들이 가능하다. 설명된 실시예들은 본 발명의 사상과 실제적인 응용예를 최상으로 설명함으로써, 당업자가 다양한 실시예들에서 그리고 고려되는 특정의 용도에 적합한 다양한 변형들에 대해 본 발명을 최상으로 이용할 수 있도록 선택된 것이다. 본 발명의 범위는 첨부된 청구범위에 의해서만 규정된다.

Claims (16)

  1. 비휘발성 저장 소자를 프로그램하는 방법으로서,
    제 1 세트의 비휘발성 저장 소자들을 제 1 목표 상태(target condition)로 프로그램하기 위해, 상기 제 1 세트의 비휘발성 저장 소자들에 프로그래밍 신호를 인가하는 단계;
    중간 상태(intermediate condition)에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들의 양이 비교 값(compare value) 미만인지를 결정하는 단계, -여기서, 상기 중간 상태는 상기 제 1 목표 상태와 다름- ; 및
    상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들의 양이 상기 비교 값 미만인 것으로 결정되는 것에 응답하여, 상기 제 1 세트의 비휘발성 저장 소자들의 프로그래밍을 끝내는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장 소자를 프로그램하는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 세트의 비휘발성 저장 소자들이 상기 제 1 목표 상태에 도달했는 지를 검증하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장 소자를 프로그램하는 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들의 양이 비교 값 미만인지를 결정하는 단계는:
    상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들을 카운트하는 단계; 및
    상기 비휘발성 저장 소자들의 수를 소정 값과 비교하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장 소자를 프로그램하는 방법.
  4. 제 1 항, 제 2 항 또는 제 3 항에 있어서,
    상기 제 1 목표 상태는 임계 전압 범위이며; 그리고
    상기 중간 상태는 상기 제 1 목표 상태 보다 더 낮은 전압 레벨인 임계 전압 레벨인 것을 특징으로 하는 비휘발성 저장 소자를 프로그램하는 방법.
  5. 제 1 항, 제 2 항, 제 3 항 또는 제 4 항에 있어서,
    상기 제 1 세트의 비휘발성 저장 소자들은 다중 상태 플래시 메모리 디바이스들인 것을 특징으로 하는 비휘발성 저장 소자를 프로그램하는 방법.
  6. 제 1 항 내지 제 5 항 중의 어느 한 항에 있어서,
    상기 제 1 세트의 비휘발성 저장 소자들은 임계 전압 범위들의 세트와 관련되고, 상기 제 1 목표 상태는 상기 임계 전압 범위들의 세트 중에서 가장 높은 임계 전압 범위이며, 그리고 상기 중간 상태는 상기 가장 높은 임계 전압 범위 보다 낮은 임계 전압 값인 것을 특징으로 하는 비휘발성 저장 소자를 프로그램하는 방법.
  7. 제 2 항 내지 제 6 항 중의 어느 한 항에 있어서,
    상기 프로그래밍 신호는 펄스들의 세트를 포함하고;
    상기 검증 단계는 상기 펄스들 사이에서 하나 이상의 검증 프로세스들을 수행하는 것을 포함하며; 그리고
    상기 결정 단계는 상기 펄스들중 적어도 일부 동안 상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들을 카운트하는 것을 포함하는, 비휘발성 저장 소자를 프로그램하는 방법.
  8. 제 1 항 내지 제 7 항 중의 어느 한 항에 있어서,
    상기 프로그래밍 신호를 인가하는 단계는 다수의 비휘발성 저장 소자들을 다른 목표 상태들로 동시에 프로그램하고, 상기 다른 목표 상태들은 가장 낮은 목표 상태 및 가장 높은 목표 상태를 포함하고, 상기 다수의 비휘발성 저장 소자들은 상기 제 1 세트의 비휘발성 저장 소자들을 포함하며, 그리고 상기 제 1 목표 상태는 상기 가장 높은 목표 상태인 것을 특징으로 하는 비휘발성 저장 소자를 프로그램하는 방법.
  9. 제 2 항 내지 제 6 항 또는 제 8 항 중의 어느 한 항에 있어서,
    상기 프로그래밍 신호는 펄스들의 세트를 포함하고;
    상기 검증 단계는 상기 펄스들 사이에서 하나 이상의 검증 프로세스들을 수행하는 것을 포함하며; 그리고
    상기 결정 단계는 상기 펄스들 사이에서 상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들을 카운트하는 것을 포함하는, 비휘발성 저장 소자를 프로그램하는 방법.
  10. 제 1 항 내지 제 9 항 중의 어느 한 항에 있어서,
    상기 프로그래밍 신호는 펄스들의 세트를 포함하고;
    상기 제 1 세트의 비휘발성 저장 소자들은 데이터 상태들의 세트와 관련되고, 상기 제 1 목표 상태는 상기 데이터 상태들중 하나이고, 상기 중간 상태는 상기 데이터 상태들의 세트의 서로 다른 데이터 상태에 대한 검증 값이며;
    상기 방법은, 상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들의 양이 상기 비교 값 미만인 것으로 결정되는 것에 응답하여, 상기 제 1 세트의 비휘발성 저장 소자들에 하나 이상의 펄스들중 소정 개수를 인가하는 단계를 더 포함하며; 그리고
    상기 제 1 세트의 비휘발성 저장 소자들의 프로그래밍은, 상기 제 1 세트의 비휘발성 저장 소자들에 하나 이상의 펄스들중 소정 개수를 인가한 후에, 끝나는 것을 특징으로 하는 비휘발성 저장 소자를 프로그램하는 방법.
  11. 비휘발성 저장 장치로서,
    제 1 세트의 비휘발성 저장 소자들; 및
    상기 제 1 세트의 비휘발성 저장 소자들과 통신하는 하나 이상의 관리 회로들을 포함하며;
    상기 하나 이상의 관리 회로들은, 상기 제 1 세트의 비휘발성 저장 소자들을 제 1 목표 상태로 프로그램하기 위해, 상기 제 1 세트의 상기 비휘발성 저장 소자들에 대해 프로그래밍 프로세스를 수행하고; 상기 프로그래밍 프로세스는, 상기 하나 이상의 관리 회로들이 상기 제 1 세트의 비휘발성 저장 소자들에 프로그래밍 신호를 인가하고, 상기 제 1 세트의 비휘발성 저장 소자들이 상기 제 1 목표 상태에 도달했는 지를 검증하는 것을 포함하며; 상기 하나 이상의 관리 회로들은 상기 프로그래밍 프로세스 동안 상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들의 개수를 결정하고, 상기 중간 상태는 상기 제 1 목표 상태와 다르며; 상기 하나 이상의 관리 회로들은, 상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들의 개수가 비교 값 미만인 것으로 결정되는 것에 응답하여, 상기 제 1 세트의 비휘발성 저장 소자들에 대한 상기 프로그래밍 프로세스를 끝내는 것을 특징으로 하는 비휘발성 저장 장치.
  12. 제 11 항에 있어서,
    상기 프로그래밍 신호는 펄스들의 세트를 포함하며; 그리고
    상기 하나 이상의 관리 회로들은 상기 펄스들 사이에서 상기 검증을 수행하는 것을 특징으로 하는 비휘발성 저장 장치.
  13. 제 11 항 또는 제 12 항에 있어서,
    상기 제 1 세트의 비휘발성 저장 소자들은 다중 상태 플래시 메모리 디바이스들인 것을 특징으로 하는 비휘발성 저장 장치.
  14. 제 11 항, 제 12 항 또는 제 13 항에 있어서,
    제 2 세트의 비휘발성 저장 소자들, -상기 하나 이상의 관리 회로들은 상기 제 2 세트의 비휘발성 저장 소자들을 제 2 목표 상태로 프로그램함- ; 및
    제 3 세트의 비휘발성 저장 소자들, -상기 하나 이상의 관리 회로들은 상기 제 3 세트의 비휘발성 저장 소자들을 제 3 목표 상태로 프로그램함- ;
    을 더 포함하며,
    상기 제 1 목표 상태는, 상기 제 2 목표 상태 및 상기 제 3 목표 상태와 비교하여 맨 끝(most extreme)의 목표 상태인 것을 특징으로 하는 비휘발성 저장 장치.
  15. 제 11 항, 제 12 항 또는 제 13 항에 있어서,
    제 2 세트의 비휘발성 저장 소자들, -상기 하나 이상의 관리 회로들은 상기 제 1 세트의 비휘발성 저장 소자들을 상기 제 1 목표 상태로 프로그램하는 것과 동시에, 상기 제 2 세트의 비휘발성 저장 소자들을 제 2 목표 상태로 프로그램함- ; 및
    제 3 세트의 비휘발성 저장 소자들, -상기 하나 이상의 관리 회로들은 상기 제 1 세트의 비휘발성 저장 소자들을 상기 제 1 목표 상태로 프로그램하는 것과 동시에, 상기 제 3 세트의 비휘발성 저장 소자들을 제 3 목표 상태로 프로그램함- ;
    을 더 포함하는 것을 특징으로 하는 비휘발성 저장 장치.
  16. 제 11 항, 제 12 항 또는 제 13 항에 있어서,
    상기 프로그래밍 신호는 펄스들의 세트를 포함하고;
    상기 제 1 세트의 비휘발성 저장 소자들은 데이터 상태들의 세트와 관련되고, 상기 제 1 목표 상태는 상기 데이터 상태들중 하나이고, 상기 중간 상태는 상기 데이터 상태들의 세트의 서로 다른 데이터 상태에 대한 검증 값이며;
    상기 하나 이상의 관리 회로들은, 상기 중간 상태에 아직 도달하지 않은 상기 제 1 세트의 비휘발성 저장 소자들의 양이 상기 비교 값 미만인 것으로 결정되는 것에 응답하여, 상기 제 1 세트의 비휘발성 저장 소자들에 하나 이상의 펄스들중 소정 개수를 인가하며; 그리고
    상기 제 1 세트의 비휘발성 저장 소자들의 프로그래밍은, 상기 제 1 세트의 비휘발성 저장 소자들에 상기 하나 이상의 펄스들중 소정 개수를 인가한 후에, 끝나는 것을 특징으로 하는 비휘발성 저장 장치.
KR1020117031554A 2009-06-26 2010-06-08 비휘발성 저장 소자에 대한 프로그래밍 완료의 검출 KR101688603B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/492,421 US8054691B2 (en) 2009-06-26 2009-06-26 Detecting the completion of programming for non-volatile storage
US12/492,421 2009-06-26
PCT/US2010/037846 WO2010151428A1 (en) 2009-06-26 2010-06-08 Detecting the completion of programming for non-volatile storage

Publications (2)

Publication Number Publication Date
KR20120039562A true KR20120039562A (ko) 2012-04-25
KR101688603B1 KR101688603B1 (ko) 2016-12-22

Family

ID=42668336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117031554A KR101688603B1 (ko) 2009-06-26 2010-06-08 비휘발성 저장 소자에 대한 프로그래밍 완료의 검출

Country Status (7)

Country Link
US (4) US8054691B2 (ko)
EP (1) EP2446442A1 (ko)
JP (1) JP2012531694A (ko)
KR (1) KR101688603B1 (ko)
CN (1) CN102483953B (ko)
TW (1) TW201104681A (ko)
WO (1) WO2010151428A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120039539A (ko) * 2009-06-24 2012-04-25 샌디스크 테크놀로지스, 인코포레이티드 고유 임계 전압 분포 탐지에 의한 메모리의 프로그램 디스터브 예측
KR20140134838A (ko) * 2013-05-15 2014-11-25 현대모비스 주식회사 메모리 덤프 파일 생성 및 복제 장치와 그 동작 방법
KR20160145797A (ko) * 2014-06-25 2016-12-20 인텔 코포레이션 크로스-포인트 메모리에서의 가열기로서의 열 디스터브
KR20210000308A (ko) * 2018-05-21 2021-01-04 웨스턴 디지털 테크놀로지스, 인코포레이티드 셀 프로빙에 의한 고장 예측
KR20210105794A (ko) * 2020-02-19 2021-08-27 샌디스크 테크놀로지스 엘엘씨 프로그램 검증 스킵을 갖는 비휘발성 메모리

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage
US8174895B2 (en) * 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
US8531888B2 (en) * 2010-07-07 2013-09-10 Marvell World Trade Ltd. Determining optimal reference voltages for progressive reads in flash memory systems
JP5330425B2 (ja) * 2011-02-09 2013-10-30 株式会社東芝 不揮発性半導体メモリ
JP2012198973A (ja) * 2011-03-23 2012-10-18 Toshiba Corp 不揮発性半導体記憶装置
US8913437B2 (en) 2011-12-15 2014-12-16 Marvell World Trade Ltd. Inter-cell interference cancellation
US9299459B2 (en) 2012-09-07 2016-03-29 Macronix International Co., Ltd. Method and apparatus of measuring error correction data for memory
KR20150051056A (ko) 2013-11-01 2015-05-11 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
US9627046B2 (en) 2015-03-02 2017-04-18 Sandisk Technologies Llc Programming techniques for non-volatile memories with charge trapping layers
US11437094B2 (en) 2015-08-13 2022-09-06 Samsung Electronics Co., Ltd. Nonvolatile memory device, storage device, and operation method of storage device
KR102291456B1 (ko) * 2015-08-13 2021-08-23 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법 및 프로그램 검증 방법
CN106910520B (zh) * 2015-12-22 2021-05-28 北京忆芯科技有限公司 存储装置的写入方法、存储装置、存储控制器和存储系统
CN105654989B (zh) * 2016-03-07 2020-04-24 北京兆易创新科技股份有限公司 Nand flash闪存中状态码的验证方法及装置
US9595343B1 (en) 2016-06-05 2017-03-14 Apple Inc. Early prediction of failure in programming a nonvolatile memory
KR102452994B1 (ko) * 2016-09-06 2022-10-12 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
KR20180062158A (ko) 2016-11-30 2018-06-08 삼성전자주식회사 루프 상태 정보를 생성하는 불휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US10249382B2 (en) * 2017-08-22 2019-04-02 Sandisk Technologies Llc Determination of fast to program word lines in non-volatile memory
US10134474B1 (en) 2017-10-20 2018-11-20 Sandisk Technologies Llc Independent state completion for each plane during flash memory programming
KR20200091712A (ko) * 2019-01-23 2020-07-31 에스케이하이닉스 주식회사 반도체 메모리 장치, 컨트롤러 및 이들의 동작 방법
CN113764026A (zh) * 2020-04-08 2021-12-07 长江存储科技有限责任公司 一种三维存储器的编程操作方法、存储器装置
US11657883B2 (en) * 2021-07-22 2023-05-23 Western Digital Technologies, Inc. Isolating problematic memory planes to avoid neighbor plan disturb
KR20230098657A (ko) * 2021-08-27 2023-07-04 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 장치 및 그 프로그램 동작

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998028745A1 (en) * 1996-12-20 1998-07-02 Intel Corporation Nonvolatile writeable memory with fast programming capability
US6418059B1 (en) * 2000-06-26 2002-07-09 Intel Corporation Method and apparatus for non-volatile memory bit sequence program controller
WO2005041206A2 (en) * 2003-10-29 2005-05-06 Saifun Semiconductors Ltd. Method, system and circuit for programming a non-volatile memory array
WO2006138413A1 (en) * 2005-06-15 2006-12-28 Micron Technology, Inc. Selective slow programming convergence in a flash memory device

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6781895B1 (en) * 1991-12-19 2004-08-24 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device and memory system using the same
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5867429A (en) 1997-11-19 1999-02-02 Sandisk Corporation High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates
JP2000173289A (ja) 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
JP4323707B2 (ja) 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
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
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
DE60230592D1 (de) 2002-05-21 2009-02-12 St Microelectronics Srl Selbstreparaturverfahren für nichtflüchtige Speicheranordnung mit Lösch-/Programmierfehlerdetektion, und nichtflüchtige Speicheranordnung dafür
US7327619B2 (en) 2002-09-24 2008-02-05 Sandisk Corporation Reference sense amplifier for non-volatile memory
US7046568B2 (en) 2002-09-24 2006-05-16 Sandisk Corporation Memory sensing circuit and method for low voltage operation
US7196931B2 (en) 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
US6657891B1 (en) 2002-11-29 2003-12-02 Kabushiki Kaisha Toshiba Semiconductor memory device for storing multivalued data
US7073103B2 (en) 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US6859397B2 (en) 2003-03-05 2005-02-22 Sandisk Corporation Source side self boosting technique for non-volatile memory
JP4256198B2 (ja) 2003-04-22 2009-04-22 株式会社東芝 データ記憶システム
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US6917542B2 (en) * 2003-07-29 2005-07-12 Sandisk Corporation Detecting over programmed memory
US7046555B2 (en) * 2003-09-17 2006-05-16 Sandisk Corporation Methods for identifying non-volatile memory elements with poor subthreshold slope or weak transconductance
EP1538525A1 (en) 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
US6888758B1 (en) 2004-01-21 2005-05-03 Sandisk Corporation Programming non-volatile memory
US20050213393A1 (en) 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate
KR100572332B1 (ko) * 2004-10-26 2006-04-18 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 프로그램 방법
JP4261462B2 (ja) 2004-11-05 2009-04-30 株式会社東芝 不揮発性メモリシステム
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US20060140007A1 (en) 2004-12-29 2006-06-29 Raul-Adrian Cernea Non-volatile memory and method with shared processing for an aggregate of read/write circuits
US7339835B1 (en) * 2005-02-14 2008-03-04 National Semiconductor Corporation Non-volatile memory structure and erase method with floating gate voltage control
US7196928B2 (en) 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
US7295478B2 (en) 2005-05-12 2007-11-13 Sandisk Corporation Selective application of program inhibit schemes in non-volatile memory
US7810017B2 (en) 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
US7779334B2 (en) 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US7304893B1 (en) 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7440319B2 (en) 2006-11-27 2008-10-21 Sandisk Corporation Apparatus with segmented bitscan for verification of programming
US7545681B2 (en) 2006-11-27 2009-06-09 Sandisk Corporation Segmented bitscan for verification of programming
US7616500B2 (en) 2007-02-20 2009-11-10 Sandisk Corporation Non-volatile storage apparatus with multiple pass write sequence
US7904793B2 (en) 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998028745A1 (en) * 1996-12-20 1998-07-02 Intel Corporation Nonvolatile writeable memory with fast programming capability
US6418059B1 (en) * 2000-06-26 2002-07-09 Intel Corporation Method and apparatus for non-volatile memory bit sequence program controller
WO2005041206A2 (en) * 2003-10-29 2005-05-06 Saifun Semiconductors Ltd. Method, system and circuit for programming a non-volatile memory array
WO2006138413A1 (en) * 2005-06-15 2006-12-28 Micron Technology, Inc. Selective slow programming convergence in a flash memory device

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120039539A (ko) * 2009-06-24 2012-04-25 샌디스크 테크놀로지스, 인코포레이티드 고유 임계 전압 분포 탐지에 의한 메모리의 프로그램 디스터브 예측
KR20140134838A (ko) * 2013-05-15 2014-11-25 현대모비스 주식회사 메모리 덤프 파일 생성 및 복제 장치와 그 동작 방법
KR20160145797A (ko) * 2014-06-25 2016-12-20 인텔 코포레이션 크로스-포인트 메모리에서의 가열기로서의 열 디스터브
KR20210000308A (ko) * 2018-05-21 2021-01-04 웨스턴 디지털 테크놀로지스, 인코포레이티드 셀 프로빙에 의한 고장 예측
KR20210105794A (ko) * 2020-02-19 2021-08-27 샌디스크 테크놀로지스 엘엘씨 프로그램 검증 스킵을 갖는 비휘발성 메모리

Also Published As

Publication number Publication date
WO2010151428A1 (en) 2010-12-29
TW201104681A (en) 2011-02-01
KR101688603B1 (ko) 2016-12-22
JP2012531694A (ja) 2012-12-10
US20130016566A1 (en) 2013-01-17
USRE45603E1 (en) 2015-07-07
EP2446442A1 (en) 2012-05-02
US8416626B2 (en) 2013-04-09
US8605513B2 (en) 2013-12-10
CN102483953A (zh) 2012-05-30
US20120033494A1 (en) 2012-02-09
US8054691B2 (en) 2011-11-08
CN102483953B (zh) 2015-06-24
US20100329004A1 (en) 2010-12-30

Similar Documents

Publication Publication Date Title
KR101688603B1 (ko) 비휘발성 저장 소자에 대한 프로그래밍 완료의 검출
EP2513906B1 (en) Programming non-volatile storage with fast bit detection and verify skip
EP2467854B1 (en) Selective memory cell program and erase
KR101736414B1 (ko) 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍
KR101805229B1 (ko) 동기화된 커플링을 이용한 비휘발성 저장소자의 프로그래밍
KR101502104B1 (ko) 프로그래밍 동안에 간섭의 영향을 감소시키는 방법
EP2351041B1 (en) Programming non-volatile memory with high resolution variable initial programming pulse
EP2718934B1 (en) Intelligent shifting of read pass voltages for non-volatile storage
KR101569862B1 (ko) 비휘발성 저장 소자를 위한 소거-검증 프로세스
EP2780912B1 (en) Non-volatile storage with data recovery
EP2161723A1 (en) Read operation for non-volatile storage with compensation for floating gate coupling
WO2014137651A1 (en) Non-volatile storage with process that reduces read disturb on end wordlines
WO2014039459A1 (en) Non-volatile storage with joint hard bit and soft bit reading
EP1946323B1 (en) Method for programming of multi-state non-volatile memory using smart verify
KR101428767B1 (ko) 비휘발성 저장소자의 판독 동작 동안에 파워 소모의 감소
WO2008083131A2 (en) Method for programming with initial programming voltage based on trial
WO2014120943A1 (en) Adaptive initial program voltage for non-volatile memory
WO2014011627A1 (en) Programming method to tighten threshold voltage width with avoiding program disturb
KR20090098844A (ko) 프로그래밍의 검증을 위한 세그먼트화된 비트스캔
WO2013138199A1 (en) Non-volatile storage with read process that reduces disturb

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

Payment date: 20191008

Year of fee payment: 4