KR20120117793A - 감소된 개수의 검증 동작들을 이용한 비휘발성 메모리의 프로그래밍 - Google Patents

감소된 개수의 검증 동작들을 이용한 비휘발성 메모리의 프로그래밍 Download PDF

Info

Publication number
KR20120117793A
KR20120117793A KR1020127016563A KR20127016563A KR20120117793A KR 20120117793 A KR20120117793 A KR 20120117793A KR 1020127016563 A KR1020127016563 A KR 1020127016563A KR 20127016563 A KR20127016563 A KR 20127016563A KR 20120117793 A KR20120117793 A KR 20120117793A
Authority
KR
South Korea
Prior art keywords
programming
verify
reservoirs
iterations
state
Prior art date
Application number
KR1020127016563A
Other languages
English (en)
Other versions
KR101697271B1 (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 KR20120117793A publication Critical patent/KR20120117793A/ko
Application granted granted Critical
Publication of KR101697271B1 publication Critical patent/KR101697271B1/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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification

Abstract

좁은 임계전압 분포를 유지할 수 있으면서도 검증 동작들의 개수를 감소시킴으로써 프로그래밍 속도를 증가시킨 비휘발성 저장 시스템 및 방법이 제공된다. 프로그래밍 기법은 타겟 데이터 상태의 검증 레벨이 도달되기 전에, 옵셋 레벨에서 검증 동작을 수행하는바, 이는 프로그래밍을 감속시키기 위한 것이다. 하지만, 항상 모든 시간에서 오프셋 레벨 및 타겟 레벨들 둘다에서 검증 동작을 수행할 필요는 없다. 제 1 프로그래밍 페이즈에서는, 소정의 데이터 상태에 대해서 오직 타겟 검증 레벨에서만 검증 동작들이 수행된다. 제 2 프로그래밍 페이즈에서는, 오프셋 검증 레벨과 타겟 검증 레벨에서 검증 동작들이 수행된다. 제 3 프로그래밍 페이즈에서는, 오직 타겟 검증 레벨에서만 검증 동작들이 수행된다. 페이즈들 간이 천이(transition)는, 프로그래밍 펄스 개수에 기초하여 미리 결정될 수도 있으며 또는 적응적으로 결정될 수도 있다.

Description

감소된 개수의 검증 동작들을 이용한 비휘발성 메모리의 프로그래밍{PROGRAMMING NON-VOLATILE MEMORY WITH REDUCED NUMBER OF VERIFY OPERATIONS}
본 발명은 비휘발성 메모리에 관한 것이다.
반도체 메모리 장치는 다양한 전자 장치에서 점점 더 많이 이용되어 왔다. 예를 들어, 비휘발성 반도체 메모리는 셀룰러 전화기, 디지털 카메라, 개인 휴대정보 단말기(PDA), 휴대용 연산 장치, 비-휴대용 연산 장치 및 기타 장치에서 사용된다. 이중에서도, 전기적으로 소거가능하고 프로그램가능한 읽기 전용 메모리(Electrical Erasable Programmable Read Only Memory : EEPROM)와 플래시 메모리가 가장 인기있는 비휘발성 반도체 메모리이다. EEPROM의 일 유형인 플래시 메모리는 전형적인, 완전한 성능을 갖춘(full-featured) EEPROM과 달리, 전체 메모리 어레이의 내용물 혹은 그 일부를 한번에 소거시킬 수 있다.
전형적인 EEPROM과 플래시 메모리 둘다는 플로팅 게이트를 이용하는데, 플로팅 게이트는 반도체 기판 내의 채널 영역으로부터 절연되어 있으며 채널 영역 위에 위치한다. 플로팅 게이트는 소스 영역과 드레인 영역 사이에 위치한다. 제어 게이트는 플로팅 게이트 위에 위치하며 플로팅 게이트로부터 절연된다. 이와 같이 형성된 트랜지스터의 임계전압(Vth)은, 플로팅 게이트에 보존된 전하의 양에 의해 제어된다. 즉, 트랜지스터가 턴온되어 소스와 드레인 사이에서 도통을 허용하기 전에 제어 게이트에 인가되어야만 하는 전압의 최소량은, 플로팅 게이트 상의 전하의 레벨에 의해 제어된다.
몇몇 EEPROM과 플래시 메모리 디바이스들은 2개 범위의 전하들을 저장하는데 이용될 수 있는 플로팅 게이트를 구비한 저장소자 혹은 셀을 갖는다. 따라서, 이러한 저장소자는 2개의 상태들(소거 상태와 프로그래밍 상태) 사이에서 프로그래밍/소거될 수 있다. 이러한 플래시 메모리 디바이스는, 각각의 저장소자가 1 비트의 데이터를 저장할 수 있기 때문에, 이진(binary) 메모리 디바이스라고 종종 지칭되기도 한다.
다중-상태(또는, 다중-레벨) 플래시 메모리 디바이스는, 프로그래밍된 다수개의 서로 다른 허용된 임계전압 범위들(또는, 유효 임계전압 범위들)을 식별함으로써 구현될 수 있다. 서로 다른 각각의 임계전압 범위들은, 메모리 디바이스에 인코딩된 데이터 비트들의 세트에 대한 소정값에 대응한다. 예를 들어, 각각의 저장소자는 2 비트의 데이터를 저장할 수 있는데, 이 경우 상기 저장소자는 서로 구별되는 4개의 임계전압 범위들에 대응하는 개별적인 4개의 전하 밴드(band) 중 어느 하나에 위치할 수 있다.
통상적으로, 프로그램 동작 동안에 제어 게이트에 인가되는 프로그램 전압 VPGM 은 시간에 대해서 그 크기가 증가하는 일련의 펄스들로서 인가된다. 프로그램 전압은 선택된 워드라인에 인가될 수 있다. 가능한 일례에서, 펄스들의 크기는 연속되는 각각의 펄스들 마다 소정의 스텝 사이즈(예컨대, 0.2 ~ 0.4 볼트) 만큼 증가한다. VPGM 은 플래시 메모리 소자의 제어 게이트에 인가될 수 있다. 프로그램 펄스들 사이의 기간들에서 검증 동작들이 수행된다. 즉, 병렬로 프로그래밍되는 저장소자들의 그룹의 각각의 저장소자의 프로그래밍 레벨은 연속적인 프로그래밍 펄스들 사이에서 판독되어, 각 저장소자의 프로그래밍 레벨이 각각의 저장소자가 프로그래밍될 예정인 검증 레벨과 같거나 또는 큰지가 판별된다. 다중 상태 플래시 메모리 소자들의 어레이의 경우에는, 소자의 각각의 상태에 대해서 검증 단계가 수행되어, 상기 소자가 데이터에 관련된 검증 레벨(data-associated verify level)에 도달했는지를 판별할 수 있다. 예를 들어, 4개의 상태로 데이터를 저장할 수 있는 다중 상태 메모리 소자는, 3개의 비교 포인트들에 대해 검증 동작을 수행할 필요가 있을 수 있다.
또한, EEPROM 또는 플래시 메모리 디바이스(가령, 낸드(NAND) 스트링에 있는 낸드 플래시 메모리 디바이스)를 프로그래밍하는 경우, VPGM 이 제어 게이트에 인가되고 비트라인은 접지되는 것이 전형적인바, 이는 저장소자의 채널로부터 플로팅 게이트로 전자들이 주입되게 한다. 플로팅 게이트에 전자들이 축적되면, 상기 플로팅 게이트는 음으로(negatively) 충전되고 그리고 저장소자의 임계전압은 상승하게 되는바, 따라서 이러한 저장소자는 프로그래밍된 상태에 있다고 간주된다.
시장(marketplace)에서의 요구 때문에, 조밀한 임계전압 분포들을 획득할 수 있으면서도 프로그래밍 속도를 지속적으로 증가시킬 필요가 존재한다.
본 명세서에 설명된 기법들의 일실시예에서는, 비휘발성 저장 시스템의 저장소자들의 세트에 대한 프로그래밍 동작의 복수의 프로그래밍 이터레이션들을 수행하기 위한 방법이 제공된다. 상기 방법은, 상기 세트에 대한 N2 프로그래밍 이터레이션들 각각에 대하여, 프로그램 펄스를 인가하고, 데이터 상태에 대한 오프셋 검증 레벨을 이용하는 검증 동작을 수행하고, 상기 오프셋 검증 레벨은 상기 데이터 상태에 대한 최종 검증 레벨로부터 오프셋(offset)되며, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 단계를 포함한다. 상기 방법은 또한, 상기 세트에 대한 N3 개의 프로그래밍 이터레이션들 각각에 대하여, 상기 N2 개의 프로그래밍 이터레이션들 이후에, 프로그램 펄스를 인가하고, 그리고 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 단계를 더 포함한다.
본 발명의 다른 실시예에 따르면, 비휘발성 저장 시스템의 저장소자들의 세트에 대한 프로그래밍 동작의 복수의 프로그래밍 이터레이션들을 수행하는 방법이 제공된다. 상기 방법은, 상기 세트에 대한 N1 개의 프로그래밍 이터레이션들 각각에 대하여, 프로그램 펄스를 인가하고, 그리고 데이터 상태에 대한 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이 상기 데이터 상태에 대한 최종 검증 레벨을 이용하는 검증 동작을 수행하는 단계를 포함하며, 상기 오프셋 검증 레벨은 상기 최종 검증 레벨로부터 오프셋(offset)된다. 상기 방법은 또한, 상기 세트에 대한 N2 개의 프로그래밍 이터레이션들 각각에 대하여, 상기 N1 개의 프로그래밍 이터레이션들 이후에, 프로그램 펄스를 인가하고, 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행하고, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 단계를 더 포함한다.
본 발명의 다른 실시예에 따른 비휘발성 저장 시스템은 비휘발성 저장소자들의 세트와 적어도 하나의 제어회로를 포함한다. 상기 적어도 하나의 제어회로는, 상기 비휘발성 저장 시스템의 저장소자들의 세트에 대한 프로그래밍 동작의 복수의 프로그래밍 이터레이션들을 수행하기 위하여, (a) 상기 세트에 대한 N2 개의 프로그래밍 이터레이션들 각각에 대하여, 프로그램 펄스를 인가하고, 데이터 상태에 대한 오프셋 검증 레벨을 이용하는 검증 동작을 수행하고, 상기 오프셋 검증 레벨은 상기 데이터 상태에 대한 최종 검증 레벨로부터 오프셋(offset)되며, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하며, 그리고 (b) 상기 세트에 대한 N3 개의 프로그래밍 이터레이션들 각각에 대하여, 상기 N2 개의 프로그래밍 이터레이션들 이후에, 프로그램 펄스를 인가하고, 그리고 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이 상기 최종 검증 레벨을 이용하는 검증 동작을 수행한다.
대응 방법들, 시스템들 및 본 명세서에 제공된 방법들을 수행하기 위한 컴퓨터-판독가능 혹은 프로세서-판독가능한 저장 디바이스들이 제공된다.
도1은 단일 로우/컬럼 디코더와 판독/기입 회로를 이용하는 비휘발성 메모리 시스템의 블록도이다.
도2는 감지 블록의 일실시예를 도시한 블록도이다.
도3은 메모리 전 비트라인(all bitline) 구조 혹은 홀수-짝수 메모리 구조에 대해서 메모리 어레이를 블록들로 구성한 일례를 도시한다.
도4는 임계전압 분포들의 예시적인 세트 및 원-패스(one-pass) 프로그래밍을 도시한다.
도5는 임계전압 분포들의 예시적인 세트 및 투-패스(two-pass) 프로그래밍을 도시한다.
도6a 내지 도6c는 다양한 임계전압 분포들을 보여주며 그리고 비휘발성 메모리를 프로그래밍하기 위한 프로세스를 예시한다.
도7은 저장소자들의 세트에 대한 멀티-패스 프로그램 동작을 도시한다.
도8a는 프로그래밍 동작의 프로그래밍 이터레이션을 예시하는바, 도8a에서는 각각의 데이터 상태에 대해서 하나의 검증 레벨이 이용된다.
도8b는 프로그래밍 동작의 프로그래밍 이터레이션을 예시하는바, 도8b에서는 몇몇 데이터 상태들에 대해서 2개의 검증 레벨들이 이용된다.
도9a는 저장소자들의 세트의 프로그래밍된 자연스러운 임계전압 분포를 예시한다.
도9b는 도9a의 프로그래밍된 자연스러운 임계전압 분포의 상이하게 스캐닝된 부분들에 대한 저장소자들의 누적 퍼센티지를 예시한다.
도10a는 제 1 프로그래밍 동작을 나타낸다.
도10b는 제 2 프로그래밍 동작을 나타낸다.
도10c는 제 3 프로그래밍 동작을 나타낸다.
도11a는 도10a의 프로그래밍 동작의 페이즈 1의 예시적인 프로그래밍 이터레이션을 도시한 도면으로, 도11a에서는 타겟 데이터 상태에 대해서 타겟 검증 동작이 수행된다.
도11b는 도10a의 프로그래밍 동작의 페이즈 2의 예시적인 프로그래밍 이터레이션을 도시한 도면으로, 도11b에서는 타겟 데이터 상태에 대해서 오프셋 및 타겟 검증 동작들이 수행된다.
도11c는 도10a의 프로그래밍 동작의 페이즈 3의 예시적인 프로그래밍 이터레이션을 도시한 도면으로, 도11c에서는 각각의 타겟 데이터 상태에 대해서 타겟 검증 동작이 수행된다.
도12는 데이터 상태들 A, B, 및 C에 관련된 프로그래밍 동작을 예시한 도면으로, A 상태와 B 상태 각각에 대하여 오프셋 및 타겟 검증 동작들이 수행되며, 그리고 상태 C에 대해서 타겟 검증 동작이 수행된다.
도13a는 데이터 상태 A, B, 및 C 에 대한 프로그래밍 동작을 도시한 것으로, 도13a에서는 (a) 상태 A와 상태 B 각각에 대하여, 타겟 검증 동작이 처음에 수행되며 그 후에 오프셋 및 타겟 검증 동작들, 그 후에 타겟 검증 동작이 수행되며 그리고 (b) 상태 C에 대해서 타겟 검증 동작이 수행된다.
도13b는 도13a의 프로그래밍 동작에서 A-상태 검증 동작들만을 도시한다.
도13c는 도13a의 프로그래밍 동작에서 B-상태 검증 동작들만을 도시한다.
도13d는 도13a의 프로그래밍 동작에서 C-상태 검증 동작들만을 도시한다.
도14a는 데이터 상태의 임계전압 분포를 도시한 도면으로, 적어도 특정 개수의 저장소자들은 타겟 검증 레벨 보다 약간 높은 임계전압을 갖는다.
도14b는 데이터 상태의 임계전압 분포를 도시한 도면으로, 특정 개수보다 적은 저장소자들이 오프셋 타겟 검증 레벨 보다 적은 임계전압을 갖는다.
도14c는 데이터 상태의 임계전압 분포를 도시한 도면으로, 특정 개수보다 적은 저장소자들이 타겟 검증 레벨 보다 적은 임계전압을 갖는다.
도15는 프로그래밍 동작 동안에 데이터 래치들의 이용을 도시한다.
도16은 도10a의 프로그래밍 프로세스를 도시하는바, 여기서 페이즈 2의 타이밍은 기결정된 기준(criterion)에 기초한다.
도17a 내지 도17c는 도10a의 프로그래밍 프로세스를 도시하는바, 여기서 페이즈 2의 시작 및/또는 종료의 타이밍은 적응형(adaptive) 기준에 기초한다.
조밀한 임계전압 분포를 유지할 수 있으면서도, 검증 동작의 개수를 감소시킴에 의해서 프로그래밍 속도를 증대시킨 방법 및 비휘발성 저장 시스템이 제공된다.
적절한 비휘발성 저장 시스템의 일례는 2개의 선택 게이트들 사이에 복수의 트랜지스터들이 직렬로 배치되어 있는 낸드(NAND) 플래시 메모리 구조를 이용한다. 직렬인 트랜지스터들과 선택 게이트들은 낸드 스트링으로 지칭되기도 한다. 예를 들어, 본 발명에 대한 참조로서 본 명세서에 통합된 2009년 6월 11일자로 공개된 미국 공개특허공보(공개번호 US 2009/0147573)를 참고하라. 낸드 플래시 메모리 이외의 다른 유형의 비휘발성 메모리도 또한 이용가능하다.
예를 들면, 플래시 EEPROM 시스템에서 유용한 다른 유형의 메모리 셀은 전도성 플로팅 게이트 대신에 비전도성 유전 물질을 이용하여 비휘발성 방식으로 전하를 저장한다. 실리콘 산화물, 실리콘 질화물, 및 실리콘 산화물("ONO")로 형성된 3중 유전층이, 메모리 셀 채널 위의 반도체 기판의 표면과 전도성 제어 게이트 사이에 샌드위치된다. 셀 채널로부터 질화물 안으로 전자들을 주입함에 의해서 상기 셀이 프로그래밍되는데, 질화물 내에서 이들 전자들은 제한된 영역내에 포획 및 저장된다. 이와 같이 저장된 전하는 검출할 수 있는 방식으로, 상기 셀의 채널의 소정 부분의 임계전압을 변화시킨다. 상기 셀은 핫 홀(hot hole)을 질화물 안으로 주입함에 의해서 소거된다. 유사한 셀이 스플릿-게이트(split gate) 구조로 제공될 수 있는데, 스플릿-게이트 구조에서는 도핑된 폴리실리콘 게이트가 메모리 셀 채널 부분을 넘어서 연장되어 별도의 선택 트랜지스터를 형성한다.
다른 접근법에서는, NROM 셀이 이용된다. 예컨대, 2 비트가 각각의 NROM 셀에 저장되는바, NROM 셀에서는 ONO 유전층이 소스 및 드레인 확산부 사이의 채널에 걸쳐서 연장된다. 하나의 데이터 비트에 대한 전하는 드레인에 인접한 유전층 내에 국부화되며, 그리고 다른 하나의 데이터 비트에 대한 전하는 소스에 인접한 유전층 내에 국부화된다. 유전층 내에서 공간적으로 분리된 전하 저장 영역들의 이진 상태들을 개별적으로 판독함으로써, 다중-상태 데이터 저장이 획득된다. 다른 유형의 비휘발성 메모리도 또한 알려져 있다.
도1은 하나의(single) 로우/컬럼 디코더들 및 판독/기입 회로를 이용하는 비휘발성 메모리 시스템의 블록도이다. 상기 블록도에는, 본 발명의 일실시예에 따라, 저장소자들의 페이지를 병렬로 판독 및 프로그래밍하기 위한 판독/기입 회로를 갖는 메모리 디바이스(196)가 예시되어 있다. 메모리 디바이스(196)는 하나 이상의 메모리 다이(198)를 포함할 수 있다. 메모리 다이(198)는 저장소자들(155), 제어 회로(110) 및 판독/기입 회로(165)의 2차원 어레이를 포함한다. 몇몇 실시예에서 저장소자들의 어레이는 3차원이 될 수도 있다. 메모리 어레이(155)는, 로우 디코더(130)를 통해 워드라인에 의해 어드레스될 수 있으며 컬럼 디코더(160)를 통해 비트라인들에 의해서 어드레스될 수 있다. 판독/기입 회로(165)는 다수의 감지 블록들(100)을 포함하며 그리고 이는 일 페이지의 저장소자들이 병렬로 판독 또는 프로그래밍될 수 있게 한다. 전형적으로는, 상기 하나 이상의 메모리 다이(198)처럼, 같은 메모리 디바이스(196)(예컨대, 착탈가능한 저장 카드) 내에 제어기(150)가 포함된다. 커맨드 및 데이터가 라인들(120)을 통해서 호스트와 제어기(150) 사이에서 전달되며, 그리고 라인들(118)을 통해서 제어기와 하나 이상의 메모리 다이(198) 사이에서 전달된다.
제어 회로(110)는 판독/기입 회로(165)와 협동하여 메모리 어레이(155)에 대해 메모리 동작을 수행한다. 상기 제어 회로(110)는 상태머신(112), 온-칩 어드레스 디코더(114), 및 전력 제어 모듈(116)을 포함한다. 상태머신(112)은 메모리 동작에 대한 칩-레벨 제어를 제공한다. 온-칩 어드레스 디코더(114)는, 호스트 혹은 메모리 제어기에 의해 이용되는 어드레스와 디코더들(130, 160)에 의해 이용되는 하드웨어 어드레스 사이에서 어드레스 인터페이스를 제공한다. 전력 제어 모듈(116)은, 메모리 동작 동안에 워드라인들 및 비트라인들에 공급되는 전력 및 전압들을 제어한다.
본 발명의 몇몇 실시예에서 도1의 일부 구성요소들은 조합될 수 있다. 다양한 설계들에서, 저장소자들의 어레이(155)를 제외한 하나 이상의 구성요소들(단독 혹은 조합되어)은 하나의 관리 회로 혹은 제어 회로로 간주될 수 있다. 예를 들어, 하나 이상의 관리 혹은 제어 회로는, 제어 회로(110), 상태머신(112), 디코더(114/160), 전력 제어 모듈(116), 감지블록(100), 판독/기입 회로(165), 제어기(150) 등등 중 어느 하나 또는 이들의 조합을 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 비-휘발성 메모리 시스템은 이중(dual) 로우/컬럼 디코더 및 판독/기입 회로를 이용한다. 다양한 주변회로들에 의한 메모리 어레이(155)로의 액세스는, 어레이의 대향 측면들 상에서 대칭적인 방식으로 구현되며, 따라서 각각의 사이드에 있는 액세스 라인들의 밀도와 회로의 밀도는 절반으로 감소될 수 있다. 따라서, 상기 로우 디코더는 2개의 로우 디코더들로 나뉘어지며 상기 컬럼 디코더는 2개의 컬럼 디코더들로 나뉘어진다. 이와 유사하게, 상기 판독/기입 회로는 어레이(155)의 바닥으로부터 비트라인들에 연결되는 판독/기입 회로와 어레이(155)의 꼭대기로부터 비트라인들에 연결되는 판독/기입 회로로 나뉘어진다. 이러한 방식으로, 판독/기입 모듈들의 밀도는 실질적으로 절반으로 감소된다.
도2는 감지 블록의 일실시예를 도시한 블록도이다. 각각의 감지 블록(100)은 감지 모듈(180)로 지칭되는 코어부와 그리고 공통부(common portion)(190)로 나뉘어진다. 일실시예에서, 각각의 비트라인에 대해서 별개의 감지 모듈(180)이 존재할 것이며 그리고 다수의 감지 모듈들(180)의 세트에 대해서 하나의 공통부(190)가 존재할 것이다. 일례로서, 하나의 감지 블록은 하나의 공통부(190)와 8개의 감지 모듈(180)을 포함한다. 그룹 내의 각각의 감지 모듈들은 데이터 버스(172)를 통해 해당 공통부와 통신한다.
감지 모듈(180)은 감지회로(170)를 포함하는바, 감지회로(170)는 연결된 비트라인에서의 도통 전류가 소정의 임계레벨보다 위인지 아래인지를 판별한다. 또한, 감지 모듈(180)은 비트라인 래치(182)를 포함하는바, 비트라인 래치(182)는 연결된 비트라인 상의 전압 조건을 설정하는데 이용된다. 예를 들어, 비트라인 래치(182)에 래치된 소정 상태는, 연결된 비트라인을 프로그램 금지를 나타내는 소정 상태(예컨대,1.5 ~ 3.0 볼트)로 끌어올리게 할 수 있다.
공통부(190)는 프로세서(192), 데이터 래치(194)들의 세트, 그리고 데이터 래치(194)들의 세트와 데이터 버스(120) 사이에 커플된 I/O 인터페이스(196)를 포함한다. 프로세서(492)는 계산(computation)을 수행한다. 예를 들어, 그 기능들 중 하나는, 감지된 저장소자에 저장된 데이터를 판별하는 것이며 그리고 판별된 데이터를 데이터 래치들의 세트에 저장하는 것이다. 데이터 래치들(194)의 세트는 판독 동작 동안에 프로세서(192)에 의해 판별된 데이터 비트를 저장하는데 이용된다. 또한, 이것은 프로그램 동작 동안에 데이터 버스(120)로부터 입수된 데이터 비트를 저장하는데 이용될 수도 있다. 입수된 상기 데이터 비트는 메모리 내로 프로그래밍될 예정인 기입 데이터를 나타낸다. I/O 인터페이스(196)는 데이터 래치(194)와 데이터 버스(120) 사이의 인터페이스를 제공한다. 또한, 프로그래밍 동작 동안에 어떤 검증 동작들을 수행할지를 결정하는데 이용되기 위하여 래치들에 저장될 수 있는 데이터에 대해서는 도15를 참조하라.
판독 또는 다른 감지 동안에, 시스템의 동작은 상태 머신(112)의 제어하에 있으며, 상태머신(112)은 어드레스된 저장소자에 상이한 제어 게이트 전압들을 공급하는 것을 제어한다. 메모리에 의해 서포트되는 다양한 메모리 상태들에 대응되는 기정의된 다양한 제어 게이트 전압들을 스텝 쓰루(step through)함에 따라, 상기 감지 모듈(180)은 이들 전압들 중 하나를 트립(trip)할 수 있으며 그리고 감지 모듈(180)로부터 프로세서(192)로 출력이 버스(172)를 통해 제공될 것이다. 이 시점에서 프로세서(192)는, 감지 모듈의 트립핑 이벤트(들)과 입력라인(193)을 통해 상태머신으로부터 수신되는 인가된 제어 게이트 전압에 관한 정보를 고려함으로써, 결과적인 메모리 상태를 결정한다. 이후, 프로세서는 메모리 상태에 대한 이진 인코딩을 계산하며 그리고 결과적인 데이터 비트들을 데이터 래치(194)에 저장한다. 코어부에 관한 다른 실시예에서는, 비트라인 래치(182)가 이중 임무를 수행하는바, 감지 모듈(180)의 출력을 래치하는 래치로서의 임무와 전술한 바와 같은 비트라인 래치로서의 임무를 또한 수행한다.
몇몇 실시예들에서는 다수의 프로세서(192)들을 포함할 수 있다. 일실시예에서, 각각의 프로세서(192)는 출력 라인(미도시)을 포함할 것인바, 이들 출력 라인들 각각은 함께 와이어-논리합(wired-OR)된다. 몇몇 실시예들에서, 상기 출력 라인들은 상기 와이어-논리합 라인에 연결되기 전에 반전(inverting) 된다. 이러한 구성은, 프로그래밍 프로세스가 언제 완료되었는지에 대한 프로그래밍 검증 프로세스 동안에 빠른 판별을 가능케 하는바, 이는 상기 와이어-논리합(wired-OR)을 수신하는 상태 머신이, 프로그래밍되는 모든 비트들이 원하는 레벨에 언제 도달했는지를 판별할 수 있기 때문이다. 예를 들어, 각각의 비트가 원하는 레벨에 도달하면, 그 비트에 대해서 논리 0이 와이어-논리합 라인으로 보내질 것이다(또는, 데이터 1 이 반전된다). 모든 비트들이 데이터 0을 출력하면(또는, 반전된 데이터 1), 상태머신은 프로그래밍 프로세스를 종료해야함을 알게된다. 각각의 프로세서가 8개의 감지 모듈과 통신하기 때문에, 상기 상태 머신은 와이어-논리합 라인을 8번 판독해야만 할 수도 있으며, 또는 상기 상태머신이 와이어-논리합 라인을 한번만 판독하면 되도록 관련 비트라인들의 결과들을 축적하는 논리회로(logic)가 프로세서에 부가될 수도 있다. 이와 유사하게, 로직 레벨을 올바르게 선택함으로써, 글로벌 상태머신은 제 1 비트가 언제 상태를 변경하는지를 판별할 수 있으며 이에 따라 알고리즘을 변경할 수 있다.
프로그램 또는 검증 동안에, 프로그래밍될 데이터는 데이터 버스(120)로부터 데이터 래치들(194)의 세트 내에 저장된다. 프로그래밍 동작은, 상태 머신의 제어하에서, 어드레스된 저장소자들의 제어 게이트들에 인가되는 일련의 프로그래밍 전압 펄스들을 포함한다. 각각의 프로그래밍 펄스에 뒤이어서, 저장소자가 원하는 메모리 상태로 프로그래밍되었는지를 판별하는 리드 백(read back)(verify:검증) 동작이 수반된다. 프로세서(192)는, 원하는 메모리 상태에 대하여, 리드 백 메모리 상태를 모니터링한다. 두개의 상태가 서로 일치하면, 상기 프로세서(192)는 비트라인 래치(182)을 세팅하는바, 이는 프로그램 금지를 나타내는 소정 상태로 그 비트라인을 끌어올리기(pull) 위함이다. 이러한 세팅은, 상기 비트라인에 접속된 저장소자에 대한 후속 프로그래밍을 금지하는데, 심지어 프로그래밍 펄스들이 그 제어 게이트에 인가되더라도, 프로그래밍이 금지된다. 다른 실시예에서, 상기 프로세서는 초기에 비트라인 래치(182)를 로드(load)하며 그리고 감지 회로는 검증 프로세스 동안에 이를 금지 값으로 세팅한다.
데이터 래치 스택(194)은 감지 모듈에 대응하는 데이터 래치들의 스택을 포함한다. 일실시예에서는, 감지 모듈(180) 하나당 3개의 데이터 래치들이 존재한다. 몇몇 구현예에서는(반드시 이럴 필요는 없음), 이러한 데이터 래치들은 쉬프트 레지스터로 구현될 수 있는바, 따라서 여기에 저장된 병렬 데이터는 데이터 버스(120)에 대해서 직렬 데이터로 변환되며, 그 반대의 경우도 가능하다. 바람직한 실시예에서, m 개의 저장소자들의 판독/기입 블록에 대응하는 모든 데이터 래치들은 함께 링크되어 블록 쉬프트 레지스터를 형성할 수 있으며, 따라서 일 블록의 데이터가 직렬 전송에 의하여 입력 또는 출력될 수 있다. 특히, 판독/기입 모듈들의 뱅크(bank)가 개조될 수 있는바, 그것의 데이터 래치들의 세트 각각은, 마치 이들이 전체 판독/기입 블록에 대한 쉬프트 레지스터의 일부인 것처럼, 데이터 버스로 또는 데이터 버스로부터 데이터를 차례차례로(in sequence) 쉬프트할 것이다.
도3은 전 비트라인(all bit line) 메모리 구조 혹은 홀수-짝수 메모리 구조에 대해 블록화된 메모리 어레이의 구조를 예시한 일례이다. 메모리 어레이(155)의 예시적인 구조들이 설명된다. 하나의 일례로서, 1024개의 블록들로 구분된 낸드 플래시 EEPROM이 설명된다. 각각의 블록에 저장된 데이터는 동시에 소거될 수 있다. 일실시예에서, 상기 블록은 동시에 소거되는 저장소자들의 최소 단위이다. 상기 일례에서 각각의 블록에는 비트라인 BL0, BL1, BL2,...BL8511 에 대응하는 8512 개의 컬럼들이 존재한다. 전 비트라인 구조(all bit line architecture : ABL 구조)(구조 310)라 지칭되는 실시예에서, 한 블록의 모든 비트라인들은 판독 및 프로그래밍 동작 동안에 동시에 선택될 수 있다. 공통 워드라인을 따라 있으며 그리고 임의의 비트라인에 연결된 저장소자들은 동시에 프로그래밍될 수 있다.
제공된 일례에서는, 4개의 저장소자들이 일렬로 연결되어 낸드 스트링을 형성한다. 비록, 4개의 저장소자들이 각각의 낸드 스트링에 포함되는 것으로 도시되어 있지만, 4개보다 더 많거나 또는 더 적은 메모리 셀들이 이용될 수도 있다(예컨대, 16, 32, 64 또는 또 다른 수). 낸드 스트링의 한쪽 단자는 드레인 선택 게이트(선택 게이트 드레인 라인 SGD에 연결됨)를 통해서 해당 비트라인에 연결되며, 그리고 다른 한쪽 단자는 소스 선택 게이트(선택 게이트 소스 라인 SGS에 연결됨)를 통해서 c-소스에 연결된다.
홀수-짝수(odd-even) 구조(구조 300)라 지칭되는 다른 실시예에서, 비트라인들은 짝수 비트라인(BLe)과 홀수 비트라인(BLo)으로 구분된다. 홀수/짝수 비트라인 구조에서, 공통 워드라인을 따라 있으며 홀수 비트라인들에 연결된 저장소자들은 소정 시간(at one time)에 프로그래밍되며, 공통 워드라인을 따라 있으며 짝수 비트라인들에 연결된 메모리 셀들은 다른 시간(at another time)에서 프로그래밍된다. 상기 일례에서, 각각의 블록에는 짝수 컬럼과 홀수 컬럼으로 나뉘어지는 8512개의 컬럼이 있으며 그리고 64개의 저장소자들이 하나의 컬럼에 직렬로 연결되어 낸드 스트링을 구성한다.
판독 및 프로그래밍 동작의 일 구성(configuration) 동안에, 4256개의 저장소자들이 동시에 선택된다. 선택된 저장소자들은 동일한 워드라인 및 같은 종류의 비트라인(예컨대, 짝수 혹은 홀수)을 갖는다. 따라서, 논리 페이지를 구성하는 532 바이트의 데이터가 동시에 판독 혹은 프로그래밍될 수 있으며, 그리고 상기 메모리의 하나의 블록은 적어도 8개의 논리 페이지들(그 각각이 홀수 및 짝수 페이지들을 구비한 4개의 워드라인들)을 저장할 수 있다. 다중-상태 저장소자에 대해서는, 각각의 저장소자가 2 비트의 데이터를 저장하는 경우, 이들 2 비트들 각각은 서로다른 페이지에 저장되며, 하나의 블록은 64개의 논리 페이지들을 저장한다. 또한, 다른 사이즈의 블록들 및 페이지들이 이용될 수도 있다.
전 비트라인(ABL) 구조 혹은 홀수-짝수 구조 중 어느 하나의 경우, p-웰을 소거 전압(가령, 20V)으로 상승시키고 그리고 선택된 블록의 워드라인들을 접지시킴으로써 저장소자들이 소거될 수 있다. 소스 및 비트라인들은 플로팅된다. 소거는, 전체 메모리 어레이, 개별 블록들, 혹은 메모리 디바이스의 일부분인 저장소자들의 다른 단위에 대해서 수행될 수도 있다. 저장소자의 플로팅 게이트로부터 p-웰 영역으로 전자들이 이송되며 따라서 저장소자의 Vth 가 음(negative)이 된다.
판독 및 검증 동작에 있어서, 선택 게이트들(SGD 및 SGS)은 2.5 ~ 4.5 볼트 범위의 전압에 연결되고 그리고 비선택 워드라인들(예컨대, WL2가 선택되는 경우에는 WL0, WL1, 및 WL3)은 판독 패스 전압(read pass voltge : Vread)(예컨데, 5.5 ~ 8.0 볼트)으로 상승되어 상기 트랜지스터들이 패스 게이트로 동작하게 만든다. 선택 워드라인 WL2는 각각의 판독 및 검증 동작에 대해 특정된 소정 전압 레벨에 연결되는데, 이는 관심있는 저장소자의 Vth 가 이러한 레벨보다 높은지 낮은지를 판별하기 위한 것이다. 예를 들면, 2-레벨(two-level) 저장소자에 대한 판독 동작에서, 선택 워드라인(WL2)은 접지될 수 있는바, 따라서 Vth 가 0 볼트보다 높은지가 검출된다. 2-레벨 저장소자에 대한 검증 동작에서, 선택 워드라인(WL2)은 예컨대 0.8 V에 연결되는바, 따라서 상기 Vth 가 적어도 0.8 V에 도달했는지 아닌지가 판별된다. 상기 소스 및 p-웰은 0 볼트이다. 선택된 비트라인들(즉, 짝수 비트라인들(BLe)이라 가정하면)은 예컨대, 0.7 V의 레벨로 선행-충전된다. 상기 Vth 가 상기 워드라인 상의 판독 혹은 검증 레벨보다 높다면, 관심있는 저장소자에 관련된 비트라인(BLe)의 전위 레벨은 하이 레벨을 유지할 것인바, 이는 비도통 저장소자 때문이다. 반면에, 상기 VTH 가 판독 혹은 검증 레벨보다 낮다면, 관련된 비트라인(BLe)의 전위 레벨은 낮은 레벨(예컨대, 0.5 V 미만)로 감소될 것인바, 이는 도통된 저장소자가 상기 비트라인을 방전시키기 때문이다. 따라서, 저장소자의 상태는 비트라인에 연결된 전압 비교 감지 증폭기에 의해 검출될 수 있다. 전술한 일례는 전압 센싱에 대해서 서술하고 있음을 유의해야 하는바, 전압 센싱에서는 비트라인 전압이 도통된 저장소자에 의해서 방전되거나 혹은 비도통 저장소자들에 관련된 비트라인들에 대해서는 선행-충전된 레벨을 유지한다. 하지만, 전류 센싱이 또한 이용될 수 있다. 전류 센싱 동안에, 비트라인 전압은 일정하게 고정되는 반면에 저장소자의 도통 및 비도통을 검출하기 위해서 비트라인 전류가 모니터링된다.
도4는 임계전압 분포들의 예시적인 세트와 원-패스(one-pass) 프로그래밍을 도시한다. 저장소자 어레이에 대한 예시적인 임계전압 분포들이 제공되는데, 이는 각각의 저장소자가 2 비트의 데이터를 저장하는 경우이다. 소거된 저장소자들(E 상태)에 대해서 제 1 임계전압 분포(400)가 제공된다. 3개의 임계전압 분포들(402, 404, 406)은 프로그래밍된 상태 A, B, C를 각각 나타낸다. 일실시예에서, E 상태 분포 내의 임계전압들은 음이며 A, B, C 상태 분포에 있는 임계전압들은 양이다.
특정 상태에 있는 저장소자들의 개수는, 그 임계전압이 대응 검증 레벨을 초과하였다고 판별된 저장소자들에 대한 카운트를 계속함으로써 판별될 수 있다.
각각의 임계전압 범위들은 데이터 비트들의 세트에 대해 기결정된 값들에 대응한다. 저장소자에 프로그램되는 데이터와 저장소자의 임계전압 레벨 사이의 특정한 관계는, 저장소자에 적용된 데이터 인코딩 체계에 의존한다. 일실시예에서는, 그레이 코드(Gray code) 할당을 이용하여 데이터 값들이 임계전압 범위들에 할당될 것인바 따라서, 플로팅 게이트의 임계전압이 오류로 인해 그 인접한 물리적 상태로 천이될지라도, 오직 하나의 비트만이 영향을 받게될 것이다. 일실시예에서, "11" 은 임계전압 범위 E (상태 E)에 할당되며, "10" 은 임계전압 범위 A (상태 A)에 할당되며, "00" 은 임계전압 범위 B (상태 B)에 할당되며, "01" 은 임계전압 범위 C (상태 C)에 할당된다. 하지만, 다른 실시예에서는 그레이 코드가 사용되지 않을 수도 있다. 비록, 4개의 상태들이 도시되었지만, 4개의 상태보다 많거나 적은 상태를 포함하는 또 다른 다중-상태 구성이 또한 이용될 수도 있다.
저장소자들로부터 데이터를 판독하기 위해서, 3개의 판독 기준 전압들, Vra, Vrb 및 Vrc 가 제공된다. 주어진 저장소자의 임계전압이 Vra, Vrb 및 Vrc 보다 높은지 또는 낮은지를 테스트함으로써, 상기 시스템은 저장소자의 상태, 즉, 프로그래밍 조건을 판별할 수 있다.
또한, 3개의 검증 기준 전압들, Vva, Vvb 및 Vvc 이 제공된다. 저장소자들을 상태 A로 프로그래밍하는 경우, 상기 시스템은, 이러한 저장소자들이 Vva와 같거나 혹은 더 큰 임계전압을 갖고 있는지를 테스트할 것이다. 저장소자들을 상태 B로 프로그래밍하는 경우, 상기 시스템은, 이러한 저장소자들이 Vvb와 같거나 혹은 더 큰 임계전압을 갖고 있는지를 테스트할 것이다. 저장소자들을 상태 C로 프로그래밍하는 경우, 상기 시스템은, 이러한 저장소자들이 Vvc와 같거나 혹은 더 큰 임계전압을 갖고 있는지를 테스트할 것이다.
풀 시퀀스 프로그래밍(full sequence programming)이라고 알려진 일실시예에서, 저장소자들은 소거 상태 E 로부터, 프로그래밍된 상태 A, B 또는 C 중 어느 하나로 직접 프로그램될 수 있다. 예를 들면, 프로그램될 저장소자들의 집단은 먼저 소거될 수도 있는바, 따라서 상기 집단 내의 모든 저장소자들은 소거 상태 E에 있게 된다. 이후, 도13a에 도시된 바와 같은 일련의 프로그래밍 펄스들이 이용되어 저장소자들을 상태 A, B, 혹은 C로 직접 프로그램할 수 있다. 몇몇 저장소자들은 상태 E로부터 상태 A로 프로그래밍되는 반면에, 다른 저장소자들은 상태 E로부터 상태 B로 및/또는 상태 E로부터 상태 C로 프로그래밍된다. 워드라인 WLn 상에서 상태 E로부터 상태 C로 프로그래밍할 때에, 워드라인 WLn-1 아래의 인접 플로팅 게이트로의 기생 커플링의 양은 최대치에 도달하는데, 왜냐하면 상태 E에서 상태 A로 프로그래밍할 때 혹은 상태 E에서 상태 B로 프로그래밍할 때의 전하의 변화량에 비하여, 워드라인 WLn 아래의 플로팅 게이트 상에서의 전하 변화량이 가장 크기 때문이다. 상태 E에서 상태 B로 프로그래밍할 때, 인접 플로팅 게이트로의 커플링의 양은 이 보다 작다. 상태 E에서 상태 A로 프로그래밍할 때, 커플링의 양은 더욱 감소한다.
또 다른 옵션은 하나 이상의 데이터 상태들에 대해서 하위 검증 레벨과 상위 검증 레벨을 이용하는 것이다. 예를 들어, VvaL 및 Vva는 각각 A-상태에 대한 하위 검증 레벨과 상위 검증 레벨이며, 그리고 VvbL 및 Vvb는 각각 B-상태에 대한 하위 검증 레벨과 상위 검증 레벨이다. 하위 검증 레벨은, 최종 혹은 타겟 검증 레벨로부터 오프셋된 오프셋 검증 레벨이다. 프로그래밍 기법에 따라, 상기 오프셋 검증 레벨은 타겟 검증 레벨보다 더 높을 수도 있다. 또한, 상기 검증 레벨은 전압 혹은 전류를 나타낼 수 있다.
프로그래밍 동안, 타겟 상태를 A-상태로 하여 프로그래밍되고 있는 저장소자의 Vth가 VvaL를 초과하는 때, 그 저장소자에 대한 프로그래밍 속도는 감속되는바 예컨대, 관련된 비트라인 전압을 소정 레벨로 상승시킴에 의해서 감속되며, 여기서 상기 소정 레벨은 프로그램 레벨(혹은, 금지되지 않은 레벨)과 완전 금지 레벨(full inhibit level) 사이의 값이다. 이러한 점은, 임계전압의 매우 큰 스텝 증가들을 방지함으로써, 더욱 우수한 정확성 및 조밀한 임계전압 분포를 제공한다. Vth 가 Vva 에 도달하는 때, 저장소자는 후속 프로그래밍으로부터 록아웃된다. 이와 유사하게, 타겟 상태인 B-상태로 프로그래밍되고 있는 저장소자의 Vth 가 VvbL 을 초과하면, 저장소자의 프로그래밍 속도는 감소되며, 그리고 Vth 가 Vvb 에 도달하면 저장소자는 후속 프로그래밍으로부터 록아웃된다. 이러한 프로그래밍 기법은 퀵 패스 기입(quick pass write) 혹은 이중 검증 기법(dual verify technique)이라고 지칭된다. 다음을 유의해야 하는바, 일 접근법에서는, 최상위 상태(highest state)에 대해서는 이중 검증 레벨들이 이용되지 않는데, 이는 최상위 상태에 대해서는 일반적으로 넓은 임계전압 분포가 허용되기 때문이다. 대신에, 이러한 이중 검증 레벨들은, 소거 상태보다는 위이며 최상위 상태보다는 아래에 있는 프로그래밍된 상태들에 대해 이용될 수 있다.
예를 들면, 소거 상태와 7개의 프로그래밍된 상태들 A-G 를 갖는 8-상태 프로그래밍에서, 이중 검증 레벨들은 예컨대, 중간 상태들 A-F를 위해 이용될 수 있다.
하나의 상태에 대하여 3개 혹은 그 이상의 검증 레벨들을 이용하는 것도 또한 가능한바, 따라서 저장소자는 제 1 검증 레벨에 도달할 때까지 최대 속도로 프로그래밍되며, 이후 제 2 검증 레벨에 도달할 때까지 중간 속도로 프로그래밍되며, 이후 제 3 및 최종 검증 레벨에 도달할 때까지 느린 속도로 프로그래밍되며, 그 이후에 저장소자는 프로그래밍으로부터 록아웃된다.
도5는, 상위 페이지와 하위 페이지의 2개의 서로 다른 페이지들에 대해서 데이터를 저장하는 다중-상태 저장소자를 프로그래밍하는 투-패스(two-pass) 기법의 일례를 예시한다. 도5에는 도4의 임계전압 분포들(400, 402, 404, 406)이 다시 도시되어 있다. 이들 상태들, 및 상기 상태들이 나타내는 비트들은, 상태 E(11), 상태 A(10), 상태 B(00), 상태 C(01) 이다. 상태 E에 대해서, 두개의 페이지들 모두는 "1"을 저장한다. 상태 A에 대해서, 하위(lower) 페이지는 "0" 을 저장하고, 상위(upper) 페이지는 "1" 을 저장한다. 상태 B에 대해서, 두개의 페이지들 모두는 "0"을 저장한다. 상태 C에 대해서, 하위 페이지는 "1" 을 저장하고, 상위 페이지는 "0" 을 저장한다. 비록, 특정한 비트 패턴들이 각각의 상태들에 대해 할당되었지만, 이와 다른 비트 패턴들 역시 할당될 수도 있다.
제 1 프로그래밍 패스(pass)에서 저장소자의 임계전압 레벨은, 하위 논리 페이지에 프로그래밍될 비트에 따라 설정된다. 만일, 그 비트가 논리 "1" 이라면, 임계전압은 변하지 않는데, 이는 앞서 소거되었던 결과로서, 임계전압이 이미 적절한 상태에 있기 때문이다. 하지만, 프로그래밍될 그 비트가 논리 "0" 이라면, 저장소자의 임계전압 레벨은, 화살표(500)로 도시된 바와같이, 상태 A로 증가된다. 이는 제 1 프로그래밍 패스를 종료시킨다.
제 2 프로그래밍 패스(pass)에서는, 상위 논리 페이지로 프로그래밍될 비트에 따라서, 저장소자의 임계전압 레벨이 설정된다. 만일, 상위 논리 페이지 비트가 논리 "1"을 저장할 것이라면, 어떤 프로그래밍도 발생하지 않을 것인바, 이는 상기 저장소자가 상태 E 또는 상태 A 중 어느 하나에 있기 때문이다. 상태 E 또는 상태 A는 둘다 모두 상위 논리 페이지 비트 "1" 을 수반하고 있으며, 저장상태 E에 있는지 상태 A에 있는지는, 하위 페이지 비트의 프로그래밍에 좌우된다. 만일, 상위 페이지 비트가 논리 "0"이 될 것이라면, 임계전압은 쉬프트된다. 만일, 제 1 패스의 결과로서 저장소자가 소거 상태 E에 남아있다면, 이후, 제 2 페이즈에서 상기 저장소자가 프로그래밍되어 상기 저장소자의 임계전압은 상태 C 내에 있도록 증가되는바, 이는 화살표(520)에 의해 도시된다. 만일, 제 1 프로그래밍 패스의 결과로서, 저장소자가 상태 A로 프로그래밍되었다면, 상기 저장소자는 제 2 프로그래밍 패스에서 더 프로그래밍되어, 그 임계전압이 상태 B 내에 있도록 증가되는바, 이는 화살표(510)으로 도시된다. 이러한 일례에서, 오프셋 검증 레벨들 VvaL 및 VvbL은 또한, A 데이터 상태 및 B 데이터 상태 각각에 대하여 이용될 수 있다. 제 2 프로그래밍 패스의 결과는, 하위 페이지의 데이터를 변화시키지 않고, 상위 페이지에 논리 "0" 을 저장하도록 지정된 상태로 저장소자를 프로그래밍하는 것이다. 도4 및 도5 둘다에서, 인접 워드라인 상의 플로팅 게이트로의 커플링의 분량은 최종 상태에 의존한다.
일실시예에서 만일, 하위 및 상위 페이지 데이터 둘다가 이용가능하다면, 시스템은 풀 시퀀스 기입(full sequence writing)을 수행하도록 세팅될 수 있다. 만일, 충분한 데이터가 이용가능하지 않다면, 상기 프로그래밍 프로세스는, 수신된 데이터로 하위 페이지를 프로그램할 수 있다. 후속 데이터가 수신되면, 상기 시스템은 상위 페이지를 프로그램할 것이다. 본 발명의 또 다른 실시예에 따르면 시스템은, 하위 페이지를 프로그램하는 모드에서 기입 동작을 개시하고, 한 워드라인의 모든(또는 대부분의) 저장소자들을 채우기에 충분한 데이터가 후속으로 수신된다면, 풀 시퀀스 프로그래밍 모드로 전환할 수 있다.
도6a 내지 도6c는, 비휘발성 메모리를 프로그래밍하는 또 다른 프로세스를 도시한 도면으로, 임의의 특정한 저장소자에 대해서 플로팅 게이트간(floating gate-to-floting gate) 커플링을 감소시킨 것인바, 종전의 페이지들에 대해 인접 저장소자들을 기입한 후에, 특정한 페이지에 대해 상기 특정한 저장소자를 기입함으로써, 커플링을 감소시킨 것이다. 예시적인 일 구현예에서, 비휘발성 저장소자들 각각은, 4개의 데이터 상태를 이용하여 저장소자 당 2 비트의 데이터를 저장한다. 예를 들어, 상태 E는 소거 상태이며, 상태 A, B 및 C는 프로그래밍된 상태라 가정하자. 상태 E는 데이터 11을 저장하고, 상태 A는 데이터 01을 저장하고, 상태 B는 데이터 10을 저장하고, 상태 C는 데이터 00을 저장한다. 이것은 비-그레이 코딩(non-Gray coding)의 일례인데, 왜냐하면 인접한 상태 A 및 B 사이에서 2개의 비트들 모두가 변하기 때문이다. 데이터를 물리적인 데이터 상태들로 인코딩하는 다른 방법들 역시 이용될 수도 있다. 각각의 저장소자는 데이터의 2 페이지들을 저장한다. 참조를 위해, 데이터의 이러한 페이지들은 상위 페이지 및 하위 페이지라 호칭될 것이다. 하지만, 다른 명칭들도 역시 가능하다. 상태 A에 대해서, 상위 페이지는 비트 0을 저장하고 하위 페이지는 비트 1을 저장한다. 상태 B에 대해서, 상위 페이지는 비트 1을 저장하고 하위 페이지는 비트 0을 저장한다.상태 C에 대해서, 2개의 페이지들 모두는 비트 0을 저장한다.
이러한 프로그래밍 프로세스는 2-단계(two-step) 프로세스이다. 첫번째 단계에서는, 하위 페이지가 프로그래밍된다. 만일, 상기 하위 페이지가 데이터 1을 유지할 것이라면, 상기 저장소자는 상태 E에 남아있는다(분포 600). 만일 상기 데이터가 0 으로 프로그래밍될 것이라면, 상기 저장소자가 상태 B'(분포 610)로 프로그래밍되도록 상기 저장소자의 임계전압은 상승된다. 따라서, 도6a에는 상태 E로부터 상태 B'로 저장소자를 프로그래밍하는 것이 도시되어 있다. 상태 B'는 상태 B의 중간(interim) 상태이다. 따라서, Vvb' 라고 도시된 검증 포인트는 검증 포인트 Vvb 보다 더 낮다.
일실시예에서, 저장소자가 상태 E에서 상태 B'로 프로그래밍된 이후에, 낸드 스트링에 있는 그것의 이웃 저장소자(WLn+1)는 하위 페이지에 대해서 프로그래밍될 것이다. 이러한 것은, 상태 B'에 대한 임계전압 분포를 도6b에 도시된 임계전압 분포(612)처럼, 확장하는 효과를 가질 것이다. 임계전압 분포의 이러한 겉보기(apparent) 확장은, 상위 페이지를 프로그래밍할 때에 치유될 것이다. 분포(602)로 도시된 바와 같이, E 상태도 또한 확장될 것이다.
도6c는 상위 페이지를 프로그래밍하는 프로세스를 도시한 도면이다. 만일 저장소자가 소거 상태 E에 있고 상기 상위 페이지가 1 에 남아있을 거라면, 상기 저장소자는 상태 E(분포 602)에 남아있을 것이다. 만일 저장소자가 상태 E에 있고 그것의 상위 페이지 데이터가 0 으로 프로그래밍될 것이라면, 상기 저장소자의 임계전압은 상승할 것이며 따라서 상기 저장소자는 상태 A(분포 604)에 있게 된다. 만일, 상기 저장소자가 중간 임계전압 분포(612)에 있었고 그리고 상위 페이지 데이터가 1 로 남아있을 거라면, 상기 저장소자는 최종 상태 B(분포 606)로 프로그래밍될 것이다. 만일, 상기 저장소자가 중간 임계전압 분포(612)에 있고 상위 페이지 데이터가 0 이 될 것이라면, 상기 저장소자가 상태 C(분포 608)에 있도록, 상기 저장소자의 임계전압은 증가될 것이다. 이러한 일례에서, 오프셋 검증 레벨들도 또한 A 및 B 데이터 상태에 대해서 이용될 수 있다. 도6a 내지 도6c에 도시된 프로세스는 플로팅 게이트간 커플링 효과를 감소시키는바, 이는 이웃 저장소자들의 오직 상위 페이지 프로그래밍만이, 주어진 저장소자의 겉보기 임계전압에 영향을 미칠 것이기 때문이다. 교번하는 상태 코딩(alternate state coding)에 대한 일례는, 상위 페이지 데이터가 1 인 경우에는 분포(612)로부터 상태 C 로 이동하는 것이며, 상위 페이지 데이터가 0 인 경우에는 상태 B로 이동하는 것이다.
비록, 도6a 내지 도6c는 4개의 데이터 상태들 및 2 페이지의 데이터에 관한 일례를 제공하지만, 본 발명의 기술적 사상은, 4개보다 더 많거나 적은 데이터 상태들 및 2개가 아닌 다른 갯수의 데이터 페이지들을 갖는 또 다른 구현예들에도 적용가능하다. 예를 들어, 저장소자 당 8개 혹은 16개 상태를 갖는 메모리 디바이스가 현재 계획되고 있거나 양산되고 있다.
도7은 저장소자들의 세트에 대한 멀티-패스(multi-pass) 프로그램 동작을 예시한다. 도시된 구성요소들은 저장소자들, 워드라인들 및 비트라인들의 훨씬 더 큰 세트의 서브세트가 될 수도 있다. 프로그램 동작의 일례에서, WLn-1 상의 저장소자들 즉, 저장소자들 702, 704, 및 706이 제 1 프로그래밍 패스에서 프로그래밍된다. 이러한 단계는 원으로 둘러싸인 "1"로 즉, ①로 표시된다. 다음으로 "2"에서, 즉 ②에서, WLn 상의 저장소자들 즉, 저장소자들 712, 714 및 716이 제 1 프로그래밍 패스에서 프로그래밍된다. 이러한 일례에서, 프로그래밍을 위해 워드라인이 선택되는 경우, 각각의 프로그램 펄스 이후에 검증 동작들이 수행된다. WLn 에 대한 검증 동작들 동안에, 하나 이상의 검증 전압들이 WLn에 인가되며, 그리고 WLn-1 및 WLn+1을 포함하는 나머지 워드라인에는 패스 전압들(pass voltages)이 인가된다. 패스 전압들은 비선택 저장소자들을 턴온(즉, 도통되게함)시키는데 이용되며 따라서 선택된 워드라인에 대한 감지 동작이 수행될 수 있다. 다음으로 "3"에서, 즉 ③에서, WLn-1 상의 저장소자들이 제 2 프로그래밍 패스에서 프로그래밍된다. 다음으로 "4"에서, 즉 ④에서, WLn+1 상의 저장소자들이 제 1 프로그래밍 패스에서 프로그래밍된다. 다음으로 "5"에서, 즉 ⑤에서, WLn 상의 저장소자들이 그들 각각의 타겟 상태들로 제 2 프로그래밍 패스에서 프로그래밍된다.
WLn+1 에 대한 프로그래밍 때문에, WLn 상의 저장소자들은 커플링의 영향을 받는바, 이러한 커플링은 각각의 상태에 대한 상기 저장소자들의 임계전압 분포를 상승 및 확장시키는 경향이 있다. 이러한 것은 싱글-패스(single-pass) 및 멀티-패스(multi-pass) 프로그래밍 둘다에서 발생할 수 있다. 싱글-패스 프로그래밍에서, 각각의 워드라인은 예컨대, WLn-1, WLn, WLn+1 순서와 같이, 다음 워드라인으로 이동하기 전에 완전히 프로그래밍된다.
도8a는 프로그래밍 동작의 프로그래밍 이터레이션(iteration)을 예시한 도면으로, 여기에서는 각각의 데이터 상태에 대해서 하나의 검증 레벨이 이용된다. 일반적으로, 프로그래밍 이터레이션은 프로그래밍 동작의 싸이클(cycle)을 지칭하며, 이는 대응 싸이클들에서의 다수개의 연속적인 프로그래밍 이터레이션들로 구성된다. 프로그래밍 이터레이션은 가령, 선택 워드라인을 통해서 하나 이상의 프로그램 펄스들을 선택 저장소자들의 세트에 인가함에 의해서 수행될 수 있으며 이에 후속하여 하나 이상의 검증 동작들이 선택적으로 수행될 수 있다. 일반적으로, 검증 동작은 센싱 절차를 이용하여 검증 레벨(가령, 전압 또는 전류)에 대해서 하나 이상의 선택된 저장소자들을 테스트하는 절차를 지칭한다. 이러한 일례에서, 프로그램 이터레이션은, 타겟 검증 전압들 Vva, Vvb 및 Vvc 에 관련된 검증 동작들이 후속되는, Vpgm의 크기를 갖는 프로그램 펄스를 포함한다
도8b는 프로그래밍 동작의 프로그래밍 이터레이션을 예시한 도면으로, 여기에서는 일부 데이터 상태들에 대해서 2개의 검증 레벨들이 이용된다. 이러한 접근법에서는 도8a에 비하여, 오프셋 검증 레벨들 VvaL 및 VvbL 이 부가된다. 저장소자가 그 타겟 데이터에 대한 오프셋 검증 레벨에 도달했다고 검증되는 때, 가령, 관련 비트라인 전압을 상승시킴에 의해서 그 저장소자의 프로그래밍 속도가 감소된다. 그 결과, 더 조밀한 임계전압 분포가 획득될 수 있다. 하지만, 이러한 장점은, 오프셋 검증 레벨들에서 필요한 여분의 검증 동작들 때문인, 추가적인 프로그래밍 시간이라는 단점에 의해서 상쇄된다. 이상적으로는, 이러한 옵셋 검증 레벨들은 비용 대비 장점을 최적화하는데 이들이 가장 효과적일 때에만, 드물게(sparingly) 이용되어야만 한다.
도9a는 저장소자들의 세트의 자연적인 프로그래밍된(natural programmed) 임계전압 분포를 도시한다. 일반적으로, 이중 검증 기법이 이용되는 경우, 오프셋 검증 레벨과 타겟 검증 레벨은 프로그래밍 이터레이션에서 둘다 이용된다. 이러한 점은, 이중 검증 레벨들에 대해서 테스트된 저장소자들의 개수를 최대화시킨다. 몇몇 경우에 있어서, 오프셋 검증 레벨이 하나 이상의 저장소자들에 의해서 충족될 때까지, 타겟 검증 레벨은 이용되지 않는다. 하지만, 저장소자들의 세트의 자연적인 프로그래밍된 임계전압 분포가 상당히 넓기 때문에, 저장소자들의 대다수(majority)는 이중 검증 동작들을 여전히 경험하게 하면서도, 오프셋 검증 레벨들을 이용하는 검증 동작들의 일부를 생략(skip)하는 것이 가능하다. 이러한 접근법은, 이중 검증 레벨의 사용으로 인한 프로그래밍 시간의 증가를 최소화하면서도, 임계전압 분포를 조밀하게 만드는 대부분의 장점들을 향유할 수 있게 한다.
저장소자들의 예시적인 세트에 대한 자연적인 프로그래밍된 임계전압 분포가 도시되어 있는바, 여기서 x-축은 임계전압을 나타내며 그리고 y-축은 저장소자들의 개수를 로그 스케일로 나타낸다. 이러한 일례에서, 일반적으로 상기 분포는 3.0 V의 중앙값(mean) 혹은 중간점(midpoint)에 대해서 대칭이다. 또한, 상기 일례에서, 분포는 4V의 폭을 갖는다. 메모리 셀들의 세트에 대한 자연적인 프로그래밍된 임계전압 분포는, 메모리 셀들이 동일한 하나 이상의 펄스들을 수신하는 경우에 획득된 임계전압 분포이다. 이것은, 매우 많은 수의 저장소자들의 자연적인 물리적 및 전기적 변동들(natural physical and electrical variations)을 반영한다. 소스 드레인 중첩 영역 뿐만 아니라 가령, 활성층(저장소자 폭) 사이즈, 채널 길이, 터널 산화물 두께, 터널 산화물의 국부적 미세화(tunnel oxide local thinning), 플로팅 게이트의 형상, 인터-폴리실리콘 ONO 두께 등등과 같은, 이러한 변동에 기여하는 수 많은 인자들이 존재한다.
도9b는 도9a의 자연적인 프로그래밍된 임계전압 분포의 서로 다른 스캐닝된(scanned) 부분에 대한 저장소자들의 누적 퍼센티지를 예시한다. x-축은 임계전압을 나타내고 그리고 y-축은 저장소자들의 부분(portion)을 퍼센티지로 나타낸다. 일반적으로, 저장소자들의 상당히 큰 부분이 중간값에 비교적 가까운 임계전압들을 가지며, 그리고 저장소자들의 상당히 작은 부분이 중간값으로부터 비교적 먼 임계전압들을 갖는다.
모든 저장소자들에 대해서 이중 검증 기법을 적용하기 위해서는, 자연적인 프로그래밍된 임계전압 분포 폭 전체가 스캐닝될 필요가 있다. 예를 들어, Δ= 4V 이고, 그리고 0.2V의 프로그램 스텝 사이즈가 이용되는 경우, 모든 저장소자들이 이중 검증 기법을 경험하는 것을 보장하기 위해서는, 오프셋 및 타겟 검증 레벨들 각각에서 약 4/0.2 = 20 개의 검증 동작들이 필요할 것이다. 이와 달리, 만일 저장소자들의 감소된 부분(가령, 90%)만이 이중 검증 기법을 경험하게 된다면, 도면에 도시된 바와 같이, 자연적인 프로그래밍된 임계전압 분포의 약 1.5V 만을 스캐닝할 필요가 있을 것이다. 따라서, 오프셋 검증 레벨을 이용하여 저장소자들의 90%를 검증하기 위해서, 우리는 오직 약 1.5/0.2 ≒ 8개의 검증 동작들을 필요로 할 것이다. 그 결과, 오프셋 검증 동작의 개수가 상당히 감소했음에도 불구하고(예컨대, 20개에서 8개로 감소), 상당히 많은 수의 저장소자들을 위해서 이중 검증 기법의 장점들이 실현될 수 있다. 프로그래밍 시간과 임계전압 분포 사이의 최적의 트레이드오프(trade off)을 알아내기 위하여, 오프셋 검증 동작들의 개수와 프로그래밍된 최종 임계전압 분포에 대한 최적화가 수행될 수 있다. 예시적인 프로그래밍 기법들은 다음에 상세히 설명된다.
도10a는 제 1 프로그래밍 동작을 예시한다. 이러한 일례에서, 프로그래밍 동작은 3개의 페이즈들(phases)을 포함한다. 제 1 페이즈(단계 1000)에서는, 주어진 데이터 상태(데이터 상태 X로 표현됨)에 대해서, 타겟 검증 레벨을 이용하는 검증 동작들인 타겟 검증 동작들만이 수행된다. 예컨대, 타겟으로부터 오프셋된 오프셋 검증 레벨을 이용하는 검증 동작들인 오프셋 검증 동작들은 수행되지 않는다. 제 2 페이즈(단계 1002)에서는, 데이터 상태 X에 대해서 타겟 및 오프셋 검증 동작들 둘다가 수행된다. 제 3 페이즈(단계 1003)에서는, 프로그래밍이 종료될 때까지 데이터 상태 X에 대해서 오직 타겟 검증 동작들만이 수행된다.
일반적으로, 도10a 내지 도10c의 프로그래밍 동작들은, 다중 데이터 상태들로 프로그래밍되는 저장소자들에 대해서 병렬로 수행될 수 있다.
도10b는 제 2 프로그래밍 동작을 예시한다. 이러한 일례에서, 제 2 프로그래밍 동작은 2개의 페이즈들을 포함한다. 제 1 페이즈(단계 1010)에서는, 주어진 데이터 상태 X에 대해서, 오직 타겟 검증 동작들만이 수행된다. 오프셋 검증 동작들은 수행되지 않는다. 제 2 페이즈(단계 1012)에서는, 프로그래밍이 종료될 때까지 데이터 상태 X에 대해서 타겟 및 오프셋 검증 동작들 둘다가 수행된다.
도10c는 제 3 프로그래밍 동작을 예시한다. 이러한 일례에서, 제 3 프로그래밍 동작은 2개의 페이즈들을 포함한다. 제 1 페이즈(단계 1020)에서는, 주어진 데이터 상태 X에 대해서, 타겟 및 오프셋 검증 동작들 둘다가 수행된다. 제 2 페이즈(단계 1022)에서는, 프로그래밍이 종료될 때까지 데이터 상태 X에 대해서 오직 타겟 검증 동작들만이 수행된다. 오프셋 검증 동작들은 수행되지 않는다.
도11a는 도10a의 프로그래밍 동작의 페이즈 1의 예시적인 프로그래밍 이터레이션들을 도시하는바, 여기서는 타겟 데이터 상태에 대해서 타겟 검증 동작이 수행된다. 이러한 일례에서는, B-상태로 프로그래밍될 저장소자들인 B-상태 저장소자들만이 고려된다. 각각의 이터레이션은 Vpgm의 크기를 갖는 프로그램 펄스를 포함하는바, Vvb의 크기를 갖는 검증 펄스가 이에 후속된다. 일 접근법에서, Vpgm은 연속적인 각각의 프로그래밍 이터레이션과 더불어 계단 형식(step-wise)으로 증가한다. 페이즈 1은, 프로그램 이터레이션들의 개수, 혹은 루프 카운트(loop count) N 이, 특정한 루프 카운트 값 START_VL 보다 작은 경우(즉, N < START_VL)에 발생할 수 있다.
도11a 내지 도11c의 점선들(dashed lines)은 비트 스캔이 수행되는 시간 기간을 나타낸다. 도15를 참조하여 다음에 좀더 상세히 설명되는 바와 같이, 이는 저장소자들의 비트라인들에 관련된 래치들을 판독하는 것을 포함할 수 있는바, 이는 임계전압들 혹은 다른 측정가능한 특징들(가령, 전류)이 타겟 혹은 오프셋 검증 레벨 등과 같은 비교 레벨보다 위에 있는지 아래에 있는지를 판별하기 위한 것이다. 이러한 정보는 프로그래밍 페이즈들 사이에서의 천이들을 적응적으로(adaptively) 트리거링하는데 이용될 수 있는바, 이에 대해서는 상세히 후술될 것이다.
도11b는 도10a의 프로그래밍 동작의 페이즈 2의 예시적인 프로그래밍 이터레이션들을 도시하는바, 여기서는 타겟 데이터 상태에 대해서 오프셋 및 타겟 검증 동작들이 수행된다. 다시한번 설명하면, B-상태 저장소자들만이 고려된다. 각각의 이터레이션은 Vpgm의 크기를 갖는 프로그램 펄스를 포함하는바, VvbL의 크기를 갖는 오프셋 검증 펄스가 후속되며, 그리고 Vvb의 크기를 갖는 타겟 검증 펄스가 이에 후속된다. 페이즈 2는 START_VL ≤ N ≤ END_VL 인 경우에 발생할 수 있다. END_VL 은, 프로그래밍 이터레이션들의 기결정된 개수가 될 수 있으며 혹은 프로그래밍 동안에 적응적으로 결정될 수 있다.
도11c는 도10a의 프로그래밍 동작의 페이즈 3의 예시적인 프로그래밍 이터레이션들을 도시하는바, 여기서는 각각의 타겟 데이터 상태에 대해서 타겟 검증 동작이 수행된다. 다시한번 설명하면, B-상태 저장소자들만이 고려된다. 각각의 이터레이션은 Vpgm의 크기를 갖는 프로그램 펄스를 포함하는바, Vvb의 크기를 갖는 타겟 검증 펄스가 이에 후속된다. 페이즈 3은 N ≥ END_VL 인 경우에 발생할 수 있다. START_VL 과 END_VL 을 적절히 세팅함으로써, 짧은 프로그래밍 시간을 갖는 것과 서로 다른 데이터 상태들에 대해서 좁은 임계전압 분포들을 갖는 것 사이에서 최상의 트레이드오프를 나타내는 최적의 조건이 발견될 수 있다.
도12는 데이터 상태 A, B, 및 C 에 관한 프로그래밍 동작을 예시한 도면으로, 상태 A 및 상태 B 각각에 대하여 오프셋 및 타겟 검증 동작들이 수행되며 그리고 상태 C에 대해서는 타겟 검증 동작이 수행된다. 이러한 프로그래밍 동작(1200)에서는, 4개의 데이터 상태들이 이용된다. 본 발명의 원리들은 다른 개수의 데이터 상태들 가령, 8개 혹은 16개의 데이터 상태들을 이용하는 경우에도 적용될 수 있다. x-축은 연속적인 시간 지점들(time points)을 나타내는바, 이들 시간 지점들은 등거리(equidistant)일 필요는 없으며, 그리고 y-축은 전압 크기를 나타낸다. 17개의 프로그램 펄스들(1210, 1215, 1220, 1225, 1230, 1235, 1240, 1245, 1250, 1255, 1260, 1265, 1270, 1275, 1280, 1285, 및 1290)의 시퀀스가 도시되어 있다. 각각의 시간 지점들 t1 - t17에서, 각각의 펄스가 인가되며 그리고 대응 프로그래밍 이터레이션이 시작된다. 제 1 프로그램 펄스(1210)를 제외하고, 각각의 펄스 이후에는 하나 이상의 검증 펄스들이 후속된다. 예를 들어, 프로그램 펄스(1215) 이후에는 검증 펄스(1205)가 후속된다. 일반적으로, 기결정된 프로그래밍 이터레이션까지, 주어진 상태에 대한 검증 동작을 지연시키는 것도 가능하다. 상기 일례에서, 상태 A에 대한 검증 동작은 2번째 프로그래밍 이터레이션까지 지연된다. 몇몇 실시예에서, A 상태 검증 동작들은 제 1 프로그래밍 펄스 이후에 곧바로 시작된다.
프로그래밍 이터레이션들의 세트(1201)의 경우, VvaL 및 Vva 둘다를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1202)의 경우, VvaL, Vva, VvbL 및 Vvb 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1203)의 경우, VvbL, Vvb 및 Vvc 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1204)의 경우, Vvc 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 전술한 바와 같이, 이러한 접근법은 오프셋 및 타겟 검증 동작들이 일제히(in concert) 수행되기 때문에, 최적화되지 않았다.
도13a는 데이터 상태 A, B 및 C에 관한 프로그래밍 동작을 예시한 도면으로, 여기서, (a) 상태 A 및 상태 B 각각에 대하여, 타겟 검증 동작들이 초기에 수행되며, 이에 후속하여 오프셋 및 타겟 검증 동작들이 수행되며, 이에 후속하여 타겟 검증 동작들이 수행되며, 그리고 (b) 상태 C에 대하여 타겟 검증 동작이 수행된다. 이러한 프로그래밍 동작(1300)에서는 4개의 데이터 상태들이 이용된다. 17개의 프로그램 펄스들(1310, 1315, 1320, 1325, 1330, 1335, 1340, 1345, 1350, 1355, 1360, 1365, 1370, 1375, 1380, 1385, 및 1390)의 시퀀스가 도시되어 있다. 각각의 시간 지점들 t1 - t17에서, 각각의 펄스가 인가되며 그리고 대응 프로그래밍 이터레이션이 시작된다. 제 1 프로그램 펄스(1310)를 제외하고, 각각의 펄스 이후에는 하나 이상의 검증 펄스들이 후속된다.
특히, 프로그래밍 이터레이션들의 세트(1301)의 경우, Vva 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1302)의 경우, VvaL 및 Vva 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1303)의 경우, VvaL, Vva 및 Vvb 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1304)의 경우, Vva, VvbL 및 Vvb 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1306)의 경우, VvbL, Vvb 및 Vvc 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1307)의 경우, Vvb 및 Vvc 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다. 프로그래밍 이터레이션들의 세트(1308)의 경우, Vvc 를 이용하는 검증 동작들이 각각의 프로그램 펄스 이후에 수행된다.
도13b는 도13a의 프로그래밍 동작을 도시한 것으로, 오직 A-상태 검증 동작들만을 나타낸다. 공통 타겟 데이터 상태를 갖는 저장소자들의 프로그래밍을 개별적으로 관찰함으로써, 본 발명의 원리를 더욱 깊게 이해할 수 있을 것이다. 도13b에는 A-상태 저장소자들에 대한 프로그래밍이 도시되어 있다. 다른 상태들에 대한 검증 펄스들은 생략되었다. A-상태 검증 레벨들, Vva 및 VvaL 이 도시된다. NAVstart 는, A-상태에 대한 검증 동작들이 시작되는 프로그래밍 이터레이션을 나타낸다. 이러한 일례에서, NAVstart = 2 이며, 따라서 2번째 프로그래밍 이터레이션에서 즉, t2에서 A-상태에 대해서 검증 동작들이 시작된다. 예를 들어, NAVstart 는 미리 결정될 수도 있다. 프로그래밍 이터레이션들의 세트(1301) 동안, Vva를 이용하지만 VvaL는 이용하지 않는 검증 동작들이 수행된다. 이는, 도10a와 관련하여 설명된 바와 같은, A-상태 저장소자들에 대한 3-페이즈 프로그래밍 동작의 페이즈 1에 대응한다. 이러한 일례에서는, 페이즈 1에서, 정수 N1 = 2 즉, 2개의 이터레이션들이 수행된다.
t4에서, A-상태 저장소자들에 대한 3-페이즈 프로그래밍 동작의 페이즈 2가 개시된다. 페이즈 2에서는, 프로그래밍 이터레이션들 1302와 1303이 수행되는바, 여기에서는 VvaL 과 Vva 둘다를 이용하는 검증 동작들이 수행된다. 페이즈 2는 다른 방식으로 개시될 수도 있다. 가능한 일실시예에서는, 페이즈 1에서 특정 개수의 프로그래밍 이터레이션들(Δ1 값으로 표시됨)이 완료된 이후에 페이즈 2가 시작된다. 또는, 페이즈 2가 개시될 시점은, 프로그래밍 동안에 적응적으로 결정될 수도 있다. 일 접근법에서는, 적어도 특정 개수의 A-상태 저장소자들이 Vva 에 도달하는 때(혹은 특정 개수보다 적지 않은 A-상태 저장소자들이 Vva 에 도달하는 때)에, 페이즈 2가 시작된다. 페이즈 2는, 적어도 특정 개수의 A-상태 저장소자들이 VvaL 에 도달하는 때(혹은, 특정 개수보다 적지 않은 A-상태 저장소자들이 VvaL 에 도달하는 때 즉, VvaL에 도달하지 못한 A-상태 저장소자들의 개수가 특정 개수보다 작은 때)에 종료할 수 있다. 이러한 일례에서, 정수 N2 = 4 즉, 4개의 이터레이션들이 페이즈 2에서 수행된다.
프로그래밍 이터레이션(1304)에서는 오직 Vva 만을 이용하는 검증 동작들이 수행된다. 이는 A-상태 저장소자들에 대한 3-페이즈 프로그래밍 동작의 페이즈 3에 대응한다. 상기 일례에서는 정수 N3 = 2 즉, 2개의 이터레이션들이 페이즈 3에서 수행된다. 적어도 특정 개수의 A-상태 저장소자들의 임계전압이 Vva를 초과하는 때, 혹은 특정 개수보다 적은 수의 A-상태 저장소자들의 임계전압이 Vva를 초과하지 않는 때에, 상태 A에 대한 프로그래밍이 종료될 수 있다.
도13c는 도13a의 프로그래밍 동작을 도시한 것으로, 오직 B-상태 검증 동작들만을 나타낸다. B-상태 저장소자들에 대한 검증은 기본적으로 도13b에 도시된 바와 같은 A-상태 저장소자들에 대한 검증에 대응되지만, 시간적으로 지연된다. 일반적으로는, A-상태 저장소자들이 검증되는 다수의 프로그래밍 이터레이션들이 발생될 때까지, B-상태 저장소자들에 대한 검증 동작들을 개시할 필요는 없다.
도13c에는 B-상태 저장소자들에 대한 프로그래밍이 도시되어 있다. 다른 상태들에 대한 검증 펄스들은 생략되었다. B-상태 검증 레벨들, Vvb 및 VvbL 이 도시된다. NBVstart 는, B-상태에 대한 검증 동작들이 시작되는 프로그래밍 이터레이션을 나타낸다. 이러한 일례에서, NBVstart = 6 이며, 따라서 6번째 프로그래밍 이터레이션에서 즉, t6에서 B-상태에 대해서 검증 동작들이 시작된다. NBVstart 는 미리 결정될 수도 있으며 혹은 프로그래밍 동안에 적응적으로 결정될 수도 있다. 프로그래밍 이터레이션들의 세트(1303) 동안, Vvb를 이용하지만 VvbL는 이용하지 않는 검증 동작들이 수행된다. 이는, 도10a와 관련하여 설명된 바와 같은, B-상태 저장소자들에 대한 3-페이즈 프로그래밍 동작의 페이즈 1에 대응한다. 이러한 일례에서는, 정수 N1 = 2 즉, 2개의 이터레이션들이 페이즈 1에서 수행된다.
t8에서, B-상태 저장소자들에 대한 3-페이즈 프로그래밍 동작의 페이즈 2가 개시된다. 페이즈 2에서는, 프로그래밍 이터레이션들 1302, 1304 및 1306이 수행되는바, 여기에서는 VvbL 과 Vvb 둘다를 이용하는 검증 동작들이 수행된다. 페이즈 2는 다른 방식으로 개시될 수도 있다. 가능한 일실시예에서는, 페이즈 1에서 특정 개수의 프로그래밍 이터레이션들(Δ2 값으로 표시됨)이 완료된 이후에 페이즈 2가 시작된다. 또는, 페이즈 2가 개시될 시점은 적응적으로 결정될 수도 있다. 또한, 페이즈 2의 지속 기간은 다른 방식으로 설정될 수도 있다. 일실시예에서, 상기 지속 기간은 고정된 개수의 프로그래밍 이터레이션들로 설정된다. 다른 실시예에서는, A-상태에 관하여 전술한 바와 같이, 페이즈 2를 시작할 시간 혹은 종료할 시간이 적응적으로 결정될 수 있다. 이러한 일례에서, 정수 N2 = 4 즉, 4개의 이터레이션들이 페이즈 2에서 수행된다.
프로그래밍 이터레이션(1307)에서는 오직 Vvb 만을 이용하는 검증 동작들이 수행된다. 이는 B-상태 저장소자들에 대한 3-페이즈 프로그래밍 동작의 페이즈 3에 대응한다.
도13d는 도13a의 프로그래밍 동작을 도시한 것으로, 오직 C-상태 검증 동작들만을 나타낸다. 이러한 일례에서, C-상태는 최상위 상태이며 그리고 이중 검증 기법을 적용하는 것도 또한 가능하지만, 상기 일례에서는 이중 검증 기법을 적용받지 않는다. C-상태 저장소자들에 대한 검증은 A-상태 및 B-상태 저장소자들에 대한 검증에 비하여 시간적으로 지연된다. 일반적으로는, B-상태 저장소자들이 검증되는 다수의 프로그래밍 이터레이션들이 발생될 때까지, C-상태 저장소자들에 대한 검증 동작들을 개시할 필요는 없다.
도13d에는 C-상태 저장소자들에 대한 프로그래밍이 도시되어 있다. 다른 상태들에 대한 검증 펄스들은 생략되었다. C-상태 검증 레벨, Vvc 가 도시된다. NCVstart 는, C-상태에 대한 검증 동작들이 시작되는 프로그래밍 이터레이션을 나타낸다. 이러한 일례에서, NBVstart = 10 이며, 따라서 10번째 프로그래밍 이터레이션에서 즉, t10에서 C-상태에 대해서 검증 동작들이 시작된다. NCVstart 는 미리 결정될 수도 있으며 혹은 프로그래밍 동안에 적응적으로 결정될 수도 있다. 프로그래밍 이터레이션들의 세트(1306, 1307, 및 1308) 동안, Vvc를 이용하는 검증 동작들이 수행된다. 상태 C에 대해서는 오직 하나의 검증 페이즈가 구현된다. 이러한 일례에서, 정수 N3 = 8 즉, 8개의 이터레이션들이 수행되며, 그 이후에는 모든 저장소자들에 대한 프로그래밍이 완료된다.
N1, N2, 및 N3 값들은 서로 다른 상태들에 대해서 달라질 수 있다. 또한, N2 프로그래밍 이터레이션들의 제 2 페이즈의 첫번째 프로그래밍 이터레이션은, N1 프로그래밍 이터레이션들의 제 1 페이즈의 첫번째 프로그래밍 이터레이션이 시작한 이후에, 기결정된 개수의 프로그래밍 이터레이션들을 시작할 수 있다. 이와 유사하게, N3 프로그래밍 이터레이션들의 제 3 페이즈의 첫번째 프로그래밍 이터레이션은, 제 1 페이즈의 첫번째 프로그래밍 이터레이션 이후에, 기결정된 개수의 프로그래밍 이터레이션들을 시작할 수 있으며 혹은 제 1 페이즈의 첫번째 프로그래밍 이터레이션 이후에, 기결정된 개수의 프로그래밍 이터레이션들을 시작할 수 있다.
도14a는 데이터 상태의 임계전압 분포를 도시한 도면으로, 적어도 특정 개수의 저장소자들은 타겟 검증 레벨 보다 약간 높은 임계전압을 갖는다. 과도적인(transient) Vth 분포(1400)가 대표적인 상태(representative state)로서, 상태 A에 대해서 제공된다. 여기서 논의된 바는, 필요한 변경을 가하여(mutatis mutandis), 다른 상태들에도 역시 적용될 수 있다. 오프셋 검증 레벨 VvaL 과 타겟 검증 레벨 Vva 이 또한 도시된다. 프로그래밍 동안, A-상태 저장소자들의 임계전압들은, A-상태 저장소자들 중 일정 부분이 Vva 보다 높은 Vth 를 가질 때까지 점진적으로 증가할 것이다. 예를 들어, Vth 분포 영역 1402 은 Vth > Vva 인 A-상태 저장소자들을 나타내며, 그리고 Vth 분포 영역 1404 는 Vth ≤ Vva 인 A-상태 저장소자들을 나타낸다.
가령, 공통 워드라인에 관련된 저장소자들과 같은 저장소자들의 세트에서, 서로 다른 상태들에 있는 저장소자들의 분포는 일반적으로 균일하다. 따라서 예를 들어, A-상태로 프로그래밍될 저장소자들의 개수는 상기 세트 내의 모든 저장소자들의 대략 1/4 이다(총 4개의 데이터 상태가 있는 경우). 만일, 8개의 데이터 상태들이 존재한다면, 주어진 상태로 프로그래밍될 저장소자들의 개수는 상기 세트 내의 모든 저장소자들의 대략 1/8 이다.
제 1 개수의 A-상태 저장소자들이 Vth > Vva 인 때에 혹은 제 2 개수의 A-상태 저장소자들이 Vth ≤ Vva 인 때에, A-상태 저장소자들에 대한 프로그래밍 동작의 페이즈 2가 시작하도록, 기준(criterion)이 설정될 수 있다. 일반적으로, 제 1 개수의 A-상태 저장소자들이 Vth > Vva 인 것을 검증하는 것이 더 빠르며 따라서 더 효율적인바, 이는 영역 1402가 영역 1404 보다 더 적은 개수의 저장소자들을 나타내기 때문이다. 다음에 설명될 비트 스캔 기술이 이용되어, 이러한 조건들 중 어느 하나가 충족되었는지를 판별할 수 있다.
적어도 Vva 보다는 큰 임계전압을 가질 것이 요구되는 저장소자들의 개수(NA1)는 가령, 전체 A-상태 저장소자들의 1~5% 정도와 같이, 상당히 작을 수 있다. 따라서, 이러한 조건이 만족되는 때에 페이즈 1이 종료될 수 있으며 그리고 페이즈 2가 시작된다. 또 다른 접근법은, 이러한 조건이 충족된 이후에, 특정 개수의 프로그래밍 이터레이션들(예컨대, 1~2개)을 기다리는 것이다.
도14b는 데이터 상태의 임계전압 분포를 도시하는바, 도14b에서는 특정 개수보다 적은 저장소자들이 오프셋 타겟 검증 레벨보다 작은 임계전압을 갖는다. 프로그래밍이 지속된 이후에, Vth 분포는 도14a의 분포 1400로부터 도14b의 분포 1410로 증가한다. 이러한 것은 프로그래밍 동작의 페이즈 2 동안에 발생할 수도 있다. 이 시점에서, A-상태 저장소자들 중 일부는 VvaL 보다 큰 Vth 를 갖는다. 예를 들어, Vth 분포 영역 1412는 Vth ≤ VvaL 인 A-상태 저장소자들을 나타내며, 그리고 Vth 분포 영역 1414는 Vth > VvaL 인 A-상태 저장소자들을 나타낸다. 프로그래밍 동작의 페이즈 2 동안에, VvaL 및 Vva 둘다가 검증 동작들에 이용된다. 따라서, 대부분의 A-상태 저장소자들의 Vth가 VvaL에 언제 도달했는지를 판별하는 것이 가능하며 그리고 이 정보를 프로그래밍 동작의 페이즈 2를 종료하고 그리고 페이즈 3을 시작하기 위한 트리거로서 이용하는 것도 가능하다.
일반적으로는, 제 1 개수의 A-상태 저장소자들이 Vth ≤ VvaL 인 것을 검증하는 것이 더 빠르며 따라서 더 효율적인바, 이는 영역 1412가 영역 1414 보다 더 적은 개수의 저장소자들을 나타내기 때문이다. 다음에 설명될 비트 스캔 기술이 이용되어, 이러한 조건들 중 어느 하나가 충족되었는지를 판별할 수 있다.
Vth < VvaL 인 임계전압을 갖는 저장소자들의 개수(NA2)는 가령, 전체 A-상태 저장소자들의 1~10% 정도와 같이, 상당히 작을 수 있다. 따라서, 이 조건이 만족되는 때에, 페이즈 2가 종료될 수 있으며 그리고 페이즈 3이 시작된다. 또 다른 접근법은, 이러한 조건이 충족된 이후에, 특정 개수의 프로그래밍 이터레이션들(예컨대, 1~2개)을 기다리는 것이다. 특정 개수의 저장소자들의 임계전압이 Vth < VvaL 인 조건은, 비트 무시 기준(bit ignore criteria)이라고 지칭되는바, 이는 이러한 조건이, 상기 조건이 충족되는 때에 무시될 수 있는 다수의 비트들, 예컨대, 저장소자들을 나타내기 때문이다. 즉, 아직까지 VvaL에 도달하지 못한 A-상태 저장소자들은, 상기 조건이 만족되면, VvaL에 대해서 테스트되지 않는다.
도14c는 데이터 상태의 임계전압 분포를 도시하는바, 도14b에서는 특정 개수보다 적은 저장소자들은 타겟 검증 레벨보다 작은 임계전압을 갖는다. 프로그래밍이 지속된 이후에, Vth 분포는 도14b의 분포 1410로부터 도14c의 분포 1420로 증가한다. 이러한 것은 프로그래밍 동작의 페이즈 3 동안에 발생할 수도 있다. 이 시점에서, A-상태 저장소자들 중 일부는 Vva 보다 큰 Vth 를 갖는다. 예를 들어, Vth 분포 영역 1422는 Vth ≤ Vva 인 A-상태 저장소자들을 나타내며, 그리고 Vth 분포 영역 1424는 Vth > Vva 인 A-상태 저장소자들을 나타낸다. 프로그래밍 동작의 페이즈 3 동안에, Vva 가 검증 동작에서 이용된다. 거의 모든 A-상태 저장소자들의 Vth가 Vva에 도달하는 경우, 이러한 것은 프로그래밍 동작의 페이즈 2를 종료하고 따라서 프로그래밍 동작을 종료하기 위한 트리거로서 이용될 수 있다. Vth 분포 영역 1422 는 영역 1402 보다 넓을 수 있는데(즉, 기울기가 더 약함), 이는 임계전압 분포의 그 부분(영역 1422)이 아직까지 검증되지 않았으며 따라서 아직까지 좁혀지지 않았기 때문이다.
일반적으로는, 제 1 개수의 A-상태 저장소자들이 Vth ≤ Vva 인 것을 검증하는 것이 더 빠르며 따라서 더 효율적인바, 이는 영역 1422가 영역 1424 보다 더 적은 개수의 저장소자들을 나타내기 때문이다. 다음에 설명될 비트 스캔 기술이 이용되어, 이러한 조건들 중 어느 하나가 충족되었는지를 판별할 수 있다. 특정 개수의 저장소자들의 임계전압이 Vth < Vva 인 조건은, 비트 무시 기준이라고 지칭되는바, 이는 이러한 조건이, 상기 조건이 충족되는 때에 무시될 수 있는 다수의 비트들, 예컨대, 저장소자들을 나타내기 때문이다. 즉, 아직까지 Vva에 도달하지 못한 A-상태 저장소자들은, 상기 조건이 만족되면, Vva에 대해서 테스트되지 않는다.
Vth < Vva 인 임계전압을 갖도록 허용된 저장소자들의 개수(NA3)는 매우 적은바, 가령, 전체 A-상태 저장소자들의 1% 이하이다. 따라서, NA1, NA2, NA3 는 A-상태에 대한 비트 무시 값들(bit ignore values)이며, 이 경우 일반적으로 NA2 > NA1 > NA3 이다. 예를 들어, NA2는 한 워드라인에 있는 모든 비트들의 10% 이며, NA1는 한 워드라인에 있는 모든 비트들의 5% 이며, 그리고 NA3는 한 워드라인에 있는 모든 비트들의 1% 이다. 우리는 또한, B-상태에 대한 비트 무시 값들로서 NB1, NB2 및 NB3을 정의할 수 있는바, 일반적으로는 NB2 > NB1 > NB3 이다. NB1 = NA1, NB2 = NA2, 그리고 NB3 = NA3 일 수도 있지만, 반드시 그런 것은 아니다. 우리는 또한, C-상태에 대한 비트 무시 값들로서 NC1, NC2 및 NC3을 정의할 수 있는바, 일반적으로는 NC2 > NC1 > NC3 이다. 또는, 우리는 C-상태에 대한 비트 무시 값으로서 오직 NC3 만을 정의할 수도 있는바, 이 경우 NC3 = NB3 = NA3 일 수도 있지만, 반드시 그런 것은 아니다.
도14c의 조건이 만족되는 경우, A-상태 저장소자들은, 이들 저장소자들에 대한 프로그래밍이 성공적으로 완료되었음을 나타내는 "패스(pass)" 상태를 갖는다고 간주된다.
도15는 프로그래밍 동작 동안 데이터 래치들의 사용을 도시한다. 메모리 디바이스에서는, 그 각각이 1 비트를 저장하는 많은 수의 데이터 래치들이 각각의 비트라인에 제공될 수도있다. 가능한 일실시예에서, 각각의 비트라인은 2개의 래치들을 가지며, 이들 각각은 1비트를 저장한다. 래치들의 제 1 세트(1501)는 래치들(1520, 1522, 1524, 1526, 1528)을 포함하며, 이들 래치들은 비트라인 BLi-2, BLi-1, BLi, BLi+1, BLi+2 에 각각 연결된다. 래치들의 제 2 세트(1502)는 래치들(1510, 1512, 1514, 1516, 1518)을 포함하며, 이들 래치들은 비트라인 BLi-2, BLi-1, BLi, BLi+1, BLi+2 에 각각 연결된다. 처음에는, 모든 0 비트들이 래치들에 저장된다. 프로그래밍 동안, 원으로 둘러싸인 "1"로 표시되는 바와 같이 즉, ①로 표시되는 바와 같이, 타겟 상태 A로 프로그래밍되기로 한 저장소자의 임계전압 Vth 가, 예컨대, 오프셋 검증 레벨 VvaL을 초과하는 때(즉, Vth > VvaL), 상기 세트(1501) 내의 대응 래치는 비트=1 로 세팅된다. Vth 가 VvaL 보다 작거나 같은 경우(Vth ≤ VvaL), 상기 세트(1501) 내의 래치들은 비트=0 을 유지한다.
이에 후속하여, 원으로 둘러싸인 "2"로 표시되는 바와 같이 즉, ②로 표시되는 바와 같이, 타겟 상태 A로 프로그래밍되기로 한 저장소자의 임계전압 Vth 가, 상위 검증 레벨 Vva 를 초과하는 때(즉, Vth > Vva), 상기 세트(1502) 내의 대응 래치는 비트=1 로 세팅된다. Vth 가 Vva 보다 작거나 같은 경우(Vth ≤ Vva), 상기 세트(1502) 내의 래치들은 비트=0 을 유지한다.
상기 래치들(1501) 혹은 래치들(1502)은 제어 회로에 의해서 프로그래밍 이터레이션과 동시에 판독될 수 있는바(즉, 스캐닝될 수 있는바), 이는 프로그래밍 시간의 증가를 회피하거나 혹은 최소화하기 위한 것이다. 예를 들어, 도11a 내지 도11c의 점선들(dashed lines)은 이러한 스캐닝이 일어날 수 있는 때를 나타낸다. 프로그래밍 동작의 페이즈 1 동안, 예컨대, 래치들(1502)이 스캐닝될 수 있는데, 이는 도14a에 도시된 조건이 발생했는지를 판별하고 그리고 이에 따라 프로그래밍 동작의 페이즈 2를 트리거링하기 위한 것이다. 프로그래밍 동작의 페이즈 2 동안, 예컨대, 래치들(1501)이 스캐닝될 수 있는데, 이는 도14b에 도시된 조건이 발생했는지를 판별하고 그리고 이에 따라 프로그래밍 동작의 페이즈 3을 트리거링하기 위한 것이다. 프로그래밍 동작의 페이즈 3 동안, 예컨대, 래치들(1502)이 스캐닝될 수 있는데, 이는 도14c에 도시된 조건이 발생했는지를 판별하고 그리고 이에 따라 프로그래밍 동작을 완료하기 위한 것이다.
도16은 도10a의 프로그래밍 프로세스를 도시한 도면으로, 도16에서는 페이즈 2의 타이밍이 기결정된 기준에 근거한다. 이러한 일례에서, 페이즈 2는 프로그래밍 이터레이션들의 계수(count)에 기초하여 시작하고 그리고 종료한다.
프로그래밍 동작은 단계 1600에서 시작한다. 단계 1602에서, 다수의 파라미터들이 초기화된다. 예를 들어, 펄스 번호 N은 1로 세팅되고, 그리고 상태 A, B 및 C에 대한 프로그래밍 상태는 "실패(fail)"로 설정되는바, 이는 프로그래밍이 아직 완료되지 않았음을 나타낸다. 또한, NAVstart, NBVstart, 및 NCVstart 가 설정되는바, 이는 A-상태, B-상태 및 C-상태 저장소자들 각각에 대해서 검증 동작들이 시작되는 프로그래밍 이터레이션을 식별하기 위한 것이다. 전술한 바와 같이, 가령, 최하위 상태의 경우 가장 일찍 시작하고 그리고 최상위 상태의 경우는 가장 늦게 시작하는 검증 동작들을 이용하여, 서로 다른 데이터 상태들에 대해서 검증 동작들의 시작을 엇갈리게 하는 것이 효율적이다.
Δ1은 페이즈 1의 다수의 프로그래밍 이터레이션들을 식별하고 그리고 Δ2은 페이즈 2의 다수의 프로그래밍 이터레이션들을 식별한다. 이들 값들은, 프로그래밍된 각각의 데이터 상태에 대해서 개별적으로 설정될 수 있다. 하지만, 모든 데이터 상태들에 대해서 동일한 값들을 이용하는 것이 보다 효율적인바, 왜냐하면, 이러한 것은 저장될 추가 정보를 요구하지 않기 때문이다. 또한, 공통 값들을 이용하는 것이 적절한바, 왜냐하면 서로 다른 데이터 상태들에 대한 임계전압 분포들은 일반적으로 유사하기 때문이다.
단계 1606에서, 선택된 저장소자들의 세트에 가령, 선택된 워드라인을 통하여 프로그램 펄스가 인가된다. 결정 단계 1608에서, N 이 아직 NAVstart 에 도달하지 못하였다면, 현재의 프로그래밍 이터레이션에 대하여 검증 동작이 수행되지 않는다(단계 1610). 단계 1610 이후에는 결정 단계 1660이 후속한다. 하지만, 결정 단계 1608이 참(true:T)이라면, A-상태 저장소자들에 대해서 "패스" 상태가 설정되었는지의 여부에 대한 판별이 결정 단계 1612에서 수행된다. 아직 "패스" 상태가 설정되지 않았다면, 상기 펄스 번호가 프로그래밍 동작의 페이즈 2가 수행되는 범위에 속하는지의 여부에 대한 판별이 결정 단계 1618에서 수행된다. 특히, N ≥ NAVstart+Δ1(페이즈 2의 시작 이터레이션)인지의 여부 그리고 N < NAVstart+Δ1+Δ2(페이즈 2의 종료 이터레이션)인지의 여부에 대한 판별이 이루어진다.
만일, 결정 단계 1618이 참이라면, 페이즈 2가 활성화되며, 그리고 상태 A에 대한 오프셋 및 타겟 검증 레벨들에서, 즉, VvaL 및 Vva 각각에서 검증 동작들이 수행된다. 만일, 결정 단계 1618이 거짓(fail:F)이라면, 페이즈 1 또는 3이 활성화되며, 그리고 Vva에서 검증 동작이 수행되지만 VvaL에서는 검증 동작이 수행되지 않는다(단계 1622).
단계 1624에서, NA 즉, 그 임계전압이 Vva 보다 아래인 저장소자들의 개수가 판별된다. 이는 예컨대, 도14c의 영역 1422 내의 저장소자들의 개수에 대응한다. 결정 단계 1626에서, NA < NA3 인지의 여부에 대한 판별이 이루어지는바, 여기서 NA3은 비트 무시 값이다. 결정 단계 1626이 참이면, A-상태 저장소자들에 대하여 상기 상태는 "패스"로 설정된다(단계 1628). 결정 단계 1626이 거짓이면, 결정 단계 1630에서 N ≥ NBVstart 인지의 여부에 대한 판별이 이루어진다. 이것은 B-상태 저장소자들에 대한 검증 동작들이 시작되는 기결정된 프로그래밍 이터레이션에 도달하였는지의 여부에 대한 판별이다. 만일, 결정 단계 1630이 거짓이라면 결정 단계 1660에 도달하며 이에 대해서는 후술한다. 만일, 결정 단계 1630이 참이라면, B-상태 저장 소자들에 대해서 "패스" 상태가 설정되었는지의 여부에 대한 판별이 결정 단계 1632에서 이루어진다. 결정 단계 1632가 거짓이라면, 프로그래밍은 B-상태 저장소자들에 대해서 계속된다. 만일 결정 단계 1632가 참이라면 결정 단계 1646에 도달하는바, 이에 대해서는 후술한다.
결정 단계 1634에서, 프로그램 펄스 번호가 페이즈 2가 활성인 범위(예컨대, 오프셋 및 타겟 검증 동작들 둘다가 수행되는 경우) 내에 있는지에 대한 판별이 이루어진다. 만일, 결정 단계 1634가 참이라면, VvbL 및 Vvb 에서의 검증 동작들이 단계 1636에서 수행된다. 만일, 결정 단계 1634가 거짓이라면, 페이즈 1 혹은 페이즈 3이 활성화되며, 그리고 Vvb 에서의 검증 동작들이 수행되지만, VvbL 에서의 검증 동작들은 수행되지 않는다(단계 1638). 단계 1640에서는, 그 임계전압이 Vvb 보다 아래인 저장소자들의 개수, NB 가 판별된다. 이는 도14c의 영역(1422) 내에 있는 저장소자들의 개수와 유사하다.
결정 단계 1642에서, 만일 NB < NB3 라면, 일접근법에서 NB3=NA2, "패스" 상태가 상태 B에 대해서 설정된다(단계 1644). 만일, 결정 단계 1642가 거짓이라면, N ≥ NCstart 인지의 여부에 대한 판별이 결정 단계 1646에서 이루어지는바, 여기서 NCstart 는 C-상태 검증 동작들이 시작되는 초기 프로그래밍 이터레이션을 나타낸다. 만일, 결정 단계 1646이 참이라면, 검증 동작이 Vvc에서 수행된다(단계 1650). 이러한 일례에서 상태 C는 최상위 상태이며 그리고 오프셋 검증 전압이 이용되지 않음을 유의해야 한다. 하지만, 대안적으로는, 최상위 데이터 상태에 대해서, 타겟 검증 전압 이외에도 오프셋 검증 전압을 이용하는 것도 가능하다. 단계 1652에서 NC 값이 판별되는바, NC 값은 그 임계전압이 Vvc 보다 아래인 저장소자들의 개수이다. 예를 들어, 이는 도14c의 영역(1422) 내에 있는 저장소자들의 개수에 대응한다.
결정 단계 1654에서, 만일 NC < NC3 라면, 일접근법에서 NC3=NA3, "패스" 상태가 상태 C에 대해서 설정된다(단계 1656). 만일, 결정 단계 1654가 거짓이라면, N ≥ Nmax 인지의 여부에 대한 판별이 결정 단계 1660에서 이루어진다. 전형적으로는, 루프 카운트 내의 루프들(loops in a loop count)이라고 지칭되기도 하는 프로그램 이터레이션들의 최대값이 허용되는데, 이는 가령 20 내지 25 정도이다. 만일, 결정 단계 1660이 참이라면, 모든 데이터 상태들에 대해서 "패스" 상태가 제공됨이 없이, 한계값(limit)에 도달한 것이다. 그 결과, 프로그래밍이 실패하였음을 나타내는 표시가 단계 1662에서 세팅된다.
하지만, 결정 단계 1660에서, Nmax 값에 아직 도달하지 못했다면, 펄스 번호 N은 단계 1604에서 증분되며 그리고 상기 프로세스는 상술한 바와 같이, 다음번 프로그래밍 이터레이션으로 진행한다.
가능한 일실시예에서, NA3 값, NB3 값, 및 NC3 값은 동일할 수도 있음을 유의해야 한다.
대안적으로는, 만일 단계 1626이 거짓이라면, 단계 1640, 1642, 1644 가 생략(skip)될 수 있으며, 그리고 단계 1642가 거짓이라면, 단계 1652, 1654, 1656 이 생략될 수 있다. 즉, NA 기준(NA criterion)을 통과하지 못했음을 우리가 알고 있다면, 우리는 NB 및 NC 기준 역시도 통과하지 못할 것이라고 가정할 수 있다. 만일, 충분한 셀들이 A 를 통과하지 못했다면, 이들은 물론 B 및 C도 통과하지 못한다. 이와 유사하게, 만일, 우리가 NB 기준을 통과하지 못했음을 알고 있다면, NC 기준 역시도 통과하지 못할 것이라고 가정할 수 있다. 만일, 충분한 셀들이 B 를 통과하지 못했다면, 이들은 물론 C도 통과하지 못한다. 이러한 접근법은, NB 및 NC를 스캐닝하고 판별하는데 소요되는 시간을 절약할 수 있다. 따라서, NA가 통과(즉, A-상태가 패스됨을 의미)된 이후에 NB 스캐닝이 오직 발생할 수 있으며 그리고 NB가 통과(즉, B-상태가 패스됨을 의미)된 이후에 NC 스캐닝이 오직 발생할 수 있다.
도17a 내지 도17c는 도10a의 프로그래밍 프로세스를 도시하는바, 여기서 페이즈 2의 시작 및/또는 종료 타이밍은 적응형 기준(adaptive criterion)에 기초한다.
도17a에서, 프로그램 동작은 단계 1700에서 시작한다. 단계 1702에서, 도16의 단계 1602와 유사하게, 다양한 파라미터들이 초기화된다. 하지만, Δ2 값이 이용되지는 않는데, 이는 이러한 일례에서, 프로그래밍 동작의 페이즈 2의 종료는, 고정된 수의 프로그래밍 이터레이션들로서가 아니라 적응적으로 결정되기 때문이다. 페이즈 2의 시작은, 기결정된 개수의 프로그래밍 이터레이션들 즉, Δ1에 기초하여 결정될 수 있다. 또는, 페이즈 2의 시작은 적응적으로 결정될 수 있는바, 가령, 도14a의 조건이 충족되는 때 등등과 같이, 적응적으로 결정될 수 있다. 또한, 프로그래밍 동작의 페이즈 1이 설정됨을 나타내기 위하여, PhaseA 와 PhaseB 라고 지칭되는 2개의 파라미터들이 초기화된다. 도14b의 조건이 상태 A 혹은 상태 B 각각에 대하여 충족되는 때 PhaseA 와 PhaseB 는 2로 설정될 수 있으며, 그리고 도14c의 조건이 상태 A 및 B 각각에 대하여 충족되는 때 PhaseA 와 PhaseB 는 3으로 설정될 수 있다. 추가의 상태들을 갖는 구현예에서는 추가의 파라미터들이 적절히 세팅될 수 있다. 이러한 일례에서 페이즈 파라미터는 상태 C에 대해 제공되지 않는데, 이는 오직 하나의 페이즈가 이용되기 때문이다. 단계 1706에서 프로그램 펄스가 인가된다. 결정 단계 1708에서, N ≥ NAVstart 인지의 여부에 대한 판별이 이루어진다. 펄스 번호가 NAVstart에 아직 도달하지 못하였다면, 현재의 프로그래밍 이터레이션에 대해서 검증 동작들이 수행되지 않는다(단계 1710). 하지만, 단계 1708 이 참이라면, 상태 A에 대해서 "패스" 상태가 설정되었는지의 여부에 대한 판별이 결정 단계 1712에서 수행된다. 결정 단계 1712가 참이라면, 계속 단계 1741(a continue step 1741)에 도달한다(도17b 참조). 결정 단계 1712가 거짓이라면, 결정 단계 1714에서 PhaseA 가 평가된다. 단계 1710 이후에, 단계 1743은 도17c의 단계 1790까지 이른다.
PhaseA = 1 이라면, Vva 에서 검증 동작이 수행되지만 VvaL 에서는 수행되지는 않는다(단계 1716). 이에 후속하여 단계 1718에서, 그 임계전압이 Vva 보다 높은 저장소자들의 개수 NA가 판별된다. 이는 도14a의 영역(1402) 내에 있는 저장소자들의 개수에 대응한다. 결정 단계 1720에서, NA > NA1 인지의 여부에 대한 판별이 이루어진다. 결정 단계 1720이 참이라면, PhaseA = 2 로 설정함에 의해서 페이즈 2가 시작된다(단계 1722). 따라서, 페이즈 2는 프로그래밍 동안에 적응적으로 개시된다. 대안적으로는, 단계 1716 이후에, 결정 단계 1724가 이용되어 N ≥ NAVstart + Δ1 의 여부를 판별할 수 있다. 만일, 결정 단계 1724가 참이라면, 단계 1722에서 PhaseA = 2 로 설정된다. 결정 단계 1724가 거짓이라면, 계속 단계(1741)에 도달한다. 이와 유사하게, 만일 결정 단계 1720이 거짓이라면, 계속 단계(1741)에 도달한다.
결정 단계 1714에서, PhaseA = 2 라면, Vva 와 VvaL 에서 검증 동작들이 수행된다(단계 1734). 단계 1736에서, 그 임계전압이 VvaL 보다 낮은 저장소자들의 개수 NAL 이 판별된다. 이는 도14b의 영역(1412) 내에 있는 저장소자들의 개수에 대응한다. 결정 단계 1738에서, NAL < NA2 인지의 여부에 대한 판별이 이루어진다. 결정 단계 1738이 참이라면, PhaseA = 3 으로 설정함에 의해서 페이즈 3이 시작된다(단계 1740). 따라서, 페이즈 3은 프로그래밍 동안에 적응적으로 개시된다. 단계 1738이 거짓이라면, 계속 단계(1741)에 도달한다.
결정 단계 1714에서, PhaseA = 3 이라면, Vva 에서 검증 동작이 수행되지만 VvaL 에서는 수행되지 않는다(단계 1726). 단계 1728에서, 그 임계전압이 Vva 보다 낮은 저장소자들의 개수 NA가 판별된다. 이는 도14c의 영역(1422) 내에 있는 저장소자들의 개수에 대응한다. 결정 단계 1730에서, NA < NA3 인지의 여부에 대한 판별이 이루어진다. 또한, 상기 NA 값은 단계 1720 및 1730에서 다른 측정 값임을 유의해야 한다. 결정 단계 1730이 참이라면, "패스" 상태가 A-상태 저장소자들에 대해서 설정된다. 결정 단계 1730이 거짓이라면, 계속 단계(1741)에 도달한다.
도17b에서는, 계속 단계 1741 이후에, 결정 단계 1742에서 N ≥ NBVstart 인지의 여부에 대한 판별이 이루어지는바, 이것은 검증 동작들이 B-상태에 대해서 개시되어야만 하는지를 판별하기 위한 조건이다. 결정 단계 1742가 참이라면, B-상태 저장소자들에 대해서 "패스" 상태가 설정되었는지의 여부에 대한 판별이 결정 단계 1744에서 수행된다. 결정 단계 1744가 거짓이라면, PhaseB 는 결정 단계 1746에서 평가된다.
만일, PhaseB = 1 이라면, Vvb 에서 검증 동작이 수행되지만 VvbL 에서는 수행되지 않는다(단계 1748). 이에 후속하여 단계 1750에서, 그 임계전압이 Vvb 보다 높은 저장소자들의 개수 NB가 판별된다. 이는 도14a의 영역(1402) 내에 있는 저장소자들의 개수에 대응한다. 결정 단계 1752에서, NB > NB1 인지의 여부에 대한 판별이 이루어진다. 결정 단계 1752가 참이라면, PhaseB = 2 로 설정함에 의해서 페이즈 2가 시작된다(단계 1754). 따라서, 페이즈 2는 프로그래밍 동안에 적응적으로 개시된다. 대안적으로는, 단계 1748 이후에, 결정 단계 1756이 이용되어 N ≥ NBVstart + Δ1 의 여부를 판별할 수 있다. 만일, 결정 단계 1756이 참이라면, 단계 1754에서 PhaseB = 2 로 설정된다. 결정 단계 1756이 거짓이라면, 계속 단계(1774)에 도달한다. 이와 유사하게, 만일 결정 단계 1752가 거짓이라면, 계속 단계(1774)에 도달한다.
결정 단계 1746에서, PhaseB = 2 라면, Vvb 와 VvbL 에서 검증 동작들이 수행된다(단계 1766). 단계 1768에서, 그 임계전압이 VvbL 보다 낮은 저장소자들의 개수 NBL 이 판별된다. 이는 도14b의 영역(1412) 내에 있는 저장소자들의 개수에 대응한다. 결정 단계 1770에서, NBL < NB2 인지의 여부에 대한 판별이 이루어진다. 결정 단계 1770이 참이라면, PhaseB = 3 으로 설정함에 의해서 페이즈 3이 시작된다(단계 1772). 따라서, 페이즈 3은 프로그래밍 동안에 적응적으로 개시된다. 단계 1770이 거짓이라면, 계속 단계(1774)에 도달한다.
결정 단계 1746에서, PhaseB = 3 이라면, Vvb 에서 검증 동작이 수행되지만 VvbL 에서는 수행되지 않는다(단계 1758). 단계 1760에서, 그 임계전압이 Vvb 보다 낮은 저장소자들의 개수 NB가 판별된다. 이는 도14c의 영역(1422) 내에 있는 저장소자들의 개수에 대응한다. 결정 단계 1762에서, NB < NB3 인지의 여부에 대한 판별이 이루어진다. 또한, 상기 NB 값은 단계 1752 및 1762에서 다른 측정 값임을 유의해야 한다. 결정 단계 1762가 참이라면, "패스" 상태가 B-상태 저장소자들에 대해서 설정된다. 결정 단계 1762가 거짓이라면, 계속 단계(1774)에 도달한다.
도17c에서는, 계속 단계 1774 이후에, 결정 단계 1776에서 N ≥ NCVstart 인지의 여부에 대한 판별이 이루어지는바, 이것은 검증 동작들이 C-상태에 대해서 개시되어야만 하는지를 판별하기 위한 조건이다. 결정 단계 1776이 참이라면, Vvc 에서 검증 동작이 수행된다(단계 1780). 이러한 구현예에서는, C-상태에 대해서 오프셋 검증 레벨이 이용되지 않는다. 이에 후속하여 단계 1782에서, 그 임계전압이 Vvc 보다 낮은 저장소자들의 개수 NC가 판별된다. 이는 도14c의 영역(1422) 내에 있는 저장소자들의 개수에 대응한다. 결정 단계 1784에서, NC < NC3 인지의 여부에 대한 판별이 이루어진다. 결정 단계 1784가 참이라면, C-상태 저장소자들에 대해서 "패스" 상태가 설정되며(단계 1786) 그리고 프로그래밍이 종료한다(단계 1788).
결정 단계 1784가 거짓이라면, 결정 단계 1790에서 N ≥ Nmax 인지의 여부에 대한 판별이 이루어진다. 결정 단계 1790이 참이라면, 프로그래밍은 실패한 것인바(단계 1792), 왜냐하면, 모든 상태들이 아직까지 "패스" 상태에 도달하지 못했기 때문이다. 결정 단계 1790이 거짓이라면, 프로그래밍은 단계 1703 으로 진행한다. 도17a를 참조하면, 단계 1703 이후에, 펄스 번호 N이 다음번 프로그래밍 이터레이션에서 증분되며(단계 1704) 그리고 프로그래밍은 전술한 바와 같이 진행된다.
결정 단계 1790은 또한 단계 1743으로부터 도달될 수도 있는바, 단계 1743은 도17b에 도시된 바와 같이 결정 단계 1742에 후속되는 단계이다.
VvaL, VvbL 등의 오프셋 레벨 혹은 Vva, Vvb, Vvc 등의 타겟 레벨과 같은 임계 레벨보다 높거나 낮은 임계전압을 갖는 저장소자들의 개수를 판별함에 있어서, 상당한 숫자의 비트 스캔들을 수행할 필요가 있을 수도 있으며, 이는 성능 저하(performance impact)를 야기할 수 있다. 이러한 문제를 해결하기 위하여 샘플링 기술이 이용될 수도 있는데, 이 경우 낸드 스트링의 가령, 1/4, 1/8, 혹은 1/16(혹은 임의의 다른 분수) 만큼의 제한된 개수의 저장소자들(낸드 스트링들)만에 대해서 비트 스캔이 수행된다. 검출된 저장소자들의 개수는, 선택된 워드라인(또는 페이지) 전체에서 검증 레벨보다 높거나 혹은 낮은 저장소자들의 총 개수에 대한 지표(indication)로서 이용될 수 있다. 이것은 비트라인 스캔 시간을 최소화시킬 수 있으며 따라서 성능 저하를 감소시킬 수 있다. 예를 들어, 만일 우리가 도17a의 단계 1720에서 비트-무시(A)[bit-ignore(A)]가 256개의 저장소자들이 되기를 원한다면, 단계 1718에서 전체 페이지에서 256개의 저장소자들을 검출하는 것은 시간을 너무 소모하는 것이며 그리고 성능 저하를 야기한다라고 결론이 내려질 수도 있다. 이와 반대로, 샘플링의 경우, 비트-스캔은 모든 낸드 스트링들의 예컨대, 1/8에 대해서만 수행되며 그리고 256개의 비트-무시 기준을 이용하는 대신에 상기 비트-무시 기준은 32개(256 곱하기 1/8)로 감소될 수 있다. 이와 같이 적은 개수의 저장소자들은 프로그램 펄스 내에서 검출될 수 있으며, 따라서 전체 프로그래밍 성능에 미치는 영향은 미미할 것이다.
도15에 관련하여 설명한 바와 같이, 비트 스캔은, 저장소자가 오프셋 검증 레벨 혹은 타겟 검증 레벨보다 높거나 혹은 낮은 Vth를 갖는지를 나타내는 래치들을 판독하는 것을 포함한다. 제어기는, 데이터 래치들의 샘플에 대해서 스캔을 수행하며 그리고 비트 수를 카운트한다. 또한, 상태들의 분포는 예컨대, 한 워드라인 상의 저장소자들의 세트에 대해서 균일하다라고 가정될 수 있다. 예를 들어, 도17a의 판독 단계들 1718 및 1720과 1/8 샘플링의 일례에 대해서, A-상태 저장소자들이 비트라인들에 걸쳐서 균일하게 분포된다라고 가정할 수 있다. 제어기는 균일하게 분산된 비트라인들의 임의의 8 분의 1(1/8)을 식별할 수 있으며 따라서, 우리는 그 부분에 있는 A-상태 저장소자들의 개수가 A-상태 저장소자들의 전체 개수의 8분의 1일거라고 예상할 수 있다. 따라서, 우리는 비트라인들의 오직 8분의 1만을 스캔할 수 있으며 그리고 그 임계전압(Vth)이 예컨대, Vva 보다 높은 상기 페이지 상의 저장소자들의 총 개수를 여전히 추산(estimate)할 수 있다.
비트라인들의 식별된 샘플은 임의의 기법에 기초할 수 있다. 예를 들어, 제어기는 비트라인들의 처음 8분의 1(1/8)을 식별할 수 있으며, 혹은 두번째 8분의 1, 혹은 기타등등을 식별할 수도 있다. 다른 옵션에서, 페이지 상에 8 킬로바이트가 있다고 가정하면, 우리는 상기 페이지를 그 각각이 1/8 킬로바이트인 64 개의 섹터들로 분할할 수 있다. 따라서, 상기 비트들의 1/8을 스캔하기 위해서, 섹터 #1, #9, #17, ... 또는 섹터 #2, #10, #18, ... 기타 등등을 스캔할 수 있다. 이러한 접근법은, 비트라인들에 걸쳐서 스캐닝을 분산시킨다. 또 다른 접근법은 인접한 섹터들 1-8, 혹은 9-16, 기타 등등을 스캔하는 것이다. 다양한 조합예도 또한 적용가능하다.
이러한 샘플링은 예컨대, 단계 1624 및 1626, 단계 1640 및 1642, 단계 1652 및 1654, 단계 1718 및 1720, 단계 1728 및 1730, 단계 1736 및 1738, 단계 1750 및 1752, 단계 1760 및 1762, 단계 1768 및 1770, 단계 1782 및 1784, 기타 등등에 적용될 수 있다. 또한, 서로 다른 단계들에서 서로 다른 샘플링 비율들을 이용할 수도 있다. 예를 들면, 서로 다른 데이터 상태들에 대해서 서로 다른 샘플링 비율들이 이용될 수도 있으며, 혹은 오프셋 검증 레벨 대 타겟 검증 레벨에 대해서도 서로 다른 샘플링 비율들이 이용될 수도 있다.
대안적으로는, 단계 1720이 실패라면 단계 1750, 1752, 1760, 1762, 1768 및 1770은 생략될 수 있으며, 그리고 단계 1752가 실패라면 단계 1782 및 1784가 생략될 수 있다. 일반적으로, 불필요한 스캐닝 및 NB와 NC에 대한 불필요한 판별을 회피하기 위해서, PhaseB=1 는 PhaseA=1 이 종료(그리고 PhaseA=2 가 셋팅됨)할 때까지 시작될 필요가 없으며, 그리고 PhaseB=2 는 PhaseA=2 이 종료(그리고 PhaseA=3 이 셋팅됨)할 때까지 시작될 필요가 없다.
전술한 바와 같은 상세한 설명은 예시 및 설명을 위한 목적으로 제공되었다. 하지만 이러한 설명은 개시된 바로 그 실시예만으로 본 발명을 제한하고자 의도된 것이 아니며 혹은 개시된 내용을 속속들이 규명하고자 의도된 것도 아니다. 전술한 가르침에 비추어 볼때 수 많은 수정예들 및 변형예들이 가능하다. 본 발명의 기술적 사상과 그의 실제적인 응용을 최적으로 설명하기 위해, 본 발명의 실시예들이 선택되었다. 따라서, 해당 기술분야의 당업자들은 다양한 실시예들을 통해서 본 발명을 가장 잘 활용할 수 있을 것이며, 고려중인 특정한 용도에 적합한 다양한 변형예들을 가장 잘 활용할 수 있을 것이다. 본 발명의 범위는 첨부된 청구항들에 의해서 정의되어야 한다.

Claims (27)

  1. 비휘발성 저장 시스템의 저장소자들의 세트에 대한 프로그래밍 동작의 복수의 프로그래밍 이터레이션들을 수행하는 방법으로서,
    상기 세트(155)에 대한 N2 개의 프로그래밍 이터레이션들 각각에 대하여, 프로그램 펄스를 인가하고, 데이터 상태에 대한 오프셋 검증 레벨(VvaL, VvbL)을 이용하는 검증 동작을 수행하고, 상기 오프셋 검증 레벨은 상기 데이터 상태에 대한 최종 검증 레벨(Vva, Vvb)로부터 오프셋(offset)되며, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 단계와; 그리고
    상기 세트에 대한 N3 개의 프로그래밍 이터레이션들 각각에 대하여, 상기 N2 개의 프로그래밍 이터레이션들 이후에, 프로그램 펄스를 인가하고, 그리고 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 단계
    를 포함하는 프로그래밍 이터레이션들을 수행하는 방법.
  2. 제1항에 있어서,
    상기 데이터 상태로 프로그래밍될 저장소자들의 상기 세트 중에서 특정한 일부 저장소자들의 임계 레벨들이 상기 오프셋 검증 레벨에 언제 도달하는지를 판별하는 단계와; 그리고
    상기 판별에 기초하여 상기 N3 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  3. 제1항에 있어서,
    저장소자들의 상기 세트 중에서 저장소자들의 샘플을 식별하는 단계와;
    상기 샘플에서 상기 오프셋 검증 레벨에 도달한 임계 레벨들을 갖는 저장소자들의 개수를 판별하는 단계와; 그리고
    상기 개수가 임계값을 초과한다면, 상기 N3 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  4. 제1항에 있어서,
    저장소자들의 상기 세트 중에서 저장소자들의 샘플을 식별하는 단계 -상기 샘플 내의 적어도 하나 이상의 저장소자는 상기 데이터 상태로 프로그래밍될 예정이며- 와;
    상기 샘플에서 상기 오프셋 검증 레벨에 도달한 임계 레벨들을 갖는 저장소자들의 개수를 판별하는 단계와; 그리고
    상기 개수가 임계값을 초과한다면, 상기 N3 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  5. 제1항에 있어서,
    상기 데이터 상태로 프로그래밍될 예정이며 그리고 그 임계 레벨들이 상기 오프셋 검증 레벨에 도달하지 않은 저장소자들의 소정 개수가 임계 개수(threshold number) 보다 아래로 되는 때를 판별하는 단계와; 그리고
    상기 판별에 기초하여, 상기 N3 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  6. 제1항에 있어서,
    저장소자들의 상기 세트 중에서 저장소자들의 샘플을 식별하는 단계와;
    상기 샘플에서 상기 오프셋 검증 레벨에 도달하지 못한 임계 레벨들을 갖는 저장소자들의 개수를 판별하는 단계와; 그리고
    상기 개수가 임계 개수 아래로 떨어지면, 상기 N3 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  7. 제1항에 있어서,
    상기 세트에 대한 N1 개의 프로그래밍 이터레이션들 각각에 대하여, 상기 N2 개의 프로그래밍 이터레이션들 이전에, 프로그램 펄스를 인가하고, 그리고 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  8. 제7항에 있어서,
    상기 N2 개의 프로그래밍 이터레이션들 중 첫번째 이터레이션은, 상기 N1 개의 프로그래밍 이터레이션들 중 첫번째 프로그래밍 이터레이션이 시작된 이후에, 기결정된 개수의 프로그래밍 이터레이션을 시작하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  9. 제7항에 있어서,
    상기 데이터 상태로 프로그래밍될 저장소자들의 상기 세트 중에서 기결정된 개수 이상의 저장소자들이 최종 검증 레벨에서 후속 프로그래밍으로부터 언제 록아웃(lock out)되는지를 판별하는 단계와; 그리고
    상기 판별에 기초하여, 상기 N2 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  10. 제7항에 있어서,
    저장소자들의 상기 세트 중에서 저장소자들의 샘플을 식별하는 단계와;
    상기 샘플에서 상기 최종 검증 레벨에 도달한 임계 레벨들을 갖는 저장소자들의 개수를 판별하는 단계와; 그리고
    상기 개수가 임계값을 초과한다면, 상기 N2 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  11. 제1항에 있어서,
    상기 N2 개의 프로그래밍 이터레이션 이전에 상기 세트에 대하여 적어도 하나의 프로그래밍 이터레이션을 수행하는 단계를 더 포함하되,
    상기 적어도 하나의 프로그래밍 이터레이션에서는, 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행함이 없이, 프로그램 펄스가 인가되는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 프로그램 펄스들, 상기 오프셋 검증 레벨 그리고 상기 최종 검증 레벨은, 저장소자들의 상기 세트와 통신하는 워드라인(WL0 ~ WL63)에 인가되는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  13. 비휘발성 저장 시스템의 저장소자들의 세트에 대한 프로그래밍 동작의 복수의 프로그래밍 이터레이션들을 수행하는 방법으로서,
    상기 세트(155)에 대한 N1 개의 프로그래밍 이터레이션들 각각에 대하여, 프로그램 펄스를 인가하고, 그리고 데이터 상태에 대한 오프셋 검증 레벨(VvaL, VvbL)을 이용하는 검증 동작을 수행함이 없이 상기 데이터 상태에 대한 최종 검증 레벨(Vva, Vvb)을 이용하는 검증 동작을 수행하는 단계 -상기 오프셋 검증 레벨은 상기 최종 검증 레벨로부터 오프셋(offset)되며- 와; 그리고
    상기 세트에 대한 N2 개의 프로그래밍 이터레이션들 각각에 대하여, 상기 N1 개의 프로그래밍 이터레이션들 이후에, 프로그램 펄스를 인가하고, 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행하고, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 단계
    를 포함하는 프로그래밍 이터레이션들을 수행하는 방법.
  14. 제13항에 있어서,
    상기 N1 개의 프로그래밍 이터레이션 이전에 상기 세트에 대하여 적어도 하나의 프로그래밍 이터레이션을 수행하는 단계를 더 포함하되,
    상기 적어도 하나의 프로그래밍 이터레이션에서는, 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행함이 없이, 프로그램 펄스가 인가되는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  15. 제13항에 있어서,
    상기 N2 개의 프로그래밍 이터레이션들 중 첫번째 이터레이션은, 상기 N1 개의 프로그래밍 이터레이션들 중 첫번째 프로그래밍 이터레이션이 시작된 이후에, 기결정된 개수의 프로그래밍 이터레이션을 시작하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  16. 제13항에 있어서,
    상기 데이터 상태로 프로그래밍될 저장소자들의 상기 세트 중에서 기결정된 개수 이상의 저장소자들이 최종 검증 레벨에서 후속 프로그래밍으로부터 언제 록아웃(lock out)되는지를 판별하는 단계와; 그리고
    상기 판별에 기초하여, 상기 N2 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  17. 제13항에 있어서,
    저장소자들의 상기 세트 중에서 저장소자들의 샘플을 식별하는 단계와;
    상기 샘플에서 상기 최종 검증 레벨에 도달한 임계 레벨들을 갖는 저장소자들의 개수를 판별하는 단계와; 그리고
    상기 개수가 임계값을 초과한다면, 상기 N2 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그래밍 이터레이션들을 수행하는 방법.
  18. 비휘발성 저장 시스템으로서,
    비휘발성 저장소자들의 세트와; 그리고
    적어도 하나의 제어회로를 포함하며,
    상기 적어도 하나의 제어회로는, 상기 비휘발성 저장 시스템의 저장소자들의 세트에 대한 프로그래밍 동작의 복수의 프로그래밍 이터레이션들을 수행하기 위하여,
    (a) 상기 세트에 대한 N2 개의 프로그래밍 이터레이션들 각각에 대하여, 프로그램 펄스를 인가하고, 데이터 상태에 대한 오프셋 검증 레벨을 이용하는 검증 동작을 수행하고, 상기 오프셋 검증 레벨은 상기 데이터 상태에 대한 최종 검증 레벨로부터 오프셋(offset)되며, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하며; 그리고
    (b) 상기 세트에 대한 N3 개의 프로그래밍 이터레이션들 각각에 대하여, 상기 N2 개의 프로그래밍 이터레이션들 이후에, 프로그램 펄스를 인가하고, 그리고 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 것을 특징으로 하는 비휘발성 저장 시스템.
  19. 제18항에 있어서,
    상기 적어도 하나의 제어회로는, 상기 데이터 상태로 프로그래밍될 저장소자들의 상기 세트 중에서 특정한 일부 저장소자들의 임계 레벨들이 상기 오프셋 검증 레벨에 언제 도달하는지를 판별하고; 그리고
    상기 적어도 하나의 제어회로는, 상기 판별에 기초하여 상기 N3 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 것을 특징으로 하는 비휘발성 저장 시스템.
  20. 제18항에 있어서,
    상기 적어도 하나의 제어회로는, 상기 데이터 상태로 프로그래밍될 예정이며 그리고 그 임계 레벨들이 상기 오프셋 검증 레벨에 도달하지 않은 저장소자들의 소정 개수가 임계 개수 보다 아래로 되는 때를 판별하고; 그리고
    상기 적어도 하나의 제어회로는, 상기 판별에 기초하여, 상기 N3 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 것을 특징으로 하는 비휘발성 저장 시스템.
  21. 제18항에 있어서,
    상기 적어도 하나의 제어회로는, 상기 데이터 상태로 프로그래밍될 저장소자들의 상기 세트 중에서 기결정된 개수 이상의 저장소자들이 최종 검증 레벨에서 후속 프로그래밍으로부터 언제 록아웃(lock out)되는지를 판별하고; 그리고
    상기 적어도 하나의 제어회로는, 상기 판별에 기초하여, 상기 N2 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 것을 특징으로 하는 비휘발성 저장 시스템.
  22. 제18항에 있어서,
    상기 적어도 하나의 제어회로는, 상기 N2 개의 프로그래밍 이터레이션 이전에 상기 세트에 대하여 적어도 하나의 프로그래밍 이터레이션을 수행하되,
    상기 적어도 하나의 프로그래밍 이터레이션에서는, 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행함이 없이, 프로그램 펄스가 인가되는 것을 특징으로 하는 비휘발성 저장 시스템.
  23. 제18항 내지 제22항 중 어느 한 항에 있어서,
    저장소자들의 상기 세트와 통신하는 워드라인(WL0 ~ WL63)을 더 포함하며,
    상기 프로그램 펄스들, 상기 오프셋 검증 레벨 그리고 상기 최종 검증 레벨은 상기 워드라인에 인가되는 것을 특징으로 하는 비휘발성 저장 시스템.
  24. 비휘발성 저장 시스템으로서,
    비휘발성 저장소자들의 세트와; 그리고
    적어도 하나의 제어회로를 포함하며,
    상기 적어도 하나의 제어회로는, 상기 비휘발성 저장 시스템의 저장소자들의 세트에 대한 프로그래밍 동작의 복수의 프로그래밍 이터레이션들을 수행하기 위하여,
    (a) 상기 세트에 대한 N1 개의 프로그래밍 이터레이션들 각각에 대하여, 프로그램 펄스를 인가하고, 그리고 데이터 상태에 대한 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이 상기 데이터 상태에 대한 최종 검증 레벨을 이용하는 검증 동작을 수행하며, 상기 오프셋 검증 레벨은 상기 최종 검증 레벨로부터 오프셋(offset)되며; 그리고
    (b) 상기 세트에 대한 N2 개의 프로그래밍 이터레이션들 각각에 대하여, 상기 N1 개의 프로그래밍 이터레이션들 이후에, 프로그램 펄스를 인가하고, 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행하고, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행하는 것을 특징으로 하는 비휘발성 저장 시스템.
  25. 제24항에 있어서,
    상기 적어도 하나의 제어회로는, 상기 N1 개의 프로그래밍 이터레이션 이전에 상기 세트에 대하여 적어도 하나의 프로그래밍 이터레이션을 수행하되,
    상기 적어도 하나의 프로그래밍 이터레이션에서는, 상기 오프셋 검증 레벨을 이용하는 검증 동작을 수행함이 없이, 그리고 상기 최종 검증 레벨을 이용하는 검증 동작을 수행함이 없이, 프로그램 펄스가 인가되는 것을 특징으로 하는 비휘발성 저장 시스템.
  26. 제24항에 있어서,
    상기 N2 개의 프로그래밍 이터레이션들 중 첫번째 이터레이션은, 상기 N1 개의 프로그래밍 이터레이션들 중 첫번째 프로그래밍 이터레이션이 시작된 이후에, 기결정된 개수의 프로그래밍 이터레이션을 시작하는 것을 특징으로 하는 비휘발성 저장 시스템.
  27. 제24항에 있어서,
    상기 적어도 하나의 제어회로는, 상기 데이터 상태로 프로그래밍될 저장소자들의 상기 세트 중에서 기결정된 개수 이상의 저장소자들이 최종 검증 레벨에서 후속 프로그래밍으로부터 언제 록아웃(lock out)되는지를 판별하고; 그리고
    상기 적어도 하나의 제어회로는, 상기 판별에 기초하여, 상기 N2 개의 프로그래밍 이터레이션들 중에서 첫번째 프로그래밍 이터레이션을 시작하는 것을 특징으로 하는 비휘발성 저장 시스템.
KR1020127016563A 2009-11-25 2010-11-22 감소된 개수의 검증 동작들을 이용한 비휘발성 메모리의 프로그래밍 KR101697271B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/625,883 US8223556B2 (en) 2009-11-25 2009-11-25 Programming non-volatile memory with a reduced number of verify operations
US12/625,883 2009-11-25
PCT/US2010/057666 WO2011066234A1 (en) 2009-11-25 2010-11-22 Programming non-volatile memory with reduced number of verify operations

Publications (2)

Publication Number Publication Date
KR20120117793A true KR20120117793A (ko) 2012-10-24
KR101697271B1 KR101697271B1 (ko) 2017-01-17

Family

ID=43446384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127016563A KR101697271B1 (ko) 2009-11-25 2010-11-22 감소된 개수의 검증 동작들을 이용한 비휘발성 메모리의 프로그래밍

Country Status (7)

Country Link
US (1) US8223556B2 (ko)
EP (1) EP2504838B1 (ko)
JP (1) JP5529975B2 (ko)
KR (1) KR101697271B1 (ko)
CN (1) CN102725798B (ko)
TW (1) TW201145291A (ko)
WO (1) WO2011066234A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150091667A (ko) * 2014-02-03 2015-08-12 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 워드라인 구동 방법
KR20160025076A (ko) * 2014-08-25 2016-03-08 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 검증 방법
US9747977B2 (en) 2013-03-14 2017-08-29 Intel Corporation Methods and systems for verifying cell programming in phase change memory
KR20210105794A (ko) * 2020-02-19 2021-08-27 샌디스크 테크놀로지스 엘엘씨 프로그램 검증 스킵을 갖는 비휘발성 메모리

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101633018B1 (ko) * 2009-12-28 2016-06-24 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US8432740B2 (en) 2011-07-21 2013-04-30 Sandisk Technologies Inc. Program algorithm with staircase waveform decomposed into multiple passes
KR101942863B1 (ko) 2012-06-19 2019-01-28 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US8953386B2 (en) 2012-10-25 2015-02-10 Sandisk Technologies Inc. Dynamic bit line bias for programming non-volatile memory
US9431126B2 (en) * 2013-03-14 2016-08-30 Silicon Storage Technology, Inc. Non-volatile memory program algorithm device and method
KR102179270B1 (ko) 2014-07-23 2020-11-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법
KR102116671B1 (ko) * 2014-07-30 2020-06-01 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 워드 라인 구동 방법
KR102271462B1 (ko) 2015-01-13 2021-07-05 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 및 그것의 프로그램 방법
US9875805B2 (en) 2015-01-23 2018-01-23 Sandisk Technologies Llc Double lockout in non-volatile memory
US9548130B2 (en) 2015-04-08 2017-01-17 Sandisk Technologies Llc Non-volatile memory with prior state sensing
US9570179B2 (en) 2015-04-22 2017-02-14 Sandisk Technologies Llc Non-volatile memory with two phased programming
US10014063B2 (en) 2015-10-30 2018-07-03 Sandisk Technologies Llc Smart skip verify mode for programming a memory device
KR102473167B1 (ko) 2015-12-18 2022-12-02 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
JP6490018B2 (ja) * 2016-02-12 2019-03-27 東芝メモリ株式会社 半導体記憶装置
US9721672B1 (en) 2016-04-15 2017-08-01 Sandisk Technologies Llc Multi-die programming with die-jumping induced periodic delays
KR102565888B1 (ko) 2016-09-12 2023-08-11 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
JP6503395B2 (ja) * 2016-10-12 2019-04-17 イーメモリー テクノロジー インコーポレイテッド 静電放電回路
US10249382B2 (en) 2017-08-22 2019-04-02 Sandisk Technologies Llc Determination of fast to program word lines in non-volatile memory
US10535412B2 (en) 2018-02-09 2020-01-14 Sandisk Technologies Llc Single pulse verification of memory cells
US10381095B1 (en) 2018-02-28 2019-08-13 Sandisk Technologies Llc Non-volatile memory with smart erase verify
CN110556144B (zh) * 2018-05-31 2021-04-06 旺宏电子股份有限公司 存储器装置的编程方法
CN110556145A (zh) * 2018-06-01 2019-12-10 北京兆易创新科技股份有限公司 一种存储单元的编程方法、装置、电子设备及存储介质
US10910075B2 (en) 2018-11-13 2021-02-02 Sandisk Technologies Llc Programming process combining adaptive verify with normal and slow programming speeds in a memory device
US10748622B2 (en) 2019-01-21 2020-08-18 Sandisk Technologies Llc State adaptive predictive programming
CN111863100A (zh) * 2019-04-29 2020-10-30 北京兆易创新科技股份有限公司 一种非易失性存储器的编程方法和装置
CN110678926B (zh) 2019-08-28 2021-07-16 长江存储科技有限责任公司 闪速存储器件中的编程方法
US11244734B2 (en) * 2019-12-27 2022-02-08 Sandisk Technologies Llc Modified verify scheme for programming a memory apparatus
US11417400B2 (en) 2020-01-31 2022-08-16 Sandisk Technologies Llc Controlling timing and ramp rate of program-inhibit voltage signal during programming to optimize peak current
KR20210111584A (ko) * 2020-03-03 2021-09-13 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
US11468950B1 (en) 2021-04-15 2022-10-11 Sandisk Technologies Llc Memory programming with selectively skipped bitscans and fewer verify pulses for performance improvement
US11475959B1 (en) * 2021-06-30 2022-10-18 Sandisk Technologies Llc Reduced program time for memory cells using negative bit line voltage for enhanced step up of program bias
US11887670B2 (en) * 2021-08-19 2024-01-30 Sandisk Technologies Llc Controlling bit line pre-charge voltage separately for multi-level memory cells and single-level memory cells to reduce peak current consumption
US11942157B2 (en) * 2022-03-17 2024-03-26 Sandisk Technologies Llc Variable bit line bias for nonvolatile memory
US11887677B2 (en) 2022-03-22 2024-01-30 Sandisk Technologies Llc Quick pass write programming techniques in a memory device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007510252A (ja) * 2003-10-29 2007-04-19 サイファン・セミコンダクターズ・リミテッド 不揮発性メモリアレイをプログラムする方法、システム及び回路
KR20070054594A (ko) * 2004-01-21 2007-05-29 샌디스크 코포레이션 비휘발성 메모리 프로그래밍
KR20080089335A (ko) * 2005-10-27 2008-10-06 샌디스크 코포레이션 스마트 검증을 이용한 다중 상태 비휘발성 메모리프로그래밍 방법
WO2009111158A2 (en) * 2008-02-29 2009-09-11 Micron Technology, Inc. Charge loss compensation during programming of a memory device

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6005805A (en) 1994-12-27 1999-12-21 Nkk Corporation Nonvolatile semiconductor device with a verify function
JP2000163976A (ja) * 1998-11-30 2000-06-16 Sony Corp 不揮発性半導体記憶装置および不揮発性半導体記憶装置のベリファイ方法
US7073103B2 (en) * 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US7366022B2 (en) 2005-10-27 2008-04-29 Sandisk Corporation Apparatus for programming of multi-state non-volatile memory using smart verify
US7301817B2 (en) * 2005-10-27 2007-11-27 Sandisk Corporation Method for programming of multi-state non-volatile memory using smart verify
KR101317625B1 (ko) * 2005-12-29 2013-10-10 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리에서 향상된 프로그램-검증 작동을 위한방법 및 장치
US7224614B1 (en) * 2005-12-29 2007-05-29 Sandisk Corporation Methods for improved program-verify operations in non-volatile memories
US7310255B2 (en) 2005-12-29 2007-12-18 Sandisk Corporation Non-volatile memory with improved program-verify operations
US20070177428A1 (en) 2006-01-30 2007-08-02 Zeev Cohen Memory circuit arrangement and method for reading and/or verifying the status of memory cells of a memory cell array
US7564718B2 (en) 2006-04-12 2009-07-21 Infineon Technologies Flash Gmbh & Co. Kg Method for programming a block of memory cells, non-volatile memory device and memory card device
US7304893B1 (en) 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
US7457144B2 (en) 2006-07-19 2008-11-25 Qimonda Flash Gmbh & Co. Kg Memory device and method for verifying information stored in memory cells
US7525838B2 (en) 2006-08-30 2009-04-28 Samsung Electronics Co., Ltd. Flash memory device and method for programming multi-level cells in the same
US7619930B2 (en) 2007-02-20 2009-11-17 Sandisk Corporation Dynamic verify based on threshold voltage distribution
KR20100028019A (ko) * 2007-04-10 2010-03-11 쌘디스크 코포레이션 비휘발성 메모리 및 예측 프로그래밍 방법
US7688638B2 (en) 2007-12-07 2010-03-30 Sandisk Corporation Faster programming of multi-level non-volatile storage through reduced verify operations
CN102027548B (zh) * 2008-04-29 2014-01-01 桑迪士克以色列有限公司 具有用于编程、验证和读取的参考电压电平的适应性设置的非易失性多电平存储器
JP5172555B2 (ja) * 2008-09-08 2013-03-27 株式会社東芝 半導体記憶装置
KR101005117B1 (ko) * 2009-01-23 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 장치의 동작 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007510252A (ja) * 2003-10-29 2007-04-19 サイファン・セミコンダクターズ・リミテッド 不揮発性メモリアレイをプログラムする方法、システム及び回路
KR20070054594A (ko) * 2004-01-21 2007-05-29 샌디스크 코포레이션 비휘발성 메모리 프로그래밍
KR20080089335A (ko) * 2005-10-27 2008-10-06 샌디스크 코포레이션 스마트 검증을 이용한 다중 상태 비휘발성 메모리프로그래밍 방법
WO2009111158A2 (en) * 2008-02-29 2009-09-11 Micron Technology, Inc. Charge loss compensation during programming of a memory device

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9747977B2 (en) 2013-03-14 2017-08-29 Intel Corporation Methods and systems for verifying cell programming in phase change memory
KR20170129957A (ko) * 2013-03-14 2017-11-27 인텔 코포레이션 셀 프로그래밍 검증
US10325652B2 (en) 2013-03-14 2019-06-18 Intel Corporation Cell programming verification
KR20150091667A (ko) * 2014-02-03 2015-08-12 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 워드라인 구동 방법
KR20160025076A (ko) * 2014-08-25 2016-03-08 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 검증 방법
KR20210105794A (ko) * 2020-02-19 2021-08-27 샌디스크 테크놀로지스 엘엘씨 프로그램 검증 스킵을 갖는 비휘발성 메모리

Also Published As

Publication number Publication date
US20110122692A1 (en) 2011-05-26
TW201145291A (en) 2011-12-16
JP5529975B2 (ja) 2014-06-25
KR101697271B1 (ko) 2017-01-17
US8223556B2 (en) 2012-07-17
CN102725798A (zh) 2012-10-10
CN102725798B (zh) 2016-06-08
EP2504838A1 (en) 2012-10-03
EP2504838B1 (en) 2016-12-21
WO2011066234A1 (en) 2011-06-03
JP2013512534A (ja) 2013-04-11

Similar Documents

Publication Publication Date Title
KR101697271B1 (ko) 감소된 개수의 검증 동작들을 이용한 비휘발성 메모리의 프로그래밍
KR101787802B1 (ko) 비트 라인 전압 스텝 업을 이용한 비휘발성 메모리의 프로그래밍
US8045375B2 (en) Programming non-volatile memory with high resolution variable initial programming pulse
US7492634B2 (en) Method for programming of multi-state non-volatile memory using smart verify
US9036417B2 (en) On chip dynamic read level scan and error detection for nonvolatile storage
US7606079B2 (en) Reducing power consumption during read operations in non-volatile storage
US7800956B2 (en) Programming algorithm to reduce disturb with minimal extra time penalty
US8054691B2 (en) Detecting the completion of programming for non-volatile storage
US7366022B2 (en) Apparatus for programming of multi-state non-volatile memory using smart verify
US7839687B2 (en) Multi-pass programming for memory using word line coupling
US8369156B2 (en) Fast random access to non-volatile storage
US7440327B1 (en) Non-volatile storage with reduced power consumption during read operations
USRE45544E1 (en) Saw-shaped multi-pulse programming for program noise reduction in memory
KR20120062734A (ko) 패스 전압 디스터브 및 플로팅 게이트 제어 게이트간 누설이 감소되는 메모리 프로그래밍
WO2014120943A1 (en) Adaptive initial program voltage for non-volatile memory
KR20100024918A (ko) 비휘발성 저장소자의 판독 동작 동안에 파워 소모의 감소

Legal Events

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