KR20110049782A - 최소 여분 시간 패널티를 갖는 혼란을 감소시키기 위한 개선된 프로그래밍 알고리즘 - Google Patents

최소 여분 시간 패널티를 갖는 혼란을 감소시키기 위한 개선된 프로그래밍 알고리즘 Download PDF

Info

Publication number
KR20110049782A
KR20110049782A KR1020117002197A KR20117002197A KR20110049782A KR 20110049782 A KR20110049782 A KR 20110049782A KR 1020117002197 A KR1020117002197 A KR 1020117002197A KR 20117002197 A KR20117002197 A KR 20117002197A KR 20110049782 A KR20110049782 A KR 20110049782A
Authority
KR
South Korea
Prior art keywords
programming
reservoirs
program
state
cells
Prior art date
Application number
KR1020117002197A
Other languages
English (en)
Other versions
KR101546460B1 (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 KR20110049782A publication Critical patent/KR20110049782A/ko
Application granted granted Critical
Publication of KR101546460B1 publication Critical patent/KR101546460B1/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
    • 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
    • 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 프로그래밍 패스에서, 그들 모두가 그들의 상대적인 의도된 상태들에 도달할 때까지, 상기 빠른 하이 상태 셀들은 다른 것, 즉 낮은 상태 셀들과 함께 프로그래밍된다. 시간 절약은 상기 제1 프로그래밍 패스에서 프로그래밍된 모든 하이 상태 셀들에서의 방식들을 비교하여 실현된다.

Description

최소 여분 시간 패널티를 갖는 혼란을 감소시키기 위한 개선된 프로그래밍 알고리즘{IMPROVED PROGRAMMING ALGORITHM TO REDUCE DISTURB WITH MINIMAL EXTRA TIME PENALTY}
본 발명은 비휘발성 메모리에 관한 것이다.
반도체 메모리는 다양한 전자 디바이스들에서 더욱 일반적으로 사용된다. 예를 들어, 비휘발성 반도체 메모리(non-volatile semiconductor memory)는 셀룰러 전화기들, 디지털 카메라들, 개인 휴대 정보 단말기들(personal digital assistants : PDA), 이동 컴퓨팅 디바이스들(mobile computing devices), 고정형 컴퓨팅 디바이스들(non-mobile computing devices) 및, 다른 디바이스들에서 사용된다. 전기적 소거 및 프로그램 가능 읽기 전용 메모리(Electrically Erasable Programmable Read Only Memory : EEPROM)와 플래시 메모리(flash memory)는 가장 일반적인 비휘발성 반도체 메모리들 중에 하나이다. 플래시 메모리와 함께, 또한 EEPROM의 타입, 전체 메모리 어레이의 콘텐츠들, 또는 메모리 일부의 콘텐츠들은, 전통적인, 전-기능 EEPROM(full-featured EEPROM)과는 달리, 원 스텝(one step)으로 소거될 수 있다.
전통적인 EEPROM과 플래시 메모리는 반도체 기판에서 채널 영역 위에 위치되고 상기 채널 영역과 절연되는 플로팅 게이트(floating gate)를 사용한다. 플로팅 게이트는 소스(source)와 드레인(drain) 영역들 사이에 위치된다. 제어 게이트는 플로팅 게이트 위에 제공되고 상기 플로팅 게이트와 절연된다. 따라서, 형성된 트랜지스터의 임계 전압(VTH)은 플로팅 게이트에 유지되는 전하량에 의해서 제어된다. 즉, 그의 소스와 드레인 사이의 전도(conduction)를 허용하기 위해 트랜지스터가 턴온되기 전에 제어 게이트에 인가되어야만 하는 최소 전압 양은, 플로팅 게이트 상의 전하 레벨에 의해 제어된다.
일부 EEPROM과 플래시 메모리 디바이스들은 2개 범위의 전하들을 저장하기 위해 사용되는 플로팅 게이트를 가진다. 그러므로 메모리 소자는 예를 들어, 소거된 상태(erased state)와 프로그래밍된 상태(programmed state)인, 2개 상태들 간에 프로그래밍되거나/소거될 수 있다. 그러한 플래시 메모리 디바이스는 때때로 각각의 메모리 소자가 1 비트의 데이터를 저장할 수 있기 때문에 바이너리 플래시 메모리 디바이스(binary flash memory device)에 인용된다.
다중-상태 (또한, 다중-레벨이라 부름) 플래시 메모리 디바이스는 다수개의 상이한 허용된/유효한 프로그래밍된 임계 전압 범위들을 식별함으로써 구현된다. 각각의 상이한 임계 전압 범위는 메모리 디바이스에 인코딩된 데이터 비트들의 세트의 미리 결정된 값에 대응한다. 예를 들어, 소자가 4개의 상이한 임계 전압 범위들에 대응하는 4개의 이산 전하 대역들(four discrete charge bands) 중 어느 하나에 위치될 때, 각각의 메모리 소자는 2 비트의 데이터를 저장할 수 있다.
전형적으로, 프로그램 동작(program operation) 동안 제어 게이트에 인가되는 프로그램 전압(VPGM)은, 시간에 대해 그 크기가 증가하는 일련의 펄스들로서 인가된다. 하나의 가능한 방식에서, 펄스들의 크기는 각각의 연속된 펄스에 대해서 0.2V 내지 0.4V 정도의 미리 결정된 스텝 사이즈만큼 증가된다. VPGM은 플래시 메모리 소자들의 제어 게이트들에 인가될 수 있다. 프로그램 펄스들 사이의 기간들(주기들) 동안에, 검증 동작들(verify operations)이 수행된다. 즉, 병렬로 프로그래밍되는 소자들의 그룹의 각각의 소자의 프로그래밍 레벨은 연속적인 프로그래밍 펄스들 사이에서 판독되어, 각각의 소자의 프로그래밍 레벨이 소자가 프로그래밍될 예정인 검증 레벨과 같거나 또는 이보다 더 큰지를 판별한다. 다중-상태 플래시 메모리 소자들의 어레이들의 경우에는, 검증 단계는 소자의 상태별로 수행되어, 소자가 그의 데이터-관련된 검증 레벨에 도달했는지를 판별할 수 있다. 예를 들어, 4개의 상태들로 데이터를 저장할 수 있는 다중-상태 메모리 소자는 3개의 비교 포인트들(three compare points)에 대해 검증 동작들을 수행할 필요가 있을 수 있다.
또한, EEPROM 또는 NAND 스트링(NAND string)의 NAND 플래시 메모리 디바이스(NAND flash memory device)와 같은 플래시 메모리 디바이스를 프로그래밍할 때, 전형적으로 VPGM이 제어 게이트에 인가되고, 비트라인(bit line)이 접지되는바, 이는 셀 또는 메모리 소자(예를 들어, 저장소자)의 채널로부터 플로팅 게이트로 전자들이 주입되게 한다. 전자들이 플로팅 게이트에 축적될 때, 플로팅 게이트는 음으로 충전되고, 메모리 소자의 임계 전압은 상승하며, 이에 따라, 메모리 소자는 프로그래밍된 상태에 있는 것으로 고려된다. 이러한 프로그래밍에 관한 더 많은 정보는 미국등록특허번호 제6,859,397호와 미국등록특허번호 6,917,542호에서 찾아볼 수 있으며, 상기 두 개의 미국등록특허는 본 발명에 대한 참조로서 그 전체 내용이 본 명세서에 통합된다.
하지만, 계속해서 문제가 되는 한 가지 이슈는 프로그램 혼란(program disturb)이다. 프로그램 혼란은 다른 NAND 스트링들의 프로그래밍 동안에 금지된 NAND 스트링들에서 일어날 수 있으며, 때때로 프로그래밍된 NAND 스트링 그 자신에서도 일어날 수 있다. 비선택된 비휘발성 저장소자의 임계 전압이, 다른 비휘발성 저장소자들의 프로그래밍 때문에 시프트될 때, 프로그램 혼란이 일어난다. 프로그램 혼란은 아직 프로그래밍되지 않은 소거된 저장소자들뿐만 아니라 이전에 프로그래밍된 저장소자들 상에서 일어날 수 있다. 다중-패스 프로그래밍 기술들은 더욱 점차적으로 저장소자들을 프로그래밍함으로써 프로그램 혼란을 감소시킬 수 있다. 하지만, 프로그래밍 시간은 증가된다.
본 발명은 프로그래밍 기술을 제공함으로써 앞선 그리고 다른 이슈들을 어드레스하며, 이는 비휘발성 저장 시스템에서 프로그램 혼란을 감소시키며, 또한 프로그래밍 시간을 감소시킨다.
일 실시예에서, 비휘발성 저장소자를 동작시키는 방법은, 프로그래밍되지 않게 적어도 제 2 세트의 저장소자들을 록 아웃(lock out)하면서, 저속 및 고속 프로그래밍 저장소자들을 구별하기 위해 제 1 검증 레벨에서 오프셋을 뺀 값을 이용하여 제 1 세트의 저장소자들에 대해 프로그래밍 동작들을 수행하는 단계를 포함한다. 상기 방법은, 상기 제 1 검증 레벨을 이용하여 상기 저속 프로그래밍 저장소자들에 대해 프로그래밍을 계속하고 그리고 적어도 상기 제 2 세트의 저장소자들을 계속하여 록 아웃하면서, 상기 고속 프로그래밍 저장소자들을 록 아웃하는 단계를 더 포함한다. 상기 방법은, 상기 제 1 검증 레벨을 이용하여 상기 고속 프로그래밍 저장소자들에 대한 프로그래밍을 재개하고 그리고 상기 제 1 검증 레벨에서 오프셋을 뺀 값보다 작은 제 2 검증 레벨을 적어도 이용하여 상기 적어도 제 2 세트의 저장소자들을 프로그래밍하면서, 상기 저속 프로그래밍 저장소자들을 록 아웃하는 단계를 더 포함한다.
다른 실시예에서, 비휘발성 저장소자를 동작시키는 방법은, 제 1 검증 레벨보다 아래인, 제 2 및 제 3 검증 레벨에 각각 관련된 적어도 제 2 및 제 3 데이터 상태로 프로그래밍되도록 의도된 다른 저장소자들을 프로그래밍되지 않게 록 아웃하면서, 제 1 검증 레벨과 관련된 제 1 데이터 상태로 프로그래밍되도록 의도된 저장소자들을 프로그래밍하는 단계를 포함한다. 상기 방법은, 상기 프로그래밍하는 동안, 상기 제 1 데이터 상태로 프로그래밍되도록 의도된 저장소자들 중에서 저속 및 고속 프로그래밍 저장소자들을 구별하는 단계와, 그리고 상기 저속 프로그래밍 저장소자들에 대한 프로그래밍을 계속하는 동안 상기 고속 프로그래밍 저장소자들을 록 아웃하는 단계를 더 포함한다. 상기 방법은, 상기 고속 프로그래밍 저장소자들을 상기 제 1 데이터 상태로 프로그래밍하는 것을 재개하면서, 적어도 제 2 및 제 3 데이터 상태로 적어도 제 2 세트의 저장소자들을 후속으로 프로그래밍하는 단계와, 그리고 상기 저속 프로그래밍 저장소자들의 프로그래밍을 지속하기 위한 프로그래밍 조건을 적용하는 단계를 더 포함하며, 상기 상기 저속 프로그래밍 저장소자들의 프로그래밍을 지속하기 위한 프로그래밍 조건과 상기 고속 프로그래밍 저장소자들의 프로그래밍을 재개하기 위한 프로그래밍 조건은 서로 다르다.
다른 실시예에서, 비휘발성 스토리지를 동작시키기 위한 방법은, a) 제 1 검증 레벨보다 아래인, 제 2 및 제 3 검증 레벨에 각각 관련된 적어도 제 2 및 제 3 데이터 상태로 프로그래밍되도록 의도된 다른 저장소자들을 프로그래밍되지 않게 록 아웃하면서, 제 1 검증 레벨과 관련된 제 1 데이터 상태로 프로그래밍되도록 의도된 저장소자들을 프로그래밍하는 단계를 포함한다. 상기 방법은, b) 적어도 제 2 세트의 저장소자들을 후속으로 프로그래밍하는 단계를 더 포함하며, 상기 단계 a)는 단계 b)의 프로그래밍 조건과는 다른 프로그래밍 조건을 사용한다.
다른 실시예에서, 비휘발성 저장 시스템은 제 1 세트의 저장소자들과, 그리고 상기 제 1 세트의 저장소자들과 통신하는 적어도 하나의 제어 회로를 포함한다. 상기 적어도 하나의 제어회로는 a) 프로그래밍되지 않게 적어도 제 2 세트의 저장소자들을 록 아웃(lock out)하면서, 저속 및 고속 프로그래밍 저장소자들을 구별하기 위해 제 1 검증 레벨에서 오프셋을 뺀 값을 이용하여 상기 제 1 세트의 저장소자들에 대해 프로그래밍 동작들을 수행하며, b) 상기 제 1 검증 레벨을 이용하여 상기 저속 프로그래밍 저장소자들에 대한 프로그래밍을 계속하고 그리고 적어도 상기 제 2 세트의 저장소자들을 계속하여 록 아웃하면서, 상기 고속 프로그래밍 저장소자들을 록 아웃하며, 그리고 c) 상기 제 1 검증 레벨을 이용하여 상기 고속 프로그래밍 저장소자들에 대한 프로그래밍을 재개하고 그리고 상기 제 1 검증 레벨에서 오프셋을 뺀 값보다 작은 제 2 검증 레벨을 적어도 이용하여 상기 적어도 제 2 세트의 저장소자들을 프로그래밍하면서, 상기 저속 프로그래밍 저장소자들을 록 아웃한다.
본 명세서에 제공되는 방법들을 수행하기 위한 대응하는 방법들, 시스템들 및, 컴퓨터- 또는 프로세서-읽기 가능한 저장 디바이스들이 제공될 수 있다.
도 1은 NAND 스트링의 평면도이다.
도 2는 도 1의 NAND 스트링의 등가 회로도이다.
도 3은 NAND 플래시 저장소자들의 어레이의 블록 다이어그램이다.
도 4는 기판 상에 형성되는 NAND 스트링의 단면도를 나타낸 도이다.
도 5a 내지 도 5e는 최상위 상태가 하위 상태들 전에 프로그래밍되는 다중패스 프로그래밍 기술에서 저장소자들의 임계 전압들을 나타낸 도이다.
도 6a 내지 도 6g는 최상위 상태가 하위 상태들 전에 프로그래밍되는 수정된 다중-패스 프로그래밍 기술에서 저장소자들의 임계 전압 분포들을 나타낸 도이다.
도 7a는 도 5a 내지 도 5d에 대응하는 프로그래밍 시퀀스에서 프로그램 및 검증 전압을 나타낸 도이다.
도 7b는 도 5e에 대응하는 프로그래밍 시퀀스에서 프로그램 및 검증 전압을 나타낸 도이다.
도 7c는 도 6a 내지 도 6d에 대응하는 프로그래밍 시퀀스에서 프로그램 및 검증 전압을 나타낸 도이다.
도 7d는 도 6e 및 도 6f에 대응하는 프로그래밍 시퀀스에서 프로그램 및 검증 전압을 나타낸 도이다.
도 8a와 도 8b는 도 6a 내지 도 6g에 대응하는 프로그래밍 프로세스를 나타낸다.
도 9a는 서로 다른 프로그래밍 조건이 각각의 패스에 사용되는 다중-패스 프로그래밍 프로세스를 나타낸다.
도 9b는 상위 상태 셀들이 하위 상태 셀들 전에 프로그래밍되는 다중-패스 프로그래밍 프로세스를 나타낸다.
도 10은 3개의 여러 가지 프로그래밍 기술들에 대한 프로그램 펄스 개수 대 검증 레벨 관계의 테이블을 나타낸 도이다.
도 11은 NAND 플래시 저장소자들의 어레이의 블록 다이어그램이다.
도 12는 단일 행/열 디코더들 그리고 읽기/쓰기 회로들을 이용하는 비휘발성 메모리 시스템의 블록 다이어그램이다.
도 13은 듀얼 행/열 디코더들 그리고 읽기/쓰기 회로들을 이용하는 비휘발성 메모리 시스템의 블록 다이어그램이다.
도 14는 감지 블록의 일 실시예를 나타내는 블록 다이어그램이다.
도 15는 모든 비트라인 메모리 아키텍처 또는 홀수-짝수 메모리 아키텍처에 대해 블록들로 나눈 메모리 어레이의 구성의 예제를 나타낸 도이다.
도 16은 임계 전압 분포들의 예제 세트와 하나의-패스 프로그래밍을 나타낸 도이다.
도 17은 임계 전압 분포들의 예제 세트와 2개의-패스 프로그래밍을 나타낸 도이다.
도 18a 내지 도 18c는 다양한 임계 전압 분포들을 나타내고, 비휘발성 메모리를 프로그래밍하는 과정을 설명한다.
본 발명은 프로그래밍 기술을 제공하며, 이는 비휘발성 저장 시스템에서 프로그램 혼란을 감소시키며, 또한 프로그래밍 시간을 감소시킨다.
본 발명을 구현하기에 적당한 메모리 시스템의 일 예는 NAND 플래시 메모리 구조를 사용하며, 이는 2개의 선택 게이트들(two select gates) 사이에 직렬로 다중 트랜지스터들을 배열하는 것을 포함한다. 직렬 트랜지스터들과 선택 게이트들은 NAND 스트링이라 부른다. 도 1은 하나의 NAND 스트링의 평면도이다. 도 2는 도 1의 등가 회로이다. 도 1과 도 2에 도시된 NAND 스트링은 직렬로 배치된 4개의 트랜지스터들(100, 102, 104, 106)을 포함하고, 상기 트랜지스터들은 제1 선택 게이트(120)와 제2 선택 게이트(122) 사이에 배치된다. 선택 게이트(120)는 NAND 스트링과 비트라인(126)과의 연결을 게이팅한다. 선택 게이트(122)는 NAND 스트링과 소스 라인(128)과의 연결을 게이팅한다. 선택 게이트(120)는 제어 게이트(control gate)(120CG)에 적당한 전압들을 인가함으로써 제어된다. 선택 게이트(122)는 제어 게이트(122CG)에 적당한 전압들을 인가함으로써 제어된다. 각각의 트랜지스터들(100, 102, 104, 106)은 제어 게이트와 플로팅 게이트를 갖는다. 트랜지스터(100)는 제어 게이트(100CG)와 플로팅 게이트(100FG)를 갖는다. 트랜지스터(102)는 제어 게이트(102CG)와 플로팅 게이트(102FG)를 갖는다. 트랜지스터(104)는 제어 게이트(104CG)와 플로팅 게이트(104FG)를 갖는다. 트랜지스터(106)는 제어 게이트(106CG)와 플로팅 게이트(106FG)를 갖는다. 제어 게이트(100CG)는 워드라인(WL3)에 연결되며, 제어 게이트(102CG)는 워드라인(WL2)에 연결되며, 제어 게이트(104CG)는 워드라인(WL1)에 연결되며, 제어 게이트(106CG)는 워드라인(WL0)에 연결된다. 일 실시예에서, 트랜지스터들(100, 102, 104, 106)은 또한 메모리 셀들(memory cells)이라 부르는, 각각의 저장소자들이다. 다른 실시예들에서, 저장소자들은 다중 트랜지스터들을 포함할 수 있으며 또는, 도 1 및 도 2에 도시된 것과 다를 수도 있다. 선택 게이트(120)는 선택 라인(select line) SDG에 연결된다. 선택 게이트(122)는 선택 라인 SGS에 연결된다.
도 3은 3개의 NAND 스트링들을 도시한 회로도이다. NAND 구조를 이용하는 플래시 메모리 시스템을 위한 일반적인 아키텍처(architecture)는 복수의 NAND 스트링들을 포함할 수 있다. 예를 들어, 3개의 NAND 스트링들(320, 340, 360)이 더 많은 NAND 스트링들을 갖는 메모리 어레이에 도시된다. 개개의 NAND 스트링들은 2 개의 선택 게이트들과 4개의 저장소자들을 포함한다. 4개의 저장소자들이 간단하게 도시되어 있지만, 현대의 NAND 스트링들은 예를 들어, 32개 또는 64개까지 저장소자들을 가질 수 있다.
예를 들어, NAND 스트링(320)은 선택 게이트들(322와 327)과 저장소자들(323 내지 326)을 포함하며, NAND 스트링(340)은 선택 게이트들(342와 347)과 저장소자들(343 내지 346)을 포함하며, NAND 스트링(360)은 선택 게이트들(362와 367)과 저장소자들(363 내지 366)을 포함한다. 각각의 NAND 스트링은 그의 선택 게이트들 (예를 들어, 선택 게이트들(327, 347 또는, 367))에 의해 소스 라인에 연결된다. 선택 라인(SGS)은 소스측 선택 게이트들을 제어하기 위해 사용된다. 다양한 NAND 스트링들(320, 340, 360)은 선택 게이트들(322, 342, 362 등)에서 선택 트랜지스터들(select transistors)에 의해 개별 비트라인들(321, 341, 361)에 연결된다. 이러한 선택 트랜지스터들은 드레인 선택 라인(SGD)에 의해 제어된다. 다른 실시예들에서, 선택 라인들은 NAND 스트링들 사이에서 반드시 공통일 필요는 없다. 즉, 여러 가지 선택 라인들은 여러 가지 NAND 스트링들에 제공될 수 있다. 워드라인(WL3)은 저장소자들(323, 343, 363)을 위해 제어 게이트들에 연결된다. 워드라인(WL2)은 저장소자들(324, 344, 364)을 위해 제어 게이트들에 연결된다. 워드라인(WL1)은 저장소자들(325, 345, 365)을 위해 제어 게이트들에 연결된다. 워드라인(WL0)은 저장소자들(326, 346, 366)을 위해 제어 게이트들에 연결된다. 볼 수 있는 바와 같이, 각각의 비트라인과 개별 NAND 스트링은 저장소자들의 어레이(array) 또는 세트의 열들(columns)을 포함한다. 워드라인들(WL3, WL2, WL1, WL0)은 어레이 또는 세트의 행들(rows)을 포함한다. 각각의 워드라인은 행에서 각각의 저장소자의 제어 게이트들을 연결한다. 또는, 제어 게이트들은 워드라인들 그들 자신들에 의해 제공될 수도 있다. 예를 들어, 워드라인(WL2)은 저장소자들(324, 344, 364)을 위해 제어 게이트들을 제공한다. 실제로, 워드라인 상에 수천 개의 저장소자들이 있을 수 있다.
각각의 저장소자는 데이터를 저장할 수 있다. 예를 들어, 1 비트의 디지털 데이터를 저장할 때, 저장소자의 가능한 임계 전압들(VTH)의 범위는 2개의 범위로 나뉘며, 이는 논리 데이터 "1"과 "0"으로 할당된다. NAND 타입 플래시 메모리의 일 실시예에서, 저장소자가 소거된 이후의 VTH는 음의 값을 가지며, 논리 "1"로 정의된다. 프로그램 동작 이후의 VTH는 양의 값을 가지며, 논리 "0"으로 정의된다. VTH가 음의 값을 가지고 읽기가 시도될 때, 저장소자는 턴온되어 논리 "1"이 저장되어 있음을 나타낼 것이다. VTH가 양의 값을 가지고 읽기 동작이 시도될 때, 저장소자는 턴온되지 않으며, 이는 논리 "0"이 저장되어 있음을 나타낼 것이다. 저장소자는 또한 예를 들어, 다중 비트들의 디지털 데이터인, 다중 레벨들의 정보를 저장할 수 있다. 이 경우에, VTH 값의 범위는 데이터의 레벨들의 개수만큼 나뉘게 된다. 예를 들어, 4개 레벨들의 정보가 저장되면, 데이터 값들 "11", "10", "01" 및, "00"에 할당되는 4개의 VTH 범위들이 있을 수 있다. NAND 타입 메모리의 일 실시예에서, 소거 동작 이후의 VTH는 음이며 "11"로 정의된다. 양의 VTH 값들은 "10", "01" 및, "00"의 상태들로 사용된다. 저장소자 내에 프로그래밍된 데이터와 소자의 임계 전압 범위들 사이의 특정 관계는 저장소자들에 적용되는 데이터 인코딩 방식에 의존한다. 예를 들어, 그 전체 내용이 참조로서 본원 명세서에서 통합되는, 미국등록특허번호 제6,222,762호와 미국등록특허번호 제7,237,074호는 다중-상태 플래시 저장소자들에 대한 다양한 데이터 인코딩 방식들을 설명한다.
NAND 타입 플래시 메모리들에 관련된 예들과 그들의 동작은, 미국등록특허번호 제5,386,422호, 제5,570,315호, 제6,046,935호, 제6,456,528호 및, 제6,522,580호에서 제공되며, 이들 각각의 미국등록특허는 본 발명에 대한 참조로서 그 전체 내용이 본 명세서에서 통합된다.
플래시 저장소자를 프로그래밍할 때, 프로그램 전압이 저장소자의 제어 게이트에 인가되고, 저장소자와 관련된 비트라인은 접지된다. 채널에서의 전자들은 플로팅 게이트로 주입된다. 전자들이 플로팅 게이트에 축적될 때, 플로팅 게이트는 음으로 충전되고 저장소자의 VTH는 상승한다. 프로그래밍되는 저장소자의 제어 게이트에 프로그램 전압을 인가하기 위해서, 프로그램 전압은 적당한 워드라인 상에 인가된다. 앞서 논의된 바와 같이, 개개의 NAND 스트링들에서의 하나의 저장소자는 동일한 워드라인을 공유한다. 예를 들어, 도 3의 저장소자(324)를 프로그래밍할 때, 프로그램 전압은 또한 저장소자들(344, 364)의 제어 게이트들에 인가될 수 있다.
하지만, 프로그램 혼란은 다른 NAND 스트링들의 프로그래밍 동안에 금지된 NAND 스트링들에서 일어날 수 있고, 때때로 프로그래밍된 NAND 스트링 그 자신에서도 일어날 수 있다. 비선택된 비휘발성 저장소자의 임계 전압이 다른 비휘발성 저장소자들의 프로그래밍 때문에 시프트될 때, 프로그램 혼란이 일어난다. 프로그램 혼란은 아직 프로그래밍되지 않은 소거된 저장소자들뿐만 아니라 이전에 프로그래밍된 저장소자들 상에서 일어날 수 있다. 다양한 프로그램 혼란 메커니즘들이 NAND 플래시 메모리와 같은 비휘발성 저장 디바이스들을 위해 이용 가능한 동작 윈도우를 제한할 수 있다.
예를 들어, NAND 스트링(320)이 금지되고(즉, NAND 스트링 320은 비선택 NAND 스트링이며, 현재 프로그래밍 중인 저장소자를 포함하고 있지 않음) 그리고 NAND 스트링(340)이 프로그래밍되는 경우(즉, NAND 스트링 340은 선택 NAND 스트링이며, 현재 프로그래밍되는 저장소자를 포함하고 있음), 프로그램 혼란이 NAND 스트링(320)에서 발생할 수 있다. 예를 들어, 패스 전압(pass voltage)(VPASS)이 낮으면, 금지된 NAND 스트링의 채널이 잘 부스트되지(boosted) 않으며, 그리고 비선택된 NAND 스트링의 선택 워드라인이 의도하지 않게 프로그래밍될 수 있다. 다른 가능한 시나리오에서, 부스트된 전압이 게이트 유도 드레인 누설(Gate Induced Drain Leakage : GIDL) 또는 다른 누설 메커니즘들에 의해 낮아질 수 있으며, 이는 동일한 문제점을 일으킨다. 프로그래밍된 후에 다른 인접한 저장소자들과의 용량성 커플링(capacitive coupling)때문에 전하 저장소자의 VTH에서의 시프트들과 같은, 다른 효과들이, 또한 프로그램 혼란의 원인이 될 수 있다.
도 4는 기판 상에 형성되는 NAND 스트링의 단면도를 나타낸 도이다. 상기 도는 간략하게 되어 있고 일정 비율로 그려진 것은 아니다. NAND 스트링(400)은 기판(490) 상에 형성되는, 소스측 선택 게이트(source-side select gate)(406), 드레인측 선택 게이트(drain-side select gate)(424) 및, 8개의 저장소자들(408, 410, 412, 414, 416, 418, 420, 및 422)을 포함한다. 다수의 소스/드레인 영역들이, 이들 중 하나의 예는 소스/드레인 영역(430)이며, 각각의 저장소자와 선택 게이트들(406, 424)의 어느 한 측에 제공된다. 하나의 방식에서, 기판(490)은 삼중-웰 기술(triple-well technology)을 채택하며, 이는 n-웰 영역(494) 안의 P-웰 영역(492)을 포함하며, 이 n-웰 영역(494)은 p-타입 기판 영역(496) 내에 있다. NAND 스트링과 그의 비휘발성 저장소자들은 p-웰 영역 상에, 적어도 일부가 형성될 수 있다. VSOURCE의 전위를 갖는 소스 공급 라인(source supply line)(404)이 VBL의 전위를 갖는 비트라인(426)에 추가로 제공된다. 예컨대, 바디 바이어스 전압들(body bias voltages)과 같은 전압들이 또한 터미널(402)을 통해 p-웰 영역(492)에 인가되고 및/또는 터미널(terminal)(403)을 통해 n-웰 영역(494)에 인가될 수 있다.
프로그램 동작 동안에, 제어 게이트 전압(VPGM)이 선택된 워드라인(상기 일례에서는 WL3) 상에 제공되며, 워드라인 WL3은 저장소자(414)와 관련된다. 또한, 저장소자의 제어 게이트는 워드라인의 일부로서 제공될 수도 있음을 유의해야 한다. 예를 들어, WL0, WL1, WL2, WL3, WL4, WL5, WL6 및, WL7은 개별적으로 저장소자들(408, 410, 412, 414, 416, 418, 420 및, 422)의 제어 게이트들을 통해 확장할 수 있다. 패스 전압(VPASS)이, 하나의 가능한 부스팅 방식에서, NAND 스트링(400)과 관련된 나머지 워드라인들에게 인가된다. 일부 부스팅 방식들은 서로 다른 패스 전압들을 서로 다른 워드라인들에게 인가한다. VSGS와 VSGD가 선택 게이트들(406 과 424)에 각각 인가된다.
도 5a 내지 도 5e는 최상위 상태(highest state)가 하위 상태들(lower states) 이전에 프로그래밍되는 다중패스 프로그래밍 기술에서 저장소자들의 임계 전압들을 나타낸다. 인버스 프로그래밍 시퀀스들(inverse programming sequences)은 혼란들과 인접한-셀 간섭 효과들(neighbor-cell interference effects)의 영향을 감소시킬 수 있다. 이러한 프로그래밍 기술 중 하나의 예제는 "C-우선(C-first)"이며, 여기서 C 상태는 4개의 데이터 상태, 다중-레벨 구현에서 최상위 상태를 나타낸다. 이 기술은 8개, 16개 또는 다른 개수의 상태들로 확장될 수 있다. 이러한 기술들은 그들의 의도된 상태들로 하위 상태 셀들을 프로그래밍하기 전에 그들의 의도된 상태로 최상위 상태 셀들의 모두를 프로그래밍하는 것을 포함한다. 전형적으로, 2개 이상의 패스들이 수행되며, 여기서 프로그램 펄스들의 시퀀스는 각각의 프로그래밍 패스로 반복된다. 예를 들어, 프로그램 펄스들의 스텝-와이즈 증가 시퀀스(step-wise increasing sequence of program pulses)는 각각의 패스에서 적용될 수 있다.
도 5a는 소거 동작 이후에, 저장소자들의 세트의 임계 전압 분포를 나타낸다. x-축은 4개의 서로 다른 상태들 즉, 소거 상태 E, 상태 A, 상태 B 그리고 상태 C에 대한 임계 전압(VTH)을 나타낸다. y-축은 각각의 상태에서 셀들 또는 저장소자들의 개수를 표시한다. 전압 검증 레벨(voltage verify level)이 상태별로, 즉, 각각의 상태들 A, B 그리고 C에 대해 VV-A, VV-B 그리고 VV-C로 또한 나타낸다. 상기 도면들이 반드시 일정 비율인 것은 아니지만, 더 큰 크기를 갖는 소거 상태 분포는 모든 셀들이 그 상태에 있다는 것을 나타낸다. 상태들(A, B, C)은 점선들을 이용하여 도시되었는바, 이는 그 어떤 셀들도 현재 이들 상태에 있지 않음을 나타낸다. 도 5a는 E, A, B 그리고 C 셀들이 소거 상태에 있는 것을 나타낸다. 용어 "A 셀(A cell)", "B 셀(B cell)" 또는 "C 셀(C cell)" 또는 이와 유사한 것은, 프로그래밍 완료시의 최종 상태로서, 각각 상태 A, B, 혹은 C로 프로그래밍되도록 의도된 셀들을 지칭하기 위한 것이다.
제1 프로그래밍 패스(first programming pass)의 제1 부분이 도 5b 내지 도 5d에 도시된다. 도 5b에서, B와 C 셀들(B and C cells)은 소거 상태로부터 중간(intermediate) 또는 임시 상태로 프로그래밍되며, 이는 "상태 LM(state LM)" (예를 들어, 하위-미들:lower-middle)이라고 지칭된다. LM 상태, 그리고 다른 상태들의 임계 전압 분포는, 일반적으로, 오버슈트들(overshoots)과 프로그래밍 정확성에 대한 다른 제한들 때문에 스프레드를 가질 수 있다. E 셀과 A 셀(E and A cells)은 소거 상태로 남아 있다. 이러한 프로그래밍 패스에서, 프로그램 펄스들의 시퀀스가 적용되는바, 예컨대, 초기 펄스 레벨에서 시작하여 최종 펄스 레벨까지 계단형으로 증가하는 프로그램 펄스들이 인가된다. 예를 들어, 도 7a를 참조하면, 이는 제1 프로그래밍 패스에서 프로그램 및 검증 전압들을 나타낸다. x-축은 시간을 나타내며, y-축은 전압을 나타낸다. 프로그램 펄스들은 스텝 와이즈로 증가하고, 검증 펄스들보다 크기가 더 크다. 제1 프로그래밍 패스의 제1 부분에서, 셀들이 VV-LM에 대해서 검증된다. (이러한 표시에서, 대문자 V는 전압을 나타내고, 아래첨자 V-LM은 "검증(verify)" 및 "LM 상태"를 나타낸다.) 프로그래밍된 셀들은 그들의 VTH가 VV-LM에 도달했다고 검증될 때, 추가 프로그래밍으로부터 록 아웃(lock out)된다. 도 7a의 예제에서, 모든 B와 C 셀들은 11개의 프로그램 펄스 이후에, LM 상태에 도달했다.
이 시점에서, 제1 프로그래밍 패스의 제2 부분이 시작한다. 도 5C에 도시된 바와 같이, 단지 C 셀들만이, 예를 들어, 최상위 상태 셀들이 프로그래밍된다. C 셀들은 LM 상태로부터 프로그래밍되고, VV-C에 대해서 검증된다. 감소된 크기의 LM 상태는 더 적은 셀들이 LM 상태에 있는 것을 나타낸다. 즉, C 셀들이 상위로 프로그래밍됨에 따라, B 셀들이 LM 상태로 남아 있다. 일부 셀들이 상대적으로 빠르게 프로그래밍될 수 있으며, 반면에 다른 것들은 상대적으로 느리게 프로그래밍될 수 있는바, 이는 예를 들어, 셀들의 여러 가지 특성들 즉, 메모리 디바이스에서 셀들의 상대적인 위치와 다른 요인들 때문이다. 결과적으로, 프로그래밍 동안에, C 셀들은 상대적으로 넓은 임계 전압 분포(510)로 초기에 퍼질 것이다. 제1 프로그래밍 패스의 제2 부분의 프로그래밍이 계속됨에 따라서, C 셀들이 도 5d에 도시된 것 처럼, C 상태 분포(520)로 프로그래밍될 것이다.
제2 프로그래밍 패스에서, 일련의 프로그램 펄스들이 도 5e와 도 7b에 도시된 바와 같이, 예를 들어, 선택된 워드라인을 통해서, 프로그래밍될 셀들에게 다시 인가된다. A 셀들은 소거 상태로부터 A 상태로 프로그래밍되고, 반면에 B 셀들은 LM 상태로부터 B 상태로 프로그래밍된다.
하나의 방식(approach)에서는, 처음 6개의 각각의 프로그램 펄스들 이후에 A 셀들에 대해서만 검증이 수행되고, 다음 7개의 각각의 프로그램 펄스들 이후에 A 셀들 및 B 셀들에 대해서 검증이 수행되며, 그리고 나머지 각각의 프로그램 펄스들 이후에는 B 셀들에 대해서만 검증이 수행된다. 이러한 예제에서, 전체 프로그램 펄스들의 개수는 22개이다. 프로그래밍이 완료된 이후, 도 6f의 임계 전압 분포가 획득된다.
앞선 방식은 도 7a와 도 7b에 의해 도시된, 별도의 패스들(separate passes)에서 프로그램 펄스들의 전체 시퀀스를 반복하는 것을 포함하며, 이는 도 16과 관련하여 아래에서 논의되는 것과 같은 예를 들어, 하나의 패스 프로그래밍 기법(one pass programming technique)과 비교하여 여분의 시간(extra time)을 소비한다. 이에 반해, 프로그램 혼란과 인접한-셀 간섭 효과들의 영향이 감소된다. 프로그래밍 시간을 감소시키는 동안 이러한 이점들을 유지하도록 하는 것이 바람직할 수 있다.
하나의 방식은, 반복되는 많은 프로그램 펄스들을 건너뛰는 것(skipping)을 포함하는바 따라서, 다중-패스 프로그래밍 기술의 주요 이점들을 보호하면서도 프로그래밍 시간을 감소시킬 수 있다. 이에 대해서는 상세히 후술할 것이다.
도 6a 내지 도 6g는 최상위 상태가 하위 상태들 이전에 프로그래밍되는 수정된 다중-패스 프로그래밍 기술에서 저장소자들의 임계 전압 분포를 나타낸다. 이러한 제안은 앞서 논의된 C-우선 시퀀스를 다음과 같이 수정한다. 제1 프로그래밍 패스에서, 셀들이 LM 상태로 프로그래밍된 이후에, 초기 펄스 (또는 펄스들의 시퀀스)가 최종 상태를 향해 C 셀들을 프로그래밍하도록 적용된다. 하이 VTH를 가지는 빠른 셀들(fast cells)은 VV-CLL 검증 레벨을 이용하여 식별되고 그리고 일시적으로 록 아웃된다. 다음 프로그램 펄스(VPGM)는 많은 양(large amount)만큼 증가되며, 이는 록 아웃되지 않는 느린 C 셀들(slow C cells)을 프로그래밍하기에 적당한 것이다. 많은 양으로 VPGM을 증가시킴으로써, 펄스들을 건너뛸 수 있고 시간을 절약할 수 있다. 이후, 느린 C 셀들에 대한 프로그래밍이 최상위 VPGM이 인가될 때까지 계속된다. 제2 프로그래밍 패스에서, 일시적으로 록 아웃되었던 빠른 C 셀들이 선택된 집단(selected population)으로 반환된다. VPGM은 초기값으로 반환되며, 그리고 최종 프로그램 펄스까지 다시한번 램프 업(ramped up)되어, A셀, B셀 및 빠른 C 셀들을 함께 프로그래밍한다. 빠른 C 셀들은 이러한 시퀀스 내에서 빠르게 프로그래밍될 수 있으므로, 여분의 시간을 요구하지 않는다. 특정한 구현에서, C-우선 (또는 마지막-상태-우선(last-state-first)) 프로그래밍을 사용한다. 상기 기법은 4개 보다 많거나 혹은 적은 프로그래밍 상태들을 이용하는 방식들에 적용될 수 있다. 또한, 하나 이상의 상위(high) 상태들에 대해서 빠르고-느린 구별(fast-slow distinction)이 이루어질 수도 있다.
도 6a는 소거 상태에 있는 모든 셀들에 대한, 시작 임계 전압 분포를 나타낸다. 도 7c를 또한 참조하면, 이는 도 6a 내지 도 6d에 대응하는 프로그래밍 기술에서 프로그램 및 검증 전압들을 나타낸다. 제1 프로그래밍 패스의 제1 페이즈(first phase)에서, 모든 B 셀들 및 C 셀들이, VV-LM의 검증 레벨을 이용하여, 소거 상태로부터 LM 상태로 프로그래밍되며, 이는 도 6b의 임계 전압 분포를 얻는다. 이러한 페이즈에서는, 최소 레벨에서 시작하는 프로그램 전압들이 인가되며, 각각의 펄스는 하나의 가능한 방식에서, 스텝 사이즈(ΔV1)만큼 증가된다. 하나의 가능한 구현예에서, 11개의 프로그램 펄스들이 이러한 페이즈에 적용된다. 제공되는 수치적인 예제들은 특정 응용예들을 최적화하도록 조정될 수 있는 것으로 이해되어야 한다. 일반적으로, 프로그래밍 및 검증 동안 사용되는 모든 전압 레벨들 및 다른 파라미터들은 특정 응용예를 위해 최적화될 수 있다. 이는 초기 및 최종 프로그램 펄스 레벨, 다양한 스텝 사이즈들 및 증분들, 각각의 페이즈에서 프로그램 펄스들의 개수, 그리고 검증 레벨들을 포함한다.
제1 프로그래밍 패스의 제2 페이즈에서, 임계 전압 검출은 빠른 C 셀들을 느린 C 셀들로부터 분리하도록 수행된다. 따라서, 빠르고 느린 메모리 셀들이 식별되거나 그룹화된다. C 셀들은 LM 상태로부터 도 6c에 나타낸 바와 같이, VC1와 VC2 사이의 소정의 임계 전압 범위로 프로그래밍된다. 도 7c에 나타낸 바와 같이, 페이즈 2에서 초기 프로그램 펄스는 ΔV2 만큼 증가되며(stepped up), 그리고 페이즈 2에서 각각의 연속하는 프로그램 펄스는 ΔV3 만큼 증가된다. 예를 들어, ΔV2와 ΔV3는 ΔV1보다 더 클 수 있으며, 이에 따라 프로그래밍은 C 셀들에 대해 상대적으로 빠르게 진행한다. 또한, 제2 페이즈 동안, C 셀들은 새로운 검증 레벨(VV-CLL)에 대해서 검증되며, 이에 따라 빠르고 느린 프로그래밍 C 셀들을 판별할 수 있다. (VV-CLL과 달리, 도 6g와 관련하여 아래에서 논의되는 VV-CL은, 상태 C에 대한 비정밀 모드 검증 레벨(coarse mode verify level)을 나타낸다.) VV-CLL은 VV-C 에서 오프셋(Δ)을 뺀 값과 동일하며, 그리고 특정 응용예를 위해 최적화될 수 있다. 하나의 예시적인 구현예에서는, 3개의 프로그램 펄스들이 페이즈 2에서 사용되지만, 하나 이상의 프로그램 펄스들이 사용될 수 있으며, 이는 메모리 디바이스의 특성에 의존한다. 사용되는 프로그램 펄스들의 개수는, 소정의 임계 전압 분포로 C 셀들을 프로그래밍하기에 충분해야하며, 이는 느리고 빠른 프로그래밍 셀들을 서로 구별하는 것을 허용한다.
대안적으로는, 페이즈 3을 완료하는 결정은, VTH > VV-CLL에 대한, C 셀들의 개수의 함수로서 또는 하나의 워드라인 혹은 하나의 블록 내의 C 셀들의 세트 중 일부의 C 셀들의 함수로서, 사안마다(per-case) 적응적으로 결정될 수 있다. 예를 들어, 페이즈 2는 첫번째 C 셀이 VTH > VV-CLL에 도달하면, 완료될 수 있다. 또한, 소정 개수의 셀들 혹은 셀들의 일부가 VTH > VV-CLL에 도달한 이후에, 고정된 개수의 추가 프로그램 펄스들 다음에 페이즈 2를 완료하는 것도 가능하다.
페이즈 2가 완료된 후에, 느린 C 셀들의 임계 전압은 VC1과 VV-CLL 사이의 범위(610)에 있을 것이며, 그리고 빠른 C 셀들의 임계 전압은 VV-CLL과 VC2 사이의 범위(620)에 있을 것이다. 이러한 예제는 느리고 빠른 C 셀들의 분포가 각각 약 50% 임을 나타냄에 유의해야 한다. 하지만, 빠르고 느린 C 셀들의 개수가 반드시 동일할 필요는 없다. 추가로, 임계 전압 분포의 범위에 관해서, 상기 예제는 VC1에서 분포의 아래쪽 말단(low end)이 LM 분포 이내에 있는 것을 나타낸다. 하지만, VC1에서의 상기 분포의 아래쪽 말단이 LM 분포보다 위에 있을 수 있으므로, 반드시 이러한 것은 아니다. 추가로, VC2에서 C 셀 분포의 위쪽 말단(high end)은 최종 C 상태 분포의 위쪽 말단에 있는 것으로 표시되지만, 대안적으로는 이보다 낮을 수도 있다.
페이즈 2 이후에, 제1 프로그래밍 패스의 제3 페이즈가 수행되는바, 페이즈 2에서 식별된 빠른 C 셀들은 프로그래밍으로부터 일시적으로 록 아웃되며, 그리고 도6d에 도시된 바와 같이 느린 C 셀들에 대한 프로그래밍은 계속된다. 이 예제에서, 페이즈 3은 4개의 추가적인 프로그램 펄스들과 VV-C 레벨에서의 검증을 포함한다. 이때, 프로그램 펄스 시퀀스에서 앞으로 건너뛰는 것이 가능하며, 이에 따라 상당히 증가된 프로그램 펄스가 페이즈 3의 시작에 적용될 수 있다. 프로그램 펄스들을 건너뜀으로써, 그러한 건너뛴 펄스들에 대한 대응하는 시간을 절약한다. 예를 들어, 도 7a의 방식과 비교하여, 펄스들(15 내지 18)이 건너뛸 수 있으며, 이에 따라 도 7c에서 페이즈 3의 제1 프로그램 펄스 (전체 펄스 중 15번째 펄스)는 도 7a의 19번째 프로그램 펄스와 동일한 레벨을 가질 수 있다. 다음으로, 도7c의 제2 내지 제4 프로그램 펄스들 각각은 도 7a의 20번째 내지 22번째 프로그램 펄스와 동일한 레벨에 있을 수 있다. 따라서, 22개의 프로그램 펄스들을 사용하는 도 7a의 예제 프로그래밍 시퀀스와는 대조적으로, 도 7c의 예제 프로그래밍 시퀀스는 18개의 프로그램 펄스들을 사용하며, 이는 상당한 정도의 프로그램 시간을 절약한다.
또한, 페이즈 3의 제1 프로그램 펄스는 페이즈 2의 마지막 프로그램 펄스보다 ΔV4 만큼 더 클 수 있으며, 반면에 페이스 3의 후속 펄스들에 대해서는 ΔV5의 스텝 사이즈가 사용된다. 하나의 방식에서, ΔV4는 ΔV2와 ΔV1보다 크다. ΔV5는 ΔV1보다 크고 ΔV3에 맞먹는다. 하나의 방식에서, ΔV4는 VV-C - VV-CLL와 같거나 또는 VV-C - VV-CLL에 근사적으로 같으며, 즉, 이는 C 상태 검증 레벨과 하위 C 상태 검증 레벨 간의 차이이다. 일반적으로, 프로그램 펄스 레벨은 이전 펄스들과 비교하여 페이즈 3에서 날카롭게 증가될 수 있으며, 이는 느린 셀들이 프로그래밍 중인 것이 알려져 있기 때문이다. 이러한 셀들은 상대적으로 다루기 힘들며(stubborn), 따라서 이들 셀들에 대해서는 더 큰 및/또는 더 긴 지속기간의 프로그램 펄스들이 선택 워드라인을 통해 이들의 제어 게이트들에 인가될 것이 요구되는바, 이는 최종 의도된 상태쪽으로 이들의 임계 전압을 계속해서 올리기 위해서이다. 따라서, 다른 옵션은 페이즈 3에서, 프로그램 펄스 레벨을 상승시키는 것에 추가하여 또는 프로그램 펄스 레벨을 상승시키는 대신에, 프로그램 펄스들의 기간을 늘리는 것을 포함한다.
페이즈 3 이후에, 제1 프로그래밍 패스가 완료되며, 그리고 제2 프로그램 패스가 후속으로 수행된다. 따라서, 제1 프로그래밍 패스의 후반부는 다수의 프로그램 펄스들을 인가하는 것을 포함하는바, 이 동안에는 마지막, 최상위 상태를 목표로 하는 셀들만이 선택된다. 증분들 및 스텝 사이즈들과 더불어, 시작 VPGM 값 및 최종 VPGM 값은, 특성화 동안 최적화될 수 있는 파라미터들이다.
제2 프로그램 패스가 도 6e, 도 6f 및 도 7d와 관련하여 설명된다. 도 7d는 도 6e와 도 6f에 대응하는 프로그래밍 기술에서 프로그램 및 검증 전압들을 나타낸다. 도 7d의 프로그램 펄스 시퀀스는 정상 시퀀스(normal sequence)이며, 이는 프로그램 펄스들이 하나의 가능한 방식에서, 정규적인 스텝들(regular steps)에서 점진적으로 증가되는 것이다.
이전에 록 아웃된 빠른 C 셀들 (VTH 분포(630)에 의해 표시됨)이 복원되며, 이에 따라 그들은 도 6e에서 도시된 바와 같이, A와 B 셀들과 함께 프로그래밍된다. A 셀들은 소거 상태로부터 프로그래밍되며, 반면에 B 셀들은 LM 상태로부터 프로그래밍된다. 도 7d의 프로그램 펄스 시퀀스에서, 6개의 프로그램 펄스들에 이르는(extending over) 4번째 페이즈가 정의될 수 있는바, 4번째 페이즈에서는 초기 펄스가 인가되고 그리고 ΔV1만큼 증가되는 후속 펄스들이 뒤따르며, A 셀들에 대한 검증은 VV-A를 이용하여 수행된다. 5개의 프로그램 펄스들에 이르는 5번째 페이즈가 정의될 수 있으며, 5번째 페이즈에서는 A와 B 셀들의 검증이 VV-A와 VV-B를 각각 이용하여 수행된다. 2개의 프로그램 펄스들에 이르는 6번째 페이즈가 정의될 수 있으며, 6번째 페이즈에서는 A, B 및 빠른 C 셀들의 검증이 VV-A, VV-B 그리고 VV-C를 각각 이용하여 수행된다. 6개의 프로그램 펄스들에 이르는 7번째 페이즈가 정의될 수 있으며, 7번째 페이즈에서는 B와 빠른 C 셀들의 검증이 VV-B와 VV-C를 각각 이용하여 수행된다. 이 시점에서, 제2 프로그램 패스와 전체 프로그래밍 동작이 완료되며, 결과적으로 도6f의 임계 전압 분포를 얻는다.
임의의 느린 C 셀들이 더 이상 존재하지 않으며 오직 빠른 C 셀들만이 프로그래밍되기 위해서 남아있기 때문에, 제2 프로그래밍 패스는 도 7b의 접근 방식보다 더 빨리 완료된다. 또한, 제2 프로그래밍 패스는 도 7c에서 제3 페이즈의 첫번째 프로그램 펄스의 레벨에 있는 프로그램 펄스가 도달되는 정도의 시간에 완료되며, 이는 예컨대, 도 7d에서 19번째 프로그램 펄스이다. 따라서, 제2 프로그래밍 패스는 도 7b의 22개의 프로그램 펄스들보다는 19개의 프로그램 펄스들 이후에 완료될 수 있으며, 이는 상당한 프로그램 시간 절약을 얻을 수 있다. 제공되는 예제에서, 시간 절약(time savings)은 제1 및 제2 프로그래밍 패스를 통해 총 7개의 프로그램 펄스들이다. 추가적인 상세한 설명은 도10을 참조하면 된다.
부가적으로, 본 명세서에서 언급된 기술들은 도 6g에서 도시된 바와 같이, 비정밀/정밀(coarse/fine) 프로그래밍 프로세스를 포함하도록 수정될 수 있다. 비정밀/정밀 프로그래밍은 초기에는 비정밀 모드에서 셀들을 프로그래밍하는 것을 포함하며, 비정밀 모드에서는 셀들이 상대적으로 빠르게 프로그래밍된다. 이러한 것은 예를 들어, 상대적으로 큰 프로그램 펄스 스텝 사이즈 혹은 공격적인 프로그램 펄스 스텝 사이즈 또는 펄스 지속기간의 사용에 의해 달성될 수 있다. 의도된 최종 프로그래밍 상태의 검증 레벨보다 아래인 소정 레벨(상태 A, B 그리고 C 각각에 대해, 비정밀 모드 검증 레벨 VV-AL, VV-BL, 그리고 VV-CLL)에서 셀이 검증될 때, 상기 셀은 정밀 프로그래밍 모드로 스위칭되는바, 정밀 프로그래밍 모드에서는 셀들이 상대적으로 느리게 프로그래밍된다. 정밀 프로그래밍 모드에서는 셀이 더 정확하게 프로그래밍되는바, 왜나하면 오버슈트들이 감소되기 때문이다. 정밀 프로그래밍 모드는 예를 들어, 더 작은 스텝 사이즈 및/또는 펄스 기간을 갖는 프로그램 펄스들을 적용하는 것 및/또는 프로그래밍 속도를 느리게 하도록 비트라인 전압을 상승시키는 것을 포함할 수 있다. 비정밀 모드에서 도달되는 임계 전압 분포들은, 정밀 모드에서 도달되는 임계 전압 분포들과 구별하기 위해, AL, BL 및 CL로 명명되며, 정밀 모드에서 도달되는 임계 전압 분포들은 A, B 및 C로 각각 명명된다. LM 상태로의 프로그래밍은 비정밀/정밀 프로그래밍을 사용할 필요가 없는바, LM 상태는 중간 상태이므로 정확도가 덜 중요하기 때문이다.
예를 들어, 제1 프로그래밍 패스에서, 느린 C 셀들은 C 상태로 프로그래밍되며(예를 들어, 도 6d), 느린 C 셀이 VV-CL로 검증된 이후, 느린 C 셀은 정밀 프로그래밍 모드로 바뀌며, 여기에서는 VV-C의 최종 검증 레벨이 후속으로 적용된다. 제2 프로그래밍 패스에서는, A, B 및 빠른 C 셀들이 초기에 비정밀 모드 동안 VV-AL, VV-BL 및 VV-CL로 각각 검증되며, 정밀 모드 동안에는 VV-A, VV-B 및 VV-C로 각각 검증된다. 한 가지 옵션사항으로서, 비정밀/정밀 기술들은 제한된 방식으로 C 셀들을 위해 사용될 수 있는바, 따라서 비정밀/정밀 기술은 제2 프로그래밍 패스 동안 프로그래밍되는 빠른 C 셀들만을 위해서 사용된다. 비정밀/정밀 프로그래밍 기술의 예제가 미국등록특허 제7,088,621호에 기재되어 있으며, 상기 미국등록특허는 본 발명에 대한 참조로서 그 전체 내용이 본 명세서에 통합된다. 다음의 "A" & "B" 패스 (예를 들어, 페이즈 4 내지 7)와 비교하여, "C-우선" 패스 (예를 들어, 페이즈 3)를 위해 비트-라인 전압 또는 펄스 개수를 별개로 최적화하는 것이 또한 가능하다. 이러한 최적화는 프로그래밍 시간을 증가시키는 것을 피하기 위해 허용된 "정밀" 펄스들의 최대 개수를 설정하는 것을 포함할 수 있다.
추가로, 다른 수정들이 도 7a 내지 도 7d와 관련하여 논의된 것을 포함하는, 임의의 앞서-언급된 기술들에 적용될 수 있다. 하나의 방식에서, 여러 가지 프로그램 조건들이 프로그래밍 패스의 여러 가지 페이즈들 또는 부분들에서 및/또는 여러 가지 프로그래밍 패스들에서 구현된다. 예를 들어, 제1 및 제2 프로그래밍 패스는 성능, 분포 넓이 및, 프로그램-혼란 특성들과 같은 목표들을 위해 2개의 패스를 별개로 최적화하도록 여러 가지 스윕 파라미터들(sweep parameters)을 가질 수 있다. 하나의 일례는, 속도 대 분포 넓이(distribution width)에 대한 독립적인 트레이드-오프(trade-off)를 얻기 위하여, 제 2 프로그래밍 패스에 비하여 제 1 프로그래밍 패스 동안에 더 큰 프로그램 펄스 스텝 사이즈를 사용하는 것이다. 다른 일례는 2개의 프로그래밍 패스에 대해서 독립적으로 적용 및 최적화되는 여러 가지 프로그램-금지 파라미터들을 사용하는 것이다. 예를 들어, 제 1 및 제 2 프로그래밍 패스에서 비선택 워드라인들 상에 인가되는 여러 가지 패스 전압들을 통하여 여러 가지 채널 부스팅 모드들이 구현될 수도 있다. 여러 가지 채널 부스팅 모드들의 예제들에 대해서는 미국등록특허 제6,859,397호를 참조하며, 이는 본 발명에 대한 참조로서 본 명세서에 통합된다. 또한, 도4에는 프로그래밍 동안 비선택 워드라인들에 인가되는 패스 전압들이 도시되어 있다. 비정밀 프로그래밍 모드에 후속하는 정밀 모드에서 프로그램 펄스들의 여러 가지 최대 허용 개수가 또한 사용될 수 있다. 여러 가지 비트라인 전압들이, 가령, 정밀 프로그래밍 모드 동안에 사용될 수 있다. 다양한 다른 옵션들이 가능하다. 본질적으로는, 프로그래밍에 영향을 주기 위해 설정될 수 있는 임의의 파라미터는, 프로그래밍 패스의 여러 가지 페이즈들 또는 부분들을 위해 최적화될 수 있으며 및/또는 전체 프로그래밍 프로세스의 여러 가지 프로그래밍 패스들에서 최적화될 수 있다.
도 8a와 도 8b는 도 6a 내지 도 6f에 대응하는 프로그래밍 프로세스를 나타낸다. 논의된 특정 구현예는 4개의 상태를 포함한다. 하지만, 다른 구현들이 가능하다. 도 8a에서, 프로그래밍은 단계 800에서 시작한다. 페이즈 1(도7c를 참조)은 단계 802에서 시작하며, 단계 802에서는 A 셀들이 프로그래밍으로부터 일시적으로 록 아웃된다. 소거 상태에 남아 있도록 의도된 셀들이 프로그래밍 프로세스 내내 프로그래밍으로부터 록 아웃됨에 유의해야 한다. 단계 804는 최하위 VPGM 레벨에서 시작하는 프로그램 펄스를 인가하는 것을 포함한다. 단계 806은 VV-LM로 검증을 수행하는 것과, 상태 LM (예를 들어, VTH > VV-LM 인 셀들)에 도달한 B와 C 셀들을 일시적으로 록 아웃하는 것을 포함한다. 용어 "록아웃(lockout)"은 가령, 관련 비트라인의 전압을 상승시킴에 의해서 셀의 추가적인 프로그래밍을 막는 것을 지칭하며, 반면에 다른 셀들은 계속 프로그래밍된다. 결정 단계 808은 모든 B 및 C 셀들이 상태 LM로 검증됐는지 또는 소정 개수(N1)의 프로그램 펄스들이 인가됐는지를 판별한다. 두 경우 모두 참이 아니면, 다음 프로그램 펄스가 단계 810에서 인가되며, 이는 ΔV1만큼 이전 펄스를 증가시키는 것이다. 그 다음에 프로세스는 단계 806으로 되돌아 간다. 결정 단계 808이 참이면, 제1 프로그래밍 패스의 페이즈 2가 단계 812에서 시작한다. 이때, C 셀들을 제외한 모든 셀들은 프로그래밍으로부터 일시적으로 록 아웃된다(예를 들어, A와 B 셀들이 록 아웃된다). C 셀들은 저장소자들의 제1 세트인 것으로 고려될 수 있으며, 반면에 A와 B 셀들은 각각, 저장소자들의 제2 및 제3 세트이다. 단계 814는 이전 펄스 보다 ΔV1 만큼 증가된 프로그램 펄스를 적용하는 것을 포함한다.
단계 816은 VV-CLL 에서 검증을 수행하는 것을 포함하며 그리고 VTH > VV-CLL 인 C 셀들을 일시적으로 록 아웃하는 것을 포함한다. 록 아웃된 이러한 셀들은 빠른 C 셀들이다. 결정 단계 818은 소정 개수(N2)의 프로그램 펄스들이 인가되었는지 또는 C 셀들 중 일부분 혹은 소정 개수(N3)가 VV-CLL에 도달했는지를 판별한다. 다른 옵션은 C 셀들의 일부 개수 또는 일부분이 VV-CLL에 도달했고 소정 개수의 추가 프로그램 펄스들이 인가됐는지를 판별하는 것이다. 두 경우 모두 참이 아니면, 다음 프로그램 펄스가 단계 820에서 적용되며, 이는 ΔV3만큼 이전 펄스를 증가시키는 것이다. 그 다음에 프로세스는 단계 816으로 되돌아 간다. 결정 단계 818이 참이면, 제1 프로그래밍 패스의 페이즈 3이 단계 822에서 시작한다. 이때, 느린 C 셀들을 제외한 모든 셀들이 프로그래밍으로부터 일시적으로 록 아웃된다(예를 들어, A, B 그리고 빠른 C 셀들이 록 아웃된다). 단계 824는 프로그램 펄스를 적용하는 것을 포함하며, 이는 ΔV4만큼 이전 펄스로부터 증가된다.
단계 826은 VV-C에서 검증을 수행하고 그리고 VTH > VV-C 인 느린 C 셀들을 영구적으로 록 아웃하는 것을 포함한다. 영구적인 록 아웃은, 현재 프로그래밍 동작 전체에 대한 록 아웃을 지칭한다. 결정 단계 828은 느린 C 셀들 모두가 상태 C에 도달했는지 또는 소정 개수(N4)의 프로그램 펄스들이 인가됐는지를 판별한다. 본 명세서에서 언급되는 프로그램 펄스들의 개수(예를 들어, N1 내지 N8)는, 현재 페이즈에서의 프로그램 펄스들에 관해서 및/또는 현재 프로그래밍 패스에서의 프로그램 펄스들의 전체 개수에 관하여 표현될 수도 있음을 유의해야 한다. 결정 단계 828에서 두 경우 모두 참이 아니면, 다음 프로그램 펄스가 단계 830에서 적용되며, 이는 ΔV5만큼 이전 펄스를 증가시키는 것이다. 다음으로 프로세스는 단계 826으로 되돌아 간다. 결정 단계 828이 참이면, 페이즈 4와 제2 프로그래밍 패스가 단계 832에서 시작한다. 이때, A, B 및 빠른 C 셀들이 그들의 일시적인 록아웃으로부터 복원되며, 이에 따라 이들이 프로그래밍될 수 있다. 프로세스는 도 8b에서 계속한다.
도 8b에서, 단계 840은 최하위 VPGM로 또는, 다른 초기 VPGM 값으로 다시 시작하는 프로그램 펄스를 적용하는 것을 포함한다. 단계 842는 VV-A에서 검증을 수행하고, VTH > VV-A를 위해 A 셀들을 일시적으로 록 아웃하는 것을 포함한다. 결정 단계 844는 모든 A 셀들이 상태 A에 도달했는지 또는 소정 개수(N5)의 프로그램 펄스들이 인가됐는지를 판별한다. 두 경우 모두 참이 아니면, 다음 프로그램 펄스가 단계 846에서 적용되며, 하나의 가능한 방식에서, 이는 ΔV1만큼 이전 펄스를 증가시킨 것이다. 그 다음에 프로세스는 단계 842로 되돌아 간다. 결정 단계 844가 참이면, 페이즈 5가 단계 848에서 시작하며, 이 경우에는, 증분 ΔV1 를 이용하여, 다음 프로그램 펄스가 단계 850에서 인가된다. 단계 852는 VV-A와 VV-B에서 검증 동작들을 수행하는 것을 포함하며 그리고 각각 VTH > VV-A 또는 VTH > VV-B 인 경우에 A 셀과 B 셀들을 영구적으로 록 아웃하는 것을 포함한다. 결정 단계 854는 모든 A와 B 셀들이 상태 A와 B에 각각 도달했는지 또는 소정 개수(N6)의 프로그램 펄스들이 인가됐는지를 판별한다. 두 경우 모두 참이 아니면, 다음 프로그램 펄스가 단계 856에서 적용되며, 이는 ΔV1만큼 이전 펄스를 증가시킨 것이다. 그 다음에 프로세스는 단계 852로 되돌아 간다. 결정 단계 854가 참이면, 페이즈 6이 단계 858에서 시작하며, 이 경우 증분 ΔV1 을 이용하여, 다음 프로그램 펄스가 단계 860에서 인가된다.
단계 862는 VV-A, VV-B 및 VV-C 에서 검증 동작들을 수행하는 것을 포함하며, 그리고 의도된 상태(예를 들어, 각각 VTH > VV-A, VTH > VV-B 및 VTH > VV-C)에 도달한 A, B 그리고 C 셀들을 영구적으로 록 아웃하는 것을 포함한다. 결정 단계 864는 모든 A, B 그리고 C 셀들이 의도된 상태 A, B 또는 C에 도달했는지 또는 소정 개수(N7)의 프로그램 펄스들이 인가됐는지를 판별한다. 두 경우 모두 참이 아니면, 다음 프로그램 펄스가 단계 866에서 적용되며, 이는 ΔV1 만큼 이전 펄스를 증가시킨 것이다. 그 다음에 프로세스는 단계 862로 되돌아 간다. 결정 단계 864가 참이면, 제2 프로그래밍 패스의 최종 페이즈인, 페이즈 7이 단계 868에서 시작하며, 이 경우, 증분 ΔV1 을 이용하여 다음 프로그램 펄스가 단계 870에서 인가된다. 단계 872는 VV-B 및 VV-C 에서 검증 동작들을 수행하는 것을 포함하며 그리고 의도된 상태(예를 들어, 각각 VTH > VV-B 및 VTH > VV-C)에 도달한 B 셀 및 C 셀을 영구적으로 록 아웃하는 것을 포함한다. 결정 단계 874는 모든 B와 C 셀들이 상태 B와 C에 각각 도달했는지 또는 소정 개수(N8)의 프로그램 펄스들이 인가됐는지를 판별한다. 두 경우 모두 참이 아니면, 다음 프로그램 펄스가 단계 876에서 적용되며, 이는 ΔV1만큼 이전 펄스를 증가시킨 것이다. 그 다음에 프로세스는 단계 872로 되돌아 간다. 결정 단계 874가 참이면, 프로그래밍은 단계 878에서 완료된다.
도 9a는 여러 가지 프로그래밍 조건이 각각의 패스에서 사용되는, 다중-패스 프로그래밍 프로세스를 나타낸다. 논의된 바와 같이, 여러 가지 프로그램 조건들은 프로그래밍 패스의 여러 페이즈들 또는 부분들에서 및/또는 여러 프로그래밍 패스들에서 구현될 수 있다. 이것은 성능, 분포 넓이 및 프로그램-혼란 특성들과 같은 목표들을 위해 그들의 2개의 프로그래밍 패스들 또는 부분들을 최적화하는 것을 허용할 수 있다. 프로그래밍 조건의 예제들은: 프로그램 펄스 스텝 사이즈, 프로그램 펄스 기간, 프로그램-금지 파라미터들, 채널 부스팅 모드들, 패스 전압들, 정밀 프로그래밍 모드에서 프로그램 펄스들의 최대 허용 개수 및, 그리고 가령, 정밀 프로그래밍 모드 동안에 사용되는 비트라인 전압 등을 포함한다. 단계 900은 제1 프로그래밍 패스를 시작하는 것을 포함한다. 단계 902는 제1 프로그래밍 조건을 구현하는 것을 포함한다. 단계 904는 C 셀들을 프로그래밍하고, 빠른 C 셀들을 록 아웃하는 것을 포함한다. 단계 906은 느린 C 셀들을 프로그래밍하는 것을 포함한다. 단계 908은 제2 프로그래밍 패스를 시작하는 것을 포함한다. 단계 910은 제2 프로그래밍 조건을 구현하는 것을 포함하며, 이는 제1 프로그래밍 조건과는 다르다. 단계 912는 A, B 그리고 빠른 C 셀들을 프로그래밍하는 것을 포함한다.
도 9b는 하이 상태 셀들이 낮은 상태 셀들보다 이전에 프로그래밍되는, 다중-패스 프로그래밍 프로세스를 나타낸다. 비록, 예시적인 구현예들에서는 4개의 데이터 상태들이 사용되고 상태 C가 최상위 데이터 상태이지만, 다른 구현예들도 가능하다. 예를 들어, 8개 또는 16개의 데이터 상태들을 사용하는 것이 가능하다. 또한, 하나 이상의 하이 상태에 대해서 빠른-느린(fast-low) 기술을 수행하는 것이 가능하다. 예를 들어, 8개의 데이터 상태들에 대해, 2개의 최상위 상태들이 본 명세서에서 논의된 기술들을 이용하여 먼저 프로그래밍될 수 있다. 이러한 경우에, 2개의 최상위 상태들의 빠르고 느린 셀들이 제1 프로그래밍 패스에서 판별되고, 빠른 셀들은 록 아웃되는 반면에 느린 셀들은 완전히 프로그래밍된다. 제2 프로그래밍 패스에서는, 상기 2개의 최상위 상태들에서의 빠른 셀들과 함께 다른 모든 셀들이 의도된 최종 상태로 프로그래밍된다. 다양한 다른 방식들이 또한 가능하다.
단계 920은 제1 프로그래밍 패스를 시작하는 것을 포함한다. 단계 922는 셀들을 중간 상태 (예를 들어, LM 상태)로 프로그래밍하는 것을 포함한다. 단계 924는 하위 상태 셀들을 프로그래밍하고, 그들이 검출된 이후에 빠른 하이 상태 셀들을 록 아웃하는 것을 포함한다. 단계 926은 느린 하이 상태 셀들을 프로그래밍하는 것을 포함한다. 단계 928은 제2 프로그래밍 패스를 시작하는 것을 포함한다. 단계 930은 빠른 하이 상태 셀들을 포함하는, 나머지 셀들을 프로그래밍하는 것을 포함한다.
도 10은 서로 다른 3개의 프로그래밍 기법들에 대한, 프로그램 펄스의 개수 대 검증 레벨의 테이블을 나타낸다. 케이스 1(case #1)은 도 16과 관련하여 아래에서 논의된 바와 같은 하나의 패스 프로그래밍 기술(one-pass programming technique)을 지칭한다. 케이스 2(case #2)는 도 7a와 도 7b와 관련하여 앞서 논의된 바와 같은 다중 패스 프로그래밍 기술(multi-pass programming technique)을 지칭한다. 케이스 3(case #3)은 도 7c와 도 7d와 관련하여 앞서 논의된 바와 같은 다중 패스 프로그래밍 기술을 참조한다. 가장 왼쪽의 열은 1에서 22까지인 프로그램 펄스들의 개수를 나타낸다. 검증 레벨들 A, B 및 C는 상태 A, B 및 C에 대한 VV-A, VV-B 및 VV-C를 각각 나타낸다. 또한, 비정밀/정밀 프로그래밍이 사용되는 경우, 비정밀 검증 레벨들 A, BL 및 CL 은 상태들 A, B 및 C에 대한 VV-AL, VV-BL 및 VV-CL를 각각 나타내며(도 6g 참조), VV-A, VV-B 그리고 VV-C은 정밀 검증 레벨들이다. CLL은 검증 레벨(VV-CLL)을 나타낸다.
케이스 1은 VV-A 및/또는 VV-AL에서 13개의 검증 동작들, VV-B 및/또는 VV-BL에서 13개의 검증 동작들, 그리고 VV-C 및/또는 VV-CL에서 11개의 검증 동작들, 총 63개의 검증 동작들을 포함한다. 또한, 22개의 프로그램 루프들 (예를 들어, 프로그램 펄스들)이 적용된다. 따라서, 총 85개의 동작들이 수행된다. 케이스 2는 VV-C에서 11개의 동작들, VV-A 및/또는 VV-AL에서 13개의 동작들, 그리고 VV-B 및/또는 VV-BL에서 13개의 동작들, 총 63개의 검증 동작들을 포함한다. 또한, 30개의 프로그램 펄스들(전체로, 2개의 프로그래밍 패스들을 통해)이 적용된다. 따라서, 총 93개의 동작들이 수행된다. 케이스 3은 VV-CLL에서 4개의 검증 동작들, VV-A 및/또는 VV-AL에서 13개의 검증 동작들, VV-B 및/또는 VV-BL에서 13개의 검증 동작들, 그리고 VV-CL 및/또는 VV-C에서 8개의 검증 동작들, 총 65개의 검증 동작들을 포함한다. 또한, 24개의 프로그램 펄스들 (전체로, 2개의 프로그래밍 패스들을 통해)이 적용된다. 따라서, 총 89개의 동작들이 수행된다. 따라서, 케이스 3은 케이스 2와 비교하여 6개의 추가적인 프로그램 펄스들을 적용하는 것에 포함된 시간을 절약한다. 실현될 수 있는 시간 절약은 다른 응용예들에서 심지어 더 클 수 있다.
도 11은 도 1과 도 2에 도시된 그것들과 같은, NAND 저장소자들의 어레이(1100)의 예제를 나타낸다. 각각의 열(column)을 따라서, 비트라인(1106)이 NAND 스트링(1150)의 드레인 선택 게이트의 드레인 터미널(1126)에 연결된다. NAND 스트링들의 각각의 행(row)을 따라서, 소스 라인(1104)이 NAND 스트링들의 소스 선택 게이트들의 모든 소스 터미널들(1128)을 연결할 수 있다. NAND 아키텍처 어레이와 메모리 시스템의 일부분으로서의 그 동작의 예제는 미국등록특허 제5,570,315호, 제5,774,397호 및, 제6,046,935호에서 찾아볼 수 있다.
저장소자들의 어레이는 많은 수의 저장소자들의 블록들로 나뉜다. 플래시 EEPROM 시스템들에 대해서도 공통적인 바와 같이, 블록은 소거의 단위(unit)이다. 즉, 각각의 블록은 함께 소거되는 최소 개수의 저장소자들을 포함한다. 각각의 블록은 전형적으로 다수의 페이지로 나뉜다. 페이지는 프로그래밍의 단위이다. 일 실시예에서, 개별 페이지들은 세크먼트들(segments)로 나뉠 수 있고, 세그먼트들은 가장 적은 개수의 저장소자들을 포함할 수 있으며, 이는 기본 프로그래밍 동작으로서 한 번에 쓰이는 것이다. 하나 이상의 페이지들의 데이터는 저장소자들의 하나의 행에 전형적으로 저장된다. 페이지는 하나 이상의 섹터들(sectors)을 저장할 수 있다. 섹터는 사용자 데이터와 오버헤드 데이터(overhead data)를 포함한다. 오버헤드 데이터는 에러 정정 코드(Error Correction Code : ECC)를 전형적으로 포함하며, 이는 섹터의 사용자 데이터로부터 계산된다. 데이터가 어레이 내로 프로그래밍될 때, 컨트롤러(아래에서 기술됨)의 일부가 ECC를 계산하고, 또한 데이터가 어레이로부터 읽혀질 때 그것을 확인한다. 대안적으로, ECC들 및/또는 다른 오버헤드 데이터는, 그들이 관계하는 사용자 데이터와는 상이한 페이지들에 저장되며, 심지어 상이한 블록들에 저장된다.
사용자 데이터의 섹터는 전형적으로 512 바이트이며, 이는 마그네틱 디스크 드라이브들의 하나의 섹터의 크기에 대응한다. 오버헤드 데이터는 전형적으로 추가적인 16 내지 20 바이트들이다. 많은 개수의 페이지들이 블록을 구성하는바, 예를 들어 8 페이지에서 32, 64, 128, 또는 그 이상의 페이지들까지 블록을 구성한다. 일부 실시예들에서, NAND 스트링들의 행은 블록을 포함한다.
메모리 저장소자들은 p-웰을 충분한 시간 동안 소거 전압 (예를 들어, 14 내지 22V)으로 상승시키고, 선택된 블록의 워드라인들을 접지시키고, 반면에 소스와 비트라인들은 플로팅시킴으로써, 일 실시예에서 소거된다. 용량성 커플링(capacitive coupling) 때문에, 비선택된 워드라인들, 비트라인들, 선택된 라인들 그리고 c-소스가 소거 전압의 상당한 부분까지 또한 상승된다. 따라서, 강전계(strong electric field)가 선택된 저장소자들의 터널 산화물 레이어들(tunnel oxide layers)에 인가되며, 그리고 플로팅 게이트들의 전자들이 전형적으로 파울러-노드하임 터널링 메카니즘(Fowler-Nordheim tunneling mechanism)에 의해, 기판측으로 방출됨에 따라, 선택된 저장소자들의 데이터가 소거된다. 전자들이 플로팅 게이트로부터 p-웰 영역으로 전송됨에 따라, 선택된 저장소자의 임계 전압이 낮아진다. 소거(erasing)는 전체 메모리 어레이, 개별적인 블록들, 또는 저장소자들의 다른 유닛 상에서 수행될 수 있다.
도 12는 단일 행/열 디코더들 그리고 읽기/쓰기 회로들을 이용하는 비휘발성 메모리 시스템의 블록 다이어그램이다. 다이어그램은 본 발명의 일 실시예에 따른, 병렬로 저장소자들의 페이지를 읽고 프로그래밍하기 위한 읽기/쓰기 회로들을 갖는 메모리 디바이스(1296)를 나타낸다. 메모리 디바이스(1296)는 하나 이상의 메모리 다이(1298)를 포함할 수 있다. 메모리 다이(memory die)(1298)는 저장소자들(1100)의 2D 어레이(two-dimensional array), 제어 회로(1210) 및, 읽기/쓰기 회로들(1265)을 포함한다. 일부 실시예들에서, 저장소자들의 어레이는 3D(three dimensional)일 수 있다. 메모리 어레이(1100)는 행 디코더(1230)를 통해 워드라인들에 의해 어드레스할 수 있고, 열 디코더(1260)를 통해 비트라인들에 의해 어드레스할 수 있다. 읽기/쓰기 회로들(1265)은 다중 감지 블록들(multiple sense blocks)(1200)을 포함하고, 저장소자들의 페이지가 병렬로 읽혀지거나 또는 프로그래밍되는 것을 허용한다. 전형적으로 컨트롤러(1250)는 하나 이상의 메모리 다이(1298)와 같은 동일한 메모리 디바이스(1296)(예를 들어, 착탈 가능한 저장 카드)에 포함된다. 명령어들(commands)과 데이터는 라인들(1220)을 통해 호스트와 컨트롤러(1250) 사이에 전송되고, 라인들(1218)을 통해 컨트롤러와 하나 이상의 메모리 다이(1298) 사이에 전송된다.
제어 회로(1210)는 메모리 어레이(1100) 상에서 메모리 동작들을 수행되도록 읽기/쓰기 회로들(1265)과 협력한다. 제어 회로(1210)는 상태 머신(state machine)(1212), 온-칩 어드레스 디코더(on-chip address decoder)(1214) 및, 전력 제어 모듈(power control module)(1216)을 포함한다. 상태 머신(1212)은 미리-충전하는(pre-charging) 것을 제어하는 것을 포함하는, 메모리 동작들의 칩-레벨 제어를 제공한다. 온-칩 어드레스 디코더(1214)는 호스트 또는 메모리 컨트롤러에 의해 사용된 그것 사이의 어드레스 인터페이스를 디코더들(1230과 1260)에 의해 사용된 하드웨어 어드레스에 제공한다. 전력 제어 모듈(1216)은 메모리 동작들 동안에 워드라인들과 비트라인들에 공급되는 전력과 전압들을 제어한다.
일부 실시예들에서, 도 12의 일부 구성 요소들이 결합될 수 있다. 다양한 설계들에서, 저장소자 어레이(1100)를 제외한, 하나 이상의 구성 요소들(홀로 또는 결합으로)은 관리 회로(managing circuit)로 생각될 수 있다. 예를 들어, 하나 이상의 관리 회로들은 제어 회로(1210), 상태 머신(1212), 디코더들(1214/1260), 전력 제어(1216), 감지 블록들(1200), 읽기/쓰기 회로들(1265), 컨트롤러(1250), 기타 등등 중에서 임의의 하나 또는 그의 결합을 포함할 수 있다.
도 13은 듀얼 행/열 디코더들 및 읽기/쓰기 회로들을 이용하는 비휘발성 메모리 시스템의 블록 다이어그램이다. 이때, 도 12에 도시된 메모리 디바이스(1296)의 다른 배열이 제공된다. 다양한 주변 회로들에 의해 메모리 어레이(1100)에 대한 액세스가, 어레이의 반대 측면에서, 대칭 방식(symmetric fashion)으로 구현되며, 이에 따라 각각의 측면 상에서 액세스 라인들(access lines)과 회로의 밀도가 반으로 감소된다. 따라서, 행 디코더는 행 디코더 1230A와 1230B로 나뉘며, 그리고 열 디코더는 열 디코더 1260A와 1260B로 나뉜다. 유사하게, 읽기/쓰기 회로들은 하부로부터 비트라인들에 연결하는 읽기/쓰기 회로들 1265A과 어레이(1100)의 상부로부터 비트라인들에 연결하는 읽기/쓰기 회로들(1265B)로 나뉜다. 이런 식으로, 읽기/쓰기 모듈들의 밀도는 반만큼 본질적으로 감소된다. 도 13의 디바이스는 도 12의 디바이스에 대해 앞서 기재된 바와 같이, 컨트롤러를 또한 포함할 수 있다.
도 14는 감지 블록의 하나의 실시예를 나타내는 블록 다이어그램이다. 검증 및 읽기와 같은 감지 동작들은 감지 블록을 포함한다. 개개의 감지 블록(1200)은 감지 모듈(1280)이라 부르는, 코어부(core portion)와, 공통부(common portion)(1290)로 나뉜다. 일 실시예에서, 각각의 비트라인에 대해 개별적인 감지 모듈(separate sense module)(1280)과 다중 감지 모듈들(1280)의 세트에 대해 하나의 공통부(1290)가 있을 것이다. 일 예제에서, 감지 블록은 하나의 공통부(1290)와 8개의 감지 모듈들(1280)을 포함할 수 있다. 하나의 그룹에서 개개의 감지 모듈들은 데이터 버스(1272)를 통해 관련된 공통부와 통신할 수 있다. 추가적인 상세한 설명에 대해서는, 미국 공개 특허 출원 번호 2006/0140007호를 참조하며, 그것의 전체 내용은 참고로서 본 명세서에서 통합된다.
감지 모듈(1280)은 감지 회로(1270)를 포함하며, 이는 연결된 비트라인에서 전도 전류(conduction current)가 미리 결정된 임계 레벨 위인지 또는 아래인지를 판별한다. 감지 모듈(1280)은 비트라인 래치(bit line latch)(1282)를 또한 포함하며, 이는 연결된 비트라인 상에서 전압 조건을 결정하기 위해 사용된다. 예를 들어, 비트라인 래치(1282)에서 래치된 미리 결정된 상태는 프로그램 금지를 나타내는 상태(예를 들어, 1.5 내지 3V)로 연결된 비트라인을 끌어올리는 것에 의해 얻을 수 있다.
공통부(1290)는 프로세서(1292), 데이터 래치들(1294)의 세트 및, 데이터 래치들(1294)의 세트와 데이터 버스(1220) 사이에 연결되는 I/O 인터페이스(1296)를 포함한다. 프로세서(1292)는 계산들(computations)을 수행한다. 예를 들어, 그것의 기능들 중 하나는 감지된 저장소자에 저장된 데이터를 판별하고, 데이터 래치들의 세트에서 판별된 데이터를 저장하는 것이다. 데이터 래치들(1294)의 세트는 읽기 동작 동안, 프로세서(1292)에 의해 판별된 데이터 비트들을 저장하기 위해 사용된다. 그것은 프로그램 동작 동안, 데이터 버스(1220)로부터 읽어들인 데이터 비트들을 저장하기 위해 또한 사용된다. 읽어들인 데이터 비트들은 메모리 내에 프로그래밍되는 것을 의미하는 쓰기 데이터를 나타낸다. I/O 인터페이스(1296)는 데이터 래치들(1294)과 데이터 버스(1220) 사이의 인터페이스를 제공한다.
읽기 또는 감지 동안, 시스템의 동작은 상태 머신(1212)의 제어하에 있으며, 이는 어드레스된 저장소자에 대해 여러 가지 제어 게이트 전압들의 공급을 제어하는 것이다. 메모리에 의해 지원되는 다양한 메모리 상태들에 대응하는 다양한 미리 정의된 제어 게이트 전압들을 통과(step through)함에 따라서, 감지 모듈(1280)은 이러한 전압들 중 어느 하나로 트립(trip)될 수 있고, 출력은 버스(1272)를 통해 감지 모듈(1280)로부터 프로세서(1292)로 제공될 것이다. 이때, 프로세서(1292)는 감지 모듈의 트립핑 이벤트(들)(tripping event(s))과 입력 라인들(1293)을 통해 상태 머신으로부터 인가된 제어 게이트 전압에 관한 정보를 고려함으로써, 결과로서 생기는 메모리 상태(resultant memory state)를 판별한다. 그 다음에 메모리 상태에 대한 바이너리 인코딩을 계산하고, 그 결과로서 생기는 데이터 비트들을 데이터 래치들(1294) 내에 저장한다. 공통부의 다른 실시예에서, 비트라인 래치(1282)는 이중 임무(double duty)를 수행하며, 이는 감지 모듈(1280)의 출력을 래칭하기 위한 래치로서의 임무 및 또한 앞서 기재된 바와 같은 비트라인 래치로서의 임무 모두를 수행한다.
일부 구현들은 다중 프로세서들(1292)을 포함할 수 있는 것으로 예상된다. 일 실시예에서, 각각의 프로세서(1292)는 출력 라인(도시되지 않음)을 포함할 수 있으며, 이에 따라 개개의 출력 라인들과 함께 와이어-OR'd(wired-OR'd)이다. 일부 실시예들에서, 출력 라인들은 와이어-OR 라인에 연결되기 이전에 반전(invert)된다. 이러한 구성은 프로그램 검증 프로세스 동안, 프로그래밍 프로세스가 언제 완료됐는지에 대한 빠른 판별을 가능하게 하며, 이는 와이어-OR를 수신하는 상태 머신이 프로그래밍되는 모든 비트들이 언제 원하는 레벨에 도달했는지를 판별할 수 있기 때문이다. 예를 들어, 각각의 비트가 그것의 원하는 레벨에 도달했을 때, 그 비트에 대한 로직 0이 와이어-OR 라인으로 보내질 것이다. (또는 데이터 1이 인버트된다.) 모든 비트들이 데이터 0 (또는 데이터 1이 인버트됨)을 출력하면, 그 다음에 상태 머신은 프로그래밍 프로세스를 종료해야함을 알게 된다. 각각의 프로세서가 8개의 감지 모듈들과 통신하기 때문에, 상태 머신은 와이어-OR 라인을 8번 판독하는 게 필요하거나 또는, 로직이 관련된 비트라인들의 결과들을 축적하도록 프로세서(1292)에 추가되며, 이에 따라 상태 머신은 와이어-OR 라인을 한 번만 판독하는 게 필요하다. 유사하게, 로직 레벨들을 정확하게 선택함으로써, 글로벌 상태 머신은 제1 비트가 언제 그것의 상태를 변경시키는지를 검출할 수 있고, 따라서 그 알고리즘들을 변경시킬 수 있다.
프로그램 또는 검증 동안에, 프로그래밍되는 데이터는 데이터 버스(1220)로부터 데이터 래치들(1294)의 세트에 저장된다. 상태 머신의 제어하에서, 프로그램 동작은 어드레스된 저장소자들의 제어 게이트들에 적용되는 일련의 프로그래밍 전압 펄스들을 포함한다. 각각의 프로그래밍 펄스에 뒤이어서, 저장소자가 원하는 메모리 상태로 프로그래밍됐는지를 판별하는 읽기 백(read back) (검증)이 수반된다. 프로세서(1292)는 원하는 메모리 상태와 관련하여, 읽기 백 메모리 상태(read back memory state)를 감시한다. 2개가 일치하면, 프로세서(1292)는 비트라인 래치(1282)를 설정하며, 이는 프로그램 금지를 나타내는 상태로 비트라인을 끌어올리기(pull) 위함이다. 이는, 비트라인에 연결되는 저장소자에 대한 추가 프로그래밍을 금지시키며, 심지어 프로그래밍 펄스들이 그것의 제어 게이트 상에 나타나더라도 프로그래밍이 금지된다. 다른 실시예들에서, 프로세서는 비트라인 래치(1282)를 초기에 로드(load)하며, 감지 회로는 검증 프로세스 동안 그것을 금지 값(inhibit value)으로 설정한다.
데이터 래치 스택(data latch stack)(1294)은 감지 모듈에 대응하는 데이터 래치들의 스택을 포함한다. 일 실시예에서, 감지 모듈(1280)당 3개의 데이터 래치들이 존재한다. 일부 구현들(하지만 필수적인 것은 아님)에서, 데이터 래치들은 시프트 레지스터(shift register)로 구현되며, 이에 따라 거기에 저장되는 병렬 데이터가 데이터 버스(1220)에 대해 직렬 데이터로 변환되며, 그리고 그 반대의 경우도 가능하다. 바람직한 실시예에서, m개의 저장소자들의 읽기/쓰기 블록에 대응하는 모든 데이터 래치들은 함께 링크되어 블록 시프트 레지스터(block shift register)를 형성할 수 있으며, 이에 따라 데이터의 블록이 직렬 전송(serial transfer)에 의해 입력 또는 출력될 수 있다. 특히, 읽기/쓰기 모듈들의 뱅크(bank)가 적용되며, 이에 따라 개개의 그것의 데이터 래치들의 세트가 데이터 버스의 내부로 또는 데이터 버스로부터 밖으로 데이터를 차례로 시프트시킬 수 있으며, 이는 마치 그들이 전체 읽기/쓰기 블록을 위해 시프트 레지스터의 일부분인 것처럼일 수 있다.
비휘발성 저장 디바이스들의 다양한 실시예들의 구조 및/또는 동작들에 관한 추가적인 정보는 미국등록특허번호 제7,196,931호, 미국등록특허번호 제7,023,736호, 미국등록특허번호 제7,046,568호, 미국등록특허번호 제7,196,928호 및 미국등록특허번호 제7,327,619호에서 찾을 수 있다. 즉시 앞서-리스트된 특허 문서들 모두는 그의 전체 내용이 참조로서 본 명세서에서 통합된다.
도 15는 모든 비트라인 메모리 아키텍처(all bit line memory architecture) 또는 홀수-짝수 메모리 아키텍처(odd-even memory architecture)에 대한 블록들 내의 메모리 어레이의 조직의 예제를 나타낸다. 메모리 어레이(1100)의 예시적인 구조들이 설명된다. 하나의 예제로서, NAND 플래시 EEPROM가 설명되며, 이는 1,024개의 블록들로 나뉜다. 각각의 블록에 저장된 데이터는 동시에 소거될 수 있다. 일 실시예에서, 블록은 동시에 소거되는, 저장소자들의 최소 단위이다. 이러한 예제에서, 각각의 블록에는, 비트라인들(BLO, BLl, ... BL8511)에 대응하는 8,512개의 열들이 있다. 모든 비트라인(all bit line : ABL) 아키텍처 (아키텍처 1510)라 부르는 일 실시예에서, 하나의 블록의 모든 비트라인들이 읽기 및 프로그램 동작들 동안에, 동시에 선택될 수 있다. 공통 워드라인을 지나고(along) 임의의 비트라인에 연결되는 저장소자들은 동시에 프로그래밍될 수 있다.
제공되는 예제에서, 4개의 저장소자들이 NAND 스트링을 형성하도록 직렬로 연결된다. 4개의 저장소자들이 각각의 NAND 스트링에 포함되도록 도시되더라도, 4개보다 더 많거나 더 적은 저장소자들(예를 들어, 16개, 32개, 64개 또는 다른 개수)이, 사용될 수 있다. NAND 스트링의 하나의 터미널은 (선택 게이트 드레인 라인들(select gate drain lines : SGD)에 연결되도록) 드레인 선택 게이트(drain select gate)를 통해 대응하는 비트라인에 연결되며, 다른 터미널은 (선택 게이트 소스 라인들(select gate source line : SGS)에 연결되도록) 소스 선택 게이트(source select gate)를 통해 c-소스에 연결된다.
다른 실시예에서, 홀수-짝수 아키텍처 (아키텍처 1500)라 부르는, 비트라인들은 짝수 비트라인들(even bit lines : BLe)과 홀수 비트라인들(odd bit lines : BLo)로 나뉜다. 홀수/짝수 비트라인 아키텍처에서, 공통 워드라인을 지나고 홀수 비트라인들에 연결되는 저장소자들은 한번에 프로그래밍되며, 반면에 공통 워드라인을 지나고 짝수 비트라인들에 연결되는 저장소자들은 다른 한 번에 프로그래밍된다. 각각의 블록에서, 이러한 예제에서, 8,512개의 열들이 있으며, 이는 짝수 열들과 홀수 열들로 나뉜다. 이러한 예제에서, 4개의 저장소자들은 NAND 스트링을 형성하도록 직렬로 연결되어 도시된다. 4개의 저장소자들이 각각의 NAND 스트링에 포함되도록 도시되더라도, 4개보다 더 많거나 더 적은 저장소자들이 사용될 수 있다.
읽기 및 프로그래밍 동작들의 하나의 구성 동안, 4,256개의 저장소자들이 동시에 선택된다. 선택된 저장소자들은 동일한 워드라인과 동일 종류의 비트라인 (예를 들어, 짝수 또는 홀수)을 가진다. 따라서, 논리 페이지(logical page)를 형성하는, 532 바이트의 데이터는, 동시에 판독되거나 프로그래밍될 수 있으며, 메모리의 하나의 블록은 적어도 8개의 논리 페이지들 (4개의 워드라인들, 각각의 홀수 및 짝수 페이지들을 가짐)을 저장할 수 있다. 다중-상태 저장소자들에 대해, 각각의 저장소자가 2 비트의 데이터를 저장하는 경우에, 여기서 개개의 이러한 2 비트는 서로 다른 페이지에 저장되며, 하나의 블록은 16개의 논리 페이지들을 저장한다. 다른 크기의 블록들과 페이지들이 또한 사용될 수 있다.
ABL 또는 홀수-짝수 아키텍처에 대해, 저장소자들은 p-웰을 소거 전압 (예를 들어, 20V)으로 상승시킴으로써 그리고 선택된 블록의 워드라인들을 접지시킴으로써, 소거될 수 있다. 소스와 비트라인들은 플로팅(floating)이다. 소거는 전체 메모리 어레이, 개별적인 블록들, 또는 저장소자들의 다른 유닛 상에서 수행될 수 있으며, 이는 메모리 디바이스의 일부분이다. 전자들(electrons)은 저장소자들의 플로팅 게이트들로부터 p-웰 영역으로 전달되며, 이에 따라 저장소자들의 VTH는 음으로(negative) 된다.
읽기 및 검증 동작들에서, 선택 게이트들 (SGD 및 SGS)은 2.5V 내지 4.5V의 범위인 전압으로 연결되며, 비선택 워드라인들 (예를 들어, WL2가 선택 워드라인일 때, WL0, WL1 및 WL3)은 패스 게이트들(pass gates)로 동작하는 트랜지스터들을 만들도록 읽기 패스 전압(read pass voltage)(VREAD)(전형적으로 4.5V 내지 6V의 범위인 전압)으로 상승된다. 선택된 워드라인 WL2는 전압으로 연결되며, 이러한 레벨은, 관련된 저장소자의 VTH가 이러한 레벨보다 위 또는 아래에 있는지를 판별하도록 각각의 읽기 및 검증 동작에 대해 지정된다. 예를 들어, 2 레벨 저장소자에 대한 읽기 동작에서, 선택된 워드라인 WL2는 접지될 수 있으며, 이에 따라 그것은 VTH가 0V보다 큰지를 검출하게 된다. 2 레벨 저장소자에 대한 검증 동작에서, 선택된 워드라인 WL2는 예를 들어, 0.8V로 연결되며, 이에 따라 그것은 VTH가 적어도 0.8V에 도달했는지 또는 아닌지를 검증하게 된다. 소스 및 p-웰은 0V에 존재한다. 짝수 비트라인들(BLe)로 추정되는, 선택된 비트라인들은, 예를 들어, 0.7V의 레벨로 미리-충전된다. VTH가 워드라인 상에서 읽기 또는 검증 레벨보다 크면, 중요한 저장소자와 관계되는 비트라인(BLe)의 전위 레벨은 하이 레벨을 유지하며, 이는 비-전도성 저장소자(non-conductive storage element)이기 때문이다. 이에 반해, VTH가 읽기 또는 검증 레벨보다 작으면, 관계되는 비트라인(BLe)의 전위 레벨은 로우 레벨, 예를 들어, 0.5V 보다 작게 감소되며, 이는 전도성 저장소자(conductive storage element)가 비트라인을 방전하기 때문이다. 이에 의하면, 저장소자의 상태는 전압 비교기 감지 증폭기(voltage comparator sense amplifier)에 의해 감지될 수 있으며, 이는 비트라인에 연결된다.
앞서 설명된 소거, 읽기 및 검증 동작들은 분야에서 알려진 기술에 따라 수행된다. 따라서, 설명되는 많은 상세한 설명들이 분야에서 숙련된 자에 의해 다양화될 수 있다. 분야에서 알려진 다른 소거, 읽기 및 검증 기술들이 또한 사용될 수 있다.
도 16은 임계 전압 분포들의 세트와 하나의-패스 프로그래밍을 도시한다. 저장소자 어레이에 대한 VTH 분포는 경우를 위해 제공되며, 이는 각각의 저장소자가 2 비트의 데이터를 저장하는 것이다. 첫번째 임계 전압 분포(E)는 소거 저장소자들을 위해 제공된다. 저장소자들을 프로그래밍하기 위한 3개의 임계 전압 분포들(A, B, C)이 또한 도시된다. 일 실시예에서, E 분포에서의 임계 전압들은 음이며, A, B 및 C 분포에서의 임계 전압들은 양이다.
각각의 상이한 임계 전압 범위는 데이터 비트들의 세트에 대해 미리 결정된 값들에 대응한다. 저장소자 내에 프로그래밍되는 데이터와 저장소자의 임계 전압 레벨들 간의 특정한 관계는 저장소자들에 대해 채택되는 데이터 인코딩 방식에 의존한다. 예를 들어, 미국등록특허번호 제6,222,762호와 제7,237,074호는 다중-상태 플래시 저장소자들을 위한 다양한 데이터 인코딩 방식들을 개시하며, 그 전체 내용이 참조로서 본 명세서에서 통합된다. 일 실시예에서, 데이터 값들은 그레이 코드 할당(Gray code assignment)을 이용하여 임계 전압 범위들에 할당되며, 이에 따라 플로팅 게이트의 임계 전압이 그것의 인접한 물리적인 상태로 잘못 시프트하면, 하나의 비트만이 영향을 받을 것이다. 하나의 예제는 "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 중 어느 하나로 직접 프로그래밍될 수 있다. 예를 들어, 프로그래밍될 저장소자들의 집단(population)이 먼저 소거될 수 있으며, 이에 따라 집단 내의 모든 저장소자들이 소거 상태 E에 있게 된다. 도20의 제어 게이트 전압 시퀀스에 의해 도시된 바와 같은, 일련의 프로그래밍 펄스들이 그 다음에 상태들 A, B 또는 C 로 저장소자들을 직접 프로그래밍하도록 사용될 수 있다. 일부 저장소자들은 상태 E로부터 상태 A로 프로그래밍되는 반면에, 다른 저장소자들은 상태 E로부터 상태 B로 및/또는 상태 E로부터 상태 C로 프로그래밍된다. WLn 상에서 상태 E로부터 상태 C로 프로그래밍하는 경우, WLn-1 아래의 인접한 플로팅 게이트의 기생 커플링(parasitic coupling)의 양은 최대에 도달하는바, 왜나하면 상태 E로부터 상태 A로 프로그래밍하는 경우 또는 상태 E로부터 상태 B로 프로그래밍하는 경우의 전하량의 변화에 비하여 WLn 하의 플로팅 게이트 상에서의 전하량의 변화가 가장 크기 때문이다. 상태 E로부터 상태 B로 프로그래밍하는 경우에, 인접한 플로팅 게이트에 대한 커플링의 양은 적다. 상태 E로부터 상태 A로 프로그래밍하는 경우에, 커플링의 양은 더욱 감소된다.
도 17은 서로 다른 2개의 페이지들(하위 페이지(lower page) 및 상위 페이지(upper page))에 대해 데이터를 저장하는 다중-상태 저장소자를 프로그래밍하는 투-패스 기법(two-pass technique)의 예제를 나타낸다. 4개의 상태들이 도시되며, 이는 상태 E(11), 상태 A(10), 상태 B(00) 그리고 상태 C(01)이다. 상태 E의 경우, 2 개의 페이지들 모두는 "1"을 저장한다. 상태 A의 경우, 하위 페이지는 "0"을 저장하고, 상위 페이지는 "1"을 저장한다. 상태 B의 경우, 2 개의 페이지들 모두는 "0"을 저장한다. 상태 C의 경우, 하위 페이지는 "1"을 저장하고, 상위 페이지는 "0"을 저장한다. 비록 특정한 비트 패턴들이 각각의 상태들에 대해 할당됐더라도, 여러 가지 비트 패턴들이 또한 할당될 수 있음을 유의해야 한다.
제1 프로그래밍 패스에서, 저장소자의 임계 전압 레벨은 하위 논리 페이지로 프로그래밍되는 비트에 따라 설정된다. 비트가 논리 "1"이면, 임계 전압은 변하지 않으며, 이는 그것이 이전에 소거되었던 결과로서 적절한 상태에 있기 때문이다. 하지만, 프로그래밍되는 비트가 논리 "0"이면, 저장소자의 임계 전압은 화살표(1700)에 의해 도시된 바와 같이, 상태 A로 증가된다. 이는 제1 프로그래밍 패스를 포함한다.
제2 프로그래밍 패스에서, 저장소자의 임계 전압 레벨은 상위 논리 페이지 내에서 프로그래밍되는 비트에 따라 설정된다. 상위 논리 페이지 비트가 논리 "1"을 저장할 예정이면, 어떠한 프로그래밍도 일어나지 않는바, 이는 하위 페이지 비트의 프로그래밍에 따라 저장소자가 상태 E 또는 A 중 어느 하나에 있기 때문이다. 두 경우 모두 "1"의 상위 페이지 비트를 운반한다. 상위 페이지 비트가 논리 "0"일 예정이면, 임계 전압이 시프트된다. 제 1 패스의 결과, 저장소자가 소거 상태 E에 남아있게 되면, 제2 페이즈에서 저장소자는 프로그래밍되며, 따라서 임계 전압은 화살표(1720)에 의해 도시된 바와 같이, 상태 C 이내에 있도록 증가된다. 저장소자가 제1 프로그래밍 패스의 결과로서 상태 A로 프로그래밍되었다면, 저장소자는 제2 패스에서 추가로 프로그래밍되며, 이에 따라 임계 전압은 화살표(1710)에 의해 도시된 바와 같이, 상태 C 이내에 있도록 증가된다. 제2 패스의 결과는 하위 페이지에 대해 데이터를 변경시킴 없이, 상위 페이지에 대해 논리 "0"을 저장하도록 지정된 상태로 저장소자를 프로그래밍하는 것이다. 도 16과 도 17에서, 인접한 워드라인 상에서 플로팅 게이트에 대한 커플링 양은 최종 상태에 의존한다.
일 실시예에서, 충분한 데이터가 기입되어 전체 페이지를 채우면, 시스템은 풀(full) 시퀀스 쓰기를 수행하도록 설정될 수 있다. 전체 페이지에 대해서 충분하지 않은 데이터가 기입되면, 프로그래밍 프로세스는 수신된 데이터로 하위 페이지 프로그래밍을 프로그래밍할 수 있다. 후속 데이터가 수신되는 경우에, 시스템은 상위 페이지를 프로그래밍할 것이다. 또 다른 실시예에서, 시스템은 하위 페이지를 프로그래밍하는 모드에서 기입(writing)을 시작할 수 있으며 그리고 워드라인의 전체 저장소자들(혹은 거의 대부분의 저장소자들)을 채우기에 충분한 데이터가 후속으로 수신되면 풀 시퀀스 프로그래밍 모드로 전환할 수 있다. 이러한 실시예의 더욱 상세한 설명들은 미국등록특허번호 제7,120,051호에 기재되어 있으며, 그의 전체 내용이 참조로서 본 명세서에 통합된다.
도 18a 내지 도 18c는 비휘발성 메모리를 프로그래밍하기 위한 다른 프로세스를 도시하는바, 상기 프로세스는 임의의 특정 저장소자에 대해서, 이전 페이지들에 대해서 인접 저장소자들에 기입하는 것에 후속하여 특정 페이지에 관해서 상기 임의의 특정 저장소자들에 기입함으로써, 플로팅 게이트 대 플로팅 게이트 커플링의 효과를 감소시킨다. 예시적인 일 구현예에서, 비휘발성 저장소자들은 4개의 데이터 상태들을 이용하여, 저장소자 하나당 2 비트의 데이터를 저장한다. 예를 들어, 상태 E는 소거 상태이며, 상태들(A, B 그리고 C)은 프로그래밍된 상태라고 가정한다. 상태 E는 데이터 11을 저장한다. 상태 A는 데이터 01을 저장한다. 상태 B는 데이터 10을 저장한다. 상태 C는 데이터 00을 저장한다. 이것은 비-그레이 코딩(non-Gray coding)의 예제이며, 이는 2개의 비트가 인접한 상태들(A와 B) 사이에서 변하기 때문이다. 물리적인 데이터 상태들에 데이터를 인코딩하는 다른 기법들이 또한 사용될 수 있다. 각각의 저장소자는 2개의 데이터 페이지를 저장한다. 참조를 위한 목적으로, 이러한 데이터 페이지들은 상위 페이지와 하위 페이지로 지칭될 것이다. 하지만, 다른 이름들이 주어질 수도 있다. 상태 A에 대해서, 상위 페이지는 비트 0을 저장하고 하위 페이지는 비트 1을 저장한다. 상태 B에 대해서, 상위 페이지는 비트 1을 저장하고 하위 페이지는 비트 0을 저장한다. 상태 C에 대해서, 2개의 페이지 모두는 비트 데이터 0을 저장한다.
프로그래밍 프로세스는 2단계 프로세스(two-step process)이다. 제1 단계에서, 하위 페이지가 프로그래밍된다. 하위 페이지가 데이터 1로 남아있을 예정이면, 저장소자 상태는 상태 E로 남아 있는다. 데이터가 0으로 프로그래밍될 것이면, 저장소자의 임계 전압이 상승되며, 이에 따라 저장소자가 상태 B'으로 프로그래밍된다. 따라서, 도 18a는 상태 E로부터 상태 B'으로 저장소자들의 프로그래밍을 도시한다. 상태 B'은 중간 상태(interim state) B이며, 따라서, 검증 포인트는 Vvb'으로 나타내며, 이는 Vvb보다 작다.
일 실시예에서는, 저장소자가 상태 E로부터 상태 B'으로 프로그래밍된 후, NAND 스트링 내의 그것의 인접한 저장소자(WLn+1)는 하위 페이지와 관련해서 프로그래밍될 것이다. 예를 들어, 도2를 다시 보면, 저장소자(106)에 대해 하위 페이지가 프로그래밍된 후에, 저장소자(104)에 대한 하위 페이지가 프로그래밍될 수 있다. 저장소자(104)를 프로그래밍한 후에, 저장소자(104)가 상태 E로부터 상태 B'으로 상승된 임계 전압을 가지면, 플로팅 게이트 대 플로팅 게이트 커플링 효과는 저장소자(106)의 겉보기 임계 전압(apparent threshold voltage)을 상승시킬 수 있다. 이것은 도 18b의 임계 전압 분포(1850)에 도시된 바와 같이, 상태 B'에 대해 임계 전압 분포를 확장시킨 효과를 가질 수 있다. 임계 전압 분포의 이러한 분명한 확장은 상위 페이지를 프로그래밍할 때, 치료(remedy)될 수 있다.
도 18c는 상위 페이지를 프로그래밍하는 프로세스를 나타낸다. 저장소자가 소거 상태 E에 있고 상위 페이지가 1로 남아있을 예정이면, 그 다음에 저장소자는 상태 E로 남아 있을 것이다. 저장소자가 상태 E에 있고 그의 상위 페이지 데이터가 0으로 프로그래밍될 예정이면, 그 다음에 저장소자의 임계 전압이 상승할 수 있으며, 이에 따라 저장소자는 상태 A에 있는다. 저장소자가 중간 임계 전압 분포(1850)에 있었고 상위 페이지 데이터가 1로 남아 있을 예정이면, 그 다음에 저장소자는 최종 상태 B로 프로그래밍될 것이다. 저장소자가 중간 임계 전압 분포(1850)에 있고 상위 페이지 데이터가 데이터 0이 될 예정이면, 그 다음에 저장소자의 임계 전압은 상승될 수 있으며, 이에 따라 저장소자는 상태 C에 있는다. 도 18a 내지 도 18c에 의해 도시된 프로세스는 플로팅 게이트 대 플로팅 게이트 커플링 효과를 감소시키며, 이는 인접한 저장소자들의 상위 페이지 프로그래밍만이 주어진 저장소자의 겉보기 임계 전압에 영향을 미칠 것이기 때문이다. 교번 상태 코딩(alternate state coding)의 예제는, 상위 페이지 데이터가 1인 경우, 분포(1850)로부터 상태 C로 이동시키는 것이며, 그리고 상위 페이지 데이터가 0인 경우에, 상태 B로 이동시키는 것이다.
도 18a 내지 도 18c는 4개의 데이터 상태들과 2개의 데이터 페이지와 관련하여 예제를 제공하고 있지만, 본 발명의 사상은 4개의 데이터 상태들보다 많거나 적은 데이터 상태들 그리고 2개의 페이지보다 많거나 적은 페이지들을 갖는 다른 구현들에도 적용될 수 있다.
전술한 바와 같은 본 발명의 상세한 설명은 설명 및 예시를 위한 목적으로 제공된 것이다. 이는 실시예에 대한 모든 것을 속속들이 규명한다던가 또는 개시된 실시예들만으로 본 발명을 제한하고자 의도된 것이 아님을 유의해야 한다. 전술한 가르침에 비추어 볼 때, 다양한 변형예와 수정예들이 가능할 것이다. 본 발명의 기술적 사상과 그의 실제적인 응용을 최적으로 설명하기 위해, 본 발명의 실시예들이 선택되었다. 따라서, 해당 기술 분야의 당업자들은 다양한 실시예들을 통해서 본 발명을 가장 잘 활용할 수 있을 것이며, 고려 중인 특정한 용도에 적합한 다양한 변형예들을 가장 잘 활용할 수 있을 것이다. 본 발명의 범위는 첨부된 청구항들에 의해서 정의되어야 한다.

