KR101075253B1 - 임계 전압의 치밀한 분포가 가능한 비휘발성 메모리의 비 실시간 재 프로그래밍 방법 - Google Patents

임계 전압의 치밀한 분포가 가능한 비휘발성 메모리의 비 실시간 재 프로그래밍 방법 Download PDF

Info

Publication number
KR101075253B1
KR101075253B1 KR1020087023383A KR20087023383A KR101075253B1 KR 101075253 B1 KR101075253 B1 KR 101075253B1 KR 1020087023383 A KR1020087023383 A KR 1020087023383A KR 20087023383 A KR20087023383 A KR 20087023383A KR 101075253 B1 KR101075253 B1 KR 101075253B1
Authority
KR
South Korea
Prior art keywords
word line
programming
nonvolatile
page
word lines
Prior art date
Application number
KR1020087023383A
Other languages
English (en)
Other versions
KR20090007298A (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
Priority claimed from US11/425,794 external-priority patent/US7489549B2/en
Priority claimed from US11/425,790 external-priority patent/US7486561B2/en
Application filed by 샌디스크 코포레이션 filed Critical 샌디스크 코포레이션
Publication of KR20090007298A publication Critical patent/KR20090007298A/ko
Application granted granted Critical
Publication of KR101075253B1 publication Critical patent/KR101075253B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Abstract

일 세트의 비휘발성 저장소자들은 초기 프로그래밍을 경험하고, 이후에 더 높은 검증 레벨을 갖는 재 프로그래밍이 비 실시간으로 실행되는바, 비 실시간은 가령, 콘트롤러가 스탠바이 모드로 들어갈 때, 혹은 펜딩 중인 다른 읽기 태스크 또는 쓰기 태스크가 존재하지 않는 때와 같은 경우를 의미하는 것이다. 상기 재 프로그래밍은 상기 세트 내의 페이지들을 한 번에 하나씩 프로그래밍할 수 있는바, 다른 읽기 태스크 또는 쓰기 태스크가 펜딩 중인 경우에는 페이지 경계에서 중지하고, 그리고 콘트롤러가 다시 이용가능할 때에 재시작한다. 페이지 및/또는 상기 세트가 재 프로그래밍을 완료했는지를 식별하기 위해서, 상태 플래그들이 제공될 수 있다. 본 발명의 다른 측면에서는, 재 프로그래밍 동안에 비선택 워드 라인에는 더 높은 패스 전압이 인가된다. 또 다른 측면에서, 읽기 전압들의 디폴트 세트를 이용하여 에러 카운트가 결정되고, 그리고 상기 카운트가 임계치를 초과하면 읽기 전압들의 대안적인 세트가 선택된다.

Description

임계 전압의 치밀한 분포가 가능한 비휘발성 메모리의 비 실시간 재 프로그래밍 방법{METHOD FOR NON-REAL TIME REPROGRAMMING OF NON-VOLATILE MEMORY TO ACHIEVE DISTRIBUTION OF THRESHOLD VOLTAGES}
본 발명은 비휘발성 메모리에 관한 것이다.
반도체 메모리는 다양한 전자 부품에서 그 사용이 증가하고 있다. 예를들어, 비휘발성 반도체 메모리는 셀룰러 폰, 디지털 카메라, PDA(personal digital assistants), 모바일 컴퓨팅 장치, 고정 컴퓨팅 장치 등에 사용된다. EEPROM(Electrically Erasable Programmable Read Only Memory)과 플래시 메모리는 가장 흔한 비휘발성 반도체 메모리이다. EEPROM은 물론, 플래시 메모리의 경우, 전체 메모리 어레이 또는 메모리 일부의 내용은 하나의 단계에서 소거될 수 있는데, 이는 종래의 전 기능(full-featured) EEPROM과는 구별된다.
종래의 EEPROM과 플래시 메모리는 플로팅 게이트를 이용하는데, 플로팅 게이트는 반도체 기판의 채널 영역 위에 절연되어 위치한다. 플로팅 게이트는 소스 영역과 드레인 영역의 사이에 위치한다. 콘트롤 게이트는 플로팅 게이트 위에 절연되어 구비된다. 이렇게 구성된 트랜지스터의 임계 전압(threshold voltage)은 플로팅 게이트에 존재하는 전하량으로 제어된다. 즉, 소스와 드레인을 전기적으로 연결하기 위해서 트랜지스터가 턴온되기 전에 콘트롤 게이트에 인가되어야 하는 최소 전압은 플로팅 게이트의 전하량 레벨로 제어된다.
몇몇 EEPROM과 플래시 메모리 장치는 2가지 범위의 전하량을 저장하기 위하여 플로팅 게이트를 사용하는 저장 소자를 갖고 있어서, 2가지 상태들, 즉 소거된 상태와 프로그램된 상태들 사이에서 프로그램되고/소거될 수 있다. 그러한 플래시 메모리 장치는 바이너리 플래시 메모리 장치로 불리기도 하는데, 그 이유는 각 저장 소자가 1 비트의 데이터를 저장할 수 있기 때문이다.
다중-상태(또는 다중-레벨) 플래시 메모리 장치는 다수의 구별되는 허용/유효한 프로그램 임계전압 범위를 식별함으로써 구현된다. 각각의 다른 임계 전압 범위는 메모리 장치에 인코딩된 데이터 비트의 세트에 대해 정해진 소정값에 대응한다. 예를 들면, 저장 소자가 4개의 다른 임계전압 범위에 대응하는 4개의 다른 전하량 밴드 중 하나에 위치할 때, 각 저장 소자는 2 비트의 데이터를 저장할 수 있다.
통상적으로, 프로그램 동작 중에 콘트롤 게이트에 인가되는 프로그램 전압(Vpgm)은, 시간에 따라 그 크기가 증가하는 일련의 펄스들로 인가된다. 하나의 가능한 일례로, 펄스들의 크기는, 기결정된 스텝 사이즈(step size)(예를 들면, 0.4V) 만큼 각각의 연속적인 펄스들 마다 증가된다. Vpgm 은 플래시 저장 소자의 콘트롤 게이트에 인가될 수 있다. 프로그램 펄스들의 사이에서 검증 작업이 실행된다. 즉, 병렬로 프로그램되는 한 세트의 저장 소자들 각각의 프로그래밍 레벨은 연속적인 프로그래밍 펄스들 사이에서 판독되어, 저장 소자가 프로그래밍 되기로한 검증 레벨과 상기 프로그래밍 레벨이 같거나 혹은 큰지가 결정된다. 다중-상태 플래시 저장 소자의 어레이에서, 검증 단계는 저장 소자의 각 상태에 대해 실행되어 저장 소자가 자신의 데이터 관련 검증 레벨에 이르렀는지를 결정하게 된다. 예를 들어, 4가지 상태로 데이터를 저장할 수 있는 다중-상태 저장 소자는 3개의 비교 포인트에 대해 검증 작업을 실행할 필요가 있을 수 있다.
NAND 플래시 메모리 장치와 같은 플래시 메모리 장치나 EEPROM을 프로그래밍할 때, 보통 프로그램 전압은 콘트롤 게이트에 인가되고 비트 라인은 접지되는데, 이는 전자가 저장 소자의 채널로부터 플로팅 게이트 내로 주입되게 한다. 전자가 플로팅 게이트에 축적되면 플로팅 게이트는 음으로 충전되고 저장 소자의 임계 전압은 올라가게 되어 저장 소자는 프로그램된 상태에 놓이게 된다. 이러한 프로그래밍에 대한 더 많은 정보는 미국특허 제6,859,397 "Source Side Self Boosting Technique For Non-Volatile Memory"와 미국특허 제6,917,542 "Detecting Over Programmed Memory"에 기재되어 있는데, 두 자료 전체는 참고자료로 원용한다.
그러나, 선택된 저장 소자를 프로그래밍할 때, 이웃 저장 소자들은 그들의 충전 상태를 변화시킬 수 있는데, 이는 미국특허 제5,867,429 "High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates"에 기재된 전계효과 커플링(field effect coupling) 때문이다. 미국특허 제5,867,429호는 여기에 참고자료로 원용한다. 일반적으로는, 전계효과 커플링 때문에, 저장 소자의 임계 전압에 변동(shift)이 발생하는데, 이는 이웃 저장 소자에 저장된 전하량에 변화가 있기 때문이다. 예를들어, 특정 워드 라인 상의 저장 소자는, 동일 워드 라인 상의 저장 소자들 및 이웃 워드 라인들 상의 저장 소자들로부터의 용량성 커플링에 의해 영향을 받을 수 있다. 커플링은 이웃 저장 소자로부터 가장 강하며, 커플링은 이전에 프로그램된 저장 소자의 임계 전압을 더 높게 변화시킨다. 한 세트의 저장 소자들의 임계 전압 분포도 이와 유사하게 확장된다. 이는 특히 다중 레벨 저장 소자에 대해서 바람직하지 않은데, 그 이유는 다중 레벨 저장 소자에서는 더 치밀한 임계 전압 분포가 유리하기 때문이다.
본 발명은 용량성 커플링을 줄이는 방식으로 비휘발성 저장소자를 동작시키는 방법을 제공함으로써 위에서 제시한 문제를 해결한다.
일실시예에서, 비휘발성 저장소자의 동작은 워드 라인을 통해 비휘발성 저장 소자를 프로그래밍하는 것을 포함하는바, 초기 프로그래밍에서는 첫 번째 워드 라인에서 시작하여 마지막 워드 라인에 도달할 때까지 다음 워드 라인으로 순차적으로 진행된다. 초기 프로그래밍이 완료된 후, 비휘발성 저장 소자는 그 워드 라인들을 통해 재 프로그래밍된다. 초기 프로그래밍과 재 프로그래밍은 예를들어 비휘발성 저장 소자의 블록에 대해서 행해질 수 있다.
비휘발성 저장 소자는 초기 프로그래밍과 재 프로그래밍 각각에서 제 1 및 제 2 세트의 임계 전압(VTH) 검증 레벨을 이용해서 프로그램될 수 있다. 여기서, 제 2 세트의 VTH 전압 검증 레벨은 제 1 세트의 VTH 전압 검증 레벨의 대응 레벨보다 높다. 이와 같이, 저장 소자의 VTH 는 재 프로그래밍에서 증가하도록 변동된다. 더구나, 연산 부하를 저감하기 위해서, 재 프로그래밍은 관리 회로에 의해서 백그라운드 프로세스로서 실행될 수 있는데, 만약 그렇지 않다면 그것은 대기 모드에 있을 수 있다. 관리 회로의 이용가능한 상황에 기초하여, 게다가, 재 프로그래밍은 하나 이상의 개시-정지-재개(start-suspend-resume) 사이클에서, 개시되고, 일시적으로 정지되고, 이후에 재개될 수 있다. 재 프로그래밍은 페이지마다 이루어질 수 있으며 따라서, 재 프로그래밍은 데이터 페이지의 끝에서 정지되고 다음 페이지의 시작부분에서 재개될 수 있다. 플래그 비트는 재 프로그래밍이 각 페이지에 대해서 실행되는지를 나타내는데 사용될 수 있는데, 이를 통해 각 페이지의 프로그램 상태를 트래킹(tracking)할 수 있게 된다. 플래그 비트는 블록 레벨에서 사용되어 블록 레벨 트래킹을 가능하게 할 수도 있다. 또한, 페이지 레벨의 플래그 비트를 사용하면 블록 레벨 트래킹을 제공할 수도 있다.
또한, 초기 프로그래밍에서보다 재 프로그래밍에서 보다 높은 패스 전압(Vpass)이 미선택 워드 라인에 인가될 수 있다. 재 프로그래밍 중에 드레인 측 워드 라인들에 존재하는 저장 소자들은 더 이상 소거되지 않기 때문에, 전위를 증가시키는 Vpass 의 더 많은 부분이 높은 임계 전압으로 프로그램되는 이러한 저장 소자에 대해서 반전 조건에 도달하는데 소비되어야 한다. 따라서, 증가된 Vpass 는 재 프로그래밍 중에 도움이 될 수 있다.
다른 예에서, 비휘발성 저장소자의 동작은 제 1 VTH 읽기 레벨들을 이용해서 일 세트의 비휘발성 저장 소자들의 제 1 부분을 판독하는 단계, 가령, 에러 정정 및/또는 검출 코드를 이용함으로써 상기 판독으로부터 에러 카운트를 판별하는 단계, 그리고 에러 카운트가 임계값을 초과하는 경우 제 1 VTH 읽기 레벨과는 다른 제 2 VTH 읽기 레벨을 이용하여 비휘발성 저장 소자의 상기 제 1 부분을 재판독하는 단계로 구성된다. 따라서, 비휘발성 저장 소자들의 상기 제 1 부분이 초기 프로그래밍만을 경험했는지에 대해서 하나의 가정이 만들어질 수 있는데, 이와 같은 경우에는, 제 1 VTH 읽기 레벨 대신에 제 2 VTH 읽기 레벨을 이용하여 상기 제 1 부분이 판독된다면, 많은 에러들이 검출될 것이다. 또는, 비휘발성 저장 소자들의 상기 제 1 부분이 재 프로그래밍도 역시 경험했다라고 가정할 수 있는데, 이 경우에는 제 2 VTH 읽기 레벨 대신에 제 1 VTH 읽기 레벨을 이용하여 상기 제 1 부분이 판독된다면 많은 에러들이 검출될 것이다. 만일, 상기 가정이 부정확하다면, 비휘발성 저장 소자들의 상기 제 1 부분은 다른 VTH 읽기 레벨을 이용하여 재판독된다. 또한, 상기 제 1 부분의 판독시에 올바르다라고 판별된 VTH 읽기 레벨과 동일한 읽기 레벨을 이용하여, 비휘발성 저장 소자들의 제 2 부분이 초기 판독 시도에서 판독될 수 있다. 비휘발성 저장 소자들의 소정 부분들은 각각의 데이터 페이지를 저장할 수 있고, 그래서 프로그래밍은 페이지마다 진행될 수 있으며, 또한 각 페이지에 대해서 올바른 VTH 읽기 레벨이 판별되며 그리고 이용된다.
또 다른 예에서, 비휘발성 저장 소자의 동작은, 특정 워드 라인에 연관된 비휘발성 저장 소자들을 프로그래밍할 때 제 1 패스 전압이 적어도 하나의 다른 워드 라인에 인가되도록 초기 프로그래밍에서 워드 라인들을 통해 비휘발성 저장 소자를 프로그래밍하는 것과, 그리고 초기 프로그래밍이 완료된 후에, 위의 특정 워드 라인에 연관된 비휘발성 저장 소자를 재 프로그래밍할 때 제 1 패스 전압과는 다른 제 2 패스 전압이 위의 적어도 하나의 다른 워드 라인에 인가되도록 워드 라인을 통해 비휘발성 저장 소자를 재 프로그래밍하는 것을 포함한다. 예를 들어, 제 2 패스 전압은 위에서 언급된 이유로 제 1 패스 전압보다 높을 수 있다.
비휘발성 저장 소자의 동작에 상응하는 방법과 그 시스템을 개시한다. 비휘발성 저장 시스템은 한 세트의 비휘발성 저장 소자들과, 한 세트의 비휘발성 저장 소자를 제어하는 하나 이상의 회로로 구성된다.
도1은 NAND 스트링의 평면도이다.
도2는 도1의 NAND 스트링에 대한 등가 회로도이다.
도3은 도1의 NAND 스트링에 대한 단면도이다.
도4는 3개의 NAND 스트링을 보여주는 회로도이다.
도5는 본 발명의 하나 이상의 실시예를 구현하는 데 사용될 수 있는 예시 플래시 메모리 시스템의 블록도이다.
도6은 메모리 어레이가 블록으로 조직화한 예를 도시하고 있다.
도7A는 소거 상태에서 프로그램 상태로 직접 프로그래밍한 다중 상태 장치에서 임계 전압 분포의 예시 세트를 도시하고 있다.
도7B는 재 프로그래밍한 후의 도7A의 임계 전압 분포의 세트를 도시하고 있다.
도8은 비휘발성 저장 매체를 프로그래밍하기 위한 일련의 프로그래밍 펄스를 도시하고 있다.
도9는 비휘발성 저장 소자의 선형 및 비선형 프로그래밍 레짐(regime)을 도시하고 있다.
도10은 2개의 다른 데이터 페이지에 대한 데이터를 저장하는 다중 상태 저장 소자를 프로그래밍하는 2-패스 기술의 예를 도시하고 있다.
도11A-11C는 제1 단계에서 소거 상태에서 중간 상태로, 그리고 제2단계에서 소거 상태에서 제1 상태 "A", 그리고 중간 상태에서 제2 상태 "B" 또는 제3 상태 "C"로 하는 2-단계 프로그래밍을 갖는 다중 상태 장치에서 임계 전압 분포의 세트 예를 도시하고 있다.
도12는 초기 프로그래밍과 재 프로그래밍을 이용하여 비휘발성 저장 소자의 블록을 프로그래밍하기 위한 프로세스의 한 예를 보여주는 플로우챠트이다.
도13은 일련의 프로그래밍 펄스를 이용하여 비휘발성 저장소자를 프로그래밍하기 위한 프로세스의 한 예를 보여주는 플로우챠트이다.
도14A-F는 초기 프로그래밍과 재 프로그래밍을 위하여 다른 패스 전압을 사용하는 부스팅 기술(boosting techniques)을 도시하고 있다.
도15는 플래그를 이용하여 비휘발성 저장소자의 블록에서 데이터 페이지를 읽기 위한 프로세스의 한 예를 보여주는 플로우챠트이다.
도16은 에러 카운트를 이용하여 비휘발성 저장소자의 블록에서 데이터 페이지를 읽기 위한 프로세스의 한 예를 보여주는 플로우챠트이다.
본 발명을 구현하는데 적절한 비휘발성 메모리 시스템의 일례는 NAND 플래시 메모리 구조를 사용하는데, 이 구조에서는 다수의 트랜지스터들이 NAND 스트링 내의 2개 셀렉트 게이트 사이에 직렬로 배열된다. 도1은 하나의 NAND 스트링을 보여주는 평면도이다. 도2는 도1의 등가 회로도이다. 도1과 2에 도시된 NAND 스트링은 4개의 트랜지스터(100,102,104,106)를 포함하고, 제 1 셀렉트 게이트(120)와 제 2 셀렉트 게이트(122) 사이에 직렬로 샌드위치되어 있다. 셀렉트 게이트(120,122)는 NAND 스트링을 비트 라인 콘택(126)과 소스 라인 콘택(128)에 각각 연결한다. 셀렉트 게이트(120,122)는 콘트롤 게이트(120CG, 122CG)에 각각 적절한 전압을 인가함으로써 제어된다. 트랜지스터(100, 102, 104, 106) 각각은 콘트롤 게이트와 플로팅 게이트를 갖는다. 특히, 트랜지스터(100)는 콘트롤 게이트(100CG)와 플로팅 게이트(100FG)를 갖고, 트랜지스터(102)는 콘트롤 게이트(102CG)와 플로팅 게이트(102FG)를 갖고, 트랜지스터(104)는 콘트롤 게이트(104CG)와 플로팅 게이트(104FG)를 갖고, 그리고 트랜지스터(106)는 콘트롤 게이트(106CG)와 플로팅 게이트(106FG)를 갖는다. 콘트롤 게이트(100CG, 102CG, 104CG, 106CG)는 워드 라인(WL3, WL2, WL1, WL0)에 각각 연결된다. 하나의 가능한 설계에서, 트랜지스터(100, 102, 104, 106)은 각자 저장 소자이며, 또한 셀이나 저장 소자로 불린다. 다른 설계에서, 저장 소자는 다수의 트랜지스터를 가질 수 있고, 도1과 도2에 도시된 것들과 다를 수 있다. 셀렉트 게이트(120)는 드레인 셀렉트 라인(SGD)에 연결되고, 한편 셀렉트 게이트(122)는 소스 셀렉트 라인(SGS)에 연결된다.
도3은 위에서 설명한 NAND 스트링의 단면도이다. NAND 스트링의 트랜지스터들은 P-웰 영역(140)에 형성된다. 각 트랜지스터는 적층 게이트 구조를 갖는데, 적층 게이트 구조는 콘트롤 게이트(100CG,102CG,104CG,106CG)와 플로팅 게이트(100FG,102FG,104FG,106FG)를 포함한다. 플로팅 게이트는 산화막이나 다른 절연막 위의 P-웰 표면에 형성된다. 콘트롤 게이트는 플로팅 게이트 위에 있는데, 콘트롤 게이트와 플로팅 게이트를 분리하는 폴리실리콘간(inter-polysilicon) 절연막을 갖는다. 저장 소자(100,102,104,106)의 콘트롤 게이트는 워드 라인을 형성한다. N+ 도핑층(130,132,134,136,138)은 이웃 저장 소자 사이에 공유되고, 이로인해 저장 소자는 직렬로 다른 저장 소자와 연결되어 NAND 스트링을 형성한다. 이러한 N+ 도핑층은 각 저장 소자의 소스와 드레인을 형성한다. 예를들어, N+ 도핑층(130)은 트랜지스터(122)의 드레인 및 트랜지스터(106)의 소스로 기능하고, N+ 도핑층(132)은 트랜지스터(106)의 드레인 및 트랜지스터(104)의 소스로 기능하고, N+ 도핑층(134)은 트랜지스터(104)의 드레인 및 트랜지스터(102)의 소스로 기능하고, N+ 도핑층(136)은 트랜지스터(102)의 드레인 및 트랜지스터(100)의 소스로 기능하고, 그리고 N+ 도핑층(138)은 트랜지스터(100)의 드레인 및 트랜지스터(120)의 소스로 기능한다. N+ 도핑층(126)은 NAND 스트링의 비트 라인에 연결되고, N+ 도핑층(128)은 다중 NAND 스트링의 공통 소스 라인에 연결된다.
도1-3의 NAND 스트링에서 4개의 트랜지스터를 사용한 것은 단지 하나의 예를 제시한 것인데, 여기 개시한 기술에서 사용된 NAND 스트링은 4개 이하 또는 이상의 저장 소자를 가질 수 있다. 예를들어, 몇몇 NAND 스트링은 8개, 16개, 32개, 64개 또는 그 이상의 저장 소자를 포함한다.
본 발명은 예를들어 Fowler-Nordheim 터널링으로 프로그래밍되고 소거되는 장치에 사용될 수 있다. 본 발명은 또한 실리콘 산화물, 실리콘 질화물 및 실리콘 산화물(ONO)로 구성된 절연체와 같은 3중 절연막을 사용하는 장치에도 응용될 수 있는데, 이는 플로팅 게이트 대신에 전하를 저장한다. ONO로 구성된 3중 절연막은 저장 소자의 채널 위에서 전도성 콘트롤 게이트와 반도체 기판 사이에 샌드위치 된다. 본 발명은 플로팅 게이트 대신에 전하 저장 영역으로서 나노 크리스탈과 같은 전도 물질의 작은 아일랜드(small islands)을 사용하는 장치에도 응용될 수 있다. 그러한 메모리 장치는 플로팅 게이트 기반의 NAND 플래시 장치와 유사한 방식으로 프로그래밍되고 소거될 수 있다.
도4는 3개의 NAND 스트링을 보여주는 회로도이다. NAND 구조를 이용하는 플래시 메모리 시스템의 일반적 구조는 여러 NAND 스트링을 포함할 것이다. 예를들어, 3개의 NAND 스트링(420,440,460)은 보다 많은 NAND 스트링을 갖는 메모리 어레이에서 볼 수 있다. 각 NAND 스트링은 2개의 셀렉트 트랜지스터와 4개의 저장 소자를 포함한다. 예를들어, NAND 스트링(420)은 셀렉트 트랜지스터(422,427)와 저장 소자(423-426)를 포함하고, NAND 스트링(440)은 셀렉트 트랜지스터(442,447)와 저장 소자(443-446)를 포함하고, NAND 스트링(460)은 셀렉트 트랜지스터(462,467)와 저장 소자(463-466)를 포함한다. 각 NAND 스트링은 자신의 셀렉트 트랜지스터(예를들어 셀렉트 트랜지스터 427,447또는 467)에 의해 소스 라인에 연결된다. 셀렉션 라인(SGS)은 소스 측 셀렉트 게이트를 제어하는데 이용된다. 여러 NAND 스트링(420,440 및 460)은 셀렉트 트랜지스터(422,442,462 등)에 의해 각각의 비트 라인(421,441 및 461)에 연결되고, 셀렉트 트랜지스터는 드레인 셀렉트 라인(SGD)으로 제어된다. 다른 실시예에서, 셀렉트 라인은 반드시 공통일 필요는 없다. 워드 라인(WL3)은 저장 소자(423,443 및 463)를 위해서 콘트롤 게이트에 연결된다. 워드 라인(WL2)은 저장 소자(424,444 및 464)를 위해서 콘트롤 게이트에 연결된다. 워드 라인(WL1)은 저장 소자(425,445 및 465)를 위해서 콘트롤 게이트에 연결된다. 워드 라인(WL0)은 저장 소자(426,446 및 466)를 위해서 콘트롤 게이트에 연결된다. 볼 수 있듯이, 각 비트 라인과 각각의 NAND 스트링은 저장 소자 세트 또는 어레이의 칼럼(columns)으로 구성된다. 워드 라인(WL3,WL2,WL1 및 WL0)은 어레이나 세트의 로우(rows)로 구성된다. 각 워드 라인은 로우에서 각 저장 소자의 콘트롤 게이트와 접속한다. 예를들어, 워드 라인(WL2)는 저장 소자(424,444 및 464)를 위하여 콘트롤 게이트에 연결된다. 실제로, 하나의 워드 라인에는 수천 개의 저장 소자가 있을 수 있다.
각 저장 소자는 데이터를 저장할 수 있다. 예를들어, 한 비트의 디지털 데이터를 저장할 때, 저장 소자의 임계 전압(VTH)의 가능 범위는 로직 데이터 "1"과 "0"이 할당되는 2개 범위로 나누어진다. 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호와 미국특허공개 2004/0255090를 참고자료로 원용하는데, 이들은 다중 상태 플래시 저장 소자에 대한 다양한 데이터 인코딩 체계를 설명하고 있다.
NAND 타입 플래시 메모리와 그 동작의 관련 예는 미국특허 제5,386,422호, 5,522,580호, 5,570,315호, 5,774,397호, 6,046,935호, 6,456,528호 및 6,522,580호에 설명되어 있는데, 본 발명은 이들을 참고자료로 원용한다.
플래시 저장 소자를 프로그래밍할 때, 프로그래밍 전압은 저장 소자의 콘트롤 게이트에 인가되고, 그리고 저장 소자에 연관된 비트 라인은 접지되어 있다. 채널의 전자는 플로팅 게이트로 주입된다. 전자가 플로팅 게이트에 축적되면, 플로팅 게이트는 네거티브로 충전되고, 저장 소자의 VTH 는 상승한다. 프로그램 전압을 프로그래밍되는 저장 소자의 콘트롤 게이트에 인가하기 위해서, 프로그램 전압은 적절한 워드 라인에 인가된다. 위에서 설명한 바와같이, 워드 라인은 같은 워드 라인을 공유하는 다른 NAND 스트링 각각에 있는 하나의 저장 소자에도 연결된다. 예를들어, 도4의 저장 소자(424)를 프로그래밍할 때, 프로그램 전압은 저장 소자(444 및 464)의 콘트롤 게이트에도 인가될 것이다.
그러나, 저장 소자에 저장된 전하량의 변동이 일어날 수 있다. 이것은 특정 저장 소자와 그 특정 저장 소자와 어느 정도의 커플링을 가지는 다른 저장 소자, 예를들어 같은 워드 라인이나 비트 라인을 공유하는 저장 소자들을 프로그래밍하고 읽을 때 발생한다. 특히, 저장된 전하량 레벨에서 변동이 일어나는데, 이것은 저장 소자들 사이의 필드 커플링 때문이다. 집적회로 제조기술의 발달에 따라 저장 소자들 사이의 공간이 감소하면서 그 문제는 더 악화된다. 그 문제는 시간을 달리하여 프로그래밍되는 2개 그룹의 이웃하는 저장 소자들 사이에 가장 분명하게 발생한다. 한 그룹의 저장 소자는 한 세트의 데이터에 상응하는 한 레벨의 전하량을 추가하기 위해서 프로그래밍된다. 두 번째 그룹의 저장 소자들이 두 번째 세트의 데이터를 가지고 프로그래밍된 후, 첫 번째 그룹의 저장 소자들로부터 읽혀진 전하량 레벨은 프로그램된 것과 다르게 종종 나타나는데, 이는 첫 번째 그룹의 저장 소자들에 대한 두 번째 그룹의 저장 소자들 전하의 용량성 커플링 때문이다. 이와같이, 커플링 효과는 저장 소자들이 프로그래밍되는 순서에 달려 있으며, 그래서 프로그래밍 중에 워드 라인이 트래버스된다. NAND 스트링은 항상 그런 것은 아니지만 일반적으로 소스 측에서 드레인 측으로 프로그래밍되는데, 소스 측 워드 라인에서 시작하여 한번에 한 워드 라인씩 드레인 측 워드 라인까지 나아간다.
특정 저장 소자에서의 용량성 커플링 효과는 예를들어, 같은 워드 라인에 있는 다른 저장 소자들 및 같은 NAND 스트링에 있는 다른 저장 소자들에 의해 야기된다. 예를들어, 저장 소자(444)는, 워드 라인(WL2)을 따라 교번하는 다른 저장 소자들을 포함하며 한 페이지의 데이터를 저장하는 제 1 그룹의 저장소자들의 일부분일 수 있다. 저장 소자(424) 및 저장 소자(464)는 다른 페이지의 데이터를 저장하는 제 2 그룹의 저장 소자들의 일부일 수 있다. 저장 소자(444) 이후에, 제 2 그룹의 저장 소자들이 프로그래밍될 때, 저장 소자(444)에 대하여 용량성 커플링이 존재할 것이다. 그 커플링은 워드 라인 상에서 직접 이웃하는 저장 소자들로부터 가장 강하다. 여기서, 직접 이웃하는 저장 소자는 저장 소자(424 및 464)이다.
마찬가지로, 같은 NAND 스트링(440) 상에 있는 저장 소자들이 저장 소자(444) 이후에 프로그래밍된다면, 이들의 프로그래밍에 의해서 저장 소자(444)가 영향을 받을 수 있다. 저장 소자(444)의 경우, NAND 스트링 상에서 직접 이웃하는 저장 소자들, 즉 저장 소자(443 및/또는 445)로부터의 커플링이 가장 강하다. 예를들어, NAND 스트링(440)의 저장 소자들이 446,445,444,443의 순서로 프로그래밍되면, 저장 소자(444)는 저장 소자(443)으로부터 커플링에 의한 영향을 받을 수 있다. 일반적으로, 저장 소자(444)에 대해서 대각선으로 배열된 저장 소자들, 즉 저장 소자들(423,463,425 및 465)는 저장 소자(444)에 대해 약 20%의 커플링을 제공하며, 반면 같은 워드 라인 또는 NAND 스트링 상에서 직접 이웃하는 저장 소자들(424와 464, 그리고 443과 445)은 약 80%의 커플링을 제공한다. 커플링은 몇몇 경우에서 저장 소자의 VTH 를 약 0.5V 만큼 변동시키기에 충분하며, 이는 읽기 에러를 유발하기에 충분하고 한 그룹의 저장 소자들의 VTH 분포를 확장시키기에도 충분하다.
도5는 플래시 메모리 시스템의 한 실시예에 대한 블록도인데, 이 시스템은 본 발명의 하나 이상의 실시예를 구현하는데 이용될 수 있다. 다른 시스템과 구현들도 이용될 수 있다. 저장 소자 어레이(502)는 칼럼 콘트롤 회로(504), 로우 콘트롤 회로(506), c-소스 콘트롤 회로(510) 그리고 p-웰 콘트롤 회로(508)에 의해 제어된다. 칼럼 콘트롤 회로(504)는 저장 소자 어레이(502)의 비트 라인에 연결되어, 저장 소자들에 저장된 데이터를 읽어내고, 비트 라인의 전위 레벨을 제어하여 프로그래밍 및 소거를 촉진하거나 제한한다. 로우 콘트롤 회로(506)는 워드 라인에 연결되어 워드 라인 중 하나를 선택하고, 읽기 전압을 인가하며, 칼럼 콘트롤 회로(504)로 제어되는 비트 라인 전위 레벨에 연동된 프로그램 전압을 인가하며, 그리고 소거 전압을 인가한다. c-소스 콘트롤 회로(510)는 저장 소자들에 연결된 공통 소스 라인(도5에서 "c-소스"로 표시)을 제어한다. p-웰 콘트롤 회로(508)은 p-웰 전압을 제어한다.
저장 소자에 저장된 데이터는 칼럼 콘트롤 회로(504)에 의해 판독되어, 데이터 입출력 버퍼(512)를 통해 외부 I/O 라인으로 출력된다. 저장 소자에 저장될 프로그램 데이터는 외부 I/O 라인을 통해 데이터 입출력 버퍼(512)로 입력되고, 칼럼 콘트롤 회로(504)로 전송된다. 외부 I/O 라인은 콘트롤러(518)에 연결된다.
플래시 메모리 장치를 제어하는 명령 데이터는 콘트롤러(518)로 입력된다. 명령 데이터는 플래시 메모리에 어떤 동작이 요청되는지를 알린다. 입력 명령은 상태 머신(516)에 전달되는데, 상태 머신(516)은 콘트롤 회로(515)의 일부분이다. 상태 머신(516)은 칼럼 콘트롤 회로(504), 로우 콘트롤 회로(506), c-소스 콘트롤 회로(510), p-웰 콘트롤 회로(508), 그리고 데이터 입출력 버퍼(512)를 제어한다. 상태 머신(516)은 READY/BUSY 또는 PASS/FAIL 과 같은 플래시 메모리의 상태 데이터를 출력할 수도 있다.
콘트롤러(518)는 퍼스널 컴퓨터, 디지털 카메라, PDA 등과 같은 호스트 시스템에 연결되거나 연결될 수 있다. 콘트롤러(518)는 호스트와 통신하여 명령, 예를들어 메모리 어레이(502)로/부터 데이터를 저장/읽기 위한 명령을 초기화하고, 그리고 그러한 데이터를 제공하거나 수신한다. 콘트롤러(518)는 그러한 명령을 명령 신호로 변환하는데, 명령 신호는 콘트롤 회로(515)의 일부인 명령 회로(514)에 의해 해석되고 실행될 수 있다. 명령 회로(514)는 상태 머신(516)과 통신한다. 콘트롤러(518)는 보통 버퍼 메모리를 포함하는데, 이는 사용자 데이터가 저장 소자 어레이(502)로/부터 쓰여지거나 읽혀지도록 한다.
예시적인 메모리 시스템은 하나의 집적 회로를 갖는데, 이는 콘트롤러(518), 그리고 각각 메모리 어레이와 관련 제어, 입출력 및 상태 머신 회로를 갖는 하나 이상의 집적 회로 칩을 포함한다. 메모리 어레이와 시스템 콘트롤러 회로를 하나 이상의 집적 회로 칩에 함께 통합하는 경향이 있다. 메모리 시스템은 호스트 시스템의 일부로 내장될 수 있고, 착탈가능하게 호스트 시스템에 삽입되는 메모리 카드나 다른 패키지에 포함될 수 있다. 이러한 카드는 예를 들어 콘트롤러를 포함하여 전체 메모리 시스템을 포함할 수도 있으며 혹은, 주변 회로에 연관되는 메모리 어레이만을 포함할 수도 있다(이 경우 콘트롤러 또는 제어 기능은 호스트에 내장된다). 이와 같이, 콘트롤러는 호스트에 내장될 수 있고, 또는 착탈가능한 메모리 시스템에 포함될 수 있다.
몇몇 구현예에서, 도5의 몇몇 구성요소들은 결합될 수 있다. 또한, 다양한 설계예에서, 도5의 저장 소자 어레이(502)를 제외한 하나 이상의 구성요소들은, 관리 회로(managing curcuit)로 간주될 수도 있다. 예를들어, 하나 이상의 관리 회로는 콘트롤 회로, 명령 회로, 상태 머신, 로우 콘트롤 회로, 칼럼 콘트롤 회로, 웰 콘트롤 회로, 소스 콘트롤 회로 및 데이터 I/O 회로 중 임의의 것을 포함할 수도 있으며 혹은 이들의 결합을 포함할 수도 있다.
도6은 도5의 저장 소자 어레이(502)의 예시 구조를 보여주고 있다. NAND 플래시 EEPROM은 1,024개의 블록으로 분할되는 것으로 설명된다. 데이터는 다른 블록에 프로그램될 수 있고 동시에 다른 블록으로부터 읽혀질 수 있다. 소거 동작에서, 각 블록에 저장된 데이터는 동시에 소거된다. 한 설계에서, 블록은 동시에 소거되는 최소 단위의 저장 소자들이다. 이 예의 각 블록에는 짝수 칼럼과 홀수 칼럼으로 나누어지는 8,512개의 칼럼이 있다. 비트 라인도 짝수 비트 라인(BLe)과 홀수 비트 라인(BLo)로 나누어진다. 4개의 저장 소자가 직렬로 연결되어 하나의 NAND 스트링을 구성하는 것으로 도시되어 있다. 4개의 저장 소자가 각 NAND 스트링에 포함되는 것으로 도시되어 있지만, 4개 이상 또는 4개 이하의 저장 소자들이 사용될 수 있다. 보통, 각 NAND 스트링에는 32개 또는 64개 까지의 저장 소자들이 구비될 수 있다. NAND 스트링의 한 단자는 셀렉트 트랜지스터(SGD)를 통해 대응하는 비트 라인에 연결되고, 다른 단자는 셀렉트 트랜지스터(SGS)를 통해 c-소스 라인에 연결된다.
한 배열의 읽기 및 프로그래밍 동작 중에 4,256 저장 소자가 동시에 선택된다. 선택된 저장 소자들은 같은 워드 라인과 같은 비트 라인(예를들어 짝수 또는 홀수)를 갖는다. 그러므로, 하나의 로직 페이지를 구성하는 532 바이트의 데이터는동시에 읽혀지거나 프로그래밍될 수 있고, 한 블록의 메모리는 적어도 8개의 로직 페이지(4개 워드 라인, 각각 짝수 및 홀수 페이지를 가짐) 를 저장할 수 있다. 다중 상태 저장 소자들의 경우, 각 저장 소자는 2비트의 데이터를 저장하는데, 여기서 각 비트는 다른 페이지에 저장되고, 한 볼록은 16개의 로직 페이지를 저장한다. 다른 크기의 블록과 페이지도 사용될 수 있다. 또한, 도5 및 도6과 다른 구조도 사용될 수 있다. 예를들어, 한 설계에서, 비트 라인은 짝수 및 홀수 비트 라인으로 나누지 않아 모든 비트 라인이 동시에(또는 동시가 아니게) 프로그래밍되고 읽혀질 수 있다.
저장 소자들은 p-웰을 소거 전압(예를들어 20V)로 높이고 선택된 블록의 워드 라인을 접지시킴으로써 소거될 수 있다. 소스 및 비트 라인은 플로팅된다. 소거는 전체 메모리 어레이, 개별 블록들, 또는 메모리 장치의 일부인 다른 단위의 저장 소자들에 대해서 실행될 수도 있다. 전자는 저장 소자의 플로팅 게이트에서 p-웰 영역으로 이동하여, 저장 소자의 VTH 가 네거티브가 된다.
읽기 및 검증 동작에서, 셀렉트 게이트(SGD 및 SGS)는 2.5 내지 4.5V 범위의 전압에 연결되고, 선택되지 않은 워드 라인(예를들어, WL2가 선택된 워드 라인일 때 WL0,WL1 및 WL3)은 읽기 패스 전압(보통 4.5 내지 6V 범위의 전압)까지 상승되어 트랜지스터들을 패스 게이트로 동작하게 한다. 선택된 워드라인(WL2)은 각각의 읽기 동작 및 검증 동작에 특정된 레벨인 소정 전압에 연결되는바, 이는 관심있는 저장소자의 VTH 가 이러한 레벨보다 높은지 또는 낮은지를 결정하기 위한 것이다. 예를들어, 2 레벨 저장 소자에 대한 읽기 동작에서, 선택된 워드 라인(WL2)은 접지되고, VTH 가 0V 보다 높은지가 측정된다. 2 레벨 검증 동작에서, 선택된 워드 라인(WL2)은 예를들어 0.8V에 연결되고, VTH 가 적어도 0.8V에 도달했는지가 검증된다. 소스 및 p-웰은 0V이다. 짝수 비트 라인(BLe)으로 가정되는 선택된 비트 라인은 예를들어 0.7V의 레벨로 미리 충전된다. VTH 가 워드 라인 상의 읽기 또는 검증 레벨보다 높으면, 관련 저장 소자에 연관된 비트 라인(BLe)의 전위 레벨은 비도통 저장 소자 때문에 하이 레벨을 유지한다. 한편, VTH 가 읽기 또는 검증 레벨보다 낮으면, 관련 비트 라인(BLe)의 전위 레벨은 예를들어 0.5V 보다 낮은 로우 레벨로 떨어진다. 이는 도통된 저장 소자가 비트 라인을 방전시키기 때문이다. 이렇게 해서, 비트 라인에 연결된 전압 비교 감지 증폭기에 의해서 저장 소자의 상태가 검출된다.
위에 설명된 소거, 읽기 및 검증 동작은 이 분야의 알려진 기술에 따라 실행될 수 있다. 따라서, 설명한 세부 내용의 많은 부분은 당업자가 변경할 수 있다. 이 분야의 다른 소거, 읽기 및 검증 기술도 이용될 수 있다.
위에서 설명한 바와같이, 각 블록은 다수의 페이지로 분할될 수 있다. 한 예로, 페이지는 프로그래밍의 단위이다. 몇몇의 구현에서, 각 페이지는 세그먼트로 분할될 수 있고, 그 세그먼트는 기본적인 프로그래밍 동작으로 한번에 쓰여지는 최소수의 저장 소자들을 포함한다. 하나 또는 그 이상의 데이터 페이지는 보통 한 로우의 저장 소자들에 저장된다. 한 페이지는 하나 또는 그 이상의 섹터를 저장한다. 섹터는 사용자 데이터 및 오버헤드 데이터, 즉 섹터의 사용자 데이터로부터 계산되는 에러정정코드(ECC : Error Correcting Code)와 같은 것을 포함한다. 콘트롤러의 일부는 데이터가 어레이로 프로그래밍될 때 ECC를 계산하고, 또한 데이터가 어레이로부터 읽혀질 때 ECC를 이용하여 그 데이터를 체크한다. 대안적으로, ECC 및/또는 다른 오버헤드 데이터는 이들과 관계된 사용자 데이터와는 다른 페이지 또는 심지어 다른 블록에 저장될 수도 있다. 다른 설계에서, 상태 머신과 같은 메모리 장치의 다른 부분들이 ECC를 계산할 수 있다.
사용자 데이터의 섹터는 보통 512 바이트인데, 이는 마그네틱 디스크 장치의 섹터 사이즈에 대응한다. 오버헤드 데이터는 보통 추가적인 16-20 바이트이다. 블록은 예를들어 8, 32, 64 또는 그 이상의 다수의 페이지를 포함할 수 있다.
재 프로그래밍
프로그래밍 기술이 제공되는데, 여기서 한 세트의 저장 소자들이 초기 프로그래밍되고, 이어서 적어도 한번 재 프로그래밍된다. 예를들어, 그 세트는 일 단위로 소거될 수 있는 한 블록의 저장 소자들일 수 있다. 또는, 그 세트는 반드시 한 단위로 소거되야할 필요는 없는 한 세트의 워드 라인들에 관련될 수 있다. 초기 프로그래밍에서, 저장 소자들의 세트가 프로그래밍된다. 또한, 저장 소자들은 초기 프로그래밍과 재 프로그래밍에서 다른 VTH 레벨로 프로그래밍될 수 있다. 어떤 프로그래밍 기술도 초기 프로그래밍과 재 프로그래밍 과정에 이용될 수 있고, 그러한 프로그래밍 기술에는 도7A 및 B, 도10, 그리고 도11A-C와 관련하여 아래에 설명하는 것들이 포함된다. 저장 소자들의 세트가 초기 프로그래밍에서 프로그래밍된 후, 재 프로그래밍이 이루어지는데, 여기서 상기 세트의 저장 소자들은 예를들어 원하는 최종 VTH 까지 프로그래밍된다. 저장 소자들은 초기 프로그래밍과 재 프로그래밍 사이에서는 소거되지 않는다.
저장 소자로부터 데이터를 읽을 때, 하나의 방법으로서, 초기 프로그래밍에서 단지 한 번만 프로그래밍된 저장 소자에 대해 제1 세트의 VTH 읽기 레벨이 사용될 수 있다. 한편, 제2 세트의 VTH 읽기 레벨은 재 프로그래밍도 또한 경험한 저장 소자들에 대해 사용될 수 있다. 제2 세트의 대응 값은 제1 세트보다 높을 수 있다. 대안적으로, 각 경우에, 같은 세트의 VTH 읽기 레벨이 사용될 수 있다. 또한, 임의의 이웃한 2개의 VTH 상태들 사이의 전압 마진은, 커플링, 프로그램 혼란(disturb), 판독 혼란, 저장소자 및 시스템 노이즈, 오버슈트, 프로그래밍 노이즈와 같은 많은 기생 현상들 및 그리고 장시간 전하 유지를 감당할 수 있을 정도로 커야 한다. 다른 기생 현상으로 데이터 패턴 민감 효과가 있는데, 이는 특정 데이터 값, 예를들어 이전에 프로그래밍된 저장 소자의 VTH 값의 영향에 관한 것이다. 재 프로그래밍은 이웃하는 VTH 상태들 사이에서 마진이 감소하는 것을 허용하는데, 이는 적어도 커플링과 오버슈트가 감소될 것이기 때문이고, 그리고 아직 재 프로그래밍되지 않은 페이지는 곧 재 프로그래밍될 것인바 따라서, 프로그래밍되지 않은 페이지에 대한 장시간 유지 문제를 위해 그 어떤 추가 마진도 필요로 하지 않는다. 또한, 재 프로그래밍된 페이지는 보다 치밀한 VTH 분포를 제공하는데, 이는 그러한 페이지에 대한 마진에 여유를 갖게 한다(open up). 최종 효과는 메모리 VTH 윈도우가 감소될 수 있고, 이러함으로써 프로그래밍 전압을 작게 하고 프로그램 혼란을 줄일 수 있다.
도7A는 소거 상태에서 프로그램 상태로 직접 프로그래밍하는 다중 상태 장치의 VTH 분포 세트의 예를 도시하고 있다. 이 경우, 각 저장 소자는 E, A, B 및 C로 표현된 4개 데이터 상태로 2 비트의 데이터를 저장한다. E는 소거된 저장 소자에 대한 제1 VTH 분포를 나타내고, 반면 A,B 및 C는 프로그램된 저장 소자에 대한 3개의 VTH 분포를 나타낸다. 하나의 설계예에서, E 분포 내의 VTH 값들은 네거티브이고, A,B 및 C 분포의 VTH 값들은 포지티브이다. 각각 다른 VTH 범위는 데이터 비트들의 세트에 대한 기결정된 값들에 대응한다. 저장 소자에 프로그래밍된 데이터와 그 저장 소자의 VTH 레벨들 사이의 구체적인 관계는, 그 저장 소자에 대해 채택된 데이터 인코딩 체계에 의존한다. 예시적인 일례에서는, "11"을 VTH 범위 E(상태 E)에 할당하고, "10"을 VTH 범위 A(상태 A)에, "00"을 VTH 범위 B(상태 B)에, 그리고 "10"을 VTH 범위 C(상태 C)에 할당한다. 그러나, 다른 설계예에서 다른 체계가 사용된다.
3개의 읽기 기준 전압, 즉 Vra1, Vrb1 그리고 Vrc1의 세트가 초기 프로그래밍 후에 저장 소자로부터 데이터를 읽기 위해 사용된다. 특정 저장 소자의 VTH 가 Vra1, Vrb1 그리고 Vrc1 보다 큰지 작은지를 테스트함으로써, 시스템은 저장 소자의 상태를 결정할 수 있다. 초기 프로그래밍 중에 사용되는 3개의 검증 기준 임계 전압, 즉 Vva1, Vvb1 그리고 Vvc1 의 세트가 또한 표시된다. 상태 A,B 또는 C로 저장 소자를 프로그래밍할 때, 시스템은 저장 소자가 Vva1, Vvb1 또는 Vvc1 각각보다 크거나 같은 VTH 를 가지고 있는지를 테스트할 것이다.
풀(full) 시퀀스 프로그래밍으로 알려진 한 일례에서, 저장 소자는 소거 상태 E로부터 프로그램된 상태 A,B 또는 C의 어떤 것으로 직접 프로그래밍될 수 있는데, 이는 곡선 화살표로 도시되어 있다. 프로그램될 예정인 소정 집단의 저장 소자들(예컨대, 블록)은 먼저 소거될 수 있으며 따라서, 그 집단 내의 모든 저장 소자들은 소거 상태 E에 있게 된다. 몇몇 저장 소자들이 상태 E에서 상태 A로 프로그래밍되는 동안, 다른 저장 소자들은 상태 E에서 상태 B, 및/또는 상태 E에서 상태 C로 프로그래밍된다.
언급한 대로, 커플링과 다른 효과들은 특정 저장 소자의 VTH 를 상승시키는 경향이 있고, 이것은 예를들어 블록 내의 한 세트의 저장 소자들의 VTH 분포를 상승시키고 확장시킨다. 이것은 도7B와 비교하여 도7A의 상대적으로 넓은 VTH 분포를 통해 알 수 있다.
도7B는 재 프로그래밍 후에 도7A의 VTH 분포 세트의 예를 도시하고 있다. 재 프로그래밍 중에는, 제 2 세트의 VTH 검증 레벨들 즉, Vva2, Vvb2 그리고 Vvc2가 이용될 수 있는바, 이들 각각은 Vva1, Vvb1 그리고 Vvc1 보다 예컨대 0.4V 만큼 더 크다. 초기 프로그래밍과 재 프로그래밍 사이의 각 상태의 검증 전압에서의 오프셋은, 메모리 특성(characterization)을 통해 결정될 수 있다. 예를 들어, 오프셋은 각 상태의 임계 전압 분포의 약 절반일 수 있다. 그러므로, 상태 "A"의 임계 전압 분포가 보통 0.8V 폭이면, O.4V의 오프셋이 사용될 수 있다. 따라서, Vva1이 0.6V이면, Vva2는 1.0V가 될 수 있다. 검증 레벨 사이의 증분은 각각의 상태에 대해 동일할 필요는 없다. 재 프로그래밍 후, 각각의 상태에 대한 VTH 분포의 하한은, 점점 더 높아지는 임계 전압 검증 레벨에 따라 위쪽으로 이동되며, 따라서 VTH 분포는 더욱 치밀해진다. 이와같이, 한 세트의 저장 소자들은 초기에 프로그램될 수 있고, 그리고 초기 프로그래밍이 완료된 후에 그 세트의 저장 소자들은 도7B의 치밀한 VTH 분포를 얻기 위하여 재 프로그래밍될 수 있다.
특히, 재 프로그래밍은 커플링이 야기하는 각 상태의 VTH 값 확산을 감소시키는바, 이는 초기 프로그래밍 중에 추가되는 양과 비교하여 더 적은 양의 전하가 저장 소자에 추가되기 때문이다. 게다가, 커플링 때문에, 저장 소자의 VTH 가 저장 소자가 원래 프로그램되어 있어서 초기 프로그램 중에 록아웃(lockout)되어 있을 때보다 지금 더 높다면, 저장 소자는 록아웃되기 전에 재 프로그래밍 중에 더 적게 프로그래밍하는 것을 필요로 할 것이다. 또한, 특정 저장 소자의 이웃들은 재 프로그래밍 중에 그들의 VTH 값에서 커플링이 야기하는 상당한 정도의 변동을 겪지는 않을 것이다. 그 결과, 저장 소자는 재 프로그래밍에서 원하는 최종 VTH 로 보다 정확하게 프로그래밍될 수 있다. 재 프로그래밍은, 워드 라인 사이의 커플링이든, 비트 라인 사이의 커플링이든, 또는 대각선 방향의 이웃하는 저장 소자들 사이의 커플링이든 모든 종류의 커플링 효과를 완화시킨다. 더구나, 저장 소자가 프로그래밍 동작의 불일치로 인해 또는 최종 검증 동작에 연관된 노이즈로 인해 과도-프로그래밍(over-programming)된다면, 원하는 최종 상태에 도달하기 위해서 재 프로그래밍 중에 더 적은 개수의 프로그래밍 펄스들을 필요로 할 것이다. 재 프로그래밍은 프로그래밍되는 각 저장 소자에 적은 양의 전하를 위치시키기만 할 것이다. 재 프로그래밍 중의 VTH 변화가 적기 때문에, 록아웃 이벤트는 통상적으로 더 일찍 발생할 것이며 그리고 초기 프로그래밍 동안보다 더 낮은 콘트롤 게이트 프로그램 펄스 전압에서 발생할 것이다. 재 프로그래밍의 이점은 도8과 9를 통해 더 이해할 수 있다.
도8은 비휘발성 저장소자를 프로그래밍하기 위한 일련의 프로그래밍 펄스들을 도시하고 있다. 보통의 프로그래밍에서, 프로그래밍 전압(Vpgm)은 일련의 펄스로 저장 소자의 콘트롤 게이트에 인가된다. 일례로서, 펄스들의 크기는 각각의 연속적인 펄스들마다 소정의 스텝 사이즈(예컨대 0.4V) 만큼 증가된다. Vpgm는 플래시 메모리 소자의 콘트롤 게이트(또는 몇몇 경우에는 스티어링 게이트)에 인가된다. Vpgm는 시간에 따라 일정 크기로 증가하는 일련의 펄스로 제공된다. 프로그램 펄스 사이에서는, 검증 동작이 실행된다. 가령, 한 워드 라인 상의 특정 저장 소자들과 같이, 병렬로 프로그래밍되는 저장소자들의 세트의 각 저장소자의 프로그래밍 레벨은, 연속적인 프로그래밍 펄스들 사이에서 판독되는바, 이는 상기 프로그래밍 레벨과 그 저장소자가 프로그래밍될 예정인 검증 레벨이 같거나 혹은 더 큰지를 결정하기 위한 것이다. 다중 상태 플래시 메모리 소자의 어레이의 경우, 검증 단계는 저장 소자가 그것의 데이터-관련 검증 레벨에 도달했지는지를 결정하기 위하여 저장 소자의 각 상태에 대해 수행된다. 예를 들어, 4개 상태의 데이터를 저장할 수 있는 다중 상태 메모리 소자는 3개의 비교 포인트에 대해 검증 동작을 실행할 필요가 있을 수 있다.
소정 개수의 펄스들(펄스들의 개수는 통상적으로 고정된다) 이후에, 저장소자가 원하는 프로그램 레벨에 도달하지 못하면, 에러 상태가 선언된다. 초기 값을 포함하는 Vpgm의 크기, 전압 스텝 사이즈의 크기, 및 에러 상태를 선언하기 전에 인가되어야 하는 펄스들의 최대 개수를 선정하는 것은 여러 팩터들 사이에서의 타협을 수반한다. 특히, 초기 값이나 스텝 사이즈가 너무 크다면, 몇몇 메모리 소자들은 과도-프로그래밍될 수 있고 그 결과 부정확한 VTH 로 이어질 것이며, 반면에 초기 값이나 스텝 사이즈가 너무 작다면 프로그래밍 시간이 길어질 것이다. 통상적으로, 비휘발성 메모리의 사용자들은 메모리가 빨리 프로그래밍되기를 원한다. 또한, 상이한 메모리 소자들을 원하는 상태로 프로그래밍하는데 필요한 펄스들의 개수도 서로 다를 수 있다. 더 느린 메모리 소자는 보다 많은 펄스들을 필요로 할 것이며, 반면에 빠른 메모리 소자는 더 적은 개수의 펄스들을 필요로 할 것이다. 합격 수율(die-sort yield)이 합당할 정도로 충분한 마진 혹은 예비(cushion)를 획득하기 위해서, 비교적 큰 개수의 Vpgm 펄스들이 허용되는 것이 일반적이다. 예를 들면 90nm 디바이스에서, 비록 다중 상태 메모리 디바이스의 최상위 페이지는 18개 이내의 펄스들로 프로그래밍될 수 있지만, 펄스들의 최대 허용 개수는 예컨대 24로 설정될 수 있는데, 이는 6개 펄스들 만큼의 마진을 제공한다.
예를 들어, 초기 프로그래밍에서, 특정 저장 소자가 검증 레벨에 도달하고 그리고 16번째 프로그램 펄스에서 더 이상의 Vpgm 펄스를 수신하는 것이 록아웃되는 경우를 가정하자. 각각의 Vpgm 펄스를 구비한 저장 소자의 임계 전압(△VTH)의 변화는 도9를 참조하여 이해될 수 있는데, 도9는 평균적인 비휘발성 저장 소자의 선형 프로그래밍 레짐(regime) 및 비선형 프로그래밍 레짐을 도시한다. 초기 Vpgm 펄스들 동안에, 저장 소자는 비선형 레짐에 있는데, 여기서 VTH 의 증가는 프로그래밍 펄스들의 개수에 대해서 비선형이다. 근본적으로, 콘트롤 게이트에 인가되는 전압은 터널링을 야기할 만큼 충분하지 않다. 추가 Vpgm 펄스들이 인가됨에 따라, 선형 프로그래밍 레짐에 도달할 때까지 △VTH 는 천천히 증가하며, 선형 프로그래밍 레짐에서 △VTH 는 이후의 Vpgm 펄스들에 대해 거의 일정해진다. 선형 프로그래밍 레짐에서는, 이론적으로는 Vpgm에서 1V가 증가하면 VTH 에서 1V가 증가한다. 프로그래밍 노이즈와 읽기 노이즈는 VTH 에서의 증가량을 랜덤화하는 경향이 있다. 또한, 공핍 효과(depletion effects)는 선형 레짐의 △VTH 를 Vpgm의 1V 증가당 1V보다 적은 값으로 감소시키는 경향이 있다. 예를들어, 선형 레짐에서, △VTH /△Vpgm 은 0.8에 가까울 수 있다. 그럼에도 불구하고, 일단 선형 레짐에서는, 저장 소자는 초기 프로그래밍 동안에 각각의 추가 Vpgm 펄스로 인해 록아웃 VTH (검증 레벨)에 빠르게 도달한다. 프로그래밍 속도가 보다 빠른 저장 소자는 더 느린 저장 소자보다 더 빨리 선형 레짐에 도달할 것이다. Vpgm의 시작값에 따라, 대단히 빠른 몇몇 저장 소자들은, 속도가 떨어져 선형 레짐에 도달할 때까지, 처음의 몇몇개 Vpgm 펄스들에 대해 훨씬 빠른 속도로 프로그래밍될 수 있다. Vpgm의 시작값은 이 현상을 피할만큼 충분히 낮게 설정되는 것이 바람직하다.
재 프로그래밍 중에, 저장 소자의 VTH 는 비교적 적은 값, 예를들어 0.4V 만큼만 증가할 필요가 있다. 일반적으로, 저장 소자는 재 프로그래밍 동안에 비선형 레짐에 있게 될 것이다. 대부분의 경우, 초기 프로그래밍에서 보다 재 프로그래밍에서 더 높은 록아웃 VTH 에 도달하기 위해서는, 하나 이상 적은 개수의 프로그래밍 펄스들이 필요할 것으로 예상된다. 주어진 일례에서, 저장 소자는 재 프로그래밍 동안 15번째 Vpgm 펄스에서 록아웃 VTH 에 도달하는데, 이는 초기 프로그래밍 보다 한개의 펄스만큼 더 이르다.
예를 들어, 상기 일례에서, 초기 프로그래밍과 재 프로그래밍에서 각각 테이블 1과 2에 표시한 Vpgm으로 VTH 가 변한다고 가정하자. 저장 소자는 초기 프로그래밍의 경우 -2V의 VTH 를 갖는 상태 E로부터 1.1V의 록아웃 VTH 를 갖는 상태 A(Vva1, 도7A)로 프로그래밍될 것이며 그리고 재 프로그래밍의 경우 1.3V의 록아웃 VTH 를 갖는 상태 A(Vva2, 도7B)로 프로그래밍될 것이다. 간략화를 위해서, 상기 일례에서 Vpgm의 스텝 사이즈는 0.1V 이다. 도시되는 바와 같이, 초기 프로그래밍에서는 저장소자의 VTH 가 처음으로 1.1V를 초과하는 때인 16번째 펄스 이후에 저장소자가 록아웃된다. 재 프로그래밍에서는 저장소자의 VTH 가 처음으로 1.3V를 초과하는 때인 15번째 펄스 이후에 저장소자가 록아웃된다.
테이블 1
Vpgm 펄스의 개수
VTH (V) 펄스 사이의(pulse-to-pulse)의 △VTH (V)
1-12 -2 0
13 -1.5 0.5
14 -0.75 0.75
15 0.25 1.0
16 1.25 1.0
테이블 2
Vpgm 펄스의 개수 VTH (V) 펄스 사이(pulse-to-pulse)의 △VTH (V)
1-14 1.25 0
15 1.35 0.1
이와같이, 재 프로그래밍 중에 비 선형 레짐에서 동작하면서, 그 효과는 더 적은 Vpgm 스텝 사이즈를 사용하는 것과 유사한데, 이는 VTH 가 초기 프로그래밍에서보다 더 적은 단계로 원하는 값까지 다가가기 때문이다. 이는 오버슈트를 회피하고 더 섬세한 VTH 의 제어를 가능케 한다. 그 결과, 보다 치밀하고 보다 정확한 VTH 분포가 얻어질 수 있다.
사용될 수 있는 프로그래밍 기법들의 추가적 일례는 도10과 도11A-C에서 설명된다.
도10은 2개의 다른 데이터 페이지, 즉 하부 페이지와 상부 페이지에 대해 데이터를 저장하는 다중 상태 저장 소자를 프로그래밍하는 2-패스 기술의 예이다. 4개 상태, 즉 상태 E(11), 상태 A(10), 상태 B(00), 그리고 상태 C(01)가 도시되어 있다. 상태 E에 대해, 양 페이지는 "1"를 저장한다. 상태 A에 대해, 하부 페이지는 "0"을 저장하고, 상부 페이지는 "1"를 저장한다. 상태 B에 대해, 양 페이지는 "0"을 저장한다. 상태 C에 대해, 하부 페이지는 "1"을 저장하고, 상부 페이지는 "0"을 저장한다. 특정 비트 패턴이 각 상태에 할당되어 있지만, 다른 비트 패턴이 할당될 수도 있다. 처음 프로그래밍 패스에서, 저장 소자의 VTH 레벨은 하부 로직 페이지로 프로그래밍되는 비트에 따라 설정된다. 그 비트가 로직 "1"이면, VTH 는 변하지 않은데, 이는 이미 소거된 결과로서의 적절한 상태에 있기 때문이다. 그러나, 프로그래밍되는 비트가 로직 "0"이면, 저장 소자의 임계 레벨은 화살표 1010으로 표시한 바와같이 상태 A로 증가된다.
두 번째 패스에서, 저장 소자의 VTH 레벨은 상부 로직 페이지로 프로그래밍되는 비트에 따라 설정된다. 상부 로직 페이지 비트가 로직 "1"을 저장하는 것이라면, 프로그래밍은 일어나지 않는다. 이는 저장 소자가 상태 E 또는 A에 있기 때문인데, 여기서 각 상태는 하부 페이지 비트의 프로그래밍에 의존하고 "1"의 상부 페이지 비트를 캐리한다(carry). 상부 페이지 비트가 로직 "0"으로 되면, VTH 는 변동된다. 첫 번째 단계의 결과로 저장 소자가 소거 상태 E로 남아 있다면, 두 번째 단계에서 저장 소자가 프로그래밍되며 따라서 화살표 1030으로 도시된 바와 같이 VTH 가 증가되어 상태 C 내에 있게 된다. 저장 소자가 첫 번째 프로그래밍 패스의 결과로 상태 A로 프로그래밍되면, 화살표 1020으로 표시한 바와같이 VTH 가 상태 B 내에 있도록 두 번째 단계에서 상기 저장소자는 더 프로그래밍된다. 두 번째 패스의 결과는, 하부 페이지에 대한 데이터를 변화시키지 않으면서 상부 페이지에 대해 로직 "0"을 저장하도록 지정된 상태로 저장 소자를 프로그래밍하는 것이다. 초기 프로그래밍과 재 프로그래밍 모두에서 2개의 패스들 둘다 발생한다.
일례에서, 전체 페이지를 채우기에 충분한 데이터가 쓰여진다면, 풀 시퀀스 쓰기를 수행하도록 시스템이 셋업될 수 있다. 하나의 전체 페이지에 대해 충분한 데이터가 쓰여지지 않는다면, 프로그래밍 프로세스는 수신된 데이터를 가지고 하부 페이지를 프로그래밍할 수 있다. 후속 데이터가 수신되면, 시스템은 상부 페이지를 프로그래밍할 것이다. 또 다른 일례에서, 시스템은 하부 페이지를 프로그래밍하는 모드에서 쓰기를 시작할 수 있고, 한 워드 라인의 저장 소자들 모두를 또는 대부분을 채우기에 충분한 데이터가 후속으로 수신된다면 풀 시퀀스 프로그래밍 모드로 전환할 수 있다. 이러한 접근의 상세한 내용은 Sergy A. Gorobets와 Yan Li가 발명자이며 2004년 12월 14일자로 미국에 출원된 미국특허출원 11/013,125 "Pipelined Programming of Non-Volatile Momories Using Early Data"에 개시되어 있는데, 본 발명은 이를 참고자료로 원용한다.
일단 초기 프로그래밍이 완료되면, 도10의 비교적 넓은 VTH 분포는 도7A의 그것과 유사하다. 그 결과, 재 프로그래밍이 수행될 수 있고, 이것에 의해 도10의 비교적 넓은 VTH 분포를 도7B의 분포와 유사하게 치밀화시킬 수 있다.
도11A-11C는 비휘발성 메모리를 프로그래밍하는 다른 프로세스를 도시하고 있는데, 이는 이전 페이지에 대해 이웃하는 저장 소자에 기입하는 것에 이어서 어떤 특정 저장 소자에 대해서 특정 페이지와 관련하여 그 특정 저장 소자에 기입함으로써 플로팅 게이트 대 플로팅 게이트 커플링을 줄인다. 도시된 프로세스는 초기 프로그래밍과 재 프로그래밍 둘 모두에 대해 수행된다.
한 구현 예에서, 비휘발성 저장 소자의 각각은 4개 데이터 상태를 이용하여 2비트 데이터를 저장한다. 예를 들어, 상태 E는 소거된 상태이고 상태 A,B 및 C는 프로그램된 상태라고 하자. 상태 E는 데이터 11를 저장하고, 상태 A는 데이터 01를 저장하고, 상태 B는 데이터 10을 저장하고, 그리고 상태 C는 데이터 00을 저장한다. 이것은 비-그레이 코딩의 한 예인데, 왜냐하면 두 비트 모두 이웃 상태 A와 B 사이에서 변하기 때문이다. 데이터를 물리적 데이터 상태로 엔코딩하는 다른 방법도 사용될 수 있다. 각 저장 소자는 2개의 데이터 페이지로부터의 비트들을 저장한다. 참고 목적으로, 이들 데이터 페이지는 상부 페이지와 하부 페이지로 호칭될 것이지만 다른 이름으로 호칭될 수도 있다. 상태 A에 대해, 상부 페이지는 비트 0을 저장하고 하부 페이지는 비트 1을 저장한다. 상태 B에 대해, 상부 페이지는 비트 1을 저장하고 하부 페이지는 비트 0을 저장한다. 상태 C에 대해, 2 페이지 모두는 비트 데이터 0을 저장한다. 프로그래밍 프로세스는 초기 프로그래밍과 재 프로그래밍 모두에서 일어나는 2 단계를 갖는다. 첫 번째 단계에서, 하부 페이지가 프로그래밍된다. 하부 페이지가 데이터 1을 유지하면, 저장 소자 상태는 상태 E로 유지된다. 데이터가 0으로 프로그래밍되면, 저장 소자의 VTH 는 저장 소자가 상태 B'로 프로그래밍되도록 상승한다. 도11A는 저장 소자를 상태 E에서 상태 B'로 프로그래밍하는 것을 보여주는데, 상태 B'는 중간 상태 B를 나타낸다. 그러므로, 검증 포인트는 Vvb'로 도시되고, 그것은 도11C에 도시된 것처럼 Vvb1보다 낮다.
한 설계에서, 저장 소자가 상태 E에서 상태 B'로 프로그래밍된 후, 이웃 워드 라인 상에 있는 그것의 이웃 저장 소자는 그것의 하부 페이지에 대해서 프로그래밍된다. 이웃 저장 소자를 프로그래밍한 후, 플로팅 게이트 대 플로팅 게이트 커플링 효과는 고려 중인 상태 B'에 있는 저장 소자의 외관상(겉보기)(apparent) VTH 를 상승시킬 것이다. 이것은 상태 B'에 대한 VTH 분포를 도11B에 도시된 것으로 넓히는 효과를 가질 것이다. VTH 분포의 뚜렷한 확장은 상부 페이지를 프로그래밍할 때 적어도 부분적으로 개선될 것이다.
도11C는 상부 페이지를 프로그래밍하는 프로세스를 도시하고 있다. 저장 소자는 소거 상태 E에 있고, 상부 페이지가 1로 유지되고 있으면, 저장 소자는 상태 E에 남아 있게 될 것이다. 저장 소자가 상태 E에 있고, 그것의 상부 페이지 데이터가 0으로 프로그로래밍되면, 저장 소자의 VTH 는 상승되어 저장 소자가 상태 A에 있게 된다. 저장 소자가 중간 VTH 분포를 갖는 상태 B'에 있고 상부 페이지 데이터가 1인 경우, 저장 소자는 최종 상태 B로 프로그래밍될 것이다. 저장 소자가 중간 VTH 분포를 갖는 상태 B'에 있고 상부 페이지 데이터가 데이터 0으로 되면, 저장 소자의 VTH 는 상승되어 저장 소자는 상태 C에 있게 된다. 도11A-C에 도시된 프로세스는 플로팅 게이트 대 플로팅 게이트 커플링 효과를 줄이는데, 이는 단지 이웃 저장 소자의 상부 페이지 프로그래밍이 특정 저장 소자의 겉보기(apparent) VTH 에 영향을 미칠 것이다. 다른 상태 코딩의 예는 상부 페이지 데이터가 1일 때 중간 VTH 분포로부터 상태 C로 이동시키고, 그리고 상부 페이지 데이터가 0일 때 상태 B로 이동시키는 것이다. 도11A-C가 4개 데이터 상태와 2 페이지 데이터에 대한 예를 제공하고 있지만, 그 개념은 4개 상태보다 많거나 적은 그리고 2 페이지보다 많거나 적은 경우의 다른 구현예에도 적용될 수 있다. 여러 프로그래밍 체계와 플로팅 게이트 대 플로팅 게이트 커플링에 대한 상세한 내용은 2005년 4월 5일에 출원된 미국특허출원 11/099,133 "Compensating For Coupling During Read Operations of Non-Volatile Memory"에 개시되어 있다.
도11A-C의 프로그래밍 기술이 커플링 효과를 줄이기는 하지만, 몇몇 커플링은 여전히 영향을 미치는데, 이는 이웃 저장 소자의 상부 페이지 프로그래밍 때문이다. 따라서, 도11C의 VTH 분포는 필요보다 훨씬 더 넓다. 이를 처리하기 위해, 일단 초기 프로그래밍이 완료되면, 재 프로그래밍이 수행될 수 있는데, 이는 도7B의 그것과 유사하게 보다 치밀한 VTH 분포를 낳는다.
도12는 초기 프로그래밍과 재 프로그래밍을 이용하여 비휘발성 저장 소자의 블록을 프로그래밍하기 위한 프로세스의 일 예를 설명하는 플로우 챠트이다. 프로세스가 한 블록의 저장 소자들에 대해 설명되고 있지만, 이것은 어떤 세트의 저장 소자들에 대해서도 적용가능하다. 단계 1200에서, 데이터를 저장하기 위한 명령에 응답하는 것과 같이, 한 블록에 대한 초기 프로그래밍이 시작한다. 단계 1205에서, 첫 번째의 하부 세트의 임계 전압(VTH) 검증 레벨, 즉 Vva1, Vvb1 및 Vvc1(도7A)은 예를들어 그것들을 콘트롤러의 워킹 메모리 내로 로딩함으로써 이용된다. 초기 프로그래밍과 재 프로그래밍 중에 다른 패스 전압의 사용은 도14A-F를 참조하여 아래에서 더 설명된다. 단계 1201에서, 블록 내의 첫 번째 페이지 데이터가 프로그래밍되고, 그 결과로 단계 1215에서 플래그 비트(페이지 플래그 1)이 그 페이지에 대해 설정된다. 한 예에서, 페이지 플래그는 단계 1210에서 첫 번째 페이지 데이터를 프로그래밍하는 중에 설정될 수 있다.
가능한 예로서, 하나 이상의 플래그와 같은 정보는 블록의 소정 부분들(가령, 페이지들)의 프로그래밍 상태를 추적하는데 사용될 수 있다. 그러한 플래그는 일종의 프로그래밍 상태 정보이다. 프로그래밍 상태 정보는 어떤 페이지가 재 프로그래밍될 필요가 있는지 그리고 어떤 페이지가 건너뛸 수 있는지를 콘트롤러가 결정할 수 있도록 페이지가 프로그래밍 및/또는 재 프로그래밍을 겪었는지를 나타낼 수 있다. 플래그는 원하는 정보를 전달하기 위해서 충분한 정밀도(granularity)를 가져야 한다. 예를들어, 페이지 당 한 비트는 단지 하나의 재 프로그래밍 사이클만 존재할 때 재 프로그래밍이 그 페이지에 대해 일어났는지를 나타내는데 충분하다. 플래그는 예를들어 페이지가 저장되는 워드 라인의 저장 소자들 중의 하나에 저장될 수 있다. 각 페이지에 대한 플래그 또는 플래그들은 한 비트 또는 한 세트의 비트일 수 있다.
추가적으로 또는 대안적으로, 블록 레벨의 플래그는 재 프로그래밍이 그 블록에 대해 또는 전체로서 다른 유닛의 저장 매체들에 대해 완료되었는지를 나타내는데 제공될 수 있다. 한 예에서, 블록 플래그는 2 비트일 수 있는데, 여기서 한 비트는 초기 프로그래밍이 완료되었는지를 나타내고 다른 비트는 재 프로그래밍이 완료되었는지를 나타낸다. 2회 이상의 재 프로그래밍이 수행된다면, 추가 비트는 각각의 추가 재 프로그래밍에 대해 사용될 수 있다. 블록 플래그는 블록 플래그가 프로그램된 블록의 외부에 저장될 때 사용될 수 있다.
일반적으로, 한 블록에서 첫 번째와 마지막 프로그램된 페이지의 페이지 플래그가 한 블록이 프로그램되었는지 재 프로그램되었는지를 나타내는데 사용될 수 있을 때, 블록 플래그는 필요하지 않다. 예를들어, 첫 번째 프로그램된 페이지의 첫 번째 비트, 그리고 마지막 프로그램된 페이지의 상응하는 첫 번째 비트는 초기 프로그래밍이 일어났는지를 나타낼 수 있다. 첫 번째 프로그램된 페이지의 비트가 초기 프로그래밍이 해당 첫 번째 프로그램된 페이지에 대해 수행되지 않았음을 나타낸다면, 초기 프로그래밍이 해당 블록의 어떤 부분에 대해서도 수행되지 않았다고 결론지을 수 있다. 초기 프로그래밍이 첫 번째 프로그램된 페이지에 대해 수행되고 마지막 페이지에 대해서는 수행되지 않았음을 비트가 나타내고 있다면, 해당 블록의 한 부분에 대해 초기 프로그래밍이 수행되었다고 결론지을 수 있다. 마지막 프로그램된 페이지의 비트가 그 마지막 페이지에 대해 초기 프로그래밍이 수행되었음을 나타내고 있다면, 초기 프로그래밍이 전체 블록에 대해 수행되었다고 결론지을 수 있다.
유사하게, 첫 번째 프로그램된 페이지의 두 번째 비트, 그리고 마지막 프로그램된 페이지의 상응하는 두 번째 비트가 재 프로그래밍이 일어났는지를 나타낼 수 있다. 첫 번째 프로그램된 페이지의 비트가 재 프로그래밍이 해당 첫 번째 프로그램된 페이지에 대해 수행되지 않았음을 나타낸다면, 재 프로그래밍이 해당 블록의 어떤 부분에 대해서도 수행되지 않았다고 결론지을 수 있다. 재 프로그래밍이 첫 번째 프로그램된 페이지에 대해 수행되고 마지막 페이지에 대해서는 수행되지 않았음을 비트가 나타내고 있다면, 해당 블록의 한 부분에 대해 재 프로그래밍이 수행되었다고 결론지을 수 있다. 마지막 프로그램된 페이지의 비트가 그 마지막 페이지에 대해 재 프로그래밍이 수행되었음을 나타내고 있다면, 재 프로그래밍이 전체 블록에 대해 수행되었다고 결론지을 수 있다.
전체 블록이 아직 재 프로그램되지 않았을 때는 낮은 읽기 전압이 사용되고, 전체 블록이 재 프로그램된 경우에는 높은 읽기 전압이 사용된다. 블록이 부분적으로 재 프로그램될 때, 페이지를 읽는데 사용하는 적당한 워드 라인 읽기 전압을 결정하기 위하여 콘트롤러는 바이너리 인코딩된 플래그 저장 소자의 바이너리 읽기를 수행할 수 있다. 한 예에서, 재 프로그램되지 않은 페이지에 대해서는 낮은 읽기 전압이 사용되고, 재 프로그램된 페이지에 대해서는 높은 읽기 전압이 사용된다.
단일 다중 레벨 저장 소자의 다른 상태 각각은 프로그래밍 상태 정보를 저장하는데 사용되어 다수의 플래그 값이 디자인될 수 있도록 한다. 또한, 블록 플래그는 블록이 재 프로그램되었는지를 나타내는 단일 비트를 사용할 수 있다. 일반적으로, 블록 플래그는 바이너리 또는 다중 레벨의 저장 소자에 인코딩될 수 있고, 같은 블록, 예를들어 블록의 첫 번째 페이지 또는 다른 블록이나 로케이션 내에 위치할 수 있다. 다중 레벨 저장 소자의 경우, 플래그 비트는 상태 E와 C를 사용할 수 있는데, 예를 들면 그것은 가장 떨어진 상태인데 이는 하나의 예에서 가장 큰 신뢰를 제공한다.
이와같이, 단계 1215에서, 페이지 플래그 (페이지 플래그 1)는 현재의 프로그램된 페이지가 프로그래밍 상태를 나타내도록 설정된다. 페이지 플래그를 설정하는 것은, 그 상태에 의해 식별되는 프로그래밍 상태 정보가 옳다면, 플래그를 기존 상태로 내버려두는 것을 포함한다. 예를들어, 하나의 비트는 페이지가 재 프로그램되지 않았음을 나타낼 수 있다. 초기 프로그래밍 후, 상기 비트는 이 상태로 남겨질 수 있다. 재 프로그래밍 후, 상기 비트는 제로 값으로 변경될 수 있다.
결정 단계 1220에서, 결정은 초기 프로그래밍이 그 블록에 대해 완료되었는지에 대해 행해진다. 이것은 예를들어 NAND 스트링의 한 블록에 있는 드레인 측 워드 라인과 같은 블록 내의 마지막 워드 라인 상의 저장 소자들이 프로그램되었는지를 결정함에 의해 정해질 수 있다. 초기 프로그래밍이 아직 완료되지 않았다면, 다음 페이지의 데이터는 단계 1225에서 프로그램되고, 페이지 플래그(페이지 플래그 1)은 단계 1215에서 그 다음 페이지 데이터에 대해 설정되는데, 이는 초기 프로그래밍만이 수행되었음을 나타낸다. 즉, 재 프로그래밍은 아직 수행되지 않았다. 각 연속 페이지는 초기 프로그래밍이 해당 블록에 대해 완료될 때까지 프로그램되고, 이 때 블록 플래그(블록 플래그 1)는 단계 1230에서 그 블록에 대해 설정될 수 있고, 단계 1235에서 재 프로그래밍이 시작된다. 이러한 블록 플래그는 일종의 프로그래밍 상태 정보이다. 대안적으로, 블록 플래그는 이전에 설명된 것처럼 사용될 필요는 없다. 한 예에서, 블록 플래그는 마지막 페이지 데이터의 프로그래밍 중에 설정될 수 있다(단계 1225). 단계 1240에서, 두 번째의 높은 세트의 임계 전압(VTH) 검증 레벨, 즉 Vva2, Vvb2 및 Vvc2(도7B)가 사용된다. 덧붙여, 두 번째의 높은 패스 전압, Vpass2, 또는 패스 전압 세트가 사용된다.
결정 단계 1245에서, 다른 태스크가 펜딩(pending)되어 있는지가 결정된다. 펜딩 중인 다른 태스크가 있다면, 펜딩 중인 다른 태스크가 없을 때까지 단계 1250에서 대기가 시작된다. 일반적으로, 실행상 불이익(performance penalty)을 피하기 위해서, 재 프로그래밍은 비 실시간 기반으로 이루어지는데, 이 때 블록의 프로그래밍을 제어하는 적어도 하나의 회로(가령, 도5의 콘트롤 회로(515))는 스탠바이 모드로 들어갔거나 그리고 펜딩 중인 다른 태스크를 가지지 않거나, 혹은 우선권이 높은 펜딩 중인 다른 태스크를 적어도 가지지 않는다. 즉, 재 프로그래밍은 초기 프로그래밍을 바로 뒤따를 필요는 없으며, 일단 시작하면 모든 저장소자들에 대한 재 프로그래밍을 중단함이 없이 진행될 필요는 없다. 예를들어, 정수의 데이터 페이지, 예를들어 하나 또는 그 이상의 페이지는 다음 페이지 데이터를 재 프로그래밍할 때 일시적으로 중단하고 나중에 다시 시작하기 전에 한 번에 재 프로그램될 수 있다. 중단과 재시작은 블록이 재 프로그래밍을 완료하기 전에 여러 번 발생할 수 있다. 따라서, 블록 프로그래밍을 비휘발성 저장 소자들의 블록 혹은 다른 단위의 프로그래밍을 제어하는 적어도 하나의 회로 유닛이 대기 모드로 들어간 후, 및/또는 우선권이 높은 펜딩 중인 다른 태스크가 없을 때, 재 프로그래밍은 서로 다른 시간들에서 실행될 수 있다. 대안적으로, 재 프로그래밍은 실시간 기반으로 발생할 수 있는데, 초기 프로그래밍을 바로 뒤따라서 및/또는 처음부터 끝까지 계속해서 진행하는 식이 그것이다.
특히, 재 프로그래밍은 데이터를 읽거나 쓰기 위한 펜딩 중인 다른 요청이 없을 때 또는 쓰레기 수집이나 조각 처리(defragmenting)를 포함하는 태스크와 같은 우선권이 높은 펜딩 중인 다른 태스크가 없을 때 이루어진다. 그러므로, 재 프로그래밍은 리소스가 이용가능할 때 실행되는, 리소스가 허용할 때 시작하고 중단하는 배경 프로세스로 이루어질 수 있다. 예를 들어, 디지털 카메라 내의 비휘발성 저장소자를 생각해보자. 사용자가 사진을 찍을 때, 콘트롤러는 초기 프로그래밍에서 비휘발성 저장 소자의 적어도 첫 블록에 이미지 데이터를 저장하는데 바쁠 것이고, 이후 사용자가 다른 사진을 찍을 때까지 보통 대기 시간이 있게 된다. 재 프로그래밍은 이러한 대기 시간에 수행될 수 있다. 재 프로그래밍이 완료되기 전에 사용자가 다른 사진을 찍으면, 재 프로그래밍은 일시적으로 중지되어 새로운 이미지 데이터가 예를들어 두 번째 블록의 초기 프로그래밍에 쓰여지도록 허용된다. 이것이 완료되면, 첫 번째 블록의 재 프로그래밍이 재개될 수 있다. 이어서, 두 번째 블록의 재 프로그래밍이 시작될 수 있다. 재 프로그래밍은 둘 이상의 블록에 대해 병렬적으로 이루어질 수도 있다. 유사하게, 사용자가 카메라 전원을 끌 경우, 카메라에 전원이 다시 공급되고 다른 태스크에 의해 사용되지 않을 때까지 재 프로그래밍이 일시적으로 정지될 수 있다.
단계 1255에서, 첫 번째 페이지 데이터가 새로운 VTH 검증 레벨과 패스 전압을 사용하여 프로그래밍되고, 단계 1260에서 페이지 플래그(페이지 플래그 2)는 그 페이지에 대해 예를들어 그 페이지에 대해 재 프로그래밍이 일어났음을 나타내도록 설정된다. 페이지 플래그는 일종의 프로그래밍 상태 정보이다. 한 예에서, 단계 1255에서 페이지 플래그는 한 페이지의 데이터를 프로그래밍하는 중에 설정될 수 있다. 결정 단계 1265에서, 해당 블록에 대해 재 프로그래밍이 완료되면, 블록 플래그(블록 플래그 2)는 단계 1270에서 그 블록에 대해 설정되고, 그리고 재 프로그래밍이 완료된다. 블록 플래그는 프로그래밍 상태 정보의 형태이다. 대안적으로, 블록 플래그는 전술한 바와 같이 이용될 필요는 없다. 일례에서, 한 페이지의 데이터를 프로그래밍하는 동안에 블록 플래그가 설정될 수도 있음을 유의해야 한다. 달리, 다음 페이지의 데이터는 결정 단계 1275에서 다른 태스크가 펜딩되어 있지 않다면 단계 1285에서 재 프로그래밍되는데, 이 경우 대기는 단계 1280에서 구현된다. 블록의 각 연속 페이지는 재 프로그래밍되고 그리고 그 블록에 대한 재 프로그래밍이 완료될 때까지 단계 1260에서 설정된 페이지 플래그를 갖는다. 일반적으로, 재 프로그래밍은 정지될 수 있으며 그리고 페이지 경계에서 다시 시작할 수 있다. 페이지를 프로그래밍하는 중에 사용자가 장치를 셧다운시키려 시도하면, 현재 페이지의 프로그래밍이 끝날 때까지 셧다운은 연기될 것이다. 실제로, 이 시간 간격은 몇분의 일초로서 사용자가 인지하지는 못한다. 도13은 일련의 프로그래밍 펄스를 이용하여 비휘발성 저장 매체를 프로그래밍하기 위한 프로세스의 일 예를 도시하는 플로우 챠트이다. 프로세스는 한 페이지의 데이터를 프로그래밍하는데 사용될 수 있는데, 예를 들면, 도12의 단계 1210, 1225, 1255 및 1285에 나타낸 바와 같다. 소거 프로세스는 보통 같은 시간에 블록과 같은 다수의 워드 라인에서 실행되고, 한편 프로그래밍은 워드 라인 마다 행해진다. 또한, 도5를 참조하면, 단계 1300에서, "데이터 로드" 명령이 콘트롤 회로(515)에 의해 발행되고 명령 회로(514)로 입력되어, 데이터가 데이터 입출력 버퍼(512)로 입력되게 한다. 입력 데이터는 명령으로 인식되고, 명령 회로(514)에 입력된 명령 래치 신호를 통해 상태 머신(516)에 의해 래치된다. 단계 1305에서, 페이지 어드레스를 지정하는 어드레스 데이터는 콘트롤러 또는 호스트로부터 로우 콘트롤러 또는 디코더(506)로 입력된다. 입력 데이터는 페이지 어드레스로 인식되고, 명령 회로(514)에 입력된 어드레스 래치 신호에 의해 영향을 받는 상태 머신(516)를 통해 래치된다. 단계 1310에서, 어드레스된 페이지에 대한 한 페이지의 프로그램 데이터는 프로그래밍을 위해 데이터 입출력 버퍼(512)로 입력된다. 예를들어, 한 예에서 532 바이트의 데이터가 입력될 수 있다. 그 데이터는 선택된 비트 라인에 대해 적절한 레지스터에서 래치된다. 몇몇 예에서, 데이터는 선택된 비트 라인이 검증 동작에 사용되도록 두 번째 레지스터에서 래치되기도 한다. 단계 1315에서, "프로그램" 명령은 콘트롤러에 의해 발행되고, 데이터 입출력 버퍼(512)로 입력된다. 명령은 명령 회로(514)에 입력된 명령 래치 신호를 통해 상태 머신(516)에 의해 래치된다.
"프로그램" 명령에 의해 트리거되면, 단계 1315에서 래치된 데이터는 도8에 도시된 바와같이 적절한 워드 라인에 인가된 스텝 펄스를 이용하여 상태 머신(516)에 의해 제어되는 선택된 저장 소자로 프로그램될 것이다. 단계 1320에서, 선택된 워드 라인에 인가되는 프로그래밍 펄스 전압 레벨인 Vpgm 이 시작 펄스(예컨대, 12V)로 초기화되고, 상태 머신(516)에 의해 유지되는 프로그램 카운터 PC는 0으로 초기화된다. 초기 프로그램 펄스의 크기는 예를들어 차지 펌프(charge pump)를 적절하게 프로그래밍함으로써 설정된다. 단계 1325에서, 첫 번째 Vpgm 펄스가 선택된 워드 라인에 인가된다. 상응하는 저장 소자가 프로그램되어야 함을 나타내는 특정 데이터 래치에 로직 "0"이 저장되면, 상응하는 비트 라인은 접지된다. 한편, 상응하는 저장 소자가 현재 데이터 상태로 유지되어야 함을 나타내는 특정 래치에 로직 "1"이 저장되면, 상응하는 비트 라인은 VDD 에 연결되어 프로그래밍을 저지한다.
단계 1330에서, 선택된 저장 소자의 상태가 검증된다. 선택된 셀의 목표 임계 전압이 적절한 레벨에 도달한 것으로 확인되면, 상응하는 데이터 래치에 저장된 데이터는 로직 "1"로 변경된다. 임계 전압이 적절한 레벨에 도달하지 않은 것으로 확인되면, 상응하는 데이터 래치에 저장된 데이터는 변경되지 않는다. 이러한 식으로, 그것의 상응하는 데이터 래치에 저장된 로직 "1"을 갖는 비트 라인은 프로그램될 필요는 없다. 모든 데이터 래치가 로직 "1"을 저장하고 있을 때, 상태 머신은 선택된 모든 셀들이 프로그램되었음을 인지한다. 단계 1335에서, 모든 데이터 래치가 로직 "1"을 저장하고 있는지가 체크된다. 그렇다면, 프로그래밍 프로세스는 성공적으로 완료된다. 왜냐하면, 선택된 모든 저장 소자가 그들의 목표 상태로 프로그램되고 그리고 검증되었기 때문이다. "PASS" 상태는 단계 1340에서 보고된다. 미리 정해진 부분의 저장 소자들이 프로그램되고 검증된다면 패스가 보고될 수도 있다.
선택적으로는, 몇몇 메모리 소자가 그들의 원하는 상태에 도달하지 않은 때에도 단계 1335에서 "PASS"가 선언될 수 있다. 이와같이, 소정 개수 셀들이 원하는 상태에 도달할 수 없었음에도, 최대 개수의 루프들에 도달하기 전에 프로그래밍이 중지될 수 있다.
단계 1335에서, 데이터 래치 모두가 로직 "1"을 저장하고 있는 것은 아니라면, 프로그래밍 프로세스는 계속된다. 단계 1345에서, 프로그램 카운터 PC는 프로그램 한계값(PCmax)에 대해서 체크된다. 프로그램 한계값의 한 예는 20개 펄스이지만, 다른 값도 여러 구현예에서 사용될 수 있다. 프로그램 카운터 PC가 PCmax에 도달하면, 프로그램 프로세스는 실패(fail)로 플래그되고, 단계 1350에서 실패 상태가 보고된다. 예를들어, 실패 상태는 성공적으로 프로그램되지 않은 비트들의 수가 특정 수를 초과하는 경우 발생한다. 프로그램 카운터 PC가 PCmax보다 작은 경우, Vpgm 레벨은 스텝 사이즈만큼 증가되고, 프로그램 카운터 PC는 단계 1355에서 증분된다. 프로세스는 단계 1325로 돌아가서 다음 Vpgm 펄스를 인가한다.
플로우 챠트는 바이너리 저장 소자에 사용될 수 있는 프로그래밍 방법을 도시하고 있다. 다중 레벨 저장 매체에서, 예를들어 도10과 도11A-C에서 설명된 바와같은 다수 프로그래밍 또는 검증 단계는 단일 반복의 플로우 챠트에서 이용될 수 있다. 단계 1320-1355는 각 단계의 프로그래밍 동작에 대해 실행될 수 있다. 첫 번째 단계에서, 하나 또는 그 이상의 프로그래밍 펄스가 인가될 수 있고, 그 결과는 셀이 적절한 중간 상태에 있는지를 결정하기 위해 검증될 수 있다. 두 번째 단계에서, 하나 또는 그 이상의 프로그래밍 펄스가 인가될 수 있고, 그 결과는 셀이 적절한 최종 상태에 있는지를 결정하기 위해 검증될 수 있다. 성공적 프로그램 프로세스의 끝에서, 저장 소자의 임계 전압은 프로그램된 저장 소자에 대한 하나 또는 그 이상의 임계 전압 분포 내 또는 소거된 저장 소자에 대한 임계 전압의 분포 내에 있어야 한다.
승압 기술( boosting techniques )
도14A-F는 초기 프로그래밍과 재 프로그래밍에 대해 다른 패스 전압을 사용하는 승압 기술을 도시하고 있다. 이 기술은 프로그래밍 중에 패스 전압 Vpass을 선택되지 않은 워드 라인에 인가하는 것을 포함한다. 일반적으로, 재 프로그래밍 중에, 초기 프로그래밍에 사용된 패스 전압 Vpass1과 비교하여 패스 전압 Vpass2를 증가시키는 것이 도움이 될 수 있는데, 이는 재 프로그래밍 중에 드레인 측 워드 라인 아래의 저장 소자들은 더 이상 소거되지 않기 때문이다. 그 결과, Vpass 승압 전위의 많은 부분이 높은 임계 전압으로 프로그램되는 저장 소자들을 위한 반전 조건에 도달하는데 소비되어야 한다. 상승된 Vpass 전압은 off-row-disturb 로 알려진 프로세스에서 선택되지 않은 워드 라인 아래의 소거된 저장 소자를 우연적으로 프로그래밍하는 것으로 나타날 수 있다. 그러나, 블록 재 프로그래밍의 이점으로 인해 저장 소자 VTH 윈도우가 감소되면, 이것은 더 높은 Vpass 전압의 영향을 오프셋할 수 있다. 예를들어, Vpass2는 Vpass1을 0.5V 만큼 초과할 수 있다. 가능한 한 예에서, Vpass2는 7-10V일 수 있고, 반면 Vpass1은 6.5-9.5V일 수 있다. 일반적으로, 같거나 다른 Vpass 값이 서로다른 워드 라인들에 인가될 수 있다. 예를들어, 선택되지 않은 워드 라인에 인가되는 Vpass는, 선택된 워드 라인에 대한 및/또는 블록의 경계에 대한 선택되지 않은 워드 라인의 위치의 함수일 수 있으며, 또는, 초기 프로그래밍 또는 재 프로그래밍이 실행되었는지에 관한 함수일 수도 있다.
도14A와 도14B는 자기 승압 기술에 대해서 초기 프로그래밍과 재 프로그래밍 각각에 대한 워드 라인 인가 전압을 보여주고 있다. 자기 승압의 경우, 선택되지 않은 비트 라인에 관련된 채널은 절연되어 있고, 패스 전압 Vpass1 또는 Vpass2는 프로그래밍 중에 선택되지 않은 워드 라인에 인가된다. 선택되지 않은 워드 라인은 미선택 비트 라인에 관련된 채널과 커플링하여, 미선택 비트 라인의 채널에 소정 전압(예를 들어, 각각 초기 프로그래밍과 재 프로그래밍 중에 7.5 또는 8V)이 존재하게 한다. 이와같이, 자기 승압은 터널 산화물 사이의 전압을 낮추어 프로그램 혼란을 줄이는 경향이 있는 채널 내에 전압 상승을 존재하게 한다. 예를들어, 간단한 예로 4개의 워드 라인 WL0-WL3이 있고, WL2 상의 저장 소자들이 프로그래밍 전압 Vpgm으로 현재 프로그래밍되고 있다고 하자. 이 경우, 자기 승압은 Vpass1 또는 Vpass2를 WL0, WL1 및 WL3에 인가함으로써 얻어진다. 실제로, 전압은 교번하는 워드 라인의 양단에 인가될 수 있다.
도14C와 도14D는 로컬 자기-승압(Local self-boosting : LSB) 기술에 대해 초기 프로그래밍과 재 프로그래밍 각각을 위한 워드 라인 인가 전압을 보여주고 있다. 도14E와 도14F는 소거 영역 자기-승압(Erased area self-boosting : EASB) 기술에 대해 초기 프로그래밍과 재 프로그래밍 각각을 위한 워드 라인 인가 전압을 보여주고 있다. LSB와 EASB는 종래의 자기 승압의 단점을 처리하기 위한 것으로, 이전에 프로그램된 저장 소자의 채널과 금지되는 저장 소자의 채널을 분리시킨다. 예를들어, 도4를 참조하면, 저장 소자(424)가 프로그래밍되고 있다면, LSB와 EASB는 저장 소자(444)의 채널과 이전의 프로그램된 저장 소자(445와 446)을 분리시킴으로써 저장 소자(444)에 프로그래밍하는 것을 저지한다. SB, EASB 및 LSB 승압 방법과 다른 변형들에 대해, 프로그래밍되는 저장 소자의 비트 라인은 접지되거나 0V에 가까운, 보통은 0-1V 범위의 다른 전압에 연결되고, 한편 금지되는 저장 소자를 갖는 NAND 스트링의 비트 라인은 Vdd, 보통 약 1.5-3V이다. 프로그램 전압 Vpgm(예를들어 20V)는 선택된 워드 라인에 연결된다. LSB에 대해서는, 선택된 워드 라인과 이웃하는 워드 라인은 OV이거나 0V에 가깝고, 한편 나머지 비선택 워드 라인은 Vpass1 또는 Vpass2이다. 예를들어, 비트 라인(421)은 0V이고, 한편 비트 라인(441)은 Vdd이다. 드레인 셀렉트(SCG)는 Vsgd(보통 2.5-4.5V)이고, 소스 셀렉트(SGS)는 0V이다. 도14C와 도14D를 참조하면, 선택된 워드 라인 WL2는 Vpgm이고, 한편 이웃하는 워드 라인 (WL1 및 WL3)은 0V이며, 그리고 워드 라인(예를들어 WL0)은 Vpass1 또는 Vpass2이다.
LSB 모드의 단점은 선택된 워드 라인 아래의 승압된 채널 전압은 대단히 높을 수 있는데, 이는 그 부분의 채널이 선택되지 않은 워드 라인 아래의 다른 채널 영역과 분리되어 있어서 그 결과 승압 전압이 주로 높은 프로그래밍 전압 Vpgm에 의해 결정되기 때문이다. 높은 승압으로 인해, OV로 바이어스된 워드 라인 근처에서 밴드 대 밴드 터널링 또는 GIDL이 일어날 수 있다. 채널 승압의 양은 EASB를 사용하여 낮은 값으로 제한할 수 있다. EASB는 단지 소스 측 이웃 워드 라인이 0V인 것을 제외하면 LSB와 유사하다. 예를들어, 도14E와 14F를 참조하면, 선택된 워드 라인 WL2는 Vpgm에 있고, 한편 소스 측 이웃 워드 라인 WL1은 0V에 있고, 그리고 다른 워드 라인(예를들어 WL0와 WL3)은 Vpass1 또는 Vpass2에 있다. 이 예에서, 선택된 워드 라인 아래의 채널 영역과 선택된 저장 소자의 드레인 측 이웃 워드 라인 아래의 채널 영역은 연결되어, LSB 경우와 같이 채널 승압은 Vpgm에 의하지 않고 비선택 워드 라인에 인가되는 패스 전압에 의해 주로 결정된다. 드레인측 인접 워드라인 WL3은, Vpass1 혹은 Vpass2 에 있다. Vpass 가 너무 낮으면, 채널 내의 승압은 프로그램 혼란을 저지하기에 충분하지 않을 것이다. Vpass1 또는 Vpass2가 너무 높으면, 선택된 NAND 스트링(비트 라인 상에 0V를 갖는)의 비선택 워드 라인은 프로그램되거나, 또는 GIDL로 인한 프로그램 혼란이 일어날 수 있다.
적절한 읽기 전압을 결정하기 위한 플래그의 사용
도15는 플래그를 이용해서 비휘발성 저장 매체의 블록에서 페이지 데이터를 읽기 위한 프로세스의 실시 예를 설명하는 플로우 챠트이다. 프로세스가 한 블록의 저장 소자에 대해 설명되고 있지만, 어떤 세트의 저장 소자에도 적용할 수 있다. 블록의 데이터는 필요에 따라 가끔씩 판독된다. 데이터는 초기 프로그래밍 및/또는 재 프로그래밍을 완료한 블록의 페이지로부터 읽혀질 수 있다. 높은 VTH 검증 레벨이 재 프로그래밍에서 사용될 때, 높은 읽기 레벨이 데이터를 읽을 때 사용된다. 이와같이, 읽기 전에 페이지의 프로그래밍 상태를 아는 것이 바람직하다.
이를 위해서, 각 페이지는 같은 페이지에 존재하는 전용 바이너리 인코드 저장 소자를 가질 수 있는데, 예를들어 그것의 바이너리 상태는 플래그로 사용된다. 읽기 동작이 새로운 블록으로 진행할 때, 그 블록의 첫 번째 페이지는 그 페이지가 재 프로그램된 블록이라는 가정하에 읽혀질 수 있다. 읽기 결과가 다르게 나타나면, 그 페이지는 더 낮은 세트의 읽기 레벨을 가지고 다시 읽혀질 수 있다. 다음 페이지는 아마도 첫 번째 페이지와 같은 프로그래밍 상태(재 프로그램된 또는 그렇지 않은)를 가질 것이다. 그러므로, 그들은 에러 정정 코드(ECC) 에러가 잘못된 페이지 상태를 사용했을 가능성을 증가시킬 때까지 첫 번째 페이지에 상응하는 모드에서 읽혀질 수 있으며, 이 경우 그 페이지와 그 블록의 그 후의 모든 페이지는 교번하는 읽기 전압 하에서 읽혀질 수 있다. 게다가, 어떤 페이지를 읽은 후, 그것의 플래그 상태는 가정된 읽기 전압에 대해 체크될 수 있고, 그리고 모순이 발견되면 그 페이지는 교번하는 읽기 전압을 이용하여 다시 읽혀질 수 있다. 이러한 것은, 첫 번째의 부적절한 읽기가 ECC 에러를 초래하지 않는다하여도 행해질 수 있다.
구현 예의 단계 1500에서, 콘트롤러는 페이지 데이터를 읽기 시작한다. 단계 1505에서, 그 페이지가 위치하는 그 블록의 블록 플래그는 프로그래밍 상태를 결정하기 위해 읽힌다. 대안적으로, 하나 또는 그 이상의 페이지 플래그는 도12와 관련하여 설명된 바와같이 프로그래밍 상태를 결정하기 위해 읽혀질 수 있다. 단계 1510에서, 블록/페이지 플래그 또는 플래그들이 재 프로그래밍이 그 블록에 대해 완료되었음을 나타내고 있다면, 두 번째의 높은 세트의 VTH 읽기 레벨이 단계 1535에서 사용된다. 예를들어, 이것들은 도7B로부터의 Vra2, Vrb2 및 Vrc2일 수 있다. 단계 1540에서, 그 페이지의 데이터는 두 번째의 높은 세트의 VTH 읽기 레벨을 이용해서 읽혀진다. 그 블록의 추가 페이지는 단계 1545에서 읽혀질 것이고, 그리고 재 프로그래밍은 완료되고(단계 1510), 추가 페이지의 데이터는 단계 1535에서 얻어진 두 번째의 높은 세트의 VTH 읽기 레벨을 이용하여 단계 1540에서 읽혀진다. 읽어야 할 더 이상의 페이지가 없다면, 읽기 프로세스는 단계 1550에서 종료된다.
한편, 블록/페이지 플래그 또는 플래드들이, 블록에 대해 재 프로그래밍이 완료되었음을 단계 1510에서 나타내지 않는다면, 단계 1515에서 페이지 플래그가 판독되어, 그 페이지에 대해 단지 초기 프로그래밍만이 완료되었는지(단계 1520) 혹은 그 페이지에 대해 재 프로그래밍 역시도 완료되었는지(단계 1530)가 판별된다. 단지 초기 프로그래밍만이 완료되었다면, VTH 읽기 레벨들의 제 1 세트 즉, VTH 읽기 레벨들의 낮은 세트가 단계 1525에서 사용된다. 예를 들어, 이것들은 도7A의 Vra1, Vrb1 및 Vrc1일 수 있다. 또한, 재 프로그래밍도 완료되었다면, VTH 읽기 레벨들의 제 2 세트 즉, VTH 읽기 레벨들의 높은 세트가 단계 1535에서 사용되고, 이미 설명한 바와같이 그 페이지의 데이터는 단계 1540에서 읽혀진다. 프로세스는 읽혀질 더 이상의 페이지가 없을 때까지 반복된다. 이와같이, 적절한 읽기 레벨은 연관된 프로그래밍 상태에 기반하여 그 블록 내의 각 페이지에 대해 사용될 수 있다.
적절한 읽기 전압을 결정하기 위한 에러 카운트의 이용
도16은 비휘발성 저장 매체의 블록에서 페이지 데이터를 읽는데 에러 카운트를 이용하는 프로세스의 실시예를 도시하는 플로우 챠트이다. 프로세스가 한 블록의 저장 소자에 대해 설명되고 있지만, 어떤 세트의 저장 소자에 대해서도 적용할 수 있다. 이 일례에서, 페이지 레벨 또는 블록 레벨 플래그들이 페이지 또는 블록 각각의 프로그래밍 상태를 식별할 필요는 없다. 대신, 콘트롤 회로는 특정 프로그래밍 상태, 예를들어 초기 프로그래밍만이 완료되었거나 재 프로그래밍도 완료되었는가를 가정하여 페이지를 읽을 수 있고, 그리고 그 가정이 옳은지를 결정하기 위하여 에러 카운트에 의존한다. 그 가정이 옳지 않다고 확인되고 잘못된 읽기 전압이 사용되었다면, 다른 세트의 읽기 전압이 그 저장 소자를 다시 읽기 위하여 사용된다.
구현 예의 단계 1600에서, 콘트롤러는 페이지 데이터를 읽기 시작한다. 단계 1605에서, VTH 읽기 레벨의 디폴트 세트가 사용되는데, 예를들어 도7A로부터의 낮은 레벨 Vra1, Vrb1 및 Vrc1이거나, 도7B로부터의 Vra2, Vrb2 및 Vrc2이다. 단계 1615에서, 페이지는 디폴트 또는 가정된 VTH 읽기 레벨을 이용하여 읽혀지고, 단계 1620에서 그 페이지에 대한 에러 카운트가 결정된다. 예를들어, 에러 카운트는 에러 정정 또는 검출 코드로 검출된 에러에 기초할 수 있다. 해밍 코드와 같은 에러 정정 코드는 몇몇 에러를 검출해서 정정할 수 있고, 한편 패리티 비트 또는 체크섬을 이용하는 것과 같은 에러 검출 코드는 그들을 정정함이 없이 단지 에러를 검출만 할 수 있다. 예를들어, 도6와 관련하여 설명한 바와같이, 페이지는 ECC 데이터와 관련된 다수의 데이터 섹터를 포함할 수 있다. 섹터가 저장 소자에 쓰여질 때, 추가적인 에러 정정 또는 검출 비트가 쓰여진다. 이들 비트는 에러 정정 또는 검출 코드를 이용하는 그 섹터의 데이터로부터 생성된다. 그 결과, 섹터가 읽혀 질 때, 수반하는 에러 정정 또는 검출 비트도 읽혀진다. 출력이 에러 정정 또는 검출 코드와 일치하는지를 보기 위해서, 섹터 데이터는 에러 정정 또는 검출 코드를 통해 처리된다. 출력이 일치하지 않는다면, 그 섹터에는 에러가 있다. 따라서, 에러 카운트는 섹터 또는 다른 단위에 대해 검출된 다수의 에러들에 기초해 생성될 수 있다. 그 카운트는 모든 검출된 에러를 포함할 수 있고, 거기에는 정정될 수 있는 것들, 또는 정정될 수 없는 에러만을 포함할 수 있다. 카운트는 숫자 그대로, 퍼센티지 또는 다른 계량법으로 표현될 수 있다.
단계 1625에서, 에러 카운트가 임계치를 초과하면, 사용된 VTH 읽기 레벨의 디폴트 세트는 옳지 않은 것으로 결론지어질 수 있다. 이 경우, 대안 세트의 VTH 읽기 레벨이 단계 1630에서 사용된다. 예를들어, 디폴트 세트가 도7A로부터의 낮은 읽기 레벨 Vra1, Vrb1 및 Vrc1를 포함한다면, 다른 세트는 도7B로부터의 높은 읽기 레벨 Vra2, Vrb2 및 Vrc2를 포함할 수 있다. 반대로, 디폴트 세트가 높은 읽기 레벨을 포함한다면, 다른 세트는 낮은 읽기 레벨을 포함할 수 있다. 이 방법은 2개 이상의 다른 세트의 읽기 레벨로 확장될 수 있다. 단계 1635에서, 페이지는 다른 읽기 레벨로 다시 읽혀진다. 단계 1640에서 읽어야 할 추가 페이지가 있으면, 페이지는 가장 최근에 사용된 세트의 읽기 레벨을 이용하여 단계 1615에서 읽혀지고, 그리고 에러 카운트는 단계 1620에서 결정된다. 그런 다음, 프로세스는 설명한 바와같이 진행한다. 단계 1625에서 에러 카운트가 임계치를 초과하지 않고 단계 1640에서 읽어야 할 추가 페이지가 없다면, 단계 1645에서 프로세스는 종료된다. 단계 1640에서 읽어야 할 추가 페이지가 있다면, 단계 1615에서 페이지는 가장 최근에 사용된 세트의 읽기 레벨을 이용하여 읽혀진다.
에러 임계치는 특정 메모리 장치에 관한 경험에 기초하는 소정 레벨로 설정될 수 있는바, 이는 올바른(correct) 읽기 레벨이 사용될 때 통상적으로 경험되는 에러 카운트를 고려한 것이다. 올바른 읽기 레벨이 사용될 때 통상적으로 경험되는 에러 카운트에서 소정 양만큼 벗어나는 경우, 에러 카운트는 틀린(incorrect) 읽기 레벨을 나타내는 것으로 간주될 수 있다. 테스팅, 모델링 및 실험이 적절한 임계치를 결정하는데 이용될 수 있다. 또한, 다른 읽기 레벨이 사용될 때의 에러 카운트를 결정하고 그것을 디폴트 읽기 레벨이 사용될 때의 에러 카운트와 비교하는 것도 가능하다. 낮은 에러 카운트를 생성하는 읽기 레벨은 최종 읽기 레벨로 사용될 수 있다.
이상의 본 발명의 상세 설명은 묘사와 설명의 목적으로 제시된 것이다. 개시한 형태 그대로 본 발명을 한정하거나 제한하는 의도는 없다. 위에서 개시한 내용에 비추어 보면, 많은 수정과 변형이 가능하다. 설명된 실시예는 본 발명의 원리와 실제 적용례를 가장 잘 설명하기 위하여 선택된 것이며, 이를 통해 당업자가 다양한 실시예로 본 발명을 활용할 수 있게 하고, 특정 용도에 적당한 변형이 생각되어 질 수 있게 한다. 본 발명의 권리범위는 첨부된 청구범위로 결정된다.

Claims (28)

  1. 비휘발성 저장소자(non-volatile storage)를 동작시키는 방법으로서,
    초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하는 단계 -상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며-; 그리고
    상기 초기 프로그래밍이 완료된 후, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들에 대하여 추가 프로그래밍을 수행하는 단계 -상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행됨-
    를 포함하며,
    더 높은 우선 순위의 다른 펜딩 태스크가 없는 다른 시간들에서 상기 추가 프로그래밍을 수행하는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  2. 비휘발성 저장소자(non-volatile storage)를 동작시키는 방법으로서,
    초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하는 단계 -상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며-; 그리고
    상기 초기 프로그래밍이 완료된 후, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들에 대하여 추가 프로그래밍을 수행하는 단계 -상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행됨-
    를 포함하며,
    상기 초기 프로그래밍에서 상기 다수의 워드 라인 중 특정 워드 라인에 연관된 비휘발성 저장 소자를 프로그래밍할 때, 상기 다수의 워드 라인들 중 적어도 하나의 다른 워드 라인에게 제 1 패스 전압을 인가하는 단계와; 그리고
    상기 추가 프로그래밍에서 상기 다수의 워드 라인 중 상기 특정 워드 라인에 연관된 비휘발성 저장 소자를 프로그래밍할 때, 상기 적어도 하나의 다른 워드 라인에게 상기 제 1 패스 전압과는 다른 제 2 패스 전압을 인가하는 단계
    를 더 포함하는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  3. 제2항에 있어서,
    상기 제 2 패스 전압은 상기 제 1 패스 전압보다 높은 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  4. 제1항에 있어서,
    상기 다수의 비휘발성 저장 소자는 상기 초기 프로그래밍에서 제 1 임계 전압 검증 레벨들을 이용하여 프로그래밍되고, 그리고 상기 추가 프로그래밍에서 상기 제 1 임계 전압 검증 레벨들 중 대응하는 검증 레벨들보다 높은 제 2 임계 전압 검증 레벨들을 이용하여 프로그래밍되는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  5. 제1항에 있어서,
    상기 초기 프로그래밍과 상기 추가 프로그래밍은 다수의 비휘발성 저장소자들이 배열된 블록에 대해 실행되며, 그리고 상기 블록은 상기 초기 프로그래밍 이후 및 상기 추가 프로그래밍 이전에 소거되지 않는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  6. 제5항에 있어서,
    상기 초기 프로그래밍이 상기 블록에 대해 완료되었는지를 나타내는 프로그래밍 상태 정보를 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  7. 비휘발성 저장소자(non-volatile storage)를 동작시키는 방법으로서,
    초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하는 단계 -상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며-; 그리고
    상기 초기 프로그래밍이 완료된 후, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들에 대하여 추가 프로그래밍을 수행하는 단계 -상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행됨-
    를 포함하며,
    상기 다수의 비휘발성 저장 소자들의 프로그래밍을 제어하는 적어도 하나의 회로가 대기 모드에 들어간 후에, 다른 시간들에서 상기 추가 프로그래밍을 수행하는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  8. 삭제
  9. 비휘발성 저장소자(non-volatile storage)를 동작시키는 방법으로서,
    초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하는 단계 -상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며-; 그리고
    상기 초기 프로그래밍이 완료된 후, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들에 대하여 추가 프로그래밍을 수행하는 단계 -상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행됨-
    를 포함하며,
    더 높은 우선 순위의 다른 펜딩 태스크가 없을 때 상기 추가 프로그래밍에서 상기 다수의 비휘발성 저장 소자들 중 일부를 프로그래밍하고, 이후 우선 순위가 더 높은 다른 태스크를 서비스하도록 상기 추가 프로그래밍을 정지하고, 이후 더 높은 우선 순위의 다른 펜딩 태스크가 다시 없을 때 상기 추가 프로그래밍을 재개하는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  10. 제1항에 있어서,
    상기 다수의 비휘발성 저장 소자들은 다수의 데이터 페이지들을 저장하고, 각각의 페이지는 일 단위로(as a unit) 프로그래밍가능하며, 그리고
    각각의 페이지에 대해서, 상기 페이지가 추가 프로그래밍되었는지를 나타내는 프로그래밍 상태 정보가 저장되는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  11. 비휘발성 저장소자(non-volatile storage)를 동작시키는 방법으로서,
    초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하는 단계 -상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며-; 그리고
    상기 초기 프로그래밍이 완료된 후, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들에 대하여 추가 프로그래밍을 수행하는 단계 -상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행됨-
    를 포함하며,
    상기 추가 프로그래밍은 정수 개수의 데이터 페이지들을 한번에 한 페이지씩 프로그램하며, 다음번 데이터 페이지를 추가 프로그램하기 위한 일시정지, 대기 및 후속 재시작 이전에 각각의 페이지는 일 단위로서 프로그래밍가능한 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  12. 제1항에 있어서,
    상기 추가 프로그래밍이 상기 다수의 비휘발성 저장 소자들에 대해 완료되었는지를 나타내는 프로그래밍 상태 정보를 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  13. 제1항에 있어서,
    상기 첫번째 워드라인은 상기 다수의 워드라인들 중 소스측 워드라인이며;
    상기 마지막 워드라인은 상기 다수의 워드라인들 중 드레인측 워드라인이며;
    상기 초기 프로그래밍은 상기 소스측 워드라인으로부터 상기 드레인측 워드라인으로 한번에 하나의 워드라인씩 진행되며; 그리고
    상기 추가 프로그래밍은 상기 소스측 워드라인으로부터 상기 드레인측 워드라인으로 한번에 하나의 워드라인씩 진행되는 것을 특징으로 하는 비휘발성 저장소자 동작방법.
  14. 비휘발성 저장 시스템에 있어서,
    다수의 비휘발성 저장소자; 그리고
    하나 이상의 회로
    를 포함하며,
    상기 하나 이상의 회로는, 초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하며, 상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며, 그리고
    상기 초기 프로그래밍이 완료된 이후에 상기 하나 이상의 회로는, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들을 추가 프로그래밍하며, 상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행되며,
    상기 추가 프로그래밍은 더 높은 우선 순위의 다른 펜딩 태스크가 없는 다른 시간들에서 실행되는 것을 특징으로 하는 비휘발성 저장 시스템.
  15. 비휘발성 저장 시스템에 있어서,
    다수의 비휘발성 저장소자; 그리고
    하나 이상의 회로
    를 포함하며,
    상기 하나 이상의 회로는, 초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하며, 상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며, 그리고
    상기 초기 프로그래밍이 완료된 이후에 상기 하나 이상의 회로는, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들을 추가 프로그래밍하며, 상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행되며,
    상기 하나 이상의 회로는,
    상기 초기 프로그래밍에서 상기 다수의 워드 라인 중 특정 워드 라인에 연관된 비휘발성 저장소자를 프로그래밍할 때 상기 다수의 워드 라인들 중 적어도 하나의 다른 워드 라인에게 제 1 패스 전압을 인가하고, 그리고
    상기 추가 프로그래밍에서 상기 다수의 워드 라인 중 상기 특정 워드 라인에 연관된 비휘발성 저장소자를 프로그래밍할 때 상기 적어도 하나의 다른 워드 라인에게 상기 제 1 패스 전압과는 다른 제 2 패스 전압을 인가하는 것을 특징으로 하는 비휘발성 저장 시스템.
  16. 제15항에 있어서,
    상기 제 2 패스 전압은 상기 제 1 패스 전압보다 높은 것을 특징으로 하는 비휘발성 저장 시스템.
  17. 제14항에 있어서,
    상기 다수의 비휘발성 저장 소자는 상기 초기 프로그래밍에서 제 1 임계 전압 검증 레벨들을 이용하여 프로그래밍되고, 그리고 상기 추가 프로그래밍에서 상기 제 1 임계 전압 검증 레벨들 중 대응하는 검증 레벨들보다 높은 제 2 임계 전압 검증 레벨들을 이용하여 프로그래밍되는 것을 특징으로 하는 비휘발성 저장 시스템.
  18. 제14항에 있어서,
    상기 초기 프로그래밍과 상기 추가 프로그래밍은 다수의 비휘발성 저장 소자가 배열된 블록에 대해 실행되며, 그리고 상기 블록은 상기 초기 프로그래밍 이후 및 상기 추가 프로그래밍 이전에 소거되지 않는 것을 특징으로 하는 비휘발성 저장 시스템.
  19. 제18항에 있어서,
    상기 초기 프로그래밍이 상기 블록에 대해 완료되었는지를 나타내는 프로그래밍 상태 정보가 저장되는 것을 특징으로 하는 비휘발성 저장 시스템.
  20. 비휘발성 저장 시스템에 있어서,
    다수의 비휘발성 저장소자; 그리고
    하나 이상의 회로
    를 포함하며,
    상기 하나 이상의 회로는, 초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하며, 상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며, 그리고
    상기 초기 프로그래밍이 완료된 이후에 상기 하나 이상의 회로는, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들을 추가 프로그래밍하며, 상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행되며,
    상기 하나 이상의 회로가 대기 모드에 들어간 후에, 다른 시간들에서 상기 추가 프로그래밍이 수행되는 것을 특징으로 하는 비휘발성 저장 시스템.
  21. 삭제
  22. 비휘발성 저장 시스템에 있어서,
    다수의 비휘발성 저장소자; 그리고
    하나 이상의 회로
    를 포함하며,
    상기 하나 이상의 회로는, 초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하며, 상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며, 그리고
    상기 초기 프로그래밍이 완료된 이후에 상기 하나 이상의 회로는, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들을 추가 프로그래밍하며, 상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행되며,
    상기 하나 이상의 회로는 더 높은 우선 순위의 다른 펜딩 태스크가 없을 때 상기 추가 프로그래밍에서 상기 다수의 비휘발성 저장소자들 중 일부를 프로그래밍하고, 이후 우선 순위가 더 높은 다른 태스크를 서비스하도록 상기 추가 프로그래밍을 정지하고, 이후 더 높은 우선 순위의 다른 펜딩 태스크가 다시 없을 때 상기 추가 프로그래밍을 재개하는 것을 특징으로 하는 비휘발성 저장 시스템.
  23. 제14항에 있어서,
    상기 다수의 비휘발성 저장 소자들은 다수의 데이터 페이지들을 저장하고, 각각의 페이지는 일 단위로(as a unit) 프로그래밍가능하며, 그리고
    각각의 페이지에 대해서, 상기 페이지가 추가 프로그래밍되었는지를 나타내는 프로그래밍 상태 정보가 저장되는 것을 특징으로 하는 비휘발성 저장 시스템.
  24. 비휘발성 저장 시스템에 있어서,
    다수의 비휘발성 저장소자; 그리고
    하나 이상의 회로
    를 포함하며,
    상기 하나 이상의 회로는, 초기 프로그래밍에서 다수의 워드 라인들을 통해 다수의 비휘발성 저장소자를 프로그래밍하며, 상기 초기 프로그래밍은 상기 다수의 워드 라인들 중 첫번째 워드 라인에서 시작해서 다음 각 워드라인으로 순차적으로 진행하여 상기 다수의 워드 라인들 중 마지막 워드 라인에 도달하는, 워드라인 순서로 수행되며, 그리고
    상기 초기 프로그래밍이 완료된 이후에 상기 하나 이상의 회로는, 상기 다수의 워드 라인을 통해 상기 다수의 비휘발성 저장소자들 중 적어도 몇몇의 비휘발성 저장소자들을 추가 프로그래밍하며, 상기 추가 프로그래밍은 상기 첫번째 워드라인에서 시작하여 상기 마지막 워드라인에 도달할 때까지 다음 각 워드라인으로 순차적으로 진행하는 상기 초기 프로그래밍의 상기 워드라인 순서로 수행되며,
    상기 다수의 비휘발성 저장 소자는 정수 개수의 데이터 페이지들로 한번에 한 페이지씩 추가 프로그래밍되며, 다음번 데이터 페이지를 추가 프로그램하기 위한 일시정지, 대기 및 후속 재시작 이전에 각각의 페이지는 일 단위로서 프로그래밍가능한 것을 특징으로 하는 비휘발성 저장 시스템.
  25. 제14항에 있어서,
    상기 추가 프로그래밍이 상기 다수의 비휘발성 저장 소자에 대해 완료되었는지를 나타내는 프로그래밍 상태 정보가 저장되는 것을 특징으로 하는 비휘발성 저장 시스템.
  26. 제14항에 있어서,
    상기 다수의 비휘발성 저장 소자는 다중-레벨 저장 소자로 구성되는 것을 특징으로 하는 비휘발성 저장 시스템.
  27. 제14항에 있어서,
    상기 다수의 비휘발성 저장 소자는 NAND 스트링으로 배열되는 것을 특징으로 하는 비휘발성 저장 시스템.
  28. 제14항에 있어서,
    상기 첫번째 워드라인은 상기 다수의 워드라인들 중 소스측 워드라인이며;
    상기 마지막 워드라인은 상기 다수의 워드라인들 중 드레인측 워드라인이며;
    상기 초기 프로그래밍은 상기 소스측 워드라인으로부터 상기 드레인측 워드라인으로 한번에 하나의 워드라인씩 진행되며; 그리고
    상기 추가 프로그래밍은 상기 소스측 워드라인으로부터 상기 드레인측 워드라인으로 한번에 하나의 워드라인씩 진행되는 것을 특징으로 하는 비휘발성 저장 시스템.
KR1020087023383A 2006-06-22 2007-05-25 임계 전압의 치밀한 분포가 가능한 비휘발성 메모리의 비 실시간 재 프로그래밍 방법 KR101075253B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/425,790 2006-06-22
US11/425,794 US7489549B2 (en) 2006-06-22 2006-06-22 System for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US11/425,794 2006-06-22
US11/425,790 US7486561B2 (en) 2006-06-22 2006-06-22 Method for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages

Publications (2)

Publication Number Publication Date
KR20090007298A KR20090007298A (ko) 2009-01-16
KR101075253B1 true KR101075253B1 (ko) 2011-10-20

Family

ID=38834212

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087023383A KR101075253B1 (ko) 2006-06-22 2007-05-25 임계 전압의 치밀한 분포가 가능한 비휘발성 메모리의 비 실시간 재 프로그래밍 방법

Country Status (6)

Country Link
EP (1) EP2030205B1 (ko)
JP (1) JP4994447B2 (ko)
KR (1) KR101075253B1 (ko)
AT (1) ATE515771T1 (ko)
TW (1) TWI337746B (ko)
WO (1) WO2007149677A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ITRM20080114A1 (it) * 2008-02-29 2009-09-01 Micron Technology Inc Compensazione della perdita di carica durante la programmazione di un dispositivo di memoria.
US7924614B2 (en) 2009-01-19 2011-04-12 Macronix International Co., Ltd. Memory and boundary searching method thereof
US8504759B2 (en) * 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
JP2011159364A (ja) * 2010-02-02 2011-08-18 Toshiba Corp 不揮発性半導体記憶装置および不揮発性半導体記憶装置の駆動方法
JP2011198419A (ja) * 2010-03-19 2011-10-06 Toshiba Corp 不揮発性半導体記憶装置およびその書き込み方法
KR20110126408A (ko) 2010-05-17 2011-11-23 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 프로그램 방법
JP2012190523A (ja) 2011-03-14 2012-10-04 Toshiba Corp 不揮発性半導体記憶装置
WO2014061055A1 (en) 2012-10-15 2014-04-24 Hitachi, Ltd. Storage sysyem which includes non-volatile semiconductor storage medium, and storage control method of storage system
US9257203B2 (en) 2012-12-06 2016-02-09 Micron Technology, Inc. Setting a default read signal based on error correction
KR102175039B1 (ko) * 2013-06-25 2020-11-05 삼성전자주식회사 불휘발성 메모리 장치의 데이터 기입 방법
KR20160032910A (ko) 2014-09-17 2016-03-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6453718B2 (ja) * 2015-06-12 2019-01-16 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
US10460816B2 (en) 2017-12-08 2019-10-29 Sandisk Technologies Llc Systems and methods for high-performance write operations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030002348A1 (en) * 2001-06-27 2003-01-02 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US20050088890A1 (en) * 2002-11-29 2005-04-28 Yasuhiko Matsunaga NAND type flash EEPROM in which sequential programming process is performed by using different intermediate voltages
WO2006093886A1 (en) * 2005-02-28 2006-09-08 Micron Technology, Inc. Multiple level programming in a non-volatile memory device

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3930074B2 (ja) * 1996-09-30 2007-06-13 株式会社ルネサステクノロジ 半導体集積回路及びデータ処理システム
KR100257868B1 (ko) * 1997-12-29 2000-06-01 윤종용 노어형 플래시 메모리 장치의 소거 방법
JP3957985B2 (ja) * 2001-03-06 2007-08-15 株式会社東芝 不揮発性半導体記憶装置
US6657891B1 (en) * 2002-11-29 2003-12-02 Kabushiki Kaisha Toshiba Semiconductor memory device for storing multivalued data
JP4410188B2 (ja) * 2004-11-12 2010-02-03 株式会社東芝 半導体記憶装置のデータ書き込み方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030002348A1 (en) * 2001-06-27 2003-01-02 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US20050088890A1 (en) * 2002-11-29 2005-04-28 Yasuhiko Matsunaga NAND type flash EEPROM in which sequential programming process is performed by using different intermediate voltages
WO2006093886A1 (en) * 2005-02-28 2006-09-08 Micron Technology, Inc. Multiple level programming in a non-volatile memory device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Tae-Sung Jung et al.,"A 117-mm2 3.3-V Only 128Mb Multilevel NAND Flash Memory for Mass Storage Applications", IEEE Journal of Solid-state Circuits, Vol. 31, No. 11, November 1996.*

Also Published As

Publication number Publication date
TW200814084A (en) 2008-03-16
JP4994447B2 (ja) 2012-08-08
WO2007149677A2 (en) 2007-12-27
TWI337746B (en) 2011-02-21
EP2030205A2 (en) 2009-03-04
EP2030205B1 (en) 2011-07-06
KR20090007298A (ko) 2009-01-16
ATE515771T1 (de) 2011-07-15
WO2007149677A3 (en) 2008-05-22
JP2009541909A (ja) 2009-11-26

Similar Documents

Publication Publication Date Title
KR101075253B1 (ko) 임계 전압의 치밀한 분포가 가능한 비휘발성 메모리의 비 실시간 재 프로그래밍 방법
US7633802B2 (en) Non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US7489549B2 (en) System for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
EP1886319B1 (en) Starting program voltage shift with cycling of non-volatile memory
KR100952235B1 (ko) 비휘발성 메모리에서 프로그램 금지 방안들의 선택적인적용
KR101606168B1 (ko) 프로그램, 검증 및, 읽기를 위한 참조 전압 레벨들의 적응적인 세팅을 갖는 비휘발성 멀티레벨 메모리
KR101012129B1 (ko) 자기 조정 최대 프로그램 루프에 의한 비휘발성 메모리의프로그래밍
KR101662760B1 (ko) 비휘발성 저장소자에서 향상된 채널 부스팅을 위한 감소된 프로그래밍 펄스 폭
KR100966357B1 (ko) 수정된 패스 전압들을 사용하여 프로그램 디스터브가감소한 비-휘발성 메모리를 프로그래밍하는 방법
EP2446443B1 (en) Forecasting program disturb in memory by detecting natural threshold voltage distribution
US20070140016A1 (en) System for reading non-volatile storage with efficient setup
EP2556509B1 (en) Saw-shaped multi-pulse programming for program noise reduction in memory
US7733701B2 (en) Reading non-volatile storage with efficient setup
KR101016432B1 (ko) 타이밍 정보를 이용한 리버스 커플링 효과
KR20080089335A (ko) 스마트 검증을 이용한 다중 상태 비휘발성 메모리프로그래밍 방법
EP1971984B1 (en) Continued verification in non-volatile memory write operations
KR20090007297A (ko) 다른 전압들을 이용한 비휘발성 저장 장치에 대한 검증 동작

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20141001

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee