KR101699917B1 - 패스트 비트 감지 및 확인 생략을 구비한 비휘발성 저장소의 프로그래밍 - Google Patents

패스트 비트 감지 및 확인 생략을 구비한 비휘발성 저장소의 프로그래밍 Download PDF

Info

Publication number
KR101699917B1
KR101699917B1 KR1020127018078A KR20127018078A KR101699917B1 KR 101699917 B1 KR101699917 B1 KR 101699917B1 KR 1020127018078 A KR1020127018078 A KR 1020127018078A KR 20127018078 A KR20127018078 A KR 20127018078A KR 101699917 B1 KR101699917 B1 KR 101699917B1
Authority
KR
South Korea
Prior art keywords
volatile storage
storage elements
programmed
targets
programming
Prior art date
Application number
KR1020127018078A
Other languages
English (en)
Other versions
KR20120120221A (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 KR20120120221A publication Critical patent/KR20120120221A/ko
Application granted granted Critical
Publication of KR101699917B1 publication Critical patent/KR101699917B1/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
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Read Only Memory (AREA)

Abstract

한 세트의 비휘발성 저장 요소(non-volatile storage element)들은 데이터를 저장하기 위하여 프로그래밍 프로세스를 거치게 된다. 프로그래밍 프로세스 중에는, 상기 비휘발성 저장 요소들이 그들의 타겟에 도달하였는지를 결정하기 위하여 확인 작업(verification operation)이 수행된다. 제1 세트의 하나 이상 타겟들로 프로그램되는 비휘발성 저장 요소들은, 그들이 그들 각자의 타겟에 도달하였는지를 결정하기 위하여 확인 과정을 거치고, 만약 그들이 그들의 타겟에 도달한 것으로 결정되는 경우에는 더 이상 프로그램되지 않도록 락-아웃(lock-out)된다. 제2 세트의 하나 이상 타겟들로 프로그램되는 비휘발성 저장 요소들은 패스트 프로그래밍(fast programming)된 비트들의 개수를 결정하기 위하여 테스트된다. 특정 타겟에 대한 패스트 비트들의 개수가 일정 문턱값보다 크면, 상기 특정 타겟으로 프로그램되는 비휘발성 저장 요소들에 대하여 상기 프로그래밍이 종료된다.

Description

패스트 비트 감지 및 확인 생략을 구비한 비휘발성 저장소의 프로그래밍{PROGRAMMING NON-VOLATILE STORAGE WITH FAST BIT DETECTION AND VERIFY SKIP}
본 발명은 비휘발성 저장소(non-volatile storage)를 위한 기술에 관한 것이다.
반도체 메모리 장치들은 다양한 전자 장치들에서 더욱 널리 사용되고 있다. 예를 들어, 비휘발성 반도체 메모리는 휴대전화들, 디지털 카메라들, PDA(personal digital assistant)들, 휴대용 컴퓨팅 장치들, 비휴대용 컴퓨팅 장치들, 및 기타 장치들에서 사용되고 있다. EEPROM(electrical erasable programmable read only memory) 및 플래시 메모리(flash memory)는 가장 널리 쓰이는 비휘발성 반도체 메모리들 중의 하나이다.
EEPROM 및 플래시 메모리 둘 모두는, 반도체 기판의 채널 영역 위에, 상기 채널 영역(channel region)으로부터 절연되도록 위치한 플로팅 게이트(floating gate)를 활용한다. 상기 플로팅 게이트는 소스와 드레인 영역(source and drain regions)들 사이에 배치된다. 콘트롤 게이트(control gate)는 상기 플로팅 게이트 위에, 상기 플로팅 게이트로부터 절연되도록 제공된다. 트랜지스터의 문턱 전압(threshold voltage)은 상기 플로팅 게이트 위에 유지되는 최소 전압에 의하여 제어된다. 즉, 트랜지스터의 소스 및 드레인 사이에서 전도를 가능하게 하기 위하여 트랜지스터가 턴 온(turn on)되기 전에 상기 콘트롤 게이트에 인가되어야 하는 최소 전압은 상기 플로팅 게이트에서의 차지 레벨(charge level)에 의하여 제어된다.
EEPROM 또는 플래시 메모리 장치를 프로그래밍할 때, 통상적으로 상기 콘트롤 게이트에 프로그램 전압(program voltage)이 인가되고 비트 라인은 접지된다(grounded). 채널로부터의 전자들은 플로팅 게이트 속으로 주입된다(injected). 상기 플로팅 게이트 안에 전자들이 축적되면, 상기 플로팅 게이트는 음의 전하(negatively charged)를 띠게 되고 메모리 셀의 문턱 전압은 증가되어, 상기 메모리 셀이 프로그래밍된 상태에 있게 된다. 프로그래밍에 관한 더 많은 정보는 "Source Side Self Boosting Technique For Non-Volatile Memory"라는 제목의 미국특허 제6,859,397호 및 "Detecting Over Programmed Memory"라는 제목의 미국특허 제6,917,542호에서 얻을 수 있는데, 상기 두 개의 특허들은 본 명세서에서 그 전체로서 참조되고 있다.
일부 EEPROM 및 플래시 메모리 장치들은 두 가지 범위의 전하를 저장하도록 사용되는 플로팅 게이트를 구비하고, 따라서 데이터 "1" 및 데이터 "0"에 대응하는 두 가지 상태(state)들, 즉 삭제된 상태 및 프로그램된 상태 사이에서 프로그래밍/삭제될 수 있다. 이러한 장치는 바이너리 또는 투-스테이트(two-state) 장치라고 불린다.
멀티-스테이트 플래시 메모리 셀은 다수의 개별적이고(distinct) 허용된(allowed) 문턱 전압 범위(threshold voltage range)들을 식별함으로써 구현된다. 상기 개별 문턱 전압 범위 각각은 데이터 비트들 세트를 위한 사전결정된 하나의 값에 대응된다. 메모리 셀 안에 프로그램된 데이터와 상기 메모리 셀의 문턱 전압 범위 사이의 구체적인 관계는, 상기 메모리 셀들을 위하여 적용된 인코딩 방식(encoding scheme)에 의존적이다. 예를 들어, 본 명세서에서 그 전체로서 참조되고 있는 미국특허 제6,222,762호 및 미국특허출원 제2004/0255090호는 멀티-스테이트 플래시 메모리 셀들을 위한 다양한 데이터 인코딩 방식들을 설명하고 있다.
일부 실시예들에서, 상기 콘트롤 게이트에 인가된 프로그램 전압은, 사전결정된 스텝 크기(예를 들어 0.2v, 0.3v, 0.4v, 또는 기타)로 각각의 연속되는 펄스마다 크기가 증가되는, 일련의 펄스들을 포함한다. 상기 펄스들 사이에서 메모리 시스템은 개별적인 메모리 셀들이 그들 각각의 타겟 문턱 전압 범위(target threshold voltage range)에 도달하였는지를 확인한다. 그들의 타겟 문턱 전압 범위에 도달한 메모리 셀들은 향후의 프로그래밍(예를 들어 비트 라인 전압을 Vdd로 증가시킴)을 방지하기 위하여 락-아웃(locked out)된다. 모든 메모리 셀들이 그들의 타겟 문턱 전압 범위에 도달하면, 프로그래밍이 완료된다.
멀티-스테이트 비휘발성 저장소에 있어서, 일부 시스템들은 프로그래밍 펄스들 사이에 메모리 셀들이 각각 허용된 문턱 전압 범위로 프로그래밍되고 있는지를 확인한다. 더 많은 문턱 전압 범위들이 허용될 수록, 상기 확인을 수행하는 데 걸리는 시간은 더 길어진다. 더 길어진 확인 시간은 프로그래밍 프로세스(programming process)를 느리게 한다.
한 세트의 비휘발성 저장 요소들은 데이터를 저장하기 위하여 프로그래밍 프로세스를 거치게 된다. 프로그래밍 프로세스 중에는, 상기 비휘발성 저장 요소들이 그들의 타겟에 도달하였는지를 결정하기 위하여 하나 이상의 확인 작업(verify operation)들이 수행된다. 제1 세트의 하나 이상 타겟들로 프로그램되는 비휘발성 저장 요소들은, 그들이 그들의 타겟에 도달하였는지를 결정하기 위하여 확인되고(verified), 만약 그들이 그들의 타겟에 도달한 것으로 결정되면 더 이상의 프로그래밍을 방지하기 위하여 락-아웃 된다. 제2 세트의 하나 이상 타겟들로 프로그램되는 비휘발성 저장 요소들은, 패스트 프로그래밍 비트(fast programming bit)들의 개수를 결정하기 위하여 테스트된다. 특정 타겟을 위한 패스트 비트(fast bit)들의 개수가 일정 문턱값보다 큰 경우에는, 상기 특정 타겟으로 프로그램되고 있던 비휘발성 저장 요소들에 대하여 프로그래밍이 중단된다.
도 1은 NAND 스트링(string)의 평면도이다.
도 2는 NAND 스트링의 동등한(equivalent) 회로 다이어그램이다.
도 3은 비휘발성 메모리 시스템의 블록 다이어그램이다.
도 4는 센스 블록의 한 실시예를 묘사하는 블록 다이어그램이다.
도 5a는 메모리 어레이(memory array)의 한 실시예를 묘사하는 블록 다이어그램이다.
도 5b는 하나의 데이터 페이지를 도시하는 도면이다.
도 6a는 문턱 전압 분포들의 세트의 한 예를 묘사하고 비휘발성 메모리를 프로그래밍하기 위한 프로세스를 설명하는 도면이다.
도 6b는 세 개의 프로그래밍 펄스들 및 상기 프로그래밍 펄스들 사이에 가해진(applied) 확인 펄스(verify pulse)들을 도시하는 도면이다.
도 7a 내지 도 7e는 다양한 문턱 전압 분포들을 보여주고 비휘발성 메모리를 프로그래밍하기 위한 프로세스를 설명하는 도면이다.
도 8a, 도 8b, 및 도 8c는 거친/미세 프로그래밍 방식의 한 실시예를 도시하는 도면들이다.
도 9a, 도 9b, 및 도 9c는 거친/미세 프로그래밍 방식의 한 실시예를 도시하는 도면들이다.
도 9는 하나의 실시예에서 비휘발성 메모리를 프로그래밍하는 순서를 설명하는 표이다.
도 10은 비휘발성 메모리를 작동시키기 위한 프로세스의 한 실시예를 설명하는 흐름도이다.
도 11은 비휘발성 메모리를 프로그래밍하기 위한 프로세스의 한 실시예를 설명하는 흐름도이다.
도 12a는 프로그래밍 중에 비휘발성 메모리를 확인하기 위한 프로세스의 한 실시예를 설명하는 흐름도이다.
도 12b는 세 개의 프로그래밍 펄스들과 상기 프로그래밍 펄스들 사이에 가해진 확인 펄스들을 보여주는 도면이다.
도 13은 프로그래밍 중에 비휘발성 메모리를 확인하기 위한 프로세스의 한 실시예를 설명하는 흐름도이다.
도 14는 프로그래밍 중에 비휘발성 메모리를 확인하기 위한 프로세스의 한 실시예를 설명하는 흐름도이다.
도 15a는 프로그래밍 중에 비휘발성 메모리를 확인하기 위한 프로세스의 한 실시예를 설명하는 흐름도이다.
도 15b는 프로그래밍 펄스들과 상기 프로그래밍 펄스들 사이에 가해진 확인 펄스들을 보여주는 도면이다.
도 16a는 비휘발성 메모리를 프로그래밍하기 위한 프로세스의 한 실시예를 설명하는 흐름도이다.
도 16b는 프로그래밍 펄스들과 상기 프로그래밍 펄스들 사이에 가해진 확인 펄스들을 보여주는 도면이다.
본 명세서에서 설명된 기술을 구현할 수 있는 비휘발성 저장 시스템의 한 예는 NAND 구조를 사용하는 플래시 메모리인데, 이는 두 개의 셀렉트 게이트(select gate)들 사이에 끼어있는 다수의 트랜지스터들을 직렬로 배열하는 것을 포함한다. 상기 직렬 트랜지스터들 및 셀렉트 게이트들은 NAND 스트링(NAND string)이라고 불린다. 도 2는 그에 따른 동등한 회로를 보여준다. 도 1 및 도 2에 도시된 NAND 스트링은 (드레인 측) 셀렉트 게이트(120)와 (소스 측) 셀렉트 게이트(122) 사이에 끼워져있고 직렬로 연결된 네 개의 트랜지스터들(100, 102, 104 및 106)을 포함한다. 상기 셀렉트 게이트(120)는 비트 라인 컨택트(bit line contact)(126)를 통하여 상기 NAND 스트링을 비트 라인에 연결한다. 상기 셀렉트 게이트(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 스트링 내의 네 개의 메모리 셀들을 도시하고 있지만, 네 개의 메모리 셀들을 사용하는 상기 실시예는 오직 예시로서 제공된 것이다. 하나의 NAND 스트링은 네 개 미만의 메모리 셀들 또는 다섯 개 이상의 메모리 셀들을 구비할 수 있다. 예를 들어, 일부 NAND 스트링들은 여덟 개의 메모리 셀들, 16 개의 메모리 셀들, 64 개의 메모리 셀들, 128 개의 메모리 셀들, 등을 포함한다. 본 발명의 내용은 NAND 스트링 내 메모리 셀들의 특정 개수에 제한되는 것이 아니다. 하나의 실시예는 66 개의 메모리 셀들을 가진 NAND 스트링들을 이용하는데, 그 중 64 개의 메모리 셀들은 데이터를 저장하는 데 사용되고, 두 개의 메모리 셀들은 데이터를 저장하는 데 사용되지 않아서 더미 메모리 셀(dummy memory cell)들이라고 불린다.
NAND 구조를 이용하는 플래시 메모리 시스템을 위한 통상적인 아키텍쳐(architecture)는 여러 개의 NAND 스트링들을 포함한다. 각각의 NAND 스트링은, 셀렉트 라인(SGS)에 의하여 제어되는 소스 셀렉트 게이트에 의하여 공통의 소스 라인(source line)에 연결되고, 셀렉트 라인(SGD)에 의하여 제어되는 드레인 셀렉트 게이트에 의하여 연계된 비트 라인에 연결된다. 각각의 비트 라인과 비트 라인 컨택트(bit line contact)를 통하여 상기 비트 라인에 연결된 대응되는 NAND 스트링(들)은 메모리 셀들 어레이의 열을 구성한다. 비트 라인들은 다수의 NAND 스트링들에 공유된다. 통상적으로, 상기 비트 라인들은 워드 라인들에 수직인 방향으로 NAND 스트링들 위를 지나가고, 센스 증폭기(sense amplifier)에 연결되어 있다.
NAND 타입 플래시 메모리들과 그들의 작동에 대한 관련된 실시예들은 다음의 미국 특허/특허출원들에 제공되어 있는데, 이러한 특허/특허출원들은 그 전체로서 본 명세서에서 참조되고 있다: 미국특허 제5,570,315호; 미국특허 제5,774,397호; 미국특허 제6,046,935호; 미국특허 제6,456,528호; 및 미국특허출원 US2003/0002348호.
또한, NAND 플래시 메모리에 추가로, 다른 종류의 비휘발성 저장 장치들도 본 명세서에서 설명된 새로운 기술을 구현하도록 사용될 수 있다. 예를 들어, 기본적으로 질화물 레이어 안에 전하의 트래핑(trapping of charge)을 사용하는 메모리 셀인, TANOS 구조(실리콘 기판 위에 TaN-Al2O3-SiN-SiO2의 적층된 레이어(stacked layer)로 구성됨)도 역시 본 명세서에서 설명된 기술과 함께 이용될 수 있다. 플래시 EEPROM 시스템들에서 유용한 다른 종류의 메모리 셀은, 전하를 비휘발성 방식으로 저장하기 위하여 전도성 플로팅 게이트(conductive floating gate) 대신에 비전도성 유전체 재료(non-conductive dielectric material)를 활용한다. 그러한 셀은, "A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device"라는 제목의 챈(Chan et al.)의 논문(IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93-95)에 설명되어 있다. 산화 규소(silicon oxide), 질화 규소(silicon nitride), 산화 규소로 형성된 3 개 레이어 유전체("ONO")가 도전성(conductive) 콘트롤 게이트와 메모리 셀 채널 위 반도전성(semi-conductive) 기판 표면의 사이에 끼워진다. 상기 셀은, 셀 채널로부터 전자들을 질화물 속으로 주입함으로써 프로그램되는데, 상기 질화물 속에서 상기 전자들이 제한된 영역에 갇히고 저장된다. 이렇게 저장된 전하는 이후에, 감지될 수 있는 방식으로 상기 셀의 채널 부분의 문턱 전압을 변화시킨다. 상기 셀은 상기 질화물 속으로 핫 홀들을 주입함으로써 삭제된다. 또한 노자키(Nozaki et al.)의 논문, "A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application" (IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, April 1991, pp. 497-501)을 참조하면, 분리된 셀렉트 트랜지스터를 형성하도록 메모리 셀 채널의 일부 위로 도핑된 폴리실리콘 게이트(doped polysilicon gate)가 연장되는, 스플릿-게이트 구성(split-gate configuration) 안의 유사한 셀을 설명하고 있다.
다른 예는 에이탄(Eitan et al.)의 논문, "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," (IEEE Electron Device Letters, Vol. 21, no. 11, November 2000, pp. 543-545)에 설명되어 있다. 하나의 ONO 유전체 레이어가 소스 및 드레인 디퓨전(source and drain diffusions)들 사이의 채널을 가로질러 연장된다. 하나의 데이터 비트를 위한 전하가 드레인에 인접한 유전체 레이어 안에 로컬라이즈되고(localized), 다른 데이터 비트를 위한 전하가 소스에 인접한 유전체 레이어 안에 로컬라이즈된다. 미국특허 제5,768,192호 및 제6,011,725호는, 두 개의 이산화 규소(silicon dioxide) 레이어들 사이에 끼워진 트래핑 유전체(trapping dielectric)를 구비한 비활성 메모리 셀을 개시하고 있다. 멀티-스테이트 데이터 저장소는 유전체 안에 있는 공간적으로 분리된 전하 저장 영역(charge storage region)들의 바이너리 상태들을 분리하여 판독함으로서 구현된다. 또한 다른 종류의 비휘발성 메모리 기술들이 사용될 수 있다.
도 3은 하나의 페이지의 메모리 셀들(예를 들어, NAND 멀티-스테이트 플래시 메모리)을 병렬적으로 판독하고 프로그래밍하기 위한 읽기/쓰기 회로를 구비한 메모리 장치(210)를 도시하고 있다. 메모리 장치(210)는 하나 이상의 메모리 다이 또는 칩들(212)을 포함할 수 있다. 메모리 다이(212)는 메모리 셀들의 어레이(200)(2차원 또는 3차원), 제어 회로(220), 및 읽기/쓰기 회로들(230A 및 230B)을 포함한다. 하나의 실시예에서, 다양한 주변기기 회로(peripheral circuit)들에 의한 메모리 어레이(200)로의 접근은 시스템적인 방식으로 상기 어레이의 마주보는 측부들 위에 구현되어, 측부들 각각에서의 액세스 라인(access line)들 및 회로들의 밀도가 절반으로 줄어들게 된다. 상기 읽기/쓰기 회로들(230A 및 230B)은, 한 페이지의 메모리 셀들이 병렬적으로 판독 또는 프로그래밍되는 것을 가능하게 하는, 다수의 센스 블록들(300)을 포함한다. 상기 메모리 어레이(200)는 행 디코더들(240A 및 240B)을 통하는 워드 라인들과 열 디코더들(242A 및 242B)을 통하는 비트 라인들에 의하여 주소지정될 수 있다(addressable). 통상적인 실시예에서는, 제어기(244)가 상기 하나 이상의 메모리 다이(212)와 동일한 메모리 장치(210) 안에 포함된다. 명령들 및 데이터는, 호스트와 상기 제어기(244) 사이에서는 라인(232)를 통하여, 그리고 상기 제어기와 상기 하나 이상의 메모리 다이(212) 사이에서는 라인(234)를 통하여 전달된다.
제어 회로(control circuitry)(220)는 상기 읽기/쓰기 회로들(230A 및 230B)과 협력하여 상기 메모리 어레이(200) 위에서의 메모리 작업들을 수행한다. 상기 제어 회로(220)는 스테이트 머신(222), 온칩 주소 디코더(on-chip address decoder)(224) 및 전력 제어 모듈(226)을 포함한다. 상기 스테이트 머신(222)은 메모리 작업들에 대한 칩 수준의 제어를 제공한다. 상기 온칩 주소 디코더(224)는, 호스트 또는 메모리 제어기에 의하여 사용되는 주소와 디코더들(240A, 240B, 242A, 및 242B)에 의하여 사용되는 하드웨어 주소 사이의 주소 인터페이스(address interface)를 제공한다. 상기 전력 제어 모듈(226)은 메모리 작업들 중에 상기 워드 라인들 및 비트 라인들에 공급되는 전력 및 전압을 제어한다. 하나의 실시예에서, 상기 전력 제어 모듈(226)은 공급 전압보다 더 큰 전압을 생성할 수 있는 하나 이상의 전하 펌프(charge pump)들을 포함한다. 상기 제어 회로(220), 전력 제어 모듈(226), 디코더(224), 스테이트 머신(222), 디코더들(240A/B 및 242A/B), 읽기/쓰기 회로들(230A/B) 및 제어기(244)는, 집단적으로 또는 개별적으로, 하나 이상의 관리 회로(managing circuit)들이라고 칭해질 수 있다.
도 4는, 센스 모듈(480)이라고 칭해지는 코어 부위(core portion)와 공통 부위(common portion)(490)로 구획된, 개별적인 센스 블록(300)의 블록 다이어그램이다. 하나의 실시예에서는, 각각의 비트 라인을 위하여 하나의 별개의 센스 모듈(480)이 존재하고, 다수의 센스 모듈(480)들 집합을 위한 하나의 공통 부위(490)가 존재한다. 하나의 실시예에서는, 하나의 센스 블록은 하나의 공통 부위(490) 및 8 개의 센스 모듈(480)들을 포함한다. 한 그룹 안의 상기 센스 모듈 각각은 데이터 버스(472)를 통하여 연계된 공통 부위와 통신한다. 더욱 자세한 내용을 위해서는, 본 명세서에서 그 전체로서 참조하고 있는, 미국특허출원 제2006/0140007호를 참조할 수 있다.
상기 센스 모듈(480)은 연결된 비트 라인에서의 도전되는 전류가 일정 문턱값 수준을 넘는지 또는 그 아래인지를 결정하는 센스 회로(470)를 포함한다. 일부 실시예들에서, 상기 센스 모듈(480)은 흔히 센스 증폭기(sense amplifier)라고 칭해지는 회로를 포함한다. 또한 센스 모듈(480)은 연결된 비트 라인 위에 전압 조건(voltage condition)을 설정하는 데 사용되는 비트 라인 래치(bit line latch)(482)를 포함한다. 예를 들어, 상기 비트 라인 래치(482)에 래칭된(latched) 일정 상태는, 상기 연결된 비트 라인으로 하여금 프로그램 금지(program inhibit)로 지정된 상태(예를 들어, Vdd)로 읽혀지도록(pulled) 한다.
상기 공통 부위(490)는 프로세서(492), 한 세트의 데이터 래치들(494), 그리고 상기 한 세트의 데이터 래치들(494)과 데이터 버스(420) 사이에 결합된 입/출력 인터페이스(496)를 포함한다. 상기 프로세서(492)는 계산을 수행한다. 예를 들어, 상기 프로세서의 기능들 중 하나는, 센스된(sensed) 메모리 셀에 저장된 데이터를 결정하고 정해진 값들을 상기 데이터 래치 세트에 저장하는 것이다. 상기 데이터 래치 세트(494)는 읽기 작업 동안에 상기 프로세서(492)에 의하여 결정된 데이터 비트들을 저장하는 데 사용된다. 또한 상기 데이터 래치 세트는 프로그램 작업 동안에 데이터 버스(420)로부터 입수된(imported) 데이터 비트들을 저장하는 데 사용된다. 상기 입수된 데이터 비트들은 메모리에 프로그래밍되어야 하는 쓰기 데이터를 나타낸다. 상기 입/출력 인터페이스(496)는 상기 데이터 래치들(494)과 상기 데이터 버스(420) 사이의 인터페이스를 제공한다.
읽기 또는 센싱(sensing) 도중에, 시스템의 작동은, 주소지정된 셀로의 서로 다른 콘트롤 게이트 전압들의 공급을 제어하는 스테이트 머신(222)의 제어 아래 있게 된다. 상기 메모리에 의해 지원되는 다양한 메모리 상태들에 대응되는 다양한 일정 제어 게이트 전압들을 단계적으로 거치는 과정에서, 상기 센스 모듈(480)은 상기 전압들 중 하나에서 트립(trip)될 수 있고, 하나의 출력이 상기 센스 모듈(480)로부터 버스(472)를 통하여 프로세서(492)에 제공된다. 이때에, 상기 프로세서(492)는, 상기 센스 모듈의 트립핑 이벤트(tripping event)들 및 입력 라인(input line)(493)들을 통한 스테이트 머신으로부터의 인가된 제어 게이트 전압에 대한 정보를 고려함으로써, 결과적인 메모리 상태를 결정한다. 이후 상기 메모리 상태를 위한 바이너리 인코딩(binary encoding)을 계산하고, 결과적인 데이터 비트들을 데이터 래치들(494) 안에 저장한다. 상기 코어 부위의 다른 실시예에서는, 비트 라인 래치(482)가 두 가지 기능들, 즉 상기 센스 모듈(480)의 출력을 래칭하기 위한 래치로서의 기능과 상기한 바와 같은 비트 라인 래치로서의 기능을 수행한다.
일부 실시예들은 다수의 프로세서(492)들을 포함하는 것도 예상할 수 있다. 하나의 실시예에서, 각각의 프로세서(492)는 하나의 출력 라인을 포함하여, 상기 출력 라인들 각각이 함께 OR-연결되도록 한다. 일부 실시예들에서는, 상기 출력 라인들이 OR-연결 라인에 연결되기 전에 도치(invert)된다. 이러한 구성은, 언제 프로그래밍 프로세스가 완료되었는지를 결정하는 프로그램 확인 프로세스(program verification process) 도중에 빠른 결정을 가능하게 하는데, 이는 OR-연결 라인을 수신하는 스테이트 머신은 프로그램되는 모든 비트들이 언제 원하는 수준에 도달하였는지를 결정할 수 있기 때문이다. 예를 들어, 각각의 비트가 각자의 원하는 수준에 도달되면, 해당 비트를 위하여 논리 0이 OR-연결 라인에 전달된다(또는 데이터 1로 도치된다). 모든 비트들이 데이터 0(또는 도치된 데이터 1)을 출력할 때, 스테이트 머신은 프로그래밍 프로세스를 종료해야 함을 알게 된다. 각각의 프로세서가 8 개의 센스 모듈들과 통신하는 실시예들에서는, 상기 스테이트 머신은 (일부 실시예들에서) OR-연결 라인을 8 회 읽어야 하거나, 또는 상기 스테이트 머신이 OR-연결 라인을 오직 한 번만 읽도록 연계된 비트 라인들의 결과들을 축적하기 위한 로직이 상기 프로세서(492)에 추가될 필요가 있다. 여러 개의 센스 모듈들을 구비한 일부 실시예들에서, 상기 여러 센스 모듈들의 OR-연결 라인들은 N 센스 모듈들로 구성된 그룹들로 만들어질 수 있고, 상기 그룹들은 다시 하나의 바이너리 트리(binary tree)를 형성하도록 그룹지어질 수 있다.
프로그램(program) 또는 확인(verify) 도중에, 프로그램되는 데이터는 데이터 버스(420)로부터의 상기 데이터 래치 세트(494) 안에 저장된다. 스테이트 머신의 제어 아래에서, 프로그램 작업은, 메모리 셀들이 동시에 프로그램될 수 있도록, 주소지정된 메모리 셀들의 콘트롤 게이트들에 동시에 인가된 일련의 (증가하는 규모를 가진) 프로그래밍 전압 펄스들을 포함한다. 각각의 프로그래밍 펄스 뒤에는, 해당 메모리 셀이 원하는 상태로 프로그램되었는지를 결정하기 위하여 확인 펄스가 이어진다. 프로세서(492)는, 원하는 메모리 상태에 대하여 상대적으로, 상기 확인되는 메모리 상태를 감시한다. 만약 상기 두 상태들이 일치하면, 상기 프로세서(492)는 비트 라인 래치(482)를 설정하여 비트 라인으로 하여금 프로그램 금지로 지정된 상태로 읽혀지도록(pulled) 한다. 이는 상기 비트 라인과 결합된 메모리 셀이, 자신의 콘트롤 게이트에서 프로그래밍 펄스들에 노출되는 경우조차도, 더 이상 프로그래밍되는 것을 방지한다. 다른 실시예들에서는, 프로세서가 비트 라인 래치(482)를 먼저 로딩하고, 센스 회로가 확인 프로세스 도중에 그것을 금지 값으로 설정한다.
데이터 래치 스택(data latch stack)(494)은 센스 모듈에 대응되는 데이터 래치들의 스택을 포함한다. 하나의 실시예에서는, 센스 모듈(480) 당 세 개(또는 네 개 또는 임의의 개수)의 데이터 래치들이 존재한다. 일부 실시예들에서(필수적이지는 않지만), 상기 데이터 래치들은, 저장된 병렬의 데이터가 데이터 버스(420)를 위하여 직렬로 변환되고 또 그 반대로도 변환될 수 있도록, 시프트 레지스터(shift register)로서 구현된다. 바람직한 하나의 실시예에서, m 개의 메모리 셀들의 읽기/쓰기 블록에 대응하는 모든 데이터 래치들은, 직렬 전송에 의해 데이터의 블록이 입력 또는 출력이 될 수 있도록, 함께 연결되어 블록 시프트 레지스터(block shift register)를 형성할 수 있다. 특히, 마치 전체 읽기/쓰기 블록을 위한 하나의 시프트 레지스터의 일부인 것처럼 데이터 래치 세트 각각이 순차적으로 데이터 버스로 또는 데이터 버스로부터 데이터를 전송시킬 수 있도록, 읽기/쓰기 모듈들의 뱅크(bank)가 구성된다.
비휘발성 저장 장치들의 다양한 실시예들에 대한 구조 및/또는 작동들에 관련된 추가적인 정보는, (1) 2004년 3월 25일 발간된 미국특허출원 제2004/0057287호 "Non-Volatile Memory And Method With Reduced Source Line Bias Errors"; (2) 2004년 6월 10일 발간된 미국특허출원 제2004/0109357호 "Non-Volatile Memory And Method with Improved Sensing"; (3) 미국특허출원 제2005/0169082호; (4) 2005년 4월 5일에 발명자 Jian Chen에 의하여 출원된 미국특허출원 제2006/0221692호 "Compensating for Coupling During Read Operations of Non-Volatile Memory"; (5) 2005년 12월 28일 발명자 Siu Lung Chan 및 Raul-Adrian Cernea에 의하여 출원된 미국특허출원 제2006/0158947호 "Reference Sense Amplifier For Non-Volatile Memory"에서 찾아볼 수 있다. 상기 다섯 개의 특허 문서들은 본 명세서에서 그 전체로서 참조되고 있다.
도 5a는 메모리 셀 어레이(200)의 예시적인 구조를 보여주는 도면이다. 하나의 실시예에서, 메모리 셀들의 어레이는 메모리 셀들로 이루어진 많은 수의 블록들로 나뉜다. 플래시 EEPROM 시스템들에서 흔히 그러하듯이, 블록은 삭제의 단위가 된다. 즉 각각의 블록은 함께 삭제되는 최소 개수의 메모리 셀들을 포함한다.
하나의 실시예로서, 1024 개의 블록들로 구획되어 있는, NAND 플래시 EEPROM이 도 5a에 도시되어 있다. 하지만, 1024 블록들보다 많거나 적은 개수도 사용될 수 있다. 이 실시예에서는, 각각의 블록에 비트 라인들 BL0, BL1, ... BL69,623에 대응되는 69,624 개의 열들이 존재한다. 하나의 실시예에서, 블록의 모든 비트 라인들은 읽기 및 프로그램 작업들 도중에 동시에 선택될 수 있다. 공통의 워드 라인을 따라 위치하고 임의의 비트 라인에 연결되어 있는 메모리 셀들은 동시에 프로그램될(읽혀질) 수 있다. 다른 실시예에서, 비트 라인들은 짝수 비트 라인들 및 홀수 비트 라인들로 나뉜다. 홀수/짝수 비트 라인 아키텍쳐에서는, 공통의 워드 라인을 따라 위치하고 홀수 비트 라인들에 연결된 메모리 셀들은 한 번에 프로그램될 수 있고, 공통의 워드 라인을 따라 위치하고 짝수 비트 라인들에 연결된 메모리 셀들은 다른 시간에 프로그램된다.
도 5a는 NAND 스트링을 형성하도록 직렬로 연결된 네 개의 메모리 셀들을 보여주고 있다. 비록 각각의 NAND 스트링에 포함되는 네 개의 셀들이 도시되어 있지만, 네 개보다 더 많거나 적은 개수도 사용될 수 있다(예를 들어, 16, 32, 64, 128, 또는 이외의 개수의 메모리 셀들이 하나의 NAND 스트링 위에 존재할 수 있다). 상기 NAND 스트링의 한쪽 단자(terminal)은 드레인 셀렉트 게이트(셀렉트 게이트 드레인 라인 SGD에 연결됨)를 통하여 대응되는 비트 라인에 연결되어 있고, 다른쪽 단자는 소스 셀렉트 게이트(셀렉트 게이트 소스 라인 SGS에 연결됨)를 통하여 소스 라인에 연결된다.
각각의 블록은 통상적으로 많은 수의 페이지들로 나뉜다. 페이지는 프로그래밍의 단위이다. 하나 이상의 데이터 페이지들이 통상적으로 메모리 셀들로 이루어진 하나의 열 안에 저장된다. 하나의 페이지는 하나 이상의 섹터(sector)들을 저장할 수 있다. 섹터는 사용자 데이터(user data) 및 오버헤드 데이터(overhead data)를 포함한다. 오버헤드 데이터는 통상적으로, 해당 섹터의 사용자 데이터로부터 계산된 에러 교정 코드(ECC: error correction code)를 포함한다. 제어기는 데이터가 어레이로 프로그래밍될 때 상기 ECC를 계산하고, 데이터가 해당 어레이로부터 읽혀질 때 상기 ECC를 확인한다. 일부 실시예들에서, 스테이트 머신, 제어기, 또는 다른 구성요소들이 ECC를 계산하고 확인할 수 있다. 일부 대안적인 예들에서는, 상기 ECC들 및 기타 오버헤드 데이터는, 관련된 사용자 데이터와는 서로 다른 페이지들, 또는 심지어 서로 다른 블록들 안에 저장된다. 사용자 데이터의 한 섹터는 통상적으로 512 바이트인데, 이는 자성 디스크 드라이브(magnetic disk drive)에서 하나의 섹터의 크기에 대응하는 것이다. 예를 들어 8 개에서부터 32, 64, 128 개 또는 그 이상의 개수에 이르는, 많은 수의 페이지들이 하나의 블록을 형성한다. 하나의 실시예에서, 한 블록의 각각의 워드 라인은 하나의 페이지와 연계된다. 다른 실시예에서, 한 블록의 각각의 워드 라인은 세 개의 페이지들과 연계된다. 다른 실시예들에서, 워드 라인들은 임의 개수의 페이지들과 연계될 수 있다.
도 5b는 하나의 페이지를 위한 데이터를 도시하고 있다. 페이지의 크기에 따라, 페이지는 여러 개의 섹터들을 포함한다. 각각의 섹터는 사용자 데이터, 에러 교정 코드(ECC), 및 헤더 정보를 포함한다.
멀티-스테이트 메모리 셀들을 활용하는 일부 메모리 시스템들에서는, 메모리 셀 안의 데이터 비트 각각이 서로 다른 페이지에 존재한다. 예를 들어, 만약 메모리 셀들의 에레이가 메모리 셀 당 세 개 비트의 데이터(8 가지 상태들 또는 데이터 레벨들)을 저장하는 경우, 각각의 메모리 셀은 세 개의 비트들 각각이 서로 다른 페이지 위에 존재하도록 세 개의 페이지들 안에 데이터를 저장한다. 따라서, 이러한 실시예에서의 블록 안에서, 각각의 워드 라인은 세 개의 페이지들 또는 3의 정수배(integer multiple)의 페이지들과 연계된다. 또한 다른 구성도 가능하다.
대용량 데이터 저장 장치들 및 저장 시스템들, 뿐만 아니라 데이터 통신 시스템에서 에러 교정 코딩(ECC)의 사용은 잘 알려져 있다. 본 발명의 기술분야에서 기본적인 것으로서, 에러 교정 코딩은 인코딩되는 "페이로드"(payload)(또는 원본 데이터) 데이터 비트들로부터 결정되거나 또는 계산되는 추가적인 비트들(흔히 패리티 비트들(parity bits), 코드 비트들(code bits), 체크섬 숫자들(checksum digits), ECC 비트들, 등으로 칭함)의 저장 또는 통신을 포함한다. 예를 들어, 에러 교정 코딩된 데이터를 메모리 자원 안에 저장하는 것은, 선택된 코드를 사용하여 실제 데이터와 추가적인 코드 비트들을 포함하도록 하나 이상의 코드 워드들을 인코딩하는 것을 포함한다. 저장된 데이터의 판독은, 상기 저장된 코드 워드들을 인코딩한 것과 동일한 코드에 따라, 저장된 코드 워드들을 디코딩하는 것을 포함한다. 상기 코드 비트들이 상기 코드 워드들의 실제 데이터 부분을 "과도하게 명시"(overspecify)하고 있기 때문에, 디코딩 후에 실제 데이터의 명확한 손실 없이도, 일정 개수의 에러 비트들이 용납될(tolerated) 수 있다.
많은 ECC 코딩 방식들이 본 발명의 기술분야에서 잘 알려져 있다. 이러한 통상적인 에러 교정 코드들은, 플래시(그리고 기타 비휘발성) 메모리들을 포함하는 대용량 메모리들에서 특히 유용한데, 이는, 상기 장치들이 소수의 프로그래밍 불가 또는 결함 있는 셀들을 사용하는 것을 가능하게 함으로써 상기 코딩 방식이 제공하는, 가공 수율(manufacturing yield) 및 장치 신뢰성(device reliability)에 있어서의 상당한 영향 때문이다. 물론, 수율의 개선과 코드 비트들을 저장하기 위한 추가적인 메모리 셀들의 제공(즉, 코드 레이트(code rate)) 비용 사이에는 트레이드오프(tradeoff)가 존재한다. 플래시 메모리 장치들을 위한 일부 ECC 코드들은 데이터 통신 응용프로그램들에서 사용되는 코드들(1/2보다 낮은 코드 레이트를 가질 수 있음)보다 더 높은 코드 레이트(즉, 데이터 비트들에 대하여 더 낮은 비율의 코드 비트들)를 갖는 경향이 있다.
일부 메모리 셀들은 상기 셀들 간의 가공 편차 때문에 프로그램 또는 삭제하기에 느리게 되는데, 이는 한 페이지 내의 셀들 간에 불균일한 마모 또는 다른 이류들로 인하여, 해당 셀들이 이전에 다른 셀들보다 더 낮은 문턱 전압로 삭제되었기 때문이다. 그리고 물론, 어떤 셀들은 전혀 프로그램되거나 삭제될 수 없게 되는데, 이는 결함 또는 다른 이유들로부터 기인한다. 추가적으로, 일부 메모리 셀들은 빠르게 프로그램되고 과도하게 프로그램되어서, 마찬가지로 에러를 일으키게 된다. 위에서 언급한 바와 같이, 에러 교정 코딩은, 메모리를 사용가능한 상태로 유지하면서도, 일정 개수의 불량 셀들을 용납할 수 있는 능력을 제공한다. 일부 응용프로그램들에서, 한 페이지의 데이터는 해당 페이지의 모든 메모리 셀들이 원하는 프로그램된 상태인 것으로 확인될 때까지 반복적으로 프로그래밍 펄스들을 인가함으로써 프로그램된다. 일부 구현사례에서는, 충분히 프로그램되거나 삭제되지 않은 에러 메모리 셀들의 개수가 교정가능한 비트 개수보다 적은 경우에 프로그래밍 또는 삭제 펄스들의 시퀀스를 중단함으로써, 프로그래밍 및 삭제 시간이 단축될 수 있다.
통상적으로 에러 교정은 섹터별로(on a sector-by-sector basis) 수행된다. 따라서, 각각의 섹터는 그 자신의 ECC 코드 세트를 구비하게 된다. 이러한 에러 교정은 간편하고 유용한데, 하나의 실시예에서, 섹터는 호스트 시스템으로의 그리고 호스트 시스템으로부터의 데이터 전송을 위한 바람직한 단위이기 때문이다.
성공적인 프로그래밍 프로세스의 완료(확인 포함) 후에, 메모리 셀들의 문턱 전압들은, 각 경우에 따라, 프로그램된 메모리 셀들을 위한 하나 이상의 문턱 전압 분포들 안에 있거나, 또는 삭제된 메모리 셀들을 위한 하나 이상의 문턱 전압 분포들 안에 있어야 한다. 도 6a는, 각각의 메모리 셀이 세 개 비트의 데이터를 저장하는 경우에, 메모리 셀 에레이를 위한 문턱 전압 분포들의 예를 도시하고 있다. 하지만, 다른 실시예들은 메모리 셀 당 세 개 비트의 데이터보다 더 많거나 더 적은 개수를 사용할 수도 있다(예를 들어, 메모리 셀 당 세 개 비트의 데이터).
도 6a의 실시예에서, 각각의 메모리 셀은 세 개 비트의 데이터를 저장한다; 그러므로, 여덟 개의 유효한 문턱 전압 분포들, 또는 데이터 상태들: S0, S1, S2, S3, S4, S5, S6, 및 S7이 존재한다. 하나의 실시예에서, 데이터 상태 S0는 0 볼트 미만이고 데이터 상태 S1 내지 S7은 0 볼트를 초과한다. 다른 실시예들에서는, 여덟 개의 데이터 상태들 모두가 0 볼트를 초과하거나, 또는 다른 구성으로 구현될 수 있다. 하나의 실시예에서, S0를 위한 문턱 전압 분포는 S1 내지 S7의 경우보다 더 넓다. 하나의 실시예에서, S0는 삭제된 메모리 셀들을 위한 것이다. 데이터는 S0으로부터 S1 내지 S7로 프로그램된다.
데이터 상태 각각은 메모리 셀 안에 저장되는 세 개의 데이터 비트들을 위한 특유한 하나의 값에 대응한다. 하나의 실시예에서, S0=111, S1=110, S2=101, S3=100, S4=011, S5=010, S6=001, 그리고 S7=000이다. 또한, 상태 S0 내지 S7에 대한 데이터의 다른 매핑도 가능하다. 상기 메모리 셀에 프로그램되는 데이터와 해당 셀의 문턱 전압 수준들 사이의 구체적인 관계는, 셀들을 위하여 적용된 데이터 인코딩 방식에 의존한다. 예를 들어, 본 명세서에서 그 전체로서 참조되고 있는, 미국특허 제6,222,762호와 2003년 6월 13일자 출원된 미국특허출원 제2004/0255090호 "Tracking Cells For A Memory System"는 멀티-스테이트 플래시 메모리 셀들을 위한 다양한 데이터 인코딩 방식들을 설명하고 있다. 하나의 실시예에서, 데이터 값들은 그레이 코드(Gray code) 할당 방식을 이용하여 문턱 전압 범위들에 할당되어, 만약 플로팅 게이트의 문턱 전압이 잘못하여 그 인접한 문턱 전압 분포로 넘어가게 되는 경우에도, 오직 하나의 비트만이 영향을 받도록 구성된다. 하지만, 다른 실시예들에서는 그레이 코드가 사용되지 않을 수 있다.
하나의 실시예에서, 하나의 메모리 셀 안에 저장된 모든 데이터 비트들은 동일한 논리적 페이지에 저장된다. 다른 실시예들에서는, 하나의 메모리 셀 안에 저장된 데이터 비트 각각이 서로 다른 논리적 페이지들에 대응된다. 따라서, 데이터의 세 개 비트들을 저장하는 하나의 메모리 셀은 제1 페이지 안의 데이터, 제2 페이지 안의 데이터, 그리고 제3 페이지 안의 데이터를 포함하게 된다. 일부 실시예들에서, 동일 워드 라인에 연결된 모든 메모리 셀들은 동일한 세 개의 데이터 페이지들 안에 데이터를 저장한다. 일부 실시예들에서, 하나의 워드 라인에 연결된 메모리 셀들은 (예를 들어, 홀수 및 짝수 비트 라인들에 의하여, 또는 다른 배열에 의하여) 서로 다른 페이지들의 세트들로 그룹을 이루도록 구성될 수 있다.
일부 장치들에서, 메모리 셀들은 상태 S0로 삭제된다. 상태 S0로부터, 메모리 셀들은 임의의 상태들 S1 내지 S7으로 프로그램될 수 있다. 풀 시퀀스 프로그래밍이라고 알려진 하나의 실시예에서, 메모리 셀들은 삭제된 상태 S0으로부터 직접 임의의 프로그램된 상태들인 S1 내지 S7으로 프로그램될 수 있다. 예를 들어, 프로그램되어야 하는 일군의 메모리 셀들은, 해당 군의 모든 메모리 셀들이 상태 S0에 있도록 먼저 삭제될 수 있다. 해당 군의 일부 메모리 셀들이 상태 S0에서 상태 S1으로 프로그램되는 동안에, 다른 메모리 셀들은 상태 S0에서 상태 S2, 상태 S0에서 상태 S3, 상태 S0에서 상태 S4, 상태 S0에서 상태 S5, 상태 S0에서 상태 S6, 그리고 상태 S0에서 상태 S7으로 프로그램된다. 풀 시퀀스 프로그래밍은 도 6a의 7 개의 휘어진 화살들에 의하여 시각적으로 도시되어 있다.
도 6a는 한 세트의 확인 타겟 레벨(verify target level)들 Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, 및 Vv7을 보여주고 있다. 이러한 확인 레벨들은 프로그래밍 프로세스 도중에 비교 레벨(comparison level)들로서 사용된다. 예를 들어, 메모리 셀들을 상태 S1으로 프로그래밍할 때, 시스템은 메모리 셀들의 문턱 전압들이 Vv1에 도달하였는지를 확인한다. 만약 메모리 셀의 문턱 전압이 Vv1에 도달하지 않았으면, 해당 메모리 셀에 대하여 그 셀의 문턱 전압이 Vv1 이상이 될 때까지 프로그래밍이 계속된다. 만약 메모리 셀의 문턱 전압이 Vv1에 도달하였으면, 해당 메모리 셀에 대하여 프로그래밍이 중지된다. 확인 타겟 레벨 Vv2는 상태 S2로 프로그램되는 메모리 셀을 위하여 사용된다. 확인 타겟 레벨 Vv3는 상태 S3로 프로그램되는 메모리 셀을 위하여 사용된다. 확인 타겟 레벨 Vv4는 상태 S4로 프로그램되는 메모리 셀을 위하여 사용된다. 확인 타겟 레벨 Vv5는 상태 S5로 프로그램되는 메모리 셀을 위하여 사용된다. 확인 타겟 레벨 Vv6는 상태 S6로 프로그램되는 메모리 셀을 위하여 사용된다. 확인 타겟 레벨 Vv7는 상태 S7로 프로그램되는 메모리 셀을 위하여 사용된다.
또한 도 6b는 한 세트의 읽기 비교 레벨(read compare level)들 Vr1, Vr2, Vr3, Vr4, Vr5, Vr6, Vr7을 보여주고 있다. 이러한 읽기 비교 레벨들은 읽기 프로세스 도중에 비교 레벨(comparison level)들로서 사용된다. 상기 메모리 셀들의 제어 게이트들에 각각 분리되어 인가된 상기 읽기 비교 레벨들 Vr1, Vr2, Vr3, Vr4, Vr5, Vr6, Vr7 에 대한 반응으로 상기 메모리 셀들이 켜졌는지 또는 꺼진 채로 남아있는지를 테스트함으로써, 시스템은 해당 메모리 셀들이 어떤 상태(state)를 위한 데이터를 저장하고 있는지를 결정할 수 있다.
일반적으로, 확인 작업들 및 읽기 작업들 도중에는, 해당 메모리 셀의 문턱 전압이 일정 레벨에 도달하였는지를 결정하기 위하여, 선택된 워드 라인이 일정 전압, 즉 각각의 읽기 작업을 위하여 지정된 일정 수준의 전압(예를 들어, 도 6a의 읽기 비교 레벨들인 Vr1, Vr2, Vr3, Vr4, Vr5, Vr6, 및 Vr7) 또는 확인 작업을 위하여 지정된 일정 수준의 전압(예를 들어, 도 6a의 확인 타겟 레벨들인 Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, 및 Vv7)에 연결된다. 상기 워드 라인에 전압을 인가한 후에, 상기 워드 라인에 인가된 전압에 대한 반응으로서 해당 메모리 셀이 켜졌는지를 결정하기 위하여, 해당 메모리 셀의 도전 전류(conduction current)가 측정된다. 만약 상기 도전 전류가 특정 값보다 큰 것으로 측정되면, 상기 메모리 셀은 켜진 것으로, 그리고 상기 워드 라인에 인가된 전압은 상기 메모리 셀의 문턱 전압보다 큰 것으로 추정된다. 만약 도전 전류가 상기 특정 값보다 큰 것으로 측정되지 않는다면, 상기 메모리 셀은 켜지지 않았고 상기 워드 라인에 인가된 전압은 상기 메모리 셀의 문턱 전압보다 크지 않은 것으로 추정된다.
읽기 또는 확인 작업 도중에 메모리 셀의 도전 전류를 측정하는 많은 방법들이 존재한다. 하나의 실시예에서는, 센스 증폭기 안에 있는 전용 커패시터(dedicated capacitor)를 방전(discharge) 또는 충전(charge)하는 속도에 의하여 메모리 셀의 도전 전류가 측정된다. 다른 실시예에서는, 선택된 메모리 셀의 도전 전류가 상기 메모리 셀을 포함하는 NAND 스트링으로 하여금 대응되는 비트 라인을 방전하도록 허용(또는 허용하는 것을 실패)하게 된다. 이렇게 상기 비트 라인이 방전되었는지의 여부를 확인하기 위하여 일정 시간 후에는 상기 비트 라인에서의 전압이 측정된다. 본 명세서에서 설명되는 기술은 확인/읽기를 위하여 본 발명의 기술분야에 알려진 서로 다른 방법들에서 사용될 수 있다는 점을 주지할 필요가 있다. 확인/읽기에 관한 더 많은 정보는 본 발명에서 그 전체로서 참조되고 있는 다음과 같은 특허 문서들: 즉, (1) 미국특허출원 공보 제2004/0057287호; (2) 미국특허출원 공보 제2004/0109357호; (3) 미국특허출원 공개 공보 제2005/0169082호 및 (4) 미국특허출원 공보 제2006/0221690호 문서들에서 찾아볼 수 있다. 위에서 설명한 읽기 및 확인 작업들은 본 발명의 기술분야에서 알려진 기법들에 따라 수행된다. 따라서, 본 발명의 기술분야에서 통상의 기술자에게 있어서, 많은 상세적인 내용들은 변화할 수 있다. 본 발명의 기술분야에서 알려진 다른 읽기 및 확인 기법들도 역시 사용될 수 있다.
일부 실시예들에서, 콘트롤 게이트에 인가된 프로그램 전압은, 각각의 연속된 펄스들이 일정한 스텝 크기(예를 들어, 0.2v, 0.3v, 0.4v, 또는 기타)로 크기가 증가하는, 일련의 펄스들을 포함할 수 있다. 상기 펄스들 사이에서, 일부 메모리 시스템들은 개별적인 메모리 셀들이 그들 각각의 타겟 문턱 전압 범위들에 도달하였는지를 확인한다. 예를 들어, 도 6b는 공통의 워드 라인에 연결된 다수의 메모리 셀들의 콘트롤 게이트들에 인가되는 신호의 일부를 도시하고 있다. 도 6b는 프로그래밍 펄스들(526, 528 및 530)과 함께, 상기 프로그래밍 펄스들 사이에 있는 한 세트의 확인 펄스들을 보여준다. 하나의 실시예에서 풀 시퀀스 프로그래밍을 수행하는 경우에, 프로그래밍 펄스들 사이의 확인 펄스들은 문턱 전압 분포(데이터 상태들) S1 내지 S7 각각에 대하여 테스트를 수행한다. 그러므로, 도 6b는 확인 타겟 레벨들 Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, 및 Vv7에 대응되는 크기를 가진 7 개의 확인 펄스들을 보여주고 있다. 일부 실시예들에서는, 확인 작업이 필요하지 않거나 중복되기 때문에, 하나 이상의 확인 작업들이 생략된다(또 그에 따라 하나 이상의 확인 펄스들이 생략된다). 예를 들어, 도 6에 따라 프로그램되는 메모리 셀들 중 어느 것도 Vv2에 도달하는 것으로 확인되지 않는다면, Vv7에서 확인할 이유가 존재하지 않는다. 하나 이상의 상태들에 대하여 확인을 생략하는 지능형 확인 기법(intelligent verification scheme)들에 관한 더 많은 정보는, 본 명세서에서 그 전체로서 참조되고 있는 다음과 같은 문서들: 즉, 미국특허 제7,073,103호; 미국특허 제7,224,614호; 미국특허 제7,310,255호; 미국특허 제7,301,817호; 미국특허출원 제2004/0109362호; 및 미국특허출원 제2009/0147573호에서 찾아볼 수 있다.
도 6a는, 동일한 워드 라인에 연결된 모든 메모리 셀들이 하나의 단계(phase) 동안에 동시에 프로그램되는, 하나의 단계를 포함하는 프로그래밍 프로세스를 보여준다. 도 7은 다단계 프로그래밍 접근방식을 도시하고 있다. 본 실시예에서, 프로그래밍 프로세스는 세 개의 단계들을 포함한다. 프로그래밍 전에는, 도 7a에 보인 것처럼, 공통의 워드 라인에 연결된 모든 메모리 셀들이 삭제된 문턱 전압 분포(E) 상태에 있도록, 메모리 셀들이 삭제된다. 프로그래밍의 제1 단계 중에는, 타겟들이 데이터 상태 S4, S5, S6, 또는 S7인 메모리 셀들이 중간 상태 IM으로 프로그램된다. 데이터 상태 S0, S1, S2, 또는 S3를 타겟으로 하는 메모리 셀들은 삭제된 문턱 전압 분포(E)에 남아있게 된다. 이러한 제1 단계는 도 7b에 시각적으로 도시되어 있다. 상기 중간 상태(IM)로 프로그램되는 메모리 셀들은 타겟 문턱 전압 VvIM으로 프로그램된다.
도 7a 내지 도 7e에 보인 프로그래밍 프로세스의 제2 단계 중에는, 삭제된 문턱 전압 분포(E)에 있는 메모리 셀들이 각자의 타겟 데이터 상태로 프로그램된다. 예를 들어, 데이터 상태 S3로 프로그램되는 메모리 셀들은 삭제된 문턱 전압 분포(E)에서 데이터 상태 S3로 프로그램되고, 데이터 상태 S2로 프로그램되는 메모리 셀들은 삭제된 문턱 전압 분포(E)에서 데이터 상태 S2로 프로그램되고, 데이터 상태 S1으로 프로그램되는 메모리 셀들은 삭제된 문턱 전압 분포(E)에서 데이터 상태 S1으로 프로그램되고, 그리고 데이터 상태 S0에 있어야 하는 메모리 셀들은 본 프로그래밍 프로세스의 제2 단계에서 프로그램되지 않는다. 따라서 삭제된 문턱 전압 분포(E)는 데이터 상태 S0가 된다. 또한, 상기 제2 단계 도중에, 메모리 셀들은 상기 중간 상태 IM으로부터 다양한 데이터 상태들 S4 내지 S7으로 프로그램된다. 예를 들어, 데이터 상태 S7으로 프로그램되는 메모리 셀들은 중간 상태 IM으로부터 데이터 상태 S7으로 프로그램되고, 데이터 상태 S6로 프로그램되는 메모리 셀들은 중간 상태 IM으로부터 데이터 상태 S6로 프로그램되고, 데이터 상태 S5로 프로그램되는 메모리 셀들은 중간 상태 IM으로부터 데이터 상태 S5로 프로그램되고, 데이터 상태 S4로 프로그램되는 메모리 셀들은 중간 상태 IM으로부터 데이터 상태 S4로 프로그램된다. 이러한 프로그래밍의 제2 단계는 도 7c에 도시되어 있다.
도 7c에서 볼 수 있는 것처럼, 상기 프로그래밍의 제2 단계의 끝에서, 데이터 상태 S1 내지 S7은 인접하는 데이터 상태들과 겹치게 된다. 예를 들어, 데이터 상태 S1은 데이터 상태 S2와 겹치고, 데이터 상태 S2는 데이터 상태 S1 및 S3와 겹치고, 데이터 상태 S3는 데이터 상태 S2 및 S4와 겹치고, 데이터 상태 S4는 데이터 상태 S3 및 S5와 겹치고, 데이터 상태 S5는 데이터 상태 S4 및 S6와 겹치고, 데이터 상태 S6는 데이터 상태 S5 및 S7과 겹친다.
프로그래밍의 제3 단계에서는, 상기 데이터 상태 S1 내지 S7 각각이, 서로 이웃하는 상태들과 더 이상 겹치지 않도록, 조여진다. 이는 도 7d에서 시각적으로 도시되어 있다. 3 단계 프로그래밍 프로세스의 최종 결과는 단계 7e에 나타나 있는데, 데이터 상태들 S0 내지 S7을 보여주고 있다. 일부 실시예들에서, 데이터 상태 S0는 데이터 상태 S1 내지 S7보다 폭이 더 넓다.
일부 실시예들에서, 데이터 상태 S4로 프로그램되는 메모리 셀들은 상기 제2 단계 중에 프로그램되지 않고, 따라서 중간 상태 IM으로 남아있게 된다. 상기 제3 프로그래밍 단계에서는 상기 메모리 셀들이 중간 상태 IM에서 S4로 프로그램된다. 다른 실시예들에서, 다른 상태로 프로그램되는 다른 메모리 셀들도 역시 상기 제2 단계 중에 중간 상태 IM에 남아있을 수 있다.
일부 프로그래밍 프로세스들에서, 거친(coarse)/정교한(fine) 프로그래밍 기법들이 통합될 수 있다. 예를 들어, 일정 타겟 조건(예를 들어, Vv2)으로 프로그램되는 메모리 셀들은 먼저, 타겟 조건 보다 약간 낮은 문턱 전압 조건에 대응되는 거친 조건(예를 들어, Vv2 보다 작은 약한 전압)으로 빠르게 프로그램된다. 이어서, 상기 메모리 셀들은 더 느린 방식으로(그리고 더 높은 정확도를 가지고) 타겟 조건으로 프로그램된다.
도 8a 내지 도 8c, 그리고 도 9a 내지 도 9c는 거친/정교 프로그래밍 기법의 한 실시예의 더욱 자세한 내용을 제공한다. 도 8a 및 도 9a는 콘트롤 게이트에 인가된 프로그래밍 펄스들(Vpgm)을 보여준다. 도 8b 및 도 9b는 프로그램되고 있는 메모리 셀들을 위한 비트 라인 전압을 보여준다. 도 8c 및 도 9c는 프로그램되고 있는 메모리 셀들의 문턱 전압을 보여준다. 본 실시예는 도면에서 Vver1 및 Vver2안에 나타낸 바와 같이, 두 개의 확인 레벨들을 사용한다. 최종 타겟 레벨(예를 들어, 도 6a의 확인 레벨들 Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, 및 Vv7)은 Vver1이다. 메모리 셀의 문턱 전압이 Vver1에 도달하면, 상기 메모리 셀에 대응되는 비트 라인에 금지 전압을 인가함으로써, 상기 메모리 셀은 더 이상의 프로그래밍이 금지된다. 예를 들어, 비트 라인 전압은 Vinhibit으로 높여질 수 있다(도 8b 및 도 9b 참조). 하나의 실시예에서, Vinhibit은 Vdd이다. 그러나, 메모리 셀이 타겟 값 Vver1에 가까운 (하지만 더 낮은) 문턱 전압에 도달하였을 때, 이어지는 프로그래밍 펄스들 도중의 메모리 셀로의 문턱 전압 시프트(shift)는 비트 라인에 일정 바이어스 전압(bias voltage), 통상적으로 0.3v 내지 0.8v의 전압을 인가함으로써 느려지게 된다. 문턱 전압 시프트의 비율은 다음 몇 차례의 프로그래밍 펄스들 도중에 감소되기 때문에, 최종 문턱 전압 분포는 그렇지 않은 경우보다 더 좁을 수 있다. 상기 방법을 구현하기 위하여, Vver1의 확인 레벨보다도 더 낮은 제2 확인 레벨이 사용된다. 상기 제2 확인 레벨은 Vver2로 도시되어 있다. 메모리 셀의 문턱 전압이 Vver2보다 크지만 Vver1보다는 낮은 때, 비트 라인 바이어스 Vs(도 9b 참조)를 인가함으로써 이어지는 프로그래밍 펄스들 동안 상기 메모리 셀로의 문턱 전압 시프트가 감소된다. 이러한 경우에, 각각의 상태를 위하여 두 번의 확인 작업이 필요하다는 것을 주지할 필요가 있다. 각각의 상태에 대하여 대응되는 Vver1에서의 한 번의 확인 작업과, 각각의 상태에 대하여 대응되는 Vver2에서의 한 번의 확인 작업이 그러하다. 이는 상기 메모리 셀들을 프로그램하는 데 필요한 총 시간을 증가시킬 수 있다. 그러나, 상기 프로세스를 빠르게 하기 위하여 더 큰 Vpgm 스텝 크기가 사용될 수도 있다.
도 8a, 도 8b, 및 도 8c는, 한 번의 프로그래밍 펄스에서 문턱 전압이 Vver2 및 Vver1을 지나치게되는, 메모리 셀의 거동(behavior)을 보여주고 있다. 예를 들어, 도 8c에서 문턱 전압은 t2 및 t3 사이에 Vver2 및 Vver1을 초과하는 것으로 도시되어있다. 따라서, t3 이전에, 상기 메모리 셀은 거친 단계에 있게 된다. t3 후에는, 상기 메모리 셀은 금지 모드 안에 있게 된다.
도 9a, 도 9b, 및 도 9c는 거친 단계 및 정교한 단계들에 모두 함께 진입하는 메모리 셀을 보여주고 있다. 상기 메모리 셀의 문턱 전압은 시간 t2 및 시간 t3 사이에서 Vver2를 넘어선다. t3 이전에, 상기 메모리 셀은 거친 단계에 있다. t3 후에는, 비트 라인 전압이 Vs로 증가된다; 따라서 상기 메모리 셀은 정교한 단계에 있게 된다. t3와 t4 사이에, 상기 메모리 셀의 문턱 전압는 Vver1을 넘어선다; 그러므로, 상기 메모리 셀은 비트 라인 전압을 Vinhibit으로 증가시킴으로써 더 이상의 프로그래밍이 금지된다.
하나의 실시예에서는, 상기 거친/정교한 프로그래밍 기법은, 도 7a 내지 도 7e의 다단계 프로그래밍 프로세스의 제3 단계를 위하여 사용되지만, 앞선 두 단계들을 위해서는 사용되지 않는다. 다른 실시예들에서는, 상기 거친/정교한 프로그래밍 기법이 모든 단계들을 위하여 사용된다. 또한 상기 거친/정교한 프로그래밍 기법은 풀 시퀀스 프로그래밍을 위하여 사용될 수 있다.
도 10은 비휘발성 저장 시스템을 작동하기 위한 프로세스를 설명하는 흐름도이다. 하나의 실시예에서, 도 10의 프로세스는 한 블록의 메모리 셀들을 프로그램하기 위하여 사용된다. 도 10의 프로세스의 한 실시예에서는, 메모리 셀들에서의 균일한 마모(wear)를 유지하기 위하여 메모리 셀들이 프리-프로그램된다(단계 550). 하나의 실시예에서, 메모리 셀들은 최고 데이터 상태, 랜덤 패턴(random pattern), 또는 기타 다른 패턴으로 프리-프로그램된다. 일부 실시예들에서는, 프리-프로그래밍이 수행될 필요가 없다.
단계 552에서, 프로그래밍에 앞서 메모리 셀들이 (블록들 또는 다른 단위들로) 삭제된다. 하나의 실시예에서, p-웰을 충분한 기간동안 삭제 전압(예를 들어 20 볼트)으로 올리고, 소스 및 비트 라인들은 플로팅(floating)되어 있는 동안 선택된 블록의 워드 라인들을 접지함으로써 메모리 셀들이 삭제된다. 삭제하도록 선택되지 않는 블록들에서는 워드 라인들이 플로팅된다. 용량성 결합(capacitive coupling) 때문에, 선택되지 않은 워드 라인들, 비트 라인들, 셀렉트 라인들, 및 공통 소스 라인도 역시 해당 삭제 전압의 상당 부분까지 승압되고, 따라서 삭제하도록 선택되지 않은 블록들에서의 삭제를 지연시킨다. 삭제하도록 선택된 블록들에서는, 선택된 메모리 셀들의 터널 옥사이드 레이어들(tunnel oxide layers)에 강한 전기장이 가해지고, 통상적으로 파울러-노드하임 터널링 메커니즘(Fowler-Nordheim tunneling mechanism)에 따라, 플로팅 게이트들의 전자들이 기판 측면에 방출됨에 따라 선택된 메모리 셀들이 삭제된다. 전자들이 플로팅 게이트로부터 p-웰 영역으로 이송됨에 따라, 선택된 셀의 문턱 전압은 낮아진다. 삭제는 메모리 어레이 전체, 개별적인 블록들, 또는 메모리 셀들의 기타 단위들에 대하여 수행될 수 있다. 하나의 실시예에서, 메모리 셀들을 삭제한 후에, 삭제된 메모리 셀들 모두는 상태 S0에 있게 된다. 삭제 프로세스의 구현은, p-웰에 여러 개의 삭제 펄스들을 가하고 삭제 펄스들 사이에서 NAND 스트링들이 적절하게 삭제되었는지를 확인하는 것을 포함한다.
단계 554에서, 삭제된 메모리 셀들을 위한 삭제된 문턱 전압들의 분포를 좁히기 위하여, 소프트 프로그래밍이 (선택적으로) 수행된다. 일부 메모리 셀들은, 삭제 프로세스의 결과로서, 필요한 것보다 더 깊은 삭제 상태에 있을 수 있다. 소프트 프로그래밍은 깊이 삭제된 메모리 셀의 문턱 전압을 삭제 문턱값 분포(즉 S0)로 이동시킬 수 있다.
단계 556에서, 블록의 메모리 셀들이 프로그램된다. 프로그래밍은 호스트로부터 프로그램하라는 요청에 대한 응답으로서, 또는 내부 프로세스에 대한 응답으로서 수행될 수 있다. 프로그래밍 후에는, 해당 블록의 메모리 셀들이 읽혀질 수 있다(단계 558). 본 발명의 기술분야에서 알려진 많은 서로 다른 읽기 프로세스들이 데이터를 읽는 데 사용될 수 있다. 일부 실시예들에서는, 읽기 프로세스는 에러를 교정하기 위하여 ECC를 사용하는 것을 포함한다. 읽혀지는 데이터는 상기 읽기 작업을 요청한 호스트에 대한 출력이 된다. ECC 프로세스는 스테이트 머신, 제어기, 또는 다른 장치들에 의해서 수행될 수 있다.
도 10은, 삭제-프로그램 사이클이 읽기 없이 또는 읽기와는 독립적으로 여러 번 발생할 수 있고, 읽기 프로세스는 프로그래밍 없이 또는 프로그래밍과는 독립적으로 여러번 발생할 수 있으며, 상기 읽기 프로세스는 프로그래밍 후 임의의 시간에 수행될 수 있음을 보여준다. 도 10의 프로세스는 위에서 설명한 다양한 회로들을 사용하여 스테이트 머신의 지시에 따라 수행될 수 있다. 다른 실시예들에서는, 도 10의 프로세스는 위에서 설명한 다양한 회로들을 사용하여 제어기의 지시에 따라 수행될 수 있다.
도 11은 공통의 워드 라인에 연결된 메모리 셀들 위에서 하나 이상의 타겟들(예를 들어, 데이터 상태들 또는 문턱 전압 범위들)로의 프로그래밍을 수행하기 위한 프로세스의 한 실시예를 설명하는 흐름도이다. 도 11의 프로세스는 도 11의 단계 556 동안에 한 번 또는 여러 번 수행될 수 있다. 예를 들어, 도 11의 프로세스는 상태 S0로부터 직접 상태들 S1 내지 S7 중 하나로 메모리 셀들을 프로그램(예를 들어, 풀 시퀀스 프로그래밍)하기 위하여 사용될 수 있다. 대안적으로, 도 11의 프로세스는 도 7a 내지 도 7e의 프로세스의 단계들 중 하나 또는 단계들 각각을 수행하는 데 사용될 수 있다. 예를 들어, 도 7a의 프로세스를 수행할 때, 메모리 셀들 중 일부를 상태 E로부터 상태 IM으로 프로그램밍하는 것을 포함하는 제1 단계를 구현하기 위하여, 도 11의 프로세스가 사용될 수 있다. 이후에, 메모리 셀들 중 일부를 상태 E로부터 상태들 S1 내지 S3로 그리고 상태 IM으로부터 상태들 S4 내지 S7으로 프로그래밍하는 것을 포함하는 제2 단계를 구현하기 위하여, 도 11의 프로세스가 다시 사용될 수 있다. 도 11의 프로세스는 제3 단계(도 7d 참조)에서 상태들 S1 내지 S7을 조절하기 위하여 다시 사용될 수도 있다. 또한 도 11의 프로세스는 다른 다단계 프로그래밍 프로세스들과 함께 사용될 수 있다.
통상적으로, 프로그램 작업 도중에 콘트롤 게이트에 인가된 프로그램 전압은 일련의 프로그래밍 펄스들로서 인가된다. 프로그래밍 펄스들 사이에는 확인을 수행하기 위한 한 세트의 확인 펄스들이 존재한다. 많은 실시예들에서, 프로그래밍 펄스들의 크기는 일정한 스텝 크기에 따라 각각의 연속되는 펄스들과 함께 증가된다. 도 11의 단계 570에서, 프로그래밍 전압(Vpgm)은 시작 크기(예를 들어, ~ 12 내지 16v 또는 다른 적절한 수준)으로 초기화되고, 스테이트 머신(222)에 의해 유지되는 프로그램 카운터(PC)가 1로 초기화된다. 단계 572에서는, 상기 프로그램 신호 Vpgm이 선택된 워드 라인(프로그래밍을 위해 선택된 워드 라인)에 인가된다. 하나의 실시예에서, 프로그램되는 메모리 셀들의 집합은 동일한 워드 라인(선택된 워드 라인)에 모두 연결되어 있다. 본 발명의 기술분야에서 알려져 있는 부스팅 기법을 수행하기 위하여, 선택되지 않은 워드 라인들은 하나 이상의 부스팅 전압(boosting voltage)들(예를 들어 ~ 9볼트)을 수신한다. 만약 메모리 셀이 프로그램되어야 한다면, 대응되는 비트 라인은 접지된다. 반면에, 메모리 셀이 자신의 현재 문턱 전압으로 머물러 있어야 한다면, 대응되는 비트 라인은 프로그래밍을 금지하기 위하여 Vdd에 연결된다. 단계 572에서, 선택된 워드 라인에 연결된 메모리 셀들 모두가 동시에 프로그램될 수 있도록, 프로그래밍 펄스는 선택된 워드 라인에 연결된 메모리 셀들 모두에게 동시에 인가된다. 즉, 그들은 동시에(또는 중복되는 시간에) 프로그램된다. 이러한 방식으로, 프로그래밍되지 못하도록 락-아웃되지 않은 이상, 상기 선택된 워드 라인에 연결된 메모리 셀들 모두가 각자의 문턱 전압 변화를 거치게 된다.
단계 574에서는, 하나 이상의 확인 작업들을 수행하기 위하여 적절한 세트의 타겟 레벨들을 이용함으로써 적절한 메모리 셀들이 확인된다. 단계 574의 더욱 상세한 내용은 도 12a, 도 13, 도 14, 도 15a 및 도 16a를 참조하여 아래에서 설명하고 있다.
단계 576에서는, 모든 메모리 셀들이 각자의 타겟 문턱 전압들에 도달하였는지의 여부가 결정된다. 만약 그렇다면, 모든 선택된 메모리 셀들이 각자의 타겟 상태들로 프로그램되고 확인되었기 때문에, 프로그래밍 프로세스는 완료되었고 성공적인 것이 된다. 단계 578에서는 "통과"(PASS) 상태가 보고된다. 만약 단계 576에서 모든 메모리 셀들이 그들의 타겟 문턱 전압들에 도달한 것은 아니라고 결정된 경우에는, 프로그래밍 프로세스가 단계 580으로 진행된다.
단계 580에서, 시스템은 아직 그들 각자의 타겟 문턱 전압 분포에 도달하지 못한 메모리 셀들의 개수를 센다. 즉, 시스템은 상기 확인 프로세스에서 실패한 셀들의 개수를 세는 것이다. 이러한 카운팅(counting)은 스테이트 머신, 제어기, 또는 다른 로직에 의해서 행해질 수 있다. 하나의 실시예에서, 센스 블록(330)(도 3 참조) 각각은 그들의 대응되는 셀들의 상태(통과/실패)를 저장한다. 이러한 값들은 디지털 카운터를 이용하여 셀 수 있다. 위에서 설명한 바와 같이, 많은 센스 블록들은 함께 OR-연결된 출력 신호를 갖는다. 따라서 하나의 라인을 확인하는 것은 큰 그룹의 셀들 중 어느 셀도 확인 단계를 실패하지 않았다는 것을 의미한다. 함께 OR-연결되도록 라인들을 적절하게 조직화함으로써(예를 들어, 바이너리 트리(binary tree)와 같은 구조로), 실패한 셀들의 개수를 결정하는 데 바이너리 서치(binary search) 방법이 사용될 수 있다. 그러한 방식에서는, 만약 소수의 셀들이 실패하는 경우에, 카운팅은 신속히 완료된다. 만약 많은 수의 셀들이 실패하면, 카운팅에는 더 긴 시간이 소요된다. 더 많은 정보는, 본 명세서에서 그 전체로서 참조되고 있는, 미국특허출원 공개 제2008/0126676호에서 찾아볼 수 있다. 다른 대안에서는, 센스 증폭기 각각이 아날로그 전압 또는 전류를 출력할 수 있고, 만약 대응되는 메모리 셀이 실패하는 경우에는, 실패한 메모리 셀들의 개수를 세기 위하여, 아날로그 전압 또는 전류 누적 회로(summing circuit)가 사용될 수 있다.
하나의 실시예에서, 현재 프로그램되고 있고 마지막 확인 단계에서 실패한 메모리 셀의 총 개수를 반영하는 하나의 총계가 존재한다. 다른 실시예에서는, 데이터 상태별로 각각 별개의 개수 값이 존재한다.
단계 582에서는, 단계 580으로부터의 개수 값이 일정 한계 값 이하인지 여부가 결정된다. 하나의 실시예에서, 상기 일정 한계 값은 해당 페이지의 메모리 셀들에 대한 읽기 프로세스 도중에 ECC에 의하여 교정된 비트들의 개수이다. 만약 실패한 셀들의 개수가 상기 일정 한계 값 이하이면, 프로그래밍 프로세스는 멈출 수 있고 "통과" 상태가 단계 578에서 보고된다. 이 경우에는, 충분한 메모리 셀들이 올바르게 프로그램되어서, 완전히 프로그램되지 않은 소수의 나머지 메모리 셀들은 읽기 프로세스 도중에 ECC를 사용하여 교정될 수 있다. 일부 실시예들에서, 단계 580은 각각의 섹터, 각각의 타겟 상태, 또는 다른 단위에 대하여 실패한 셀들의 개수를 세고, 이러한 개수 값들은 단계 582에서 개별적으로 또는 집단적으로 일정 문턱값과 비교된다.
다른 실시예에서, 사전 결정된 상기 한계값은, 미래의 에러를 용납할 수 있도록, 읽기 프로세스 도중에 ECC에 의해 교정될 수 있는 비트들의 개수보다 적을 수 있다. 한 페이지의 모든 메모리 셀들보다 적은 수를 프로그램할 때, 또는 오직 하나의 데이터 상태(또는 모든 상태들보다는 적은 상태들)를 위한 개수를 비교할 때에는, 사전 결정된 상기 한계값은 해당 페이지의 메모리 셀들에 대한 읽기 프로세스 도중에 ECC에 의하여 교정될 수 있는 비트들의 개수의 일부(비례하거나 또는 비례하지 않는 일부)일 수 있다. 일부 실시예들에서, 상기 한계값은 사전에 결정되지 않는다. 대신에 상기 한계값은 해당 페이지에 대하여 이미 센 에러들의 개수, 수행된 프로그램-삭제 사이클들의 횟수, 온도, 또는 다른 기준에 근거하여 변화한다.
만약 실패한 셀들의 개수가 사전 결정된 상기 한계값보다 작지 않다면, 프로그래밍 프로세스는 단계 584로 계속되고 프로그램 카운터(PC)는 프로그램 한계값(PL)과 비교된다. 상기 프로그램 한계값의 한 예는 20이다; 그러나 다른 값들도 사용될 수 있다. 만약 프로그램 카운터(PC)가 프로그램 한계값(PL)보다 작지 않으면, 프로그래밍 프로세스는 실패한 것으로 간주되고 단계 588에서 실패(FAIL) 상태가 보고된다. 만약 프로그램 카운터(PC)가 프로그램 한계값(PL)보다 작으면, 프로세스는 단계 586으로 진행되는데, 이 단계에서는 프로그램 카운터(PC)가 1 만큼 증가하고 프로그램 전압(Vpgm)이 다음 크기로 한 단계 높여진다. 예를 들어, 다음 펄스는 이전 펄스보다 한 스텝 크기(예를 들어, 0.1 내지 0.4 볼트의 스텝 크기)만큼 더 큰 크기를 갖게 된다. 단계 586 후에는, 상기 프로세스는 단계 572로 다시 되돌아 가고, 다른 프로그래밍 펄스가 선택된 워드 라인에 인가된다.
도 11의 단계 574는 프로그램되는 메모리 셀들에 대한 확인 프로세스를 수행하는 것과 적절한 메모리 셀들을 더 이상 프로그램되지 않도록 락-아웃하는 것을 포함한다. 프로그래밍 동안에 메모리 셀들을 확인하기 위한 방법들로는, 본 발명의 기술분야에서 알려진 다양한 방법들이 존재하는데, 그들 중 많은 방법들이 적합하게 사용될 수 있다. 도 14a는, 도 7a 내지 도 7e의 방법에 따른 프로그래밍을 포함하는 실시예의 프로그래밍 프로세스 중 제1 단계 도중에, 확인 프로세스(예를 들어, 단계 574)를 수행하기 위한 프로세스의 한 실시예를 설명하는 흐름도이다. 단계 600에서, 프로그램되는 다양한 메모리 셀들이 VvIM(도 7b 참조)보다 크거나 같은 문턱 전압을 가지고 있는지 여부를 결정하기 위해 테스트가 수행된다. 문턱 전압 분포 E에 남아있게 될 메모리 셀들은 확인될 필요가 없다. 중간 문턱 전압 분포 IM으로 프로그램되는 메모리 셀들은, 문턱 전압가 VvIM에 도달하였는지의 여부를 결정함으로써 확인된다. 하나의 실시예에서, 프로그램되는 메모리 셀들의 콘트롤 게이트들에 연결된 워드 라인은 VvIM의 전압을 받게 되고, 시스템은 메모리 셀들이 켜져 있는지 또는 그렇지 않은지(또는 통전되는지(conduct) 아닌지) 여부를 테스트한다. 상기 테스트의 결과는 단계 602에서 결정된다. 예를 들어, 시스템은, 메모리 셀들 중 어느 셀들이 그들의 콘트롤 게이트에 인가된 VvIM에 대한 응답으로서 전류를 턴-온 또는 전도되도록 하였는지를 결정한다. VvIM에 도달한 문턱 전압을 갖는 것으로 판명된 메모리 셀들(상태 S4, S5, S6, 및 S7으로 프로그램되는 메모리 셀들 중에서)은 단계 604에서 제1 단계를 위한 더 이상의 프로그래밍으로부터 락-아웃된다. 위에서 설명한 것처럼, 락-아웃의 한 예는 비트 라인을 Vinhibit(예를 들어 VDD)으로 증가시키는 것을 포함한다. 단계 606에서는, 상기 확인의 결과들이 스테이트 머신 또는 제어기에, 구체적인 실시예에 적합한 방식으로, 보고된다.
도 12b는, 도 11의 단계 572의 연속적인 반복에서 인가되는, 샘플 프로그래밍 펄스들(630, 632, 및 634)을 보여준다. 프로그래밍 펄스들 각각의 쌍들 사이에는 하나의 확인 펄스가 존재한다. 상기 확인 펄스의 크기는 도 14a의 프로세스의 경우 VvIM이다. 연속되는 프로그래밍 펄스들 사이에 수행되는 확인 작업이 오직 한 번 존재하기 때문에, 상기 확인 프로세스는 상당히 빠르게 수행된다.
도 13은, 도 7a 내지 도 7e의 3 단계 프로그래밍 프로세스의 제3 단계를 위한, 메모리 셀들의 확인 및 락-아웃(단계 574)을 수행하기 위한 하나의 실시예를 설명하는 흐름도이다. 즉, 도 7d에서 설명한 프로그래밍 프로세스를 구현할 때, 단계 574로서 도 13의 프로세스가 수행된다. 이 경우에, 데이터 상태 S1으로 프로그램되는 메모리 셀들은 상기 데이터 상태의 최저 전압인 전압 Vv1에서 확인된다. 데이터 상태 S2로 프로그램 중인 메모리 셀들은 Vv2에서 확인되고, 데이터 상태 S3로 프로그램 중인 메모리 셀들은 Vv3에서 확인되고, 데이터 상태 S4로 프로그램 중인 메모리 셀들은 Vv4에서 확인되고, 데이터 상태 S5로 프로그램 중인 메모리 셀들은 Vv5에서 확인되고, 데이터 상태 S6로 프로그램 중인 메모리 셀들은 Vv6에서 확인되고, 데이터 상태 S7로 프로그램 중인 메모리 셀들은 Vv7에서 확인된다.
도 13의 단계 700에서, 시스템은 메모리 셀들이 Vv1보다 큰 문턱 전압을 갖는지를 테스트한다. 단계 702에서는, 시스템이 데이터 상태 S1으로 프로그램되고 있는 메모리 셀 각각에 대하여 상기 테스트의 결과를 결정한다. 상태 S1으로 프로그램되고 있고 Vv1보다 큰 문턱 전압을 갖는 메모리 셀들은, 단계 704에서 더 이상 프로그래밍되지 않도록 락-아웃된다.
단계 706에서, 시스템은 메모리 셀들이 Vv2보다 큰 문턱 전압을 갖는지를 테스트한다. 단계 704에서는, 단계 706의 테스트의 결과들이 결정된다. 상태 S2로 프로그램되고 있고 Vv2보다 큰 문턱 전압을 갖는 메모리 셀들은, 단계 710에서 더 이상 프로그래밍되지 않도록 락-아웃된다.
단계 712에서, 시스템은 메모리 셀들이 Vv3보다 큰 문턱 전압을 갖는지를 테스트한다. 단계 714에서는, 단계 712의 테스트의 결과들이 결정된다. 상태 S3로 프로그램되고 있고 Vv3보다 큰 문턱 전압을 갖는 메모리 셀들은, 단계 716에서 더 이상 프로그래밍되지 않도록 락-아웃된다.
단계 718에서, 시스템은 메모리 셀들이 Vv4보다 큰 문턱 전압을 갖는지를 테스트한다. 단계 720에서는, 단계 718의 테스트의 결과들이 결정된다. 상태 S4로 프로그램되고 있고 Vv4보다 큰 문턱 전압을 갖는 메모리 셀들은, 단계 722에서 더 이상 프로그래밍되지 않도록 락-아웃된다.
단계 724에서, 시스템은 메모리 셀들이 Vv5보다 큰 문턱 전압을 갖는지를 테스트한다. 단계 726에서는, 단계 724의 테스트의 결과들이 결정된다. 상태 S5로 프로그램되고 있고 Vv5보다 큰 문턱 전압을 갖는 메모리 셀들은, 단계 728에서 더 이상 프로그래밍되지 않도록 락-아웃된다.
단계 730에서, 시스템은 메모리 셀들이 Vv6보다 큰 문턱 전압을 갖는지를 테스트한다. 단계 732에서는, 단계 730의 테스트의 결과들이 결정된다. 상태 S6로 프로그램되고 있고 Vv6보다 큰 문턱 전압을 갖는 메모리 셀들은, 단계 734에서 더 이상 프로그래밍되지 않도록 락-아웃된다.
단계 736에서, 시스템은 메모리 셀들이 Vv7보다 큰 문턱 전압을 갖는지를 테스트한다. 단계 738에서는, 단계 737의 테스트의 결과들이 결정된다. 상태 S7으로 프로그램되고 있고 Vv7보다 큰 문턱 전압을 갖는 메모리 셀들은, 단계 740에서 더 이상 프로그래밍되지 않도록 락-아웃된다. 단계 742에서는, 도 13의 확인 프로세스의 결과들이, 구체적인 구현 예에 따라, 상기 스테이트 머신 제어기 또는 기타 다른 프로세싱 장치로 보고된다.
도 13의 프로세스와 관련하여 인가되는 프로그래밍 펄스들 및 확인 펄스들을 위한 파형은 도 6b에서 설명된 파형과 동일하다. 도시되어 있는 것처럼, 7 개의 확인 작업들이 수행되기 때문에 7 개의 확인 펄스들이 인가된다. 이렇게 많은 확인 작업들이 수행되기 때문에, 프로그래밍 프로세스가 느려질 수 있다. 따라서 상기 프로그래밍 프로세스를 빠르게 하는 것이 유익하다.
상기 프로그래밍 프로세스를 빠르게 하는 하나의 방법은, 수행되는 확인 작업들의 개수를 줄이는 것이다. 본 명세서에서 논의되는 한 가지 제안된 방식에서는, 확인 작업들은 제1 세트의 데이터 상태들에 대해서는 마찬가지로 수행된다. 하지만, 제2 세트의 데이터 상태들에 대해서는 확인 작업들이 수행되지 않는다. 상기 제2 세트의 데이터 상태들에 대해서는, 확인 프로세스를 수행하는 대신에, 시스템은 각각 구체적인 데이터 상태의 패스트 비트들의 개수를 결정할 수 있다. 만약 패스트 비트들의 개수가 일정 문턱값보다 크면, 상기 특정 데이터 상태로 프로그램되고 있는 모든 메모리 셀들을 락-아웃함으로써 상기 특정 데이터 상태로 프로그램되고 있는 모든 메모리 셀들에 대하여 프로그래밍이 중단된다. 하나의 예시적인 실시예에서, 패스트 비트들을 위한 상기 테스트는, (제2 세트의 데이터 상태들로 프로그램되고 있는 메모리 셀들의) 문턱 전압들을 제1 세트의 데이터 상태들을 위한 확인 타겟 레벨들과 비교함으로써 수행될 수 있다. 이러한 방식으로 상기 제2 세트의 데이터 상태들을 위하여 어떠한 추가적인 작업도 수행되지 않게 된다. 더 나아가, 제2 세트의 데이터 상태들에 있어서 패스트 비트들인 메모리 셀들의 개수를 세는 것은 이어지는 프로그래밍 펄스 도중에 수행될 수 있다.
도 14는 상기 확인 프로세스를 빠르게 하도록 상기 문단에서 설명된 기술을 사용하여 단계 574의 확인 및 락-아웃을 수행하기 위한 프로세스의 한 가지 실시예를 설명하는 흐름도이다. 하나의 예시적인 실시예에서는, 도 7a 내지 도 7e의 3 단계 프로그래밍 프로세스의 제2 단계를 위한 도 11의 단계 574를 구현하기 위하여 도 14의 프로세스가 사용된다. 즉, 도 7c의 프로세스를 수행할 때, 단계 574의 확인 및 락-아웃 프로세스를 구현하기 위하여 도 14의 방법이 사용된다. 추가적으로, 도 14의 프로세스는 도 6a의 풀 시퀀스 프로그래밍, 다른 다단계 프로그래밍 프로세스, 및 다른 프로그래밍 프로세스들과 함께 사용될 수 있다.
도 14의 단계 770에서, 제1 세트의 데이터 상태들로 프로그램되는 메모리 셀들은, 그들이 각자의 타겟에 도달하였는지 여부를 확인하기 위하여 테스트 된다. 위에서 설명한 바와 같이, 데이터 상태들(예를 들어, S1 내지 S7)은 제1 세트 및 제2 세트로 나뉘어진다. 제1 세트의 데이터 상태들로 프로그램되는 메모리 셀들은 위에서 설명한 것처럼 확인된다. 예를 들어, 단계 770에서는, 제1 세트의 데이터 상태들로 프로그램되는 메모리 셀들이, 그들의 문턱 전압들이 각자의 확인 타겟 레벨에 도달하였는지 여부를 결정하도록 테스트된다. 하나의 예시적인 실시예에서, 상기 제1 세트의 데이터 상태들은 데이터 상태 S2, S4, S6, 및 S7을 포함하고, 상기 제2 세트의 데이터 상태들은 데이터 상태 S1, S3, 및 S5를 포함한다. 또한 다른 그룹핑도 사용될 수 있다. 따라서, 단계 770에서는, 도 7c의 프로세스를 이용하여 데이터 상태 S2, S4, S6, 및 S7로 프로그램되는 메모리 셀은, 그들 각자의 의도된 타겟에 도달하였는지 여부를 결정하기 위하여, 그들의 문턱 전압이 Vv3', Vv5', Vv6', 및 Vv7'에 비교된다. 단계 770의 테스트에 기반하여 그들의 의도된 타겟에 도달한 메모리 셀들은 단계 772에서 더 이상 프로그래밍되지 않도록 락-아웃된다.
하나 이상의 데이터 상태들의 제2 세트로 프로그램되는 메모리 셀들의 경우에, 시스템은 단계 774에서 상기 제2 세트의 데이터 상태들의 데이터 상태 각각으로 프로그램되는 패스트 비트들의 개수를 감지한다. 하나의 실시예에서는, 무엇이 패스트 비트인지 결정하는 데 사용되는 하나 이상의 비교 레벨(compare level)들이 존재한다. 상기 제2 세트의 데이터 상태들로 프로그램되는 메모리 셀들은, 단계 774에서, 패스트 비트들을 위한 하나 이상의 비교 레벨들에 문턱 전압들을 비교받게 된다. 하나의 실시예에서, 패스트 비트들을 결정하기 위한 상기 비교 레벨은 다음으로 높은 데이터 상태를 위한 확인 비교 레벨(verify compare level)이다. 예를 들어, 데이터 상태 S1으로 프로그램되는 패스트 비트들을 결정하기 위하여, 시스템은 데이터 상태 S1으로 프로그램되는 메모리 셀들의 문턱 전압이 Vv1'보다 큰지를 테스트한다. 데이터 상태 S3로 프로그램되는 패스트 비트들을 결정하기 위하여, 시스템은 상기 메모리 셀들의 문턱 전압이 Vv4'보다 큰지를 테스트한다. S5로 프로그램되는 메모리 셀들이 패스트 비트들인지를 테스트 하기 위하여, 시스템은 상기 메모리 셀들을 테스트하여 문턱 전압들이 Vv6'보다 큰지를 확인한다. 다른 실시예들에서는, 비트가 패스트 비트인지를 결정하기 위하여 서로 다른 비교 값들이 사용될 수 있다. 예를 들어, 다음 상태의 타겟 확인 레벨과는 다른 비교 값이 사용될 수 있다. 통상적으로는 해당 데이터 상태를 위한 타겟 확인 레벨보다 큰 비교 값이 사용된다. 또한, 특정 상태 X에 대한 패스트 비트들의 테스트는 상태 X에 대한 확인 프로세스와는 다르다는 것을 주지할 필요가 있다. 비트가 패스트 비트인지 여부를 결정하기 위하여 다른 프로세스들도 사용될 수 있다는 점을 주지하여야 한다.
단계 774의 일부로서, 시스템은 각각의 데이터 상태에 대하여 패스트 비트들의 개수를 결정한다. 상기 제2 데이터 상태들 중에서 일정 개수보다 더 많은 패스트 비트들을 가진 데이터 상태들에 있어서, 상기 데이터 상태로 프로그램되는 모든 메모리 셀들은, 단계 776에서, 해당 특정 프로그래밍 패스에서 더 이상 프로그래밍되지 않도록 락-아웃된다. 단계 778에서는, 상기 확인 프로세스의 결과들이 스테이트 머신, 제어기, 또는 다른 프로세서에게 보고된다.
다시 도 7c를 참조하면, 얼마나 다양한 데이터 상태들이 중첩되는지를 볼 수 있다. 데이터 상태 S2와 중첩되는 데이터 상태 S1의 부분이 패스트 비트들을 나타낸다. 따라서, 어느 메모리 셀들이 Vv2'보다 큰지를 테스팅함으로써, 어느 메모리 셀들이 패스트 비트들인지를 결정할 수 있다. 문턱 전압 분포를 사전에 특징지음으로써(characterizing), 많은 수의 메모리 셀들에 대하여, 상태 S1에 대하여 문턱 전압 분포가 적절한 조건을 만족할 때 얼마나 많은 패스트 비트들이 존재하는지(예를 들어, 얼마나 많은 비트들이 Vv2'보다 큰 문턱 전압을 갖는지)를 예측할 수 있게 된다. 그러므로, 단계 776에서 비교 대상이 되는 상기 일정 개수는, 적절한 시간에 프로그래밍을 중단할 수 있도록, 해당 장치의 특징분석(characterization)을 기반으로 결정된다. 데이터 상태 S1은 데이터 상태 S2와 동일한 값에 비교되기 때문에, 오직 하나의 확인 펄스만이 존재하고 한 번의 확인 작업이 수행된다. 이는, 확인 시에, 그리고 프로그래밍할 때, 상당한 양의 시간을 절약해준다.
하나의 실시예에서, 제1 세트의 데이터 상태들은 제2 세트의 데이터 상태들과 서로 교대로 끼워지게(interleaved) 된다. 예를 들어, 제1 세트의 데이터 상태들은 데이터 상태 S2, S4, 및 S6를 포함하고, 제2 세트의 데이터 상태들은 데이터 상태 S1, S3, 및 S5를 포함한다.
다른 실시예에서, 제1 세트의 데이터 상태들은 데이터 상태 S2 내지 S7을 포함하고, 제2 세트의 데이터 상태들은 오직 데이터 상태 S1만을 포함한다. 그러므로, 확인 프로세스는 오직 데이터 상태 S1의 경우에만 생략된다. 도 15a는, 도 7a 내지 도 7e의 프로그래밍의 제2 단계를 위한, 단계 574의 확인 및 락-아웃을 수행하는 프로세스의 한 실시예를 설명하는 흐름도인데, 이 실시예에서는 제2 세트의 데이터 상태들이 오직 데이터 상태 S1만을 포함한다. 도 15a의 프로세스는 도 14의 프로세스에 대한 하나의 구현 예이다. 단계 800에서, 시스템은 메모리 셀들이 Vv2'보다 더 큰 문턱 전압을 갖고 있는지를 테스트한다. 단계 802에서, 시스템은 데이터 상태 S2로 프로그램되고 있는 메모리 셀들을 위한 테스트의 결과들을 결정한다. 단계 804에서는, 데이터 상태 S2로 프로그램되고 있고 Vv2'보다 더 큰 문턱 전압을 갖는 메모리 셀들이 더 이상 프로그래밍되지 않도록 락-아웃된다. 단계 806에서, 시스템은 데이터 상태 S1으로 프로그램되고 있는 메모리 셀들을 위한 단계 802의 테스트 결과를 결정한다. 단계 808에서, 시스템은 데이터 상태 S1으로 프로그램되고 있고 Vv2'보다 더 큰 문턱 전압을 갖는 메모리 셀들의 개수를 센다. 하나의 실시예에서는, 단계 808이 다음 프로그래밍 펄스 도중에 수행된다(이는 도 15a의 모든 단계들 후에 수행되는 것을 의미한다). 다른 실시예에서는, 도 12, 도 13, 도 14, 및 도 15a의 모든 단계들과 마찬가지로, 단계 808이 이전 프로그래밍 펄스에 대응하여 수행된다. 만약 단계 808에서 센 메모리 셀들의 개수가 일정 숫자 K(예를 들어, 단계 776에서 참조된 사전결정된 수)보다 크면, 단계 812에서는 상태 S1으로 프로그램되고 있는 모든 메모리 셀들이 이 단계의 프로그래밍 프로세스에서 더 이상 프로그래밍되지 않도록 락-아웃된다. 단계 806 내지 단계 812는 단계 774 내지 단계 776의 예시적인 구현예라는 것을 주지할 필요가 있다.
상기 단계 802 및 단계 806을 수행하는 순서는, S1으로 프로그램되는 메모리 셀들에 대한 테스트가 S1으로 프로그램되는 메모리 셀들에 대한 테스트보다 먼저, 도중에, 또는 뒤에 수행되도록, 역전될 수 있다는 점을 주지할 필요가 있다.
단계 812가 수행된 후에, 단계 814가 수행된다. 만약, 단계 808에서 센 메모리 셀들의 개수가 K보다 크지 않은 것으로 단계 810에서 상기 시스템이 결정하는 경우에는, 상기 프로세스는 단계 812를 생략하고 단계 814로 바로 넘어간다. 단계 810에서 비교된 상기 숫자 K는 일부 실시예들에서는 사전에 결정되지 않을 수도 있다는 점을 주지할 필요가 있다.
단계 814에서, 시스템은 메모리 셀들이 Vv3'보다 더 높은 문턱 전압을 갖고 있는지를 테스트한다. 단계 816에서, 시스템은 상태 S3로 프로그램되는 메모리 셀들에 대한 테스트의 결과들을 결정한다. 단계 818에서, 상태 S3로 프로그램되고 Vv3'보다 더 큰 문턱 전압을 갖는 메모리 셀들이 더 이상 프로그래밍되지 않도록 락-아웃된다. 단계 820에서, 시스템은 메모리 셀들이 Vv4'보다 더 높은 문턱 전압을 갖고 있는지를 테스트한다. 단계 822에서, 시스템은 상태 S4로 프로그램되는 메모리 셀들에 대한 테스트의 결과들을 결정한다. 상태 S4로 프로그램되고 Vv4'보다 더 큰 문턱 전압을 갖는 메모리 셀들은, 단계 824에서, 더 이상 프로그래밍되지 않도록 락-아웃된다. 단계 826에서, 시스템은 메모리 셀들이 Vv5'보다 높은 문턱 전압을 갖고 있는지를 결정하기 위하여 테스트를 수행한다. 단계 828에서, 시스템은 데이터 상태 S5로 프로그램되는 메모리 셀들에 대한 상기 테스트 결과들을 결정한다. 단계 830에서, 데이터 상태 S5로 프로그램되고 Vv5'보다 더 큰 문턱 전압을 갖는 메모리 셀들은 더이상 프로그래밍되지 않도록 락-아웃된다.
단계 832에서, 시스템은 어느 메모리 셀들이 Vv6'보다 큰 문턱 전압을 갖는지를 결정하기 위하여 테스트를 수행한다. 단계 834에서, 시스템은 데이터 상태 S6로 프로그램되는 메모리 셀들에 대하여 상기 테스트 결과들을 결정한다. 단계 836에서, 데이터 상태 S6으로 프로그램되고 Vv6'보다 큰 문턱 전압을 갖는 메모리 셀들은 더 이상 프로그램되지 않도록 락-아웃된다. 단계 838에서, 시스템은 어느 메모리 셀들이 Vv7'보다 큰 문턱 전압을 갖는지를 결정하기 위하여 테스트를 수행한다. 단계 840에서, 시스템은 데이터 상태 S7으로 프로그램되는 메모리 셀들에 대한 상기 테스트의 결과들을 결정한다. 단계 842에서, 데이터 상태 S7으로 프로그램되고 Vv7'보다 큰 문턱 전압을 갖는 메모리 셀들은 더 이상 프로그램되지 않도록 락-아웃된다. 단계 844에서는, 확인 프로세스의 결과들이, 실시예에 따라 스테이트 머신, 제어기, 또는 기타 프로세서에 제공된다.
도 15b는 한 세트로 된 세 개의 프로그래밍 펄스들과 도 15a의 프로세스 도중에 상기 세 개의 프로그래밍 펄스들 사이에 인가되는 확인 펄스들을 도시하고 있다. 프로그래밍 펄스들(860, 862, 및 864) 사이에는, 오직 여섯 개의 확인 펄스들이 존재한다. 상기 여섯 개의 확인 펄스들의 크기는 Vv2', Vv3', Vv4', Vv5', Vv6', 및 Vv7'이다. 상태 S1을 위한 확인은 생략되기 때문에, Vv1'에서의 확인 펄스는 존재하지 않는다.
도 16a는, 제2 세트의 데이터 상태들이 데이터 상태 S1, S3, 및 S5를 포함하는 예에서, 도 7a 내지 도 7e의 제2 단계 프로그래밍을 위한 단계 574의 확인 및 락-아웃을 수행하는 프로세스의 한 실시예를 설명하는 흐름도이다. 도 16a의 실시예에서, 데이터 상태 S1, S3, 및 S5를 위한 확인은 생략된다. 따라서 데이터 상태 S1, S3, 및 S5는 제2 세트의 데이터 상태들 안에 포함되고, 제2 세트의 데이터 상태들은 제1 세트의 데이터 상태들과 서로 교대로 끼워진다(interleaved). 제1 세트의 데이터 상태들은 데이터 상태 S2, S4, S6 및 S7을 포함한다.
도 16a의 단계 902에서, 시스템은 메모리 셀들이 Vv2'보다 큰 문턱 전압을 갖는지 여부를 결정하기 위한 테스트를 수행한다. 단계 904에서, 시스템은 상태 S2로 프로그램되는 메모리 셀들을 위한 상기 테스트의 결과들을 결정한다. 단계 906에서, 상태 S2로 프로그램되고 Vv2'보다 큰 문턱 전압을 갖는 메모리 셀들은 더 이상 프로그램되지 않도록 락-아웃된다. 단계 908에서, 시스템은 데이터 상태 S1으로 프로그램되는 메모리 셀들에 대하여 도 904의 상기 테스트 결과를 결정한다. 즉, 데이터 상태 S1으로 프로그램되는 메모리 셀은 각자의 문턱 전압이 Vv2'에 비교된다. 단계 910에서, 시스템은 상태 S1으로 프로그램되고 Vv2'보다 큰 문턱 전압을 갖는 메모리 셀들의 개수를 센다. 하나의 실시예에서, 단계 910은 다음 프로그래밍 펄스 도중에(즉 도 16a의 모든 단계들 후에) 수행된다. 단계 912에서, 시스템은 상기 단계 910에서 센, Vv2'보다 더 큰 문턱 전압을 갖는 메모리 셀의 개수가 일정 숫자 K보다 큰지를 결정한다. 만약 그렇지 않다면, 상기 프로세스는 단계 916으로 넘어간다. 만약 상태 S1으로 프로그램되고 Vv2'보다 더 큰 문턱 전압을 갖는 메모리 셀들의 개수가 K보다 크면, 단계 914에서 데이터 상태 S1으로 프로그램되는 모든 메모리 셀들이 더 이상 프로그램되지 않도록 락-아웃된다. 단계 908 내지 단계 914는 단계 774 내지 단계 776의 예시적인 실시예임을 주지할 필요가 있다,
단계 904 및 단계 908을 수행하는 순서는, S1으로 프로그램되는 메모리 셀들이, S1으로 프로그램되는 메모리 셀들에 대한 테스트 이전, 도중, 또는 후에 수행되도록, 역전될 수 있다.
도 16a의 단계 916에서, 시스템은 메모리 셀들이 Vv4'보다 큰 문턱 전압을 갖는지 여부를 결정하기 위하여 테스트를 수행한다. 단계 918에서, 시스템은 데이터 상태 S4로 프로그램되는 메모리 셀들에 대하여 상기 테스트의 결과들을 결정한다. 단계 920에서, 데이터 상태 S4로 프로그램되고 Vv4'보다 더 큰 문턱 전압을 갖는 메모리 셀들은 더 이상 프로그램되지 않도록 락-아웃된다. 단계 922에서, 데이터 상태 S3로 프로그램되는 메모리 셀들에 대하여 상기 단계 916의 테스트 결과가 결정된다. 본 실시예에서, 데이터 상태 S1, S4, 및 S5에 대한 확인은 생략된다. 그러므로, 데이터 상태 S3로 프로그램되는 메모리 셀들은 데이터 상태 S4를 위한 확인 타겟 레벨 Vv4'와 비교된다. 단계 924에서, 데이터 상태 S3로 프로그램되고 Vv4'보다 더 큰 문턱 전압을 갖는 메모리 셀들의 개수가 세어진다. 만약 상기 개수가 일정 숫자 K보다 크면(단계 926), 단계 928에서 데이터 상태 S3로 프로그램되는 모든 메모리 셀들이 락-아웃된다. 상기 단계 922 내지 단계 928은 상기 단계 774 내지 단계 776의 하나의 예시적인 실시예라는 점을 주지할 필요가 있다.
단계 918 및 단계 922을 수행하는 순서는, S3으로 프로그램되는 메모리 셀들이, S4로 프로그램되는 메모리 셀들에 대한 테스트 이전, 도중, 또는 후에 수행되도록, 역전될 수 있다.
단계 930에서, 문턱 전압이 Vv6'보다 더 큰지를 결정하기 위하여 메모리 셀들에 테스트가 수행된다. 단계 932에서, 데이터 상태 S6로 프로그램되는 메모리 셀들에 대하여 상기 테스트의 결과들이 결정된다. 단계 934에서, 데이터 상태 S6로 프로그램되고 Vv6보다 더 큰 문턱 전압을 갖는 메모리 셀들이 더 이상 프로그램되지 않도록 락-아웃된다. 단계 936에서, 데이터 상태 S5로 프로그램되는 메모리 셀들 각각에 대하여 상기 단계 930의 테스트 결과들이 결정된다. 위에서 설명한 바와 같이, 데이터 상태 S5에 대한 확인은 생략된다. 단계 938에서, 데이터 상태 S5로 프로그램되고 Vv6'에 이르는 문턱 전압을 갖는 메모리 셀들의 개수가 세어진다. 만약 상기 개수가 일정 숫자 K보다 크면(단계 940), 데이터 상태 S5로 프로그램되는 모든 메모리 셀들은 더 이상 프로그램되지 않도록 락-아웃된다. 만약 상기 개수가 상기 숫자 K보다 크지 않으면, 상기 프로세스는 단계 942를 건너뛰고 단계 944로 넘어간다. 상기 단계 936 내지 단계 942는 상기 단계 774 내지 단계 776의 하나의 예시적인 실시예임을 주지할 필요가 있다.
단계 932 및 단계 936을 수행하는 순서는, S5으로 프로그램되는 메모리 셀들이, S6로 프로그램되는 메모리 셀들에 대한 테스트 이전, 도중, 또는 후에 수행되도록, 역전될 수 있다.
단계 944에서, 문턱 전압이 Vv7'보다 더 큰지를 결정하기 위하여 메모리 셀들에 테스트가 수행된다. 단계 946에서, 데이터 상태 S7로 프로그램되는 메모리 셀들에 대하여 상기 단계 944의 테스트 결과들이 결정된다. 단계 948에서, 데이터 상태 S7으로 프로그램되고 Vv7'보다 더 큰 문턱 전압을 갖는 메모리 셀들은 더 이상 프로그램되지 않도록 락-아웃된다. 단계 950에서, 상기 설명된 확인 프로세스의 결과들은 스테이트 머신, 제어기, 또는 기타 프로세서들에 보고된다. 상기 단계 912, 단계 926, 및 단계 940은 동일한 숫자 K를 이용한다는 점에 유의해야한다; 하지만 다른 실시예에서는, 상기 단계 912, 단계 926, 및 단계 940의 비교를 위하여 서로 다른 숫자들이 사용될 수 있다.
도 16b는 프로그래밍 펄스들을 보여준다. 연속되는 프로그래밍 펄스들 사이에는 Vv2', Vv4', Vv6', 및 Vv7'의 크기를 갖는 네 개의 확인 펄스들이 존재한다. 도 16b의 펄스들은 도 16a의 프로세스 도중에 적용된다. 데이터 상태 S1, S3, 및 S5의 경우에는 확인이 생략되기 때문에, Vv1', Vv3', 또는 Vv5'의 크기를 갖는 확인 펄스들은 존재하지 않는다. 일부 데이터 상태들에 대한 확인을 생략함으로써, 상기 프로그래밍 프로세스는 더 빨리 완료된다. 도 16a의 방법이 도 7a 내지 도 7e의 제3 프로그래밍 패스를 위하여 사용되는 경우에, Vv1', Vv2', Vv3', Vv4', Vv5', Vv6', 및 Vv7'을 이용하기보다, 시스템은 Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, 및 Vv7을 이용한다. 추가로, 도 15a 및 도 16a의 프로세스들은 도 6 및 도 7a 내지 도 7e의 프로세스들에 추가로 다른 프로그래밍 프로세스들을 위하여 사용될 수 있다.
다른 실시예에서, 제2 세트의 데이터 상태들은 데이터 상태 S1, S4, 및 데이터 상태 S6를 포함하여, 일반적으로 위에서 설명한 원칙들에 따라, 데이터 상태 S1, S4, 및 S6에 대하여는 확인이 생략되고 데이터 상태 S2, S3, S5, 및 S7에 대해서만 확인이 수행될 수 있다. S2를 위한 확인 시에, 시스템은 S1을 위한 패스트 비트들을 테스트한다. S5를 위한 확인 시에는, 시스템은 S4를 위한 패스트 비트들을 테스트한다. S7을 위한 확인 시에는, 시스템은 S6를 위한 패스트 비트들을 테스트한다. 또한 다른 구성들도 구현될 수 있다.
하나의 실시예는, 제1 세트의 타겟들로 프로그램되는 제1 세트의 비휘발성 저장 요소들과 제2 세트의 하나 이상의 타겟들로 프로그램되는 제2 세트의 비휘발성 저장 요소들에 프로그래밍을 적용하고, 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 테스트하고, 상기 제1 세트의 비휘발성 저장 요소들 중 각자의 타겟에 도달한 것으로 결정된 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하고, 상기 제2 세트의 비휘발성 저장 요소들 중 상기 제2 세트의 하나 이상의 타겟들 각각에 대하여 패스트 프로그래밍된 비휘발성 저장 요소들의 개수를 감지하고, 상기 제2 세트의 비휘발성 저장 요소들 중에서 상기 제2 세트의 하나 이상 타겟들 중 일정 문턱값보다 많은 수의 패스트 프로그래밍된 비휘발성 저장 요소들을 갖는 하나 이상의 타겟들로 프로그램되는 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하는 것을 포함한다.
하나의 실시예는, 제1 세트의 하나 이상 타겟들로 프로그램되는 제1 세트의 비휘발성 저장 요소들과 제2 세트의 하나 이상 타켓들로 프로그램되는 제2 세트의 비휘발성 저장 요소들을 포함하는 다수의 비휘발성 저장 요소들과, 상기 다수의 비휘발성 저장 요소들과 통신하고 있는 하나 이상의 관리 회로(managing circuit)들을 포함한다. 상기 하나 이상의 관리 회로들은 상기 제1 세트의 비휘발성 저장 요소들 및 제2 세트의 비휘발성 저장 요소들에 프로그래밍 처리(dose)들을 인가한다. 상기 프로그래밍 처리들의 적어도 일부에 대한 대응으로서 상기 하나 이상의 관리 회로들은, 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 테스트하고, 상기 제1 세트의 비휘발성 저장 요소들 중 그들 각자의 타겟에 도달한 것으로 결정된 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하고, 상기 제2 세트의 하나 이상 타겟들의 타켓 각각에 대하여 상기 제2 세트의 비휘발성 저장 요소들 중 패스트 프로그래밍된 비휘발성 저장 요소들의 개수를 감지하고, 상기 제2 세트의 비휘발성 저장 요소들 중에서 상기 제2 세트의 하나 이상 타겟들 중 일정 문턱값보다 많은 수의 패스트 프로그래밍된 비휘발성 저장 요소들을 갖는 하나 이상의 타겟들로 프로그램되는 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃한다.
하나의 실시예는 다수의 비휘발성 저장 요소들을 중간 타겟(interim target)들로 프로그램하는 것을 포함한다. 상기 다수의 비휘발성 저장 요소들은 제1 세트의 중간 타겟들로 프로그램되는 제1 세트의 비휘발성 저장 요소들과 제2 세트의 하나 이상 중간 타겟들로 프로그램되는 제2 세트의 비휘발성 저장 요소들을 포함한다. 다수의 비휘발성 저장 요소들을 중간 타겟들로 프로그래밍하는 상기 단계는, 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 중간 타겟에 도달하였는지를 감지한 것을 기반으로 상기 제1 세트의 비휘발성 저장 요소들을 락-아웃하는 것과, 패스트 프로그램된 제2 세트의 비휘발성 저장 요소들을 감지한 것을 기반으로 상기 제2 세트의 비휘발성 저장 요소들을 락-아웃하는 것을 포함한다. 상기 방법은 추가로, 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지 감지한 것을 기반으로 상기 제1 세트의 비휘발성 저장 요소들을 락-아웃하는 것과, 상기 제2 세트의 비휘발성 저장 요소들이 그들 각자 타겟에 도달하였는지 감지한 것을 기반으로 상기 제2 세트의 비휘발성 저장 요소들을 락-아웃하는 것을 포함하는, 상기 다수의 비휘발성 저장 요소들을 상기 중간 타겟으로부터 최종 타겟들로 프로그램하는 것을 포함한다.
하나의 실시예는, 제1 세트의 중간 타겟들로 프로그램되는 제1 세트의 비휘발성 저장 요소들과 제2 세트의 하나 이상 중간 타겟들로 프로그램되는 제2 세트의 비휘발성 저장 요소들을 포함하는 다수의 비휘발성 저장 요소들, 그리고 상기 다수의 비휘발성 저장 요소들과 통신하는 하나 이상의 관리 회로들을 포함한다. 상기 하나 이상의 관리 회로들은, 상기 다수의 비휘발성 저장 요소들을 중간 타겟들로 프로그램한다. 상기 다수의 비휘발성 저장 요소들을 중간 타겟들로 프로그램하는 것의 일부로서, 상기 하나 이상의 관리 회로들은 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 중간 타겟에 도달하였는지를 감지한 것을 기반으로 상기 제1 세트의 비휘발성 저장 요소들을 락-아웃하고, 패스트 프로그래밍된 상기 제2 세트의 비휘발성 저장 요소들의 문턱값 개수를 감지한 것을 기반으로 상기 제2 세트의 비휘발성 저장 요소들을 락-아웃한다. 상기 하나 이상의 관리 회로들은, 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 감지한 것을 기반으로 상기 제1 세트의 비휘발성 저장 요소들을 락-아웃하고 상기 제2 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 감지한 것을 기반으로 상기 제2 세트의 비휘발성 저장 요소들을 락-아웃하는 것을 포함하여, 상기 다수의 비휘발성 저장 요소들을 중간 타겟들로부터 최종 타겟으로 프로그램한다.
하나의 실시예는, 제1 세트의 비휘발성 저장 요소를 제1 타겟으로 프로그램하기 위하여 프로그래밍 신호를 제1 세트의 비휘발성 저장 요소들에 적용하고, 상기 제1 세트의 비휘발성 저장 요소들이 상기 제1 타겟보다 더 큰 다른 타겟에 도달하였는지를 테스트하고, 다른 타겟에 도달한 상기 제1 세트의 비휘발성 저장 요소들의 양이 제1 숫자보다 큰지를 결정하고, 상기 제1 세트의 비휘발성 저장 요소들의 양이 상기 제1 숫자보다 큰 것으로 결정되는 것에 대응하여 상기 제1 세트의 비휘발성 저장 요소들의 프로그래밍을 완료하는 것을 포함한다.
지금까지 기술한 본 발명의 상세한 설명들은 도시 및 설명의 목적으로 제공되었다. 따라서 모든 것을 망라하거나 개시된 특정 형태로 본 발명을 제한하는 것으로 해석되어서는 아니 된다. 상기 개시 내용에 의거하여 다양한 변경 및 변형형태들이 만들어질 수 있다. 상기 설명된 실시예들은, 본 발명의 원리 및 그 실제적인 응용을 가장 잘 설명할 수 있도록 선택된 것들이고, 따라서 본 발명의 기술분야의 통상의 기술자로 하여금, 의도된 특정 사용 상황에 맞추어, 다양한 실시예들에서 그리고 다양한 변형과 함께 본 발명을 활용할 수 있게 해준다. 본 발명의 범위는 본 명세서에 첨부된 특허청구범위의 청구항들에 의하여 정의된다.

Claims (28)

  1. 비휘발성 저장소(non-volatile storage)를 프로그래밍하는 방법으로서,
    제1 세트의 타겟(target)들로 프로그램되는 제1 세트의 비휘발성 저장 요소(non-volatile storage element)들과 제2 세트의 하나 이상의 타겟들로 프로그램되는 제2 세트의 비휘발성 저장 요소들에 프로그래밍을 적용하는 단계와;
    상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 테스트하는 단계와;
    상기 제1 세트의 비휘발성 저장 요소들 중에서 각자의 타겟에 도달한 것으로 결정된 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃(lock out)하는 단계와;
    상기 제2 세트의 비휘발성 저장 요소들 중에서 상기 제2 세트의 하나 이상의 타겟들 각각에 대하여 패스트 비트들(fast bits)인 비휘발성 저장 요소들의 개수를 감지하는 단계 - 상기 패스트 비트들은, 상기 제2 세트의 비휘발성 저장 요소들 중에서, 프로그램동안 각자의 타겟들보다 높은 레벨에 도달한 비휘발성 저장 요소들이며 - 와; 그리고
    상기 제2 세트의 비휘발성 저장 요소들 중에서, 상기 제2 세트의 하나 이상 타겟들 중 하나 이상의 타겟들로 프로그램되고 있고 그리고 패스트 비트들인 비휘발성 저장 요소들의 임계값보다 많은 수의 패스트 비트들인 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하는 단계를 포함하는 것을 특징으로 하는
    비휘발성 저장소를 프로그래밍하는 방법.
  2. 제1항에 있어서,
    상기 프로그래밍을 적용하는 단계는, 프로그래밍 펄스들을 인가하는 것을 포함하고; 상기 테스트 단계 및 감지 단계는 상기 프로그래밍 펄스들에 대한 대응으로서 수행되는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  3. 제2항에 있어서,
    상기 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 단계는, 상기 제2 세트의 하나 이상의 타겟들 중 각각의 타겟에 대하여 프로그래밍 펄스들 중 하나의 도중에 상기 제2 세트의 비휘발성 저장 요소들 중 패스트 비트들인 비휘발성 저장 요소들의 개수를 세는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  4. 제1항, 제2항 또는 제3항 중 어느 한 항에 있어서,
    상기 제2 세트의 비휘발성 저장 요소들 중에서 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하는 단계는,
    상기 제2 세트의 비휘발성 저장 요소들 중에서, 상기 제2 세트의 하나 이상 타겟들 중 하나 이상의 타겟들로 프로그램되고 있고 그리고 패스트 비트들인 비휘발성 저장 요소들의 임계값보다 많은 수의 패스트 비트들인 모든 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  5. 제1항에 있어서,
    상기 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 단계는, 상기 제2 세트의 비휘발성 저장 요소들의 비휘발성 저장 요소들이 각자의 타겟들보다 높은 레벨에 도달하였는지를 테스트하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  6. 제1항에 있어서,
    상기 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 단계는, 상기 제2 세트의 비휘발성 저장 요소들의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 확인하는 것 이외의 테스트를 수행하는 것을 포함하고, 상기 각자의 타겟에 도달하였는지를 확인하는 것 이외의 테스트는, 상기 제2 세트의 비휘발성 저장 요소들의 비휘발성 저장 요소들이 제1 세트의 타겟들에 대한 확인 타겟 레벨에 도달하였는지를 결정하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  7. 제1항에 있어서,
    상기 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 단계는, 상기 제2 세트의 비휘발성 저장 요소들의 비휘발성 저장 요소들이 상기 제1 세트의 비휘발성 저장 요소들을 위한 하나 이상의 타겟들에 도달하였는지를 테스트하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  8. 제1항에 있어서,
    상기 제2 세트의 하나 이상의 타겟들이 제1 타겟을 포함하고;
    상기 제1 세트의 하나 이상의 타겟들이 제2 타겟을 포함하고;
    상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 테스트하는 단계는, 상기 제1 세트의 비휘발성 저장 요소들의 일부가 상기 제2 타겟에 도달하였는지 테스트하는 것을 포함하고; 그리고
    상기 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 단계는, 상기 제2 세트의 비휘발성 저장 요소들의 일부가 상기 제2 타겟에 도달하였는지를 테스트하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  9. 제1항에 있어서,
    상기 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 단계는, 상기 제2 세트의 비휘발성 저장 요소들의 비휘발성 저장 요소들이 과다 프로그램되었는지(over programmed)를 테스트하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  10. 제1항에 있어서,
    상기 제2 세트의 하나 이상의 타겟들은 상기 제1 세트의 타겟들과 서로 교대로 끼워진(interleaved) 다수의 타겟들을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  11. 제1항에 있어서,
    상기 프로그래밍을 적용하는 단계, 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 테스트하는 단계, 상기 제1 세트의 비휘발성 저장 요소들 중에서 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하는 단계, 상기 감지하는 단계 및 상기 제2 세트의 비휘발성 저장 요소들 중에서 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하는 단계는, 제1 세트의 비휘발성 저장 요소들 및 제2 세트의 비휘발성 저장 요소들을 중간 상태(interim condition)들로 프로그램하는, 중간 프로그래밍 단계(interim programming phase)의 일부로서 수행되고;
    상기 제1 세트의 비휘발성 저장 요소들 및 상기 제2 세트의 비휘발성 저장 요소들을 상기 중간 상태들과는 상이한 타겟 상태(target condition)들로 프로그램하는 것을 포함하는, 후속 프로그래밍 단계(subsequent programming phase)를 추가로 포함하고;
    상기 후속 프로그래밍 단계는, 상기 제1 세트의 비휘발성 저장 요소들 및 제2 세트의 비휘발성 저장 요소들이 그들 각자의 타겟 상태에 도달하였는지를 테스트하는 것을 추가로 포함하는 것을 특징으로 하는
    비휘발성 저장소를 프로그래밍하는 방법.
  12. 제11항에 있어서,
    적어도 상기 제1 세트의 비휘발성 저장 요소들에 대하여 예비 프로그래밍 단계(previous programming phase)를 상기 중간 프로그래밍 단계 이전에 수행하는 것을 추가로 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  13. 비휘발성 저장 시스템(non-volatile storage system)으로서,
    제1 세트의 하나 이상 타겟들로 프로그램되는 제1 세트의 비휘발성 저장 요소들과 제2 세트의 하나 이상 타켓들로 프로그램되는 제2 세트의 비휘발성 저장 요소들을 포함하는, 다수의 비휘발성 저장 요소들; 및
    상기 다수의 비휘발성 저장 요소들과 통신하고 있고, 상기 제1 세트의 비휘발성 저장 요소들 및 제2 세트의 비휘발성 저장 요소들에 프로그래밍 펄스들을 인가하는, 하나 이상의 관리 회로(managing circuit)들을 포함하고;
    상기 제1 및 제2 세트의 비휘발성 저장 요소들에 인가되는 상기 프로그래밍 펄스들의 적어도 일부에 대한 대응으로서, 상기 하나 이상의 관리 회로들은, 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟에 도달하였는지를 테스트하고, 상기 제1 세트의 비휘발성 저장 요소들 중 그들 각자의 타겟에 도달한 것으로 결정된 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하고, 상기 제2 세트의 하나 이상 타겟들의 타겟 각각에 대하여 상기 제2 세트의 비휘발성 저장 요소들 중 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하고, 그리고 상기 제2 세트의 비휘발성 저장 요소들 중에서, 상기 제2 세트의 하나 이상 타겟들 중 하나 이상의 타겟들로 프로그램되고 있고 그리고 패스트 비트들인 비휘발성 저장 요소들의 임계값보다 많은 수의 패스트 비트들인 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하고,
    상기 패스트 비트들은, 상기 제2 세트의 비휘발성 저장 요소들 중에서, 프로그램동안 각자의 타겟들보다 높은 레벨에 도달한 비휘발성 저장 요소들인 것을 특징으로 하는 비휘발성 저장 시스템.
  14. 삭제
  15. 제13항에 있어서,
    상기 하나 이상의 관리 회로들은, 프로그래밍 펄스들 중 하나의 도중에 상기 제2 세트의 하나 이상 타겟들의 타겟 각각에 대하여 상기 제2 세트의 비휘발성 저장 요소들 중 패스트 비트들인 비휘발성 저장 요소들의 개수를 셈으로써, 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 것을 특징으로 하는 비휘발성 저장 시스템.
  16. 제13항 또는 제15항에 있어서,
    상기 하나 이상의 관리 회로들은, 상기 제2 세트의 비휘발성 저장 요소들 중에서, 상기 제2 세트의 하나 이상 타겟들 중 하나 이상의 타겟들로 프로그램되고 있고 그리고 패스트 비트들인 비휘발성 저장 요소들의 임계값보다 많은 수의 패스트 비트들인 모든 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하는 것을 특징으로 하는 비휘발성 저장 시스템.
  17. 제13항에 있어서,
    상기 하나 이상의 관리 회로는, 상기 비휘발성 저장 요소들이 각자의 타겟들보다 높은 수준에 도달하였는지를 테스트함으로써, 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 것을 특징으로 하는 비휘발성 저장 시스템.
  18. 제13항에 있어서,
    상기 하나 이상의 관리 회로는, 제2 세트의 비휘발성 저장 요소들이 상기 제1 세트의 비휘발성 저장 요소들을 위한 하나 이상의 타겟들에 도달하였는지를 테스트함으로써, 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 것을 특징으로 하는 비휘발성 저장 시스템.
  19. 제13항에 있어서,
    상기 제2 세트의 하나 이상 타겟들은 제1 타겟을 포함하고;
    상기 제1 세트의 하나 이상 타겟들은 제2 타겟 및 제3 타겟을 포함하고;
    상기 하나 이상의 관리 회로들은, 상기 제1 세트의 비휘발성 저장 요소들 중 일부가 상기 제2 타겟에 도달하였는지를 테스트함으로써, 상기 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟들에 도달하였는지를 테스트하고; 그리고
    상기 하나 이상의 관리 회로들은, 상기 제2 세트의 비휘발성 저장 요소들의 일부가 상기 제2 타겟에 도달하였는지를 테스트함으로써, 상기 제2 세트의 비휘발성 저장 요소들 중 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 것을 특징으로 하는 비휘발성 저장 시스템.
  20. 제13항에 있어서,
    상기 하나 이상의 관리 회로들은, 상기 제2 세트의 비휘발성 저장 요소들이 과다 프로그램되었는지(over programmed)를 테스트함으로써, 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하는 것을 특징으로 하는 비휘발성 저장 시스템.
  21. 제13항에 있어서,
    상기 제2 세트의 하나 이상 타겟들은 상기 제1 세트의 타겟들과 서로 교대로 끼워진(interleaved) 다수의 타겟들을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  22. 제13항에 있어서,
    상기 하나 이상의 관리 회로들은, 제1 세트의 비휘발성 저장 요소들 및 제2 세트의 비휘발성 저장 요소들을 중간 상태(interim condition)들로 프로그램하는 중간 프로그래밍 단계(interim programming phase)의 일부로서, 프로그래밍 펄스들을 인가하고, 제1 세트의 비휘발성 저장 요소들이 그들 각자의 타겟들에 도달하였는지를 테스트하고, 상기 제1 세트의 비휘발성 저장 요소들의 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하고, 패스트 비트들인 비휘발성 저장 요소들의 개수를 감지하고, 그리고 상기 제2 세트의 비휘발성 저장 요소들 중에서 비휘발성 저장 요소들을 더 이상 프로그램되지 않도록 락-아웃하고;
    또한 상기 하나 이상의 관리 회로들은, 상기 제1 세트의 비휘발성 저장 요소들 및 제2 세트의 비휘발성 저장 요소들을 상기 중간 상태와는 상이한 타겟 상태로 프로그램하는, 후속 프로그래밍 단계(subsequent programming phase)를 수행하고; 그리고
    상기 후속 프로그래밍 단계는, 제1 세트의 비휘발성 저장 요소들 및 제2 세트의 비휘발성 저장 요소들이 그들 각자의 타겟 상태들에 도달하였는지를 상기 하나 이상의 관리 회로들이 테스트하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  23. 제1항에 있어서,
    상기 제1 세트의 비휘발성 저장 요소들은 3차원 배열의 저장 요소들을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  24. 제1항에 있어서,
    상기 제1 세트의 비휘발성 저장 요소들은 3차원 배열의 메모리 셀들을 포함하는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  25. 제1항에 있어서,
    상기 제1 세트의 비휘발성 저장 요소들은 3차원 메모리 구조로 배열되는 것을 특징으로 하는 비휘발성 저장소를 프로그래밍하는 방법.
  26. 제13항에 있어서,
    상기 다수의 비휘발성 저장 요소들은 3차원 배열의 저장 요소들을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  27. 제13항에 있어서,
    상기 다수의 비휘발성 저장 요소들은 3차원 배열의 메모리 셀들을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.
  28. 제13항에 있어서,
    상기 다수의 비휘발성 저장 요소들은 3차원 메모리 구조로 배열되는 것을 특징으로 하는 비휘발성 저장 시스템.
KR1020127018078A 2009-12-15 2010-12-14 패스트 비트 감지 및 확인 생략을 구비한 비휘발성 저장소의 프로그래밍 KR101699917B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/638,853 2009-12-15
US12/638,853 US8174895B2 (en) 2009-12-15 2009-12-15 Programming non-volatile storage with fast bit detection and verify skip
PCT/US2010/060221 WO2011081910A1 (en) 2009-12-15 2010-12-14 Programming non-volatile storage with fast bit detection and verify skip

Publications (2)

Publication Number Publication Date
KR20120120221A KR20120120221A (ko) 2012-11-01
KR101699917B1 true KR101699917B1 (ko) 2017-01-25

Family

ID=43587352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127018078A KR101699917B1 (ko) 2009-12-15 2010-12-14 패스트 비트 감지 및 확인 생략을 구비한 비휘발성 저장소의 프로그래밍

Country Status (7)

Country Link
US (3) US8174895B2 (ko)
EP (1) EP2513906B1 (ko)
JP (1) JP2013514601A (ko)
KR (1) KR101699917B1 (ko)
CN (1) CN102754164B (ko)
TW (1) TW201133492A (ko)
WO (1) WO2011081910A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11869582B2 (en) 2020-12-01 2024-01-09 Samsung Electronics Co., Ltd. Non-volatile memory device and method of incrementally programming the same using a plurality of program loops

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8174895B2 (en) 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
KR101633018B1 (ko) * 2009-12-28 2016-06-24 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US8310870B2 (en) * 2010-08-03 2012-11-13 Sandisk Technologies Inc. Natural threshold voltage distribution compaction in non-volatile memory
JP5259667B2 (ja) * 2010-09-22 2013-08-07 株式会社東芝 不揮発性半導体記憶装置
KR20120087537A (ko) * 2011-01-28 2012-08-07 에스케이하이닉스 주식회사 비휘발성 메모리 장치 및 그의 동작 방법
US8988941B2 (en) * 2012-12-18 2015-03-24 SanDisk Tehcnologies Inc. Select transistor tuning
US8929142B2 (en) 2013-02-05 2015-01-06 Sandisk Technologies Inc. Programming select gate transistors and memory cells using dynamic verify level
US10083069B2 (en) * 2013-06-27 2018-09-25 Sandisk Technologies Llc Word line defect detection and handling for a data storage device
US9620238B2 (en) 2014-01-20 2017-04-11 Sandisk Technologies Llc Methods and systems that selectively inhibit and enable programming of non-volatile storage elements
US9817751B2 (en) * 2014-09-03 2017-11-14 Apple Inc. Multi-phase programming schemes for nonvolatile memories
US9443606B2 (en) 2014-10-28 2016-09-13 Sandisk Technologies Llc Word line dependent two strobe sensing mode for nonvolatile storage elements
US9570179B2 (en) * 2015-04-22 2017-02-14 Sandisk Technologies Llc Non-volatile memory with two phased programming
KR102347182B1 (ko) * 2015-09-04 2022-01-04 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
US9711211B2 (en) 2015-10-29 2017-07-18 Sandisk Technologies Llc Dynamic threshold voltage compaction for non-volatile memory
US9842655B2 (en) 2015-12-08 2017-12-12 Intel Corporation Reducing verification checks when programming a memory device
KR102365171B1 (ko) 2015-12-10 2022-02-21 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 동작 방법
CN106910520B (zh) * 2015-12-22 2021-05-28 北京忆芯科技有限公司 存储装置的写入方法、存储装置、存储控制器和存储系统
US9865311B1 (en) 2016-07-08 2018-01-09 Micron Technology, Inc. Memory device including current generator plate
US9728266B1 (en) 2016-07-08 2017-08-08 Micron Technology, Inc. Memory device including multiple select gates and different bias conditions
US10134474B1 (en) 2017-10-20 2018-11-20 Sandisk Technologies Llc Independent state completion for each plane during flash memory programming
KR102504295B1 (ko) 2017-11-24 2023-02-27 삼성전자 주식회사 비휘발성 메모리 장치 및 이의 프로그램 방법
US11081198B2 (en) 2019-05-16 2021-08-03 Sandisk Technologies Llc Non-volatile memory with countermeasure for over programming
US10839928B1 (en) * 2019-05-16 2020-11-17 Sandisk Technologies Llc Non-volatile memory with countermeasure for over programming
KR20210015331A (ko) 2019-08-01 2021-02-10 삼성전자주식회사 상태 쉐이핑 동작을 수행하기 위한 메모리 장치, 메모리 컨트롤러 및 이를포함하는 메모리 시스템
US11238924B2 (en) * 2019-11-21 2022-02-01 Kioxia Corporation Nonvolatile memory multilevel cell programming
US11049578B1 (en) * 2020-02-19 2021-06-29 Sandisk Technologies Llc Non-volatile memory with program verify skip
CN112965667A (zh) 2020-02-20 2021-06-15 长江存储科技有限责任公司 对多平面存储器件进行编程的方法和多平面存储器件
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
US11532370B1 (en) 2021-05-25 2022-12-20 Sandisk Technologies Llc Non-volatile memory with fast multi-level program verify
CN115512747A (zh) 2021-06-23 2022-12-23 桑迪士克科技有限责任公司 用于具有相邻平面干扰检测的智能验证的设备和方法
US11923019B2 (en) 2022-02-14 2024-03-05 Sandisk Technologies Llc Data retention reliability
US11908524B2 (en) * 2022-05-24 2024-02-20 Western Digital Technologies, Inc. Apparatus and methods for programming memory cells

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126676A1 (en) 2006-11-27 2008-05-29 Yan Li Segemented bitscan for verification of programming

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 사토 후미오 불휘발성 반도체 기억장치
EP0830684B1 (en) * 1995-06-07 2004-08-25 Macronix International Co., Ltd. Automatic programming algorithm for page mode flash memory with variable programming pulse height and pulse width
KR100253868B1 (ko) * 1995-11-13 2000-05-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
US6034882A (en) * 1998-11-16 2000-03-07 Matrix Semiconductor, Inc. Vertically stacked field programmable nonvolatile memory and method of fabrication
US6198662B1 (en) * 1999-06-24 2001-03-06 Amic Technology, Inc. Circuit and method for pre-erasing/erasing flash memory array
US6928001B2 (en) * 2000-12-07 2005-08-09 Saifun Semiconductors Ltd. Programming and erasing methods for a non-volatile memory cell
US6614687B2 (en) * 2001-05-03 2003-09-02 Macronix International Co., Ltd. Current source component with process tracking characteristics for compact programmed Vt distribution of flash EPROM
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
US6728140B2 (en) * 2001-12-05 2004-04-27 Nexflash Technologies, Inc. Threshold voltage convergence
US6950342B2 (en) * 2002-07-05 2005-09-27 Impinj, Inc. Differential floating gate nonvolatile memories
US6643185B1 (en) * 2002-08-07 2003-11-04 Advanced Micro Devices, Inc. Method for repairing over-erasure of fast bits on floating gate memory devices
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
KR100521364B1 (ko) * 2002-11-18 2005-10-12 삼성전자주식회사 플레쉬 메모리 셀들의 프로그램 오판을 방지하고 균일한문턱 전압 산포를 가질 수 있는 플레쉬 메모리 장치 및 그프로그램 검증 방법
US7073103B2 (en) * 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
DE60317457D1 (de) * 2003-01-31 2007-12-27 St Microelectronics Srl Einbettbares Flashspeichersystem für nichtflüchtige Speicherung von Kode, Daten und Bitströmen für eingebettete FPGA-Konfigurationen
US6859397B2 (en) 2003-03-05 2005-02-22 Sandisk Corporation Source side self boosting technique for non-volatile memory
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
US7177199B2 (en) * 2003-10-20 2007-02-13 Sandisk Corporation Behavior based programming of non-volatile memory
KR100528483B1 (ko) * 2004-01-02 2005-11-15 삼성전자주식회사 패스/페일 점검이 가능한 불휘발성 반도체 메모리장치
US7154779B2 (en) * 2004-01-21 2006-12-26 Sandisk Corporation Non-volatile memory cell using high-k material inter-gate programming
US7206224B1 (en) * 2004-04-16 2007-04-17 Spansion Llc Methods and systems for high write performance in multi-bit flash memory devices
US7092290B2 (en) * 2004-11-16 2006-08-15 Sandisk Corporation High speed programming system with reduced over programming
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
US7196928B2 (en) 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
US7345918B2 (en) * 2005-08-31 2008-03-18 Micron Technology, Inc. Selective threshold voltage verification and compaction
US7301817B2 (en) * 2005-10-27 2007-11-27 Sandisk Corporation Method for programming of multi-state non-volatile memory using smart verify
US7310255B2 (en) * 2005-12-29 2007-12-18 Sandisk Corporation Non-volatile memory with improved program-verify operations
US7307887B2 (en) * 2005-12-29 2007-12-11 Sandisk Corporation Continued verification in non-volatile memory write operations
US7224614B1 (en) * 2005-12-29 2007-05-29 Sandisk Corporation Methods for improved program-verify operations in non-volatile memories
US7457163B2 (en) * 2006-06-01 2008-11-25 Sandisk Corporation System for verifying non-volatile storage using different voltages
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
US7304893B1 (en) * 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
JP5067645B2 (ja) * 2006-11-27 2012-11-07 サンディスク テクノロジーズ インコーポレイテッド プログラミング検証のためのセグメント化されたビットスキャン
KR100794311B1 (ko) * 2006-12-27 2008-01-11 삼성전자주식회사 프로그램 에러를 차단할 수 있는 멀티 비트 플래시 메모리장치의 프로그램 방법
US7596028B2 (en) * 2006-12-28 2009-09-29 Macronix International Co., Ltd. Variable program and program verification methods for a virtual ground memory in easing buried drain contacts
US7616499B2 (en) * 2006-12-28 2009-11-10 Sandisk Corporation Retention margin program verification
US7616500B2 (en) * 2007-02-20 2009-11-10 Sandisk Corporation Non-volatile storage apparatus with multiple pass write sequence
KR101397549B1 (ko) * 2007-08-16 2014-05-26 삼성전자주식회사 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법
US7652929B2 (en) * 2007-09-17 2010-01-26 Sandisk Corporation Non-volatile memory and method for biasing adjacent word line for verify during programming
US7688638B2 (en) * 2007-12-07 2010-03-30 Sandisk Corporation Faster programming of multi-level non-volatile storage through reduced verify operations
US8706951B2 (en) * 2008-07-18 2014-04-22 Marvell World Trade Ltd. Selectively accessing faster or slower multi-level cell memory
US7768836B2 (en) * 2008-10-10 2010-08-03 Sandisk Corporation Nonvolatile memory and method with reduced program verify by ignoring fastest and/or slowest programming bits
US8261158B2 (en) * 2009-03-13 2012-09-04 Fusion-Io, Inc. Apparatus, system, and method for using multi-level cell solid-state storage as single level cell solid-state storage
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage
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
US8174895B2 (en) 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
US8213255B2 (en) * 2010-02-19 2012-07-03 Sandisk Technologies Inc. Non-volatile storage with temperature compensation based on neighbor state information
US8274831B2 (en) * 2010-05-24 2012-09-25 Sandisk Technologies Inc. Programming non-volatile storage with synchronized coupling
US8274838B2 (en) * 2010-07-19 2012-09-25 Sandisk Technologies Inc. Programming non-volatile memory with bit line voltage step up
US8949689B2 (en) * 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126676A1 (en) 2006-11-27 2008-05-29 Yan Li Segemented bitscan for verification of programming

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11869582B2 (en) 2020-12-01 2024-01-09 Samsung Electronics Co., Ltd. Non-volatile memory device and method of incrementally programming the same using a plurality of program loops

Also Published As

Publication number Publication date
JP2013514601A (ja) 2013-04-25
US20110170358A1 (en) 2011-07-14
EP2513906B1 (en) 2016-02-17
KR20120120221A (ko) 2012-11-01
CN102754164A (zh) 2012-10-24
US20120188824A1 (en) 2012-07-26
US8174895B2 (en) 2012-05-08
WO2011081910A1 (en) 2011-07-07
TW201133492A (en) 2011-10-01
EP2513906A1 (en) 2012-10-24
USRE46056E1 (en) 2016-07-05
US8456915B2 (en) 2013-06-04
CN102754164B (zh) 2015-07-01

Similar Documents

Publication Publication Date Title
KR101699917B1 (ko) 패스트 비트 감지 및 확인 생략을 구비한 비휘발성 저장소의 프로그래밍
EP2718934B1 (en) Intelligent shifting of read pass voltages for non-volatile storage
EP2476120B1 (en) Identifying at-risk data in non-volatile storage
KR101566460B1 (ko) 비휘발성 메모리 어레이 중 마지막 워드 라인의 데이터 보존 개선
USRE45603E1 (en) Detecting the completion of programming for non-volatile storage
EP2467854B1 (en) Selective memory cell program and erase
EP2780912B1 (en) Non-volatile storage with data recovery
WO2014137651A1 (en) Non-volatile storage with process that reduces read disturb on end wordlines
WO2009148906A1 (en) Erase-verification process for non-volatile storage
WO2014120943A1 (en) Adaptive initial program voltage for non-volatile memory
WO2014011627A1 (en) Programming method to tighten threshold voltage width with avoiding program disturb
WO2008067185A1 (en) Segmented bitscan for verification of programming

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: 20191217

Year of fee payment: 4