Claims (15)

  1. 비휘발성 저장소자를 동작시키는 방법으로서,
    a) 적어도 제 2 세트(A, B)의 저장소자들을 프로그래밍되지 않게 록 아웃(lock out)하면서, 저속(610) 및 고속(620) 프로그래밍 저장소자들을 구별하기 위해 제 1 검증 레벨(VV-C)에서 오프셋(Δ=VV-C - VV-CLL)을 뺀 값을 이용하여 제 1 세트(C)의 저장소자들에 대해 프로그래밍 동작들을 수행하는 단계와;
    b) 상기 제 1 검증 레벨(VV-C)을 이용하여 상기 저속 프로그래밍 저장소자들에 대한 프로그래밍을 계속하고 그리고 상기 적어도 제 2 세트의 저장소자들을 계속해서 록 아웃하면서, 상기 고속 프로그래밍 저장소자들을 록 아웃하는 단계와; 그리고
    c) 상기 제 1 검증 레벨(VV-C)을 이용하여 상기 고속 프로그래밍 저장소자들에 대한 프로그래밍을 재개하고 그리고 적어도 제 2 검증 레벨(VV-B)을 이용하여 상기 적어도 제 2 세트의 저장소자들을 프로그래밍하면서, 상기 저속 프로그래밍 저장소자들을 록 아웃하는 단계
    를 포함하며
    상기 제 2 검증 레벨(VV-B)은 상기 제 1 검증 레벨에서 상기 오프셋을 뺀 값보다 작은 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  2. 제1항에 있어서,
    상기 제 1 세트의 저장소자들과 상기 적어도 제 2 세트의 저장소자들은, 공통 임계 전압 분포로부터 프로그래밍되는 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  3. 제1항 또는 제2항에 있어서,
    제 1 스텝 사이즈(ΔV1)에 의해 증분되는 프로그램 펄스들을 인가하는 것을 포함하는 상기 단계 a) 이전에, 상기 제 1 및 제 2 세트의 저장소자들에 대해 프로그래밍 동작들을 수행하는 단계를 더 포함하며,
    상기 단계 b)는, 더 높은, 제 2 스텝 사이즈(ΔV5)에 의해 증분되는 프로그램 펄스들을 인가하는 것을 포함하는 비휘발성 저장소자를 동작시키는 방법.
  4. 제3항에 있어서,
    상기 단계 a)는, 제 1 스텝 사이즈(ΔV3)에 의해 증분되는 제 1 세트의 프로그램 펄스들을 인가하는 단계를 포함하며, 그리고
    상기 단계 b)는, 제 2 세트의 프로그램 펄스들을 인가하는 단계를 포함하며, 상기 제 2 세트의 프로그램 펄스들 중 첫번째 프로그램 펄스는 상기 제 1 스텝 사이즈보다 큰 ΔV4 만큼 상기 제 1 세트의 프로그램 펄스들 중 마지막 프로그램 펄스로부터 증분되는 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  5. 제4항에 있어서,
    상기 제 2 세트의 프로그램 펄스들 중 상기 첫번째 프로그램 펄스는,
    상기 오프셋 만큼 상기 제 1 세트의 프로그램 펄스들 중 마지막 프로그램 펄스로부터 증분되는 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제 1 검증 레벨은, 최상위 데이터 상태(highest data state)(C)를 위한 것이며, 그리고
    상기 적어도 제 2 검증 레벨은, 제 2 최상위 데이터 상태(second highest data state)(B)를 위한 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 단계 c)는, 상기 제2 검증 레벨(VV-B)보다 작은 제3 검증 레벨(VV-A)을 이용하여 제 3 세트의 저장소자들을 프로그래밍하는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 단계 a)와 b)는,
    상기 제 1 검증 레벨과 관련된 데이터 상태(C)로 프로그래밍되기로 한 저장소자들만의 프로그래밍을 허용하는 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 제 1 세트의 저장소자들 중 특정 개수 혹은 일부의 저장소자들이 상기 제 1 검증 레벨에서 상기 오프셋을 뺀 값에서 검증됐을 때, 단계 a)를 완료하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  10. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 단계 a)는 프로그램 펄스들을 인가하는 것을 포함하며,
    상기 방법은,
    특정 개수의 상기 프로그램 펄스들이 인가되었을 때 상기 단계 a)를 완료하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  11. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 단계 a)는 프로그램 펄스들을 인가하는 것을 포함하며,
    상기 방법은,
    상기 제 1 검증 레벨에서 상기 오프셋을 뺀 값에서 상기 제 1 세트의 저장소자들 중 특정 개수 혹은 일부가 검증된 이후, 특정 개수의 추가 프로그램 펄스들이 인가된 때에, 상기 단계 a)를 완료하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장소자를 동작시키는 방법.
  12. 비휘발성 저장 디바이스로서,
    제 1 세트(C) 및 제 2 세트(A, B)의 저장소자들과; 그리고
    상기 제 1 및 제 2 세트의 저장소자들과 통신하는 적어도 하나의 제어 회로(1210, 1250)를 포함하며,
    상기 적어도 하나의 제어 회로는,
    a) 적어도 상기 제 2 세트(A, B)의 저장소자들을 프로그래밍되지 않게 록 아웃(lock out)하면서, 저속(610) 및 고속(620) 프로그래밍 저장소자들을 구별하기 위해 제 1 검증 레벨(VV-C)에서 오프셋(Δ=VV-C - VV-CLL)을 뺀 값을 이용하여 상기 제 1 세트(C)의 저장소자들에 대해 프로그래밍 동작들을 수행하며,
    b) 상기 제 1 검증 레벨(VV-C)을 이용하여 상기 저속 프로그래밍 저장소자들에 대한 프로그래밍을 계속하고 그리고 상기 적어도 제 2 세트의 저장소자들을 계속하여 록 아웃하면서, 상기 고속 프로그래밍 저장소자들을 록 아웃하며, 그리고
    c) 상기 제 1 검증 레벨(VV-C)을 이용하여 상기 고속 프로그래밍 저장소자들에 대한 프로그래밍을 재개하고 그리고 상기 제 1 검증 레벨에서 상기 오프셋을 뺀 값보다 작은 제 2 검증 레벨(VV-B)을 적어도 이용하여 상기 적어도 제 2 세트의 저장소자들을 프로그래밍하면서, 상기 저속 프로그래밍 저장소자들을 록 아웃하는 것을 특징으로 하는 비휘발성 저장 디바이스.
  13. 제12항에 있어서,
    상기 제 1 검증 레벨에서 상기 오프셋을 뺀 값을 이용하여 상기 제 1 세트의 저장소자들에 대해 프로그래밍 동작들을 수행하기 전에,
    상기 적어도 하나의 제어 회로는,
    상기 a) 이전에, 제 1 스텝 사이즈(ΔV1)에 의해 증분되는 프로그램 펄스들을 인가하는 것을 포함하는 프로그래밍 동작들을 상기 제 1 및 제 2 세트의 저장소자들에 대해 수행하며,
    상기 고속 프로그래밍 저장소자들을 록 아웃하는 것은, 더 높은, 제 2 스텝 사이즈(ΔV5)에 의해 증분되는 프로그램 펄스들을 적용하는 것을 포함하는 비휘발성 저장 디바이스.
  14. 제13항에 있어서,
    상기 제 1 검증 레벨에서 상기 오프셋을 뺀 값을 이용하여 상기 제 1 세트의 저장소자들에 대해 상기 프로그래밍 동작들을 수행하기 위하여,
    상기 적어도 하나의 제어 회로는, 제 1 스텝 사이즈(ΔV3)에 의해 증분되는 제 1 세트의 프로그램 펄스들을 인가하며, 그리고
    상기 고속 프로그래밍 저장소자들을 록 아웃하기 위하여,
    상기 적어도 하나의 제어 회로는, 제 2 세트의 프로그램 펄스들을 인가하며,
    상기 제 2 세트의 프로그램 펄스들 중 첫번째 프로그램 펄스는 상기 제 1 스텝 사이즈보다 큰 ΔV4 만큼 상기 제 1 세트의 프로그램 펄스들 중 마지막 프로그램 펄스로부터 증분되는 것을 특징으로 비휘발성 저장 디바이스.
  15. 제14항에 있어서,
    상기 제 2 세트의 프로그램 펄스들 중 상기 첫번째 프로그램 펄스는,
    상기 오프셋 만큼 상기 제 1 세트의 프로그램 펄스들 중 마지막 프로그램 펄스로부터 증분되는 것을 특징으로 하는 비휘발성 저장 디바이스.
