KR101806588B1 - 비휘발성 메모리에서의 자연 임계 전압 분포 압축 - Google Patents

비휘발성 메모리에서의 자연 임계 전압 분포 압축 Download PDF

Info

Publication number
KR101806588B1
KR101806588B1 KR1020137005434A KR20137005434A KR101806588B1 KR 101806588 B1 KR101806588 B1 KR 101806588B1 KR 1020137005434 A KR1020137005434 A KR 1020137005434A KR 20137005434 A KR20137005434 A KR 20137005434A KR 101806588 B1 KR101806588 B1 KR 101806588B1
Authority
KR
South Korea
Prior art keywords
programming
storage elements
volatile storage
phase
word line
Prior art date
Application number
KR1020137005434A
Other languages
English (en)
Other versions
KR20130095271A (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 KR20130095271A publication Critical patent/KR20130095271A/ko
Application granted granted Critical
Publication of KR101806588B1 publication Critical patent/KR101806588B1/ko

Links

Images

Classifications

    • 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
    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells

Landscapes

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

Abstract

비휘발성 메모리 시스템에서, 비트 라인 전압 상승과 같은 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 저장 소자들에 적용된다. 전진-후진 워드 라인 순서를 사용하는 복수-국면 프로그래밍 동작이 수행되며, 여기서 프로그래밍 속도 데이터가 일 프로그래밍 국면에서 래치들에 저장되며 소정의 워드 라인의 후속 프로그래밍 국면에서의 사용을 위해 래치들로부터 판독된다. 고속-프로그래밍 저장 소자들 및 저속-프로그래밍 비휘발성 저장 소자들이 구별될 수 있는바, 이러한 구별은 다수의 저장 소자들이 특정 검증 레벨에 도달한 때를 검출하고, 저장 소자들의 자연 임계 전압 분포에 근거하여 설정된 프로그램 펄스들의 추가적 개수를 카운트하고, 그리고 후속적으로 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들을 분리하는 판독 동작을 수행함으로써 이루어진다. 드레인측 선택 게이트 전압이, 서로 다른 비트 라인 바이어스 레벨들을 수용하기 위해 서로 다른 프로그래밍 국면들에서 조정될 수 있다.

Description

비휘발성 메모리에서의 자연 임계 전압 분포 압축{NATURAL THRESHOLD VOLTAGE DISTRIBUTION COMPACTION IN NON-VOLATILE MEMORY}
본 발명의 기법은 비휘발성 메모리에 관한 것이다.
반도체 메모리는 다양한 전자 디바이스들에서 점점 더 널리 사용되고 있다. 예를 들어, 비휘발성 반도체 메모리는, 셀룰러 전화기, 디지털 카메라, PDA(Personal Digital Assistants), 휴대용 컴퓨팅 디바이스, 비휴대용 컴퓨팅 디바이스, 및 다른 디바이스에서 사용된다. 전기적으로 소거가능하고 프로그래밍가능한 판독 전용 메모리(Electronically Erasable Programmable Read Only Memory, EEPROM) 및 플래시 메모리는 가장 널리 사용되는 비휘발성 반도체 메모리들 중 하나이다. 플래시 메모리에 있어서, 또한 EEPROM 타입인 경우, 전체 메모리 어레이의 콘텐츠들 혹은 메모리의 일부분은, 종래의 풀-피처드 EEPROM(full-featured EEPROM)과는 대조적으로, 하나의 스텝(step)으로 소거될 수 있다.
종래의 EEPROM과 플래시 메모리 양쪽 모두는 플로팅 게이트(floating gate)를 사용하는바, 여기서 플로팅 게이트는 반도체 기판 내의 채널 영역 위에 위치하며 채널 영역으로부터 절연되어 있다. 플로팅 게이트는 소스 영역과 드레인 영역 사이에 위치한다. 제어 게이트는 플로팅 게이트 위에 위치하며 플로팅 게이트로부터 절연되어 있다. 따라서, 형성되는 트랜지스터의 임계 전압(Vth)은 플로팅 게이트에 보유된 전하의 양에 의해 제어된다. 즉, 트랜지스터가 턴온되어 소스와 드레인 간의 전도가 일어나기 전에 제어 게이트에 가해져야만 하는 전압의 최소량은, 플뢰팅 게이트의 전하 레벨에 의해 제어된다.
가장 중요한 것은 데이터를 메모리에 정확하게 프로그래밍하는 능력이다. 그러나, 이것은 메모리 크기가 축소됨에 따라 더 어려워지고 있다.
도 1은 단일 로우/컬럼 디코더들 및 판독/기입 회로들을 사용하는 비휘발성 메모리 시스템의 블록도이다.
도 2는 도 1의 메모리 어레이(155) 내의 NAND 플래시 메모리 셀들의 블록들을 나타낸다.
도 3은 도 1의 감지 블록(100)의 일 실시예를 나타낸 블록도이다.
도 4는 감지를 위한 컴포넌트들 및 NAND 스트링의 구성을 나타낸다.
도 5는 프로그래밍 동작에서 선택 워드 라인에 가해진 프로그램 펄스들을 나타낸다.
도 6은 복수-국면 프로그래밍 동작의 서로 다른 국면들에서 가해질 수 있는 프로그램 전압들을 나타낸다.
도 7a는 전진-후진 워드 라인 순서(back-and-forth word line order)로 행해지는 저장 소자들의 세트에 대한 2-국면 프로그래밍 동작을 나타낸다.
도 7b는 전진-후진 워드 라인 순서로 행해지는 저장 소자들의 세트에 대한 3-국면 프로그래밍 동작을 나타낸다.
도 8a는 복수-국면 프로그래밍 동작을 개략적으로 나타낸 것이다.
도 8b는 도 8a의 복수-국면 프로그래밍 동작의 단계들(800, 802 또는 806)을 세부적으로 나타낸 것이다.
도 8c는 도 8a의 복수-국면 프로그래밍 동작의 단계(804 또는 808)를 세부적으로 나타낸 것이다.
도 8d는 3-국면 프로그래밍 동작과 연결된 단계들(800 및 804)을 세부적으로 나타낸 것으로, 여기서는, 3-국면 프로그래밍 동작의 제 2 국면에서, 상위-상태 저장 소자들 전에 하위-상태 저장 소자들에 대해 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별된다.
도 8e는 3-국면 프로그래밍 동작과 연결된 단계들(800 및 804)을 세부적으로 나타낸 것으로, 여기서는, 3-국면 프로그래밍 동작의 제 1 국면에서, 상위-상태 저장 소자들에 대해 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별되고, 그리고 3-국면 프로그래밍 동작의 제 2 국면에서, 하위-상태 저장 소자들에 대해 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별된다.
도 9a는, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들을 포함하는 저장 소자들의 세트의 자연 임계 전압 분포를 나타낸다.
도 9b는 저장 소자들의 세트의 자연 임계 전압 분포의 폭이 좁혀진 것을 나타낸다.
도 9c는 저장 소자의 프로그래밍을 위해 필요한 Vpgm과 저장 소자의 비트 라인 전압 간의 관계를 나타낸다.
도 9d는 예시적인 프로그래밍 시나리오들을 나타낸다.
도 10a는 2-국면 프로그래밍 동작의 제 1 국면의 시작을 나타내며, 여기서 모든 저장 소자들은 소거 상태에 있다.
도 10b는 도 10a 이후의 상태를 나타내며, 여기서는, 2-국면 프로그래밍 동작의 제 1 국면에서 최소 개수의 저장 소자들이 Vth>VvaL을 갖는다.
도 10c는 추가적인 "m"개의 프로그래밍 펄스들이 가해진 다음에, 도 10b 이후의 제 1 대안예를 나타내며, 여기서는, 2-국면 프로그래밍 동작의 제 1 국면에서, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 VvaL의 검증 레벨을 이용하여 구별된다.
도 10d는 추가적인 "k"개의 프로그래밍 펄스들이 가해진 다음에, 도 10b 이후의 제 2 대안예를 나타내며, 여기서는, 2-국면 프로그래밍 동작의 제 1 국면에서, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 Vv의 판독 레벨을 이용하여 구별된다.
도 10e는 도 10c 혹은 도 10d 중 어느 하나의 상태로부터의 2-국면 프로그래밍 동작의 제 1 국면에서의 프로그래밍을 나타낸다.
도 10f는 도 10e 이후의 상태를 나타내며, 2-국면 프로그래밍 동작의 제 2 국면의 시작을 나타낸다.
도 10g는 도 10f의 상태로부터의 2-국면 프로그래밍 동작의 제 2 국면에서의 프로그래밍을 나타낸다.
도 11a는 3-국면 프로그래밍 동작의 제 1 국면의 시작을 나타내며, 여기서는 4-레벨 메모리 디바이스에 있어서 모든 저장 소자들은 소거 상태에 있다.
도 11b는 도 11a 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 1 국면에서 최소 개수의 상위-상태 저장 소자들이 Vth>VvLM을 갖는다.
도 11c는 추가적인 "m"개의 프로그래밍 펄스들이 가해진 다음에, 도 11b 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 1 국면에서, 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들이 Vvh의 판독 레벨을 이용하여 구별된다.
도 11d는 도 11c 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 2 국면의 시작을 나타낸다.
도 11e는 도 11d의 상태 이후, 3-국면 프로그래밍 동작의 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍을 나타낸다.
도 11f는 도 11e의 상태 이후, 3-국면 프로그래밍 동작의 제 3 국면의 시작을 나타낸다.
도 11g는 도 11f의 상태로부터의 3-국면 프로그래밍 동작의 제 3 국면에서의 프로그래밍을 나타낸다.
도 11h는, 도 11f 및 도 11g에 대한 대안예로서, 도 11d의 상태 이후, 2-국면 프로그래밍 동작의 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍을 나타낸다.
도 12a는 3-국면 프로그래밍 동작의 제 1 대안적 제 2 국면의 시작에 있는 도 11d의 상태 이후 프로그래밍을 나타내며, 여기서는, 최소 개수의 하위-상태 저장 소자들이 Vth>VvaL을 갖는다.
도 12b는 추가적인 "k"개의 프로그래밍 펄스들이 가해진 다음에, 도 12a 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 2 국면에서, 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 이용하여 구별된다.
도 12c는 도 12b의 상태 이후, 3-국면 프로그래밍 동작의 제 1 대안적 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍을 나타낸다.
도 13a는 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면의 시작을 나타내며, 여기서는, 하위 검증 레벨, VvLMx가 VvLM 대신 사용된다.
도 13b1은 도 13a 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서 최소 개수의 하위-상태 저장 소자들이 Vth>VvaL을 갖는다.
도 13b2는 추가적인 "k1"개의 프로그래밍 펄스들이 가해진 다음에, 도 13b1 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 이용하여 구별된다.
도 13c1은 도 13a 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서 최소 개수의 상위-상태 저장 소자들이 Vth>VvbL을 갖는다.
도 13c2는 추가적인 "k2"개의 프로그래밍 펄스들이 가해진 다음에, 도 13c1 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서, 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들이 Vvh의 판독 레벨을 이용하여 구별된다.
도 13d는 도 13b2 및 도 13c2의 상태들 이후, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍을 나타낸다.
도 14a는 3-국면 프로그래밍 동작의 제 1 국면의 시작을 나타내며, 여기서는 8-레벨 메모리 디바이스에 있어서 모든 저장 소자들은 소거 상태에 있다.
도 14b는 도 14a 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 1 국면에서 최소 개수의 상위-상태 저장 소자들이 Vth>VvLM을 갖는다.
도 14c는 추가적인 "k"개의 프로그래밍 펄스들이 가해진 다음에, 도 14b 이후의 상태를 나타내며, 3 국면 프로그래밍 동작의 제 1 국면에서, 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들이 Vvh의 판독 레벨을 이용하여 구별된다.
도 14d는 도 14c 이후의 상태를 나타내며 여기서 3-국면 프로그래밍 동작의 제 1 국면이 완료된다.
도 14e는 도 14d 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 2 국면에서의 프로그래밍이 일어나고, 최소 개수의 하위-상태 저장 소자들이 Vth>VvaL을 갖는다.
도 14f는 추가적인 "k"개의 프로그래밍 펄스들이 가해진 다음에, 도 14e 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 2 국면에서, 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 이용하여 구별된다.
도 14g는 도 14f 이후의 상태를 나타내며 여기서 3-국면 프로그래밍 동작의 제 2 국면이 완료된다.
도 14h는 도 14g 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 3 국면의 시작을 나타낸다.
도 14i는 도 14h 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 3 국면의 끝을 나타낸다.
도 15a는 대안적 3-국면 프로그래밍 동작의 제 1 국면에서의 프로그래밍을 나타내며, 여기서는 8-레벨 메모리 디바이스에 있어서 모든 저장 소자들은 소거 상태에 있다.
도 15b1은 대안적 3-국면 프로그래밍 동작의 제 2 국면에서, 도 15a의 상태 이후의 프로그래밍을 나타내며, 여기서는 최소 개수의 하위-상태 저장 소자들이 Vth>VvaL을 갖는다.
도 15b2는 추가적인 "k1"개의 프로그래밍 펄스들이 가해진 다음에, 대안적 3-국면 프로그래밍 동작의 제 2 국면에서, 도 15b1의 상태 이후의 상태를 나타내며, 여기서는 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 이용하여 구별된다.
도 15c1은 대안적 3-국면 프로그래밍 동작의 제 2 국면에서, 도 15a의 상태 이후의 프로그래밍을 나타내며, 여기서는 최소 개수의 상위-상태 저장 소자들이 Vth>VvdL을 갖는다.
도 15c2는 추가적인 "k2"개의 프로그래밍 펄스들이 가해진 다음에, 대안적 3-국면 프로그래밍 동작의 제 2 국면에서, 도 15c1의 상태 이후의 상태를 나타내며, 여기서는 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들이 Vvh의 판독 레벨을 이용하여 구별된다.
도 15d는 도 15b2 및 도 15c2의 상태들 이후의 프로그래밍을 나타내며, 여기서 대안적 3-국면 프로그래밍 동작의 제 2 국면이 완료된다.
도 15e는 도 15d의 상태 이후의 프로그래밍을 나타내며, 여기서 대안적 3-국면 프로그래밍 동작의 제 3 국면이 완료된다.
도 16a1은 2-비트 저장 소자들에 있어서 복수-국면 프로그래밍 동작에서의 사용을 위한 각각의 비트 라인들에 대한 데이터 래치들을 나타낸다.
도 16a2는 3-비트 저장 소자들에 있어서 복수-국면 프로그래밍 동작에서의 사용을 위한 각각의 비트 라인들에 대한 데이터 래치들을 나타낸다.
도 16b는 사례 1에 있어서 데이터 래치들에 저장된 데이터를 나타낸다.
도 16c1은 사례 2에 있어서 데이터 래치들에 저장된 데이터를 나타낸다.
도 16c2는 도 16c1에 대한 대안예를 나타내며, 여기서는 프로그래밍 속도 데이터가 제 3 국면에서 적용되지 않는다.
도 16c3은 사례 2A에 있어서 데이터 래치들에 저장된 데이터를 나타낸다.
도 16d1은 사례 3 혹은 사례 5에 있어서 데이터 래치들에 저장된 데이터를 나타낸다.
도 16d2는 도 16d1에 대한 대안예를 나타내며, 여기서는 프로그래밍 속도 데이터가 제 3 국면에서 적용되지 않는다.
도 16e는 사례 4 혹은 사례 6에 있어서 데이터 래치들에 저장된 데이터를 나타낸다.
고속-프로그래밍 저장 소자들(faster-programming storage elements)과 저속-프로그래밍 저장 소자들(slower-programming storage elements)을 구별함으로써 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법 및 비휘발성 저장 시스템이 제시된다.
메모리 디바이스들의 스케일링(scaling)으로 인해, 워드 라인을 따라 저장 소자들간 편차들이 더 많이 일어날 수 있고, 이에 따라 저장 소자들의 세트의 자연 임계 전압(natural threshold voltage)(Vth) 분포가 증가하게 된다. 자연 Vth 분포의 폭이 넓어지게 되는 경우, 각각의 데이터 상태에 대해 요구된 검증 동작의 수가 또한 증가하게 되고, 이것은 전체 프로그래밍 시간을 증가시킴으로써 프로그래밍 성능을 저하시키게 된다. 이러한 문제를 극복하기 위해, 프로그래밍 국면들(programming phases) 중 하나 이상에서 고속-프로그래밍 저장 소자들을 검출하여 감속 조치(예를 들어, 비트 라인 전압 상승)를 선택적으로 이들에게 적용함으로써, 자연 Vth 분포는 복수-국면 프로그래밍 동작(multi-phase programming operation)에서 감소될 수 있다. 다양한 예시적 구현예들이 2-국면 프로그래밍 동작 및 3-국면 프로그래밍 동작에서 제공되지만, 본 기법은 일반적으로 적용가능하다. 더욱이, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들(예를 들어, 저장 소자들의 2가지 클래스들(classes))을 구별하는 대신, 저장 소자들의 프로그래밍 속도에 근거하여 저장 소자들의 셋 이상의 클래스들을 구별하고 각각의 클래스에 맞게 조정된 감속 조치를 고속 클래스들에 적용하는 것이 가능하다. 더욱이, 감속 조치는, 비트 라인 전압들이 더해질 수 있는 경우인 일부 프로그래밍 기법들에서 적용되는 추가적인 비트 라인 증가와 호환가능하다. 드레인측 선택 게이트 전압은, 더 큰 비트 라인 전압을 수용하기 위해 그 선택된 프로그래밍 국면에서의 프로그래밍 동안 증가될 수 있다.
사용될 수 있는 예시적인 메모리 시스템이 이하에서 설명된다. 일반적으로, 임의 타입의 비휘발성 메모리가 사용될 수 있다. NAND 스트링(string)들을 갖는 메모리는 단지 예시적인 것이다. 도 1은 단일 로우(row)/컬럼(column) 디코더(decoder)들 및 판독/기입 회로들을 사용하는 비휘발성 메모리 시스템의 블록도이다. 본 도면은, 일 실시예에 따른, 저장 소자들의 페이지를 병렬로 판독 및 프로그래밍하기 위한 판독/기입 회로들을 구비한 메모리 디바이스(196)를 예시한다. 메모리 디바이스(196)는 하나 이상의 메모리 다이(memory die)(198)를 포함할 수 있다. 메모리 다이(198)는, 저장 소자들의 2차원 메모리 어레이(155), 제어 회로(110), 및 판독/기입 회로들(165)을 포함한다. 메모리 어레이(155)는 도 4와 연계되어 더 설명된다.
일부 실시예들에서, 저장 소자들의 어레이는 3차원일 수 있다. 메모리 어레이(155)는 로우 디코더(130)를 통해 워드 라인들에 의해, 그리고 컬럼 디코더(160)를 통해 비트 라인들에 의해 어드레싱(addressing)가능하다. 판독/기입 회로들(165)은 복수의 감지 블록들(100)을 포함하고, 저장 소자들의 페이지가 병렬로 판독 혹은 프로그래밍될 수 있게 한다. 전형적으로, 제어기(150)가 하나 이상의 메모리 다이(198)와 같이 동일 메모리 디바이스(196)(예를 들어, 탈착가능 저장 카드)에 포함된다. 커맨드(command)들과 데이터는 라인들(120)을 통해 호스트와 제어기(150) 간에 전달되고, 라인들(118)을 통해 제어기와 하나 이상의 메모리 다이(198) 간에 전달된다.
제어 회로(110)는, 메모리 어레이(155) 상에서의 메모리 동작들을 수행하기 위해 판독/기입 회로들(165)과 함께 동작하고, 상태 머신(112), 온-칩 어드레스 디코더(114), 및 파워 제어 모듈(116)을 포함한다. 상태 머신(112)은 메모리 동작들의 칩-레벨 제어(chip-level control)를 제공한다. 온-칩 어드레스 디코더(114)는, 호스트 혹은 메모리 제어기에 의해 사용되는 어드레스와 디코더들(130 및 160)에 의해 사용되는 하드웨어 어드레스 간의 어드레스 인터페이스를 제공한다. 파워 제어 모듈(116)은 메모리 동작 동안 워드 라인들 및 비트 라인들에 공급되는 파워 및 전압을 제어한다.
일부 구현예들에서, 도 1의 컴포넌트들의 일부는 결합될 수 있다. 다양한 설계에서는, 메모리 어레이(155)와는 다른 하나 이상의 (단독 혹은 결합된) 컴포넌트들이 관리 혹은 제어 회로로서 고려될 수 있다. 예를 들어, 하나 이상의 제어 회로들은, 제어 회로(110), 상태 머신(112), 디코더들(114/160), 파워 제어(116), 감지 블록들(100)(도 3에서의 프로세서(192)를 포함함), 판독/기입 회로들(165), 및 제어기(150) 등 중 어느 하나를 포함할 수 있거나 이들의 결합을 포함할 수 있다. 감지 블록(100)은 도 3과 연계되어 더 설명된다.
또 다른 실시예에서, 비휘발성 메모리 시스템은 듀얼(dual) 로우/컬럼 디코더들 및 판독/기입 회로들을 사용한다. 다양한 주변기기 회로들에 의한 메모리 어레이(155)로의 액세스는, 어레이의 대향 측면들에 대칭적으로 구현되어, 각각의 측면에서의 회로 및 액세스 라인들의 밀도는 반으로 감소하게 된다. 따라서, 로우 디코더는 2개의 로우 디코더들로 분할되고, 컬럼 디코더는 2개의 컬럼 디코더들로 분할된다. 마찬가지로, 판독/기입 회로들은, 어레이(155)의 하부로부터 비트 라인들에 연결되는 판독/기입 회로들과 어레이(155)의 상부로부터 비트 라인들에 연결되는 판독/기입 회로들로 분할된다. 이런 방식으로, 판독/기입 모듈들의 밀도는 실질적으로 1/2만큼 줄어든다.
도 2는 도 1의 메모리 어레이(155) 내의 NAND 플래시 메모리 셀들의 블록들을 나타낸다. 메모리 어레이는 많은 블록들을 포함할 수 있다. 각각의 예시적 블록(200, 210)은 다수의 NAND 스트링들과, 그리고 블록들 간에 공유되는 각각의 비트 라인들(예를 들어, BL0, BL1, ...)을 포함한다. 각각의 NAND 스트링의 일단(one end)은 드레인 선택 게이트(drain select gate)(SGD)에 연결되고, 드레인 선택 게이트들의 제어 게이트들은 공통 SGD 라인을 통해 연결된다. NAND 스트링들의 타단은 소스 선택 게이트(source select gate)에 연결되고, 소스 선택 게이트는 또한 공통 소스 라인(220)에 연결된다. 소스 선택 게이트들과 드레인 선택 게이트들 사이에 64개의 워드 라인들(예를 들어, WL0-WL63)이 연장되어 있다. 일부 경우들에 있어서는, 더미 워드 라인들(dummy word lines)이 또한 메모리 어레이 내에 사용될 수 있다. 이러한 워드 라인들은 어떠한 사용자 데이터도 포함하지 않는다. 예를 들어, 더미 워드 라인은 SGS와 WL0 사이 그리고 SGD와 WL63 사이에 있을 수 있다. 이러한 더미 워드 라인들은, 본 특정 예에서는 WL0 및 WL63에서 일어날 수 있는 어떤 에지 효과(edge effects)(예를 들어, 어떤 프로그램 교란 메커니즘 혹은 내구성 저하)로부터 가장자리 데이터 워드 라인을 보호할 수 있다.
NAND 플래시 메모리에 추가하여 다른 타입의 비휘발성 메모리가 또한 사용될 수 있다. 예를 들어, 플래시 EEPROM 시스템들에서 유용한 또 다른 타입의 메모리 셀은, 비휘발성 방식으로 전하를 저장하기 위해 전도성 플로팅 게이트 대신 비전도성 유전체 물질을 사용한다. 실리콘 옥사이드(silicon oxide), 실리콘 나이트라이드(silicon nitride), 및 실리콘 옥사이드(silicon oxide)로 형성된 3층 유전체("ONO")가 메모리 셀 채널 위에서 반-전도성 기판의 표면과 전도성 제어 게이트 사이에 샌드위치된다. 셀은 전자들을 셀 채널로부터 나이트라이드에 주입함으로써 프로그래밍되는바, 여기에서 전자들은 한정된 영역에 트랩(trap) 및 저장된다. 이렇게 저장된 전하는 그 다음에, 검출가능한 방식으로 셀의 채널의 일부분의 임계 전압을 변경시킨다. 셀은 핫 홀(hot hole)들을 나이트라이드에 주입함으로써 소거된다. 유사한 셀이 분할-게이트 구성(split-gate configuration)으로 제공될 수 있는바, 여기서는, 도핑된 폴리실리콘 게이트가 메모리 셀 채널의 일부분 위에서 연장하여 개별 선택 트랜지스터를 형성하게 된다.
또 다른 방법에서, NROM 셀들이 사용된다. 예를 들어, 2개의 비트들이 각각의 NROM 셀에 저장되는바, 여기서 ONO 유전체 층은 소스 확산부와 드레인 확산부 사이의 채널에 걸쳐 연장된다. 하나의 데이터 비트에 대한 전하는 드레인에 인접한 유전체 층에 국한되고, 다른 데이터 비트에 대한 전하는 소스에 인접한 유전체 층에 국한된다. 유전체 내에서 공간적으로 분리된 전하 저장 영역들의 바이너리 상태(binary state)들을 개별적으로 판독함으로써 복수-상태 데이터 저장이 획득된다. 다른 타입의 비휘발성 메모리가 또한 알려져 있다.
도 3은 감지 블록의 일 실시예를 나타낸 블록도이다. 개개의 감지 블록(100)은, 하나 이상의 코어 부분(core portion)들(이것은 감지 모듈들(180)로서 지칭됨)과, 그리고 공통 부분(common portion)(이것은 관리 회로(190)로서 지칭됨)으로 구획되어 있다. 일 실시예에서는, 각각의 비트 라인에 대한 개별 감지 모듈(180)이 있고, 복수(예를 들어, 4개 혹은 8개)의 감지 모듈들(180)의 세트에 대한 하나의 공통 관리 회로(190)가 있다. 한 그룹의 감지 모듈들 각각은, 관련된 관리 회로와 데이터 버스(172)를 통해 통신한다. 따라서, 저장 소자들의 세트의 감지 모듈들과 통신하는 하나 이상의 관리 회로들이 있다.
감지 모듈(180)은 감지 회로(170)를 포함하고, 여기서 감지 회로(170)는 연결된 비트 라인에서의 전도 전류가 소정의 임계 레벨보다 큰지 혹은 작은지를 결정함으로써 감지 동작을 수행한다. 감지 모듈(180)은 또한, 비트 라인 래치(bit line latch)(182)를 포함하는바, 여기서 비트 라인 래치(182)는 연결된 비트 라인 상의 전압 상태를 설정하는데 사용된다. 예를 들어, 비트 라인 래치(182)에 래치된 소정의 상태는, 연결된 비트 라인이 프로그램 금지를 나타내는 상태(예를 들어, 1.5-3V)가 되게 한다. 예를 들어, 플래그(flag)=0은 프로그래밍을 금지시킬 수 있고, 플래그=1은 프로그래밍을 금지시키지 않는다.
관리 회로(190)는, 프로세서(192), 데이터 래치들의 4개의 예시적인 세트들(194-197), 데이터 래치들의 세트(194)와 데이터 버스(120) 사이에 결합되는 I/O 인터페이스(196)를 포함한다. 데이터 래치들의 1개의 세트가 각각의 감지 모듈을 위해 제공될 수 있고, 각각의 세트에 대해 LDL, UDL, DL1 및 DL2에 의해 식별되는 데이터 래치들이 제공될 수 있다. 일부 경우들에서는, 추가적인 데이터 래치들이 사용될 수 있다. 도 16a1과 도 16a2를 또한 참조하기 바란다. LDL은 데이터의 하위 페이지에 대한 비트를 저장하고, UDL은 데이터의 상위 페이지에 대한 비트를 저장한다. 이것은 4-레벨형 혹은 2-비트형 저장 소자 메모리 디바이스이다. 저장 소자당 각각의 추가적인 데이터 비트에 대해 비트 라인당 하나의 추가적인 데이터 래치가 제공될 수 있다. DL1 및 DL2는, 관련된 저장 소자가 고속-프로그래밍인지 아니면 저속-프로그래밍인지를 표시하는 비트를 저장하는데 사용된다. 일부 경우들에 있어서, 추가 데이터 래치들의 수는 복수-국면 프로그래밍 동작에서의 국면들의 수와 동일하며, 반면 다른 경우들에 있어서, 추가 데이터 래치들의 수는 복수-국면 프로그래밍 동작에서의 국면들의 수보다 작다. 데이터 래치들의 용도는 특히 도 16a1 내지 도 16e와 연계하여 아래에서 더 설명된다.
프로세서(192)는, 예를 들어, 감지된 저장 소자에 저장된 데이터를 결정하고 그 결정된 데이터를 데이터 래치들의 세트에 저장하기 위한 연산들을 수행한다. 데이터 래치들의 각각의 세트(194-197)는, 판독 동작 동안 프로세서(192)에 의해 결정된 데이터 비트들을 저장하는데 사용되고, 그리고 프로그래밍 동작 동안 데이터 버스(120)로부터 들어온 (메모리에 프로그래밍될 기입 데이터를 나타내는) 데이터 비트들을 저장하는데 사용된다. I/O 인터페이스(196)는 데이터 래치들(194-197)과 데이터 버스(120) 간의 인터페이스를 제공한다.
판독 동안, 시스템의 동작은 상태 머신(112)의 제어하에 있게 되는데, 상태 머신(112)은 서로 다른 제어 게이트 전압들을 어드레싱된 저장 소자에 공급하는 것을 제어한다. 메모리에 의해 지원되는 다양한 메모리 상태들에 대응하는 다양한 소정의 제어 게이트 전압들에 대해 스텝핑(stepping)을 행함에 따라, 감지 모듈(180)은 이러한 전압들 중 하나에서 트립핑(tripping)할 수 있고, 대응하는 출력이 버스(172)를 통해 감지 모듈(180)로부터 프로세서(192)에 제공된다. 이때, 프로세서(192)는, 입력 라인들(193)을 통해 상태 머신으로부터의 가해진 제어 게이트 전압에 대한 정보 및 감지 모듈의 트립핑 이벤트(들)를 고려함으로써, 그 결과적인 메모리 상태를 결정한다. 그 다음에, 프로세서(192)는 메모리 상태에 대한 바이너리 인코딩을 컴퓨팅(computing)하고 그 결과값인 데이터 비트들을 데이터 래치들(194-197)에 저장한다. 관리 회로(190)의 또 다른 예에서, 비트 라인 래치(182)는 2가지 역할을 하는바, 즉 감지 모듈(180)의 출력을 래치하는 래치로서의 역할과, 앞서 설명된 바와 같은 비트 라인 래치로서의 역할을 모두 한다.
일부 구현예들은 복수의 프로세서들(192)을 포함할 수 있다. 일 실시예에서, 각각의 프로세서(192)는, 출력 라인들 각각이 함께 와이드-OR(wired-OR) 되는 그러한 출력 라인(미도시)을 포함한다. 일부 구현예들에서, 출력 라인들은 와이드-OR 라인에 연결되기 전에 인버트(invert)된다. 이러한 구성은, 프로그래밍 프로세스가 완료된 때의 프로그램 검증 프로세스 동안 빠른 결정을 가능하게 하는데, 왜냐하면 와이드-OR를 수신하는 상태 머신은 프로그래밍되는 모든 비트들이 언제 원하는 레벨에 도달했는지를 결정할 수 있기 때문이다. 예를 들어, 각각의 비트가 자신의 원하는 레벨에 도달했을 때, 그 비트에 대한 로직 제로(0)가 와이드-OR 라인에 전송된다(혹은 데이터 일(1)이 인버트됨). 모든 비트들이 데이터 0(혹은 인버트된 데이터 1)을 출력하는 경우, 상태 머신은 프로그래밍 프로세스의 종료를 알게 된다. 각각의 프로세서가 8개의 감지 모듈들과 통신하기 때문에, 상태 머신은 와이드-OR 라인을 8번 판독할 필요가 있거나, 혹은 상태 머신이 와이드-OR 라인을 단지 1번만 판독하면 되도록 관련 비트 라인들의 결과들을 축적하는 로직이 프로세서(192)에 부가된다. 마찬가지로, 로직 레벨들을 정확하게 선택함으로써, 글로벌 상태 머신은 제 1 비트가 자신의 상태를 언제 바꾸는지 그리고 이에 따라 알고리즘을 언제 바꾸는지를 검출할 수 있다.
프로그램 동작 혹은 검증 동작 동안, 프로그래밍될 데이터(기입 데이터)는 데이터 버스(120)로부터 데이터 래치들의 세트(194-197)에 저장되는바, 2-비트형 저장 소자 구현예에서는, LDL 및 UDL 래치들에 저장된다. 3-비트형 저장 소자 구현예에서는, 2개의 상위 데이터 래치들인 UDL1 및 UDL2가 사용될 수 있다. 상태 머신의 제어 하에서 프로그래밍 동작은, 어드레싱된 저장 소자들의 제어 게이트들에 가해지는 일련의 프로그래밍 전압 펄스들을 포함한다. 각각의 프로그램 펄스 이후에, 해당 저장 소자가 원하는 메모리 상태로 프로그래밍 되었는지를 결정하기 위해 되판독(read back)(검증)이 수행된다. 일부 경우들에 있어서, 프로세서(192)는 되판독된 메모리 상태를 원하는 메모리 상태에 대비하여 모니터링한다. 두 개가 일치하는 경우, 프로세서(192)는, 비트 라인이 프로그램 금지를 나타내는 상태가 되도록 비트 라인 래치(182)를 설정한다. 이것은 비트 라인에 결합된 저장 소자가, 그 제어 게이트 상에 프로그램 펄스들이 나타나도, 더 이상 프로그래밍되는 것을 금지시킨다. 다른 실시예들에서, 프로세서는 먼저 비트 라인 래치(182)를 로딩(loading)하고, 감지 회로는 검증 프로세스 동안 여기에 금지값을 설정한다.
데이터 래치들의 각각의 세트(194-197)는 각각의 감지 모듈에 대한 데이터 래치들의 스택(stack)으로서 구현될 수 있다. 일 실시예에서, 감지 모듈(180) 당 3개의 데이터 래치들이 있다. 일부 구현예들에서, 데이터 래치들은 시프트 레지스터(shift register)로서 구현되어 그 안에 저장된 병렬 데이터가 데이터 버스(120)용 직렬 데이터로 변환되게 하며, 그 반대의 경우도 가능하다. M개의 저장 소자들의 판독/기입 블록에 대응하는 데이터 래치들 모두는 블록 시프트 레지스터(block shift register)를 형성하기 위해 함께 연결될 수 있고, 이에 따라 데이터의 블록이 직렬 전송으로 입력 혹은 출력될 수 있다. 특히, 일단의 판독/기입 모듈들은, 데이터 래치들의 세트의 각각이 데이터를 순차적으로 데이터 버스에 혹은 데이터 버스로부터 시프트시키도록(마치 이들이 전체 판독/기입 블록에 대한 시프트 레지스터의 일부인 것처럼) 구성된다.
데이터 래치들은, 관련 저장 소자가 프로그래밍 동작에서 특정 마일포스트(mileposts)에 언제 도달했는지를 식별시킨다. 예를 들어, 래치들은 저장 소자의 Vth가 특정 검증 레벨보다 작은지를 식별시킬 수 있다. 데이터 래치들은 저장 소자가 데이터의 페이지로부터 하나 이상의 비트들을 현재 저장하고 있는지 여부를 표시한다. 예를 들어, LDL 래치들은 데이터의 하위 페이지를 저장하기 위해 사용될 수 있다. LDL 래치는, 하위 페이지 비트가 관련 저장 소자에 저장되는 경우, (예를 들어, 0에서 1로) 플립(flip)된다. UDL 래치들은, 예를 들어, 데이터의 상위 페이지를 저장하기 위해 사용될 수 있다. UDL 래치는, 상위 페이지 비트가 관련 저장 소자에 저장되는 경우, 플립된다. 이것은, 관련 저장 소자가 프로그래밍을 완료할 때, 예를 들어, Vth가 Vva, Vvb 혹은 Vvc와 같은 타겟 검증 레벨보다 클 때, 일어난다. UDL1 및 UDL2가 사용되는 경우, 하위, 상위 비트가 관련 저장 소자에 저장될 때 UDL1이 플립되고, 상위, 상위 비트가 관련 저장 소자에 저장될 때 UDL2가 플립된다. 하위, 상위 비트는 또한 중간 페이지 비트로서 지칭될 수 있다.
도 4는 감지를 위한 컴포넌트들 및 NAND 스트링의 구성을 나타낸다. 일 구현예에서, 감지 컴포넌트들(400)은 도 1의 감지 블록(100) 내에 제공되고, 제어부(408)는 도 1의 제어 회로(110)에 의해 제공된다.
간략화된 예에서, NAND 스트링(412)은 4개의 저장 소자들을 포함하며, 이들은 워드 라인들(WL0, WL1, WL2 및 WL3)과 각각 통신한다. 실제로는, 추가적인 저장 소자들 및 워드 라인들이 사용될 수 있다. 더욱이, 추가적인 NAND 스트링들이 전형적으로는, 비휘발성 저장 소자들의 블록 혹은 세트 내에서 서로 인접하여 정렬된다. 저장 소자들은 기판의 p-웰 영역에 결합된다. 감지 컴포넌트들(400)에 추가하여, 전압(Vbl)을 갖는 비트 라인(410)이 제시된다. 특히, BLS(Bit Line Sense) 트랜지스터(406)가 비트 라인(410)에 결합된다. BLS 트랜지스터(406)는 고전압 트랜지스터이고, 감지 동작 동안 제어부(408)에 응답하여 오픈(open)된다. BLC(Bit Line Control) 트랜지스터(404)는 저전압 트랜지스터이고, 제어부(408)에 응답하여 오픈되고 이에 따라 비트 라인은 전류 감지 모듈(402)과 통신할 수 있게 된다. 판독 혹은 검증 동작과 같은 감지 동작 동안, 전류 감지 모듈(402)에서의 커패시터가 충전되는 사전-충전 동작(pre-charge operation)이 일어난다. BLC 트랜지스터(404)는 사전-충전이 가능하도록 오픈될 수 있다. 또한, 감지 동작 동안, 검증 전압이 이러한 동작과 관련된 하나 이상의 저장 소자들의 워드 라인에 가해진다.
NAND 스트링(430)의 드레인측에서, BLS 트랜지스터(410)가 턴온된다(예를 들어, 전도 상태가 되거나 혹은 오픈된다). 추가적으로, 전압(Vblc)이 BLC 트랜지스터(400)에 가해져 전도 상태가 되게 한다. 전류 감지 모듈(402) 내의 사전-충전된 커패시터는 비트 라인을 통해 소스로 방전되는바, 이에 따라 소스는 전류 싱크(current sink)로서 동작한다. NAND 스트링의 드레인에서의 사전-충전된 커패시터는 소스의 전위보다 높은 전위로 사전-충전될 수 있고, 이에 따라 전류는, 선택된 저장 소자가 전도 상태에 있을 때 그 선택된 비휘발성 저장 소자를 통해 흐르고 소스로 싱크하게 된다.
사전-충전된 커패시터는, 저장 소자가 비전도 상태에 있을 때, 거의 방전되지 않는다. 방전 기간 이후, 결과적인 데이터는, 각각의 저장 소자의 프로그래밍을 모니터링 및 제어하기 위해 관리/제어 회로로 전달될 수 있다.
특히, 만약 선택된 저장 소자가 Vcgr이 가해져서 전도 상태에 있다면, 상대적으로 높은 전류가 흐를 것이다. 만약 선택된 저장 소자가 비-전도 상태에 있다면, 상대적으로 작은 전류가 흐르거나 어떠한 전류도 흐르지 않을 것이다. 전류 감지 모듈(402)은, 셀/저장소자 전류(icell)를 감지할 수 있다. 가능한 한 가지 방법에서, 전류 감지 모듈은, 관계식 △V=i·t/C에 의해 고정 전류 흐름과 관련되어 있는 전압 강하를 결정하는데, 여기서 △V는 전압 강하이고, i는 고정 전류이고, t는 소정의 방전 기간이고, C는 전류 감지 모듈 내의 사전-충전된 커패시터의 커패시턴스이다. 전압 강하가 더 커진다는 것은 전류가 더 커진다는 것을 나타낸다. 소정의 방전 기간의 끝에서, i와 C는 고정되어 있기 때문에, 주어진 전류에 대한 △V가 결정될 수 있다. 한 가지 방법에서, PMOS 트랜지스터는 경계값(demarcation value)에 대한 △V의 레벨을 결정하는데 사용된다. 가능한 또 다른 방법에서, 셀 전류 식별기는, 전도 전류가 소정의 경계 전류보다 더 큰지 혹은 더 작은지를 결정함으로써, 전류 레벨들의 식별기 혹은 비교기로서의 역할을 한다.
대조적으로, 전압 감지는 고정 전류와 관련되어 있는 전압 강하를 감지하는 것을 포함하지 않는다. 대신, 전압 감지는 전압 감지 모듈 내의 커패시터와 비트 라인의 커패시턴스 간에 전하 공유가 일어나는지 여부를 결정하는 것을 포함한다. 전류는 감지 동안 고정되어 있지 않거나, 혹은 일정하지 않다. 선택된 저장 소자가 전도성일 때 전하 공유는 거의 혹은 전혀 일어나지 않는데, 이러한 경우에 전압 감지 모듈 내의 커패시터의 전압은 크게 떨어지지 않는다. 전하 공유는 선택된 저장 소자가 비-전도성일 때 일어나는바, 이러한 경우에 전압 감지 모듈 내의 커패시터의 전압은 크게 떨어진다.
전류 감지 모듈(402)은 따라서, 선택된 저장 소자가 전도 상태에 있는지 혹은 비-전도 상태에 있는지를 전류의 레벨에 의해 결정할 수 있다. 일반적으로, 선택된 저장 소자가 전도 상태에 있을 때 더 큰 전류가 흐르고, 선택된 저장 소자가 비-전도 상태에 있을 때 더 작은 전류가 흐른다. 선택된 저장 소자의 임계 전압은, 비-전도 상태에 있거나 혹은 전도 상태에 있을 때, 비교 레벨(예를 들어, 검증 레벨 혹은 판독 레벨)보다 각각 크거나 혹은 작다.
도 5는 프로그래밍 동작에서 선택 워드 라인에 가해진 프로그램 펄스들을 나타낸다. 일반적으로, 프로그래밍 동작은 하나 이상의 프로그래밍 국면들에서 선택 워드 라인에 펄스 트레인(pulse train)을 가하는 것을 포함할 수 있고, 여기서 펄스 트레인은 프로그램 펄스들과 그 뒤를 따르는 하나 이상의 검증 펄스들을 포함한다. 각각의 국면은, 초기 레벨로부터 시작하여 필요하다면 해당 국면의 프로그래밍을 완료하기 위해 최대 레벨까지 스텝핑되는, 개별 시퀀스 혹은 계단형의 프로그램 펄스들을 사용한다. 해당 국면의 프로그래밍은, 저장 소자들이 그 국면에 있어서의 특정 검증 레벨들에 도달할 때 완료된다.
프로그램 펄스가 임의 개수의 서로 다른 파형의 형상들을 가질 수 있음에 유의해야 한다. 사각 파형(square waveform)이 제시되었지만, 다중레벨 형상(multilevel shape) 혹은 램프 형상(ramped shape)과 같은 다른 형상들도 가능하다. 펄스 트레인(500)은, 프로그래밍을 위해 선택된 워드 라인에 가해지는 일련의 프로그램 펄스들(505, 510, 515, 520, 525, 530, 535, 540, 545, 550, ...)을 포함한다. 프로그램-검증 반복은, 선택 워드 라인에 프로그래밍 펄스를 가하는 것과, 이후 그 선택 워드 라인에 하나 이상의 검증 펄스들을 가하여 하나 이상의 검증 동작들을 수행하는 것을 포함한다.
가능한 한 가지 방법은, 프로그램 펄스들이 소정의 프로그래밍 국면에서, 고정된 스텝 크기(step size)만큼씩 점진적으로 증가하는 것이다. 다른 변형예들이 가능하다. 예를 들어, 프로그램 펄스는 해당 프로그래밍 국면에 특정된 스텝 크기만큼씩 점진적으로 증가할 수 있다. 초기 프로그램 펄스 레벨 및/또는 최종 프로그램 펄스 레벨이 또한, 특정 프로그래밍 국면에 대해 특정될 수 있다.
도 6은 복수-국면 프로그래밍 동작의 서로 다른 국면들에서 가해질 수 있는 프로그램 전압들을 나타낸다. 예를 들어, Vpgm-initl에서 시작하여 Vpgm-final1에서 끝나는 파형(602)은, 제 1 프로그래밍 국면에서 각각의 연속하는 프로그램 펄스에 대해 프로그램 펄스 크기를 나타낸다. Vpgm-init2에서 시작하여 Vpgm-final2에서 끝나는 파형(600)은, 더 작은 스텝 크기를 사용하고 제 2 프로그래밍 국면에서 각각의 연속하는 프로그램 펄스에 대해 작은 프로그램 펄스 크기를 나타낸다. 최종 프로그램 펄스 레벨은 전형적으로, 초기 국면에 대해서보다 제 2 국면에 대해 더 높다. 또한, 제 2 국면에서, Vpgm 스텝 크기가 더 작기 때문에, 프로그래밍을 끝내기 위해서 제 1 국면에서보다 더 많은 프로그램 펄스들이 필요하다. 추가적인 옵션은, 메모리 디바이스의 ROM 퓨즈 파라미터(fuse parameter)에 의해 제어될 수 있는 양만큼 일 프로그램 펄스에 대해 Vpgm을 급격하게 증가시키는 것이다. 스텝 크기가 더 큰 이러한 하나의 프로그램 펄스는, 고속-프로그래밍 저장 소자들을 감속시키기 위해 비트 라인 전압 상승시에, 가해질 수 있다. 이러한 단계에서, 비트 라인 바이어스(bit line bias)를 가함으로써 고속-프로그래밍 저장 소자들이 감속되기 때문에, 과-프로그래밍(over-programming)의 위험이 감소된다. 후속의 펄스들에 대해서, Vpgm은 고정된 스텝 크기로 종전과 같이 스텝핑될 수 있다.
3-국면 프로그래밍 동작의 경우, 한 가지 방법으로서, 파형(602)은 제 1 국면 및 제 2 국면에서 사용될 수 있고, 파형(600)은 마지막 국면 혹은 제 3 국면에서 사용될 수 있다. 제 2 국면과 비교해서 제 1 국면에서 훨씬 더 큰 Vpgm 스텝 크기가 사용될 수도 있다(특히 제 1 국면에서 단지 LM-상태만이 프로그래밍되는 경우).
추가적 옵션에서, Vpgm-initl에서 시작하여 Vpgm-final1a에서 끝나는 파형(604)은, 프로그래밍 속도 데이터가 획득되는 국면에서 사용될 수 있다. 프로그래밍 속도 데이터는, 저장 소자가 저장 소자들의 고속 세트에 속하는지 아니면 저속 세트에 속하는지를 표시할 수 있다. 파형(604)은, 상대적으로 큰 스텝 크기가 사용되는 영역들(606 및 610)과, 상대적으로 작은 스텝 크기가 사용되는 영역(608)을 포함한다. 즉, Vpgm 스텝 크기는 영역(608)에서 일시적으로 감소된다. 따라서, 프로그램 펄스들이 복수-국면 프로그래밍 동작에서 타겟 워드 라인에 가해지는 경우, 프로그램 펄스들의 스텝 크기는, 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들이 구별될 때, 일시적으로 감소된다.
이러한 방법은 프로그래밍 속도 데이터의 획득시 더 작은 스텝 크기가 사용되는 것을 보장하여 검출 정확도를 높이게 된다. 구체적으로, 영역(608)의 시작은, 프로그래밍 속도 데이터가 더 높은 정확도로 획득될 수 있게 하는 시간에 설정될 수 있다. 영역(608)의 끝은, 프로그래밍 속도 데이터가 획득된 후인 시간에 설정될 수 있다. 영역(608)의 시작 및/또는 끝은, 예를 들어, 고정된 펄스 개수로 설정될 수 있다. 또는, 영역(608)의 시작 및/또는 끝은, 적응 방식으로 설정될 수 있다. 가능한 한 가지 방법에서, 아래에서 더 설명되는 도 10b를 참조하면, 영역(608)의 시작은, 적어도 특정 개수의 저장 소자들(예를 들어, 저장 소자들의 몇 퍼센트)이 검증 레벨(VvaL)에 도달할 때 설정될 수 있다. 비-적응 방식에서, 영역(608)의 끝은, 특정 개수의 프로그램 펄스들 이후에 일어나도록 설정될 수 있다. 또는, 적응 방식에서, 영역(608)의 끝은, 특정 개수의 저장 소자들보다 더 적은 수의 저장 소자들(예를 들어, 저장 소자들의 몇 퍼센트)이 VvaL에 아직 도달하지 못했을 때, 혹은 등가적으로 특정 개수의 저장 소자들보다 더 많은 수의 저장 소자들(예를 들어, 거의 모든 소자들)이 VvaL에 도달했을 때 일어나도록 설정될 수 있다.
유사한 방법이, 도 12a, 도 13b1, 도 14e 및 도 15b1의 프로그래밍에서의 VvaL, 도 11b 및 도 14b의 프로그래밍에서의 VvLM, 도 13c1의 프로그래밍에서의 VvbL, 그리고 도 15c1의 프로그래밍에서의 VvdL에 관해 행해질 수 있다. 일부 경우들에서, 더 큰 공칭 Vpgm 스텝 크기가 LM 국면에서 VvLM에 대한 프로그래밍시 사용되는바, 이러한 경우 본 기법은 상대적으로 더 유용하다.
도 7a는 전진-후진 워드 라인 순서(back-and-forth word line order)로 행해지는 저장 소자들의 세트에 대한 2-국면 프로그래밍 동작을 나타낸다. 제시된 컴포넌트들은, 저장 소자들, 워드 라인들 및 비트 라인들의 훨씬 더 큰 세트의 서브세트(subset)일 수 있다. 가능한 한 가지 프로그래밍 동작에서, WLn 상의 저장 소자들(정사각형들로서 도시되어 있음)이, 원문자 "①"로 표현된 바와 같이, 제 1 프로그래밍 국면에서 프로그래밍된다. 그 다음에 "②"에서, WLn+1 상의 저장 소자들이 해당 워드 라인에 대한 제 1 프로그래밍 국면에서 프로그래밍된다. 본 예에서, 워드 라인이 프로그래밍을 위해 선택될 때, 검증 동작들은 각각의 프로그램 펄스 이후 일어난다. 선택 워드 라인에 관한 검증 동작 동안, Vread 레벨 전압들이 비선택 워드 라인에 가해져 선택되지 않은 저장 소자들을 턴온시키고(전도 상태가 되게 하고), 이에 따라 검증 동작과 같은 감지 동작이 선택 워드 라인에 대해 일어날 수 있게 된다. 그 다음에 "③"에서, WLn 상의 저장 소자들이 제 2 프로그래밍 국면에서 프로그래밍된다. 그 다음에 "④"에서, WLn+2 상의 저장 소자들이 해당 워드 라인에 대한 제 1 프로그래밍 국면에서 프로그래밍된다. 그 다음에 "⑤"에서, WLn+1 상의 저장 소자들이 제 2 프로그래밍 국면에서 그 각각의 최종 상태로 프로그래밍된다.
여러 국면들에서 전진-후진 방식으로 워드 라인들을 프로그래밍함으로써, 용량성 커플링 효과(capacitive coupling effects)(이것은 임계 전압 분포들을 상승시키고 그 폭을 넓히는 경향이 있음)는 감소하게 된다. 이와는 대조적으로, 단일-국면 프로그래밍에서, 각각의 워드 라인은 다음 워드 라인으로 이동하기 전에 완전히 프로그래밍된다.
도 7b는 전진-후진 워드 라인 순서로 행해지는 저장 소자들의 세트에 대한 3-국면 프로그래밍 동작을 나타낸다. 하위 페이지의 초기 프로그램 국면은 상위 페이지의 제 1 국면 및 제 2 국면 전에 수행된다. 제 1 국면은 데이터의 하위 페이지를 프로그래밍하고, 제 2 국면은 제 1 패스(pass)에서 데이터의 상위 페이지를 프로그래밍하고, 제 3 국면은 제 2 패스에서 데이터의 상위 페이지를 프로그래밍한다. "①"에서, WLn에 대한 제 1 국면이 수행되고, "②"에서, WLn+1에 대한 제 1 국면이 수행되고, "③"에서, WLn에 대한 제 2 국면이 수행되고, "④"에서, WLn+2에 대한 제 1 국면이 수행되고, "⑤"에서, WLn+1에 대한 제 2 국면이 수행되고, "⑥"에서, WLn에 대한 제 3 국면이 수행되고, "⑦"에서, WLn+3에 대한 제 1 국면이 수행되고, "⑧"에서, WLn+2에 대한 제 2 국면이 수행되고, "⑨"에서, WLn+1에 대한 제 3 국면이 수행되는 등등이다.
도 8a는 복수-국면 프로그래밍 동작을 개략적으로 나타낸 것이다. 단계(800)는, WLn에 대해, 제 1 초기 Vpgm, 제 1 스텝 크기, 및 제 1 세트의 검증 레벨들을 사용하여 프로그래밍 동작의 일 국면을 수행하는 것을 포함한다. 아래 설명된 예들에서, 이러한 국면은 흔히 "비정밀(foggy)" 국면으로 일컬어 질 수 있는바, 이것은 2-국면 프로그래밍 동작의 제 1 국면이거나 3-국면 프로그래밍 동작의 제 2 국면이다. 제 1 세트의 검증 레벨들은, 4-레벨 메모리 디바이스에서는 VvaL, VvbL, VvcL을 포함할 수 있거나, 혹은 8-레벨 메모리 디바이스에서는 VvaL, VvbL, VvcL, VvdL, VveL, VvfL 및 VvgL을 포함할 수 있다. 단계(802)는, WLn+1에 대해, 제 1 초기 Vpgm, 제 1 스텝 크기, 및 제 1 세트의 검증 레벨들을 사용하여 프로그래밍 동작의 일 국면을 수행하는 것을 포함한다. 단계(804)는, WLn에 대해, 제 2 초기 Vpgm, 제 2 스텝 크기, 및 제 2 세트의 검증 레벨들을 사용하여 프로그래밍 동작의 다음 국면을 수행하는 것을 포함한다. 제 2 세트의 검증 레벨들은, 4-레벨 메모리 디바이스에서는 Vva, Vvb, Vvc를 포함할 수 있거나, 혹은 8-레벨 메모리 디바이스에서는 Vva, Vvb, Vvc, Vvd, Vve, Vvf 및 Vvg를 포함할 수 있다. 제 1 세트의 각각의 검증 레벨들이 제 2 세트의 각각의 검증 레벨들보다 낮도록, 제 1 세트의 검증 레벨들은 제 2 세트의 검증 레벨들로부터 오프셋(offset)된다.
단계(806)는, WLn+2에 대해, 제 1 초기 Vpgm, 제 1 스텝 크기, 및 제 1 세트의 검증 레벨들을 사용하여 프로그래밍 동작의 일 국면을 수행하는 것을 포함한다. 단계(808)는, WLn+1에 대해, 제 2 초기 Vpgm, 제 2 스텝 크기, 및 제 2 세트의 검증 레벨들을 사용하여 프로그래밍 동작의 다음 국면을 수행하는 것을 포함한다. 프로세스는 이에 따라 모든 데이터가 프로그래밍될 때까지 계속된다.
도 8b는 도 8a의 복수-국면 프로그래밍 동작의 단계(800, 802 또는 806)를 세부적으로 나타낸 것이다. 단계(810)는, 선택된 저장 소자들에 어떠한 감속 조치도 적용함이 없이 제 1 세트의 검증 레벨들을 사용하여 프로그래밍을 행하는 것을 포함한다. 1 세트 내의 검증 레벨보다 큰 Vth를 갖는 저장 소자들은 후속 프로그래밍으로부터 락아웃(lock out)되는바, 이러한 락아웃은 예를 들어, 관련된 비트 라인 전압을, 프로그래밍 동안 SGD를 셧오프(shot off)시킴과 아울러 관련 채널을 격리시켜 부스팅(boosting) 상태(이것은 저장 소자들의 후속 프로그래밍을 금지함)가 되게 하기에 충분히 높은 레벨까지 상승시킴으로써 행해진다. 단계(812)에서는, 특정 시간에, 예를 들어, 특정 트리거 조건(trigger condition)이 검출되는 때, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별된다. 이러한 구별 동작은 예를 들어, 프로그래밍된 데이터 상태들(소거된 상태와는 다른 데이터 상태들) 모두에 대해 일어날 수 있다. 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들을 식별 및 구분하는 정보(프로그래밍 속도 데이터)로 래치들이 업데이트된다. 예를 들어, 저장 소자와 관련된 래치에서의 하나의 비트 값(0 또는 1)은 저속 상태를 표시할 수 있고, 다른 비트 값(1 또는 0)은 고속 상태를 표시할 수 있다.
본 명세서에서의 "저속" 및 "고속"이라는 표현은 자연 Vth 분포에서 저장 소자의 Vth의 위치를 나타낸다. 프로그래밍 동안, 자연 Vth 분포가 더 위로 움직임에 따라, 정상 상태(steady state)에 도달하는바, 정상 상태 하에서 모든 저장 소자들의 Vth는 거의 동일한 속도로 시프트한다(전형적으로는, 하나의 프로그램 펄스가 (프로그래밍 동안 사용된) Vpgm-스텝 크기에 가까워진 이후 Vth는 위로 시프트함). 그러나, 자연 Vth 분포는 가우시안 분포 형상(Gaussian distribution shape)에 가깝기 때문에, 저장 소자들 중 반은 분포의 상위 반(higher half) 혹은 선행하는 반(leading half)에 속한다. 이러한 저장 소자들은 "고속"인 것으로서 지칭되고, 다른 경우인 후행하는 반(lagging half)에서의 저장 소자들은 "저속"인 것으로서 지칭된다. 저장 소자의 고속 혹은 저속의 크기는 단순히, 해당하는 저장 소자의 Vth가 자연 Vth 분포의 상한 및 하한 말미들로부터 얼마나 멀리 있는지 혹은 가까이 있는지를 나타낸다.
단계(814)는, 고속-프로그래밍 저장 소자들에는 프로그래밍 속도-기반의 감속 조치를 적용하지만 저속-프로그래밍 저장 소자들에는 프로그래밍 속도-기반의 감속 조치를 적용하지 않으면서, 제 1 세트의 검증 레벨들을 사용하여 계속 프로그래밍을 행하는 것을 포함한다. 하나의 방법으로, 현재 프로그래밍 국면의 모든 후속의 잔존 프로그램 펄스 전에, 프로그래밍 속도 데이터가 래치들로부터 판독되어 각각의 저장 소자에 감속 조치를 적용할 것인지 아니면 적용하지 않을 것인지를 결정하는데 사용된다. 예를 들어, 메모리 칩 상의 제어 회로(예를 들어, 도 1 및 도 3의 감지 블록들(100))는 데이터 래치들을 판독할 수 있다. 래치 내의 "0"이 고속-프로그래밍 저장 소자를 표시하고, 래치 내의 "1"이 저속-프로그래밍 저장 소자를 표시한다고 가정한다. 만약 "0"이 판독되면, 이러한 래치에 응답하여 감속 조치가 적용된다. 만약 "1"이 판독되면, 이러한 래치에 응답하여 감속 조치가 적용되지 않는다. 다음 프로그램 펄스가 일어날 때쯤, 메모리 칩 상의 제어 회로는 이전 프로그래밍 펄스에서의 각각의 저장 소자에 어떤 비트 라인 바이어스가 사용되었는지에 관한 히스토리(history)를 잃어버린다. 따라서, 제어 회로는 어떤 저장 소자들이 감속 조치를 수용할 필요가 있는지를 결정하기 위해 래치들을 다시 판독할 필요가 있다. 이러한 프로세스는, 프로그래밍 국면에 상관없이, 감속 조치가 적용되는 각각의 프로그램 펄스에 대해 반복된다.
제 1 세트의 검증 레벨들 내의 검증 레벨보다 큰 임계 전압을 갖는 저장 소자들이 락아웃된다. 이러한 프로그래밍은 프로그래밍 국면이 완료될 때까지 계속된다. 프로그래밍 속도-기반의 감속 조치는, 검출된 프로그래밍 속도에 기반을 두지 않고 적용될 수 있는 임의의 다른 타입의 감속 조치와는 구별되는 의미이다. 예를 들어, 일부 경우들에서, 저장 소자들의 임계 전압이 타겟 검증 레벨에 가까워지는 것에 근거하여 비트 라인 전압이 상승된다. 본 경우에 있어서, 프로그래밍 속도-기반의 감속 조치는 비트 라인 전압에서의 추가적인 증가일 수 있다.
도 8c는 도 8a의 복수-국면 프로그래밍 동작의 단계(804 또는 808)를 세부적으로 나타낸 것이다. 단계(820)에서는, 래치들의 세트(여기에는 단계(812)에서의 프로그래밍 속도 데이터가 저장되어 있음)가, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들을 식별하기 위해, 판독된다. 단계(822)는 제 2 세트의 검증 레벨들을 사용하여 프로그래밍을 행하는 것을 포함하고, 여기서 제 2 세트의 각각의 레벨은 제 1 세트에서의 대응하는 레벨보다 더 높다. 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 저장 소자들에 적용되고, 저속-프로그래밍 저장 소자들에는 어떠한 프로그래밍 속도-기반의 감속 조치도 적용되지 않는다. 제 2 세트의 검증 레벨들 내의 검증 레벨보다 큰 임계 전압을 갖는 저장 소자들이 락아웃된다. 이것은 프로그래밍 국면이 완료될 때까지 수행된다. 이것은 또한, 전체 프로그래밍 동작의 완료를 나타낼 수 있고, 이러한 경우, 단계(824)에서, 래치들은 리셋(reset)되고, 이에 따라 래치들은 또 다른 워드 라인 상의 저장 소자들에 의해 사용될 수 있게 된다.
도 8d는 3-국면 프로그래밍 동작과 연결된 단계들(800 및 804)을 세부적으로 나타낸 것으로, 여기서는, 3-국면 프로그래밍 동작의 제 2 국면에서, 상위-상태 저장 소자들 전에 하위-상태 저장 소자들에 대해, 특정된 n번째 워드 라인(WLn)의 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별된다. LM(Lower-Middle) 국면으로 지칭되는 제 1 프로그래밍 국면에서, 단계(830)는 제 1 프로그래밍 국면이 완료될 때까지, 어떠한 프로그래밍 속도-기반의 감속 조치도 적용함이 없이 VvLM을 사용하여 상위-상태 저장 소자들을 프로그래밍한다. 제 1 프로그래밍 국면은 상위-상태 저장 소자들 모두의 Vth가 VvLM에 도달할 때 완료된다. 어떠한 프로그래밍 속도 검출도 아직 수행되지 않았다.
검증 레벨에 프로그래밍될 저장 소자들 "모두"라는 기재는, 무시되지 않는 모든 저장 소자들을 포함하도록 하려는 것임에 유의해야 한다. 예를 들어, 데이터의 페이지는 64K 저장 소자들에 저장된 8KB일 수 있다. 저장 소자들의 작은 부분이 결함이 있을 수 있는바, 물리적 결함을 가질 수 있거나, 혹은 프로그래밍에 있어서 이들의 속도를 매우 느리게 할 수 있는 어떤 다른 문제를 가질 수 있다. 예를 들어, 평가들은, 64K 저장 소자들 중 평균적으로 32개가 결함이 있을 수 있다고 결정할 수 있다. 따라서, 프로그래밍 동안, 어떤 비트들이 양호한지 아니면 불량한지를 구체적으로 모르는 채, 32개의 비트들을 무시하도록 선택될 수 있고 이들의 프로그래밍은 강제로 행해지지 않을 수 있다. 프로그래밍 성능 관점에서, 몇 개의 저장 소자들을 무시하고 ECC를 사용하여 이들을 정정하는 것이 더 효율적이다. 무시될 저장 소자들의 개수는 ROM 퓨즈에서의 파라미터들에 의해 결정될 수 있다.
이러한 국면에서 하위-상태 저장 소자들은 프로그래밍되지 않고 소거 상태에 남아있다. 4-상태 구현예에서, 하위 상태는 A-상태일 수 있으며, 상위 상태들은 B-상태 및 C-상태일 수 있다. 8-상태 구현예에서, 하위 상태들은 A-상태, B-상태, 및 C-상태일 수 있으며, 상위 상태들은 D-상태, E-상태, F-상태 및 G-상태일 수 있다. 16-상태 혹은 다른 구현예들이 또한 가능하다. 하위-상태 저장 소자는 프로그래밍 동작의 완료에 의해 하위 타겟 데이터 상태에 프로그래밍되어 그 타겟 데이터 상태의 데이터를 나타내도록 의도되어 있다. 유사하게, 상위-상태 저장 소자는 프로그래밍 동작의 완료에 의해 상위 타겟 데이터 상태에 프로그래밍되어 그 타겟 데이터 상태의 데이터를 나타내도록 의도되어 있다.
WLn에 대해 제 1 프로그래밍 국면이 완료되는 경우, 단계(832)에서 또 다른 워드 라인이 프로그래밍될 수 있다. 이것은 예를 들어, WLn+1에 대한 제 1 LM 프로그래밍 국면일 수 있다(도 7b 참조).
단계(834)에서는, 비정밀 국면으로서 지칭되는 제 2 프로그래밍 국면이 시작된다. 여기서, 모든 타겟 데이터 상태들을 갖는 저장 소자들은, 어떠한 프로그래밍 속도-기반의 감속 조치도 적용됨이 없이, 검증 레벨들의 제 1 하위 세트를 사용하여 프로그래밍된다. 어떠한 프로그래밍 속도 검출도 아직 수행되지 않았다.
단계(836)에서는, 특정 시간에, 하위-상태 저장 소자들 중에서 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별되고, 이에 따라 래치들이 업데이트된다. 상위-상태 저장 소자들 중에서 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들은 아직 구별되지 않는다. 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들을 구별하기 위한 예시적인 구현예들이 아래에서 더 설명된다.
단계(838)에서, 제 2 (비정밀) 프로그래밍 국면은, 검증 레벨들의 제 1 하위 세트를 사용하여 모든 데이터 상태들을 계속 프로그래밍한다. 추가적으로, 고속-프로그래밍 하위-상태 저장 소자들에는 프로그래밍 속도-기반의 감속 조치가 적용되고, 저속-프로그래밍 하위-상태 저장 소자들 혹은 (아직 그 속도가 결정되지 않은) 상위-상태 저장 소자들에는 어떠한 프로그래밍 속도-기반의 감속 조치도 적용되지 않는다.
단계(840)에서는, 특정 시간에, 상위-상태 저장 소자들 중에서 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별되고, 이에 따라 래치들이 업데이트된다. 래치들의 공통 세트가 단계들(836 및 840)에서 업데이트될 수 있다.
단계(842)에서, 제 2 (비정밀) 프로그래밍 국면은, 검증 레벨들의 제 1 하위 세트를 사용하여 모든 데이터 상태들을 계속 프로그래밍한다. 고속-프로그래밍 하위-상태 저장 소자들 및 고속-프로그래밍 상위-상태 저장 소자들에는 프로그래밍 속도-기반의 감속 조치가 적용되고, 저속-프로그래밍 하위-상태 저장 소자들 및 저속-프로그래밍 상위-상태 저장 소자들에는 어떠한 프로그래밍 속도-기반의 감속 조치도 적용되지 않는다. 이것은 제 2 프로그래밍 국면이 완료될 때까지 계속된다. 제 2 프로그래밍 국면은, 몇 개의 무시된 개수의 저장 소자들로 인해 약간 줄어든 저장 소자들 모두의 Vth가 검증 레벨들의 제 1 하위 세트 내의 관련 검증 레벨에 도달했을 때, 완료된다.
단계(844)는 하나 이상의 다른 워드 라인들을 프로그래밍하는 것을 포함한다. 예를 들어, 이것은 WLn+2에 대한 제 1 LM 국면(도 7b에서의 아이템 "④" 참조)과 그 뒤를 따르는 WLn+1에 대한 제 2 국면(도 7b에서의 아이템 "⑤" 참조)을 포함할 수 있다.
단계(846)에서, 제 3 국면에 대해 WLn의 프로그래밍이 시작됨에 따라, 고속-프로그래밍 저장 소자들을 식별하기 위해 래치들이 판독된다.
단계(848)는, 검증 레벨들의 제 2 상위 세트를 사용하여 모든 데이터 상태들을 프로그래밍하는 제 3 (정밀) 프로그래밍 국면을 포함한다. 추가적으로, 고속-프로그래밍 하위-상태 저장 소자들 및 고속-프로그래밍 상위-상태 저장 소자들에는 프로그래밍 속도-기반의 감속 조치가 적용되고, 저속-프로그래밍 하위-상태 저장 소자들 및 저속-프로그래밍 상위-상태 저장 소자들에는 어떠한 프로그래밍 속도-기반의 감속 조치도 적용되지 않는다. 이것은 제 3 프로그래밍 국면 및 전체 프로그래밍 동작이 완료될 때까지 계속된다. 제 3 프로그래밍 국면은, 몇 개의 무시된 개수의 저장 소자들로 인해 약간 줄어든 저장 소자들 모두의 Vth가 검증 레벨들의 제 2 상위 세트 내의 관련 검증 레벨에 도달했을 때, 완료된다.
도 8e는 3-국면 프로그래밍 동작과 연결된 단계들(800 및 804)을 세부적으로 나타낸 것으로, 여기서는, 3-국면 프로그래밍 동작의 제 1 국면에서, 상위-상태 저장 소자들에 대해 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별되고, 그리고 3-국면 프로그래밍 동작의 제 2 국면에서, 하위-상태 저장 소자들에 대해 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별된다. 이것은 도 8d의 대안예이다.
단계(860)에서는, 제 1 (LM) 프로그래밍 국면에서, 상위-상태 저장 소자들이 어떠한 프로그래밍 속도-기반의 감속 조치도 적용됨이 없이, VvLM을 사용하여 프로그래밍된다. 단계(862)에서는, 특정 시간에, 상위-상태 저장 소자들 중에서 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 구별되고, 이에 따라 래치들이 업데이트된다.
단계(864)는, 고속-프로그래밍 상위-상태 저장 소자들에는 프로그래밍 속도-기반의 감속 조치가 적용되지만 저속-프로그래밍 상위-상태 저장 소자들에는 어떠한 프로그래밍 속도-기반의 감속 조치도 적용됨이 없이 VvLM을 사용하여 상위-상태 저장 소자들을 프로그래밍함으로써, 제 1 (LM) 프로그래밍 국면을 계속 수행한다. 이것은 프로그래밍 국면이 완료될 때까지 계속된다.
단계(866)는 또 다른 워드 라인을 프로그래밍하는 것을 포함한다. 예를 들어, 이것은 WLn+1에 대한 제 1 LM 국면(도 7b에서의 아이템 "②" 참조)일 수 있다.
단계(868)에서, 고속-프로그래밍 상위-상태 저장 소자들에는 프로그래밍 속도-기반의 감속 조치가 적용되지만 저속-프로그래밍 상위-상태 저장 소자들 혹은 (아직 그 속도가 결정되지 않은) 하위-상태 저장 소자들에는 어떠한 프로그래밍 속도-기반의 감속 조치도 적용됨이 검증 레벨들의 제 1 하위 세트를 사용하여 모든 데이터 상태들을 프로그래밍함으로써, 제 2 (비정밀) 프로그래밍 국면이 시작된다.
단계들(836, 842, 844, 846 및 848)은, 도 8d와 연계되어 설명된 바와 같이 수행된다.
도 9a는, 고속-프로그래밍 저장 소자들(904)과 저속-프로그래밍 저장 소자들(902)을 포함하는 저장 소자들의 세트의 자연 임계 전압 분포(900)를 나타낸다. 자연 Vth 분포는, 저장 소자들의 세트가 정상 상태 조건에 있을 때 관측되는 Vth 분포로서 정의될 수 있다(이러한 정상 상태 조건에서는 각각의 프로그램 펄스에 대해 Vth에서의 대략 일정한 변화가 관측됨). 예를 들어, 자연 Vth 분포를 나타내는 분포를 획득 및 측정하기 위해서, 어떠한 검증 동작이나 혹은 락아웃 동작 없이, 몇 개의 프로그램 펄스들이 저장 소자들의 세트에 가해질 수 있다.
언급된 바와 같이, 자연 Vth 분포의 폭이 넓어지게 되는 경우, 각각의 데이터 상태에 대해 요구된 검증 동작의 수가 또한 증가하게 되고, 이것은 전체 프로그래밍 시간을 증가시킴으로써 프로그래밍 성능을 저하시키게 된다. 이러한 문제를 극복하기 위해, 프로그래밍 국면들 중 하나 이상에서 고속-프로그래밍 저장 소자들을 검출하여 프로그래밍 속도-기반의 감속 조치(예를 들어, 비트 라인 전압 상승)를 적용함으로써, 자연 Vth 분포는 복수-국면 프로그래밍 동작에서 감소될 수 있다. 저장 소자에 적용되는 "프로그래밍 속도-기반의 감속 조치"는, 저장 소자의 이전에 검출된 프로그래밍 속도(예를 들어, 해당 저장 소자가 워드 라인의 저장 소자들의 세트에서 상대적으로 빠른 프로그래밍 저장 소자라는 결정)에 근거하는, 감속 조치이다. 본 발명은, 빠른 저장 소자들을 감속시킴으로써, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들 간의 프로그래밍 속도차를 줄여 인위적으로 자연 Vth 분포의 폭을 좁힐 수 있는 방식을 제안한다.
빠른 저장 소자들이 소정의 워드 라인에 대한 프로그래밍 국면 동안 식별되고, 이러한 정보가 데이터 래치들에 저장된다. 이러한 정보를 이용하여, 프로그래밍 동안 비트 라인 바이어스를 가함으로써 빠른 저장 소자들은 감속된다. 이것은 자연 Vth 분포의 폭을 효과적으로 좁히고, 이에 따라 모든 저장 소자들의 프로그래밍을 마치기 위해 필요한 검증 동작들의 수가 감소하게 된다. 이러한 방식은 프로그래밍된 Vth 분포들에 크게 영향을 미침이 없이 프로그래밍 성능을 향상시킬 수 있고, 이에 따라 에러들의 수가 증가하는 것을 피할 수 있다. 단지 고속-프로그래밍 저장 소자들만을 감속시킴으로써, 이들의 프로그래밍 속도는 저속 저장 소자들의 프로그래밍 속도에 더 가깝게 되는바, 이것은 자연 Vth 분포의 폭을 효과적으로 좁혀준다.
도 9b는 저장 소자들의 세트의 자연 임계 전압 분포(906)의 폭이 좁혀진 것을 나타내고 아울러 그 좁혀진 폭이 제시되어 있다. 도 9b의 분포는 △Vth의 양만큼 폭이 좁혀져 있다. 여기서는, 설명 목적으로, 자연 Vth 분포가 폭 좁힘 혹은 압축 이후에도 가우시안 분포 형상을 유지하는 것으로 제시되었지만 실제로는, 압축 이후 분포 내의 저장 소자의 Vth가 다시 분포되기 때문에 분포는 자신의 가우시안 형상을 잃어버리게 된다.
도 9c는 저장 소자의 프로그래밍을 위해 필요한 Vpgm과 저장 소자와 관련된 비트 라인에 가해진 비트 라인 전압 간의 관계를 나타낸다. x-축은 비트 라인 전압(Vbl)의 증가를 나타내고, y-축은 저장 소자의 프로그래밍을 완료하기 위해 필요한 Vpgm을 나타낸다. 따라서, 소정의 Vpgm에서, 만약 저장 소자와 관련된 비트 라인에 Vbl이 가해진다면, 그 저장 소자에 대한 프로그래밍 속도는 감소될 수 있다.
일반적으로, 저장 소자의 프로그래밍 속도가 감속되는 정도는 비트 라인 전압에 비례하고 그 비례하는 정도는 상수값(도시된 그래프의 기울기)이다. 이러한 상수값은 전형적으로 일(1)보다 큰데, 왜냐하면 Vbl에서의 1V의 증가(예를 들어, △Vbl = 1V)는 Vpgm에서의 1V 이상의 오프셋 증가를 필요로 하기 때문이다. 도 9b에서, △Vth는 이러한 상수값과 △Vbl의 곱과 같다. 따라서, Vbl을 증가시키는 것은, 프로그래밍 속도를 제어하고 자연 Vth 분포의 폭을 좁히는 강력한 툴(tool)이다.
그러나, Vbl이 주로 Vsgd(드레인측 선택 게이트) 마진-윈도우(margin-window)에 의해 제한을 받기 때문에 너무 커질 수는 없다.
2-국면 프로그래밍 동작 및 3-국면 프로그래밍 동작에 대한 예시적 특정 구현예들이 아래에서 설명된다. 이러한 기법들은 또한 추가적 국면들로 확장될 수 있다.
도 9d는 예시적인 프로그래밍 시나리오들을 나타낸다. 사례 1에서, 저장 소자들 각각은 2개의 비트들을 저장하고, 2개의 프로그래밍 국면들이 사용되며, 제 1 국면에서 모든 프로그래밍 상태의 모든 저장 소자들에 대한 프로그래밍 속도 데이터가 획득된다. 사례 2에서, 저장 소자들 각각은 2개의 비트들을 저장하고, 3개의 프로그래밍 국면들이 사용되며, 제 1 국면에서 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득된다. 사례 3에서, 저장 소자들 각각은 2개의 비트들을 저장하고, 3개의 프로그래밍 국면들이 사용되며, 제 1 국면에서는 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 제 2 국면에서는 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득된다. 사례 4에서, 저장 소자들 각각은 2개의 비트들을 저장하고, 3개의 프로그래밍 국면들이 사용되며, 제 2 국면에서 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 그 다음에 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득된다. 사례 5에서, 저장 소자들 각각은 3개의 비트들을 저장하고, 3개의 프로그래밍 국면들이 사용되며, 제 1 국면에서는 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 제 2 국면에서는 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득된다. 사례 6에서, 저장 소자들 각각은 3개의 비트들을 저장하고, 3개의 프로그래밍 국면들이 사용되며, 제 2 국면에서 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 그 다음에 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득된다. 이러한 사례들 각각이 아래에서 설명된다.
사례 1(EXAMPLE 1)
첫 번째 구현예는 도 10a, 도 10b, 도 10c, 도 10e, 도 10f, 및 도 10g의 시퀀스를 포함한다. 두 번째 구현예는 도 10a, 도 10b, 도 10d, 도 10e, 도 10f, 및 도 10g의 시퀀스를 포함한다. 본 예에서, 도 10a로부터 도 10e로의 흐름은, 예를 들어, 도 7a에서의 단계 "①"에 대응하고, 도 10f로부터 도 10g로의 흐름은 도 7a에서의 단계 "③"에 대응한다. 래치들의 사용은 도 16b의 대응 단계들에서 설명된다. 양쪽 구현예들에서, 모든 저장 소자들에 대한 프로그래밍 속도 데이터가 제 1 국면에서 획득되고, 이러한 정보는 데이터 래치에 저장되며, 프로그래밍 속도-기반의 감속 조치가 제 1 국면의 나머지에서 그리고 전체 제 2 국면에서 고속-프로그래밍 저장 소자들에 적용된다.
도 10a는 2-국면 프로그래밍 동작의 제 1 국면의 시작을 나타내며, 여기서 모든 저장 소자들은 소거 상태에 있다. 분포(1000)는 소거(E) 상태를 나타낸다. VvaL, VvbL 및 VvcL은 하위 검증 레벨들의 제 1 세트이고, Vva, Vvb 및 Vvc는 상위 검증 레벨들의 제 2 세트이다. 일부 경우들에서, 가장 높은 데이터 상태들 중 하나 이상은 하위 검증 레벨을 사용하지 않을 수 있는데, 왜냐하면 더 넓은 폭의 분포가 허용될 수 있기 때문이다.
도 10b는 도 10a 이후의 상태를 나타내며, 여기서는, 2-국면 프로그래밍 동작의 제 1 국면에서 최소 개수의 저장 소자들이 Vth>VvaL를 갖는다. 여기서는, 다수의 프로그램 펄스들이 연속적인 프로그램-검증 반복들에서 가해졌다. 검증 동작들에 관해, 모든 타겟 상태들이 매 프로그램 펄스 이후에 검증될 필요는 없다는 것에 유의해야 한다. 대신에, 검증될 특정 상태들은, 프로그래밍 국면 초기에 하위 상태들이 검증되지만 상위 상태들은 검증되지 않고 그 다음에 대부분의 상태들 혹은 모든 상태들이 검증되며 그 다음에 모든 하위 상태 저장 소자들이 락아웃됨에 따라 상위 상태들이 검증되지만 하위 상태들은 검증되지 않게 진행되는 전체 프로그래밍 국면이 되도록 조정될 수 있다. 분포(1002)의 폭은 자연 Vth 분포와 비슷하거나 혹은 이보다 더 작을 수 있다. 프로그램 펄스들이 가해짐에 따라, 저장 소자들의 임계 전압은 지속적으로 증가한다. 최소 개수의 저장 소자들이 VvaL에 도달하는 경우, 예컨대, 즉, 이들의 Vth가 VvaL보다 큰 경우, 카운터(counter)를 트리거(trigger)하는 조건이 충족된다. 분포(1002)의 영역(1004)은 Vth>VvaL인 저장 소자들을 나타낸다. VvaL에 도달한 저장 소자들의 개수는, 검증 동작의 결과를 표시하는 데이터를 저장하는 감지 증폭기들 내의 래치들의 비트 스캔(bit scan)으로부터 결정될 수 있다. 검증 동작에서, 비트는 저장 소자 및 그 비트 라인이 (Vth>VvaL인 것을 표시하는) 비전도성 상태임이 감지되는 경우 감지 증폭기에서 플립(flip)될 것이다. VvaL에서의 검증 동작은 모든 저장 소자들들에 대해, 이들의 타겟 데이터 상태에 상관없이, 수행될 수 있음에 유의해야 한다.
특정 개수, 즉 m>0개의 펄스들이 가해질 때까지 각각의 추가적인 프로그램 펄스가 카운트된다. 이러한 개수는 비휘발성 저장 소자들의 전형적인 예측된 자연 Vth 분포 폭에 근거하여 설정될 수 있고, 이에 따라 타겟 워드 라인의 비휘발성 저장 소자들의 특정 부분은 대략적으로, 카운트가 완료될 때 VvaL보다 큰 임계 전압을 갖게 된다. 이러한 특정 부분은 1/2 부분일 수 있고, 이에 따라 저장 소자들의 1/2은 고속-프로그래밍인 것으로서 분류되고, 나머지 1/2는 저속-프로그래밍인 것으로서 분류되게 된다. 특정 부분은, 프로그래밍 성능 측면에서 이득을 최대화할 수 있는 적절한 값을 획득하기 위해 복수의 로트(lot)들에 걸쳐 복수의 메모리 디바이스들에 대해 최적화될 수 있는 수치값 "m"이다. 카운트가 완료될 때, VvaL에서 검증 동작이 수행되어, Vth>VvaL을 갖는 것들(따라서, 이들은 검증 동작에서 비전도 상태에 있음)은 고속-프로그래밍 저장 소자들로 식별되고, Vth<VvaL을 갖는 것들(따라서, 이들은 검증 동작에서 전도 상태에 있음)은 저속-프로그래밍 저장 소자들로 식별되게 된다. 특정 워드 라인에 대해 각각의 저장 소자의 고속 상태 혹은 저속 상태를 식별시키는 비트가 데이터 래치들의 세트에, 예컨대 DL1에(도 3 및 도 16a1-16e 참조) 설정될 수 있다.
VvaL은 프로그램 속도를 구별하기 위한 적절한 체크포인트(checkpoint)로서 선택될 수 있는 소정의 검증 레벨인데, 왜냐하면 이것은 또한 타겟 데이터 상태로서 A-상태를 갖는 저장 소자들을 검증하는 역할을 하기 때문이다. A-상태 저장 소자들은 이들의 Vth가 VvaL보다 큰 현재 프로그래밍 국면에서는 후속 프로그래밍으로부터 락아웃될 수 있고, B-상태 저장 소자들과 C-상태 저장 소자들은 이들이 VvbL과 VvcL에 각각 도달할 때까지 계속 프로그래밍될 것이다. VvaL 대신에, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들을 구별하기 위해 그리고/또는 펄스들의 카운트를 트리거하기 위한 조건으로, 타겟 데이터 상태와 관련된 혹은 관련되지 않은 또 다른 검증 레벨을 사용하는 것도 가능하다.
도 10c는 추가적인 "m"개의 프로그래밍 펄스들이 가해진 다음에, 도 10b 이후의 제 1 대안예를 나타내며, 여기서는, 2-국면 프로그래밍 동작의 제 1 국면에서, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 VvaL의 검증 레벨을 이용하여 구별된다. 여기서, Vth 분포(1003)는 저속-프로그래밍 저장 소자들과 고속-프로그래밍 저장 소자들에 대한 영역(1008)과 영역(1010)을 각각 포함한다. 분포(1006)는, 타겟 상태로서 A-상태를 가지며 VvaL에 도달한 저장 소자들의 일부를 나타낸다. 분포(1006)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 A-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다. 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들의 구별은, 가해지는 프로그램 펄스들의 추가적인 개수의 카운트와 같은 조건이 충족될 때 일어난다.
도 10d는 추가적인 "k"개의 프로그래밍 펄스들이 가해진 다음에, 도 10b 이후의 제 2 대안예를 나타내며, 여기서는, 2-국면 프로그래밍 동작의 제 1 국면에서, 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들이 Vv의 판독 레벨을 이용하여 구별된다. Vv는 타겟 데이터 상태와 관련되어 있지 않다. 일 방법에서, Vv는 예를 들어, E-상태와 A-상태를 구별하기 위해, 비휘발성 저장 소자들의 세트에 대한 판독 동작을 위해 사용된다.
예를 들어, Vv는 자연 Vth 분포의 폭의 대략 1/2만큼 VvaL 아래에 있을 수 있다. 대안적으로, 이러한 구별은, 추가적인 프로그램 펄스들을 카우트함이 없이 최소 개수의 저장 소자들이 VvaL에 도달했을 때 일어날 수 있다. 여기서, Vth 분포(1005)는 저속-프로그래밍 저장 소자들과 고속-프로그래밍 저장 소자들에 대한 영역(1014)과 영역(1016)을 각각 포함한다. 분포(1012)는, 타겟 상태로서 A-상태를 가지며 VvaL에 도달한 저장 소자들의 일부를 나타낸다. 분포(1012)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 A-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다. 적절한 검증 레벨들을 사용하여 프로그래밍 속도에 기반하는 저장 소자들의 둘 이상의 클래스들을 구별하는 것이 가능하다. 일반적으로, k<m, k>0 그리고 m>0이기 때문에, 프로그래밍 속도 결정은, 도 10c에서와 같이 m개의 카운트가 사용될 때보다 도 10d에서와 같이 k개의 카운트가 사용될 때 더 빨리 행해질 수 있다. 고속-프로그래밍 저장 소자들과 저속-프로그래밍 저장 소자들을 더 빨리 구별하는 것의 장점은, 이 정보가 고속-프로그래밍 저장 소자들을 감속시키는데 더 빨리 사용될 수 있다는 것이고, 이에 따라 후속 프로그램 펄스들에 대한 자연 Vth 분포의 폭이 좁혀지게 된다는 것이다. 이러한 방법의 단점은 Vv에서 추가적인 감지 동작이 필요하다는 것이다. 또한, 프로그래밍 속도 데이터는, 만약 이것이 프로그래밍 국면에서 너무 빨리 획득된다면, 예를 들어 저장 소자들의 Vth 분포가 자연 Vth 분포에 가까운 폭으로 스프레드 아웃(spread out)되어 저장 소자들이 그들의 Vth가 Vpgm 스텝 크기에 가까워지는 속도로 위로 시프트하는 정상 상태에 도달하기 전에, 획득된다면 덜 신뢰가능할 수 있다. 도 10c의 방법의 장점은, VvaL이 이미 타겟 상태와 관련된 검증 레벨로서 사용되었기 때문에 추가적인 감지 동작이 필요하지 않다는 것이다.
도 10e는 도 10c 혹은 도 10d 중 어느 하나의 상태로부터의 2-국면 프로그래밍 동작의 제 1 국면에서의 프로그래밍을 나타낸다. 도 10c의 분포(1003)로부터의 계속되는 프로그래밍이 도시되는바, 여기서 A-상태 저장 소자들의 나머지가 VvaL로 프로그래밍되고(분포(1006)), B-상태 저장 소자들은 VvbL을 향해 프로그래밍되며(분포(1030)), C-상태 저장 소자들이 VvcL을 향해 프로그래밍되거나(분포(1040)), 혹은 만약 하위 검증 레벨이 사용되지 않는다면 Vvc를 향해 프로그래밍된다. 2-국면 프로그래밍 동작의 제 1 국면에서는 도 6에서의 파형(602)에 의해 도시된 바와 같이 더 큰 Vpgm 스텝 크기가 사용될 수 있음에 유의해야 한다. 제 1 국면의 끝에서 도 10f의 분포에 도달한다.
도 10f는 도 10e 이후의 상태를 나타내며, 2-국면 프로그래밍 동작의 제 2 국면의 시작을 나타낸다. 제 2 국면은 도 6에서의 파형(600)에 의해 도시된 바와 같이 더 작은 Vpgm 스텝 크기를 사용할 수 있고, 이에 따라 저장 소자들의 Vth는 더 느리게 증가하게 되어 타겟 검증 레벨의 큰 오버슈트(overshoot)들을 피할 수 있다. 프로그래밍 속도에는 근거하지 않지만, 저장 소자의 Vth가 타겟 데이터 상태들의 하위 검증 레벨과 상위 검증 레벨 사이에 있을 때 그리고/또는 특정 프로그래밍 국면에 있을 때 적용되는, 비트 라인 상승을 구현하는 것도 또한 가능하다. 이것은 추가적인 감속 조치로서, 프로그래밍 속도 기반의 감속 조치가 아니며, 예를 들어, 추가적인 Vbl 증가에 따라 프로그래밍 속도-기반의 감속 조치와 함께 구현될 수 있다. A 상태, B 상태 및 C 상태의 각각의 분포(1020), 분포(1031) 및 분포(1041)는, 하나 이상의 다른 워드 라인들이 제 1 국면과 제 2 국면 사이에서 프로그래밍될 때의 용량성 커플링 및 다른 간섭 효과들로 인해, 각각의 분포(1006), 분포(1030) 및 분포(1040)와 비교해 그 폭이 더 넓혀진 것으로서 도시되었음에 유의해야 한다.
도 10g는 도 10f의 상태로부터의 2-국면 프로그래밍 동작의 제 2 국면에서의 프로그래밍을 나타낸다. 분포(1022), 분포(1032) 및 분포(1042)로의 전이(transitions)를 제공하기 위해 검증 레벨들의 제 2 세트, 즉 Vva, Vvb 및 Vvc가 사용된다. 유리한 것으로서, Vth 분포들(1022, 1032 및 1042)은 분포들(1020, 1031 및 1041)에 비해 그 폭이 좁혀진다. 일반적으로, Vth 분포들의 폭이 좁혀질 때, 분포들의 상한-말미들은 약간 이동하는 반면, 대부분의 이동은 하한-말미들에서 일어난다.
사례 2(EXAMPLE 2)
또 다른 구현예는 도 11a, 도 11b, 도 11c, 도 11d, 도 11e, 도 11f, 및 도 11g의 시퀀스를 포함한다. 제 1 국면에서, 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 이러한 정보는 데이터 래치에 저장되며, 프로그래밍 속도-기반의 감속 조치가, 제 1 국면의 나머지에서 그리고 전체 제 2 국면 및 제 3 국면에서 고속-프로그래밍 상위-상태 저장 소자들에 적용된다. 프로그래밍 동작에서 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터는 획득되지 않는다.
본 예에서, 도 11a로부터 도 11d로의 흐름은, 예를 들어, 도 7b에서의 단계 "①"에 대응하고, 도 11e로부터 도 11f로의 흐름은 도 7b에서의 단계 "③"에 대응하며, 도 11g에서의 흐름은 도 7b에서의 단계 "⑥"에 대응한다. 래치들의 사용은 도 16c1 혹은 도 16c2의 대응 단계들에서 설명된다.
도 11a는 3-국면 프로그래밍 동작의 제 1 국면의 시작을 나타내며, 여기서는 4-레벨 메모리 디바이스에 있어서 모든 저장 소자들은 소거 상태에 있다. 제 1 국면은 앞서 설명된 LM 국면일 수 있으며, 여기서 하위-상태 저장 소자들은 소거 상태(1100)에서 유지되며, 상위-상태 저장 소자들은 검증 레벨(VvLM)을 사용하여 중간(LM) 상태로 프로그래밍된다.
도 11b는 도 11a 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 1 국면에서 최소 개수의 상위-상태 저장 소자들이 Vth>VvLM을 갖는다. 분포(1102)에서, 영역(1104)은 Vth>VvLM인 상위-상태 저장 소자들을 나타낸다. 최소 개수의 상위-상태 저장 소자들이 VvLM에 도달하는 경우, 카운터가 시작되고 각각의 추가적인 프로그램 펄스에 대해 증분된다. 제 1 국면은 상대적으로 더 큰 Vpgm 스텝 크기를 사용할 수 있다.
도 11c는 추가적인 "m"개의 프로그래밍 펄스들이 가해진 다음에, 도 11b 이후의 상태를 나타내며, 여기서는, 3 국면 프로그래밍 동작의 제 1 국면에서, 고속-프로그래밍 상위 상태 저장 소자들과 저속-프로그래밍 상위 상태 저장 소자들이 Vvh의 판독 레벨을 이용하여 구별된다. m>1개의 추가적인 프로그램 펄스들의 카운트가 완료되는 경우, Vth 분포(1103)는 저속-프로그래밍 상위-상태 저장 소자들과 고속-프로그래밍 상위-상태 저장 소자들에 대한 영역(1108)과 영역(1110)을 각각 포함한다. 분포(1106)는, VvLM에 도달한 것으로 검증된 상위-상태 저장 소자들의 일부를 나타낸다. 분포(1106)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 LM-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다. Vvh는 상위 판독 레벨이 되는데, 왜냐하면 이것은 상위-상태 저장 소자들을 검증하는데 사용되기 때문이다. 제 1 국면의 나머지 동안, 각각의 프로그램 펄스가 가해질 때, 저속-프로그래밍 상위-상태 저장 소자들에는 어떠한 프로그래밍 속도-기반의 감속 조치도 적용되지 않지만, 고속-프로그래밍 상위-상태 저장 소자들에는 프로그래밍 속도-기반의 감속 조치가 적용된다.
도 11d는 도 11c 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 2 국면의 시작을 나타낸다. 도 11c로부터 프로그래밍은 계속되어, 분포(1103)는 분포(1120)로 전이하는바, 여기서 모든 상위-상태 저장 소자들은 중간(LM) 상태에 도달하고 이것은 제 1 국면의 끝을 나타낸다. 제 1 국면과 제 2 국면 사이에 또 다른 워드 라인이 프로그래밍된다. 타겟 워드 라인에 대한 제 2 국면을 시작하기 바로 전에, 타겟 워드 라인 상의 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들을 식별하기 위해 래치들이 판독된다. 래치들에서의 정보를 사용하여, 저속-프로그래밍 상위-상태 저장 소자들이 공칭 방식으로(예를 들어, 프로그래밍 속도-기반의 감속 조치를 적용하지 않음으로써) 다루어질 수 있다. 이와는 대조적으로, 비트 라인 전압 상승과 같은 프로그래밍 속도-기반의 감속 조치가, 각각의 프로그램 펄스가 가해질 때, 고속-프로그래밍 상위-상태 저장 소자들에 적용될 수 있다. 본 예에서 하위-상태 저장 소자들에 대한 어떠한 프로그래밍 속도 데이터도 획득되지 않았고 혹은 획득되지 않을 것임에 유의해야 한다. 단지 고속-프로그래밍 B-상태 및 C-상태 저장 소자들에 대해서만 프로그래밍 속도-기반의 감속 조치를 적용하는 것은 또한, B-상태 및 C-상태 저장 소자들에 대한 유효 자연 Vth 분포를 감속시키는 이점 및 이에 따라 B-상태 및 C-상태에 대해 필요한 검증 동작들의 개수를 감소시키는 이점을 제공할 수 있어, 프로그램 성능을 향상시킬 수 있다.
도 11e는 도 11d의 상태 이후, 3-국면 프로그래밍 동작의 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍을 나타낸다. 이러한 국면에서, 하위-상태 저장 소자들은 소거 상태에서 유지되거나 혹은 VvaL을 사용하여 A-상태(분포(1130))로 프로그래밍되는 데, 이 경우 어떠한 프로그래밍 속도-기반의 감속 조치도 적용되지 않는다. 상위-상태 저장 소자들은, 도 11f의 분포가 제 2 국면의 끝에 도달할 때까지, VvbL과 VvcL을 각각 사용하여 중간(LM) 상태로부터 B-상태(분포(1140)) 혹은 C-상태(분포(1150))로 프로그래밍되는바, 이 경우 프로그래밍 속도-기반의 감속 조치가 적용된다. 제 2 국면은 상대적으로 더 큰 Vpgm 스텝 크기를 사용할 수 있다.
일부 실시예들에서, 하위-상태 저장 소자들에 대한 Vth 전이는 전형적으로, 상위-상태 저장 소자들에 대한 Vth 전이 이전에 일어남에 유의해야 한다. Vpgm이 낮은 초기 레벨로부터 위로 스텝핑되기 때문에 그리고 단지 하위-상태 저장 소자들의 Vth를 이동시키기에는 초기에 충분히 높기 때문에 이러한 것은 사실이다. Vpgm이 더 높게 될 때에만 상위-상태 저장 소자들의 Vth가 증가하기 시작한다. 유사한 관측이 다른 도면에 대해서도 계속된다.
도 11f는 도 11e 상태 이후, 3-국면 프로그래밍 동작의 제 3 국면의 시작을 나타낸다. 제 3 국면은 상대적으로 더 작은 Vpgm 스텝 크기를 사용할 수 있다. 하나 이상의 다른 워드 라인들이 프로그래밍될 때의 커플링 및 간섭 효과들로 인해, Vth 분포들의 폭이 넓혀질 수 있음에 유의해야 한다.
도 11g는 도 11f의 상태로부터의 3-국면 프로그래밍 동작의 제 3 국면에서의 프로그래밍을 나타낸다. A-상태 저장 소자들이 Vva를 사용하여 분포(1132)로 프로그래밍되며 이 경우 어떠한 프로그래밍 속도-기반의 감속 조치도 적용되지 않고, B-상태 저장 소자들이 Vvb를 사용하여 분포(1142)로 프로그래밍되며, 그리고 C-상태 저장 소자들이 Vvc를 사용하여 분포(1152)로 프로그래밍된다. 제 2 국면의 시작에서와 마찬가지로, 타겟 워드 라인에 대한 제 3 국면을 시작하기 전에, 타겟 워드 라인 상의 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들을 식별하기 위해 래치들이 판독된다. 래치들에서의 정보를 사용하여, 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 B-상태 및 C-상태 저장 소자들에는 적용되지만 저속-프로그래밍 B-상태 및 C-상태 저장 소자들에는 적용되지 않는다.
사례 2A(EXAMPLE 2A)
사례 2와 관련된 대안예가 이하 설명되며, 이것은 2-국면 프로그래밍 동작을 포함한다. 도 11h는, 도 11f 및 도 11g에 대한 대안예로서, 도 11d의 상태 이후, 2-국면 프로그래밍 동작의 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍을 나타낸다. 본 예에서, 도 11a로부터 도 11d로의 흐름은, 예를 들어, 도 7a에서의 단계 "①"에 대응하고, 도 11h에서의 흐름은 도 7a에서의 단계 "③"에 대응한다. 이러한 프로그래밍 동작은 LM-패스 및 제 2 패스를 포함하며, 이것은 UP 프로그래밍 패스(UP programming pass)라 지칭될 수 있다. 이러한 프로그래밍 동작은 하위 페이지를 프로그래밍하고 그 다음에 상위 페이지를 프로그래밍한다. 이러한 프로그래밍 동작은 3-국면 프로그래밍 동작들보다 더 빠르다. 이러한 방식에서, 단지 두 개의 추가 래치들(DL1 및 DL2)만이 필요하다. 이러한 래치의 용도는 도 16c3에서 설명된다.
사례 3(EXAMPLE 3)
또 다른 구현예는 도 11a 내지 도 11d, 도 12a 내지 도 12c, 도 11f, 및 도 11g의 시퀀스를 포함한다. 제 1 국면에서, 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되어 데이터 래치들에 저장되며, 프로그래밍 속도-기반의 감속 조치가, 제 1 국면의 나머지에서 그리고 전체 제 2 국면 및 제 3 국면에서 고속-프로그래밍 상위-상태 저장 소자들에 적용된다. 제 2 국면에서, 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 프로그래밍 속도-기반의 감속 조치가, 제 2 국면의 나머지에서 그리고 전체 제 3 국면에서 고속-프로그래밍 하위-상태 저장 소자들에 적용된다.
본 예에서, 도 11a로부터 도 11d로의 흐름은, 예를 들어, 도 7b에서의 단계 "①"에 대응하고, 도 12a 내지 도 12c로부터 도 11f로의 흐름은 도 7b에서의 단계 "③"에 대응하며, 도 11g에서의 흐름은 도 7b에서의 단계 "⑥"에 대응한다. 래치들의 사용은 도 16d1 혹은 도 16d2의 대응 단계들에서 설명된다.
도 12a는 3-국면 프로그래밍 동작의 제 1 대안적 제 2 국면의 시작에 있는 도 11d의 상태 이후 프로그래밍을 나타내며, 여기서는, 최소 개수의 하위-상태 저장 소자들이 Vth>VvaL을 갖는다. E-상태 분포(1100) 및 LM 분포(1120)가 반복된다. 각각의 연속하는 프로그램 펄스들이 가해짐에 따라, 분포(1100)는 A-상태 저장 소자들(하위-상태 저장 소자들)에 대한 분포(1202)로 전이하고, 분포(1120)는 상위-상태 저장 소자들에 대한 B-상태 분포(1230) 및 C-상태 분포(1240)로 전이한다. 제 1 국면 동안 상위 상태 저장 소자들에 대해 획득된 프로그램 속도 데이터에 근거하여, 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 B-상태 및 C-상태 저장 소자들에 적용될 수 있다.
분포(1202)에서, 영역(1204)은 Vth>VvaL인 하위-상태 저장 소자들을 나타낸다. 최소 개수의 하위-상태 저장 소자들이 VvaL에 도달하는 경우, 카운터가 시작되고 각각의 추가적인 프로그램 펄스에 대해 증분된다. 제 2 국면은 상대적으로 더 큰 Vpgm 스텝 크기를 사용할 수 있다.
도 12a 내지 도 12c에서, 하위-상태 저장 소자들에 대한 Vth 전이는 전형적으로, 상위-상태 저장 소자들에 대한 Vth 전이 이전에 일어난다.
도 12b는 추가적인 "k"개의 프로그래밍 펄스들이 가해진 다음에, 도 12a 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 2 국면에서, 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 이용하여 구별된다. k개의 추가적인 프로그램 펄스들의 카운트가 완료되는 경우, Vth 분포(1203)는 저속-프로그래밍 저장 소자들과 고속-프로그래밍 저장 소자들에 대한 영역(1207)과 영역(1208)을 각각 포함한다. 분포(1209)는, VvaL에 도달한 것으로 검증된 A-상태 저장 소자들의 일부를 나타낸다. 분포(1209)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 A-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다. Vvl은 하위 판독 레벨이 되는데, 왜냐하면 이것은 하위 상태 저장 소자들을 판독하는데 사용되기 때문이다. 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 B-상태 및 C-상태 저장 소자들에 계속 적용된다.
도 12c는 도 12b의 상태 이후, 3-국면 프로그래밍 동작의 제 1 대안적 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍을 나타낸다. 이때, 하위-상태 저장 소자들과 상위-상태 저장 소자들 양쪽 모두에 대한 프로그래밍 속도 데이터가 알려져 있고, 따라서 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 A-상태 저장 소자들에 뿐만 아니라 고속-프로그래밍 B-상태 및 C-상태 저장 소자들에 적용될 수 있다. 프로그래밍이 계속됨에 따라, 추가적인 A-상태 저장 소자들이 분포(1210)에 도달한다. 제 2 국면의 끝에서 도 11f의 분포에 도달할 수 있고, 제 3 국면이 도 11g와 연계되어 설명된 바와 같이 수행될 수 있다.
사례 4(EXAMPLE 4)
또 다른 구현예는 도 11a, 도 13a, 도 13b1/13c1, 도 13b2/13c2, 도 13d, 및 도 11g의 시퀀스를 포함한다. 제 1 국면에서, 어떠한 프로그래밍 속도 데이터도 획득되지 않는다. 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들 양쪽 모두에 대한 프로그래밍 속도 데이터가 획득되고, 프로그래밍 속도-기반의 감속 조치가, 제 2 국면의 나머지에서 그리고 전체 제 3 국면에서 고속-프로그래밍 하위-상태 저장 소자들 및 고속-프로그래밍 상위-상태 저장 소자들에 적용된다.
본 예에서, 도 11a로부터 도 13a로의 흐름은, 예를 들어, 도 7b에서의 단계 "①"에 대응하고, 도 13b1/13c1로부터 도 13d로의 흐름은 도 7b에서의 단계 "③"에 대응하며, 도 11g에서의 흐름은 도 7b에서의 단계 "⑥"에 대응한다. 래치들의 사용은 도 16e의 대응 단계들에서 설명된다.
도 13a는 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면의 시작을 나타내며, 여기서는, 하위 중간 검증 레벨, VvLMx가 VvLM 대신 사용된다. 도 11a의 E-상태 분포(1100)가 반복된다. 제 1 국면의 끝에서 이 상태에 도달한다. 하위 LM 분포(1310)가 또한 도시된다. 만약 LM 분포가 다음 상위 분포(이것은 상위-상태들의 가장 낮은 상태임)(본 경우에 있어서는 B-상태)에 매우 근접하고 그리고/또는 오버랩(overlap)한다면, 상위-상태 저장 소자들의 상대적 프로그래밍 속도를 신뢰가능하게 검출하는 것은 가능하지 않을 수 있다. 결과적으로, 중간 검증 레벨(VvLMx)은, 상위 타겟 데이터 상태들의 가장 낮은 타겟 데이터 상태(본 경우에 있어서는 B-상태)에 대한 검증 레벨 아래로 더 낮게 이동될 것이고, 이에 따라 저장 소자들이 그들의 Vth가 VvbL에 도달하기 시작할 때쯤 자신의 정상 상태에 도달하는 것이 보장되게 된다. 이것은 상대적 프로그램 속도 결정을 더 정확하게 한다. 이것을 달성하기 위해, VvLMx와 VvbL 간의 간격은 전형적으로, 비휘발성 저장 소자들의 세트의 예측된 자연 임계 전압 분포 폭보다 더 큰 양이어야만 한다. 다시 말해, VvbL - VvLMx > 자연 Vth 폭. VvLMx는 이전 도면들에서 VvLM보다 낮은 검증 레벨을 표시한다. 제 1 국면에서 사용된 VvLMx에 대해, 중간 분포(1310)를 포함하는 도 13a의 분포가 달성된다.
제 2 국면 프로그래밍 동안, 도 13b1로부터 도 13b2로의 전이가 먼저 일어나고, 그 다음에 도 13c1 및 13c2로부터의 전이가 일어나는데, 이는 하위-상태 저장 소자들이 동일 프로그래밍 국면에서 상위-상태 저장 소자들이 VvbL에 도달하는 것보다 더 빨리 VvaL에 도달하기 때문이다. 마찬가지로, 도 13b1의 상태는, 도 13c1의 상태에 도달할 수 있기 이전에, 도달된다. 도 13b1과 도 13c1은 명확한 설명을 위해 개별적으로 제시된다. 마찬가지로, 도 13b2와 도 13c2도 명확한 설명을 위해 개별적으로 제시된다. 판독 레벨 Vvl을 사용하여 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 판독 레벨 Vvh를 사용하여 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득된다. 도 13b1 및 도 13b2는 하위-상태 저장 소자들을 포함하는 전이를 나타내고, 도 13c1 및 도 13c2는 상위-상태 저장 소자들을 포함하는 전이를 나타낸다.
도 13b1은 도 13a 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서 최소 개수의 하위-상태 저장 소자들이 Vth>VvaL을 갖는다. 분포(1302)에서, 영역(1304)은 Vth>VvaL인 하위-상태 저장 소자들을 나타낸다. 최소 개수의 하위-상태 저장 소자들이 VvaL에 도달하는 경우, 카운터가 시작되고 각각의 추가적인 프로그램 펄스에 대해 증분된다. 제 2 국면은 상대적으로 더 큰 Vpgm 스텝 크기를 사용할 수 있다.
도 13b2는 추가적인 "k1"개의 프로그래밍 펄스들이 가해진 다음에, 도 13b1 이후의 상태를 나타내며, 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 이용하여 구별된다. k1개의 추가적인 프로그램 펄스들의 카운트가 완료되는 경우, Vth 분포(1306)는 저속-프로그래밍 하위-상태 저장 소자들과 고속-프로그래밍 하위-상태 저장 소자들에 대한 영역(1308)과 영역(1310)을 각각 포함한다. 분포(1316)는, VvaL에 도달한 것으로 검증된 A-상태 저장 소자들의 일부를 나타낸다. 분포(1316)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 A-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다. Vvl은 하위 판독 레벨이다. 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 사용하여 구별되는 포인트(point)까지 어떠한 프로그래밍 속도-기반의 감속 조치가 적용되지 않는다.
이때, 하위-상태 저장 소자들(예를 들어, A-상태 저장 소자들)에 대한 프로그래밍 속도 데이터가 데이터 래치에 저장된다. 데이터 래치에서의 프로그래밍 속도 데이터를 사용하여, 프로그래밍 속도-기반의 감속 조치가 국면의 나머지 동안 하위-상태 저장 소자들에 적용될 수 있다. 프로그래밍 속도-기반의 감속 조치를 고속-프로그래밍 하위-상태 저장 소자들에게는 적용하지만 저속-프로그래밍 하위-상태 저장 소자들에게는 적용하지 않으면서 프로그래밍이 계속될 수 있다. 일반적으로, 저장 소자들의 세트에 대한 프로그램 속도가 결정되고 데이터 래치들에 저장되는 경우, 이러한 프로그래밍 속도 데이터를 사용하여 후속 프로그래밍 동안 저장 소자들의 해당 세트 중에서 고속-프로그래밍 저장 소자들에 감소 조치를 적용하는 것이 가장 이롭다. 이후, 저장 소자들의 나머지 세트에 관해 프로그램 속도 결정이 행해지면, 데이터 래치들이 업데이트되고 감속 조치는 나머지 프로그래밍 동안 모든 저장 소자들에 적용된다.
도 13c1은 도 13a 이후의 상태를 나타내며(일반적으로는 도 13b2 이후의 상태를 나타냄), 여기서는, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서 최소 개수의 상위-상태 저장 소자들이 Vth>VvbL을 갖는다. 중간(LM) 상태(1310)로부터 상위-상태 저장 소자들을 프로그래밍함으로써 분포(1312)에 도달한다. 분포(1312)에서, 영역(1314)은 Vth>VvbL인 상위-상태 저장 소자들을 나타낸다. VvbL은 상위 상태들 중 가장 낮은 상태의 검증 레벨이다. 최소 개수의 상위-상태 저장 소자들이 VvbL에 도달하는 경우, 카운터가 시작되고 각각의 추가적인 프로그램 펄스에 대해 증분된다.
도 13c2는 추가적인 "k2"개의 프로그래밍 펄스들이 가해진 다음에, 도 13c1 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서, 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들이 Vvh의 판독 레벨을 이용하여 구별된다. k2개의 추가적인 프로그램 펄스들의 카운트가 완료되는 경우, Vth 분포(1322)는 저속-프로그래밍 상위-상태 저장 소자들과 고속-프로그래밍 상위-상태 저장 소자들에 대한 영역(1326)과 영역(1328)을 각각 포함한다. 분포(1324)는, VvbL에 도달한 것으로 검증된 B-상태 저장 소자들의 일부를 나타낸다. 분포(1324)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 B-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다. Vvh는 상위 검증 레벨이다. kl 및 k2는 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍 속도를 결정하기 위해 서로 다른 카운터들이 사용될 수 있음을 표시한다는 것에 유의해야 한다. 간략한 설명을 위해, k1은 k2와 동일한 값으로 설정될 수 있다. 카운트되는 프로그램 펄스들의 개수에 상관없이 카운트의 시작은 서로 다를 수 있음에 유의해야 한다. 즉, 카운트의 시작을 트리거하는 도 13b1 및 도 13c1의 상태들은 서로 다른 시간에 일어날 수 있다.
도 13d는 도 13c1 및 도 13c2의 상태들 이후, 3-국면 프로그래밍 동작의 제 2 대안적 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍을 나타낸다. 도 13b2의 하위-상태 분포(1306)와 도 13c2의 상위-상태 분포(1322)가 반복된다. 이때, 하위-상태 저장 소자들과 상위-상태 저장 소자들 양쪽 모두에 대한 프로그래밍 속도는 알려져 있다. 분포(1306)의 하위-상태 저장 소자들이 A-상태 분포(1320)로 전이하도록 프로그래밍은 계속되며, 이 경우 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 하위-상태 저장 소자들에 적용되지만 저속-프로그래밍 하위-상태 저장 소자들에는 적용되지 않는다. 유사하게, 분포(1322)의 상위-상태 저장 소자들이 B-상태 분포(1330) 및 C-상태 분포(1340)로 전이하도록 프로그래밍은 계속되며, 이 경우 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 상위-상태 저장 소자들에 적용되지만 저속-프로그래밍 상위-상태 저장 소자들에는 적용되지 않는다.
그 다음에 프로그래밍 동작의 제 3 국면이 도 11g의 상태를 달성하기 위해 수행된다. 이러한 국면에서, 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 하위-상태 저장 소자들 및 고속-프로그래밍 상위-상태 저장 소자들에 적용되지만 저속-프로그래밍 하위-상태 저장 소자들 및 저속-프로그래밍 상위-상태 저장 소자들에는 적용되지 않는다.
사례 5(EXAMPLE 5)
또 다른 구현예는 도 14a, 도 14b, 도 14c, 도 14d, 도 14e, 도 14f, 도 14g, 도 14h, 도 14i의 시퀀스를 포함한다. 제 1 국면에서, 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 프로그래밍 속도-기반의 감속 조치가, 제 1 국면의 나머지에서 그리고 전체 제 2 국면 및 제 3 국면에서 고속-프로그래밍 상위-상태 저장 소자들에 적용된다. 제 2 국면에서, 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 프로그래밍 속도-기반의 감속 조치가, 제 2 국면의 나머지에서 그리고 전체 제 3 국면에서 고속-프로그래밍 하위-상태 저장 소자들에 적용된다.
본 예에서, 도 14a로부터 도 14d로의 흐름은, 예를 들어, 도 7b에서의 단계 "①"에 대응하고, 도 14e로부터 도 14h로의 흐름은 도 7b에서의 단계 "③"에 대응하며, 도 14i에서의 흐름은 도 7b에서의 단계 "⑥"에 대응한다. 래치들의 사용은 도 16d1 혹은 도 16d2의 대응 단계들에서 설명된다.
도 14a는 3-국면 프로그래밍 동작의 제 1 국면의 시작을 나타내며, 여기서는 8-레벨 메모리 디바이스에 있어서 모든 저장 소자들은 소거 상태에 있다. 하위 상태들은 소거(Er) 상태(분포), A-상태, B-상태, 및 C-상태이고, A-상태, B-상태, 및 C-상태는 하위 검증 레벨들 VvaL, VvbL 및 VvcL을 각각 가지며, 상위 검증 레벨들 Vva, Vvb 및 Vvc를 각각 갖는다. 상위 상태들은 D-상태, E-상태, F-상태 및 G-상태이고, 이 상태들은 하위 검증 레벨들 VvdL, VveL, VvfL 및 VvgL을 각각 가지며, 상위 검증 레벨들 Vvd, Vve, Vvf 및 Vvg를 각각 갖는다.
도 14b는 도 14a 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 1 국면에서 최소 개수의 상위-상태 저장 소자들이 Vth>VvLM을 갖는다. 분포(1402)에서, 영역(1404)은 Vth>VvaL인 상위-상태 저장 소자들을 나타낸다. 최소 개수의 하위-상태 저장 소자들이 VvLM에 도달하는 경우, 카운터가 시작되고 각각의 추가적인 프로그램 펄스에 대해 증분된다.
도 14c는 추가적인 "k"개의 프로그래밍 펄스들이 가해진 다음에, 도 14b 이후의 상태를 나타내며, 3 국면 프로그래밍 동작의 제 1 국면에서, 고속-프로그래밍 상위 상태 저장 소자들과 저속-프로그래밍 상위 상태 저장 소자들이 Vvh의 판독 레벨을 이용하여 구별된다. k개의 추가적인 프로그램 펄스들의 카운트가 완료되는 경우, Vth 분포(1403)는 저속-프로그래밍 상위-상태 저장 소자들과 고속-프로그래밍 상위-상태 저장 소자들에 대한 영역(1406)과 영역(1408)을 각각 포함한다. 분포(1404)는, VvLM에 도달한 것으로 검증된 상위-상태 저장 소자들의 일부를 나타낸다.
도 14d는 도 14c 이후의 상태를 나타내며 여기서 3-국면 프로그래밍 동작의 제 1 국면이 완료된다. 도 11c로부터 프로그래밍은 계속되어 분포(1403)(분포(1103)와 동일함)는 분포(1445)(분포(1120)와 동일함)로 전이하게 되고, 제 1 국면의 끝에서 모든 상위-상태 저장 소자들은 중간(LM) 상태에 도달하게 된다. 이때, 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들은 알려져 있고 래치들에 저장된다. 분포(1403)로부터 LM 분포(1445)로의 프로그래밍이 상위-상태 저장 소자들에 대해 수행될 수 있고, 이 경우 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 상위-상태 저장 소자들에는 적용되지만 저속-프로그래밍 상위-상태 저장 소자들에는 적용되지 않는다. 이것으로 제 1 국면이 끝난다.
도 14e는 도 14d 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 2 국면에서의 프로그래밍이 일어나고, 최소 개수의 하위-상태 저장 소자들이 Vth>VvaL을 갖는다. 제 2 국면의 시작에서, 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들을 식별하기 위해 래치들이 판독될 수 있다. 하위-상태 저장 소자들이 소거 상태 분포(1400)로부터 분포(1412)로 프로그래밍되고, 상위-상태 저장 소자들이 중간 분포(1445)로부터 이들의 각각의 타겟 상태에 따라 D-상태 분포(1450), E-상태 분포(1460), F-상태 분포(1470), 및 G-상태 분포(1480)로 프로그래밍된다. 도 14e 내지 도 14g의 일부 실시예들에서, 하위-상태 저장 소자들에 대한 Vth 전이는 전형적으로, 상위-상태 저장 소자들에 대한 Vth 전이 이전에 일어남에 유의해야 한다. 따라서, A-상태 저장 소자들이 프로그래밍되고 이들의 Vth 레벨이 증가하는 경우, Vpgm은 단지 저장 소자들을 A-상태 Vth 가까이 이동시키기에는 초기에 충분히 높다. 상위 상태 저장 소자들의 Vth 레벨들은 이러한 시간 동안 이동하지 않을 것이다. Vpgm이 더 높게 될 때에만 상위 D-상태, E-상태, F-상태 및 G-상태 가까이 있는 저장 소자들의 Vth가 증가하기 시작한다. 따라서, 도 14e에 표시된 Vth 전이들은 일 프로그래밍 국면에서 일어나고, 간략한 설명을 위해 하나의 도면에서 제시되었지만, 반드시 동시에 일어날 필요는 없다.
상위-상태 저장 소자들에 대해 래치들에 저장된 프로그램 속도 데이터에 근거하여, 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 상위-상태 저장 소자들에 적용될 수 있지만 저속-프로그래밍 상위-상태 저장 소자들에는 적용되지 않는다. 분포(1412)에서, 영역(1414)은 Vth>VvaL인 하위-상태 저장 소자들을 나타낸다. 최소 개수의 하위-상태 저장 소자들이 VvaL에 도달하는 경우, 카운터가 시작되고 각각의 추가적인 프로그램 펄스에 대해 증분된다. 제 2 국면은 상대적으로 더 큰 Vpgm 스텝 크기를 사용할 수 있다.
도 14f는 추가적인 "k"개의 프로그래밍 펄스들이 가해진 다음에, 도 14e 이후의 상태를 나타내며, 여기서는, 3-국면 프로그래밍 동작의 제 2 국면에서, 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 이용하여 구별된다. k개의 추가적인 프로그램 펄스들의 카운트가 완료되는 경우, Vth 분포(1416)는 저속-프로그래밍 하위-상태 저장 소자들과 고속-프로그래밍 하위-상태 저장 소자들에 대한 영역(1417)과 영역(1418)을 각각 포함한다. 분포(1420)는, VvaL에 도달한 것으로 검증된 A-상태 저장 소자들의 일부를 나타낸다. 분포(1420)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 A-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다.
도 14g는 도 14f 이후의 상태를 나타내며 여기서 3-국면 프로그래밍 동작의 제 2 국면이 완료된다. 이때, 하위-상태 저장 소자들 및 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 이용가능하다. 하위-상태 저장 소자들이 분포(1416)로부터 A-상태 분포(1420), B-상태 분포(1430), 혹은 C-상태 분포(1440)로 프로그래밍되며, 이 경우 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 하위-상태 저장 소자들에 적용되지만 저속-프로그래밍 하위-상태 저장 소자들에는 적용되지 않는다. 유사하게, 제 2 국면에서, 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 상위-상태 저장 소자들에 적용되지만 저속-프로그래밍 상위-상태 저장 소자들에는 적용되지 않는다. 이에 따라 제 2 국면은 완료된다.
도 14h는 도 14g 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 3 국면의 시작을 나타낸다. 더 작은 프로그램 펄스 스텝 크기가 사용될 수 있다. 하나 이상의 다른 워드 라인들이 프로그래밍될 때의 커플링 및 간섭 효과들로 인해, Vth 분포들의 폭이 넓혀질 수 있음에 유의해야 한다.
도 14i는 도 14h 이후의 상태를 나타내며, 3-국면 프로그래밍 동작의 제 3 국면의 끝을 나타낸다. A-상태, B-상태, C-상태, D-상태, E-상태, F-상태 및 G-상태 저장 소자들은, 분포(1422), 분포(1432), 분포(1442), 분포(1452), 분포(1462), 분포(1472) 및 분포(1482)로 각각 프로그래밍된다. 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 저장 소자들에는 적용될 수 있지만, 저속-프로그래밍 저장 소자들에는 적용되지 않는다.
사례 6(EXAMPLE 6)
또 다른 구현예는 도 14a, 도 15a, 도 15b1/15c1, 도 15b2/15c2, 도 15d, 도 14h, 도 14i의 시퀀스를 포함한다. 제 1 국면에서, 어떠한 프로그래밍 속도 데이터도 획득되지 않는다. 제 2 국면에서, 하위-상태 저장 소자들과 상위-상태 저장 소자들 양쪽 모두에 대한 프로그래밍 속도 데이터가 획득되고, 프로그래밍 속도-기반의 감속 조치가, 제 2 국면의 나머지에서 그리고 전체 제 3 국면에서 고속-프로그래밍 하위-상태 저장 소자들 및 고속-프로그래밍 상위-상태 저장 소자들에 적용된다.
도 15a는 대안적 3-국면 프로그래밍 동작의 제 1 국면에서의 프로그래밍을 나타내며, 여기서는 8-레벨 메모리 디바이스에 있어서 모든 저장 소자들은 소거 상태에 있다. 시작 포인트는 소거(Er) 상태 분포(1400)를 갖는 도 14a의 분포이다. 상위-상태 저장 소자들이 VvLM을 사용하여 중간 분포(1545)로 프로그래밍된다.
도 15b1로부터 도 15b2로의 전이는 전형적으로, 도 15c1 및 도 15c2로부터의 전이 이전에 일어난다. 마찬가지로, 도 15b1의 상태는 전형적으로, 도 15c1의 상태 이전에 일어난다. 도 15b1과 도 15c1은 명확한 설명을 위해 개별적으로 제시된다. 마찬가지로, 도 15b2과 도 15c2도 명확한 설명을 위해 개별적으로 제시된다. 판독 레벨 Vvl을 사용하여 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득되고, 판독 레벨 Vvh를 사용하여 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 획득된다. 도 15b1 및 도 15b2는 하위-상태 저장 소자들을 포함하는 전이를 나타내고, 도 15c1 및 도 15c2는 상위-상태 저장 소자들을 포함하는 전이를 나타낸다.
도 15b1은 대안적 3-국면 프로그래밍 동작의 제 2 국면에서, 도 15a의 상태 이후의 프로그래밍을 나타내며, 여기서는 최소 개수의 하위-상태 저장 소자들이 Vth>VvaL을 갖는다. 분포(1502)에서, 영역(1504)은 Vth>VvaL인 하위-상태 저장 소자들을 나타낸다. 최소 개수의 하위-상태 저장 소자들이 VvaL에 도달하는 경우, 카운터가 시작되고 각각의 추가적인 프로그램 펄스에 대해 증분된다. 제 2 국면은 상대적으로 더 큰 Vpgm 스텝 크기를 사용할 수 있다.
도 15b2는 추가적인 "k1"개의 프로그래밍 펄스들이 가해진 다음에, 대안적 3-국면 프로그래밍 동작의 제 2 국면에서, 도 15b1의 상태 이후의 상태를 나타내며, 여기서는 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 이용하여 구별된다. k1개의 추가적인 프로그램 펄스들의 카운트가 완료되는 경우, Vth 분포(1506)는 저속-프로그래밍 하위-상태 저장 소자들과 고속-프로그래밍 하위-상태 저장 소자들에 대한 영역(1507)과 영역(1508)을 각각 포함한다. 분포(1520)는, VvaL에 도달한 것으로 검증된 A-상태 저장 소자들의 일부를 나타낸다. 분포(1520)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 A-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다. Vvl은 하위 판독 레벨이다. 고속-프로그래밍 하위-상태 저장 소자들과 저속-프로그래밍 하위-상태 저장 소자들이 Vvl의 판독 레벨을 사용하여 구별되는 포인트까지 어떠한 프로그래밍 속도-기반의 감속 조치도 아직 적용되지 않았다. 이때, 하위-상태 저장 소자들(예를 들어, A-상태 저장 소자들)에 대한 프로그래밍 속도 데이터는 데이터 래치에 저장된다. 데이터 래치에서의 프로그래밍 속도 데이터를 사용하여, 프로그래밍 속도-기반의 감속 조치가 국면의 나머지 동안 하위-상태 저장 소자들에 적용될 수 있다. 프로그래밍 속도-기반의 감속 조치를 고속-프로그래밍 하위-상태 저장 소자들에게는 적용하지만 저속-프로그래밍 하위-상태 저장 소자들에게는 적용하지 않으면서 프로그래밍은 계속될 수 있다.
도 15c1은 대안적 3-국면 프로그래밍 동작의 제 2 국면에서, 도 15a의 상태 이후의 프로그래밍을 나타내며, 여기서는 최소 개수의 상위-상태 저장 소자들이 Vth>VvdL을 갖는다. 중간(LM) 상태(1542)로부터 상위-상태 저장 소자들을 프로그래밍함으로써 분포(1543)에 도달한다. 분포(1543)에서, 영역(1544)은 Vth>VvdL인 상위-상태 저장 소자들을 나타낸다. VvdL은 상위 상태들 중 가장 낮은 상태의 검증 레벨이다. 또 다른 검증 레벨을 사용하는 것도 가능하다. 최소 개수의 상위-상태 저장 소자들이 VvdL에 도달하는 경우, 카운터가 시작되고 각각의 추가적인 프로그램 펄스에 대해 증분된다.
도 15c2는 추가적인 "k2"개의 프로그래밍 펄스들이 가해진 다음에, 대안적 3-국면 프로그래밍 동작의 제 2 국면에서, 도 15c1의 상태 이후의 상태를 나타내며, 여기서는 고속-프로그래밍 상위-상태 저장 소자들과 저속-프로그래밍 상위-상태 저장 소자들이 Vvh의 판독 레벨을 이용하여 구별된다. k2개의 추가적인 프로그램 펄스들의 카운트가 완료되는 경우, Vth 분포(1548)는 저속-프로그래밍 상위-상태 저장 소자들과 고속-프로그래밍 상위-상태 저장 소자들에 대한 영역(1545)과 영역(1546)을 각각 포함한다. 분포(1547)는, VvdL에 도달한 것으로 검증된 D-상태 저장 소자들의 일부를 나타낸다. 분포(1547)에서의 저장 소자들은, 이들이 나머지 저장 소자들보다 더 빨리 타겟 D-상태에 도달했기 때문에, 자동으로 고속 저장 소자들이 됨에 유의해야 한다. Vvh은 상위 판독 레벨이다. kl 및 k2는 하위-상태 저장 소자들과 상위-상태 저장 소자들의 프로그래밍 속도를 결정하기 위해 서로 다른 카운터들이 사용될 수 있음을 표시한다는 것에 유의해야 한다. 간략한 설명을 위해, k1은 k2와 동일한 값으로 설정될 수 있다. 카운트되는 프로그램 펄스들의 개수에 상관없이 카운트의 시작은 서로 다를 수 있음에 유의해야 한다. 즉, 카운트의 시작을 트리거하는 도 15b1 및 도 15c1의 상태들은 서로 다른 시간에 일어날 수 있다.
도 15d는 도 15c1 및 도 15c2의 상태들 이후의 프로그래밍을 나타내며, 여기서 대안적 3-국면 프로그래밍 동작의 제 2 국면이 완료된다. 도 15b2의 하위-상태 분포(1506)와 도 15c2의 상위-상태 분포(1548)가 반복된다. 이때, 하위-상태 저장 소자들과 상위-상태 저장 소자들 양쪽 모두에 대한 프로그래밍 속도는 알려져 있다. 분포(1506)의 하위-상태 저장 소자들이 A-상태 분포(1520), B-상태 분포(1530), 혹은 C-상태 분포(1540)로 전이하도록 프로그래밍은 계속되며, 이 경우 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 하위-상태 저장 소자들에 적용되지만 저속-프로그래밍 하위-상태 저장 소자들에는 적용되지 않는다. 유사하게, 분포(1548)의 상위-상태 저장 소자들이 D-상태 분포(1550), E-상태 분포(1560), F-상태 분포(1570), 및 G-상태 분포(1580)로 전이하도록 프로그래밍은 계속되며, 이 경우 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 상위-상태 저장 소자들에 적용되지만 저속-프로그래밍 상위-상태 저장 소자들에는 적용되지 않는다.
도 15d의 일부 실시예들에서, 하위-상태 저장 소자들에 대한 Vth 전이는 전형적으로, 상위-상태 저장 소자들에 대한 Vth 전이 이전에 일어남에 유의해야 한다.
도 15e는 도 15d의 상태 이후의 프로그래밍을 나타내며, 여기서 대안적 3-국면 프로그래밍 동작의 제 3 국면이 완료된다. 이러한 국면에서, 프로그래밍 속도-기반의 감속 조치가 고속-프로그래밍 하위-상태 저장 소자들 및 고속-프로그래밍 상위-상태 저장 소자들에 적용되지만 저속-프로그래밍 하위-상태 저장 소자들 및 저속-프로그래밍 상위-상태 저장 소자들에는 적용되지 않는다. 검증 레벨(Vva), 검증 레벨(Vvb), 검증 레벨(Vvc), 검증 레벨(Vvd), 검증 레벨(Vve), 검증 레벨(Vvf) 및 검증 레벨(Vvg)을 사용하여 A-상태 분포(1522), B-상태 분포(1532), C-상태 분포(1542), D-상태 분포(1552), E-상태 분포(1562), F-상태 분포(1572) 및 G-상태 분포(1582)로의 전이들이 각각 행해진다.
하나 이상의 다른 워드 라인들이 프로그래밍될 때의 커플링 및 간섭 효과들로 인해, 하위 검증 레벨들에서의 Vth 분포들의 폭이 넓혀질 수 있음에 유의해야 한다.
도 16a1은 2-비트 저장 소자들에 있어서 복수-국면 프로그래밍 동작에서의 사용을 위한 각각의 비트 라인들에 대한 데이터 래치들을 나타낸다. 예시적인 비트 라인들(BLi-2, BLi-1, BLi, BLi+1 및 BLi+2)이 도시된다. 4-레벨(2-비트형 저장 소자 실시예)에서, 래치들(LDL)의 제 1 세트(1600), 래치들(UDL)의 제 2 세트(1610), 래치들(DL1)의 제 3 세트(1620), 래치들(DL2)의 제 4 세트(1630), 및 래치들(DL3)의 제 5 세트(1640)가 제공된다. 일부 경우들에서, 래치들 모두가 필요한 것은 아니다. 하나의 비트 라인과 관련된 래치들이 그 비트 라인의 서로 다른 저장 소자들에 의해 공유된다. 전진-후진 워드 라인 순서가 사용되는 복수-국면 프로그래밍 동작이 수행될 때, 래치들 내에 정보를 유지시키기 위해 주의가 필요하다. 프로그래밍 동안, LDL 및 UDL은 프로그래밍될 필요가 있는 사용자 데이터를 저장하기 위해 사용되고, DL1, DL2 및 DL3 래치들은 프로그래밍 속도 데이터를 저장하기 위해 사용될 수 있다.
도 16a2는 3-비트 저장 소자들에 있어서 복수-국면 프로그래밍 동작에서의 사용을 위한 각각의 비트 라인들에 대한 데이터 래치들을 나타낸다. 이러한 경우에, 래치들(UDL1)의 세트(1612)는 하위, 상위 페이지 비트(즉, 중간 페이지 비트)를 저장하고, 래치들(UDL2)의 세트(1614)는 상위, 상위 페이지 비트를 저장한다.
도 16b 내지 도 16e에서는, 도 10a 내지 도 15e와 연계하여 설명된 사례 1 내지 사례 5를 포함하는 앞서의 예들에 따른, 래치들의 사용이 도시된다. "w" 기호는, 프로그래밍 속도 데이터가 프로그래밍 국면에서 래치들에 기입(예를 들어, 저장)되는 것을 표시하고, "r"은, 프로그래밍 속도 데이터가 프로그래밍 국면에서 (각각의 프로그램 펄스 이전에) 래치들로부터 판독되어 프로그래밍 국면에서 감속 조치를 적용하는데 사용되는 것을 표시하고, "m"은 프로그래밍 속도 데이터가 프로그래밍 국면에서 래치들 내에 유지되고 기입 혹은 판독되지 않는 것을 표시하고(예를 들어, 또 다른 워드 라인이 프로그래밍되고 있을 때), "rst"는 프로그래밍 국면의 끝에서 래치들이 리셋(reset)되는 것을 표시하고, 그리고 "x"는 어떠한 프로그래밍 속도 데이터도 래치 내에 저장되어 있지 않음을 표시하는바, 이것이 의미하는 바는 래치가 비어 있어 어떤 다른 데이터 저장 혹은 어떤 다른 목적으로 사용가능함을 의미한다. 예를 들어, 도 16d2에서의 단계 3에서 "WLn high/low (r,rst/w,r,rst)"의 표시는, 대응하는 프로그래밍 국면이, 초기에 상위 타겟 데이터 상태들을 가진 WLn의 저장 소자들과 관련된 래치들부터 프로그래밍 속도 데이터를 판독하는 것을 포함함을 나타낸다. 이후, 프로그래밍 국면 내에서, 하위 타겟 데이터 상태들에 속하는 저장 소자들에 대해 프로그램 속도 정보가 획득되고, 이러한 정보로 래치를 업데이트하기 위해 데이터 래치에 기입 동작이 수행된다. 후속 프로그램 펄스들에 대해, 상위 타겟 데이터 상태들과 하위 타겟 데이터 상태들 양쪽 모두에 속하는 저장 소자들의 프로그램 속도 정보를 획득하기 위해 데이터 래치가 판독된다. 마지막으로, 프로그래밍 국면의 끝에서, 래치들은 리셋된다.
또한, 도 16b 내지 도 16e에서, 각각의 단계는 해당 도면에 표시된 특정 WL 상의 프로그래밍 국면에 대응한다.
도 16b는 사례 1에 있어서 데이터 래치들에 저장된 데이터를 나타낸다. "단계"는 도 7a에 표시된 단계 번호를 말한다. 단계 1에서, WLn에 대한 하위 페이지 데이터 및 상위 페이지 데이터가, 사용된 프로그래밍의 타입에 따라, LDL 및 UDL과 같은 래치들에 저장될 수 있고 그리고/또는 캐시(cache)될 수 있다. 데이터의 상위 페이지 및 하위 페이지의 저장에 관한 특정 세부사항은 제공되지 않는데, 왜냐하면 임의의 적절한 기법이 사용될 수 있기 때문이다. WLn에 있어서의 모든 상태들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 2에서, WLn+1에 있어서의 모든 상태들에 대한 프로그래밍 속도 데이터가 DL2에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 이러한 시간 동안 DL1에서의 데이터는 단순히 유지된다. 단계 3은 래치 데이터를 변경시키지 않고, DL1이 각각의 프로그램 펄스 이전에 판독되며, 프로그래밍 국면의 끝에서 리셋된다. 단계 4에서, WLn+2에 있어서의 모든 상태들에 대한 프로그래밍 속도 데이터로 DL1이 기입되고 각각의 후속 프로그램 펄스들 마다 판독된다. 단계 5에서, DL2는, WLn+1에 있어서의 모든 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 5의 끝에서, WLn+1은 프로그래밍을 끝내고, 이에 따라 WLn+2에 속하는 저장 소자들에 대한 프로그램 속도 정보는 이제 더 이상 요구되지 않는다. 따라서, DL2는 WLn+2의 프로그래밍 끝에서 리셋된다. 데이터가 결정되거나 혹은 판독되자마자 프로그램 속도 데이터가 저장 소자들에 적용된다.
도 16c1은 사례 2에 있어서 데이터 래치들에 저장된 데이터를 나타낸다. 단계는 도 7b에 표시된 단계 번호를 말한다. 단계 1에서, WLn에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 2에서, WLn+1에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 DL2에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 3은 래치 데이터를 변경시키지 않고, DL1은, WLn에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 4에서, WLn+2에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 DL3에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 5에서, DL2는, WLn+1에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 6에서, DL1은, WLn에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 6의 끝에서, WLn은 프로그래밍을 끝내고, 이에 따라 DL1은 리셋된다. 단계 7에서, WLn+3에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 8에서, DL3은, WLn+2에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 9에서, DL2는, WLn+1에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 9의 끝에서, WLn+1은 프로그래밍을 끝내고, 이에 따라 DL2는 리셋된다.
도 16c2는 도 16c1에 대한 대안예를 나타내며, 여기서는 프로그래밍 속도 데이터에 근거하는 감속 조치가 제 3 국면에서 적용되지 않는다. 본 경우에서, DL3은 필요하지 않다. 도 16c1과의 차이는, 단계 4에서, WLn+2에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 (DL3 대신에) DL1에 기입되며, 단계 7에서, WLn+3에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 (DL1 대신에) DL2에 기입된다는 것이다. 또한, 단계 8의 끝에서, DL1이 리셋될 수 있는데, 왜냐하면 WLn+2에 대한 프로그래밍 속도 데이터가 이제 더 이상 필요 없기 때문이다. 마찬가지로, DLl 및 DL2가 단계 3 및 단계 5의 끝에서 각각 더 빨리 리셋될 수 있다.
도 16c3은 사례 2A에 있어서 데이터 래치들에 저장된 데이터를 나타낸다. "단계"는 도 7a에 표시된 단계 번호를 말한다. 단계 1에서, WLn에 있어서의 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 2에서, WLn+1에 있어서의 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 DL2에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 3은 래치 데이터를 변경시키지 않고, DL1은, WLn에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 3의 끝에서, WLn은 프로그래밍을 끝내고, 이에 따라 DL1은 리셋된다. 단계 4에서, WLn+2에 있어서의 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 5에서, DL2는, WLn+1에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 5의 끝에서, WLn+1은 프로그래밍을 끝내고, 이에 따라 DL2는 리셋된다.
도 16d1은 사례 3 혹은 사례 5에 있어서 데이터 래치들에 저장된 데이터를 나타낸다. "단계"는 도 7b에 표시된 단계 번호를 말한다. 단계 1에서, WLn에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 2에서, WLn+1에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 DL2에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 3에서, WLn에 있어서의 하위 상태들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, 그리고 각각의 프로그램 펄스 이전에 DLl은, 프로그래밍 국면에서 초기에 WLn에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하고 이후 WLn에 있어서의 상위 상태들과 하위 상태들 양쪽 모두에 대한 프로그래밍 속도 데이터를 획득하기 위해 판독된다. 단계 4에서, WLn+2에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 DL3에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 5에서, WLn+1에 있어서의 하위 상태들에 대한 프로그래밍 속도 데이터가 DL2에 기입되며, 그리고 각각의 프로그램 펄스 이전에 DL2는, 프로그래밍 국면에서 초기에 WLn+1에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하고 이후 WLn+1에 있어서의 상위 상태들과 하위 상태들 양쪽 모두에 대한 프로그래밍 속도 데이터를 획득하기 위해 판독된다. 단계 6에서, DL1은, WLn에 있어서의 상위 상태들 및 하위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 6의 끝에서, WLn은 프로그래밍을 끝내고, 이에 따라 DL1은 리셋된다. 단계 7에서, WLn+3에 있어서의 하위 상태들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, 매 후속 프로그램 펄스마다 판독된다. 단계 8에서, WLn+2에 있어서의 하위 상태들에 대한 프로그래밍 속도 데이터가 DL3에 기입되며, 그리고 각각의 프로그램 펄스 이전에 DL3은, 프로그래밍 국면에서 초기에 WLn+2 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하고 이후 WLn+2에 있어서의 상위 상태들과 하위 상태들 양쪽 모두에 대한 프로그래밍 속도 데이터를 획득하기 위해 판독된다. 단계 9에서, DL2는, WLn+1에 있어서의 상위 상태들 및 하위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 9의 끝에서, WLn+1은 프로그래밍을 끝내고, 이에 따라 DL2는 리셋된다.
도 16d2는 도 16d1에 대한 대안예를 나타내며, 여기서는 프로그래밍 속도 데이터에 근거하는 감속 조치가 제 3 국면에서 적용되지 않는다. 본 경우에서, DL3은 필요하지 않다. 도 16d1과의 차이는, 단계 4에서, WLn+2에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 (DL3 대신에) DL1에 기입되며, 단계 7에서, WLn+3에 있어서의 상위 상태들에 대한 프로그래밍 속도 데이터가 (DL1 대신에) DL2에 기입된다는 것이다. 또한, 단계 5의 끝에서, DL2는 리셋될 수 있는데, 왜냐하면 WLn+1에 대한 프로그래밍 속도 데이터가 이제 더 이상 필요 없기 때문이고, 그리고 단계 8의 끝에서, DL1이 리셋될 수 있는데, 왜냐하면 WLn+2에 대한 프로그래밍 속도 데이터가 이제 더 이상 필요 없기 때문이다. 마찬가지로, DLl이 단계 3의 끝에서 더 빨리 리셋될 수 있는데, 왜냐하면 WLn에 대한 프로그램 속도 데이터가 이제 더 이상 필요 없기 때문이다.
도 16e는 사례 4 혹은 사례 6에 있어서 데이터 래치들에 저장된 데이터를 나타낸다. "단계"는 도 7b에 표시된 단계 번호를 말한다. 단계 1과 단계 2는 어떠한 프로그래밍 속도 데이터의 판독 혹은 기입을 포함하지 않는다. 단계 3에서, WLn에 있어서 먼저 하위 상태들에 대한 프로그래밍 속도 데이터 그리고 이후 상위 상태들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, DL1이 매 후속 프로그램 펄스마다 판독된다. 단계 4에서, DL1 내의 프로그래밍 속도 데이터가 유지된다. 단계 5에서, WLn+1에 있어서 먼저 하위 상태들에 대한 프로그래밍 속도 데이터 그리고 이후 상위 상태들에 대한 프로그래밍 속도 데이터가 DL2에 기입되며, DL2가 매 후속 프로그램 펄스마다 판독된다. 단계 6에서, DL1은, WLn에 있어서의 하위 상태들 및 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 6의 끝에서, DL1은 리셋될 수 있는데, 이는 WLn의 모든 프로그래밍이 완료되어 WLn에 대한 프로그래밍 속도 데이터가 이제 더 이상 필요 없기 때문이다. 일반적으로, 워드 라인에 대한 프로그래밍 속도 데이터를 저장하는 래치는, 해당 워드 라인이 프로그래밍을 완료한 경우 혹은 프로그래밍 속도 데이터를 더 이상 저장할 필요가 없는 경우, 리셋될 수 있다. 단계 7에서, DL2 내의 프로그래밍 속도 데이터가 유지된다. 단계 8에서, WLn+2에 있어서 먼저 하위 상태들에 대한 프로그래밍 속도 데이터 그리고 이후 상위 상태들에 대한 프로그래밍 속도 데이터가 DL1에 기입되며, DL1이 매 후속 프로그램 펄스마다 판독된다. 단계 9에서, DL2는, WLn+1에 있어서의 하위 상태들 및 상위 상태들에 대한 프로그래밍 속도 데이터를 획득하기 위해 각각의 프로그램 펄스 이전에 판독된다. 단계 9의 끝에서, WLn+1은 프로그래밍을 끝내고, 이에 따라 DL2는 리셋된다.
사례 4 및 도 16e에서, 다음의 단계들이 래치들에 대해 수행됨에 유의해야 한다.
단계 1: 프로그래밍의 시작.
단계 3은 서로 다른 파트 3a(Part 3a) 내지 파트 3d(Part 3d)를 포함한다.
파트 3a(Part 3a): 하위-상태 저장 소자들에 대한 프로그래밍 속도 데이터를 획득함. 이러한 정보는 래치들(본 예에서는 DL1)에 저장된다. 이것이 하나의 기입 동작이다.
파트 3b(Part 3b): 후속 프로그래밍에서 각각의 프로그램 펄스 이전에 래치들로부터 프로그래밍 속도 데이터를 판독하고, 그리고 판독된 정보에 근거하여 후속 프로그래밍에 있어서 하위-상태의 고속 저장 소자들에 감속 조치를 적용함. 이것이 판독 동작이다.
파트 3c(Part 3c): 이후에, 동일 프로그래밍 국면에서, 상위-상태 저장 소자들에 대한 프로그래밍 속도 데이터를 획득함. 이러한 정보는 동일 래치 세트(DL1)에 더해지고, 이에 따라 래치들은 업데이트된다. 이제 모든 저장 소자들에 대한 프로그래밍 속도 데이터가 통합되었다. 이것이 또 하나의 기입 동작이다.
파트 3d(Part 3d): 후속 프로그래밍에서 각각의 프로그램 펄스 이전에 래치들로부터 프로그래밍 속도 데이터를 판독하고, 그리고 판독된 정보에 근거하여 후속 프로그래밍에 있어서 하위-상태 저장 소자들과 상위-상태 저장 소자들 중 고속 저장 소자들에 감속 조치를 적용함. 이것은 판독 동작이다.
단계 6은 파트 6a(Part 6a) 및 파트 6b(Part 6b)를 포함한다.
파트 6a(Part 6a): 프로그래밍 국면에서 각각의 프로그램 펄스 이전에 래치들로부터 프로그래밍 속도 데이터를 판독하고, 그리고 판독된 정보에 근거하여 후속 프로그래밍에 있어서 하위-상태 저장 소자들과 상위-상태 저장 소자들 중 고속 저장 소자들에 감속 조치를 적용함. 이것은 판독 동작이다.
파트 6b(Part 6b): WLn에 대한 복수-국면 프로그래밍 동작의 끝에서 래치들을 리셋시킴.
다음은 마지막 프로그래밍 국면에서 프로그래밍 속도 데이터를 폐기(discard)하는 선택적 사항을 설명한다.
도 16c2 및 도 16d2와 연계되어 언급된 바와 같이, 래치들의 수를 (예를 들어, 비트 라인당 하나의 래치만큼) 감소시키기 위해 3-국면 프로그래밍 동작의 제 3 국면과 같은 마지막 프로그래밍 국면에서 프로그래밍 속도 데이터를 폐기하는 것이 가능하다. 본 경우에 있어서, 프로그래밍 속도 데이터는 마지막 국면 전에 하나 이상의 이전 프로그래밍 국면들에서 적용된다. 많은 경우에 있어서, 이것은 또한 결과적으로 큰 이점을 제공한다.
더욱이, Vsgd의 레벨은 마지막 국면에서보다 제 2 국면과 같은 이전 프로그래밍 국면에서 더 높을 수 있다. 이것은, Vsgd가 더 높을 때 더 높은 비트 라인 바이어스가 사용될 수 있고 Vsgd는 전류 상태에 맞게 최적화될 수 있어 SGD 트랜지스터 상에서의 불필요한 스트레스를 필할 수 있으며 파워 소비가 감소된다는 점에서 유익할 수 있다. 예를 들어, 더 이른 국면에서, 프로그래밍 속도에 근거하지 않지만, 예컨대, 저장 소자의 Vth가 타겟 데이터 상태들의 하위 검증 레벨과 상위 검증 레벨 사이에 있을 때, 또는 프로그래밍 국면 전체에 걸쳐, 또는 다른 시간에서, 가해지는 추가적인 비트 라인 바이어스가 사용될 수 있다. 이것은 프로그래밍 속도-기반의 감속 조치에 추가하여 구현될 수 있는 추가적 감속 조치이다.
도 10a를 참조하면, 예를 들어, 타겟 상태가 A-상태인 저장 소자에 대해, 저장 소자의 Vth가 VvaL과 Vva 사이에 있을 때 추가적인 비트 라인 바이어스가 가해질 수 있다. 이러한 추가적인 비트 라인 바이어스는, 고속-프로그래밍 저장 소자들에 가해진 프로그래밍 속도-기반의 바이어스에 더해진다. 저속-프로그래밍 저장 소자들에 대해서는 이러한 추가적인 비트 라인 바이어스만이 사용된다. 예를 들어, 프로그래밍 속도-기반의 바이어스는 0.7V일 수 있고, 추가적인 비트 라인 바이어스는 0.5V일 수 있다. 따라서, 0.5V의 비트 라인 바이어스가 저속-프로그래밍 저장 소자들에 가해질 수 있고, 그리고 1.2V의 비트 라인 바이어스가 고속-프로그래밍 저장 소자들에 가해질 수 있다. 비트 라인 바이어스들은 아직 락아웃되지 않은 비트 라인들에 가해진다. 락아웃 비트 라인 바이어스는 2V 내지 3V일 수 있다. 후속적으로, 최종 국면에서, 프로그래밍 속도-기반의 바이어스는 사용되지 않지만 이러한 추가적인 비트 라인 바이어스는 사용된다. 예를 들어, 프로그래밍된 저장 소자들에 0.5V의 비트 라인 바이어스가 가해질 수 있다. 서로 다른 국면들에서 Vsgd의 레벨을 조정함으로써, 메모리 디바이스의 성능이 최적화될 수 있다.
Vbl은 Vsgd(드레인측 선택 게이트) 마진-윈도우에 의해 제한을 받기 때문에 너무 커질 수는 없다. 만약 Vbl이 너무 커지면, 드레인측 선택 게이트를 턴온시키기 위해, 즉 전도 상태가 되게 하기 위해 필요한 Vsgd 레벨이 과도하게 커지게 된다. 구체적으로, 높은 Vbl을 패스시키기 위해 선택 NAND 스트링에 대해 충분히 높은 Vsgd 레벨은, 드레인측 선택 게이트를 비-전도 상태에서 유지시키기 위해서 비선택 금지 NAND 스트링에 대해 과도하게 클 수 있다. 하지만, 선택 비트 라인들과 비선택 비트 라인들 양쪽 모두에 대해 공통 Vsgd가 사용된다.
드레인측 선택 게이트를 비-전도 상태에서 유지시키는 것은 비선택 비트 라인 및 NAND 스트링에 대해 바람직할 수 있는데, 왜냐하면 이것은 비선택 NAND 스트링의 기판에서의 채널이, 선택 NAND 스트링의 프로그래밍 동안 비선택 NAND 스트링의 비선택 저장 소자들의 프로그래밍을 금지시키는 부스트 레벨(boost level)을 유지하게 할 수 있기 때문이다. 만약 드레인측 선택 게이트가 전도 상태가 된다면, 금지 채널에서의 부스트 전위(boost potential)가 누설되게 되고, 이것은 금지 저장 소자에 프로그램 교란(program disturb)을 일으킬 수 있다. Vbl을 패스시키기 위해 충분히 높은 Vsgd 레벨은 (a) Vsgd ≥ Vbl + Vth(sgd) + 마진(margin)인바, 여기서 Vth(sgd)는 SGD 트랜지스터의 임계 전압이고, 마진은 추가적인 어떤 작은 안전 마진(safety margin)이다. 반면, 채널을 컷오프(cutoff)시키고 Vbl을 패스시키지 않도록 하기 위해 충분히 낮은 Vsgd 레벨은 (b) Vsgd ≤ Vbl + Vth(sgd) - 마진이다. 선택 비트 라인에 대해서는 조건 (a)가 충족돼야만 하고, 비선택 비트 라인에 대해서는 조건 (b)가 충족돼야만 한다. 이러한 두 가지 조건들의 조합이 Vsgd 마진 윈도우를 형성하는바, 최적의 프로그래밍을 위해 Vsgd 값은 이러한 마진 윈도우 내에서 설정돼야만 한다.
예를 들어, Vth(sgd)=1V이고 마진=0.2V라고 가정한다. 더 이른 프로그래밍 국면에서, 0.7V의 프로그래밍 속도-기반의 바이어스 및 0.5V의 추가적인 비트 라인 바이어스가 가해진다. Vbl=1.2V를 갖는 선택 비트 라인에 대해, 조건 (a)는 Vsgd ≥ 1.2V + 1V + 0.2V, 즉, Vsgd ≥ 2.4V이다. 조건 (b)는 Vsgd ≤ Vbl + 1V - 0.2V, 즉, Vsgd ≤ Vbl + 0.8V이다. 예를 들어, 선택 비트 라인에 대해 Vsgd=2.4V인 경우, 조건 (a)는 충족되고, 조건 (b)는 만약 비선택 비트 라인들에 대해 Vbl ≥ 1.6이면 충족된다. Vsgd가 과도하게 높아지지 않기 때문에, 이러한 조건들은 합리적이다.
최종 프로그래밍 국면에서는, 0.5V의 추가적인 비트 라인 바이어스는 가해지지만, 0.7V의 프로그래밍 속도-기반의 바이어스는 가해지지 않는다. Vbl=0.5V를 갖는 선택 비트 라인에 대해, 조건 (a)는 Vsgd ≥ 0.5V + 1V + 0.2V, 즉, Vsgd ≥ 1.7V이다. 조건 (b)는 Vsgd ≤ Vbl + 1V - 0.2V, 즉, Vsgd ≤ Vbl + 0.8V이다. 예를 들어, 선택 비트 라인에 대해 Vsgd=1.7V인 경우, 조건 (a)는 충족되고, 조건 (b)는 만약 비선택 비트 라인들에 대해 Vbl ≥ 1.0이면 충족된다. 다시 말하면, 이러한 조건들은 합리적인데, 왜냐하면 Vsgd가 과도하게 높아지지 않고 필요 이상으로 더 커지지 않기 때문인바, 이에 따라 SGD 트랜지스터 상에서의 불필요한 스트레스를 피할 수 있다. 마찬가지로, 파워 소비가 감소한다.
앞서 설명된 비트 라인 바이어스 값들은 단지 예시에 불과하다.
따라서, 이러한 기법은 복수-국면 프로그래밍 동작의 일 국면(one phase)(예를 들어, 비정밀(foggy) 국면과 같은 것)을 수행하는 것을 포함할 수 있고, 여기서 일 국면을 수행하는 것은: (a) 고속-프로그래밍 비휘발성 저장 소자들과 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 것, 그리고 (b) 상기 구별하는 것에 응답하여: (i) 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해, 감속 조치를 적용하기 위해 관련 비트 라인 전압을 영(zero)이 아닌 제 1 비트 라인 레벨(bit line level)(예컨대, 0.7V의 프로그래밍 속도-기반의 바이어스와 0.5V의 추가적인 비트 라인 바이어스의 합)로 설정하여, 계속 프로그래밍하는 것, (ii) 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해, 관련 비트 라인 전압을 영이 아닌 상기 제 1 비트 라인 레벨보다 작은 영이 아닌 제 2 비트 라인 레벨(예컨대, 0.5V의 추가적인 비트 라인 바이어스)로 설정하여, 계속 프로그래밍하는 것, 그리고 (iii) 상기 비휘발성 저장 소자들과 관련된 드레인측 선택 게이트들(drain side select gates)의 공통 제어 게이트 전압을 제 1 제어 게이트 레벨(예컨대, 2.4V)에 설정하는 것을 포함한다. 이 기법은 또한, 상기 일 국면에서 관련 검증 레벨에 도달한 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부 및 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해 관련 비트 라인 전압을 상기 제 1 비트 라인 레벨보다 큰 락아웃 레벨(lockout level)(예컨대, 2.5V-3V)까지 상승시키는 것을 포함한다.
이 기법은 또한, 후속적으로 복수-국면 프로그래밍 동작의 다음 국면(next phase)(예를 들어, 정밀(fine) 국면과 같은 것)을 수행하는 것을 포함할 수 있고, 여기서 다음 국면을 수행하는 것은, 상기 고속-프로그래밍 비휘발성 저장 소자들 및 상기 저속-프로그래밍 비휘발성 저장 소자들에 대해, 관련 비트 라인 전압들을 상기 제 1 비트 라인 레벨보다 작은 영이 아닌 레벨(예컨대, 0.5V의 추가적인 비트 라인 바이어스)로 설정하여, 계속 프로그래밍하는 것, 그리고 상기 선택 게이트들의 상기 공통 제어 게이트 전압을 상기 제 1 제어 게이트 레벨보다 작은 제 2 제어 게이트 레벨(예컨대, 1.7V)에 설정하는 것을 포함한다. 이 기법은 또한, 상기 다음 국면에서 관련 검증 레벨에 도달한 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부와 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해 관련 비트 라인 전압을 상기 락아웃 레벨까지 상승시키는 것을 포함한다.
일 실시예에서, 일 국면(FOGGY) 및 다음 국면(FINE)을 포함하는 복수-국면 프로그래밍 동작을 사용하여 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법이 제공된다. 본 방법은, 타겟 워드 라인(WLn)의 비휘발성 저장 소자들에 대해: 일 국면(FOGGY)을 수행하는 단계를 포함하고, 여기서 일 국면(FOGGY)을 수행하는 단계는, (a) 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계를 포함한다. 본 방법은 또한, (b) 상기 구별하는 단계에 응답하여: (i) 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구분하는 프로그래밍 속도 데이터를 래치들의 제 1 세트에 저장하는 단계, (ii) 각각의 후속 프로그램 펄스 이전에 상기 래치들의 제 1 세트를 판독하는 단계, 판독된 정보에 근거하여 (iii) 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계, 그리고 (iv) 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계를 포함한다.
본 방법은 또한, 후속적으로 상기 비-휘발성 저장 소자들의 세트 내의 또 다른 워드 라인(WLn+1)의 비휘발성 저장 소자들에 대해 프로그래밍 동작들을 수행하는 단계를 포함한다. 본 방법은 또한, 상기 다음 국면(FINE) 동안: 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계와, 그리고 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계를 포함한다.
대응하는 비휘발성 저장 장치들은, 비휘발성 저장 소자들의 세트, 상기 비휘발성 저장 소자들의 세트와 관련된 워드 라인들(타겟 워드 라인을 포함함), 그리고 하나 이상의 제어 회로들을 포함한다. 상기 하나 이상의 제어 회로들은 앞서 언급된 방법의 단계들을 수행한다. 또는, 본 장치는 앞서 언급된 방법의 단계들을 수행하기 위한 수단들을 포함할 수 있다.
또 다른 실시예에서, 일 국면(one phase)(LM), 다음 국면(next phase)(FOGGY) 및 다다음 국면(next, next phase)(FINE)을 포함하는 복수-국면 프로그래밍 동작을 사용하여 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법이 제공된다. 본 방법은, 상기 비휘발성 저장 소자들의 세트 내의 타겟 워드 라인의 비휘발성 저장 소자들에 대해: 일 국면(LM)을 수행하는 단계를 포함하고, 여기서 일 국면(LM)을 수행하는 단계는: 상위 타겟 데이터 상태들(B, C; D, E, F, G)을 갖는 비휘발성 저장 소자들을 소거 상태로부터 상기 상위 타겟 데이터 상태들의 검증 레벨들보다 작은 중간 검증 레벨(VvLM)을 갖는 중간 분포로 프로그래밍하는 단계를 포함하며, 이 경우 적어도 하나의 하위 타겟 데이터 상태(A; A, B, C)를 갖는 비휘발성 저장 소자들은 상기 소거 상태에서 유지된다. 본 방법은 또한, 검증 레벨들(VvaL, VvbL, VvcL; VvaL, VvbL, VvcL, VvdL, VveL, VvfL, VvgL)의 제 1 세트를 사용하여 다음 국면(FOGGY)을 수행하는 단계를 포함하며, 여기서 다음 국면(FOGGY)을 수행하는 단계는: (a) 상기 적어도 하나의 하위 타겟 데이터 상태를 갖는 비휘발성 저장 소자들 중에서, 고속-프로그래밍 비휘발성 저장 소자들과 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계, (b) 상기 구별하는 단계에 응답하여: (i) 상기 적어도 하나의 하위 타겟 데이터 상태를 갖는 고속-프로그래밍 비휘발성 저장 소자들과 상기 적어도 하나의 하위 타겟 데이터 상태를 갖는 저속-프로그래밍 비휘발성 저장 소자들을 구분하는 프로그래밍 속도 데이터를 래치들의 제 1 세트에 저장하는 단계, (ii) 각각의 후속 프로그램 펄스 이전에 상기 래치들의 제 1 세트를 판독하는 단계, 판독된 정보에 근거하여 (iii) 상기 적어도 하나의 하위 타겟 데이터 상태를 갖는 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계, 그리고 (iv) 상기 적어도 하나의 하위 타겟 데이터 상태를 갖는 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계, 그리고 (c) 상기 상위 타겟 데이터 상태들을 갖는 비휘발성 저장 소자들을 계속 프로그래밍하는 단계를 포함한다.
본 방법은 또한, 검증 레벨들(Vva, Vvb, Vvc; Vva, Vvb, Vvc, Vvd, Vve, Vvf, Vvg)의 제 2 세트의 관련 검증 레벨들을 사용하여 다다음 국면(FINE)을 수행하는 단계를 포함하고, 여기서 상기 검증 레벨들의 제 2 세트 내의 각각의 검증 레벨은 상기 검증 레벨들의 제 1 세트 내의 대응하는 검증 레벨보다 더 크며, 여기서 다다음 국면(FINE)을 수행하는 단계는: (d) 각각의 프로그램 펄스 이전에 상기 래치들의 제 1 세트를 판독하는 단계, 판독된 정보를 근거로, 상기 적어도 하나의 하위 타겟 데이터 상태를 갖는 고속-프로그래밍 비휘발성 저장 소자들을 상기 래치들의 제 1 세트 내의 프로그래밍 속도 데이터에 응답하는 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계, 상기 적어도 하나의 하위 타겟 데이터 상태를 갖는 저속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계, 그리고 (e) 상기 상위 타겟 데이터 상태들을 갖는 비휘발성 저장 소자들을 계속 프로그래밍하는 단계를 포함한다.
대응하는 비휘발성 저장 장치는, 비휘발성 저장 소자들의 세트, 상기 비휘발성 저장 소자들의 세트와 관련된 워드 라인들(타겟 워드 라인을 포함함), 및 하나 이상의 제어 회로들을 포함한다. 상기 하나 이상의 제어 회로들은 앞서 언급된 방법의 단계들을 수행한다. 또는, 본 장치는 앞서 언급된 방법의 단계들을 수행하기 위한 수단들을 포함할 수 있다.
또 다른 실시예에서, 일 국면(FOGGY) 및 다음 국면(FINE)을 포함하는 복수-국면 프로그래밍 동작을 사용하여 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법이 제공된다. 본 방법은, 상기 비휘발성 저장 소자들의 세트 내의 타겟 워드 라인의 비휘발성 저장 소자들에 대해: 일 국면(FOGGY)을 수행하는 단계를 포함하고, 여기서 일 국면(FOGGY)을 수행하는 단계는: (a) 고속-프로그래밍 비휘발성 저장 소자들과 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계, (b) 상기 구별하는 단계에 응답하여: (i) 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구분하는 프로그래밍 속도 데이터를 래치들의 제 1 세트에 저장하는 단계, (ii) 각각의 프로그램 펄스 이전에 상기 래치들의 제 1 세트를 판독하는 단계, 판독된 정보에 근거하여 (iii) 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해, 프로그래밍 속도-기반의 감속 조치를 적용하기 위해 관련 비트 라인 전압을 영이 아닌 제 1 비트 라인 레벨(예컨대, 1.2V)로 설정하여, 계속 프로그래밍하는 단계, (iv) 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해, 관련 비트 라인 전압을 영이 아닌 상기 제 1 비트 라인 레벨보다 작은 영이 아닌 제 2 비트 라인 레벨(0.5V)로 설정하여, 계속 프로그래밍하는 단계, 그리고 (v) 상기 비휘발성 저장 소자들과 관련된 드레인측 선택 게이트들의 공통 제어 게이트 전압을 제 1 제어 게이트 레벨(예컨대, 2.4V)에 설정하는 단계를 포함한다.
본 방법은 또한, 상기 일 국면에서 관련 검증 레벨에 도달한 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부 및 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해 관련 비트 라인 전압을 상기 제 1 비트 라인 레벨보다 큰 락아웃 레벨까지 상승시키는 단계를 포함한다. 본 방법은 또한, 후속적으로 다음 국면(FINE)을 수행하는 단계를 포함하고, 여기서 다음 국면(FINE)을 수행하는 단계는, 각각의 프로그램 펄스 이전에 상기 래치들의 제 1 세트를 판독하여 상기 고속-프로그래밍 비휘발성 저장 소자들과 상기 저속-프로그래밍 비휘발성 저장 소자들을 계속 프로그래밍하는 단계, 그리고 판독된 정보에 근거하여, 관련 비트 라인 전압들을 상기 제 1 비트 라인 레벨보다 작은 영이 아닌 레벨로 설정하는 단계, 및 상기 선택 게이트들의 상기 공통 제어 게이트 전압을 상기 제 1 제어 게이트 레벨보다 작은 제 2 제어 게이트 레벨(예컨대, 1.7)에 설정하는 단계를 포함한다.
본 방법은 또한, 상기 다음 국면에서 관련 검증 레벨에 도달한 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부와 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해 관련 비트 라인 전압을 상기 락아웃 레벨까지 상승시키는 단계를 포함한다.
대응하는 비휘발성 저장 장치는, 비휘발성 저장 소자들의 세트, 상기 비휘발성 저장 소자들의 세트와 관련된 워드 라인들(타겟 워드 라인을 포함함), 그리고 하나 이상의 제어 회로들을 포함한다. 하나 이상의 제어 회로들은 앞서 언급된 방법의 단계들을 수행한다. 또는, 본 장치는 앞서 언급된 방법의 단계들을 수행하기 위한 수단들을 포함할 수 있다.
또 다른 실시예에서, 비휘발성 저장 소자들의 세트 내의 타겟 워드 라인의 비휘발성 저장 소자들을 프로그래밍하는 방법이 제공된다. 본 방법은: (a) 상기 타겟 워드 라인에 프로그래밍 펄스들을 가하는 단계와, (b) 상기 비휘발성 저장 소자들의 특정 개수가 소정의 검증 레벨(VvaL, Vva)에 언제 도달하는지를 결정하는 단계와, (c) 상기 비휘발성 저장 소자들의 특정 개수가 제 1 검증 레벨에 도달한 이후 일정 개수(m, k)의 프로그래밍 펄스들을 카운트하는 단계와, (d) 상기 카운트의 완료에 응답하여, 상기 소정의 레벨(VvaL, Vva) 혹은 또 다른 하위 레벨(Vvl)에서 행해지는 감지 동작을 수행함으로써 고속-프로그래밍 비휘발성 저장 소자들과 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계와, (e) 상기 구별하는 단계에 응답하여, 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구분하는 프로그래밍 속도 데이터를 래치들의 제 1 세트에 저장하는 단계와, 그리고 (f) 각각의 프로그램 펄스 이전에 상기 래치들의 제 1 세트를 판독하는 단계, 판독된 정보에 근거하여, 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 관련된 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계, 그리고 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계를 포함한다.
대응하는 비휘발성 저장 장치는, 비휘발성 저장 소자들의 세트, 비휘발성 저장 소자들의 세트와 관련된 워드 라인들(타겟 워드 라인을 포함함), 및 하나 이상의 제어 회로들을 포함한다. 상기 하나 이상의 제어 회로들은 앞서 언급된 방법의 단계들을 수행한다. 또는, 본 장치는 앞서 언급된 방법의 단계들을 수행하기 위한 수단들을 포함할 수 있다.
본 명세서에서 제시되는 방법들을 구현하기 위한 대응하는 방법, 시스템 및 컴퓨터-판독가능 저장 디바이스 혹은 프로세서-판독가능 저장 디바이스가 제공된다.
예시 목적 및 설명 목적으로 앞서의 상세한 내용이 제공되었다. 이것은 개시되는 형태에 정확히 본 발명을 한정시키려는 것이 아니며 또한 가능한 실시예 모두를 말하려는 것도 아니다. 앞서의 가르침을 고려하여 많은 수정 및 변형이 가능하다. 앞서의 실시예들은 본 기법의 원리 및 그 실제 응용을 가장 잘 설명하도록 선택되었고, 그럼으로써 본 발명의 기술분야에서 숙련된 자들이 고려되는 특정 용도에 적합하도록 다양한 수정을 통해 그리고 다양한 구현으로 본 기법을 가장 잘 이용할 수 있도록 선택된 것이다. 본 기법의 범위가 본 명세서에 첨부되는 특허청구범위에 의해 정의되도록 하였다.

Claims (15)

  1. 일 국면(one phase)(FOGGY) 및 다음 국면(next phase)(FINE)을 포함하는 복수-국면 프로그래밍 동작(multi-phase programming operation)을 사용하여 비휘발성 저장 소자들(155)의 세트를 프로그래밍하는 방법으로서,
    타겟 워드 라인(target word line)(WLn)의 비휘발성 저장 소자들에 대해: 일 국면(FOGGY)을 수행하는 단계와, 여기서 일 국면(FOGGY)을 수행하는 단계는, (a) 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들(faster-programming non-volatile storage elements)과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들(slower-programming non-volatile storage elements)을 구별하는 단계, 그리고 (b) 상기 구별하는 단계에 응답하여: (i) 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구분하는 프로그래밍 속도 데이터(programming speed data)를 래치(latch)들(DL1, DL2, DL3)의 제 1 세트에 저장하는 단계, (ii) 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치(programming speed-based slow down measure)를 적용하여 계속 프로그래밍하는 단계, 그리고 (iii) 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계를 포함하고;
    후속적으로, 상기 비휘발성 저장 소자들의 세트 내의 또 다른 워드 라인(WLn+1)의 비휘발성 저장 소자들에 대해 프로그래밍 동작들을 수행하는 단계와; 그리고
    상기 다음 국면(FINE) 동안: 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계와, 그리고 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  2. 제1항에 있어서,
    상기 또 다른 워드 라인(WLn+1)의 비휘발성 저장 소자들에 대해 프로그래밍 동작들을 수행하는 단계는:
    복수-국면 프로그래밍 동작의 일 국면(FOGGY)을 수행하는 것을 포함하고, 여기서 일 국면(FOGGY)을 수행하는 것은, (c) 고속-프로그래밍 비휘발성 저장 소자들과 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 것, 그리고 (d) 상기 또 다른 워드 라인에 대해 고속-프로그래밍 비휘발성 저장 소자들과 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 것에 응답하여: (i) 상기 또 다른 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 또 다른 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구분하는 프로그래밍 속도 데이터를 래치들의 제 2 세트에 저장하는 것, (ii) 상기 래치들의 제 2 세트에 응답하여, 상기 또 다른 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 것, 그리고 (iii) 상기 래치들의 제 2 세트에 응답하여, 상기 또 다른 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  3. 제2항에 있어서,
    상기 타겟 워드 라인의 비휘발성 저장 소자들과 관련된 일 국면(FOGGY)은 검증 레벨들의 제 1 세트를 사용하고;
    상기 또 다른 워드 라인의 비휘발성 저장 소자들과 관련된 일 국면(FOGGY)은 상기 검증 레벨들의 제 1 세트를 사용하고; 그리고
    상기 타겟 워드 라인의 비휘발성 저장 소자들과 관련된 다음 국면(FINE)은 검증 레벨들의 제 2 세트를 사용하며, 상기 검증 레벨들의 제 2 세트에서의 각각의 검증 레벨은 상기 검증 레벨들의 제 1 세트에서의 대응하는 검증 레벨보다 더 높은 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  4. 제1항 내지 제3항 중 어느 하나의 항에 있어서,
    각각의 관련된 프로그래밍 속도-기반의 감속 조치는 비트 라인 전압을 상승시키는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  5. 제1항 내지 제3항 중 어느 하나의 항에 있어서,
    상기 다음 국면(FINE)의 수행은, 상기 타겟 워드 라인의 각각의 저속-프로그래밍 비휘발성 저장 소자들에 프로그래밍 속도-기반의 감속 조치를 적용하고 상기 타겟 워드 라인의 각각의 고속-프로그래밍 비휘발성 저장 소자에 또 다른 프로그래밍 속도-기반의 감속 조치를 더 적용하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  6. 제1항 내지 제3항 중 어느 하나의 항에 있어서,
    상기 다음 국면(FINE)의 완료에 응답하여 상기 래치들의 제 1 세트를 리셋트(reset)하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  7. 제1항 내지 제3항 중 어느 하나의 항에 있어서,
    상기 또 다른 워드 라인의 비휘발성 저장 소자들에 대해: 복수-국면 프로그래밍 동작의 다음 국면(FINE)을 수행하는 것을 더 포함하고, 여기서 다음 국면(FINE)을 수행하는 것은, 상기 래치들의 제 2 세트에 응답하여, 상기 또 다른 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 것, 그리고 상기 래치들의 제 2 세트에 응답하여, 상기 또 다른 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  8. 제7항에 있어서,
    상기 비휘발성 저장 소자들의 세트 내의 추가적 워드 라인(WLn+2)의 비휘발성 저장 소자들에 대해: 복수-국면 프로그래밍 동작의 일 국면(FOGGY)을 수행하는 단계를 더 포함하고, 여기서 일 국면(FOGGY)을 수행하는 단계는, (c) 상기 추가적 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 추가적 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계, 그리고 (d) 상기 추가적 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 추가적 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계에 응답하여: (i) 상기 추가적 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 추가적 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구분하는 프로그래밍 속도 데이터를 상기 래치들의 제 1 세트에 저장하는 단계, (ii) 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 추가적 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계, 그리고 (iii) 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 추가적 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  9. 제1항 내지 제3항 중 어느 하나의 항에 있어서,
    상기 복수-국면 프로그래밍 동작에서 상기 타겟 워드 라인에 프로그램 펄스들(505, 510, 515, 520, 525, 530, 535, 540, 545, 550)이 가해지고; 그리고
    상기 프로그램 펄스들의 스텝 크기(step size)는 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 동안 일시적으로 감소되는 것(604)을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  10. 제1항 내지 제3항 중 어느 하나의 항에 있어서,
    상기 복수-국면 프로그래밍 동작에서 상기 타겟 워드 라인에 프로그램 펄스들이 가해지고; 그리고
    상기 방법은 상기 구별하는 단계 (a) 이후에 상기 일 국면에서의 각각의 잔존하는 프로그램 펄스 이전에 상기 래치들의 제 1 세트를 판독하는 단계를 더 포함하고, 여기서 상기 계속 프로그래밍하는 단계 (ii)와 상기 계속 프로그래밍하는 단계 (iii)은 상기 판독하는 단계에 응답하여 행해지는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  11. 비휘발성 저장 장치로서,
    비휘발성 저장 소자들(155)의 세트와;
    상기 비휘발성 저장 소자들의 세트와 관련된 워드 라인들과; 그리고
    하나 이상의 제어 회로들을 포함하여 구성되며,
    상기 워드 라인들은 타겟 워드 라인(WLn) 및 또 다른 워드 라인(WLn+1)을 포함하고,
    상기 하나 이상의 제어 회로들은, 일 국면(FOGGY) 및 다음 국면(FINE)을 포함하는 복수-국면 프로그래밍 동작을 사용하여 상기 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법을 수행하고,
    상기 방법은,
    상기 타겟 워드 라인(WLn)의 비휘발성 저장 소자들에 대해: 일 국면(FOGGY)을 수행하는 단계와, 여기서 일 국면(FOGGY)을 수행하는 단계는, (a) 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계, 그리고 (b) 상기 구별하는 단계에 응답하여: (i) 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들과 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 구분하는 프로그래밍 속도 데이터를 래치들(DL1, DL2, DL3)의 제 1 세트에 저장하는 단계, (ii) 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계, 그리고 (iii) 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부를 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계를 포함하고;
    후속적으로, 상기 비휘발성 저장 소자들의 세트 내의 상기 또 다른 워드 라인(WLn+1)의 비휘발성 저장 소자들에 대해 프로그래밍 동작들을 수행하는 단계와; 그리고
    상기 다음 국면(FINE) 동안: 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 타겟 워드 라인의 고속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용하여 계속 프로그래밍하는 단계와, 그리고 상기 래치들의 제 1 세트에서의 프로그래밍 속도 데이터에 응답하여, 상기 타겟 워드 라인의 저속-프로그래밍 비휘발성 저장 소자들을 프로그래밍 속도-기반의 감속 조치를 적용함이 없이 계속 프로그래밍하는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장 장치.
  12. 일 국면(FOGGY) 및 다음 국면(FINE)을 포함하는 복수-국면 프로그래밍 동작을 사용하여 비휘발성 저장 소자들(155)의 세트를 프로그래밍하는 방법으로서, 상기 비휘발성 저장 소자들의 세트 내의 타겟 워드 라인(WLn)의 비휘발성 저장 소자들에 대해:
    상기 일 국면(FOGGY)을 수행하는 단계와, 여기서 상기 일 국면(FOGGY)을 수행하는 단계는: (a) 고속-프로그래밍 비휘발성 저장 소자들과 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계, (b) 상기 구별하는 단계에 응답하여: (i) 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해, 프로그래밍 속도-기반의 감속 조치를 적용하기 위해 관련 비트 라인 전압(Vbl)을 영(zero)이 아닌 제 1 비트 라인 레벨(bit line level)로 설정하여, 계속 프로그래밍하는 단계, (ii) 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해, 관련 비트 라인 전압(Vbl)을 영이 아닌 상기 제 1 비트 라인 레벨보다 작은 영이 아닌 제 2 비트 라인 레벨로 설정하여, 계속 프로그래밍하는 단계, 그리고 (iii) 상기 비휘발성 저장 소자들과 관련된 드레인측 선택 게이트들(drain side select gates)(SGD)의 공통 제어 게이트 전압(Vsgd)을 제 1 제어 게이트 레벨에 설정하는 단계를 포함하고;
    상기 일 국면에서 관련 검증 레벨에 도달한 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부 및 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해 관련 비트 라인 전압을 상기 제 1 비트 라인 레벨보다 큰 락아웃 레벨(lockout level)까지 상승시키는 단계와;
    후속적으로 상기 다음 국면(FINE)을 수행하는 단계와, 여기서 상기 다음 국면(FINE)을 수행하는 단계는, 상기 고속-프로그래밍 비휘발성 저장 소자들 및 상기 저속-프로그래밍 비휘발성 저장 소자들에 대해, 관련 비트 라인 전압들을 상기 제 1 비트 라인 레벨보다 작은 영이 아닌 레벨로 설정하여, 계속 프로그래밍하는 단계, 그리고 상기 선택 게이트들의 상기 공통 제어 게이트 전압을 상기 제 1 제어 게이트 레벨보다 작은 제 2 제어 게이트 레벨에 설정하는 단계를 포함하고; 그리고
    상기 다음 국면에서 관련 검증 레벨에 도달한 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부와 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해 관련 비트 라인 전압을 상기 락아웃 레벨까지 상승시키는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  13. 제12항에 있어서,
    상기 제 1 제어 게이트 레벨은, 상기 일 국면에서 상기 고속-프로그래밍 비휘발성 저장 소자들과 관련된 선택 게이트들에 대해 영이 아닌 상기 제 1 비트 라인 전압 레벨을 패스(pass)시키기에 충분히 높은 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  14. 제12항 또는 제13항에 있어서,
    상기 복수-국면 프로그래밍 동작에서 상기 타겟 워드 라인에 프로그램 펄스들(505, 510, 515, 520, 525, 530, 535, 540, 545, 550)이 가해지고; 그리고
    상기 방법은, 상기 구별하는 단계 (a)에 응답하여 상기 타겟 워드 라인에 대한 프로그래밍 속도 데이터를 래치들(DL1, DL2, DL3)에 저장하는 단계와, 그리고 상기 구별하는 단계 (a) 이후에 상기 일 국면에서의 각각의 잔존하는 프로그램 펄스 이전에 상기 래치들을 판독하는 단계를 더 포함하고, 여기서 상기 계속 프로그래밍하는 단계 (i)과 상기 계속 프로그래밍하는 단계 (ii)는 상기 판독하는 단계에 응답하여 행해지는 것을 특징으로 하는 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법.
  15. 비휘발성 저장 장치로서,
    비휘발성 저장 소자들(155)의 세트와;
    상기 비휘발성 저장 소자들의 세트와 관련된 워드 라인들과; 그리고
    하나 이상의 제어 회로들을 포함하여 구성되며,
    상기 워드 라인들은 타겟 워드 라인(WLn)을 포함하고,
    상기 하나 이상의 제어 회로들은, 일 국면(FOGGY) 및 다음 국면(FINE)을 포함하는 복수-국면 프로그래밍 동작을 사용하여 상기 비휘발성 저장 소자들의 세트를 프로그래밍하는 방법을 수행하며,
    상기 방법은, 상기 비휘발성 저장 소자들의 세트 내의 상기 타겟 워드 라인(WLn)의 비휘발성 저장 소자들에 대해:
    상기 일 국면(FOGGY)을 수행하는 단계와, 여기서 상기 일 국면(FOGGY)을 수행하는 단계는: (a) 고속-프로그래밍 비휘발성 저장 소자들과 저속-프로그래밍 비휘발성 저장 소자들을 구별하는 단계, (b) 상기 구별하는 단계에 응답하여: (i) 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해, 프로그래밍 속도-기반의 감속 조치를 적용하기 위해 관련 비트 라인 전압(Vbl)을 영(zero)이 아닌 제 1 비트 라인 레벨로 설정하여, 계속 프로그래밍하는 단계, (ii) 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해, 관련 비트 라인 전압(Vbl)을 영이 아닌 상기 제 1 비트 라인 레벨보다 작은 영이 아닌 제 2 비트 라인 레벨로 설정하여, 계속 프로그래밍하는 단계, 그리고 (iii) 상기 비휘발성 저장 소자들과 관련된 드레인측 선택 게이트들(SGD)의 공통 제어 게이트 전압(Vsgd)을 제 1 제어 게이트 레벨에 설정하는 단계를 포함하고;
    상기 일 국면에서 관련 검증 레벨에 도달한 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부 및 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해 관련 비트 라인 전압을 상기 제 1 비트 라인 레벨보다 큰 락아웃 레벨까지 상승시키는 단계와;
    후속적으로 상기 다음 국면(FINE)을 수행하는 단계와, 여기서 상기 다음 국면(FINE)을 수행하는 단계는, 상기 고속-프로그래밍 비휘발성 저장 소자들 및 상기 저속-프로그래밍 비휘발성 저장 소자들에 대해, 관련 비트 라인 전압들을 상기 제 1 비트 라인 레벨보다 작은 영이 아닌 레벨로 설정하여, 계속 프로그래밍하는 단계, 그리고 상기 선택 게이트들의 상기 공통 제어 게이트 전압을 상기 제 1 제어 게이트 레벨보다 작은 제 2 제어 게이트 레벨에 설정하는 단계를 포함하고; 그리고
    상기 다음 국면에서 관련 검증 레벨에 도달한 상기 고속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부와 상기 저속-프로그래밍 비휘발성 저장 소자들 중 적어도 일부에 대해 관련 비트 라인 전압을 상기 락아웃 레벨까지 상승시키는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장 장치.
KR1020137005434A 2010-08-03 2011-08-02 비휘발성 메모리에서의 자연 임계 전압 분포 압축 KR101806588B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/849,510 US8310870B2 (en) 2010-08-03 2010-08-03 Natural threshold voltage distribution compaction in non-volatile memory
US12/849,510 2010-08-03
PCT/US2011/046197 WO2012018765A1 (en) 2010-08-03 2011-08-02 Natural threshold voltage distribution compaction in non-volatile memory

Publications (2)

Publication Number Publication Date
KR20130095271A KR20130095271A (ko) 2013-08-27
KR101806588B1 true KR101806588B1 (ko) 2018-01-10

Family

ID=45556080

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137005434A KR101806588B1 (ko) 2010-08-03 2011-08-02 비휘발성 메모리에서의 자연 임계 전압 분포 압축

Country Status (7)

Country Link
US (3) US8310870B2 (ko)
EP (2) EP2922064B1 (ko)
JP (1) JP2013532881A (ko)
KR (1) KR101806588B1 (ko)
CN (1) CN103069494B (ko)
TW (1) TW201225091A (ko)
WO (1) WO2012018765A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210072818A (ko) * 2019-01-23 2021-06-17 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 시스템을 프로그래밍하는 방법

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8310870B2 (en) 2010-08-03 2012-11-13 Sandisk Technologies Inc. Natural threshold voltage distribution compaction in non-volatile memory
US8681569B2 (en) 2012-02-22 2014-03-25 Silicon Motion, Inc. Method for reading data stored in a flash memory according to a threshold voltage distribution and memory controller and system thereof
KR20140028582A (ko) * 2012-08-29 2014-03-10 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
US9082510B2 (en) * 2012-09-14 2015-07-14 Freescale Semiconductor, Inc. Non-volatile memory (NVM) with adaptive write operations
US8953386B2 (en) 2012-10-25 2015-02-10 Sandisk Technologies Inc. Dynamic bit line bias for programming non-volatile memory
US8861270B2 (en) 2013-03-11 2014-10-14 Microsoft Corporation Approximate multi-level cell memory operations
TWI501245B (zh) * 2013-05-06 2015-09-21 Phison Electronics Corp 資料讀取方法、控制電路、記憶體模組與記憶體儲存裝置
US9818488B2 (en) * 2015-10-30 2017-11-14 Seagate Technology Llc Read threshold voltage adaptation using bit error rates based on decoded data
KR102238579B1 (ko) 2014-08-06 2021-04-09 삼성전자주식회사 메모리 장치의 프로그램 방법
KR102333743B1 (ko) * 2015-01-21 2021-12-01 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 동작 방법
US20160314844A1 (en) * 2015-04-22 2016-10-27 Sandisk Technologies Inc. Natural threshold voltage compaction with dual pulse program for non-volatile memory
US9343156B1 (en) 2015-06-25 2016-05-17 Sandisk Technologies Inc. Balancing programming speeds of memory cells in a 3D stacked memory
US9437319B1 (en) * 2015-06-25 2016-09-06 Macronix International Co., Ltd. Method for programming non-volatile memory with reduced bit line interference and associated device
US9953703B2 (en) 2015-10-16 2018-04-24 Samsung Electronics Co., Ltd. Programming method of non volatile memory device
US9910730B2 (en) 2015-10-21 2018-03-06 Sandisk Technologies Llc System for handling erratic word lines for non-volatile memory
US9865352B2 (en) * 2015-10-28 2018-01-09 Sandisk Technologies, Llc Program sequencing
US9711211B2 (en) 2015-10-29 2017-07-18 Sandisk Technologies Llc Dynamic threshold voltage compaction for non-volatile memory
CN105719694B (zh) * 2016-01-22 2019-12-03 清华大学 Nand存储器的多比特编程方法及装置
US9852800B2 (en) 2016-03-07 2017-12-26 Sandisk Technologies Llc Adaptive determination of program parameter using program of erase rate
JP6502880B2 (ja) 2016-03-10 2019-04-17 東芝メモリ株式会社 半導体記憶装置
JP6539608B2 (ja) 2016-03-15 2019-07-03 東芝メモリ株式会社 半導体記憶装置
US10026488B2 (en) 2016-08-18 2018-07-17 Sandisk Technologies Llc Non-volatile memory with read disturb detection for open blocks
KR20180088190A (ko) * 2017-01-26 2018-08-03 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 프로그램 방법
US9959932B1 (en) 2017-02-21 2018-05-01 Sandisk Technologies Llc Grouping memory cells into sub-blocks for program speed uniformity
JP2018163727A (ja) 2017-03-27 2018-10-18 東芝メモリ株式会社 半導体記憶装置
US10134479B2 (en) 2017-04-21 2018-11-20 Sandisk Technologies Llc Non-volatile memory with reduced program speed variation
US10424387B1 (en) 2018-05-16 2019-09-24 Sandisk Technologies Llc Reducing widening of threshold voltage distributions in a memory device due to temperature change
US10643721B2 (en) * 2018-06-21 2020-05-05 Sandisk Technologies Llc Interleaved program and verify in non-volatile memory
US10818685B2 (en) * 2018-07-05 2020-10-27 Sandisk Technologies Llc Non-volatile memory with pool capacitor
US10825827B2 (en) 2018-07-05 2020-11-03 Sandisk Technologies Llc Non-volatile memory with pool capacitor
JP2020095767A (ja) 2018-12-13 2020-06-18 キオクシア株式会社 半導体記憶装置
KR20210001134A (ko) * 2019-06-27 2021-01-06 에스케이하이닉스 주식회사 메모리 장치 및 그 동작 방법
CN110870015B (zh) * 2019-10-18 2021-03-12 长江存储科技有限责任公司 对存储器件进行编程和验证的方法以及相关的存储器件
TWI699772B (zh) * 2019-10-29 2020-07-21 旺宏電子股份有限公司 在步進編程脈衝操作中決定快速通過寫入操作的方法與系統
US11587621B1 (en) 2021-08-05 2023-02-21 Western Digital Technologies, Inc. Foggy-fine programming for memory cells with reduced number of program pulses
US11756630B2 (en) 2021-08-12 2023-09-12 Western Digital Technologies, Inc. Obtaining threshold voltage measurements for memory cells based on a user read mode

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050083735A1 (en) 2003-10-20 2005-04-21 Jian Chen Behavior based programming of non-volatile memory
WO2007047283A1 (en) 2005-10-14 2007-04-26 Sandisk Corporation Method for controlled programming of non-volatile memory exhibiting bit line coupling
WO2010044993A1 (en) 2008-10-16 2010-04-22 Sandisk Corporation Multi-pass programming for memory using word line coupling

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219276B1 (en) * 2000-02-25 2001-04-17 Advanced Micro Devices, Inc. Multilevel cell programming
US6781877B2 (en) 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
JP3935139B2 (ja) 2002-11-29 2007-06-20 株式会社東芝 半導体記憶装置
US7073103B2 (en) 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US7372730B2 (en) 2004-01-26 2008-05-13 Sandisk Corporation Method of reading NAND memory to compensate for coupling between storage elements
US7158421B2 (en) 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
US7206230B2 (en) * 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
US7239557B2 (en) * 2005-06-17 2007-07-03 Micron Technology, Inc. Program method with optimized voltage level for flash memory
US7286406B2 (en) * 2005-10-14 2007-10-23 Sandisk Corporation Method for controlled programming of non-volatile memory exhibiting bit line coupling
US7489549B2 (en) * 2006-06-22 2009-02-10 Sandisk Corporation System for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US7596031B2 (en) * 2006-10-30 2009-09-29 Sandisk Corporation Faster programming of highest multi-level state for non-volatile memory
US7616500B2 (en) 2007-02-20 2009-11-10 Sandisk Corporation Non-volatile storage apparatus with multiple pass write sequence
US7630246B2 (en) 2007-06-18 2009-12-08 Micron Technology, Inc. Programming rate identification and control in a solid state memory
US7869273B2 (en) * 2007-09-04 2011-01-11 Sandisk Corporation Reducing the impact of interference during programming
US7924623B2 (en) * 2008-05-27 2011-04-12 Micron Technology, Inc. Method for memory cell erasure with a programming monitor of reference cells
US7800956B2 (en) 2008-06-27 2010-09-21 Sandisk Corporation Programming algorithm to reduce disturb with minimal extra time penalty
US8064252B2 (en) * 2008-11-21 2011-11-22 Micron Technology, Inc. Multi-pass programming in a memory device
US8174895B2 (en) * 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
US8144512B2 (en) * 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US8218366B2 (en) * 2010-04-18 2012-07-10 Sandisk Technologies Inc. Programming non-volatile storage including reducing impact from other memory cells
US8310870B2 (en) 2010-08-03 2012-11-13 Sandisk Technologies Inc. Natural threshold voltage distribution compaction in non-volatile memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050083735A1 (en) 2003-10-20 2005-04-21 Jian Chen Behavior based programming of non-volatile memory
WO2007047283A1 (en) 2005-10-14 2007-04-26 Sandisk Corporation Method for controlled programming of non-volatile memory exhibiting bit line coupling
WO2010044993A1 (en) 2008-10-16 2010-04-22 Sandisk Corporation Multi-pass programming for memory using word line coupling

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210072818A (ko) * 2019-01-23 2021-06-17 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 시스템을 프로그래밍하는 방법
KR102649963B1 (ko) 2019-01-23 2024-03-20 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 시스템을 프로그래밍하는 방법

Also Published As

Publication number Publication date
US8310870B2 (en) 2012-11-13
US8743606B2 (en) 2014-06-03
US20120250418A1 (en) 2012-10-04
EP2601654B1 (en) 2015-05-20
EP2922064A1 (en) 2015-09-23
US20120033500A1 (en) 2012-02-09
CN103069494A (zh) 2013-04-24
WO2012018765A1 (en) 2012-02-09
JP2013532881A (ja) 2013-08-19
KR20130095271A (ko) 2013-08-27
EP2922064B1 (en) 2018-12-19
TW201225091A (en) 2012-06-16
EP2601654A1 (en) 2013-06-12
US20130329493A1 (en) 2013-12-12
US8537611B2 (en) 2013-09-17
CN103069494B (zh) 2016-01-20

Similar Documents

Publication Publication Date Title
KR101806588B1 (ko) 비휘발성 메모리에서의 자연 임계 전압 분포 압축
KR101697270B1 (ko) 메모리에서 채널-플로팅 게이트간 커플링을 감소시키기 위한 데이터 상태에 의존적인 채널 부스팅
JP6420504B2 (ja) メモリデバイスにおける異なるセンスノード電圧を使用するベリファイ動作
KR101787802B1 (ko) 비트 라인 전압 스텝 업을 이용한 비휘발성 메모리의 프로그래밍
KR101788351B1 (ko) 비휘발성 저장소자들을 감지하는 동안의 채널 커플링 효과의 완화
KR101958508B1 (ko) 결함이 있는 워드 라인 검출
US7920422B2 (en) All-bit-line erase verify and soft program verify
KR101842322B1 (ko) 공유된 비트 라인을 갖는 비휘발성 메모리에 대한 비트 라인 사전충전 스킴
KR101073116B1 (ko) 커플링을 사용하는 이웃 감지에 기반한 커플링 보상
US20140211568A1 (en) Bit line current trip point modulation for reading nonvolatile storage elements
US7561474B2 (en) Program verifying method and programming method of flash memory device
US20120294093A1 (en) Semiconductor device and operating method thereof
KR101314306B1 (ko) 스마트 검증을 이용한 다중 상태 비휘발성 메모리프로그래밍 방법
KR20110049782A (ko) 최소 여분 시간 패널티를 갖는 혼란을 감소시키기 위한 개선된 프로그래밍 알고리즘
JP2005129194A (ja) 不揮発性メモリの振舞いに基づくプログラミング
KR20090073083A (ko) 프로그래밍 중의 커플링 보상
US10734077B1 (en) Word line discharge skip for faster read time
US10366729B2 (en) Sense circuit with two-step clock signal for consecutive sensing
KR20130069626A (ko) 메모리 내에서의 프로그램 노이즈 감소를 위한 톱-형상의 다중-펄스 프로그래밍
JP4763687B2 (ja) 非揮発性メモリのプログラミングを制御するためのブースティング
US8885418B1 (en) Adaptive double pulse BCF programming
KR20080103362A (ko) 낸드 플래시 메모리소자의 구동방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant