KR20130101976A - 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍 - Google Patents

다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍 Download PDF

Info

Publication number
KR20130101976A
KR20130101976A KR1020127030130A KR20127030130A KR20130101976A KR 20130101976 A KR20130101976 A KR 20130101976A KR 1020127030130 A KR1020127030130 A KR 1020127030130A KR 20127030130 A KR20127030130 A KR 20127030130A KR 20130101976 A KR20130101976 A KR 20130101976A
Authority
KR
South Korea
Prior art keywords
programming
group
storage elements
determining
nonvolatile storage
Prior art date
Application number
KR1020127030130A
Other languages
English (en)
Other versions
KR101736414B1 (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 KR20130101976A publication Critical patent/KR20130101976A/ko
Application granted granted Critical
Publication of KR101736414B1 publication Critical patent/KR101736414B1/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
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
    • 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
    • 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • 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
    • 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/5622Concurrent multilevel programming of more than one cell

Landscapes

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

Abstract

이웃 메모리 셀들의 부스팅으로부터의 간섭의 영향을 감소시키는 비휘발성 저장장치를 프로그래밍하기 위한 시스템이 제안된다. 메모리 셀들은 두 개 이상의 그룹들로 분할된다. 일 예에서, 메모리 셀들은 홀수 및 짝수 메모리 셀들로 분할되지만, 다른 그룹들 또한 이용될 수 있다. 제1 트리거 전에, 시간에 따라 증가되는 프로그래밍 신호를 이용하여 제1 그룹의 메모리 셀들이 제2 그룹의 메모리 셀들과 함께 프로그래밍된다. 제1 트리거에 후속하여 그리고 제2 트리거 전에, 제1 트리거에 응답하여 크기가 낮아진 프로그래밍 신호를 이용하여 제1 그룹의 메모리 셀들이 제2 그룹의 메모리 셀들과는 별개로 프로그램된다. 제2 트리거에 후속하여, 제2 트리거에 응답하여 상승된 프로그래밍 신호로 제1 그룹의 메모리 셀들이 제2 그룹의 메모리 셀들과 함께 프로그래밍된다. 두 트리거들 전 그리고 후에, 제1 그룹의 메모리 셀들이 제2 그룹의 메모리 셀들과 함께 검증된다.

Description

다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍{PROGRAMMING NON-VOLATILE STORAGE INCLUDNG REDUCING IMPACT FROM OTHER MEMORY CELLS}
본 발명은 비휘발성 저장장치에 대한 기술에 관한 것이다.
반도체 메모리는 다양한 전자 디바이스들에서 점점 더 보편적으로 사용되고 있다. 예를 들어, 비휘발성 반도체 메모리는 휴대 전화, 디지털 카메라, PDA(personal digital assistants), 모바일 컴퓨팅 디바이스, 논-모바일 컴퓨팅 디바이스 및 다른 디바이스들에서 사용된다. 그 중에서도 EEPROM 및 플래시 메모리는 가장 널리 사용되는 비휘발성 반도체 메모리이다.
EEPROM과 플래시 메모리 둘 모두는, 반도체 기판의 채널 영역으로부터 절연되어 있으며, 상기 채널 영역위에 위치한 플로팅 게이트를 이용한다. 플로팅 게이트는 소스 영역과 드레인 영역 사이에 위치한다. 제어 게이트는 플로팅 게이트로부터 절연되어, 플로팅 게이트 위에 제공된다. 트랜지스터의 임계전압은 플로팅 게이트 상에서 유지되는 전하의 양에 의해 제어된다. 즉, 트랜지스터의 소스와 드레인 사이에서 전도를 허용하기 위해서, 트랜지스터가 턴온되기 전에 상기 제어 게이트에 인가되어야만 하는 최소 전압은, 플로팅 게이트의 전하 레벨에 의해 제어된다. 따라서, 임계 전압을 변경하기 위하여 플로팅 게이트 상의 전하 레벨을 변경함으로써 (하나 이상의 트랜지스터들을 포함할 수 있는) 메모리 셀이 프로그램 및/또는 소거될 수 있다.
각각의 메모리 셀은 (아날로그 또는 디지털) 데이터를 저장할 수 있다. 1 비트의 디지털 데이터를 저장할 때(바이너리 메모리 셀이라 지칭됨), 메모리 셀의 가능한 임계 전압들의 범위는 논리 데이터 "1" 및 "0"이 할당되는 두 개의 범위들로 분할된다. NAND 타입 플래시 메모리의 일 예에서, 메모리 셀이 소거된 후 전압 임계값은 음이고, 논리 "1"로서 정의된다. 프로그래밍 후의 임계 전압은 양이고 논리 "0"으로서 정의된다. 임계 전압이 음이고 제어 게이트에 0V를 인가함으로써 판독이 시도될 때, 메모리 셀은 턴온되어 논리 1이 저장되어 있음을 나타낼 것이다. 임계 전압이 양이고 제어 게이트에 0 볼트를 인가함으로써 판독 동작이 시도될 때, 메모리 셀은 턴온되지 않을 것이고, 이는 논리 0이 저장됨을 나타낸다.
메모리 셀은 또한 복수의 정보 레벨들을 저장할 수 있다(다중-상태 메모리 셀로 지칭됨). 복수의 데이터 레벨들을 저장하는 경우에, 가능한 임계 전압의 범위는 데이터 레벨들의 수로 분할된다. 예를 들어, 4개의 정보 레벨들이 저장된다면, 데이터 값들 "11", "10", "01", 및 "00"에 할당된 4개의 임계 전압 범위들이 존재할 것이다. NAND 타입 메모리의 일 예에서, 소거 동작 후 임계 전압은 음이고, "11"로서 정의된다. 양의 임계 전압들이 "10", "01", 및 "00"의 상태에 대해 사용된다. (예를 들어, 3 비트 데이터를 위해) 8개의 정보 레벨들(또는 상태들)이 각각의 메모리 셀에 저장된다면, 데이터 값 "000", "001", "010", "011" "100", "101", "110" 및 "111"에 할당되는 8개의 임계 전압 범위들이 존재할 것이다. 메모리 셀로 프로그램되는 데이터와 메모리 셀의 임계 전압 레벨 사이의 구체적 관계는 메모리 셀을 위해 채택된 데이터 엔코딩 기법에 의존한다. 예를 들어, 미국 특허 제6,222,762호 및 미국 특허 출원 공개 제2004/0255090호(이 둘 모두는 본 명세서에 그 전체가 참조로서 포함됨)는 다중-상태 플래시 메모리 셀을 위한 다양한 데이터 엔코딩 기법을 기술한다. 일 실시예에서, 그레이 코드 할당을 사용하여 데이터 값들이 임계 전압 범위들에 할당되어, 만약 플로팅 게이트의 임계 전압이 그의 이웃하는 물리적 상태로 잘못 시프트되면, 단지 1 비트만이 영향을 받을 것이다. 일부 실시예들에서, 데이터 엔코딩 기법이 서로 다른 워드라인들에 대해 변경될 수 있거나, 데이터 엔코딩 기법이 시간에 따라 달라질 수 있거나, 또는 랜덤한 워드라인들에 대한 데이터 비트들이 인버팅되어, 데이터 패턴 감도 및 메모리 셀들 상에서의 균일한 마모(wear)를 줄일 수 있다. 서로 다른 엔코딩 기법들이 이용될 수 있다.
NAND 플래시 메모리 디바이스와 같은 EEPROM 또는 플래시 메모리 디바이스를 프로그래밍할 때, 일반적으로 프로그램 전압이 제어 게이트에 인가되고 비트 라인이 접지된다. 채널로부터의 전자들이 플로팅 게이트 내로 주입된다. 전자들이 플로팅 게이트 내에 축적될 때, 플로팅 게이트는 음으로 충전되고, 메모리 셀의 임계 전압이 상승되어, 메모리 셀이 프로그램 상태(programmed state)에 있게 된다. 프로그래밍에 대한 더 많은 정보는 발명의 명칭이 "Source Side Self Boosting Technique For Non-Volatile Memory"인 미국 특허 제6,859,397호, 및 발명의 명칭이 "Detecting Over Programmed Memory"인 미국 특허 출원 공개 제2005/0024939호에서 찾아볼 수 있으며, 상기 특허 문헌들 둘 모두는 그 전체가 본 명세서에 참조로서 포함된다. 많은 디바이스들에서, 프로그램 동작 중에 제어 게이트에 인가되는 프로그램 전압은, 각각의 연속적인 펄스에 대해 펄스들의 크기가 소정의 스텝 사이즈로 증가되는 일련의 펄스들로서 인가된다.
많은 비휘발성 저장 시스템들은 열들 및 행들로 배열되는 메모리 셀들의 어레이를 포함한다. 제어 라인들(예를 들어, 워드 라인들, 비트 라인들, 또는 다른 타입의 제어 라인들)은 다양한 행들 및 열들에 연결된다. 일 예에서, 메모리 셀들의 행들에 액세스하기 위하여 워드 라인들이 이용되고, 반면 메모리 셀의 열들에 액세스하기 위하여 비트 라인들이 이용된다. 이러한 구성에서, 프로그램 전압의 일련의 펄스들이 선택된 메모리 셀들의 세트에 연결되는 선택된 워드 라인들에 인가된다. 잠재적으로 펄스들을 수신하는 선택된 메모리 셀들 각각은 이에 응답하여 그 임계 전압이 잠재적으로 상승된다. 메모리 셀들이 그들의 타겟 임계 전압에 도달함에 따라, 이 메모리 셀들은 추가적인 프로그래밍으로부터 록아웃(lock-out)된다. 메모리 셀들이 록아웃됨에 따라, 이들은 이들의 이웃 메모리 셀들의 예측된 프로그래밍 레이트(rate)를 저해(interfere)하는 것으로 관측되었다. 이러한 현상은 이웃 메모리 셀들로 하여금 그들의 의도된 타겟 임계 전압을 오버슈트(overshoot)하게하고, 따라서, 오버-프로그램(over-program)되게 할 수 있다. 일부 경우에, 오버-프로그램된 메모리 셀은 판독될 때 에러를 야기할 것이다.
도 1은 NAND 스트링의 평면도이다.
도 2는 NAND 스트링의 등가 회로도이다.
도 3은 비휘발성 메모리 시스템의 블록도이다.
도 4는 메모리 어레이의 일 실시예를 도시하는 블록도이다.
도 5는 감지 블록의 일 실시예를 도시하는 블록도이다.
도 6은 임계 전압 분포의 예시적인 세트를 도시하며 비휘발성 메모리를 프로그래밍하기 위한 프로세스를 설명한다.
도 7a 내지 7i는 다양한 임계 전압 분포들을 보여주며 비휘발성 메모리를 프로그래밍하기 위한 프로세스를 설명한다.
도 8은 비휘발성 메모리를 프로그래밍하는 순서의 일 예를 표시하는 표이다.
도 9는 비휘발성 메모리를 프로그래밍하는 프로세스의 일 예를 기술하는 흐름도를 표시한다.
도 10은 비휘발성 메모리 소자들을 프로그래밍하는 프로세스의 일 예를 기술하는 흐름도를 표시한다.
도 11a 내지 11c는 두 개의 예시적인 이웃 메모리 셀들의 부분들을 표시한다.
도 12는 프로그램 펄스들의 세트를 표시한다.
도 13은 프로그램 펄스들의 세트를 표시한다.
도 14는 프로그램 펄스들 및 검증 펄스들의 세트를 표시한다.
도 15는 프로그램 펄스들 및 검증 펄스들의 세트를 표시한다.
도 16은 예시적인 파형을 표시한다.
도 17은 임의의 조건이 존재하는지 여부를 결정하기 위한 프로세스의 일 실시예를 설명하는 흐름도이다.
도 18은 임의의 조건이 존재하는지 여부를 결정하는 회로의 일 실시예의 블록도이다.
도 19는 임의의 조건이 존재하는지 여부를 결정하는 프로세스의 일 실시예를 기술하는 흐름도이다.
도 20은 임의의 조건이 존재하는지 여부를 결정하는 회로의 일 실시예의 블록도이다.
도 21은 프로그래밍 프로세스를 변경하기 위하여 트리거 포인트를 결정하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 22는 프로그래밍 프로세스를 변경하기 위하여 트리거 포인트를 결정하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 23은 프로그래밍 프로세스를 변경하기 위하여 트리거 포인트를 결정하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 24는 트리거 전압을 동적으로 조정하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 25는 도 24의 프로세스를 구현하는 구성요소들의 일부를 도시하는 블록도이다.
도 26은 트리거 전압을 동적으로 조정하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 27은 도 26의 프로세스를 구현하는 구성요소들의 일부를 도시하는 블록도이다.
본 명세서에는 프로그래밍 중에 이웃하는 메모리 셀들 사이의 간섭의 영향을 감소시키는 기법이 기술된다.
실시예들의 일 세트에서, 메모리 셀들은 두 개 이상의 그룹들로 분할된다. 일 예에서, 메모리 셀들은 홀수 및 짝수 메모리 셀들로 분할되지만, 다른 그룹들 또한 이용될 수 있다. 제1 트리거 전에, 시간에 따라 증가하는 프로그래밍 신호를 이용하여 메모리 셀들의 제1 그룹이 메모리 셀들의 제2 그룹과 함께 프로그래밍된다. 제1 트리거에 후속하여 그리고 제2 트리거 전에, 제1 트리거에 응답하여 크기가 낮아진 프로그래밍 신호를 이용하여 메모리 셀들의 제1 그룹이 메모리 셀들의 제2 그룹과는 별개로 프로그램된다. 제2 트리거에 후속하여, 제2 트리거에 응답하여 상승된 프로그래밍 신호로 메모리 셀들의 제1 그룹이 메모리 셀들의 제2 그룹과 함께 프로그래밍된다. 두 트리거들 전 그리고 후에, 메모리 셀들의 제1 그룹이 메모리 셀들의 제2 그룹과 함께 검증된다. 일부 실시예들은 제2 트리거를 이용함이 없이 제1 트리거를 이용할 수 있다.
본 명세서에 기술된 기법은 다양한 타입의 비휘발성 저장 시스템과 함께 이용될 수 있다. 일 예는 NAND 구조를 이용하는 플래시 메모리 시스템이며, 이는 복수의 트랜지스터들을 두 개의 선택 게이트들 사이에 샌드위치되게 직렬로 배열하는 것을 포함한다. 직렬인 트랜지스터들 및 선택 게이트들은 NAND 스트링이라 칭해진다. 도 1은 1개의 NAND 스트링을 보여주는 평면도이다. 도 2는 그것의 등가 회로이다. 도 1 및 2에 도시된 NAND 스트링은 제1 (또는 드레인 측) 선택 게이트(120)와 제2 (또는 소스 측) 선택 게이트(122) 사이에 샌드위치된 직렬로된 4개의 트랜지스터들(100, 102, 104, 106)을 포함한다. 선택 게이트(120)는 비트 라인 컨택(126)을 통해 NAND 스트링을 비트 라인에 연결한다. 선택 게이트(122)는 NAND 스트링을 소스 라인(128)에 연결한다. 선택 게이트(120)는 선택 라인(SGD)에 적절한 전압을 인가함으로써 제어된다. 선택 게이트(122)는 선택 라인(SGS)에 적절한 전압을 인가함으로써 제어된다. 각각의 트랜지스터들(100, 102, 104, 106)은 제어 게이트 및 플로팅 게이트를 가진다. 예를 들어, 트랜지스터(100)는 제어 게이트(100CG) 및 플로팅 게이트(100FG)를 가진다. 트랜지스터(102)는 제어 게이트(102CG) 및 플로팅 게이트(102FG)를 포함한다. 트랜지스터(104)는 제어 게이트(104CG) 및 플로팅 게이트(104FG)를 포함한다. 트랜지스터(106)는 제어 게이트(106CG) 및 플로팅 게이트(106FG)를 포함한다. 제어 게이트(100CG)는 워드 라인(WL3)에 연결되고, 제어 게이트(102CG)는 워드 라인(WL2)에 연결되고, 제어 게이트(104CG)는 워드 라인(WL1)에 연결되고, 그리고 제어 게이트(106CG)는 워드 라인(WL0)에 연결된다.
도 1 및 2가 NAND 스트링 내에 4개의 메모리 셀을 도시하였지만, 이러한 4개의 메모리 셀들을 이용한 것은 단지 예로서 제공된 것임을 이해해야 한다. NAND 스트링은 4개 보다 적거나 많은 메모리 셀들을 가질 수 있다. 예를 들어, 일부 NAND 스트링들은 8개, 16개, 32개, 64개, 128개 등의 메모리 셀을 포함한다. 여기에서의 설명은 NAND 스트링 내의 임의의 특정수의 메모리 셀들로 한정되지 않는다.
NAND 구조를 이용하는 플래시 메모리 시스템에 대한 전형적인 아키텍쳐는 복수개의 NAND 스트링들을 포함할 것이다. 각 NAND 스트링은 선택 라인(SGS)에 의해 제어되는 자신의 소스 선택 게이트에 의해 소스 라인에 연결되고, 선택 라인(SGD)에 의해 제어되는 자신의 드레인 선택 게이트에 의해 자신의 관련 비트라인에 연결된다. 각각의 비트라인 및 비트라인 컨택을 통해 그 비트라인에 연결되는 각각의 NAND 스트링(들)은 메모리 셀 어레이의 열들을 포함한다. 비트라인들은 다수의 NAND 스트링들과 공유된다. 전형적으로, 비트라인은 워드라인들에 수직인 방향으로 NAND 스트링들의 상부로 뻗어있으며, 하나 이상의 감지 증폭기들에 연결된다.
NAND 타입 플래시 메모리들 및 이들의 동작에 대한 적절한 예들은 그 전체가 참조로서 본원에 통합되는 다음의 미국 특허들/특허 출원들: 미국 특허 제5,570,315호; 미국 특허 제5,774,397호; 미국 특허 제6,046,935호; 미국 특허 제6,456,528호; 및 미국 특허 공개 US2003/0002348에서 제공된다. 본 명세서의 논의는 또한 NAND 타입에 부가하여 다른 타입의 플래시 메모리, 뿐만아니라 다른 타입의 비휘발성 메모리에도 적용될 수 있다.
NAND 플래시 메모리에 부가하여, 다른 타입들의 비휘발성 저장 디바이스들도 이용될 수 있다. 예를 들어, 비휘발성 메모리 디바이스들은 또한 전하를 저장하기 위해 유전층을 이용하는 메모리 셀들로부터 제조된다. 이전에 설명된 전도성 플로팅 게이트 소자들 대신, 유전층이 이용된다. 유전체 저장 소자를 이용하는 이러한 메모리 디바이스들은, "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21. no. 11, 2000년 11월, 543-545 페이지에서 Eitan 등에 의해 설명된다. ONO 유전층은 소스 확산부와 드레인 확산부 사이의 채널에 걸쳐서 연장된다. 하나의 데이터 비트에 대한 전하가 드레인에 인접하는 유전층 내에 국부화(localize)되고, 다른 데이터 비트에 대한 전하가 소스에 인접하는 유전층 내에 국부화된다. 예를 들어, 미국 특허 5,768,192호 및 6,011,725호는 2개의 실리콘 이산화물층들 사이에 샌드위치되는 트래핑 유전체를 갖는 비휘발성 메모리 셀을 개시한다. 다중 상태 데이터의 저장은 유전체 내의 공간적으로 분리된 전하 저장 영역들의 이진 상태들을 개별적으로 판독함으로써 구현된다. 다른 타입들의 비휘발성 저장 소자도 이용될 수 있다.
도 3은 메모리 셀들(예를 들어, NAND 멀티 상태 플래시 메모리 또는 다른 유닛)의 페이지, 워드라인 또는 다른 단위들을 병렬로 판독하고 프로그래밍하기 위한 판독/기록 회로들을 구비하는 메모리 디바이스(210)를 도시한다. 메모리 디바이스(210)는 하나 이상의 메모리 다이 또는 칩들(212)을 포함한다. 메모리 다이(212)은 메모리 셀들의 (2차원 또는 3차원의) 어레이(200), 제어 회로(220) 및 판독/기록 회로들(230a 및 230b)을 포함한다. 일 실시예에서, 다양한 주변 회로들에 의한 메모리 어레이(200)로의 액세스는, 그 어레이의 대향 측들 상에서, 대칭적인 방식으로 구현되며, 이에 따라 각 측 상의 액세스 라인들 및 회로의 밀도들은 반으로 감소하게 된다. 판독/기록 회로들(230a 및 230b)은 다수의 감지 블록들(300)을 포함하는 바, 이러한 감지 블록들(300)은 메모리 셀들의 페이지가 병렬로 판독 또는 프로그래밍될 수 있게 한다. 메모리 어레이(200)는 행 디코더들(240a 및 240b)을 통해 워드라인들에 의해 어드레스가능하고, 열 디코더들(242a 및 242b)을 통해 비트라인들에 의해 어드레스가능하다. 워드라인들 및 비트라인들은 제어 라인들의 예들이다. 전형적인 실시예에서, 제어기(244)는 하나 이상의 메모리 다이(212)와 동일한 메모리 디바이스(210)(예를 들어, 제거가능한 저장 카드 또는 패키지) 내에 포함된다. 그러나, 제어기가 분리될 수도 있다. 커맨드들 및 데이터는, 라인들(232)을 통해 호스트와 제어기(244) 사이에, 그리고 라인들(234)을 통해 제어기와 하나 이상의 메모리 다이(212) 사이에 전송된다.
제어 회로(220)는 메모리 어레이(200) 상에서 메모리 동작들을 수행하기 위해 판독/기록 회로들(230a 및 230b)과 협동한다. 제어 회로(220)는 상태 머신(222), 온칩 어드레스 디코더(224) 및 전력 제어 모듈(226)을 포함한다. 상태 머신(222)은 메모리 동작들의 칩 레벨 제어를 제공한다. 온칩 어드레스 디코더(224)는 디코더들(240a, 240b, 242a 및 242b)에 의해 이용되는 하드웨어 어드레스와 호스트 또는 메모리 제어기에 의해 이용되는 것 간의 어드레스 인터페이스를 제공한다. 전력 제어 모듈(226)은 메모리 동작들 동안 워드라인들 및 비트라인들에 공급되는 전력 및 전압들을 제어한다. 일 실시예에서, 전력 제어 모듈(226)은 공급 전압 보다 큰 전압들을 생성할 수 있는 하나 이상의 전하 펌프들을 포함한다.
일 실시예에서, 제어 회로(220), 전력 제어 회로(226), 디코더 회로(224), 상태 머신 회로(222), 디코더 회로(242a), 디코더 회로(242b), 디코더 회로(240a), 디코더 회로(240b), 판독/기록 회로들(230a), 판독/기록 회로들(230b), 및/또는 제어기(244) 중 하나 또는 임의의 조합은 하나 이상의 관리 회로들로서 지칭될 수 있다. 상기 하나 이상의 관리 회로들은 본원에서 설명되는 프로세스들을 수행한다.
도 4는 메모리 셀 어레이(200)의 예시적인 구조를 도시한다. 일 실시예에서, 메모리 셀들의 어레이는 메모리 셀들의 많은 수의 블록들(예를 들어, 블록들 0-1023, 또는 다른 양)로 분할된다. 플래시 EEPROM 시스템들에 대해 일반적인 것으로서, 블록은 소거의 단위이다. 즉, 각 블록은 함께 소거되는 최소수의 메모리 셀들을 포함한다. 또한, 다른 소거 단위들도 이용될 수 있다.
블록은 비트라인들(예를 들어, 비트라인들 BL0 - BL69,623) 및 워드라인들(WL0, WL1, WL2, WL3)을 통해 액세스되는 NAND 스트링들의 세트를 포함한다. 도 4는 NAND 스트링을 형성하기 위해 직렬 연결된 4개의 메모리 셀들을 도시한다. 비록 각 NAND 스트링 내에 4개의 셀들이 포함되는 것으로 나타나있지만, 4개 보다 많거나 적은 메모리 셀들이 이용될 수 있다(예를 들어, 16, 32, 64, 128 또는 다른 수의 메모리 셀들이 NAND 스트링 상에 있을 수 있다). NAND 스트링의 하나의 단자는 (선택 게이트 드레인 라인(SGD)에 연결된) 드레인 선택 게이트를 통해 대응하는 비트라인에 연결되고, 다른 단자는 (선택 게이트 소스 라인(SGS)에 연결된) 소스 선택 게이트를 통해 소스 라인에 연결된다.
전형적으로, 각 블록은 다수의 페이지들로 분할된다. 일 실시예에서, 페이지는 프로그래밍의 단위이다. 또한, 프로그래밍의 다른 단위들도 이용될 수 있다. 전형적으로, 데이터의 하나 이상의 페이지들은 메모리 셀들의 하나의 행에 저장된다. 예를 들어, 데이터의 하나 이상의 페이지들은 공통 워드라인에 연결된 메모리 셀들에 저장될 수 있다. 페이지는 하나 이상의 섹터들을 저장할 수 있다. 섹터는 사용자 데이터 및 오버헤드 데이터(시스템 데이터라고도 불림)를 포함한다. 전형적으로, 오버헤드 데이터는 헤더 정보, 및 섹터의 사용자 데이터로부터 계산된 에러 정정 코드(ECC) 리던던시를 포함한다. 제어기(또는 다른 컴포넌트)는, 데이터가 어레이 내로 프로그램되고 있을 때에는 ECC를 계산하고, 데이터가 어레이로부터 판독되고 있을 때 이를 검사한다. 대안적으로, ECC들 및/또는 다른 오버헤드 데이터는, 이들이 속하는 사용자 데이터와 다른 페이지들, 또는 심지어는 다른 블록들 내에 저장된다. 전형적으로, 사용자 데이터의 섹터는 자기 디스크 드라이브들 내의 섹터의 크기에 해당하는 512 바이트들이다. 8 페이지부터, 예컨대, 32, 64, 128, 또는 그 이상에 이르는 페이지들까지의 임의의 페이지 다수 페이지들이 블록을 형성한다. 다른 크기의 블록들, 페이지들 및 섹터들도 이용될 수 있다.
도 5는 코어 부분(감지 모듈(480)로서 지칭됨)과 공통 부분(490)으로 분할되는 개별적인 감지 블록(300)의 블록도이다. 일 실시예에서, 각 비트라인에 대해 개별적인 감지 모듈(480)이 있고, 다수의 감지 모듈들(480)의 세트에 대해 하나의 공통 부분(490)이 있다. 일 예에서, 감지 블록은 하나의 공통 부분(490) 및 8개의 감지 모듈들(480)을 포함할 것이다. 그룹 내의 감지 모듈들 각각은 데이터 버스(472)를 통해 관련된 공통 부분과 통신할 것이다. 일 예는, 그 전체가 본원의 참조로서 인용되는 미국 공개 특허 제2006/0140007호에서 찾아볼 수 있다.
감지 모듈(480)은 감지 회로(470)를 포함하는 바, 이 감지 회로(470)는 연결된 비트라인 내의 전도 전류가 소정의 레벨 보다 큰지 아니면 작은 지를 결정한다. 일부 실시예들에서, 감지 모듈(480)는 일반적으로 감지 증폭기라 지칭되는 회로를 포함한다. 감지 모듈(480)은 또한 연결된 비트라인 상에 전압 조건을 설정하는 데에 이용되는 비트라인 래치(482)를 포함한다. 예를 들어, 비트라인 래치(482)에 래치되는 소정의 상태는, 결과적으로 연결된 비트라인이 프로그램 금지를 나타내는 상태(예를 들어, Vdd)로 풀링되게 할 것이다.
공통 부분(490)은 프로세서(492), 데이터 래치들의 세트(494), 및 데이터 버스(420)와 데이터 래치들의 세트(494) 사이에 결합되는 I/O 인터페이스(496)를 포함한다. 프로세서(492)는 계산들을 수행한다. 예를 들어, 프로세서의 기능들 중 하나는 감지된 메모리 셀에 저장된 데이터를 결정하고, 결정된 데이터를 데이터 래치들의 세트에 저장하는 것이다. 데이터 래치들의 세트(494)는 판독 동작 동안 프로세서(492)에 의해 결정되는 데이터 비트들을 저장하는 데에 이용된다. 이는 또한, 프로그램 동작 동안 데이터 버스(420)로부터 들어오는(imported) 데이터 비트들을 저장하는 데에 이용된다. 이러한 들어오는 데이터 비트들은 메모리 내에 프로그램되는 것으로 의도되는 기록 데이터를 나타낸다. I/O 인터페이스(496)는 데이터 래치들(494)과 데이터 버스(420) 간의 인터페이스를 제공한다.
판독 또는 감지 동안, 시스템의 동작이 상태 머신(222)에 의해 제어되는 바, 이러한 상태 머신은 (전력 제어(226)를 이용하여) 어드레스되는 메모리 셀(들)로의 서로 다른 제어 게이트 전압들의 공급을 제어한다. 메모리에 의해 지원되는 다양한 메모리 상태들에 대응하는 미리 정의된 다양한 제어 게이트 전압들을 통해 스텝(step)형으로 진행할 때에, 감지 모듈(480)은 이러한 전압들중 하나의 전압으로 이동(trip)되며, 감지 모듈(480)로부터 버스(472)를 통해 프로세서(492)에 출력이 제공될 것이다. 이 시점에, 프로세서(492)는 입력 라인들(493)을 통해 상태 머신으로부터 인가되는 제어 게이트 전압에 대한 정보 및 감지 모듈의 트리핑 이벤트(들)를 고려하여, 결과적인 메모리 상태를 결정한다. 그런 다음, 그 메모리 상태에 대한 이진 엔코딩을 계산하고, 결과적인 데이터 비트들을 데이터 래치들(494)에 저장한다. 코어 부분의 다른 실시예에서, 비트라인 래치(482)는 이중의 임무, 즉, 감지 모듈(480)의 출력을 래치하는 래치로서, 그리고 상기 설명한 바와 같은 비트라인 래치로서의 임무를 한다.
일부 실시예들은 다수의 프로세서들(492)을 포함할 것임이 예상된다. 일 실시예에서, 각 프로세서(492)는 출력 라인(도 5에는 미도시)을 포함할 것이며, 이에 따라 출력 라인들 각각은 서로 와이어드-OR(wired-OR)된다. 일부 실시예들에서, 출력 라인들은 와이어드-OR 라인에 연결되기 전에 인버팅된다. 이러한 구성은 프로그램 검증 프로세스 동안, 프로그래밍 프로세스가 언저 완료되었는지를 빠르게 결정할 수 있게 하는데, 이는 와이어드-OR 라인을 수신하는 상태 머신이 프로그램되고 있는 모든 비트들이 원하는 레벨에 언제 도달되었는 지를 결정할 수 있기 때문이다. 예를 들어, 각 비트가 자신의 원하는 레벨에 도달했을 때, 그 비트에 대한 논리 0이 와이어드-OR 라인에 송신될 것이다(또는 데이터 1이 반전된다). 모든 비트들이 데이터 0을 출력할 때(또는 데이터 1이 반전될 때), 상태 머신은 프로그래밍 프로세스를 종료해야 함을 알게 된다. 각 프로세서가 8개의 감지 모듈들과 통신하는 실시예들에서, 상태 머신은 (일부 실시예들에서) 와이어드-OR 라인을 8번 판독할 필요가 있거나, 또는 관련된 비트라인들의 결과를 축적(accumulation)하도록 프로세서(492)에 로직이 부가됨으로써, 상태 머신은 단지 와이어드-OR 라인을 단지 한번 판독하면 된다.
데이터 래치 스택(494)은 감지 모듈에 대응하는 데이터 래치들의 스택을 포함한다. 일 실시예에서, 감지 모듈(480) 마다 3개(또는 4개 또는 다른 수)의 데이터 래치들이 있다. 일 실시예에서, 래치들은 각각 1비트이다.
프로그램 또는 검증 동안, 프로그램될 데이터가 데이터 버스(420)로부터 데이터 래치들의 세트(424)에 저장된다. 검증 프로세스 동안, 프로세서(492)는 원하는 메모리 상태에 대해 검증된 메모리 상태를 모니터한다. 2개가 일치하면, 프로세서(492)는, 비트라인이 프로그램 금지를 나타내는 상태로 풀링될 수 있도록 비트라인 래치(482)를 설정한다. 이는 비트라인에 결합된 메모리 셀이 그것의 제어 게이트 상에 프로그래밍 펄스들을 받는다 할지라도, 이 메모리 셀들에 대한 추가적인 프로그래밍이 금지되게 한다. 다른 실시예들에서, 프로세서는 먼저 비트라인 래치(482)를 로딩(loading)하고, 검증 프로세스 동안 감지 회로가 이것을 금지 값으로 설정한다.
일부 실시예들에서(하지만, 반드시 요구되는 것은 아니다), 데이터 래치들은 시프트 레지스터로서 구현되어, 이 데이터 래치들 내에 저장된 병렬 데이터가 데이터 버스(420)를 위한 직렬 데이터로 변환되며, 그 반대의 경우 또한 성립한다. 바람직한 일 실시예에서, 메모리 셀들의 판독/기록 블록에 대응하는 모든 데이터 래치들이 함께 링크되어 블록 시프트 레지스터를 형성하며, 이에 따라 데이터의 블록은 직렬 전송에 의해 입력 또는 출력될 수 있다. 특히, 기록/판독 모듈들의 뱅크(bank)는, 자신의 데이터 래치들의 세트 각각이 (이들이 전체 판독/기록 블록에 대한 시프트 레지스터의 일부인 것 처럼) 데이터 버스로 또는 데이터 버스로부터 순차적으로 데이터를 시프트시키도록 조정된다.
감지 동작들 및 감지 증폭기들에 대한 부가적인 정보는, (1) 2004년 3월 25일 공개되었으며 그 명칭이 "Non-Volatile Memory And Method With Reduced Source Line Bias Errors"인 미국 공개 특허 제2004/0057287호; (2) 2004년 6월 10일 공개되었으며 그 명칭이 "Non-Volatile Memory And Method with Improved Sensing"인 미국 공개 특허 제2004/0109357호; (3) 미국 공개 특허 제2005/0169082호; (4) 2005년 4월 5일 발명자 Jian Chen에 의해 출원되었으며 그 명칭이 "Compensating for Coupling During Read Operations of Non-Volatile Memory"인 미국 공개 특허 제2006/0221692호; 및 (5) 2005년 12월 28일 발명자 Siu Lung Chan 및 Raul-Adrian Cernea에 의해 출원되었으며 그 명칭이 "Reference Sense Amplifier For Non-Volatile Memory"인 미국 공개 특허 제2006/0158947호에서 찾아볼 수 있다. 위에 열거된 4개의 특허 문헌들은 그 전체가 본 명세서에 참조로서 포함된다.
(검증을 이용한) 성공적인 프로그래밍 프로세서의 종료시, 메모리 셀들의 임계 전압은 프로그램된 메모리 셀들에 대한 하나 이상의 임계 전압 분포들 내에 또는 소거된 메모리 셀들에 대한 임계 전압 분포 내에 적절히 있어야 한다. 도 6은 각각의 메모리 셀이 3 비트의 데이터를 저장할 때의 메모리 셀 어레이를 위한 예시적인 임계 전압 분포(또는 데이터 상태들)를 도시한다. 그러나, 다른 실시예는 메모리 셀 당 3 비트보다 많거나 적은 데이터(예를 들어, 4 비트 이상의 데이터)를 이용할 수 있다.
도 6에서, 각각의 메모리 셀은 3 비트의 데이터를 저장하며, 따라서, 8개의 유효 데이터 상태들(S0-S7)이 존재한다. 일 실시예에서, 데이터 상태(S0)는 0 볼트 미만이고, 데이터 상태들(S1-S7)은 0 볼트 초과이다. 다른 실시예들에서는, 8개의 데이터 상태들 모두가 0 볼트 초과이거나, 또는 다른 구성들이 구현될 수 있다. 일 실시예에서, 임계 전압 분포(S0)는 임계 전압 분포들(S1-S7)보다 넓다.
각각의 데이터 상태는 메모리 셀에 저장된 세 개의 비트들에 대한 고유 값에 대응한다. 일 실시예에서, S0=111, S0=111, S1=110, S2=101, S3=100, S4=011, S5=010, S6=001 그리고 S7=000이다. 상태들(S0-S7)에 대한 다른 데이터 매핑이 또한 이용될 수 있다. 일 실시예에서, 메모리 셀에 저장된 모든 데이터 비트들이 동일한 논리 페이지에 저장된다. 다른 실시예들에서, 메모리 셀에 저장된 각각의 데이터 비트는 서로 다른 페이지들에 대응한다. 따라서, 3 비트의 데이터를 저장하는 메모리 셀은 제1 페이지, 제2 페이지, 및 제3 페이지 내에 데이터를 포함할 것이다. 일부 실시예들에서, 동일한 워드 라인에 연결된 메모리 셀들 전부는 동일한 세 개의 데이터 페이지들에 데이터를 저장할 것이다. 일부 실시예들에서, 워드 라인에 연결된 메모리 셀들은 (예를 들어, 홀수 및 짝수 비트 라인들에 의해, 또는 다른 구성에 의해) 서로 다른 페이지 세트들로 그룹화될 수 있다.
몇몇 종래 기술의 디바이스들에서, 메모리 셀들이 상태(S0)로 소거될 것이다. 메모리 셀들은 상태(S0)로부터 상태들(S1-S7) 중의 임의의 상태로 프로그램될 수 있다. 풀 시퀀스 프로그래밍으로 알려진 일 실시예에서, 메모리 셀들은 소거 상태(S0)로부터 프로그램 상태들(S1-S7) 중 임의의 상태로 바로 프로그램될 수 있다. 예를 들어, 프로그래밍될 메모리 셀들의 집단(population)이 먼저 소거되어, 그 집단 내의 모든 메모리 셀들이 소거 상태(S0)에 있을 수 있다. 일부 메모리 셀들이 상태(S0)로부터 상태(S1)로 프로그램되고 있는 동안, 다른 메모리 셀들은 상태(S0)로부터 상태(S2)로, 상태(S0)로부터 상태(S3)로, 상태(S0)로부터 상태(S4)로, 상태(S0)로부터 상태(S5)로, 상태(S0)로부터 상태(S6)로, 그리고 상태(S0)로부터 상태(S7)로 프로그그램 되고 있다. 풀 시퀀스 프로그래밍은 도 6의 7개의 곡선 화살표들에 의해 도으로 표시된다.
도 7a 내지 7i는, 임의의 특정 메모리 셀에 대해, 이전 페이지들을 위하여 인접 메모리 셀들에 기입한 후, 특정 페이지에 대하여 그 특정 메모리 셀에 기록함으로써 플로팅 게이트 대 플로팅 게이트 커플링의 영향을 감소시키는 비휘발성 메모리를 프로그래밍하는 또 다른 프로세스를 도시한다. 도 7a 내지 7i는 3 단계 프로그래밍 프로세스이다. 제1 단계 전에, 메모리 셀들이 소거되어 이들이 상태(S0)의 소거 임계 분포 내에 있을 것이다.
도 7a 내지 7i의 프로세스는 각각의 메모리 셀이 3 비트의 데이터를 저장하고, 각각의 비트가 상이한 페이지 내에 있는 것으로 가정한다. 데이터의 첫번째 비트(최좌측 비트)는 제1 페이지와 관련된다. 중간 비트는 제2 페이지와 관련된다. 최우측 비트는 제3 페이지와 관련된다. 데이터에 대한 데이터 상태들의 상관은 다음과 같다. S0=111, Sl=l10, S2=101, S3=100, S4=011, S5=010, S6=001 및 S7=000. 그러나, 다른 실시예들이 다른 데이터 엔코딩 기법들(예를 들어, 이웃하는 상태들 사이에 일 비트만이 변하도록 하는 그레이 코드 등)을 이용할 수 있다
(도 7a에 도시된 바와 같이) 제1 페이지를 프로그래밍할 때, 비트가 데이터 "1"이 된다면, 메모리 셀은 상태(S0)(임계 전압 분포(502))에 머물 것이다. 비트가 "0"이 된다면, 메모리 셀은 상태(S4)(임계 전압 분포(504))로 프로그램된다. 인접 메모리 셀들이 프로그램된 후, 인접 플로팅 게이트들 사이의 용량성 커플링은 상태(S4)를 도 7b에 도시된 것과 같이 넓어지게 할 수 있다. 상태(S0) 또한 넓어질 수 있으나, 그 영향을 무시하기에 충분한 마진이 S0와 S1 사이에 존재한다. 인접한 플로팅 게이트들 간의 용량성 커플링에 대한 추가의 정보는 미국 특허 제5,867,429호 및 미국 특허 제6,657,891에서 찾을 수 있으며, 이들 두 특허문헌들은 그 전체가 본 명세서에 참조로서 포함된다.
제2 페이지를 프로그래밍할 때(도 7c 참조), 메모리 셀이 상태(S0)에 있고 제2 페이지 비트가 데이터 "1"이라면, 메모리 셀은 상태(S0)에 머문다. 일부 실시예들에서, 제2 페이지에 대한 프로그래밍 프로세스는 임계 전압 분포(501)를 새로운 S0로 좁힐 것(tighten)이다. 메모리 셀이 상태(S0)에 있었고 제2 페이지에 기입될 데이터가 "0"이라면, 메모리 셀은 상태(S2)(임계 전압 분포(506))로 이동된다. 상태(S2)는 C*의 검증 포인트(최저 전압)를 갖는다. 메모리 셀이 상태(S4)에 있었고 메모리 셀에 기입될 데이터가 "1"이라면, 메모리 셀은 S4로 유지된다. 그러나, 도 7c에 도시된 바와 같이, 메모리 셀들을 상태(S4)에 대해 임계 전압 분포(504)로부터 임계 전압 분포(508)로 이동시킴으로써 상태(S4)가 좁혀진다. 임계 전압 분포(508)는 E*의 검증 포인트를 가진다(임계 전압 분포(504)의 E**에 비교됨). 메모리 셀이 상태(S4)에 있고 제2 페이지에 기입될 데이터가 "0"이라면, 메모리 셀은, G*의 검증 포인트를 이용하는 상태(S6)(임계 전압 분포(510))로 이동된 임계 전압을 갖는다.
인접한 메모리 셀들이 프로그래밍된 후, 도 7d의 임계 전압 분포(506, 508, 510)에 의해 표시된 것과 같이, 플로팅 게이트 대 플로팅 게이트 커플링으로 인하여 상태들(S2, S4, S6)이 넓혀진다. 일부 경우에, 상태(S0)가 또한 넓어질 수 있다.
도 7e, 7f, 7g, 7h는 제3 페이지의 프로그래밍을 도시한다. 프로그래밍을 보여주기 위해 한 개의 그래프가 사용될 수 있지만, 가시성의 이유로 프로세스가 4개 그래프로 표시된다. 제2 페이지가 프로그래밍된 후, 메모리 셀들은 상태 S0, S2, S4, 또는 S6 중 어느 하나에 있다. 도 7e는 제3 페이지에 대해 프로그래밍되고 있는 상태(S0)에 있는 메모리 셀을 도시한다. 도 7f는 제3 페이지에 대해 프로그래밍되고 있는 상태(S2)에 있는 메모리 셀을 도시한다. 도 7g는 제3 페이지에 대해 프로그래밍되고 있는 상태(S4)에 있는 메모리 셀을 도시한다. 도 7h는 제3 페이지에 대해 프로그래밍되고 있는 상태(S6)에 있는 메모리 셀을 도시한다. 도 7i는 메모리 셀들 집단에 대해 도 7e, 7f, 7g, 및 7h의 프로세스가 (동시에 또는 순차적으로(serially))수행된 후의 임계 전압 분포들을 도시한다.
메모리 셀이 상태(S0)에 있고 제3 페이지 데이터가 "1"이라면, 메모리 셀은 상태(S0)에 유지된다. 제3 페이지의 데이터가 "0"이라면, 메모리 셀의 임계 전압이 상승되어, B의 검증 포인트를 갖는 상태(S1)로 상승된다.(도 7e 참조).
메모리 셀이 상태(S2)에 있고 제3 페이지에 기입될 데이터가 "1"이라면, 메모리 셀은 상태(S2)로 유지될 것이다(도 7f 참조). 그러나, 임계 전압 분포(506)를 C의 검증 포인트를 갖는 새 상태(S2)로 좁히기 위해 일부 프로그래밍이 수행될 것이다. 제3 페이지에 기입될 데이터가 "0"이라면, 메모리는 D 볼트의 검증 포인트를 갖는 상태(S3)로 프로그래밍될 것이다.
메모리 셀이 상태(S4)에 있고 제3 페이지에 기입될 데이터가 "1"이라면, 메모리 셀은 상태(S4)에 유지될 것이다(도 7g 참조). 그러나, 임계 전압 분포(508)를 E의 검증 포인트를 갖는 새 상태(S4)로 좁히도록 어떤 프로그래밍이 수행될 것이다. 메모리 셀이 상태(S4)에 있고 제3 페이지에 기입될 데이터가 "0"이라면, 메모리 셀은 그 임계 전압이 상승되어 F의 검증 포인트를 갖는 상태(S5)에 있을 것이다.
메모리 셀이 상태(S6)에 있고 제3 페이지에 기입될 데이터가 "1"이라면, 메모리 셀은 상태(S6)에 유지된다(도 7h참조). 그러나, 임계 전압 분포(510)가 좁혀져 G에 검증 포인트를 갖는 새 상태(S6)에 있게 하는 어떤 프로그래밍이 수행될 것이다. 제3 페이지 데이터가 "0"이라면, 메모리 셀은 그 임계 전압이 H에 검증 포인트를 갖는 상태(S7)로 프로그래밍될 것이다. 제3 페이지의 프로그래밍의 종료시, 메모리 셀은 도 7i에 표시된 8개의 상태들 중 하나에 있을 것이다.
도 8은 메모리 셀들 또는 세트의 페이지들을 프로그래밍하기 위한 순서의 일 예를 표시한다. 표는 도 4의 네 개의 워드 라인들(WL0, WL1, WL2 및 WL3)에 대해 프로그래밍하기 위한 순서를 제공한다. 그러나, 표는 4개보다 더 많거나 적은 워드 라인들을 수용하도록 조정될 수 있다. WL0에 연결된 메모리 셀들의 제1 페이지가 프로그램되고, 이에 후속하여 WL1에 연결된 메모리 셀들의 제1 페이지가 프로그램되고, 이에 후속하여 WL0에 연결된 메모리 셀들의 제2 페이지가 프로그램되고, 이에 후속하여 WL2에 연결된 메모리 셀들의 제1 페이지가 프로그램되고, 이에 후속하여 WL1에 연결된 메모리 셀들의 제2 페이지가 프로그램되는 등이다.
도 9는 선택된 워드 라인에 연결된 메모리 셀들을 프로그래밍하기 위한 프로그래밍 프로세스를 기술하는 흐름도이다. 일 실시예에서, 도 9의 프로세스는 메모리 셀들의 블록을 프로그램하는데 사용된다. 도 9의 프로세스의 일 구현예에서, 메모리 셀들 상에 균일한 마모(even wear)를 유지하기 위하여 메모리 셀들이 선행-프로그램(pre-program)된다(단계(550)). 일 실시예에서, 메모리 셀들이 상태(S7), 랜덤 패턴, 또는 임의의 다른 패턴으로 선행-프로그램된다. 일부 구현예들에서는, 선행-프로그래밍이 수행될 필요가 없다.
단계(552)에서, 메모리 셀들이 프로그래밍 전에 (블록 또는 다른 단위로) 소거된다. 메모리 셀들은 일 실시예에서 충분한 시간 기간 동안 p-웰(well)을 소거 전압(예를 들어, 20 볼트)으로 상승시키고 그리고 소스 및 비트 라인들을 플로팅시킨 상태에서 선택된 블록의 워드 라인들을 접지시킴으로써 소거된다. 용량성 커플링으로 인해, 비선택 워드라인들, 비트라인들, 선택 라인들, 및 공통 소스 라인 역시 소거 전압의 상당 부분까지 상승된다. 선택된 메모리 셀들의 터널 산화물층들에 강한 전계가 걸리고, 전형적으로 파울러-노드하임 터널링 메커니즘에 의해 플로팅 게이트들의 전자들이 기판측으로 방출됨에 따라, 선택된 메모리 셀들이 소거된다. 전자들이 플로팅 게이트로부터 p-웰 영역으로 이동함에 따라, 선택된 셀의 임계 전압이 낮아지게 된다. 소거는 전체 메모리 어레이 상에서 수행되거나, 개별적인 블록들 상에서 수행되거나, 또는 셀들의 다른 유닛 상에서 수행될 수 있다. 일 실시예에서, 메모리 셀들의 소거 후, 소거된 메모리 셀들 전체가 상태(S0)에 있을 것이다(도 6 참조).
단계(554)에서, 소거된 메모리 셀들의 소거된 임계 전압 분포를 좁히기 위해, 소프트 프로그래밍이 수행된다. 소거 프로세스의 결과로서, 일부 메모리 셀들은 필요한 것 보다 더 깊은 소거 상태(deeper erased state)에 있을 수 있다. 소프트 프로그래밍 프로세스는, 더 깊은 소거된 메모리 셀들의 임계 전압을 소거 검증 레벨에 더 가까이 이동시키기 위해 프로그래밍 펄스들을 인가할 수 있다. 예를 들어, 도 6를 보면, 단계(554)는 상태(S0)와 관련된 임계 전압 분포를 좁히는 것을 포함할 수 있다. 단계(556)에서, 블록의 메모리 셀들이 여기에 기술된 것과 같이 프로그램된다. 도 9의 프로세스는 위에 기술된 다양한 회로들을 이용하여 상태 머신의 지시하에서 수행될 수 있다. 다른 실시예들에서, 도 9의 프로세스는 위에 기술된 다양한 회로들을 이용하여 제어기의 지시하에서 수행될 수 있다. 도 9의 프로세스를 수행한 후, 블록의 메모리 셀들이 판독될 수 있다.
도 10은 공통 워드라인에 연결된 메모리 셀들에 대한 프로그래밍을 수행하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다. 도 10의 프로세스는 도 9의 단계(556) 동안 일 회 또는 수 회 수행될 수 있다. 예를 들어, 도 10의 프로세스는 도 6의 풀 시퀀스 프로그래밍을 수행하는데 사용될 수 있고, 이 경우에, 도 10의 프로세스는 각 워드 라인에 대해 일회 수행될 것이다. 일 실시예에서, 프로그래밍 프로세스는 소스 라인에 가장 가까이 있는 워드 라인으로부터 시작하여, 비트 라인 방향으로 작업된다. 도 10의 프로세스는 또한, 도 7a 내지 도 7i의 프로그래밍 프로세스와 관련하여, 워드 라인에 대해 데이터 페이지의 프로그래밍을 수행하는데 이용될 수 있고, 이 경우에, 도 10의 프로세스는 각 워드 라인에 대해 3회 수행될 것이다. 다른 구성들 또한 사용될 수 있다. 도 10의 프로세스는 상태 머신(222)의 지시하에서 수행된다.
통상적으로, 프로그램 동작 중에 프로그램 신호(프로그램 전압이라고도 칭해짐)가 일련의 프로그램 펄스들로서 제어 게이트에 인가된다. 프로그래밍 펄스들 사이에는 검증을 가능하게 하기 위한 검증 펄스들의 세트가 있다. 많은 구현예들에서, 프로그램 펄스의 크기는 각각의 연속적인 펄스에 따라 소정의 스텝 사이즈만큼 증가된다. 도 10의 단계(608)에서, 프로그래밍 전압(Vpgm)이 시작 크기(예를 들어, ~12-16V 또는 또 다른 적합한 레벨)로 초기화되고 상태 머신(222)에 의해 유지되는 프로그램 카운터(PC)가 1로 초기화된다. 상태(610)에서, 프로그램 신호(Vpgm)의 프로그램 펄스가 선택된 워드 라인(프로그래밍하도록 선택된 워드 라인)에 인가된다. 비선택 워드 라인들은 하나 이상의 부스팅 전압들(예를 들어, ~9 볼트)을 수신하여 본 기술분야에서 알려져 있는 부스팅 기법을 수행한다. 메모리 셀이 프로그래밍되어야 한다면, 대응하는 비트 라인이 접지된다. 반면, 메모리 셀이 그것의 현재 임계 전압에 유지되어야 한다면, 대응하는 비트 라인이 VDD로 연결되어 프로그래밍이 금지된다. 부스팅 기법들에 대한 더 많은 정보는 미국 특허 제6,859,397호 및 미국 특허 출원 공개 제2008/0123425호에서 찾아볼 수 있고, 이들 모두는 본 명세서에 참조로서 포함된다.
단계(610)에서, 선택된 워드 라인에 연결된 모든 메모리 셀들이 함께 프로그래밍되도록, 선택된 워드 라인에 연결된 모든 메모리 셀들에 프로그램 펄스가 동시에 인가된다. 즉, 이들은 동시에 (또는 중복되는 시간(overlapping times) 동안) 프로그래밍된다. 이러한 식으로, 메모리 셀들이 프로그래밍으로부터 록아웃되지 않는한, 선택된 워드 라인에 연결된 메모리 셀들 모두가 동시에 그들의 임계 전압을 변경할 것이다.
단계(612)에서, 목표 레벨들의 적절한 세트를 이용하여, 선택된 메모리 셀들의 상태들이 검증된다. 도 10의 단계(612)는 한번 이상의 검증 동작들을 수행하는 것을 포함한다. 일반적으로, 검증 동작 및 판독 동작 동안, 선택된 워드 라인이 전압에 연결되고, 각각의 판독 및 검증 동작(예를 들어, 도 7i의 B, C, D, E, F, G, 및 H 참조)에 대해 이 전압의 레벨이 특정되는바, 이는 고려되는 메모리 셀의 임계 전압이 그러한 레벨에 도달했는지 여부를 결정하기 위해서이다. 워드라인에 전압을 인가한 후, 그 워드라인에 인가된 전압에 응답하여 그 메모리 셀이 턴온되었는 지를 결정하기 위하여 메모리 셀의 전도 전류가 측정된다. 전도 전류가 특정 값 보다 큰 것으로 측정되면, 그 메모리 셀은 턴온되었고, 워드라인에 인가된 전압은 그 메모리 셀의 임계 전압 보다 큰 것으로 여겨진다. 전도 전류가 특정 값 보다 큰 것으로 측정되지 않으면, 그 메모리 셀이 턴온되지 않았으며 워드라인에 인가된 전압이 그 메모리 셀의 임계 전압보다 크지 않은 것으로 여겨진다.
판독 또는 검증 동작 동안 메모리 셀의 전도 전류를 측정하는 많은 방법들이 있다. 일 예에서, 메모리 셀의 전도 전류는 그 메모리 셀이 감지 증폭기 내의 커패시터를 방전 또는 충전시키는 레이트(rate)에 의해 측정된다. 다른 예에서, 선택된 메모리 셀의 전도 전류는 그 메모리 셀을 포함하는 NAND 스트링으로 하여금 대응하는 비트라인을 방전시킬 수 있게 한다(또는 방전시킬 수 없게 한다). 어느 정도의 시간 기간 이후 비트라인 상의 전압을 측정하여, 그 비트라인이 방전되었는 지의 여부를 결정한다. 본 명세서에 기술된 기법은 검증/판독에 대해 본 기술분야에서 알려져 있는 다른 방법들로 이용될 수 있다. 감지 동작들 및 감지 증폭기들에 대한 부가적인 정보는, (1) 2004년 3월 25일 공개되었으며 그 명칭이 "Non-Volatile Memory And Method With Reduced Source Line Bias Errors"인 미국 공개 특허 2004/0057287; (2) 2004년 6월 10일 공개되었으며 그 명칭이 "Non-Volatile Memory And Method with Improved Sensing"인 미국 공개 특허 2004/0109357; (3) 미국 공개 특허 2005/0169082; (4) 2005년 4월 5일 발명자 Jian Chen에 의해 출원되었으며 그 명칭이 "Compensating for Coupling During Read Operations of Non-Volatile Memory"인 미국 공개 특허 2006/0221692 에서 찾아볼 수 있다.
선택된 메모리 셀의 임계 전압이 적절한 목표 레벨에 도달하였음이 검출되면, 예를 들어, 후속 프로그래밍 펄스들 동안 그 비트 라인 전압을 Vdd로 상승시킴으로써 메모리 셀이 추가적인 프로그래밍으로부터 록아웃된다. 통과 전압(예를 들어, -10볼트)이 프로그래밍 동작 동안 비선택 워드 라인들에 인가된다(예를 들어, 단계(610)). (통과 전압에 있는) 비선택 워드 라인들이 (Vdd에 있는) 비선택 비트라인들에 결합되어, 비선택 비트 라인들의 채널에, 프로그래밍을 금지시키는 전압(예를 들어, 대략 8볼트)가 존재하게 한다. 메모리 셀들을 프로그래밍 (및 부스팅)으로부터 록아웃시키는 다른 기법들이 또한 본 명세서에 기술된 기법과 함께 이용될 수 있다.
도 10으로 다시 돌아가면, 단계(614)("검증 상태")에서, 모든 메모리 셀들이 그들의 목표 임계 전압에 도달했는지 여부가 검사된다. 모든 메모리 셀들이 자신들의 목표 임계 전압에 도달한 경우, 선택된 모든 메모리 셀들이 자신들의 목표 상태들로 프로그래밍되었으며 이들의 목표 상태들에 대해 검증되었으므로 프로그래밍 프로세스가 성공적으로 완료된다. 단계(616)에서, "통과"상태가 보고된다. 일부 구현예들에서, 단계(614)에서, 적어도 소정 개수의 메모리 셀들이 적절히 프로그램되었는지 여부가 검사된다. 이 소정 개수는 모든 메모리 셀들의 개수보다 작을 수 있고, 그럼으로써 모든 메모리 셀들이 그들의 적절한 검증 레벨에 도달하기 전에 프로그래밍 프로세스가 정지될 수 있게 해준다. 성공적으로 프로그래밍되지 못한 메모리 셀들은 판독 프로세스 동안에 에러 정정(error correction)을 이용하여 정정될 수 있다.
단계(614)에서, 메모리 셀들 모두가 그들이 타겟 임계 전압에 도달하지는 않았음이 결정되면, 프로그래밍 프로세스가 계속된다. 단계(618)에서, 프로그램 카운터(PC)가 프로그램 제한 값(program limit value; PL)에 대해 검사된다. 프로그램 제한값의 일 예는 20 이지만, 다른 값들도 이용될 수 있다. 프로그램 카운터(PC)가 프로그램 제한 값 미만이 아니면, 단계(630)에서, 성공적으로 프로그램되지 않은 메모리 셀들의 수가 소정 개수 이하인지 여부가 결정된다. 성공적으로 프로그램되지 못한 메모리 셀들의 개수가 소정 개수 이하이면, 프로그래밍 프로세스는 통과된 것으로 플래그되고 통과 상태가 보고된다. 많은 경우에, 이 성공적으로 프로그램되지 못한 메모리 셀들은 판독 프로세스 동안 에러 정정을 이용하여 정정될 수 있다. 그러나, 성공적으로 프로그램되지 못한 메모리 셀들의 개수가 소정 개수보다 크면, 프로그램 프로세스는 실패된 것으로 플래그되고 실패 상태가 보고된다(단계(634)).
단계(618)에서, 프로그램 카운터(PC)가 프로그램 제한 값(PC)보다 작음이 결정되면, 프로세스는 단계(619)에서 계속되며, 이 시간 동안 프로그램 카운터(PC)는 1씩 증분된다. 단계(620)에서, 이전의 프로그램 펄스가 (관련된 메모리 셀이 그 목표 전압에 도달하였거나 소거 상태로 유지되기 때문에 록아웃된 비트 라인들 외의) 모든 비트 라인들에 인가되었는지 또는 프로그래밍을 더 필요로 하는 비트 라인들의 서브세트에만 인가되었는지가 결정된다. 아래에서 논의될 바와 같이, 시스템이 홀수 비트 라인들만을 또는 짝수 비트 라인들만을 프로그래밍할 때의 특정한 상황이 존재한다. 시스템이 프로그래밍을 필요로하는 모든 비트 라인들을 프로그래밍하고 있다면, 다음 단계는 단계(622)(단계(620)의 "함께" 결과를 참조)이다. 시스템이 프로그래밍될 필요가 있는 짝수 비트 라인들만을 또는 홀수 비트 라인들만을 프로그래밍하고 있다면, 단계(620) 후의 다음 단계는 단계(640)이다(단계(620))의 "따로" 결과를 참조).
단계(622)에서, 트리거가 발생했는지 여부가 결정된다. 일 실시예에서, 프로그램 전압(Vpgm)(예를 들어, 프로그램 펄스)의 크기가 트리거 전압에 도달할 때 트리거가 발생하였다. 다른 실시예들은 다른 트리거들(예를 들어, 시간에 근거하여, 프로그램된 비트들의 수, 펄스들의 수, 전류, 등)을 이용할 수 있다. 트리거가 발생하지 않았다면, 단계(624)에서 프로그램 전압(Vpgm)이 다음 크기로 스텝업된다. 예를 들어, 다음 펄스는 이전 펄스보다 스텝 사이즈만큼 더 큰 크기(예를 들어, 0.1-0.4 볼트의 스텝 사이즈)를 가질 것이다. 프로그램 전압(Vpgm)이 스텝(stepping)된 후, 프로세스는 단계(610)으로 되돌아가고 (단계(624)에서 설정된 새 크기의) 다음 프로그램 펄스가 선택된 워드 라인에 인가되어, (목표 상태에 있기 때문에 록아웃된 메모리 셀들을 제외하고) 모든 비트 라인들에 대한 프로그래밍이 발생한다. 프로세스는 위에 기술된 것과 같이 단계(610)부터 계속된다.
단계(622)의 트리거가 설정되어, 이 트리거는 용량성 커플링을 수반하는 록아웃 조건을 신호하거나 달리 표시한다. 일반적으로, 이웃하는 플로팅 게이트들 사이에 용량성 커플링이 존재한다. 두 개의 이웃하는 플로팅 게이트들(제1 플로탕 게이트 및 제2 플로팅 게이트)이 프로그램될 때, 용량성 커플링은 일정하고/일정하거나 예측가능하게 유지된다. 제1 플로팅 게이트가 그 목표 상태에 도달했기 때문에 프로그래밍으로부터 록아웃될 때, 제1 플로팅 게이트의 전압 포텐셜이 부스팅으로 인해 증가할 것이다. 제1 플로팅 게이트가 더 높은 전압 포텐셜을 가지므로, 제2 플로팅 게이트에 대한 용량성 커플링이 증가한다. 더 높은 용량성 커플링은 제2 플로팅 게이트 상의 전압을 증가시킬 것이며, 이는 제2 플로팅 게이트의 프로그래밍 속도를 증가시킬 것이다. 이는 오버-프로그래밍을 야기할 수 있다. 오버-프로그래밍에 대한 위험은 (두 이웃 메모리 셀들이 여전히 프로그래밍되고 있을 때인) 느린(slower) 프로그래밍으로부터 (일 메모리 셀이 프로그래밍되고 있고 그것의 이웃 메모리 셀은 프로그래밍이 금지되는 때인) 빠른(faster) 프로그래밍으로의 천이시 더 크다.
도 11a는 두 개의 이웃하는 플로팅 게이트들(806, 810)을 보여준다. 각각의 플로팅 게이트(806, 810)는 각각의 활성 영역(804, 808) 위에 위치된다. 공통 워드 라인 폴리실리콘 층(802)이 두 플로팅 게이트들에 대한 제어 게이트로서 동작하고 또한 플로팅 게이트들 사이의 실드(805)를 제공한다. 실드(805)는 플로팅 게이트들(806, 810) 사이의 커플링을 감소시킨다. 도 11a는 두 플로팅 게이트들이 프로그래밍되는 것을 보여주며, 따라서, 이들의 활성 영역들이 0 볼트로 설정된다. 위에 기술한 바와 같이, 플로팅 게이트들 중 하나가 프로그래밍으로부터 록아웃되면, 그 활성 영역은 7 내지 10 볼트로 부스트 업될 것이고, 그럼으로써 각각의 플로팅 게이트의 전압 포텐셜을 부스트하여 그 이웃 플로팅 게이트에 대한 용량성 커플링을 증가시킨다. 이웃 플로팅 게이트는 이제 더 빠르게 프로그래밍될 것이다. 빠른 프로그래밍은 오버-프로그래밍을 야기할 수 있다.
플로팅 게이트들(806, 810) 사이의 실드(805)가 용량성 커플링을 감소시키도록 돕지만, 워드 라인에 큰 전압이 인가될 때, 폴리실리콘 실드(805)는 공핍(deplete)된다. 예를 들어, 도 11b는 워드 라인 폴리실리콘 층(802) 내의 점선(812)와 함께 동일한 두 개의 플로팅 게이트들(806, 810)을 보여준다. 점선(812) 아래의 영역이 공핍된다. 점선(812) 아래의 영역이 공핍되므로, 이는 위에서 기술된 용량성 커플링에 대한 완전 실드(full shielding)를 제공하지 않는다.
도 11c는 점선(812) 아래의 공핍된 영역과 함께 동일한 두 개의 플로팅 게이트들(806, 810)을 보여준다. 그러나, 도 11c는 플로팅 게이트(806)가 프로그래밍으로부터 록아웃되어 있는 것을 보여준다. 따라서, 활성 영역(804)이 높은 전압에 있으며 이는 플로팅 게이트(806)를 높은 전압에 있게 한다. 플로팅 게이트(806)가 더 높은 전압에 있고 실드(805)가 공핍되므로, 플로팅 게이트들(806, 810) 사이의 용량성 커플링은 플로팅 게이트(810)가 더 높은 전위를 갖게하고 그리고 따라서 더 빨리 프로그램되게 한다.
일 실시예에서, 도 11c와 관련하여 설명된 것과 같이, (시뮬레이션을 포함하는) 디바이스 특성화(device characterization)가 이용되어 어떤 워드 라인 전압에서 폴리실리콘 워드 라인 층(802)이 공핍되어 커플링이 발생하는지가 결정된다. 다른 실시예들에서, 이 워드 라인 전압은 실제 실리콘을 테스트함으로써 측정될 수 있다. 일부 실시예들에서, 실리콘의 모든 조각이 테스트될 수 있다. 다른 실시예들에서, 파트들의 샘플이 테스트될 수 있고 측정된 전압이 파트들의 전체 그룹에 대해 이용될 수 있다. 공핍을 시작하는 전압을 결정하기 위한 다른 수단이 또한 이용될 수 있다.
위에서 기술된 바와 같이, 프로그래밍 속도를 증가시키기 충분하게 공핍이 심한 워드 라인 전압은 도 10의 단계(622)에서 이용된 트리거 전압이다. 따라서, Vpgm 프로그램 펄스의 크기가, 워드 라인 폴리실리콘 층 내에 커플링을 허용하기에 충분한 공핍이 발생되게 하는 트리거 전압에 도달했다면, 트리거가 만족되고 프로세스가 도 10의 단계(630)로 진행한다. 워드 라인 폴리실리콘 층이 공핍되고 그리고 일 이웃이 록아웃되고 다른 이웃이 여전히 프로그래밍되는 때 커플링을 허용하여 그럼으로써 잠재적으로 프로그래밍의 속도를 빠르게 하는 조건은 본 명세서에서 록아웃 조건이라 지칭된다.
단계(622)의 트리거의 다른 실시예는 하나 이상의 데이터 상태들의 특정 세트로 프로그램되도록 되어있는 적어도 소정의 양(predetermined amount)의 메모리 셀들(예를 들어, 홀수 워드 라인들 및 짝수 워드 라인들 둘 모두에 연결된 메모리 셀들)이 상기 하나 이상의 데이터 상태들의 특정 세트로 성공적으로 프로그래밍되었을 때이다. 예를 들어, 상태(S1)로 프로그램되도록 의도된 메모리 셀들 전체가 데이터 상태(S1)에 성공적으로 도달한 것으로 검증되었을 때 트리거가 있을 수 있다. 대안적으로, 시스템은, 상태(S1)로 프로그램되도록 의도된 모든, 또는 소정 수의 메모리 셀들에 대해 성공적으로 데이터 상태(S1)에 도달한 것으로 검증됨을 테스트할 수 있다. 상기 소정 수는 데이터 상태 1에 도달하도록 의도된 메모리 셀들 전체에서 에러 정정 코드(또는 다른 에러 복구 프로세스)를 이용하여 판독 프로세스 동안에 정정될 수 있는 작은 수를 뺀 것일 수 있다. 다른 대안적인 실시예에서, 시스템은, 메모리 셀들이 일 데이터 상태(예를 들어, 데이터 상태(S1))에 도달하는 것에 근거하여 트리거하는 대신에, 메모리 셀들이 복수의 데이터 상태들(예컨대, 데이터 상태들(S1, S2, 및 S3)(가장 낮은 세 개의 상태들))에 도달하는 것에 근거하여 트리거할 수 있다. 데이터 상태들의 다른 세트들 또한 추구될 수 있다.
(단계(622)의 트리거에 의해 신호된) 록아웃 조건이 존재할 적절한 기회(reasonable chance)가 있을 때, 시스템은 짝수 비트 라인들에 연결된 메모리 셀들과는 별개로 홀수 비트 라인들에 연결된 메모리 셀들을 프로그래밍할 것이다. 이러한 방식으로, 이웃 메모리 셀들로부터의 커플링이 완전히 예측가능한데, 그 이유는, 다음 프로그래밍 펄스에 의해 프로그래밍될 소정의 메모리 셀에 대해, 동일 워드 라인들 상의 그 이웃들이 금지될 것임이 보장되기 때문이다. 두 이웃들 모두가 금지된다는 것과 두 이웃들 모두를 금지시키는 것이 프로그래밍의 속도를 빨라지게(이는 오버-프로그래밍을 유발할 수 있음)한다는 것이 알려져 있으므로, 시스템은 Vpgm의 프로그램 펄스들의 전압 크기를 감소시켜 록아웃 조건에 대해 보상할 것이다. 즉, Vpgm의 프로그램 펄스들의 전압 크기를 낮추는 것은 프로그래밍을 느려지게 하며, 이는 프로그래밍을 빨라지게 하는 록아웃 조건에 대해 보상해야 한다.
도 10의 단계(630)에서, 프로그래밍 신호(예를 들어, 프로그램 펄스들)의 전압 크기가 감소된다. 일부 실시예들에서, 전압 크기는 .5볼트 만큼 감소된다. 다른 실시예들에서, 전압의 감소는 5 볼트와 다를 수 있다. 일부 실시예들에서, 프로그램 신호의 전압 크기의 감소는 제조, 제품 설계, 테스트시, 또는 다른 시간에 설정되는 파라미터에 근거한다. 주어진 프로세스 또는 디자인에 대해 파트들의 샘플 세트가 제조된 후, 기술자들은 록아웃 조건이 프로그래밍의 속도에 얼마나 많이 영향을 미치는지를 테스트하고 그리고 록아웃 조건에 대응(counteract)하기 위해 프로그램 신호를 낮추기 위한 적절한 전압 양을 선택할 수 있다. 록아웃 조건에 대응하기 위해 프로그램 신호를 낮추기 위한 적절한 전압 양을 결정하기 위하여 디바이스 시뮬레이션이 또한 이용될 수 있다.
단계(632)에서, 짝수 비트 라인들에 연결된 메모리 셀들만을 프로그래밍하기 위하여 선택된 워드 라인에 프로그램 펄스가 인가된다. 따라서, 짝수 비트 라인들은 0 볼트에 있을 것이고 반면 홀수 비트 라인들에는 Vdd가 인가될 것이다. 단계(632)에서, 짝수 비트 라인들만이 프로그램될 것이다. 단계(632)가 수행된 후, 단계(634)가 수행되며, 단계(634)는 프로그램 펄스를 동일한 선택된 워드 라인에 인가하는 것을 포함한다. 단계(634) 동안, 홀수 비트 라인들에 연결된 메모리 셀들만이 프로그램될 것이다. 따라서, 단계(634)는 홀수 비트 라인들에 0볼트를, 그리고 짝수 비트 라인들에 Vdd를 인가하는 것을 포함할 것이다. 따라서, 단계(632, 634)는 두 개의 연속적인 프로그램 펄스들을 동일한 워드 라인에 (그리고, 따라서, 그 워드 라인에 연결된 동일한 메모리 셀 세트에) 인가하는 것을 포함한다. 그러나, 제1 펄스(단계(632)) 동안 짝수 메모리 셀들만이 프로그램되고 그리고 제2 펄스(단계(634)) 동안 홀수 메모리 셀들만이 프로그램된다. 그러므로, 짝수 비트 라인들에 연결된 메모리 셀들(짝수 메모리 셀들)은 홀수 비트 라인들에 연결된 메모리 셀들(홀수 메모리 셀들)과는 별개로 프로그램된다. 예를 들어, WL2_i가 선택된 워드 라인(도 4 참조)이면, BLO, BL2, BL4 및 WL2_i에 연결된 메모리 셀들이 단계(632)에서 프로그램될 것이고 BLl, BL3, BL5 및 WL2_i에 연결된 메모리 셀들이 단계(634)에서 프로그램될 것이다. 홀수 메모리 셀들이 단계(632)의 프로그램 펄스를 수신하지만, 단계(632)에서, 이들은 프로그래밍이 금지된다. 단계(634) 동안 짝수 메모리 셀들이 프로그램 펄스들을 수신하지만, 단계(634) 동안, 이들은 프로그래밍이 금지된다. 단계(634) 후, 프로세스는 단계(612)로 되돌아가 (일부 실시예들에서, 짝수 비트 라인들 및 홀수 비트 라인들 상의 메모리 셀들이 타겟에 도달했기 때문에 그 전에 록아웃되지 않는다면) 짝수 비트 라인들 및 홀수 비트 라인들 상의 메모리 셀들을 모두 함께 검증한다. 위에 기술한 바와 같이, 프로세스는 단계(612)로부터 계속된다. 단계(632, 634) 사이에서는 검증 동작이 수행되지 않는다.
도 4를 다시 참조하면, 메모리 셀들의 블록(블록 i)이 도시된다. 일 실시예에서, 워드 라인을 따라 있는 메모리 셀들이 두 개의 그룹들로 분할된다. 제1 그룹은 홀수 비트 라인들(예를 들어, BLl, BL3, BL5, ...)에 연결된 메모리 셀들 전체이다. 제2 그룹은 짝수 비트 라인들(예를 들어, BLO, BL2, BL4, ...)에 연결된 메모리 셀들 전체이다. 도 4로부터 알 수 있는 바와 같이, 짝수 비트 라인들과 홀수 비트 라인들이 교차(interleaving)된다. 따라서, 짝수 비트 라인들에 연결된 메모리 셀들의 그룹이 홀수 비트 라인들에 연결된 메모리 셀들과 교차된다. 짝수 비트 라인들만이 프로그래밍되고 있으면, 홀수 비트 라인들에 연결된 메모리 셀들 전체가 록아웃될 것이다. 이는 프로그래밍되고 있는 임의의 메모리 셀의 두 이웃들이 모두 록아웃되어 있는 상황을 보장할 것이다. 이는 커플링을 야기할 수 있으나, 두 이웃들 모두가 록아웃되는 것이 보장되므로, 이 커플링은 예측가능하고 일정하다. 워결과적으로, 오버-프로그래밍이 발생하지 않을 것으로 예상된다. 워드 라인에 연결된 메모리 셀들은 두 개 이상의 그룹으로 분할될 수 있고 홀수 및 짝수 그룹이 아닌 타입의 그룹으로 분할될 수 있다.
단계(620)에서, 이전의 프로그램-검증의 반복이 짝수 및 홀수 비트 라인들에 대해 별개의 펄스들(separate pulses)을 인가했던 것으로 결정되면, 프로세스는 단계(640)에서 계속된다. 시스템은 잠재적인 록아웃 조건에 대한 보상을 계속 제공할지 여부를 결정한다.
단계(640)의 일 실시예에서, 프로그램 펄스들(프로그램-검증 반복)의 수가 소정 수에 도달했을 때 시스템은 보상(예를 들어, 홀수 및 짝수 비트 라인 프로그래밍에 대해 별개의 펄스들)을 종료한다. 예를 들어, 시스템은 PC가 소정 수보다 작은지 여부를 테스트할 수 있다.
단계(640)의 다른 실시예에서, 하나 이상의 데이터 상태들의 특정 세트로 프로그램되도록 되어있는 적어도 소정 양의 메모리 셀들(예를 들어, 홀수 워드 라인들 및 짝수 워드 라인들 둘 모두에 연결된 메모리 셀들)이 하나 이상의 데이터 상태들의 특정 세트로 성공적으로 프로그래밍되었을 때 시스템은 보상(예를 들어, 홀수 및 짝수 비트 라인 프로그래밍에 대해 별개의 펄스들)을 종료한다. 예를 들어, 데이터 상태(S6)에 있도록 의도된 모든 메모리 셀들 또는 거의 모든 메모리 셀들이 S6에 있는 것으로 성공적으로 검증되었을 때 시스템은 보상을 종료할 수 있다. 또는, 시스템은 데이터 상태(S5, S6)에 있도록 의도된 모든 메모리 셀들 또는 거의 모든 메모리 셀들이 각각 S5 및 S6에 있는 것으로 성공적으로 검증되었을 때 보상을 종료할 수 있다. 시스템은 임의의 데이터 상태에 있도록 의도된 모든 메모리 셀들에 대해 성공적으로 프로그램되는지를 테스트하거나 또는 전체에서 에러 정정 코드(또는 다른 에러 복구 프로세스)를 이용하여 판독 프로세스 동안 정정될 수 있는 작은 소정 수를 뺀 것에 대해 테스트 할 수 있다.
단계(640)의 또 다른 실시예에서, 시스템은 추가적인 록아웃 조건의 기회(chance)가 낮은 것으로 결정될 때 보상(예를 들어, 홀수 및 짝수 비트 라인 프로그래밍에 대해 별개의 펄스들)을 종료한다. 위에서 논의된 바와 같이, 일 메모리 셀이 프로그램되고 있고, 이웃 메모리 셀이 프로그래밍으로부터 록아웃되고, 워드 라인 전압이 충분히 높을 때 록아웃 조건이 발생한다. 록아웃 조건은 더 빠른 프로그래밍이 되게 한다. 더 느린 프로그래밍으로부터 더 빠른 프로그래밍으로의 천이가 존재할 때 오버-프로그래밍이 발생할 수 있다. 따라서, 일 실시예에서, 시스템은 록아웃 조건의 시작(onset)으로 인해 발생할 수 있는 느린 프로그래밍으로부터 빠른 프로그래밍으로의 잠재적 천이(potential transition)들이 있는지 보기 위하여 체크한다. 시스템은 새로운/추가적인 록아웃 조건들의 잠재적인 수(potential number)를 체크함으로써 느린 프로그래밍으로부터 빠른 프로그래밍으로의 잠재적 천이들에 대해 체크한다. 일부 실시예들에서, 시스템은 작은 수의 에러들을 용인(tolerate)할 수 있는데, 그 이유는 이 에러들이 본 기술 분야에서 알려져 있는 에러 정정 기법을 이용하여 판독 공정 프로세스 동안 정정될 수 있기 때문이다. 따라서, 잠재적인 록아웃 조건의 수가 충분히 작다면, 시스템은 에러에 대한 잠재성을 용인할 수 있고 프로그래밍 중에 그것에 대해 정정하지 않아도 된다.
단계(640)에서, 보상이 이 시간에 종료되지 않을 것으로 결정되면, 프로세스는 짝수 비트 라인들 상의 메모리 셀들에 대해 별개로 프로그래밍하는 단계 및 이와 다른 시간에 홀수 비트 라인들 상의 메모리 셀들에 대해 프로그래밍하는 단계를 포함하는 단계들(632, 634)을 수행하도록 진행된다.
단계(640)에서, 보상이 이 시간에 종료될 것으로 결정되면, 메모리 시스템은 홀수 비트 라인과 짝수 비트 라인을 함께 프로그래밍함으로써 프로그래밍 공정을 계속할 것이다. 일 실시예에서, 홀수 및 짝수 비트 라인을 함께 프로그래밍하는 것으로 다시 전환(switch back)될 때, 시스템은 또한 프로그래밍 전압의 크기를 상승시킬 것이다(단계(642)). 단계(642)에서 프로그래밍 전압의 크기를 상승시킨 후, 프로세스는 단계(610)에서 계속되고 홀수 및 짝수 비트 라인들 둘 모두 상의 메모리 셀들을 프로그래밍하기 위해 다음 프로그래밍 펄스가 인가된다. 일부 실시예들에서, 단계(642)가 스킵되어, 홀수 및 짝수 비트라인을 함께 프로그래밍하는 것으로 다시 전환될 때 프로그램 전압의 크기가 상승되지 않는다.
단계(642)는 프로그래밍 전압의 크기를 상승시키는 것을 포함한다. 일 실시예에서, 프로그래밍 전압의 크기는 원하는 프로그래밍 속도를 얻도록 소정의 고정 양만큼 상승된다. 또 다른 실시예에서, 프로그래밍 전압의 크기는 트리거가 존재함을 결정함(단계(622))에 응답하여 낮아지지 않은 경우 (특정 레이트(rate)로 증가하고 있었던) 프로그래밍 신호의 크기에 근거한 값으로 상승된다. 즉, 프로그래밍 전압 (Vpgm)의 크기가 단계(630)에서 낮아지지 않았다면, 이제 이 프로그래밍 전압(Vpgm)것은 X볼트의 크기에 있을 것이다. 따라서, 단계(642)는 Vpgm의 크기를 X볼트로 상승시키는 것을 포함한다.
일 예시적인 구현예에서, 프로그래밍 전압(Vpgm)의 크기는 한 단계(단계(642))에서 그것의 목표 값으로 상승된다. 다른 구현예에서, 프로그래밍 전압(Vpgm)의 크기가 복수의 단계들에 걸쳐 그것의 목표 값으로 상승된다. 예를 들어, 프로그래밍 전압(Vpgm)의 크기는 복수의 프로그램-검증 반복들(단계(610, 612))의 세트에 걸쳐 그 목표 전압으로 상승될 수 있다. 단계(640)에서 보상을 종료할 것이 결정된 시간에, 프로그래밍 전압(Vpgm)은 단계(630)에서 프로그램 전압이 0.7 볼트만큼 낮아지지 않았다면 가졌을 전압보다 낮다는 것을 고려하도록 한다. 이 대안에서, 프로그래밍 전압(Vpgm)은 단계(610)에서의 다음 프로그래밍 펄스에 대해 .45 볼트 상승될 수 있고, 이후 단계(610)의 다음 반복에서 후속 프로그래밍 펄스에 대해 추가적인 .45 볼트가 상승될 수 있다. 프로그래밍 펄스들 사이의 .2v 볼트의 스텝을 처리(account for)하기 위하여, 프로그래밍 전압(Vpgm)은 .7v 대신 .9v 상승된다. 이를 달성하기 위하여, 후속 단계(624)는 프로그래밍 전압(Vpgm)을 .2의 스텝이 아니라 .45 볼트 상승시키는 것으로 수정되어야 한다. 또 다른 대안에서, 프로그래밍 전압(Vpgm)이 2개보다 많은 단계들(예를 들어, 3개 이상의 단계들)에 걸쳐 그 목표 값으로 상승된다.
단계(640)에서, 새로운/추가적인 록아웃 조건의 잠재적인 수가 낮은 것으로 결정되면, 보상이 계속될 것이고 메모리 시스템은 홀수 및 짝수 비트 라인들을 별개로 프로그래밍함으로써 프로그래밍 프로세스를 계속할 것이다. 따라서, 프로세스는 짝수 비트 라인들 상의 메모리 셀들을 별개로 프로그래밍하는 단계 및 이와 다른 시간에 홀수 비트 라인들 상의 메모리 셀들을 프록그래밍하는 단계를 포함하는 단계들(632, 634)을 수행함으로써 계속될 것이다.
도 12는 프로그램 전압(Vpgm)에 대한 예시적인 파형이다. 도 12의 신호는 펄스들(702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736)을 포함한다. 프로그램 펄스들(702, 720)은 모두 트리거 전에 인가된다. 이들 펄스들의 각각의 크기는 트리거 전압보다 낮다. 펄스들(702-720)은 도 10의 단계(610)의 반복의 일부로서 인가된다. 펄스(720)를 인가한 후, 트리거 전압에 도달되었고(예를 들어, Vpgm의 크기가 트리거 전압보다 큼) 프로세스는 홀수 비트 라인들과는 개별적으로 짝수 비트 라인들의 프로그래밍을 수행한다(단계(632, 634)). 따라서, 도 12는 동일한 크기를 갖는 단계(722, 724)에서의 두개의 펄스들을 보여준다. 프로그래밍 펄스(722)는 짝수 비트 라인들에 연결된 메모리 셀들을 프로그래밍(단계(632))하기 위한 것이고 프로그램 펄스(724)는 홀수 비트 라인들에 연결된 메모리 셀들을 프로그래밍하기 위한 것이다(단계(634)). 그러나, 두 펄스들(722, 724)은 모두 동일한 선택된 워드 라인에 인가된다. 단계(630)에 따라, 펄스들(722, 724)의 크기는 단계(720)의 크기보다 낮다. 도 12의 예에서, 프로세스는 계속해서 홀수 비트 라인 및 짝수 비트 라인을 별개로 프로그래밍한다(먼저 짝수 비트 라인들을 프로그래밍하고 그리고 후속적으로 홀수 비트 라인들을 프로그래밍한다). 예를 들어, (서로 동일한 크기를 가졌으나, 펄스들(722/724) 보다 큰 크기를 가진) 펄스들(726, 728)이 도 10의 단계들(632, 634)의 다음 반복이다. 펄스들(730, 732)은 단계들(632, 634)의 후속 반복이다. 펄스들(734, 736)은 도 12의 예에서 단계들(632, 634)의 최종 반복이다. 펄스들(734, 736)을 인가한 후, 모든 메모리 셀들이 적절하게 검증(또는 충분한 메모리 셀들이 검증됨)되어 프로세스가 성공적으로 완료된다.
도 13은 Vpgm의 프로그래밍 펄스에 대한 또 다른 예시적인 파형을 제공한다. 도 13의 예는 전체 비트 라인 프로그래밍(단계(610))으로부터 짝수 및 홀수 비트 라인들에 대한 별개의 프로그래밍(단계(632, 634))으로 천이하고, 그리고 그후 (단계(640, 642)를 통한) 전체 비트 라인 프로그래밍으로 다시 천이하는 프로그래밍 프로세스를 포함한다. 프로그래밍 펄스들(750, 752, 754, 756, 758, 760, 762, 764, 766, 768)이 단계(610)의 반복 동안 인가된다. 프로그래밍 펄스(768) 후, 트리거 전압이 도달되고 프로세스가 단계들(632, 634)을 수행하여, 짝수 비트 라인들에 연결된 메모리 셀들을 프로그래밍 펄스(770)로, 그리고 홀수 비트 라인들에 연결된 메모리 셀들을 프로그래밍 펄스(772)로 프로그래밍한다. 도 10의 단계(630)로 인하여, 펄스들(770, 772)의 전압 크기는 펄스(768)보다 낮다. 도 13은 단계들(632, 634)의 세 번의 반복을 보여준다. 단계들(632, 634)의 제2 반복에서, 짝수 비트 라인들에 연결된 메모리 셀들을 프로그래밍하는데 프로그래밍 펄스(774)가 이용되고 홀수 비트 라인들에 연결된 메모리 셀들을 프로그래밍하는데 프로그램 펄스(776)가 이용된다. 단계(632, 634)의 제3 반복에서, 짝수 비트 라인들에 연결된 메모리 셀들을 프로그래밍하는데 프로그래밍 펄스(778)가 이용되고 홀수 비트 라인들에 연결된 메모리 셀들을 프로그래밍하는데 프로그래밍 펄스(780)가 이용된다. 단계(634)에서 프로그래밍 펄스(780)를 인가한 후, 록아웃 조건의 발생률(incidence)이 낮은 것으로 결정된다. 따라서, 프로세스는 단계(642)를 수행할 것이고 프로그램 전압(Vpgm)의 크기를 보상이 제공되지 않았을 경우에 이 프로그램 전압이 가졌을 크기로 다시 상승시키고 (단계(610)에서) 프로그래밍 펄스(782)가 인가되어 (목표 상태에 도달했기 때문에 록아웃된 메모리 셀들을 제외하고) 전체 비트 라인들에 연결된 메모리 셀들을 프로그래밍한다. 도 10의 프로세스의 다음 반복은 단계(610)에서 일 프로그래밍 펄스(784)를 인가하는 것을 포함할 것이다. 프로그래밍 펄스(784)의 인가 후, 충분한 메모리 셀들이 검증되었고 프로그래밍 프로세스가 성공적으로 완료되었음이 결정된다. 파선(785)은 프로그래밍 신호(Vpgm)의 크기가 보상 전에 (예를 들어, 홀수/짝수 비트 라인들을 별개로 프로그래밍하기 전에) 어떻게 증가하고 있었는지를 나타내며, 프로그래밍 펄스(782)가 트리거가 존재함을 결정함에 응답하여 낮아지지 않았다면 가졌을 프로그래밍 신호의 크기와 동일한 크기를 가짐을 나타낸다.
위에서 기술된 바와 같이, 검증 동작의 세트가 프로그래밍 펄스들 사이에서 수행된다. 일 실시예에서, 검증 펄스가 각각의 검증 동작에 대해 선택된 워드 라인에 인가된다. 예를 들어, 메모리 셀들이 있을 수 있는 8개의 잠재적 데이터 상태들이 존재한다면, 7개의 검증 동작들이 있을 것이며, 따라서 7개의 검증 펄스들이 있을 것이다. 도 14는 프로그래밍 펄스들(706, 708, 710)(도 12를 또한 참조) 및 프로그래밍 펄스들(706, 708, 710) 사이에 인가되는 검증 펄스들의 예를 도시한다. 도 14의 각각의 검증 펄스는 위에서 기술된 것과 같은 검증 동작과 관련된다.
도 15는 또한 중간에 검증 펄스들이 있는 프로그래밍 펄스들을 도시한다. 도 15는 도 12의 프로그래밍 펄스들(722, 724, 726, 728, 730, 732)을 도시한다. 이 6개의 프로그래밍 펄스들은 트리거 전압이 도달된 후 프로그래밍 펄스들을 인가하는 것과 관련된다. 따라서, 홀수 및 짝수 메모리 셀들이 별개로 프로그래밍된다. 위에서 논의된 바와 같이, 프로그래밍 펄스(724)가 홀수 비트 라인들에 연결된 메모리 셀들을 프로그래밍하는 반면, 프로그래밍 펄스(772)는 짝수 비트 라인들에 연결된 메모리 셀들을 프로그래밍한다. 일 실시예에서, 프로그래밍 펄스들(722, 724) 사이에는 검증 동작이 존재하지 않는다. 펄스(724)를 프로그래밍한 후 그리고 펄스들(726, 728)의 다음 쌍 전에, 검증 동작을 수행하기 위하여 검증 펄스들의 세트가 인가된다. 펄스들(726, 728) 사이에는, 어떠한 검증 동작들도 수행되지 않는다. 펄스(728) 후 그리고 펄스들(730, 732)의 다음 쌍 전에, 대응하는 검증 동작들의 세트를 수행하기 위하여 검증 펄스들의 세트가 인가된다.
도 16은 프로그래밍 중의 다양한 신호들의 동작을 표시한다. 더욱 구체적으로, 도 16은 도 10의 단계들(610, 632 또는 634)의 일 반복 동안의 동작을 도시한다. 표시된 프로그램 동작은 비트 라인 선충전 단계(Bit Lines Pre-charge Phase), 프로그램 단계(Program Phase), 및 방전 단계(Discharge Phase)로 그룹화될 수 있다.
비트 라인 선충전 단계의 기간(1) 동안, SGS가 0V으로 유지되어 소스 선택 트랜지스터가 턴 오프되는 한편 SGD가 VSG로 높아짐으로써 드레인 선택 트랜지스터가 턴온되고, 그럼으로써 비트 라인이 NAND 스트링에 액세스할 수 있게 한다. 비트 라인 선충전 단계의 기간(2) 동안, 프로그램-금지 NAND 스트링의 비트 라인 전압(BL inhibit)이 VDD에 의해 주어진 소정의 전압으로 상승되는 것이 허용된다. 프로그램-금지 NAND 스트링의 비트 라인 전압이 VDD로 상승할 때, 기간(3)에서 드레인 선택 트랜지스터 상의 게이트 전압(SGD)이 VDD로 떨어질 때 프로그램-금지 NAND 스트링이 플로팅될 것이다. 프로그래밍 NAND 스트링의 비트 라인 전압(BL pgm)은 능동적으로(actively) 0V로 풀 다운된다. 일부 대안적인 실시예들에서, 프로그래밍 NAND 스트링의 비트 라인 전압은 그 이웃들 둘 모두 또는 그 이웃들 중 하나가 프로그램-금지 모드에 있는지 여부에 근거하여 바이어스된다. 이 바이어스에 관한 더 많은 정보는 그 전체가 본 명세서에 참조로서 포함된 미국 특허 제7,187,585호에서 찾아볼 수 있다.
프로그램 단계의 기간(4) 동안, 비선택 워드 라인(WL_unsel)이 VPASS로 설정되어 NAND 스트링의 부스팅을 가능하게 한다. 프로그램-금지 NAND 스트링이 플로팅되어 있으므로, 어드레스되지 않은 메모리 트랜지스터들의 제어 게이트들에 인가된 높은 VPASS가 이들의 채널 전압을 부스트 업하고 저장 소자들을 충전하고, 그럼으로써 프로그래밍을 금지시킨다. VPASS는 일반적으로 Vpgm(예를 들어, ~10V)에 비해 어떤 중간 전압(예를 들어, -12-24V)으로 설정된다.
프로그램 단계의 기간(5) 동안, 프로그래밍 전압(Vpgm)이 프로그래밍 펄스로서 선택된 워드 라인(WL_sel)에 인가된다. (즉, 부스팅된 채널들 및 충전 저장 유닛들로)금지되는 메모리 셀들은 프로그램되지 않을 것이다. (선택된 워드 라인에 연결된) 선택된 메모리 셀들이 프로그램될 것이다. 방전 단계의 기간(6) 동안, 다양한 제어 라인들 및 비트 라인들이 방전하는 것이 허용된다.
도 17은 추가적인 록아웃 조건들의 기회가 낮기 때문에 보상을 종료할지를 결정하는 프로세스의 실시예(도 10의 단계(640) 동안 수행됨)를 기술하는 흐름도이다. 단계(850)에서, 각각의 메모리 셀이 동일한 워드 라인을 따라 그 이웃 메모리 셀에 비교된다. 단계(852)에서, 시스템은 록아웃 조건으로의 잠재적 천이의 수 X를 카운트한다. 두 개의 이웃하는 메모리 셀들이 둘 다 여전히 프로그래밍되고 있으면 이웃들 중 하나가 다른 것 보다 먼저 잠재적으로 그 목표 값에 도달하고 록아웃될 수 있기 때문에 잠재적인 록아웃 조건이 존재한다. 따라서, 일 실시예에서, 단계(852)는 여전히 프로그래밍되고 있는 이웃 메모리 셀들의 쌍들의 수를 카운팅하는 단계를 포함한다. 잠재적 록아웃 조건의 수가 임계값보다 크면(단계(854), 추가적인 록아웃 조건의 기회는 낮지 않다(단계(858)). 잠재적 록아웃 조건의 수가 임계값보다 크지 않으면, 추가적인 록아웃 조건의 기회가 낮다(단계(856)). 단계(854)의 임계값은 에러 정정 코드들(또는 다른 에러 복구 프로세스)에 의해 정정될 수 있는 비트들의 수에 근거하여 설정된다. 예를 들어, 일 실시예는 부정확한 데이터의 최대 7 비트들(데이터의 약 0.01 퍼센트에 이름)을 수정(fix-up)할 수 있는 에러 정정 코드를 포함한다. 따라서, 따라서, 잠재적인 록아웃 조건들의 수가 7개 미만이면, 추가적인 록아웃 조건들의 기회가 낮다(단계(856)). 다른 임계값들이 또한 이용될 수 있다. 다른 실시예에서, 단계(850)는 그 이웃들에 비교되는 메모리 셀들의 서브세트만을 포함할 것이고, 그 결과는 전체 집단에 대해 추정될 것이고 임계값에 대해 비교될 것이다.
도 18은 도 17의 프로세스를 구현할 수 있는 하드웨어의 일 예의 블록도이다. 모든 메모리 셀들에 대한 데이터 래치들(494)(도 5 참조)이 시프트 레지스터(880)에 데이터를 제공한다. 일 실시예에서, 시프트 레지스터(880)는 실제 데이터 래치들(494)을 포함할 수 있다. 시프트 레지스터(880)는 비트 라인들 전체에 대한 모든 데이터를 포함한다. 데이터는, 먼저 1 비트 레제스터(882)로 그리고 그후 1 비트 레지스터(884)로, 한번에 일 비트 시프트 아웃된다. 레지스터(882) 내의 데이터 및 레지스터(884)로부터의 데이터가 NOR 게이트(886)에 송신된다. NOR 게이트(886)의 출력이 축적기(888)에 송신된다. 축적기(888)의 출력이 상태 머신(222)에 제공되며, 상태 머신(222)은 잠재적 록아웃 조건들의 수가 임계값보다 크지 않는지 여부를 결정한다. 도 18의 회로는 이웃하는 비트 라인들이 0-0을 저장하는 경우의 발생률(incidences)을 카운트한다. 일 예에서, 비트 라인 상에 적절한 전압을 인가하도록 감지 회로를 구성하기 위하여, 특정 메모리 셀이 프로그래밍되어야 하는지 또는 프로그래밍 금지되어야 하는지 여부의 표시를 저장하는 데에 데이터 래치가 이용된다. 일 실시예에서, 각각의 데이터 래치는 비트 라인이 금지될 것이라면 일(1)을 저장할 것이고 비트 라인이 프로그래밍을 위해 셋업될 것이라면 영(0)을 저장할 것이다. 반대의 극성들이 또한 이용될 수 있다. 따라서, 도 18의 회로는 데이터가 0-0인 이웃하는 비트 라인들을 찾고 축적기(888)를 이용하여 발생하는 횟수를 카운트할 것이다. 축적기(888)가 0-0을 카운트하는 횟수가 임계값보다 크면, 상태 머신은 추가적인 록아웃 조건의 기회가 낮지 않다고 결론짓는다.
도 19는 추가적인 록아웃 조건의 기회가 낮은지 여부를 결정하는 또 다른 실시예를 기술한다 (도 10의 단계(640) 동안 수행됨). 단계(902)에서, 여전히 프로그래밍되고 있는 메모리 셀들의 수가 카운트된다. 대안적으로, 록아웃되는 메모리 셀들의 수가 카운트된다. 단계(904)에서, 여전히 프로그래밍되고 있는 메모리 셀들의 수가 임계값보다 작은지 여부가 결정된다. 여전히 프로그래밍되고 있는 메모리 셀들의 수가 임계값보다 작으면(단계(904)), 추가적인 록아웃 조건들의 기회가 낮다(단계(906)). 록아웃되는 메모리 셀들의 수가 임계값보다 낮지 않으면, 추가적인 록아웃 조건들의 기회가 낮지 않다(단계(908)). 일 실시예에서, 메모리 셀들의 0.4%만이 여전히 프로그래밍되고 있으면(또는 99.6%가 록아웃되면) 추가적인 록아웃 조건들의 기회가 낮도록 임계값이 설정될 수 있다. 다른 임계값이 또한 이용될 수 있다.
도 20은 도 19의 프로세스를 구현하는데 사용될 수 있는 하드웨어의 일 예를 도시하는 블록도이다. 도 20은 비교기 회로(920)와 통신하는 비트 라인들의 그룹(예를 들어, 8 비트 라인들에 대해 한 개의 프로세서(492)) 각각에 대한 프로세서들(492) 각각을 도시한다. 각각의 프로세서들은 이들의 각각의 비트 라인들이 프로그래밍되고 있는지 록아웃되고 있는지 여부를 표시할 것이다. 비교기(920)는 록아웃되는 비트 라인들의 수를 카우닝하기 위한 회로를 포함한다. 일 실시예에서, 이는 위에서 논의된 래치들로부터의 데이터를 제공함으로써 달성될 수 있다. 비교기(920)는 임계값을 표시하는 파라미터(9220에 액세스하고 이 임계값을 록아웃된 비트 라인들의 합과 비교할 수 있다. 비교기(920)의 출력이 상태 머신(222)으로 송신된다.
도 10으로 다시 돌아가 보면, 홀수 및 짝수 메모리 셀들을 함께 프로그래밍하는 것으로부터 홀수 및 짝수 메모리 셀들을 별개로 프로그래밍하는 것으로 변경하기 위하여 트리거가 이용된다(단계(622)). 일 실시예는 적절한 트리거 전압을 결정하기 위하여 (시뮬레이션을 포함하는) 디바이스 특성화를 이용하는 것을 포함한다. 일부 실시예들에서, 트리거 전압이 각각의 집적 회로에 대해 개별적으로 트리밍될 수 있다. 즉, 집적 회로를 제조한 후, 각각의 집적 회로가 테스트될 수 있다. 이 테스트에 근거하여, 트리거 전압이 설정 또는 조정될 수 있다.
도 21, 22 및 23은 트리거 값을 트리밍 또는 설정하기 위한 세 개의 실시예들을 기술하는 흐름도이다. 도 21 내지 23의 프로세스는 한 개의 블록 상에서 수행될 수 있다. 그 한 개의 블록으로부터의 데이터가 이후 그 메모리 디바이스 상의 모든 블록들에 대해 이용될 수 있다. 일 대안에서, 복수의 블록들이 테스트될 수 있고 그 결과가 모든 블록들에 적용될 수 있다. 또 다른 대안적인 실시예에서, 도 21 내지 23의 프로세스가 모든 블록마다 수행될 수 있고 각각의 블록이 그 고유의 트리거 값을 가질 것이다. 일 실시예에서, 블록에서 한 개의 워드 라인만이 테스트된다. 다른 실시예들에서, 한 개보다 많은 워드 라인이 테스트될 수 있고 그 결과가 평균되거나 또는 달리 조합된다. 다른 실시예들에서, 다른 유닛들(예를 들어, 워드 라인, 워드 라인들의 그룹, 페이지, 섹터, 등)이 테스트를 위해 선택될 수 있다.
도 21의 단계(1002)에서, 테스트 중인 특정 블록(또는 블록들)이 소거된다. 프로세스는 이제 선택된 워드 라인 상의 짝수 셀들을 프로그래밍할 것이다. 일 실시예에서, 한 개의 워드 라인만이 프로그래밍을 수신할 것이다. 그 일 워드 라인에 기초하여, 전체 블록에 대해, 전체 칩에 대해, 또는 전체 메모리 시스템에 대해 새로운 트리거 값이 결정될 것이다. 다른 실시예들에서, 복수의 워드 라인들이 프로그래밍될 수 있고 데이터가 평균될 수 있거나 각각의 워드 라인이 그 고유의 트리거 값을 가질 수 있다. 단계(1004)에서, 선택된 워드 라인에 연결된 메모리 셀들이 프로그래밍된다. 단계(1004)의 프로그래밍 프로세스는, 홀수 비트 라인들 및 짝수 비트 라인들에 연결된 메모리 셀들 전체가 프로그래밍에 대해 인에이블 되는 것과 프로그래밍 펄스가 Vpgm_test의 크기에 도달할 때까지 증가하는 크기로 프로그래밍 펄스들을 인가하는 것을 포함한다. 일 실시예에서, Vpgm_test가 초기에 디바이스 특성화로부터 결정된 트리거 전압보다 2 볼트 아래에서 설정된다. 단계(1004)의 프로그래밍 프로세스는 단계(620) 후에 프로세스가 단계(624)에서 계속되는 것을 제외하고는 도 10의 프로세스와 유사하다(단계(622) 또는 (630-642)가 없음). 단계(1004)의 프로그래밍 프로세스가 완료된 후, 단계(1006)에서 짝수 비트 라인들에 연결된 메모리셀들에 대한 임계 전압 분포의 최고값(top) 및 최저값(bottom)이 측정된다. 단계(1008)에서, 블록이 소거된다.
단계(1010)에서, 짝수 비트 라인들에 연결된 메모리 셀들이 다시 프로그램된다. 그러나, 홀수 비트 라인들에 연결된 메모리 셀들은 단계(1010)의 프로그래밍 펄스들 전체에 대해 프로그래밍이 금지된다. 단계(1010)는 프로그램 펄스의 크기가 단계(1004)와 동일한 Vpgm_test가 될 때까지 크기를 증가시키면서 일련의 프로그래밍 펄스들을 인가하는 것을 포함한다. 단계(1012)에서, 짝수 비트에 연결된 메모리 셀들의 임계 전압 분포가 측정된다. 단계(1014)에서, 단계(1012)와 단계(1006)에서 측정된 임계 전압 분포의 최고값 및 최저값이 비교된다. 일 실시예에서, 두 임계 전압 분포들의 하부 경계(lower bound)들이 비교된다. 또 다른 실시예에서, 각 임계 전압 분포의 상부 경계들이 비교된다. 임계 전압 분포들의 하부 경계들(또는 상부 경계들) 사이의 차가 임계값보다 크지 않으면, Vpgm_test가 소정 양(예컨대, 0.5 볼트 또는 다른 값)만큼 증가되고 프로세스는 단계(1002)로 되돌아가 반복된다. 두 임계 전압 분포들의 최저점들 사이의 차가 임계값보다 크면, 단계(1020)에서 (디바이스 특성화에 의해 결정된 값으로부터의) 트리거 전압이 수정되어 Vpgm_test의 현재 값이된다. 일부 실시예들에서, Vpgm_test는 샘플 사이즈가 실제의 최악의 경우를 포획하지 않을 수 있다는 생각을 이유로, 일부 마진 오프셋을 더함으로써 더 수정될 수 있다. 일 실시예에서, 단계(1016)의 임계값은 0.5 볼트와 같고 단계들(1004, 1010)에서 프로그래밍을 위해 사용된 프로그램 펄스 스텝 사이즈는 0.4 볼트이다.
도 22는 트리거 전압을 결정 또는 트리밍하기 위한 프로세스의 다른 실시예를 제공한다. 단계(1050)에서, 고려 중인 블록(block under consideration)이 소거된다. 단계(1052)에서, 프로그래밍 프로세스의 각 반복에서 홀수 비트 라인들에 연결된 메모리 셀들이 프로그래밍되도록 선택된 상태에서, 짝수 비트 라인들에 연결된 메모리 셀들은 이들의 임계 전압이 Vx 볼트의 타겟 레벨에 도달할 때까지 프로그램된다. Vx는 실험에 의해 설정될 수 있다. Vx의 한가지 예시적인 값은 3.5 볼트이다. 단계(1054)에서, 단계(2052) 동안 짝수 비트 라인들에 연결된 메모리 셀들을 적절히 프로그래밍하기 위해 필요했던 프로그래밍 펄스들의 수가 기록된다. 단계(1056)에서, 고려 중인 블록이 소거된다. 단계(1058)에서, 짝수 비트 라인들에 연결된 메모리 셀들이 이들의 임계 전입이 Vx 볼트에 도달할때까지 다시 프로그래밍된다. 단계(1058)에서, 홀수 비트 라인들에 연결된 메모리 셀들은 각 사이클에 대해 항상 금지된다. 단계(1060)에서, 단계(1058)에서 메모리 셀들을 프로그맹하는데 필요했던 프로그램 펄스들의 수가 기록된다. 단계(1062)에서, 테스트들(단계들(1054, 1060)) 각각에 대한 펄스들의 수가 비교된다. 단계(1060)에서 측정된 펄스들의 수는 단계(1054)에서 측정된 펄스들의 수보다 작을 것으로 예측된다. 펄스들의 수에 있어서의 이러한 차는 위에 기술된 록아웃 조건과 관련된 간섭 효과의 크기를 나타낸다. 차가 임계값보다 크면, 트리거 전압은 단계(1058)의 프로그래밍 프로세스로부터의 최종 펄스의 크기로 설정된다. 차가 임계값보다 크지 않으면, 전압 Vx가 (예컨대, 0.5 볼트 만큼) 증가되고 프로세스가 단계(1050)으로 되돌아가 테스트를 반복한다. 일 예예서, 단계(1064)의 임계값은 일 펄스와 동일하다. 다른 임계값들이 또한 사용될 수 있다.
도 23은 트리거 전압을 결정 또는 트리밍하기 위한 또 다른 실시예이다. 단계(1102)에서, 선택된 블록 또는 블록들이 소거된다. 단계(1104)에서, 짝수 비트 라인들에 연결된 메모리 셀들이 이들의 임계 전압이 전압(Vy)와 같아질때까지 프로그램된다. 단계(1104)의 프로그래밍 프로세스 동안, 홀수 비트 라인들에 연결된 메모리 셀들이 항상 프로그래밍되도록 선택된다. 단계(1106)에서, 오버-프로그래밍되는 짝수 비트 라인들에 연결된 메모리 셀들의 수가 측정된다. 예를 들어, 이상적인 임계 전압 분포가 시뮬레이션에 기초하여 추정될 수 있고 상부 레벨이 그 이상적인 임계 전압 분포에 대해 결정될 수 있다. 메모리 셀들의 임계 전압이 이상적인 분포의 상부 한계값을 초과하면, 메모리 셀은 오버프로그램된다. 예를 들어, 도 7i를 보면, 상태(S6)는 하부 경계(G) 및 상부 경계(OP)를 가진다. 메모리 셀이 OP보다 큰 임계 전압을 가지면, 메모리 셀은 오버프로그램된다. 다른 실시예들에서, 오버-프로그래밍을 위한 비교 레벨이 상이할 수 있다.
도 23을 되돌아 보면, 단계(1108)에서, 선택된 워드 라인에 프로그래밍 펄스가 하나 더 인가된다. 이 프로그래밍 펄스는 단계(1108)에서 인가되고 있지만, 홀수 비트 라인들에 연결된 모든 메모리 셀들이 프로그래밍이 금지된다. 단계(1104)에서 Vy의 임계 전압에 도달한 메모리 셀들은 단계(1108) 동안 록아웃으로 유지될 것이다. 따라서, 단계(1108)의 프로그래밍 펄스는 아직 Vy의 임계 전압에 도달하지 못한 메모리 셀들만을 프로그램할 것이다. 단계(1110)에서, 오버-프로그램된 메모리 셀들의 수가 다시 측정된다. 단계(1112)에서, 단계(1110)에서 측정된 오버-프로그램된 셀들의 수가 단계(1106)에서 측정된 오버-프로그램된 메모리 셀들의 수와 비교된다. 오버-프로그램된 메모리 셀들의 수에 있어서의 차가 임계값보다 크면, 트리거 전압은 단계(1108)에서 인가된 펄스의 크기로 설정된다. 단계(1114)로부터의 임계값의 일 예는 5 개의 메모리 셀들이다. 차가 임계값보다 크지 않으면(단계(1114)), 단계(1116)에서 Vy의 전압 레벨이 (예컨대, .5 볼트 만큼) 증가되고 프로세스가 단계(1102)로 되돌아가 반복된다.
일부 실시예들에서, 비휘발성 저장 시스템은, 사이클링 이력, 온도 등과 같은 환경적 조건 또는 사용 조건으로 인한 변화를 처리하기 위하여 트리거링 전압에 대해 동적인 조정(dynamic adjustments)을 할 수 있다. 도 24는 프로그램/소거 사이클의 수에 기초하여 트리거 전압을 동적으로 변화시키기 위한 일 실시예를 기술하는 흐름도이다. 프로그램/소거 사이클은 소거 프로세스 및 프로그램 프로세스를 수행하는 것을 포함한다. 비휘발성 저장 시스템이 많은 프로그래밍/소거 사이클을 수행함에 따라, 전하가 플로팅 게이트와 채널 사이의 유전 영역(dielectric region) 내에 트래핑될 수 있다. 이 조건은 도 11a 내지 11c와 관련하여 위에서 논의된 공핍 영역을 감소시킬 수 있다. 따라서, 디바이스가 여러번 사이클링됨에 따라, 홀수 및 짝수 메모리 셀들의 개별 프로그래밍이 프로그래밍 프로세스에서 나중에 발생하도록 트리거 전압을 증가시키는 것이 가능할 수 있다. 도 24의 단계(1240)에서, 메모리 디바이스는 X 프로그램/소거 사이클들을 수행한다. 일 예에서, X 프로그램 사이클들은 10,000 프로그램/소거 사이클들일 수 있다. X의 다른 값들이 또한 사용될 수 있다. X 프로그램/소거 사이클들을 수행한 후, 단계(1242)에서 트리거 전압이 (예컨대, 0.5볼트 만큼) 상승된다. 단계(1242)에서 트리거 전압을 상승시킨 후, 메모리 시스템은 단계(1244)에서 Y 프로그램/소거 사이클들을 수행할 것이다. 일 예에서, Y번의 프로그램/소거 사이클들은 5,000 프로그램/소거 사이클들일 수 있다. 단계(1246)에서, 트리거 전압이 다시 (예컨대, 0.2 볼트 만큼) 상승될 것이다. 단계(1246)에서 트리거 전압을 상승시킨 후, 메모리 시스템이 프로그램/소거 사이클들을 계속 수행할 것이다(단계(1248)). 도 24는 트리거 전압을 두 번 상승시키는 메모리 디바이스를 도시한다. 그러나, 다른 실시예들에서, 트리거 전압이 단 한 번 또는 2 번보다 많이 상승될 수 있다. X와 Y의 차 값은 디바이스 특성화 또는 실험 수단에 기초하여 결정될 수 있다.
도 25는 도 24의 프로세스를 수행하기 위해 이용되는 컴포넌트드르이 일 예의 블록도이다. 도 25는 트리거 파라미터를 저장하는 레지스터(1282) 및 사이클 파라미터를 저장하는 레지스터(1284)와 통신하는 상태 머신(222)을 보여준다. 보상 회로(1286)가 또한 레지스터(1282) 및 레지스터(1284)와 통신한다. 트리거 파라미터는 트리거 전압 (또는 다른 트리거)의 표시이다. 트리거 파라미터는 전압 크기, 펄스 수, 또는 어떤 다른 것의 신원(identification)일 수 있다. 사이클 파라미터는 수행된 프로그램/소거 사이클들 또는 수를 나타낼 수 있다. 사이클 파라미터의 값에 기초하여, 적절할 때 보상 회로가 트리거 파라미터를 갱신할 것이다. 예를 들어, 보상 회로(1286)는 도 24의 단계(1242, 1246)의 부분으로서 트리거 파라미터를 갱신할 수 있다. 상태 머신(222)이 도 10의 단계(662) 동안 트리거 파라미터를 사용할 것이다.
도 26은 온도에 기초하여 트리거 전압을 동적으로 조정하는 실싱를 기술하는 흐름도이다. 단계(1302)에서, 메모리 세스템이 온도를 측정할 것이다. 일 실시예에서, 메모리 시스템은 온도 센서를 포함할 수 있다. 측정된 온도에 기초하여, 단계(1304)에서 트리거 전압이 조정될 수 있다. 공핍 영역은 차가운 온도에서 더 나빠져 프로그램 프로세스에서 트리거가 더 일찍 발생할 것이라는 것이 예상된다. 이는 차가운 온도에 있을 때 트리거 전압을 낮춤으로써 이루어질 수 있다. 단계(1302)에서 측정된 온도가 프리셋 수치보다 더 낮다면, 트리거 전압이 낮아질 수 있다. 단계(1302)에서 측정된 온도가 프리셋 수치보다 더 높다면, 트리거 전압이 상승될 수 있다. 다른 실시예에서, 상태 머신(222)이 온도 범위와 트리거 전압을 결부시키는 표를 저장할 수 있다. 단계(1302)에서, 상태 머신(222)이 온도를 판독할 것이고, 단계(1304)에서, 상태 머신(222)이 온도를 표에 대한 키로서 이용하여 표 내의 트리거 값을 검색(look up)할 것이다. 표에 보이는 트리거 전압이 프로그래밍 프로세스 동안의 사용을 위해 파라미터에 저장될 것이다. 다른 실시예에서, 단계(1304)에서 보상 회로가 측정된 온도를 판독할 것이고 트리거전압을 조정할 것이다. 단계(1306)에서, 시스템은 단계(1304)에서 설정된 트리거 전압을 이용하여 프로그래밍을 수행할 것이다. 일정 정도의 프로그래밍 수행 후, 프로세스는 단계(1302)로 되돌아갈 것이고 온도가 다시 측정되어 단계(1304)에서 트리거 전압이 선택적으로(optionally) 조정될 수 있다. 일 실시예에서, 단계(1302-1306)의 루프가 모든 프로그래밍 프로세스에 대해 수행될 수 있다. 대안적인 실시예들에서, 프로세스는 모든 N 사이클들 또는 모든 N 시간 기간들, 기타에 수행될 수 있다.
도 27은 도 26의 프로세스를 구현할 수 있는 구성요소의 일 예를 도시하는 블록도이다. 도 27은 트리거 파라미터를 저장하는 레지스터(1350)와 통신하는 상태 머신(222)을 보여준다. 트리거 파라미터는 트리거 전압 (또는 다른 트리거)의 표시이다. 트리거 파라미터는 전압 크기, 펄스 수, 또는 어떤 다른 것의 표시일 수 있다. 보상 회로(1352)가 레지스터(1350) 및 온도 센서(1354)와 통신한다. 온도 센서(1354)는 온도를 나타내는 신호(전압 또는 전류)를 출력한다. 온도 센서(1354)의 출력에 기초하여, 보상 회로(1352)가 트리거 파라미터를 갱신할 것이다. 예를 들어, 보상 회로(1352)는 도 26의 단계(1304)의 부분으로서 트리거 파라미터를 갱신할 수 있다. 트리거 파라미터의 갱신은 계속적으로, 주기적으로, 또는 요구에 따라 수행될 수 있다.
일 실시예는 프로그래밍 신호를 이용하여 비휘발성 저장 소자들의 제1 그룹과 비휘발성 저장 소자들의 제2 그룹을 함께 프로그래밍하고 함께 검증하는 단계, 제1 조건이 존재함을 결정하는 단계, 제1 조건이 존재함을 결정함에 응답하여 프로그래밍 신호를 낮추는 단계, 그리고 제1 조건이 존재함을 결정함에 응답하여 낮아진 프로그래밍 신호를 이용하여 비휘발성 저장 소자들의 제1 그룹을 비휘발성 저장 소자들의 제2 그룹의 프로그래밍과는 별개로 프로그래밍하는 단계를 포함한다.
일 예에서, 비휘발성 저장 소자들의 제1 그룹 및 비휘발성 저장 소자들의 제2 그룹은 공통 제어 라인에 연결되어 공통 제어 라인 상의 프로그래밍 신호를 수신한다. 공통 제어 라인의 일 예는 워드 라인이다.
일 실시예는, 비휘발성 저장 소자들의 제1 그룹 및 비휘발성 저장 소자들의 제2 그룹을 포함하는 복수의 비휘발성 저장 소자들, 및 비휘발성 저장 소자들과 통신하는 하나 이상의 관리 회로를 포함한다. 하나 이상의 관리 회로는 프로그래밍 신호를 이용하여 비휘발성 저장 소자들의 제1 그룹과 비휘발성 저장 소자들의 제2 그룹을 함께 프로그래밍하고 함께 검증한다. 하나 이상의 관리 회로는 제1 조건이 존재함을 결정하고 제1 조건이 존개함을 결정함에 응답하여 프로그래밍 신호르 낮춘다. 하나 이상의 관리 회로는 제1 조건이 존개함을 결정함에 응답하여 낮아진 프로그래밍 신호를 이용하여 비휘발성 저장 소자들의 제1 그룹을 비휘발성 저장 소자들의 제2 그룹과 별개로 프로그래밍한다.
일 실시예는 비휘발성 저장장치를 프로그래밍하는 방법을 포함한다. 제1 트리거 전에, 본 방법은 제1 트리거시 기준 크기로 시간에 따라 증가하는 프로그래밍 펄스들을 포함하는 공통 프로그래밍 신호를 이용하여 비휘발성 저장 소자들의 제1 그룹을 비휘발성 저장 소자들의 제2 그룹과 함께 프로그래밍하고 함께 검증하는 단계를 포함한다. 제1 트리거 후, 본 방법은 기준 크기보다 크기가 작은 별개의 프로그래밍 펄스를 이용하여 비휘발성 저장 소자들의 제2 그룹과는 별개로 비휘발성 저장 소자들의 제1 그룹을 프로그래밍하는 단계 및 비휘발성 저장 소자들의 제1 그룹을 비휘발성 저장 소자들의 제2 그룹과 함께 검증하는 단계를 포함한다.
본 발명의 실시예들에 관한 전술한 내용들은 예시와 설명을 위해 제공되었다. 실시예에 대한 모든 것을 속속들이 규명한다던가 또는 개시된 실시예들만으로 본 발명을 제한하고자 의도된 것이 아님을 유의해야 한다. 전술한 가르침에 비추어 볼때, 해당 기술분야의 당업자에게는 다양한 변형예와 수정예들이 자명할 것이다. 본 발명의 기술적 사상과 실질적인 응용을 최적으로 설명하기 위해, 본 발명의 실시예들이 선택되고 기술되었으며, 따라서 해당 기술분야의 당업자들은 다양한 실시예들에 따른 본 발명을 가장 잘 활용할 수 있을 것이며, 고려중인 특정한 사용에 적합한 다양한 변형예들을 가장 잘 활용할 수 있을 것이다. 본 발명의 범위는 첨부된 청구항들에 의해서 정의되어야 한다.

Claims (19)

  1. 비휘발성 저장장치를 프로그래밍하는 방법으로서,
    프로그래밍 신호를 이용하여 비휘발성 저장 소자들의 제1 그룹과 비휘발성 저장 소자들의 제2 그룹을 함께 프로그래밍하고 함께 검증하는 단계;
    제1 조건(condition)이 존재함을 결정하는 단계;
    상기 제1 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호를 낮추는 단계; 및
    상기 제1 조건이 존재함을 결정함에 응답하여 낮아진 상기 프로그래밍 신호를 이용하여, 상기 비휘발성 저장 소자들의 제2 그룹을 프로그래밍하는 것과 별개로 상기 비휘발성 저장 소자들의 제1 그룹을 프로그래밍하는 단계를 포함하는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  2. 제1 항에 있어서,
    상기 비휘발성 저장 소자들의 제1 그룹 및 상기 비휘발성 저장 소자들의 제2 그룹은 공통 제어 라인(common control line)에 연결되어 상기 공통 제어 라인 상의 상기 프로그래밍 신호를 수신하는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  3. 제1 또는 2 항에 있어서,
    상기 제1 조건이 존재함을 결정한 후 상기 비휘발성 저장 소자들의 제1 그룹을 상기 비휘발성 저장 소자들의 제2 그룹과 함께 검증하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  4. 제1 내지 3 항 중 임의의 한 항에 있어서,
    제2 조건이 존재함을 결정하는 단계;
    상기 제2 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호를 상승시키는 단계; 및
    상기 제2 조건이 존재함을 결정함에 응답하여 프로그래밍을 위해 상승된 상기 프로그래밍 신호를 이용하여 상기 비휘발성 저장 소자들의 제1 그룹과 상기 비휘발성 저장 소자들의 제2 그룹을 함께 프로그래밍하고 함께 검증하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  5. 제4 항에 있어서,
    상기 제2 조건이 존재함을 결정하는 단계는, 하나 이상의 데이터 상태들(data states)의 서브세트로 프로그램되도록 되어있는 상기 비휘발성 저장 소자들의 제1 그룹 및 상기 비휘발성 저장 소자들의 제2 그룹의 적어도 소정 양의 비휘발성 저장 소자들이, 상기 하나 이상의 데이터 상태들의 서브세트로 성공적으로 프로그램되었음을 결정하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  6. 제4 항에 있어서,
    상기 제2 조건이 존재함을 결정하는 단계는 소정 양(predetermined amount)의 프로그래밍이 수행되었음을 결정하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  7. 제1 내지 6 항 중 임의의 한 항에 있어서,
    상기 제2 조건이 존재함을 결정함에 응답하여, 상기 프로그래밍 신호가 복수의 프로그램-검증 반복들(multiple program-verify iterations)의 세트에 걸쳐 상승되는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  8. 제7 항에 있어서,
    상기 제1 조건이 존재함을 결정하는 단계 전에 상기 프로그래밍 신호는 특정 레이트(rate)로 증가하고 있는 크기를 가졌고; 그리고
    상기 프로그래밍 신호를 상승시키는 단계는, 상기 프로그래밍 신호를, 상기 제1 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호의 크기가 낮아지지 않았을 경우의 상기 프로그래밍 신호의 크기에 근거한 값으로 상승시키는 것을 포함하는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  9. 제1 내지 3 항 중 임의의 한 항에 있어서,
    상기 제2 조건이 존재함을 결정하는 단계 - 상기 제1 조건이 존재함을 결정하는 단계 전에 상기 프로그래밍 신호는 특정 레이트로 증가하고 있는 크기를 가졌고 -;
    상기 제2 조건이 존재함을 결정함에 응답하여, 상기 프로그래밍 신호를, 상기 제1 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호의 크기가 낮아지지 않았을 경우의 상기 프로그래밍 신호의 크기에 근거한 값으로 상승시키는 단계; 및
    상기 제2 조건이 존재함을 결정함에 응답하여 상승된 상기 프로그래밍 신호를 이용하여 상기 비휘발성 저장 소자들의 제1 그룹과 상기 비휘발성 저장 소자들의 제2 그룹을 함께 프로그래밍 및 함께 검증하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  10. 제1 내지 9 항 중 임의의 한 항에 있어서,
    상기 제1 조건이 존재함을 결정하는 단계는, 하나 이상의 데이터 상태들의 특정 세트로 프로그램되도록 되어있는 상기 비휘발성 저장 소자들의 제1 그룹 및 상기 비휘발성 저장 소자들의 제2 그룹의 적어도 소정 양의 비휘발성 저장 소자들이, 상기 하나 이상의 데이터 상태들의 특정 세트로 성공적으로 프로그램되었음을 결정하는 단계;
    상기 비휘발성 저장 소자들의 제1 그룹 및 상기 비휘발성 저장 소자들의 제2 그룹이 데이터 상태들의 그룹으로 프로그램되고;
    상기 하나 이상의 데이터 상태들의 특정 세트는 소거 상태(erased state)에 가장 가까운 데이터 상태들의 그룹의 서브세트인 것을 특징으로 하는 비휘발성 저장장치를 프로그래밍하는 방법.
  11. 비휘발성 저장 장치로서,
    비휘발성 저장 소자들의 제1 그룹 및 비휘발성 저장 소자들의 제2 그룹을 포함하는 복수의 비휘발성 저장 소자들; 및
    상기 비휘발성 저장 소자들과 통신하는 하나 이상의 관리 회로들을 포함하며, 상기 하나 이상의 관리 회로들은 프로그래밍 신호를 이용하여 상기 비휘발성 저장 소자들의 제1 그룹과 상기 비휘발성 저장 소자들의 제2 그룹을 함께 프로그램하고 함께 검증하고, 상기 하나 이상의 관리 회로들은 제1 조건이 존재함을 결정하고 상기 제1 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호를 낮추고, 상기 하나 이상의 관리 회로들은, 상기 제1 조건이 존재함을 결정함에 응답하여 낮아진 상기 프로그래밍 신호를 이용하여, 상기 비휘발성 저장 소자들의 제2 그룹을 프로그래밍하는 것과 별개로 상기 비휘발성 저장 소자들의 제1 그룹을 프로그래밍하는 것을 특징으로 하는 비휘발성 저장장치.
  12. 제11 항에 있어서,
    상기 비휘발성 저장 소자들의 제1 그룹 및 상기 비휘발성 저장 소자들의 제2 그룹은 공통 제어 라인에 연결되어 상기 공통 제어 라인 상의 상기 프로그래밍 신호를 수신하는 것을 특징으로 하는 비휘발성 저장장치.
  13. 제11 또는 12 항에 있어서,
    상기 비휘발성 저장 소자들의 제1 그룹 및 상기 비휘발성 저장 소자들의 제2 그룹은 다중-상태 비휘발성 저장 소자들인 것을 특징으로 하는 비휘발성 저장장치.
  14. 제11 또는 12 또는 13 항에 있어서,
    상기 하나 이상의 관리 회로들은 상기 제1 조건이 존재함을 결정한 후 상기 비휘발성 저장 소자들의 제1 그룹을 상기 비휘발성 저장 소자들의 제2 그룹과 함께 검증하는 것을 특징으로 하는 비휘발성 저장장치.
  15. 제11 내지 14 항 중 임의의 한 항에 있어서,
    상기 하나 이상의 관리 회로들은 제2 조건이 존재함을 결정하고; 그리고
    상기 하나 이상의 관리 회로들은 상기 제2 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호를 이용하여 상기 비휘발성 저장 소자들의 제1 그룹 및 상기 비휘발성 저장 소자들의 제2 그룹을 함께 프로그래밍하고 함께 검증하는 것을 특징으로 하는 비휘발성 저장장치.
  16. 제15 항에 있어서,
    상기 하나 이상의 관리 회로들은 상기 제2 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호를 상승시키는 것을 특징으로 하는 비휘발성 저장장치.
  17. 제16 항에 있어서,
    상기 제2 조건이 존재함을 결정함에 응답하여, 상기 하나 이상의 관리 회로들이 복수의 프로그램-검증 반복들의 세트에 걸쳐 상기 프로그래밍 신호를 상승시키는 것을 특징으로 하는 비휘발성 저장장치.
  18. 제17 항에 있어서,
    상기 제1 조건이 존재함을 결정하기 전에 상기 프로그래밍 신호는 특정 레이트(rate)로 증가하는 크기를 가졌고; 그리고
    상기 하나 이상의 관리 회로들은 상기 프로그래밍 신호를, 상기 제1 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호의 크기가 낮아지지 않았을 경우의 상기 프로그래밍 신호의 크기에 근거한 값으로 상승시키는 것을 특징으로 하는 비휘발성 저장장치.
  19. 제11 항에 있어서,
    상기 하나 이상의 관리 회로들은 제2 조건이 존재함을 결정하고;
    상기 제1 조건이 존재함을 결정하기 전에 상기 프로그래밍 신호는 특정 레이트(rate)로 증가하고 있는 크기를 가졌고;
    상기 제2 조건이 존재함을 결정함에 응답하여, 상기 하나 이상의 관리 회로들은 상기 프로그래밍 신호를, 상기 제1 조건이 존재함을 결정함에 응답하여 상기 프로그래밍 신호의 크기가 낮아지지 않았을 경우의 상기 프로그래밍 신호의 크기에 근거한 값으로 상승시키고; 그리고
    상기 하나 이상의 관리 회로는 상기 제2 조건이 존재함을 결정함에 응답하여 상승된 상기 프로그래밍 신호를 이용하여, 상기 비휘발성 저장 소자들의 제1 그룹 과 상기 비휘발성 저장 소자들의 제2 그룹을 함께 프로그래밍하고 함께 검증하는 것을 특징으로 하는 비휘발성 저장장치.
KR1020127030130A 2010-04-18 2011-04-14 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍 KR101736414B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/762,342 US8218366B2 (en) 2010-04-18 2010-04-18 Programming non-volatile storage including reducing impact from other memory cells
US12/762,342 2010-04-18
PCT/US2011/032575 WO2011133404A1 (en) 2010-04-18 2011-04-14 Programming non-volatile storage includng reducing impact from other memory cells

Publications (2)

Publication Number Publication Date
KR20130101976A true KR20130101976A (ko) 2013-09-16
KR101736414B1 KR101736414B1 (ko) 2017-05-16

Family

ID=44120993

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127030130A KR101736414B1 (ko) 2010-04-18 2011-04-14 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍

Country Status (7)

Country Link
US (2) US8218366B2 (ko)
EP (1) EP2561511B1 (ko)
JP (1) JP2013525935A (ko)
KR (1) KR101736414B1 (ko)
CN (1) CN102985976B (ko)
TW (1) TW201203258A (ko)
WO (1) WO2011133404A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9466389B2 (en) 2014-07-07 2016-10-11 SK Hynix Inc. Multiple programming pulse per loop programming and verification method for non-volatile memory devices
WO2021138702A1 (en) * 2019-12-31 2021-07-08 Micron Technology, Inc. Apparatuses, systems, and methods for error correction

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8130556B2 (en) * 2008-10-30 2012-03-06 Sandisk Technologies Inc. Pair bit line programming to improve boost voltage clamping
US8218366B2 (en) 2010-04-18 2012-07-10 Sandisk Technologies Inc. Programming non-volatile storage including reducing impact from other memory cells
US8310870B2 (en) * 2010-08-03 2012-11-13 Sandisk Technologies Inc. Natural threshold voltage distribution compaction in non-volatile memory
US8395936B2 (en) * 2011-05-09 2013-03-12 Sandisk Technologies Inc. Using channel-to-channel coupling to compensate floating gate-to-floating gate coupling in programming of non-volatile memory
US9135989B2 (en) * 2012-09-06 2015-09-15 Sandisk Technologies Inc. Write data preservation for non-volatile storage
US8942043B2 (en) * 2013-03-04 2015-01-27 Sandisk Technologies Inc. Non-volatile storage with process that reduces read disturb on end wordlines
US9620238B2 (en) * 2014-01-20 2017-04-11 Sandisk Technologies Llc Methods and systems that selectively inhibit and enable programming of non-volatile storage elements
KR102248835B1 (ko) 2014-09-29 2021-05-10 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 동작 방법
KR20170011641A (ko) * 2015-07-23 2017-02-02 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
US9852786B2 (en) 2015-10-21 2017-12-26 Toshiba Memory Corporation Semiconductor memory device that varies voltage levels depending on which of different memory regions thereof is accessed
US9489990B1 (en) * 2015-11-17 2016-11-08 Atmel Corporation Adaptive non-volatile memory programming
US10290346B2 (en) * 2016-12-22 2019-05-14 Western Digital Technologies, Inc. Method and apparatus for low-latency read of flash storage devices using fractional bits per cell
KR102267046B1 (ko) 2017-03-29 2021-06-22 삼성전자주식회사 스토리지 장치 및 배드 블록 지정 방법
US10365854B1 (en) * 2018-03-19 2019-07-30 Micron Technology, Inc. Tracking data temperatures of logical block addresses
KR102469098B1 (ko) * 2018-03-21 2022-11-23 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 이를 포함하는 데이터 저장 장치
US10607709B1 (en) * 2018-09-13 2020-03-31 Toshiba Memory Corporation System and method for efficient read-flow by inter-cell interference decoupling for NAND flash memories
CN109800876B (zh) * 2019-01-18 2021-06-01 合肥恒烁半导体有限公司 一种基于NOR Flash模块的神经网络的数据运算方法
US10839928B1 (en) * 2019-05-16 2020-11-17 Sandisk Technologies Llc Non-volatile memory with countermeasure for over programming
US10910076B2 (en) 2019-05-16 2021-02-02 Sandisk Technologies Llc Memory cell mis-shape mitigation
US11081198B2 (en) 2019-05-16 2021-08-03 Sandisk Technologies Llc Non-volatile memory with countermeasure for over programming
TWI784515B (zh) 2020-05-27 2022-11-21 台灣積體電路製造股份有限公司 記憶體系統以及操作記憶體系統的方法
US11437092B2 (en) 2020-05-27 2022-09-06 Taiwan Semiconductor Manufacturing Company, Ltd. Systems and methods to store multi-level data
KR20220030092A (ko) * 2020-09-02 2022-03-10 에스케이하이닉스 주식회사 메모리 장치 및 이의 동작 방법
CN112908392B (zh) * 2021-02-09 2023-09-15 东芯半导体股份有限公司 控制非易失性存储器参数的控制方法

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US5867429A (en) 1997-11-19 1999-02-02 Sandisk Corporation High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates
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
US7221591B1 (en) 2002-05-06 2007-05-22 Samsung Electronics Co., Ltd. Fabricating bi-directional nonvolatile memory cells
US7196931B2 (en) 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
US7327619B2 (en) 2002-09-24 2008-02-05 Sandisk Corporation Reference sense amplifier for non-volatile memory
US7046568B2 (en) 2002-09-24 2006-05-16 Sandisk Corporation Memory sensing circuit and method for low voltage operation
US6657891B1 (en) 2002-11-29 2003-12-02 Kabushiki Kaisha Toshiba Semiconductor memory device for storing multivalued data
US7073103B2 (en) 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US6882567B1 (en) 2002-12-06 2005-04-19 Multi Level Memory Technology Parallel programming of multiple-bit-per-cell memory cells on a continuous word line
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
US6956770B2 (en) 2003-09-17 2005-10-18 Sandisk Corporation Non-volatile memory and method with bit line compensation dependent on neighboring operating modes
US7064980B2 (en) 2003-09-17 2006-06-20 Sandisk Corporation Non-volatile memory and method with bit line coupled compensation
US6888758B1 (en) * 2004-01-21 2005-05-03 Sandisk Corporation Programming non-volatile memory
US6937520B2 (en) 2004-01-21 2005-08-30 Tsuyoshi Ono Nonvolatile semiconductor memory device
US7716413B2 (en) 2004-02-15 2010-05-11 Sandisk Il Ltd. Method of making a multi-bit-cell flash memory
JP4405292B2 (ja) 2004-03-22 2010-01-27 パナソニック株式会社 不揮発性半導体記憶装置及びその書き込み方法
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
US7212436B2 (en) 2005-02-28 2007-05-01 Micron Technology, Inc. Multiple level programming in a non-volatile memory device
US7187585B2 (en) 2005-04-05 2007-03-06 Sandisk Corporation Read operation for non-volatile storage that includes compensation for coupling
US7196928B2 (en) 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
KR100621634B1 (ko) 2005-05-06 2006-09-07 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
JP4282636B2 (ja) 2005-06-22 2009-06-24 株式会社東芝 不揮発性半導体記憶装置とそのデータ書き込み方法
US7023737B1 (en) * 2005-08-01 2006-04-04 Sandisk Corporation System for programming non-volatile memory with self-adjusting maximum program loop
JP4157563B2 (ja) * 2006-01-31 2008-10-01 株式会社東芝 半導体集積回路装置
JP2008084471A (ja) 2006-09-28 2008-04-10 Toshiba Corp 半導体記憶装置
US7630249B2 (en) 2007-06-21 2009-12-08 Sandisk Corporation Intelligent control of program pulse duration
US7580290B2 (en) 2007-06-21 2009-08-25 Sandisk Corporation Non-volatile storage system with intelligent control of program pulse duration
US7869273B2 (en) 2007-09-04 2011-01-11 Sandisk Corporation Reducing the impact of interference during programming
JP2009141225A (ja) * 2007-12-07 2009-06-25 Sharp Corp 可変抵抗素子、可変抵抗素子の製造方法、不揮発性半導体記憶装置
US7826248B2 (en) * 2008-05-20 2010-11-02 Seagate Technology Llc Write verify method for resistive random access memory
US8144511B2 (en) 2009-08-19 2012-03-27 Sandisk Technologies Inc. Selective memory cell program and erase
US8218366B2 (en) 2010-04-18 2012-07-10 Sandisk Technologies Inc. Programming non-volatile storage including reducing impact from other memory cells
US8947908B2 (en) * 2010-11-04 2015-02-03 Crossbar, Inc. Hetero-switching layer in a RRAM device and method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9466389B2 (en) 2014-07-07 2016-10-11 SK Hynix Inc. Multiple programming pulse per loop programming and verification method for non-volatile memory devices
WO2021138702A1 (en) * 2019-12-31 2021-07-08 Micron Technology, Inc. Apparatuses, systems, and methods for error correction
US11169876B2 (en) 2019-12-31 2021-11-09 Micron Technology, Inc. Apparatuses, systems, and methods for error correction
US11645150B2 (en) 2019-12-31 2023-05-09 Micron Technology, Inc. Apparatuses, systems, and methods for error correction

Also Published As

Publication number Publication date
TW201203258A (en) 2012-01-16
KR101736414B1 (ko) 2017-05-16
CN102985976B (zh) 2015-11-25
CN102985976A (zh) 2013-03-20
US20110255345A1 (en) 2011-10-20
US8218366B2 (en) 2012-07-10
WO2011133404A1 (en) 2011-10-27
EP2561511B1 (en) 2014-09-03
USRE45910E1 (en) 2016-03-01
EP2561511A1 (en) 2013-02-27
JP2013525935A (ja) 2013-06-20

Similar Documents

Publication Publication Date Title
KR101736414B1 (ko) 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍
EP2181446B1 (en) Reducing the impact of interference during programming
EP2577671B1 (en) Programming non-volatile storage with synchronized coupling
EP2286411B1 (en) Erase-verification process for non-volatile storage
WO2016089474A1 (en) Partial block erase for data refreshing
KR20120039562A (ko) 비휘발성 저장 소자에 대한 프로그래밍 완료의 검출
WO2014137651A1 (en) Non-volatile storage with process that reduces read disturb on end wordlines
WO2013028721A1 (en) Read compensation for partially programmed blocks of non-volatile storage
EP2078303B1 (en) Reading of a nonvolatile memory cell by taking account of the stored state of a neighboring memory cell
EP1946323A1 (en) Method for programming of multi-state non-volatile memory using smart verify
KR101000546B1 (ko) 비휘발성 메모리 기록 동작에서의 지속적 검증
KR101012130B1 (ko) 프로그램 혼란의 영향을 감소시키는 방법
WO2013138199A1 (en) Non-volatile storage with read process that reduces disturb
KR20090007296A (ko) 프로그램 혼란의 영향을 감소시키는 방법

Legal Events

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