KR1020117002197A 2008-06-27 2009-06-23 최소 여분 시간 패널티를 갖는 혼란을 감소시키기 위한 개선된 프로그래밍 알고리즘 KR101546460B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/163,073 US7800956B2 (en) 2008-06-27 2008-06-27 Programming algorithm to reduce disturb with minimal extra time penalty
US12/163,073 2008-06-27

Publications (2)

Publication Number Publication Date
KR20110049782A true KR20110049782A (ko) 2011-05-12
KR101546460B1 KR101546460B1 (ko) 2015-08-24

Family

ID=41056765

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117002197A KR101546460B1 (ko) 2008-06-27 2009-06-23 최소 여분 시간 패널티를 갖는 혼란을 감소시키기 위한 개선된 프로그래밍 알고리즘

Country Status (8)

Country Link
US (1) US7800956B2 (ko)
EP (1) EP2301033B1 (ko)
JP (1) JP5203510B2 (ko)
KR (1) KR101546460B1 (ko)
CN (1) CN102138181B (ko)
AT (1) ATE535913T1 (ko)
TW (1) TWI416527B (ko)
WO (1) WO2009158350A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140035843A (ko) * 2012-09-14 2014-03-24 프리스케일 세미컨덕터, 인크. 적응형 기록 동작들을 갖는 비―휘발성 메모리(nvm)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100323554B1 (ko) * 1997-05-14 2002-03-08 니시무로 타이죠 불휘발성반도체메모리장치
JP5412063B2 (ja) * 2008-07-10 2014-02-12 三星電子株式会社 不揮発性半導体記憶装置
US8223551B2 (en) * 2009-02-19 2012-07-17 Micron Technology, Inc. Soft landing for desired program threshold voltage
KR101005145B1 (ko) * 2009-03-06 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 소자의 프로그램 방법
JP2011150749A (ja) * 2010-01-20 2011-08-04 Toshiba Corp 不揮発性半導体記憶装置
KR101620025B1 (ko) * 2010-02-19 2016-05-24 삼성전자주식회사 데이터 저장 시스템 및 그것의 오픈 블록 관리 방법
KR20110131648A (ko) 2010-05-31 2011-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 메모리 카드 및 그것의 프로그램 방법
US8310870B2 (en) 2010-08-03 2012-11-13 Sandisk Technologies Inc. Natural threshold voltage distribution compaction in non-volatile memory
US8369149B2 (en) 2010-09-30 2013-02-05 Sandisk Technologies Inc. Multi-step channel boosting to reduce channel to floating gate coupling in memory
KR101798013B1 (ko) * 2010-12-30 2017-11-16 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
KR101821604B1 (ko) * 2011-07-25 2018-01-24 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
JP5380510B2 (ja) * 2011-09-30 2014-01-08 株式会社東芝 不揮発性半導体記憶装置
KR102053953B1 (ko) 2013-02-04 2019-12-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
US8929142B2 (en) 2013-02-05 2015-01-06 Sandisk Technologies Inc. Programming select gate transistors and memory cells using dynamic verify level
US20140281842A1 (en) * 2013-03-14 2014-09-18 Fusion-Io, Inc. Non-Volatile Cells Having a Non-Power-of-Two Number of States
KR102125376B1 (ko) * 2013-07-01 2020-06-23 삼성전자주식회사 저장 장치 및 그것의 쓰기 방법
WO2015004712A1 (ja) * 2013-07-08 2015-01-15 株式会社 東芝 ロックアウトモードとノーロックアウトモードを有する半導体記憶装置
US9007841B1 (en) * 2013-10-24 2015-04-14 Western Digital Technologies, Inc. Programming scheme for improved voltage distribution in solid-state memory
KR20160047667A (ko) * 2014-10-22 2016-05-03 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US9496040B2 (en) * 2015-01-22 2016-11-15 Sandisk Technologies Llc Adaptive multi-page programming methods and apparatus 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
US9564226B1 (en) * 2015-10-30 2017-02-07 Sandisk Technologies Llc Smart verify for programming non-volatile memory
CN106856102B (zh) * 2015-12-08 2020-11-03 西安格易安创集成电路有限公司 一种Nand Flash的编程方法
JP6441250B2 (ja) * 2016-03-15 2018-12-19 東芝メモリ株式会社 半導体記憶装置
KR102565888B1 (ko) 2016-09-12 2023-08-11 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
JP2018055736A (ja) * 2016-09-26 2018-04-05 東芝メモリ株式会社 半導体記憶装置
KR20180088190A (ko) * 2017-01-26 2018-08-03 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 프로그램 방법
KR102504295B1 (ko) 2017-11-24 2023-02-27 삼성전자 주식회사 비휘발성 메모리 장치 및 이의 프로그램 방법
CN110892482B (zh) 2019-10-12 2021-01-29 长江存储科技有限责任公司 对存储器件进行编程的方法及相关存储器件
KR20220067419A (ko) * 2020-11-17 2022-05-24 삼성전자주식회사 메모리 장치, 메모리 시스템 및 이들의 동작 방법
US11581049B2 (en) * 2021-06-01 2023-02-14 Sandisk Technologies Llc System and methods for programming nonvolatile memory having partial select gate drains
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

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960002006B1 (ko) 1991-03-12 1996-02-09 가부시끼가이샤 도시바 2개의 기준 레벨을 사용하는 기록 검증 제어기를 갖는 전기적으로 소거 가능하고 프로그램 가능한 불휘발성 메모리 장치
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
EP0830684B1 (en) 1995-06-07 2004-08-25 Macronix International Co., Ltd. Automatic programming algorithm for page mode flash memory with variable programming pulse height and pulse width
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
TW338165B (en) 1996-09-09 1998-08-11 Sony Co Ltd Semiconductor nand type flash memory with incremental step pulse programming
US6327183B1 (en) 2000-01-10 2001-12-04 Advanced Micro Devices, Inc. Nonlinear stepped programming voltage
EP1249842B1 (en) 2001-04-10 2009-08-26 STMicroelectronics S.r.l. Method for programming nonvolatile memory cells with program and verify algorithm using a staircase voltage with varying step amplitude
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6714448B2 (en) 2002-07-02 2004-03-30 Atmel Corporation Method of programming a multi-level memory device
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
US7196931B2 (en) 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
US7046568B2 (en) 2002-09-24 2006-05-16 Sandisk Corporation Memory sensing circuit and method for low voltage operation
US7327619B2 (en) 2002-09-24 2008-02-05 Sandisk Corporation Reference sense amplifier for non-volatile memory
US6859397B2 (en) 2003-03-05 2005-02-22 Sandisk Corporation Source side self boosting technique for non-volatile memory
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US6917542B2 (en) 2003-07-29 2005-07-12 Sandisk Corporation Detecting over programmed memory
US7177199B2 (en) * 2003-10-20 2007-02-13 Sandisk Corporation Behavior based programming of non-volatile memory
US6888758B1 (en) 2004-01-21 2005-05-03 Sandisk Corporation Programming non-volatile memory
US7020017B2 (en) 2004-04-06 2006-03-28 Sandisk Corporation Variable programming of non-volatile memory
US7020026B2 (en) 2004-05-05 2006-03-28 Sandisk Corporation Bitline governed approach for program control of non-volatile memory
KR100645055B1 (ko) 2004-10-28 2006-11-10 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US7173859B2 (en) 2004-11-16 2007-02-06 Sandisk Corporation Faster programming of higher level states in multi-level cell flash memory
US7092290B2 (en) * 2004-11-16 2006-08-15 Sandisk Corporation High speed programming system with reduced over programming
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US20060140007A1 (en) 2004-12-29 2006-06-29 Raul-Adrian Cernea Non-volatile memory and method with shared processing for an aggregate of read/write circuits
US7196928B2 (en) 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
KR100655442B1 (ko) 2005-09-01 2006-12-08 삼성전자주식회사 프로그램 스타트 전압을 가변시킬 수 있는 플래시 메모리장치
US7218552B1 (en) 2005-09-09 2007-05-15 Sandisk Corporation Last-first mode and method for programming of non-volatile memory with reduced program disturb
US7606084B2 (en) * 2006-06-19 2009-10-20 Sandisk Corporation Programming differently sized margins and sensing with compensations at select states for improved read operations in non-volatile memory
WO2007149678A2 (en) * 2006-06-19 2007-12-27 Sandisk Corporation Programming defferently sized margins and sensing with compensations at select states for improved read operations in non-volatile memory
US7457144B2 (en) * 2006-07-19 2008-11-25 Qimonda Flash Gmbh & Co. Kg Memory device and method for verifying information stored in memory cells
US7511996B2 (en) * 2006-11-30 2009-03-31 Mosaid Technologies Incorporated Flash memory program inhibit scheme
KR100811274B1 (ko) 2006-12-28 2008-03-07 주식회사 하이닉스반도체 낸드형 플래쉬 메모리소자의 데이터 소거방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140035843A (ko) * 2012-09-14 2014-03-24 프리스케일 세미컨덕터, 인크. 적응형 기록 동작들을 갖는 비―휘발성 메모리(nvm)

Also Published As

Publication number Publication date
WO2009158350A1 (en) 2009-12-30
US7800956B2 (en) 2010-09-21
TW201007761A (en) 2010-02-16
JP5203510B2 (ja) 2013-06-05
KR101546460B1 (ko) 2015-08-24
US20090323429A1 (en) 2009-12-31
EP2301033B1 (en) 2011-11-30
TWI416527B (zh) 2013-11-21
CN102138181B (zh) 2014-09-10
ATE535913T1 (de) 2011-12-15
CN102138181A (zh) 2011-07-27
JP2011526049A (ja) 2011-09-29
EP2301033A1 (en) 2011-03-30

Similar Documents

Publication Publication Date Title
KR101546460B1 (ko) 최소 여분 시간 패널티를 갖는 혼란을 감소시키기 위한 개선된 프로그래밍 알고리즘
EP2281290B1 (en) Enhanced bit-line pre-charge scheme for increasing channel boosting in non-volatile storage
KR101595044B1 (ko) 비휘발성 메모리에서의 감지 동안 데이터 상태에 기반하는 온도 보상
EP2345038B1 (en) Multi-pass programming for memory using word line coupling
EP2446443B1 (en) Forecasting program disturb in memory by detecting natural threshold voltage distribution
KR101697270B1 (ko) 메모리에서 채널-플로팅 게이트간 커플링을 감소시키기 위한 데이터 상태에 의존적인 채널 부스팅
JP5444468B2 (ja) パス電圧の外乱及びフローティングゲートから制御ゲートへのリークを低減するメモリプログラム
KR101667007B1 (ko) 비휘발성 저장장치에서 판독 동작 동안의 커플링에 대한 보상
KR101842322B1 (ko) 공유된 비트 라인을 갖는 비휘발성 메모리에 대한 비트 라인 사전충전 스킴
WO2009146235A1 (en) Compensating non-volatile storage using different pass voltages during program- verify and read
EP2556509B1 (en) Saw-shaped multi-pulse programming for program noise reduction in memory
JP2007533055A (ja) 非揮発性メモリの可変プログラミング
JP2012531003A (ja) 不揮発性記憶装置においてチャネルブーストを改良するための縮小されたプログラミングパルス幅
KR20100024918A (ko) 비휘발성 저장소자의 판독 동작 동안에 파워 소모의 감소
KR101130332B1 (ko) 비휘발성 메모리에 대한 최상위 다중-레벨 상태의 고속 프로그래밍
KR20080100416A (ko) 프로그램 혼란이 감소된 nand 타입 비휘발성 메모리의최종-최초 모드 및 프로그래밍 방법
JP4950299B2 (ja) 複数のブーストモードを使用した不揮発性メモリ内のプログラム妨害の低減

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190718

Year of fee payment: 5