KR20100014242A - 비휘발성 메모리 및 캐시 페이지 카피를 위한 방법 - Google Patents

비휘발성 메모리 및 캐시 페이지 카피를 위한 방법 Download PDF

Info

Publication number
KR20100014242A
KR20100014242A KR1020097009984A KR20097009984A KR20100014242A KR 20100014242 A KR20100014242 A KR 20100014242A KR 1020097009984 A KR1020097009984 A KR 1020097009984A KR 20097009984 A KR20097009984 A KR 20097009984A KR 20100014242 A KR20100014242 A KR 20100014242A
Authority
KR
South Korea
Prior art keywords
memory
data
bit
bits
code
Prior art date
Application number
KR1020097009984A
Other languages
English (en)
Other versions
KR101518228B1 (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/683,356 external-priority patent/US7502255B2/en
Priority claimed from US11/683,365 external-priority patent/US7499320B2/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20100014242A publication Critical patent/KR20100014242A/ko
Application granted granted Critical
Publication of KR101518228B1 publication Critical patent/KR101518228B1/ko

Links

Images

Classifications

    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • 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/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output
    • 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/564Miscellaneous aspects
    • G11C2211/5643Multilevel memory comprising cache storage devices

Abstract

비휘발성 메모리 및 방법들은 각 메모리 셀에 대한 최소수의 데이터 래치들을 사용하여 카피하는 캐시된 페이지를 포함한다. 복수-비트 데이터는 제 1 워드라인에 연관된 그룹의 각 메모리 셀로부터 병렬로 판독된다. 이 판독된 데이터는 데이터 처리를 위해 소정의 순서에 따라 메모리를 그룹별로 셔틀링하기 위해 복수의 데이터 그룹들로 조직된다. 수정된 데이터는 각각의 데이터 그룹을 업데이트하기 위해 리턴된다. 소정의 순서는 프로그래밍을 위해 더 많은 데이터 그룹들이 처리되고 사용가능할수록, 프로그램된 상태들이 더 디코딩 가능하게 하는 순서이다. 적응형 풀-시퀀스 프로그래밍은 처리와 동시에 수행된다. 프로그래밍은 판독된 데이터를 전형적으로 다른 소거 블록 내 있고, 제 2 워드라인에 연관되고 바람직하게는 제 1 워드라인에 이웃한 워드라인에 기인한 교란 효과들에 대해 보상된 메모리 셀들의 또 다른 그룹에 카피한다.

Description

비휘발성 메모리 및 캐시 페이지 카피를 위한 방법{NON-VOLATILE MEMORY AND METHOD FOR CACHE PAGE COPY}
이 발명은, 일반적으로 전기적으로 소거 가능하고 프로그램 가능한 판독전용 메모리(EEPROM) 및 플래시 EEPROM과 같은 비휘발성 반도체 메모리에 관한 것이고, 구체적으로는 한 메모리 위치에서 다른 메모리 위치로 페이지를 카피하는 등의 메모리 동작들에서 래치 구조들의 효율적 이용에 기반한 캐시 동작들에 관한 것이다.
특히 소형 폼 팩터(form factor) 카드로서 패키지된 EEPROM 및 플래시 EEPROM 형태의 전하를 비휘발성으로 저장할 수 있는 고체 상태 메모리는, 최근에 다양한 이동 및 휴대장치들, 특히 정보 기기들 및 소비자 전자제품들에서 선택되는 저장장치가 되었다. 역시 고체상태 메모리인 RAM(랜덤 액세스 메모리)과는 달리, 플래시 메모리는 비휘발성이어서, 이의 저장된 데이터를 파워가 턴 오프 된 후에도 보존한다. 더 높은 비용에도 불구하고, 플래시 메모리는 대량 저장 애플리케이션들에서 점점 더 사용되고 있다. 하드 드라이브들 및 플로피 디스크들과 같은 회전 자기매체에 기반한 종래의 대량 저장장치는 이동 및 휴대 환경엔 적합하지 않다. 이것은 디스크 드라이브들이 부피가 크고 기계적 고장이 나기 쉽고 큰 레이턴시(latency) 및 고 파워 요구조건들을 갖는 경향이 있기 때문이다. 이들 바람직하 지 못한 속성들은 디스크 기반의 저장장치를 대부분의 이동 및 휴대 응용들에서 사용되지 못하게 한다. 한편, 내장되고 탈착가능한 카드 형태의 플래시 메모리는 소형 크기, 낮은 전력소모, 고속 및 고 신뢰성 특징들 때문에 이동 및 휴대용 환경에서 이상적으로 적합하다.
EEPROM 및 전기적으로 프로그램 가능한 판독 전용 메모리(EPROM)는, 소거될 수 있고 이들의 메모리 셀들에 새로운 데이터가 기입 또는 "프로그램"되게 할 수 있는 비휘발성 메모리이다. 이들 둘 다는 소스영역과 드레인 영역과의 사이에, 반도체 기판의 채널 영역 내 채널 영역 상에 위치되는, 전계 효과 트랜지스터 구조에서 플로우팅(비접속된) 도전성 게이트를 이용한다. 이때, 제어 게이트는 플로우팅 게이트 위에 제공된다. 트랜지스터의 임계 전압 특성은 플로우팅 게이트 상에 보존되는 전하량에 의해 제어된다. 즉, 플로우팅 게이트 상에 소정 레벨의 전하에 대해서, 소스영역과 드레인 영역 간에 도통시키기 위하여 트랜지스터가 턴 "온"되기 전에 제어 게이트에 인가되어야 하는 대응하는 전압(임계)이 있다.
플로우팅 게이트는 한 범위의 전하들을 유지할 수 있고, 따라서 임계 전압 윈도우 내에서 임의의 임계 전압 레벨로 프로그램될 수 있다. 임계 전압 윈도우의 크기는 장치의 최대 및 최소 임계 레벨들에 의해 경계가 정해지며, 이들은 플로우팅 게이트에 프로그램될 수 있는 전하들의 범위에 대응하게 된다. 임계 윈도우는 일반적으로 메모리 장치의 특성들, 동작 조건들 및 이력(history)에 좌우된다. 윈도우 내에서 각각의 구별되는 분해가능한(resolvable) 임계전압 레벨 범위는 원리적으로 셀의 확정된 메모리 상태를 지정하는데 사용될 수 있다. 마찬가지로, 임계 전압 윈도우가 2이상의 서로 구별되는 영역들로 분할될 때, 각 메모리 셀은 1이상의 비트의 데이터를 저장할 수 있을 것이다.
통상의 2상태 EEPROM 셀에서, 적어도 하나의 전류 구분점(breakpoint) 레벨은 2개의 영역들로 도통 윈도우를 분할하기 위해 설정된다. 셀이 소정의 고정된 전압들을 인가함으로써 판독될 때, 이의 소스/드레인 전류는 구분점 레벨(또는 기준 전류(IREF))과 비교됨으로써 메모리 상태로 결정된다. 판독된 전류가 구분점 레벨의 전류보다 높으면, 셀은 한 논리 상태(예를 들면, "제로" 상태)에 있는 것으로 판정된다. 한편, 전류가 구분점 레벨의 전류보다 작으면, 이 셀은 다른 논리 상태(예를 들면, "1" 상태)에 있는 것으로 판정된다. 따라서, 이와 같은 2 상태 셀은 1비트의 디지털 정보를 저장한다. 외부에서 프로그램될 수 있는 기준 전류원은 종종 구분점 레벨 전류를 발생시키기 위한 메모리 시스템의 부분으로서 제공된다.
메모리 용량을 증가시키기 위하여, 플래시 EEPROM 장치들은 반도체 기술 상태들이 진보됨에 따라서 점점 더 고 밀도로 제조되고 있다. 저장 용량을 증가시키는 또 다른 방법은 각 메모리 셀이 2 이상의 상태들을 저장하게 하는 것이다.
복수-상태 또는 복수-레벨 EEPROM 메모리 셀에 있어서, 도통 윈도우는 하나 이상의 구분점에 의해 2개 이상의 영역들로 분할됨으로써, 각 셀이 하나 이상의 데이터 비트를 저장할 수 있도록 한다. 주어진 EEPROM 어레이가 저장할 수 있는 정보는 각 셀이 저장할 수 있는 상태들의 수에 따라서 증가된다. 복수-상태 또는 복수-레벨 메모리 셀들을 갖는 EEPROM 또는 플래시 EEPROM이 미국 특허 5,172,338호에 개시되어 있다.
메모리 셀로서 작용하는 트랜지스터는 전형적으로 두 메커니즘들 중 한 메커니즘에 의해 "프로그램된" 상태로 프로그램된다. "핫(hot) 전자 주입"에서, 드레인에 인가되는 고전압은 기판 채널 영역을 횡단하는 전자들을 가속시킨다. 동시에, 제어 게이트에 인가되는 고전압은 얇은 게이트 유전체를 통해서 플로우팅 게이트 로 핫 전자들을 가게 한다. "터널링 주입"에서, 고전압은 기판에 대해서 제어 게이트로 인가된다. 이에 따라, 전자들은 기판으로부터 개재된 플로우팅 게이트로 가게 된다.
메모리 장치는 다수의 메커니즘들에 의해 소거될 수 있다. EPROM에 있어서, 메모리는 자외선 조사에 의해 플로우팅 게이트로부터 전하를 제거함으로써 대량으로 소거될 수 있다. EEPROM에 있어서, 얇은 산화물을 통해서 기판채널 영역으로 터널링하기 위하여(즉, 파울러-노다임 터널링) 플로우팅 게이트에서 전자들을 유도하도록 메모리 셀은 고전압을 제어 게이트에 대해서 기판에 인가함으로써 전기적으로 소거될 수 있다. 전형적으로, EEPROM은 한 바이트씩 소거될 수 있다. 플래시 EEPROM에 있어서, 메모리는 한꺼번에 또는 한번에 하나 이상의 블록들을 전기적으로 소거될 수 있는데, 여기서 블록은 메모리의 512 바이트들 혹은 그 이상으로 구성될 수 있다.
메모리 장치들은 전형적으로 카드상에 설치될 수 있는 하나 이상의 메모리 칩들을 포함한다. 각 메모리 칩은 디코더들 및 소거, 기입 및 판독 회로들과 같은 주변 회로들에 의해 지원되는 메모리 셀들의 어레이를 포함한다. 더욱 복잡한 메모리 장치들은 지능적이고 더 높은 레벨의 메모리 동작들 및 인터페이싱을 수행하는 제어기로 동작한다.
오늘날 사용되는 많은 상업적으로 성공한 비휘발성 고체상태 메모리 장치들이 있다. 이들 메모리 장치들은 플래시 EEPROM이거나 이외 다른 유형들의 비휘발성 메모리 셀들을 채용할 수도 있다. 플래시 메모리 및 시스템들과 이들을 제조하는 방법들의 예들은 미국특허들 5,070,032, 5,095,344, 5,315,541, 5,343,063, and 5,661,053, 5,313,421, 6,222,762에 주어져 있다. 특히, NAND 스트링 구조들을 갖는 플래시 메모리 장치들은 미국특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다. 또한, 비휘발성 메모리 장치들은 전하를 저장하기 위한 유전층을 갖는 메모리 셀들로부터 제조된다. 앞에서 기술된 도전성 플로팅 게이터 소자들 대신에, 유전층이 사용된다. 유전 저장 소자를 이용하는 이러한 메모리 장치들 Eitan 등의 "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545에 기술되어 있다. ONO 유전층은 소스 확산부와 드레인 확산부 사이에 채널에 걸쳐 확장하여 있다. 한 데이터 비트를 위한 전하는 드레인에 이웃한 유전층 내 모여지고, 다른 데이터 비트를 위한 전하는 소스에 인접한 유전층 내에 모여진다. 예를 들면, 미국특허 5,768,192 및 6,011,725는 2개의 이산화규소층들 사이에 개재된 트랩핑 유전층을 갖는 비휘발성 메모리 셀을 개시한다. 복수-상태 데이터 저장은 유전체 내 공간적으로 분리된 전하 저장 영역들의 2진 상태들을 개별적으로 판독함으로써 구현된다.
판독 및 프로그램 성능을 개선시키기 위하여, 어레이 내의 복수의 전하 저장 소자들 또는 메모리 트랜지스터들은 병렬로 판독되거나 프로그램된다. 따라서, 한 "페이지"의 메모리 소자들이 함께 판독되거나 프로그램된다. 기존 메모리 아키텍처들에서, 한 행은 전형적으로 몇 개의 인터리빙된 페이지들을 포함하거나 한 페이지를 구성할 수 있다. 페이지의 모든 메모리 소자들은 함께 판독 혹은 프로그램될 것이다.
그러므로, 고용량 및 고성능 비휘발성 메모리에 대한 일반적인 필요성이 있다. 특히, 고성능 및 장치 자원들의 효율적 이용으로 큰 블록들로 메모리 동작들을 수행할 수 있는 고용량 비휘발성 메모리가 있을 필요성이 있다.
발명의 요약
본 발명의 일반적인 면에 따라서, 각각의 메모리 셀을 위한 최소 수의 n+1 데이터 래치들의 효율적 이용은 n비트 메모리가 효율적 데이터 재배치 또는 "페이지 캐시 카피"를 구현할 수 있게 한다. 또한, 데이터 래치들의 동일한 구성은 이웃한 워드라인에 저장된 데이터를 보상을 하여 판독할 수 있게 한다. 이에 따라, 2비트 메모리는 이웃한 워드라인에 저장된 데이터를 보상하여 판독을 구현하고 효율적 데이터 재배치를 위해 메모리 셀당 3개의 데이터 래치들만을 필요로 할 것이다. 유사하게, 3비트 메모리는 이웃한 워드라인에 저장된 데이터를 보상하여 판독을 구현하고 효율적 데이터 재배치를 위해 메모리 셀 당 4개의 데이터 래치들만을 필요로 할 것이다.
각각이 n비트 데이터를 저장하는 한 페이지의 메모리 셀들이 재배치되게 하기 위해서, 이것은 한 페이지의 n비트 데이터를 판독하고, n비트 데이터 각각으로부터 하나씩인 n개의 논리적 페이지들의 단일 비트 데이터가 래치되게, 대응하는 한 페이지의 n 비트 래치들에 래치하고, 임의의 수정된 비트들을 데이터 처리하고 다시 원 래치들에 리턴하고 아울러 리턴되었을 때 그 처리된 데이터를 페이지씩 동시에 프로그래밍하기 위해 페이지씩 n 논리적 데이터 페이지들 각각을 소정의 순서로 셔틀링(shuttling)함으로써 달성된다. 이렇게 하여, 데이터를 토글 아웃하고 돌려보내는 시간의 적어도 일부가 기입 동작 뒤에 묻힐 수 있어, 페이지 카피를 위한 수행을 개선한다.
특히, 모든 메모리 상태들을 결정하기 위해 n 비트 코드의 모든 비트들이 사용될 수 없을 때라도, 프로그래밍을 하기 위해 사용될 수 있는 제 1 데이터 페이지가 프로그래밍을 소거된 상태부터 주어진 프로그램된 상태로 프래그래밍을 할 수 있게 소정의 순서로 데이터 처리를 위해서 논리 데이터 페이지들은 셔틀링된다. 마찬가지로, 추가의 사용가능 페이지는 훨씬 더 상위로 프로그램된 상태들로 프로그래밍이 계속될 수 있게 할 것이다. 모든 코드 비트들이 사용가능해질 때, 프로그래밍은 페이지의 모든 메모리 셀의 타겟 상태가 정의되기 때문에 완료될 수 있다. 이에 따라, 모든 코드 비트들이 사용가능해질 때, 가용한 비트들이 프로그래밍은 페이지의 모든 메모리 셀의 타겟 상태가 정의되기 때문에 완료될 수 있다. 이에 따라, 프로그래밍은 사용가능한 비트들이 허용하는 한 프로그래밍이 시작할 수 있고 모든 코드 비트들이 사용가능할 때 최종으로 완료되는 적응형 풀-시퀀스 모드에서 수행된다.
발명은 상호 관계된 적어도 4개의 면들에서 성능을 향상시키는 이점을 갖는다.
먼저, 적응형 풀-시퀀스(full-sequnece) 모드에서 프로그래밍은 워드라인에 적용되는 프로그래밍 전압이 단조로 증가하는 함수가 되게 한다. 프로그래밍은 전체 임계 윈도우에 걸쳐 최하위 메모리 상태에서 최상위 메모리 상태까지 한 패스에서 행해질 수 있다. 이것은 프로그래밍 전압이 각 패스의 시작에서 초기 프로그래밍 전압부터 다시 재시작해야 할 복수-패스 프로그래밍과는 반대이다.
두 번째로, 적응형 특징은 메모리 상태들을 완전하게 결정하기 위해서 모든 코드 비트들이 다 사용될 수 없을 때에도 프로그래밍을 시작할 수 있게 한다. 프로그래밍은 페이지의 각각의 메모리 셀에 대해 복수-비트 코드의 한 비트라도 사용 가능하는 즉시로 시작할 수 있다.
세 번째로, 각각의 메모리 셀에 프로그래밍이 한번에 한 비트를 점진적으로 추가하여 행해질 수 있기 때문에, 한 그룹의 메모리 셀들을 프로그램하기 위해 제 1 비트 데이터 그룹이 사용될 수 있고 이때 제 2 비트 데이터 그룹이 같은 시간에 데이터 처리됨으로써 준비하고 있는다. 이에 따라, 데이터 처리기간은 프로그래밍 시간 뒤에 묻혀질 수 있다. 본 발명의 캐시 페이지 카피 수법은 n비트 코드에 대해서, n-1 데이터 처리 동작들이 프로그래밍 시간 뒤로 묻혀질 수 있게 함을 알 것이다. 예를 들면, 2비트 코드를 채용했을 때, 한 데이터 처리 동작 기간이 절약된다. 3비트 코드에 대해서, 2개의 데이터 처리 동작 기간들이 절약된다.
마지막으로, 이웃한 워드라인에 대해 후속하여 프로그램되는 데이터에 기인한 교란 효과에 대해 룩-어헤드 정정으로도, 본 발명의 캐시 페이지 카피 수법은 최소의 데이터 래치들을 사용하여 구현될 수 있다. n비트 메모리에 대해서, 데이터 래치들의 수는 메모리 셀 당 n+1이다.
본 발명의 추가의 특징들 및 이점들은 이의 바람직한 실시예의 다음의 설명으로부터 이해될 것이며, 이 설명은 첨부한 도면들에 관련하여 취해질 것이다.
도 1은 본 발명이 구현될 수 있는 비휘발성 메모리 칩의 기능 블록들을 개략적으로 도시한 것이다.
도 2는 비휘발성 메모리 셀을 개략적으로 도시한 것이다.
도 3은 임의의 한 시간에 플로팅 게이트가 선택적으로 저장하고 있을 수 있을 4개의 서로 다른 전하들(Q1-Q4)에 대해 소스-드레인 전류(ID)와 제어 게이트 전압(VCG)간에 관계를 도시한 것이다.
도 4는 NOR 어레이의 메모리 셀들의 예를 도시한 것이다.
도 5a는 NAND 스트링으로 조직된 한 스트링의 메모리 셀들을 개략적으로 도시한 것이다.
도 5b는 도 5a에 도시된 것과 같은 NAND 스트링들(50)로 구성된, NAND 어레이(200)의 메모리 셀들의 예를 도시한 것이다.
도 6은 소거 가능한 블록들로 조직된 메모리 어레이의 예를 개략적으로 도시한 것이다.
도 7은 도 1에 도시된 판독/기입 회로들의 바람직한 배열을 개략적으로 도시한 것이다.
도 8은 도 7에 도시된 판독/기입 회로들 중에 판독/기입 스택들의 배열을 도시한 것이다.
도 9는 도 8의 판독/기입 스택의 기능 블록도이다.
도 10은 선택된 워드라인에 적용되는 계단 파형 형태의 일련의 프로그래밍 전압 펄스를 도시한 것이다.
도 11(0)-11(3)은 바람직한 2비트 논리 코드("LM" 코드)로 엔코딩된 4상태 메모리의 논리 페이지별 프로그래밍을 도시한 것이다.
도 12(0)-12(2)는 바람직한 2비트 논리 코드("LM" 코드)에 엔코딩된 4상태 메모리의 풀-시퀀스 프로그래밍을 도시한 것이다.
도 13a는 2비트 LM 코드로 엔코딩된 4상태 메모리의 하위 비트를 분별하는데 요구되는 판독 동작을 도시한 것이다.
도 13b는 2비트 LM 코드로 엔코딩된 4상태 메모리의 상위 비트를 분별하는데 요구되는 판독 동작을 도시한 것이다.
도 14(0)-14(4)는 바람직한 3비트 논리 코드("LM" 코드)로 엔코딩된 8상태 메모리의 프로그래밍을 도시한 것이다.
도 15는 2비트 메모리 셀들을 구비하며, 이웃한 워드라인들 상의 메모리 셀들간에 유핀 효과를 최소화하기 위해 최적의 시퀀스로 페이지들의 프로그램되는 메모리의 예를 도시한 것이다.
도 16은 제 1 위치에 한 페이지의 메모리 셀들의 데이터가 메모리 어레이 내 제 2 위치에 페이지에 카피되는 페이지 카피 동작을 도시한 것이다.
도 17은 메모리 내 목적지 위치에 카피되기 전에 외부 제어기에 의해 임의의 오류에 대해 판독 데이터가 정정되는 바람직한 페이지 카피 동작을 도시한 것이다.
도 18은 발명의 일반적인 실시예에 따른 캐시 페이지 카피 수법을 위한 흐름도이다.
도 19(0)-19(3)은 도 18에 도시된 캐시 카피 수법의 엔코딩 및 프로그래밍 부분들을 위한 2비트 LM 코드를 사용하는 예를 도시한 것이다.
도 20(0)-20(4)는 도 18에 도시된 캐시 카피 수법의 엔코딩 및 프로그래밍 부분들을 위해 3비트 LM 코드를 사용한 예를 도시한 것이다.
도 21a-21b는 3 데이터 래치들을 사용한 2비트 메모리의 예에서 LA 판독을 수행하는 바람직한 방법을 기술하는 흐름도이다.
메모리 시스템
도 1 내지 도 9는 본 발명의 다양한 면들이 구현될 수 있는 메모리 시스템들의 예를 도시한 것이다.
도 10 내지 도 17은 메모리 시스템들을 위한 프로그래밍 및 판독 기술들의 예들을 도시한 것이다.
도 18 내지 도 21은 본 발명의 캐시 페이지 카피 기술들의 실시예를 도시한 것이다.
도 1은 본 발명이 구현될 수 있는 비휘발성 메모리 칩의 기능 블록들을 개략적으로 도시한 것이다. 메모리 칩(100)은 2차원 어레이의 메모리 셀들(200), 제어회로(210), 및 디코더들, 판독/기입 회로들과 멀티플렉서들과 같은 주변회로들을 포함한다.
메모리 어레이(200)는 행 디코더들(230A, 230B로 분할됨)을 통해서 워드라인들에 의해 그리고 컬럼 디코더들(260A, 260B)(도 4 및 도 5 참조)를 통해서 비트라인들에 의해 어드레스될 수 있다. 판독/기입 회로들(270A, 270B로 분할됨)은 한 페이지의 메모리 셀들이 병렬로 판독되거나 프로그램되게 한다. 데이터 I/O 버스(231)는 판독/기입 회로들(270)에 결합된다.
바람직한 실시예에서, 페이지는 동일 워드라인을 공유하는 인접한 한 행의 메모리 셀들로부터 구성된다. 한 행의 메모리 셀들이 복수의 페이지들로 분할되는 또 다른 실시예에서, 블록 멀티플렉서들(250A, 250B로 분할됨)은 개개의 페이지들에 판독/기입 회로들(270)을 멀티플렉스하기 위하여 제공된다. 예를 들면, 각각 메모리 셀들의 기수 및 우수 컬럼들에 의해 형성되는, 2개의 페이지들은 판독/기입 회로들에 멀티플렉스된다.
도 1은 각종 주변 회로들에 의한 메모리 어레이(200)에의 액세스가 각 측의 액세스 라인들 및 회로의 밀도가 절반으로 감소되도록 어레이의 서로 대향하는 측들 상에서 대칭 방식으로 구현되는 바람직한 구성을 도시한 것이다. 따라서, 행 디코더는 행 디코더들(230A, 230B)로 분할되고 컬럼 디코더는 컬럼 디코더들(260A, 260B)로 분할된다. 한 행의 메모리 셀들이 복수의 블록들로 분할되는 실시예에서, 페이지 멀티플렉서(250)는 페이지 멀티플렉서들(250A, 250B)로 분할된다. 유사하게, 판독/기입 회로들(270)은 하부로부터 비트라인들에 접속되는 판독/기입 회로들(270A)과, 어레이(200)의 최상부로부터 비트라인들에 접속되는 판독/기입 회로들(270B)로 분할된다. 이에 따라, 판독/기입 모듈들의 밀도와, 따라서 감지 모듈들(380)의 밀도는 근본적으로 1/2만큼 감소된다.
제어회로(110)는 메모리 어레이(200) 상에 메모리 동작들을 수행하도록 판독/기입 회로들(270)과 협동하는 온-칩 제어기이다. 제어회로(110)는 전형적으로, 상태 머신(112), 그리고 온-칩 어드레스 디코더 및 전력 제어 모듈(명확히 도시되지 않음)과 같은 그외의 회로들을 포함한다. 상태 머신(112)은 메모리 동작들의 칩 레벨 제어를 제공한다. 제어회로는 외부 메모리 제어기를 통해 호스트와 통신한다.
메모리 어레이(200)는 전형적으로 행들 및 컬럼들로 배열되고 워드라인들 및 비트라인들에 의해 어드레스될 수 있는 2차원 어레이의 메모리 셀들로서 조직된다. 어레이는 NOR형 혹은 NAND형 아키텍처에 따라 형성될 수 있다.
도 2는 비휘발성 메모리 셀을 개략적으로 도시한 것이다. 메모리 셀(10)은 이를테면 플로팅 게이트 혹은 유전층과 같은, 전하 저장유닛(20)을 갖는 전계효과 트랜지스터에 의해 구현될 수 있다. 또한, 메모리 셀(10)은 소스(14), 드레인(16), 및 제어 게이트(30)를 포함한다.
오늘날 사용되는 많은 상업적으로 성공한 비휘발성 고체상태 메모리 장치들이 있다. 이들 메모리 장치들은 서로 다른 유형들의 메모리 셀들을 채용할 수도 있고, 각 유형은 하나 이상의 전하 저장 소자를 갖는다.
전형적인 비휘발성 메모리 셀들은 EEPROM 및 플래시 EEPROM을 포함한다. EEPROM 셀들 및 이들을 제조하는 방법들의 예들은 미국특허 5,595,924에 주어져 있다. 플래시 EEPROM 셀들, 메모리 시스템들에서 이들의 사용 및 이들을 제조하는 방법들의 예들이 미국특허들 5,070,032, 5,095,344, 5,315,541, 5,343,063, 5,661,053, 5,313,421, 및 6,222,762에 주어져 있다. 특히, NAND 셀 구조들을 가진 메모리 장치들의 예들은 미국특허들 5,570,315, 5,903,495, 6,046,935에 기술되어 있다. 또한, 유전 저장소자를 이용하는 메모리 장치들의 예들은 Eitan 등의 "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545과, 미국특허들 5,768,192 및 6,011,725에 기술되어 있다.
실제로, 셀의 메모리 상태는 통상적으로 기준 전압이 제어 게이트에 인가될 때 셀의 소스 전극과 드레인 전극들을 지나는 도통 전류를 감지함으로써 판독된다. 따라서, 셀의 플로우팅 게이트 상에 각각 주어진 전하에 대해서, 고정된 기준 제어 게이트 전압에 관한 대응하는 도통 전류가 검출될 수 있다. 유사하게, 플로우팅 게이트 상에 프로그램 가능한 전하 범위는 대응하는 임계 전압 윈도우 또는 대응하는 도통 전류 윈도우를 규정한다.
대안적으로, 분할된 전류 윈도우 중 도통 전류를 검출하는 대신에, 제어 게이트에서 테스트 하에 소정 메모리 상태에 대한 임계 전압을 설정하거나 도통 전류가 임계 전류보다 낮거나 높은지를 검출하는 것이 가능하다. 한 구현에서, 임계 전류에 대한 도통 전류의 검출은 도통 전류가 비트라인 용량을 통해서 방전하는 레이 트를 검사함으로써 달성된다.
도 3은 플로우팅 게이트가 선택적으로 임의의 한 시간에 저장할 수 있는 4개의 서로 다른 전하들(Q1 ~ Q4)에 대한 제어 게이트 전압(VCG)과 소스-드레인 전류(ID)간의 관계를 도시한다. 4개의 실선 ID 대 VCG 곡선들은 4개의 가능한 메모리 상태들에 각각 대응하는 메모리 셀의 플로우팅 게이트 상에 프로그램될 수 있는 4개의 가능한 전하 레벨들을 나타낸다. 예로서, 셀들의 모집단의 임계 전압 윈도우는 0.5V 내지 3.5V 범위일 수 있다. 각각 하나는 소거된 상태이고 6개는 프로그램된 상태들을 나타내는 7개의 메모리 상태들 "Gr", "A", "B", "C", "D", "E", "F"은 임계 윈도우를 각각 0.5V 간격으로 5개의 영역들로 임계 윈도우를 분할함으로써 경계가 정해질 수 있다. 예를 들면, 2㎂의 기준 전류(IREF)가 도시된 바와 같이 사용된다면, Q1으로 프로그램되는 셀은 이의 곡선이 VCG=0.5V 및 1.0V로 경계가 정해진 임계 윈도우의 영역에서 IREF와 교차하기 때문에 메모리 상태 "A"에 있는 것으로 간주될 수 있다. 마찬가지로, Q4는 메모리 상태 "E"에 있다.
상기 설명으로부터 알 수 있는 바와 같이, 메모리 셀이 저장할 상태들이 많을수록, 임계 윈도우는 더욱 세밀하게 분할된다. 이는 필요로 되는 분해능을 달성할 수 있기 위해서 프로그래밍 및 판독 동작들의 더 높은 정밀도를 필요로 할 것이다.
도 4는 메모리 셀들의 NOR 어레이의 예를 도시한다. 메모리 어레이(200)에서, 메모리 셀들의 각각의 행은 데이지-체인 방식으로 이들의 소스들(14) 및 드레 인들(16)에 의해 접속된다. 이 설계는 가상 그라운드 설계라고도 한다. 한 행 내 셀들(10)은 이를테면 워드라인(42)과 같은, 워드라인에 접속된 제어 게이트들(30)을 구비한다. 컬럼의 셀들은 이를테면 비트라인들(34, 36)과 같은, 선택된 비트라인들에 각각 접속되는 소스들 및 드레인들을 갖는다.
도 5a는 NAND 스트링으로 조직된 한 스트링의 메모리 셀들을 개략적으로 도시한 것이다. NAND 스트링(50)은 소스들 및 드레인들에 의해 데이지-체인되는 일련의 메모리 트랜지스터들(M1, M2,..., Mn)(예를 들면, n=4, 8, 16 또는 그 이상)로 이루어진다. 한 쌍의 선택 트랜지스터들(S1, S2)은 각각 NAND 스트링의 소스 단자(54) 및 드레인 단자(56)를 통해서 외부에 메모리 트랜지스터들 체인의 접속을 제어한다. 메모리 어레이에서, 소스 선택 트랜지스터(S1)가 턴 온 될 때, 소스 단자는 소스 라인에 결합된다(도 5b 참조). 마찬가지로, 드레인 선택 트랜지스터(S2)가 턴 온 될 때, NAND 스트링의 드레인 단자는 메모리 어레이의 비트라인에 결합된다. 이 체인에 각 메모리 트랜지스터(10)는 메모리 셀로서 작용한다. 이것은 의도된 메모리 상태를 나타내기 위해서 주어진 전하량을 저장하기 위해 전하 저장 소자(20)를 갖는다. 각 메모리 트랜지스터의 제어 게이트(30)는 판독 및 기입 동작들에 대해 제어한다. 도 5b에서 알게 되는 바와 같이, 한 행의 NAND 스트링의 대응하는 메모리 트랜지스터들의 제어 게이트들(30)은 동일 워드라인에 모두 접속된다. 마찬가지로, 선택 트랜지스터들(S1, S2)의 각각의 제어 게이트(32)는 각각 소스 단자(54) 및 드레인 단자(56)를 통해 NAND 스트링에 제어 액세스를 제공한다. 마찬가지로, 한 행의 NAND 스트링의 대응하는 선택 트랜지스터들의 제어 게이트들(32)은 동일 선택 라인에 모두 접속된다.
NAND 스트링 내의 어드레스된 메모리 트랜지스터(10)가 프로그래밍 동안 판독되거나 검증될 때, 이의 제어 게이트(30)에는 적절한 전압이 공급된다. 동시에, NAND 스트링(50) 내 비-어드레스된 메모리 트랜지스터들의 나머지는 자신들의 제어 게이트들 상에 충분한 전압을 인가함으로써 완전히 턴 온 된다. 이에 따라, 개별적인 메모리 트랜지스터의 소스로부터 NAND 스트링의 소스 단자(54)까지의 도통 경로가 효과적으로 생성되고 마찬가지로 이 셀의 개별적인 메모리 트랜지스터의 드레인으로부터 드레인 단자(56)까지의 도통 경로가 효과적으로 생성된다. 이와 같은 NAND 스트링 구조들을 갖는 메모리 장치들이 미국 특허 5,570,315, 5,903,495, 6,046,935에 개시되어 있다.
도 5b는 도 5a에 도시된 것과 같은 NAND 스트링들(50)로 구성된, NAND 어레이(200)의 메모리 셀들의 예를 도시한 것이다. NAND 스트링들의 각 컬럼을 따라서, 비트라인(36)과 같은 비트라인은 각 NAND 스트링의 드레인 단자(56)에 결합된다. 각 뱅크의 NAND 스트링들을 따라서, 소스 라인(34)과 같은 소스 라인은 각 NAND 스트링의 소스 단자들(54)에 결합된다. 또한, 한 뱅크의 NAND 스트링들 내 한 행의 메모리 셀들을 따른 제어 게이트들은 이를테면 워드라인(42)과 같은, 워드라인에 접속된다. 한 뱅크의 NAND 스트링들 내 한 행의 선택 트랜지스터들을 따른 제어 게이트들은 이를테면 선택 라인(44)과 같은 선택 라인에 접속된다. 한 뱅크의 NAND 스트링들 내 전체 한 행의 메모리 셀들은 한 뱅크의 NAND 스트링들의 워드라인들 및 선택 라인들 상에 적절한 전압들에 의해 어드레스될 수 있다. NAND 스트링 내에 메모리 트랜지스터가 판독되고 있을 때, 스트링을 통해 흐르는 전류가 필수적으로, 판독되는 셀에 저장된 전하 레벨에 좌우되도록, 스트링 내 나머지 메모리 트랜지스터들은 이들의 연관된 워드라인들을 통해서 거의 턴 온 되지 않는다.
도 6은 소거 가능한 블록들로 조직된 메모리 어레이의 예를 개략적으로 도시한 것이다. 전하 저장 메모리 장치들의 프로그래밍은 이의 전하 저장 소자들에 더 많은 전하를 부가하는 결과를 초래할 수 있을 뿐이다. 그러므로 프로그램 동작에 앞서, 메모리 셀의 전하 저장 소자에 현존하는 전하는 제거(또는 소거)되어야 된다. EEPROM과 같은 비휘발성 메모리는 셀들의 전체 어레이(200) 또는 이 어레이의 셀들의 상당량의 그룹들이 함께 전기적으로(즉, 플래시로) 소거될 때 "플래시" EEPROM이라 언급된다. 일단 소거되면, 한 그룹의 셀들은 재프로그램될 수 있다. 함께 소거 가능한 한 그룹의 셀들은 하나 이상의 어드레스가능한 소거 단위(300)로 구성될 수 있다. 소거 단위 또는 블록(300)은 전형적으로 하나 이상의 페이지들의 데이터를 저장하는데, 이 페이지는 최소 프로그래밍 및 판독 단위이지만, 하나 이상의 페이지가 단일 동작으로 프로그램되거나 판독될 수도 있다. 각 페이지는 전형적으로, 하나 이상의 데이터 섹터들의 데이터를 저장하는데, 이 섹터의 크기는 호스트 시스템에 의해 규정된다. 일 예는 자기 디스크 드라이브들에 확립된 표준에 따라, 한 섹터의 512 바이트 사용자 데이터 및 이에 더하여 사용자 데이터 및/또는 이를 저장하는 블록에 관한 몇 바이트들의 오버헤드 정보이다.
도 6에 도시된 예에서, 메모리 어레이(200) 내 개개의 메모리 셀들은 워드라인들(WL0-WLy)과 같은 워드라인들(42) 및 비트라인들(BL0-BLx)과 같은 비트라인 들(36)에 의해 액세스될 수 있다. 메모리는 이를테면 소거 블록들 0, 1,...,m과 같은 소거 블록들로 조직된다. 도 5a 및 도 5b를 참조하면, NAND 스트링(50)이 16개의 메모리 셀들을 내포할 경우, 어레이 내 제 1 뱅크의 NAND 스트링들은 선택라인들(44), 그리고 WL0 내지 WL15과 같은 워드라인들(42)에 의해 액세스될 것이다. 소거 블록 0은 제 1 뱅크의 NAND 스트링들의 모든 메모리 셀들이 함께 소거되게 조직된다. 또 다른 메모리 아키텍처에서, 하나 이상의 뱅크의 NAND 스트링들은 함께 소거될 수 있다.
도 7은 도 1에 도시된 판독/기입 회로들의 바람직한 구성을 개략적으로 도시한 것이다. 판독/기입 회로들(270)은 한 뱅크의 분할된 판독/기입 스택들(400)로서 구현되고 한 그룹("페이지"라고도 함)의 메모리 셀들이 병렬로 판독되거나 프로그램될 수 있게 한다. 앞에 기술된 바와 같이, 메모리 아키텍처는 한 세트의 판독/기입 회로들이 병렬로 대응하는 한 세트의 메모리 셀들을 위해 사용되게 하는 아키텍처이다. 도 8에서 알게 되는 바와 같이, 각각의 판독/기입 스택(400)은 페이지의 일부분에 사용하기 위한 판독/기입 회로들의 그룹화이다. 페이지 내에 p 메모리 셀들이 있다면, 각 스택은 k 메모리셀들의 일부분에 사용된다. 판독/기입 스택들의 동작은 스택 제어기(410)에 의해 제어된다.
도 8은 도 7에 도시된 판독/기입 회로들 간에 판독/기입 스택들의 배열을 도시한 것이다. 각각의 판독/기입 스택(400)은 일 그룹의 k 비트라인들에 병렬로 동작한다. 페이지가 p=r*k 비트라인들을 갖고 있다면, r개의 판독/기입 스택들(400-1,..., 400-r)이 있게 될 것이다.
병렬로 동작하는 한 뱅크의 분할된 판독/기입 스택들(400) 전체는 한 행을 따라 한 블록(또는 페이지)의 p 셀들이 병렬로 판독 또는 프로그램되게 한다. 이에 따라, 한 행의 셀들 전체에 대해 p개의 판독/기입 모듈들이 있게 될 것이다. 각 스택이 k개의 메모리 셀들에 사용되고 있기 때문에, 뱅크 내 판독/기입 스택들의 총 수는 r=p/k로 주어진다. 예를 들면, r이 뱅크 내 스택들의 수라면, p=r*k이다. 일 예로서 메모리 어레이는 p=512 바이트(512x8 비트), k=8을 가질 수 있고 따라서 r=512이다. 바람직한 실시예에서, 블록은 연속한 전체 한 행의 셀들이다. 다른 실시예에서, 블록은 행 내에 한 부분의 셀들이다. 예를 들면, 한 부분의 셀들은 전체 행의 1/2 또는 전체 행의 1/4일 수 있을 것이다. 한 부분의 셀들은 연속한 인접한 셀들이거나 하나 걸러 한 셀, 또는 소정 수로 걸러 있는 셀들일 수도 있을 것이다.
400-1과 같은 각 판독/기입 스택은 한 부분의 k개의 메모리 셀들에 병렬로 사용되는 한 스택의 감지 증폭기들(212-1 내지 212-k)을 필수로 포함한다. 바람직한 감지 증폭기는 개시된바 전체를 참조로 여기에 포함시키는 미국특허공개 2004-0109357-A1에 개시되어 있다.
스택 버스 제어기(410)는 라인들(411)을 통해 판독/기입 회로(370)에 제어 및 타이밍 신호들을 제공한다. 스택 버스 제어기 자체는 라인들(311)을 통해 메모리 제어기(310)에 따른다. 각 판독/기입 스택(400)간에 통신은 상호접속된 스택 버스(431)에 의해서 행해지고 스택 버스 제어기(410)에 의해 제어된다. 제어라인들(411)은 스택 버스 제어기(410)로부터 판독/기입 스택들(400-1)의 성분들에 제어 및 클럭 신호들을 제공한다.
바람직한 구성에서, 스택 버스는 공통 프로세서(500)와 한 스택의 감지 증폭기들(212)간에 통신을 위한 SABus(422), 그리고 프로세스와 한 스택의 데이터 래치들(430) 간에 통신을 위한 DBus(423)로 분할된다.
한 스택의 데이터 래치들(430)은 스택에 연관된 각각의 메모리 셀마다 하나씩인 데이터 래치들(430-1 내지 430-k)로 구성된다. I/O 모듈(440)은 데이터 래치들이 I/O 버스(231)를 통해 외부와 데이터를 교환할 수 있게 한다.
또한, 공통 프로세서는 오류 상태와 같은 메모리 동작의 상태를 나타내는 상태신호의 출력을 위한 출력(507)을 포함한다. 상태신호는 OR 결선(Wired-Or) 구성으로 플래그 버스(FLAG BUS)(509)에 연결된 n-트랜지스터(550)의 게이트를 구동하기 위해 사용된다. 플래그 버스는 제어회로(110)에 의해 프리차지(precharge)되는 것이 바람직하며 판독/기입 스택들 중 어느 하나에 의해 상태신호가 발현되었을 때 풀 다운(pull down) 될 것이다.
도 9는 도 8의 판독/기입 스택의 기능 블록도이다. 필수적으로, 각각의 판독/기입 스택은 페이지의 일부인 k개의 메모리 셀들을 위해 병렬로 사용된다. 판독/기입 스택은 한 스택의 감지 증폭기들(212-1 내지 212-k)과 한 스택의 데이터 래치들(430-1 내지 430-k)을 내포한다. 한 스택의 감지 증폭기들 및 한 스택의 데이터 래치들은 이들 간에 데이터를 처리할 수 있는 공통 프로세서(500)를 공유한다. 어떤 한 시간에 공통 프로세서(500)는 주어진 메모리 셀에 관계된 데이터를 처리한다. 예를 들면, 비트라인(1)에 결합된 메모리 셀에 대해서, 대응하는 감지 증폭기(212-1)는 메모리 셀로부터 감지된 데이터를 감지 증폭기 래치, SA 래치(214-1) 에 래치한다. 마찬가지로, 대응하는 한 세트의 데이터 래치들(430-1)은 비트라인(1)에 결합된 메모리 셀에 연관된 입력 또는 출력 데이터를 저장한다. 바람직한 실시예에서, 한 세트의 데이터 래치들(430-1)은 (q+1) 비트들의 정보를 저장하기 위한 한 세트의 데이터 래치들(434-0,..., 434-q), 혹은 각각 DLO, DLl, ..., DLq을 포함한다.
한 페이지의 메모리 셀들은 공통 워드라인을 공유하며 이 페이지의 각 메모리 셀은 비트라인을 통해 감지 증폭기에 결합된다. 한 페이지의 메모리 셀들이 판독 혹은 기입될 때, 이것은 한 페이지의 메모리 셀들에 연관된 워드라인으로부터 판독되거나 이에 기입되는 것으로서 언급되기도 한다. 마찬가지로, 한 페이지의 메모리 셀에 연관된 데이터는 한 페이지의 데이터라고도 한다.
이러한 판독/기입 회로들은 전체 개시된 바를 여기 참조로 포함시키는, 2006년 6월 29일에 공개된 미국특허출원 공개 US-2006-0140007-A1에 기술되어 있다.
도 10은 선택된 워드라인에 인가되는 계단 파형 형태의 일련의 프로그래밍 전압 펄스들을 도시한 것이다. 셀이 주어진 상태로 프로그램될 때, 플로팅 게이트에 증분되는 전하들을 추가하려고 할 때마다, 셀에 연속적인 프로그래밍 전압 펄스들이 가해진다. 프로그래밍 펄스들 사이에서, 셀의 소스-드레인 전류를 구분점 레벨에 관하여 판정하기 위해 셀은 다시 판독되거나 검증된다. 프로그래밍은 요망되는 상태에 도달한 것으로 검증되었을 때 셀에 대해 멈춘다. 사용되는 프로그래밍 펄스열은 메모리 셀의 전하 저장유닛에 프로그램된 축적된 전자들을 중화하기 위해서 증가하는 기간 혹은 진폭을 가질 수 있다. 일반적으로 프로그래밍 회로들은 일 련의 프로그래밍 펄스들을 선택된 워드라인에 인가한다. 이렇게 하여, 제어 게이트들이 워드라인에 접속되는 한 페이지의 메모리 셀들이 함께 프로그램될 수 있다. 페이지의 메모리 셀이 이의 타겟 상태로 프로그램되었을 때는 언제나, 이것은 페이지의 모든 셀들이 프로그램-검증될 때까지 다른 셀들이 계속하여 프로그래밍되는 동안 프로그램이 금지된다.
셀간 결합("유핀 효과")
한 메모리 셀의 전하 저장 소자에 프로그램된 전하는 이웃한 메모리 셀의 전계를 교란시키는 전계를 야기한다. 메모리 셀이 제 1 필드 환경 하에서 프로그램-검증되고 나중에 상이한 전하들로 후속하여 프로그램되는 이웃한 셀들에 기인한 다른 필드 환경 하에 다시 판독된다면, 판독 정확성은 "유핀 효과"라고 하는 것에 의해 영향을 받을 수 있다. 반도체 메모리들에 훨씬 더 높은 집적도로, 메모리 셀들간에 저장된 전하들에 기인한 전계의 교란(유핀 효과)은 셀간 간격이 줄어듦에 따라 감지될 정도로 증가하게 된다.
유핀 효과는 프로그램-검증 시간과 프로그램된 이웃한 셀들의 후속된 판독시간 간에 셀에 대한 필드 환경에 비대칭성을 최소화함으로써 완화될 수 있다. 이 문제는 행을 따라, 비트라인들에 걸쳐 있고(BL-BL 유핀 효과), 메모리 어레이의 워드라인들에 걸쳐있는 컬럼을 따라 있는(WL-WL 유핀 효과) 이웃한 셀들에 영향을 미친다.
BL-BL 유핀 효과를 감소시키는 한 방법은 2진 프로그래밍의 한 패스간에 전하들에 큰 변화를 피하는 복수-비트 코딩을 채택하는 것이다. 이러한 특징들을 가 진 바람직한 코딩은 "LM" 코딩에 의해 주어진다.
WL-WL 유핀 효과를 감소시키는 한 방법은 최적의 순서로 메모리 어레이에 페이지들을 프로그램하는 것이다.
WL-WL 유핀 효과를 정정하는 한 방법은 "룩-어헤드" 또는 "LS" 정정을 사용하여, 프로그램 페이지들을 판독하는 것이다.
2비트 또는 4-상태 메모리를 위한 예시적으로 바람직한 "LM" 코딩
도 11(0)-11(3)은 바람직한 2비트 논리 코드("LM" 코드)로 엔코딩된 4-상태 메모리의 논리적 페이지별 프로그래밍을 도시한 것이다. 페이지의 각 메모리 셀로부터 2개의 코드 비트들은 2개의 논리 페이지들을 형성하며 각 페이지는 페이지의 모든 메모리 셀들로부터 구성된 한 코드 비트들로부터 형성된다. 프로그래밍은 하위 페이지 다음에 상위 페이지로 논리 페이지별로 수행될 수 있다. 이 코드는 무장애(fault-tolerance)를 제공하며 유핀 효과에 기인한 BL-BL을 완화시킨다. 도 11(0)은 4-상태 메모리 어레이의 임계 전압 분포들을 도시한 것이다. 각 메모리 셀의 가능한 임계 전압들은 4개의 가능한 메모리 상태들 "Gr", "A", "B", "C"의 경계를 정하기 위해 4개의 영역들로 분할되는 임계 윈도우에 걸쳐 있다. "Gr"은 엄밀한 분포 내의 소거된 상태인 그라운드 상태이며, "A", "B" 및 "C"은 점진적으로 프로그램된 상태들이다. 판독 동안에, 4개의 상태들은 3개의 분계 구분점들 DA, DB, DC에 의해 경계가 정해진다.
도 11(3)은 4개의 가능한 메모리 상태들을 나타내기 위한 바람직한 2비트 LM 코딩을 도시한 것이다. 메모리 상태들(즉, "Gr", "A", "B", "C") 각각은 한 쌍의 "상위, 하위" 코드 비트들, 즉 "11", "01", "00" 및 "10"에 의해 각각 나타내어진다. LM 코딩은 상위 및 하위 비트들이 상태들 "A" 및 "C"에 대해 반전되는 점에서 종래의 그레이 코드와는 다르다. "LM" 코드는 미국특허 6,657,891에 개시되어 있으며 전하들에 큰 변화를 요구하는 프로그램 동작들을 피함으로써 이웃한 플로팅 게이트들간에 전계효과 커플링을 감소시키는데에 잇점이 있다. 도 11(2) 및 도 11(3)에서 알게 되는 바와 같이, 각각의 프로그래밍 동작은 임계 전압들 VT에 완만한 변화로부터 명백한 바와 같이 전하 저장유닛에 전하들의 변화는 완만하게 된다.
코딩은 "하위" 및 "상위"인 2 코드 비트들이 개별적으로 프로그램 및 판독될 수 있게 설계된다. 하위 비트를 프로그래밍할 때, 셀의 임계 레벨은 "소거된" 영역에 남아 있거나 임계 윈도우의 "하위 중위(middle)" 영역으로 옮겨진다. 상위 비트를 프로그래밍할 때, 이들 두 영역들 중 어느 하나에 셀의 임계 레벨은 임계 윈도우의 "하위 중간(intermediate)" 영역에서 약간 더 높은 레벨로 더 높아진다.
도 11(1) 및 도 11(2)은 2비트 LM 코드를 사용한 하위 페이지 프로그래밍을 도시한 것이다. 무장애성 LM 코드는 임의의 중간 상태들을 통해 거쳐가는 임의의 후속되는 상위 페이지 프로그래밍을 피하도록 설계된다. 이에 따라, 제 1 단계로서 하위 페이지 프로그래밍은 셀을, 하위 비트가 "1"이라면 "소거된" 혹은 "Gr" 상태인 상태에 있게 혹은 하위 비트가 "0"이라면 "하위 중간" 상태로 프로그램되게 한다. 기본적으로, "Gr" 혹은 "그라운드" 상태는 철저히 소거된 상태들을, 명확히 정 의된 한 범위의 임계값들 이내로 프로그램되게 함으로써 엄밀한 분포를 갖는 "소거된" 상태이다. "하위 중간" 상태들은 메모리 상태 "A"와 메모리 상태 "B" 간에 걸쳐있는 임계 전압들의 넓은 분포를 가질 수 있다. 프로그래밍 동안, "하위 중간" 상태는 DA와 같은 개략적 분계점에 관해서 검증된다.
도 11(2) 및 도 11(3)은 2비트 LM 코드를 사용한 상위 페이지 프로그래밍을 도시한 것이다. 상위 페이지 프로그래밍은 제 1 단계인 하위 페이지 프로그램에 기초하여 수행된다. 주어진 상위 비트는 하위 비트의 값에 따라 서로 다른 메모리 상태들을 나타낼 수 있다. 제 2 단계의 프로그래밍에서, 셀이 하위 비트가 "1"에 있을 때 "1"로 상위 비트를 가질 것이라면, 즉 (1,1)이라면, 이 셀에 대한 프로그래밍은 없고 셀은 "Gr" 상태에 있게 된다. 하위 비트가 "1"에 있을 때 상위 비트가 "0"이라면, 즉 (0, 1)이라면, 셀은 "Gr" 상태에서 "A" 상태로 프로그램된다. "A"로의 프로그래밍 동안에, 검증은 분계점 DVA에 대해 행해진다. 반면, 셀이 하위 비트가 "0"에 있을 때 "0"으로서 상위 비트를 가질 것이라면, 즉 (0,0)이라면, 셀은 "하위 중간" 상태에서 "B"로 프로그램된다. 프로그램 검증은 분계점 DVB에 대해 행해진다. 마찬가지로, 셀이 하위 비트가 "0"에 있을 때 "1"로서 상위 비트를 갖는다면, 즉 (1,0)이라면, 셀은 "하위 중간" 상태에서 "C"로 프로그램될 것이다. 프로그램 검증은 분계점 DVC에 대해 행해진다. 상위 페이지 프로그래밍은 "Gr" 상태 혹은 "하위 중간" 상태에서 다음 이웃한 메모리 상태로의 프로그래밍만을 수반하기 때문에, 단계간에 어떠한 상당량의 전하들도 변경되지 않는다. 또한, "Gr"에서 개략적 "하위 중간" 상태로의 하위 페이지 프로그래밍은 시간을 절약하게 설계된다. 각각의 프로그래밍 패스(pass)에서, 증가하는 프로그래밍 펄스들은 다시 시작되고 초기 Vpgm0부터 상승된다(rame up)(도 10 참조).
또 다른 바람직한 실시예에서, "신속 패스 기입" 프로그래밍 기술이 구현된다. 셀의 프로그래밍이 검증 분계 지점에 가까이 다가갈 때는 언제나, 프로그래밍은 비트라인 전압의 적합한 바이어싱에 의해서 혹은 프로그래밍 펄스들을 수정함으로써 저속(즉, 더 미세한) 모드로 전환될 것이다. 이에 따라, 타겟 상태를 넘어설 위험없이 초기에 신속한 수렴을 위해 더 큰 프로그래밍 스텝들이 사용될 수 있다. "QPW" 프로그래밍 알고리즘은 "Methods for Improved Program- Verify Operations in Non- Volatile Memories" 명칭의 2005년 12월 29일에 출원된 미국특허출원 11/323,596에 개시되어 있으며, 이의 전체 개시된 바를 참조로 여기에 포함시킨다.
도 12(0)-12(2)는 바람직한 2비트 논리 코드("LM" 코드)로 엔코딩된 4상태 메모리의 풀-시퀀스 프로그래밍을 도시한 것이다. 도 11(0)과 유사하게, 도 12(0)는 접지 상태 "Gr"로서 소거된 상태와 점진적으로 더 프로그램된 메모리 상태들 "A", "B", 및 "C"를 갖는 4상태 메모리 어레이의 임계 전압 분포들을 도시한 것이다. 도 12(1)-12(2)는 모든 2 비트는 "Gr" 상태에서 곧바로 프로그램될 타겟 상태를 분별하기 위해서 2비트가 모두 사용될 수 있는 풀-시퀀스 프로그래밍 수법을 도시한 것이다. 프로그래밍 펄스들은 "11"을 "A" 상태로 프로그래밍하기 위해 임계 기준 DVA를 사용하고, 이어서 "01"을 "B" 상태로 프로그래밍하기 위해 DVB를 사용하 고, 마지막으로 "10"을 "C" 상태로 프로그래밍하기 위해 DVC를 사용하여 검증하는 1 프로그래밍 패스에서 Vpgm0부터 단조로 증가할 것이다. 메모리 셀이 일단 프로그램-검증되면, 이것은 프로그램-금지된다. 페이지에 대한 프로그래밍은 마지막 셀이 프로그램-검증되었을 때 종료된다.
도 13a는 2비트 LM 코드로 엔코딩된 4상태 메모리의 하위 비트를 분별하는데 요구되는 판독 동작을 도시한 것이다. 디코딩은 상위 페이지가 프로그램되어 있는지 여부에 따를 것이다. 상위 페이지가 프로그램되어 있다면, 하위 페이지를 판독하는 것은 분계 임계 전압(DB)에 대해 readB의 1 판독 패스를 요구할 것이다. 반면, 상위 페이지가 아직 프로그램되지 않았다면, 하위 페이지는 "중간" 상태로 프로그램될 것이며(도 11(2) 참조), readB는 오류를 야기할 것이다. 반대로, 하위 페이지를 판독하는 것은 분계 임계 전압 DA에 대해 readA의 1 판독 패스를 요구할 것이다. 두 경우들을 구별하기 위해서, 상위 페이지가 프로그램되고 있을 때 플래그("LM" 플래그)가 상위 페이지에(보통은 오버헤드 혹은 시스템 영역에) 기입된다. 판독 동안에, 먼저 상위 페이지가 프로그램되었고 따라서 realB가 수행될 것으로 가정할 것이다. LM 플래그가 판독된다면, 가정은 정확하며 판독 동작이 행해진다. 반면, 제 1 판독이 플래그를 초래하지 않았다면, 상위 페이지는 프로그램되지 않았으며 따라서 하위 페이지는 readA 동작에 의해 판독되어야 할 것임을 나타낼 것이다.
도 13b는 2비트 LM 코드로 엔코딩된 4상태 메모리의 상위 비트를 분별하는데 요구되는 판독 동작을 도시한 것이다. 도면으로부터 명백한 바와 같이, 분계 임계 전압들 DA 및 DC에 관하여 각각 readA 및 readC의 2-패스 판독을 요구할 것이다. 마찬가지로, 상위 페이지의 디코딩은 상위 페이지가 아직 프로그램되지 않았다면 "중간" 상태에 의해 혼동될 수도 있다. 다시 한번 LM 플래그는 상위 페이지가 프로그램되었는지 여부를 나타낼 것이다. 상위 페이지가 프로그램되지 않았다면, 판독 데이터는 상위 페이지 데이터가 프로그램되지 않은 것을 나타내는 "1"로 재설정될 것이다.
판독이 "풀-시퀀스" 판독 혹은 "전-비트(all-bit)" 판독에서처럼 경계가 정해진 상태들의 모든 시퀀스를 거쳐야 한다면, 판독은 기준 임계 전압들 DA, DB, DC에 의해 각각 메모리 상태들 "Gr", "A", "B" 및 "C"에 관하여 수행된다. 모든 가능한 상태들은 풀-시퀀스 판독에 의해 구별되기 때문에, 어떠한 LM 플래그에 대해서도 체크할 필요가 없다. 이 모드의 판독에서, 모든 비트들은 함께 결정된다.
3비트 혹은 8상태 메모리를 위한 예시적으로 바람직한 "LM" 코딩
2비트 LM 코드에 대한 예는 유사하게 3비트 혹은 그 이상의 비트들로 확장될 수 있다.
도 14(0)-14(4)는 바람직한 3비트 논리 코드("LM" 코드)로 엔코딩된 8상태 메모리의 프로그래밍을 도시한 것이다. 페이지의 각 메모리 셀로부터 3비트는 3개의 논리 페이지들을 형성하며 프로그래밍은 논리-페이지별로 수행될 수 있다. 이 코드는 앞서 기술된 2비트 LM 코딩과 유사하며 8개의 가능한 메모리 상태들을 엔코딩하기 위한 3비트로의 확장이다. 도 14(0)는 8상태 메모리 어레이의 임계 전압 분 포들을 도시한 것이다. 각 메모리 셀의 가능한 임계 전압들은 8개의 가능한 메모리 상태들로서 "Gr", "A", "B", "C", "D", "E", "F", "G"의 경계를 정하기 위해 8개의 영역들로 분할된 임계 윈도우에 걸쳐 있다. "Gr"은 그라운드 상태이며, 이것은 엄밀한 분포 내의 소거된 상태이며, "A"-"G"는 7개의 점진적으로 프로그램된 상태들이다. 판독 동안에, 8개의 상태들은 7개의 분계 구분점들인 DA-DG에 의해 경계가 정해진다.
도 14(4)는 8개의 가능한 메모리 상태들을 나타내기 위한 바람직한 3비트 LM 코딩을 도시한 것이다. 8개의 메모리 상태들 각각은 3중의 "상위, 중위, 하위" 비트들, 즉 각각 "111", "O11", "001", "101", "100", "000", "010" 및 "110"에 의해 나타내어진다. 도 14(1) 및 도 14(4)에서 알게 되는 바와 같이, 각 프로그래밍 동작은 임계 전압 VT에서 완만한 변화로부터 명백하듯이 전하 저장유닛에 전하들의 완만한 변화를 초래한다.
코딩은 3개의 코드 비트들인 "하위", "중위", 및 "상위" 비트들이 개별적으로 프로그램되고 판독될 수 있게 설계된다. 이에 따라, 제 1 단계의 하위 페이지 프로그래밍은 셀을, 하위 비트가 "1"이면 "소거된" 혹은 "Gr" 상태에 있게 하고, 혹은 하위 비트가 "0"이면 "하위 중위" 상태로 프로그램되게 한다. 기본적으로, "Gr" 혹은 "접지" 상태는 철저히 소거된 상태들이 임계값들의 좁은 범위 이내로 프로그램되게 함으로써 엄밀한 분포를 갖는 "소거된" 상태이다. "하위 중간" 상태들은 메모리 상태 "B"와 메모리 상태 "D" 간에 걸쳐있는 임계 전압들의 넓은 분포를 가질 수 있다. 프로그래밍 동안에, "하위 중간" 상태는 DB와 같은 개략적 구분점 임계 레벨에 관하여 검증될 수 있다. 중앙 비트를 프로그래밍할 때, 셀의 임계 레벨은 하위 페이지 프로그래밍에 기인된 2개의 영역들 중 하나부터 시작하여 4개의 가능한 영역들 중 하나로 이동할 것이다. 상위 비트를 프로그래밍할 때, 셀의 임계 레벨은 중위 페이지 프로그래밍에 기인된 4개의 가능한 영역들 중 하나로부터 시작하여 8개의 가능한 메모리 상태들 중 하나로 이동할 것이다.
일반적으로 한 페이지의 메모리 셀들은 병렬로 프로그램되며, 각 메모리 셀은 3비트들을 갖는다. 이에 따라, 한 페이지의 메모리 셀들은 3개의 논리적 데이터 페이지들로서 간주될 수 있고 각각의 논리적 데이터 페이지는 페이지의 모든 셀들의 한 코드 비트로부터 구성된다. 이에 따라, "하위 비트" 페이지는 페이지의 모든 메모리 셀들의 하위 비트로부터 형성되고, "중위 비트" 페이지는 모든 셀의 중위 비트로부터 형성되며, "상위 비트" 페이지는 페이지의 모든 셀의 상위 비트로부터 형성된다.
도 14(1) 및 도 14(2)는 3비트 LM 코드를 사용한 하위 페이지 프로그래밍을 도시한 것이다. 무장애 LM 코드는 임의의 중간 상태들을 통해 거쳐가는 임의의 후속되는 더 상위의 페이지 프로그래밍을 피하게 설계된다. 이에 따라, 제 1 단계의 하위 페이지 프로그래밍은 셀을, 하위 비트가 "1"이면, 즉 (x,x,1)이면 "소거된" 혹은 "Gr" 상태에 있게 하며, 하위 비트가 "0"이면, 즉 (x,x,0)이면 "하위 중간" 상태로 프로그램되게 한다. 기본적으로, "Gr" 혹은 "접지" 상태는 철저히 소거된 상태들을 임계값들의 확실히 정의된 범위 이내로 프로그램되게 함으로써 엄밀한 분포를 갖는 "소거된" 상태이다. "하위 중간" 상태들은 메모리 상태 "B"와 메모리 상태 "D" 간에 걸쳐있는 임계 전압들의 넓은 분포를 가질 수 있다. 프로그래밍 동안에, "하위 중간" 상태는 DB와 같은 분계점에 관하여 검증된다.
도 14(2) 및 도 14(3)는 3비트 LM 코드를 사용한 중위 페이지 프로그래밍을 도시한 것이다. 중위 페이지 프로그래밍은 제 1 단계인 하위 페이지 프로그래밍에 기초하여 수행된다. 주어진 중위 비트는 하위 비트에 따라 서로 다른 메모리 상태들을 나타낼 수 있다. 제 2 단계의 프로그래밍에서, 셀이 하위 비트가 "1"에 있을 때 "1"로서 중위 비트를 가질 것이라면, 즉 (x,1,1)이라면, 이 셀에 대해선 프로그래밍은 없으며 "Gr" 상태에 있게 된다. 하위 비트가 "1"에 있을 때 중위 비트가 "0"이면, 즉 (x,0,1)이라면, "Gr" 상태에서 "A"와 "B" 간에 걸쳐있는 제 1 "중위 중간" 상태로 프로그램된다. 제 1 "중위 중간" 상태로 프로그래밍 동안에, 검증은 분계점 DVA에 관해 검증한다. 반면, 셀이 하위 비트가 "0"에 있을 때 "0"으로서 중위 비트를 가질 것이라면, 즉 (x,0,0)이라면, 셀은 "하위 중간" 상태에서 "C"와 "D" 간에 걸쳐있는 제 2 중위 중간" 상태로 프로그램된다. 프로그램 검증은 분계점 DVC에 관해 검증한다. 유사하게, 셀이 하위 비트가 "0"에 있을 때 "1"로서 중위 비트를 가질 것이라면, 즉 (x,1,0)이라면 셀은 "하위 중간" 상태에서 "E"와 "F" 사이에 걸쳐있는 제 3 "중위 중간" 상태로 프로그램될 것이다. 프로그램 검증은 분계점 DVE에 관해 검증한다.
도 14(3) 및 도 14(4)는 3비트 LM 코드를 사용한 상위 페이지 프로그래밍을 도시한 것이다. 상위 페이지 프로그래밍은 제 1 및 제 2 단계들, 즉 하위 및 중위 페이지 프로그래밍에 기초하여 수행된다. 주어진 상위 비트는 하위 및 중위 비트들에 따라 서로 다른 메모리 상태들을 나타낼 수 있다. 제3 단계의 프로그래밍에서, 셀이 하위 및 중위비트들이 "1"에 있을 때 "1"로서 상위 비트를 가질 것이라면, 즉 (1,1,1)이라면, 이 셀에 대한 프로그래밍은 없으며 "Gr" 상태에 있게 된다. 반면, 하위 비트 및 중위 비트들이 "1"에 있을 때 상위 비트가 "0"이면, 즉 (0,1,1)이라면, 셀은 "Gr" 상태에서 "A" 상태로 프로그램된다. "A"로 프로그래밍 동안에, 검증은 분계점 DVA에 관해 행해진다.
마찬가지로, 셀이 하위 비트 및 중위 비트가 각각 "0" 및 "1"에 있을 때 "0"으로서 상위 비트를 가질 것이라면, 즉 (0,0,1)이라면, 셀은 "제 1 중위 중간" 상태에서 "B" 상태로 프로그램된다. 프로그램 검증은 분계점 DVB에 관해 검증한다. 셀이 하위 비트 및 중위 비트가 각각 "0" 및 "1"에 있을 때 "1"로서 상위 비트를 가질 것이라면, 즉 (1,0,1)이라면 셀은 "중위 중간" 상태에서 "C" 상태로 프로그램된다. 프로그램 검증은 분계점 DVC에 관해 검증한다.
유사하게, 셀이 하위 비트 및 중위 비트가 각각 "0" 및 "0"에 있을 때 "1"으로서 상위 비트를 가질 것이라면, 즉 (1,0,0)이라면, 셀은 제 2 "중위 중간" 상태에서 "D" 상태로 프로그램된다. 프로그램 검증은 분계점 DVD에 관해 검증한다. 셀이 하위 비트 및 중위 비트가 각각 "0" 및 "0"에 있을 때 "0"로서 상위 비트를 가질 것이라면, 즉 (0,0,0)이라면 셀은 "중위 중간" 상태에서 "E" 상태로 프로그램된다. 프로그램 검증은 분계점 DVE에 관해 검증한다.
마찬가지로, 셀이 하위 비트 및 중위 비트가 각각 "1" 및 "0"에 있을 때 "0"으로서 상위 비트를 가질 것이라면, 즉 (0,1,0)이라면, 셀은 제 3 "중위 중간" 상태에서 "F" 상태로 프로그램된다. 프로그램 검증은 분계점 DVF에 관해 검증한다. 셀이 하위 비트 및 중위 비트가 각각 "0" 및 "0"에 있을 때 "1"로서 상위 비트를 가질 것이라면, 즉 (1,1,0)이라면 셀은 제 3 "중위 중간" 상태에서 "G" 상태로 프로그램된다. 프로그램 검증은 분계점 DVG에 관해 검증한다.
상위 페이지 프로그래밍은 "Gr" 상태 혹은 "중위 중간" 상태들 중 한 상태로부터 다음 이웃한 메모리 상태로의 프로그래밍만을 수반하기 때문에, 단계간에 어떠한 상당량의 전화들도 변경되지 않는다. 이것은 BL-BL 유핀 효과를 완화시키는데 도움을 준다.
4비트, 5비트 및 그 이상의 비트의 LM 코딩에 대해서, 코드의 주어진 비트를 기부하는 페이지 내 모든 셀로부터 각 페이지가 형성되는 n 데이터 페이지들을 n비트 코드가 갖게 되는 경우 동일한 원리가 적용된다. 더 중요하게, 하위에서 상위 비트 페이지로 프로그래밍은 셀들의 전하에 완만한 변화를 초래하며, 그럼으로써 한 페이지의 메모리 셀들간에 유핀 효과에 기인한 교란량을 제한시킨다.
워드라인들간에 유핀 효과
인접한 워드라인들 상에 메모리 셀들간에 교란들이 존재하는 WL-WL 유핀 효 과에 대해서, 이것은 바람직한 프로그래밍 수법을 사용한 프로그래밍 동안 완화될 수 있다. 이것은 교란을 반만큼 효과적으로 감소시킬 것이다. 나머지 반도 바람직한 "룩-어헤드" 판독 수법을 사용함으로써 판독 동안에 정정될 수 있다.
바람직한 프로그래밍 수법은 최적의 시퀀스로 프로그램된 워드라인들에 연관된 페이지들을 가질 것이다. 예를 들면, 모든 물리적 페이지가 한 페이지의 2진 데이터를 유지하는 2진 메모리의 경우에, 페이지들은 이를테면 하부에서 상부로와 같이, 일관된 방향을 따라 순차적으로 프로그램되는 것이 바람직하다. 이에 따라, 한 특정 페이지가 프로그램되고 있을 때, 이의 하측 상에 페이지들은 이미 프로그램된다. 이들이 현재 페이지 상에 갖는 교란적 효과들이 무엇이든 간에, 이들은 이들 교란들 하에서 현재 페이지가 프로그램-검증되고 있을 때 상쇄되고 있다. 근본적으로, 페이지를 프로그래밍하는 시퀀스는 프로그램되는 현재 페이지가, 프로그램된 후에 그의 환경 주위에 최소한의 변화들을 볼 수 있게 할 것이다. 이에 따라, 각각의 프로그램된 페이지는 이의 상측상에 페이지들에 의해서만 교란되고 WL-WL 유핀 효과는 이 프로그래밍 시퀀스에 의해 반만큼 효과적으로 감소된다.
메모리 셀들의 각각의 물리적 페이지가 복수-상태이고 결과적인 복수의 논리적 데이터 페이지들이 서로 다른 패스들에서 프로그램되는 메모리의 경우에, 시퀀스는 덜 수월하다. 예를 들면 2비트 메모리에서, 워드라인에 연관된 각각의 물리적 페이지는 각 셀로부터 2비트 데이터의 단일 페이지, 혹은 각 셀로부터 각각 1비트의 하위 및 상위 비트인 2개의 개별적인 논리적 페이지들로서 간주될 수 있다. 그러므로 물리 페이지는 2개의 비트들에 대해 한 패스로, 혹은 첫 번째는 하위 비트 페이지에 대해서 이어서 나중엔 상위 비트 페이지에 대한 것인 2개의 개별적 패스들로 프로그램될 수 있다. 각각의 물리적 페이지가 2개의 개별적 패스들로 프로그램될 때, 수정된 최적의 시퀀스가 가능하다.
도 15는 2비트 메모리 셀들을 구비하며, 이웃한 워드라인들 상의 메모리 셀들간에 유핀 효과를 최소화하기 위해 최적의 시퀀스로 페이지들이 프로그램되는 메모리의 예를 도시한 것이다. 편의상 물리적 페이지들 P0, P1, P2,...가 각각 워드라인들 W0, W1, W2,...에 속하게 표기하였다. 2비트 메모리에 있어서, 각각의 물리적 페이지는 이에 연관된 2개의 논리적 페이지들, 즉 각각이 2진 데이터를 갖는 것인 하위 비트 및 상위 비트 논리적 페이지들을 갖는다. 일반적으로, 특정 논리적 페이지는 LP(Wordline.logical_page)에 의해 주어진다. 예를 들면, W0 상에 P0의 하위 비트 및 상위 비트 페이지들은 각각 LP(0.0) 및 LP(0.1)로서 표기될 것이며 W2 상에 대응하는 것들은 LP(2.0) 및 LP(2.1)이 될 것이다.
근본적으로, 논리적 페이지들의 프로그래밍은 프로그램되는 현재 페이지가, 프로그램된 후에 그의 환경 주위에 최소한의 변화들을 보게 되도록 시퀀스 n에 따를 것이다. 이 경우, 다시 하부에서 상부로 한 일관된 방향으로 증분적으로 이동하는 것은 일측으로부터의 교란을 제거하는데 도움을 줄 것이다. 또한, 각각의 물리적 페이지는 2개의 프로그래밍 패스들을 가질 수 있기 때문에, 프로그래밍이 물리적 페이지들 위로 이동함에 따라, 현재의 상위 비트 페이지의 이웃한 하위 비트 페이지들의 교란 효과들이 현재 상위 비트 페이지를 프로그래밍할 때 없게 되도록 이들 하위 비트 페이지들이 이미 프로그램된 후에 현재 상위 비트 페이지가 프로그램 되는 것이 더 나을 것이다. 이에 따라, LP(0.0)부터 프로그래밍이 시작한다면, 시퀀스는 페이지-프로그래밍 순서, 0, 1, 2,...n,...에 의해 책정되고 LP(0.0), LP(1.0), LP(0.1), LP(2.0), LP(1.1), LP(3.0), LP(2.1),...이 될 것이다.
판독(룩-어헤드 혹은 "LA" 판독) 동안 WL-WL 유핀 효과에 대한 정정
LA 판독 수법은 전체 개시된 바를 참조로 여기 포함시키는, "Read Operations for Non- Volatile Storage that Includes Compensation for Coupling" 명칭의 2006년 10월에 공개된 미국특허출원 공개 US-2006-0221714-A1에 개시되어 있다. LA("룩 어헤드") 정정을 사용한 판독은 기본적으로, 이웃한 워드라인 상에 셀들에 프로그램된 메모리 상태들을 검사하고 이들이 현재 워드라인 상에 판독되는 메모리 셀들에 미치는 임의의 교란 효과를 정정한다. 페이지들이 위에 기술된 바람직한 프로그래밍 수법에 따라 프로그램되었다면, 이웃한 워드라인은 현재 워드라인 바로 위에 워드라인이 될 것이다. LA 정정 수법은 현재 페이지에 앞서 이웃한 워드라인 상에 데이터가 판독될 것을 요구할 것이다.
예를 들면, 도 15를 참조하면, 판독될 현재 페이지(m)가 WLm(예를 들면, WL1) 상에 있다면, LA 판독은 먼저 다음 워드라인 WLm+1(예를 들면, WL2)을 판독하고 데이터 결과를 한 데이터 래치에 보관한다. 다음에, WLm+1 결과를 고려해서 현재 페이지가 감지될 것이다.
도 15에 관련하여 앞서 기술된 바와 같이, 바람직한 프로그래밍 시퀀스를 사용한 2비트 LM 코드에서, 하위 페이지(예를 들면 LP(1.0))는 DB로 혹은 DB에 가깝 게(중간 상태) 프로그램될 것이다. 상위 페이지(예를 들면, LP(1.1))은 WLm+1 하위 페이지(예를 들면, LP(2.0))가 프로그램된 후에만 프로그램될 것이다. 이어서, 하위 페이지 WL-WL 유핀 효과는 완전히 제거될 것이다. 그러므로 데이터 의존성 정정은 "Gr" 혹은 "B" 상태가 아니라, "A" 및 "C" 상태들에만 수행될 것이다. 프로그래밍이 이러한 최적화된 순서에 따르지 않는다면, 데이터 의존성 정정은 모든 4개의 상태들에 수행될 것이다.
LA 판독의 바람직한 구현에서, LA 판독이 "A" 또는 "C" 상태 혹은 "Gr" 또는 "B" 상태를 발견하였는지를 나타내는 데 사용된다. 전자의 경우에, 정정이 필요하고 후자의 경우에 정정은 필요하지 않다. 이에 따라, 현재 판독된 S1(n) 내 대응하는 셀은 이를테면 감지 동안 워드라인 전압을 높이는 것과 같은, 감지 파라미터들의 적합한 조절에 의해 정정될 것이다. 이것은 한번은 조절에 의해서 그리고 다음엔 조절 없이 감지함으로써 전체 현재 페이지에 대해 행해진다. 래치가 정정을 나타내는지 여부에 따라 이들 두 감지로부터 페이지의 각 셀에 대한 데이터가 선택될 것이다.
LM 코드를 사용하여 논리 페이지별로 판독하는 것은 판독 결과가 완료되기 전에(제 2 패스 판독에 의해서 혹은 판독된 데이터를 리셋함으로써) LM 플래그(도 13a 및 도 13b에 관련한 설명을 참조)를 체크할 필요가 있을 것이다. LA 정정은 현재 워드라인을 판독하기 전에 먼저 다음 워드라인 판독을 행할 필요가 있다. 그러므로 다음 워드라인으로부터의 LM 플래그와 현재 워드라인으로부터의 LM 플래그 둘 다는 상태 머신에 의해 체크될 필요가 있다. 이들 두 LM 플래그들은 I/O 버스가 판독 데이터를 토글(toggle)하는 비지(busy) 상태가 아닐 때 I/O 버스를 통해 상태 머신에 출력될 필요가 있다. "전-비트" 혹은 "풀-시퀀스" 판독의 경우에, LM 플래그에 대해 체크할 필요는 없다.
한 워드라인에서 다른 워드라인으로 데이터 카피
도 16은 제 1 위치에 한 페이지의 메모리 셀들의 데이터가 메모리 어레이 내 제 2 위치에 페이지에 카피되는 페이지 카피 동작을 도시한 것이다. 전형적으로, 제 1 위치는 한 소거 블록(예를 들면, 블록 1) 내 제 1 워드라인 WL-1을 공유하는 메모리 셀들의 제 1 페이지(페이지 1)로부터 오며 제 2 위치는 또 다른 소거 블록(블록 2) 내 제 2 워드라인 WL-2에 제 2 페이지(페이지 2)로부터 온다. 메모리 셀들의 페이지 둘 다는 공통의 한 세트의 비트라인들, 따라서 같은 한 세트의 판독/기입 회로들을 공유한다(도 6 및 도 7 참조). 이 상황은 제 1 소거 블록이 유효 데이터와 폐용 데이터와의 혼합을 내포하는 합체 혹은 가비지 수거 동작 동안 일어난다. 유효 데이터는 제 1 소거 블록이 소거되어 리사이클되기 전에 제 2 소거 블록에 카피됨으로써 구해진다.
도 16은 데이터가 메모리 칩을 이탈할 것을 요구하지 않는 페이지 카피의 종래의 간단한 구현을 도시한 것이다. 이것은 감지 증폭기들에 의해 감지되고 데이터 래치들(430)(도 9 참조)에 래치된 워드라인(WL-1)에 페이지 1로부터의 데이터를 갖는다. 이어서, 래치된 데이터는 프로그램 데이터로서 작용하며 WL-2에 페이지 2에 다시 프로그램된다. 래치된 데이터는 I/O(440)을 통해 메모리 칩을 이탈할 필요가 없다.
도 17은 메모리 내 목적지 위치에 카피되기 전에 외부 제어기에 의해 임의의 오류에 대해 판독 데이터가 정정되는 바람직한 페이지 카피 동작을 도시한 것이다. 구성은 판독된 데이터가 데이터 래치들(430)에 래치된 후에 데이터를 오류들에 대해 체크하고 정정되게 하기 위해서 I/O(440)로부터 외부 메모리 제어기(150)에 전송되는 것을 제외하고는, 도 14에 도시된 것과 유사하다. 데이터가 한 위치에서 다른 위치로 카피될 때, 데이터는 체크를 위해(예를 들면, 오류에 대해서) 흔히 토글 아웃되거나 업데이트되거나(이를테면 헤더를 업데이트), 혹은 둘 다가 행해지거나(이를테면 검출된 오류를 정정), 혹은 암호화 및 해독 혹은 압축과 같은 그외 어떤 다른 목적을 위해 데이터 처리된다.
전형적으로, ECC(오류 정정 코드)는 한 페이지의 데이터에 대해 계산되고 이 한 페이지의 데이터와 함께 저장된다. 페이지의 데이터가 판독될 때, 이의 연관된 ECC에 대해 체크되고 소정 개수의 비트 오류들까지가 ECC에 의해 정정될 수 있다. 일반적으로, 메모리 어레이 및 주변 회로들을 내포하는 메모리 칩(100)(도 1 참조)은 ECC 오류들을 평가하고 정정하는 충분한 계산능력을 갖고 있지 않다. ECC 처리는 외부 메모리 제어기(150)에 의해 수행된다. 이러한 이유로, 판독 데이터는 ECC 처리를 위해 메모리 칩으로부터 메모리 제어기로 전송될 필요가 있다. 정정된 데이터는 있다고 한다면, 메모리 제어기에서 다시 데이터 래치들로 리턴된다. 데이터 래치들에 데이터가 ECC 처리된 후에, 페이지를 다시 목적지 위치에 프로그래밍할 준비가 된다.
캐시된 페이지 카피
데이터 래치들과 외부 메모리 제어기간에 데이터를 셔틀링하는데 시간이 걸린다. 앞에서 기술된 바와 같이, 많은 수의 페이지들을 내포하는 소거 블록에 있어서, 이 블록이 다 채워졌을 때 리사이클 될 필요가 있을 것이다. 블록이 소거되고 리사이클되기 전에 데이터의 최신 버전이 새로운 블록에 카피된다. 각각의 더 새로운 세대의 메모리 장치에 있어, 블록 카피 시간은 블록 크기 및 페이지 크기가 증가하고 각 메모리 셀이 더 많은 비트들을 저장할 수 있게 됨에 따라 더 길어질 수 있다. 또한, 판독은 WL-WL 유핀 효과에 대해 정정하기 위해 이웃한 워드라인("WL")을 판독하는 것을 포함할 수 있기 때문에 더 많은 패스들을 수반할 수 있다.
일반적으로, 블록 카피 수행을 향상시키기 위해서, 데이터 셔틀링 시간의 적어도 일부를 프로그램 시간 안쪽에 묻히게 함으로써 동작은 단축될 수 있다. 캐시 페이지 카피는 2개의 시간 소비적 동작들인 데이터 I/O 및 프로그래밍이 동시에 행해질 수 있게 구현된다. 판독 및 프로그램 동작들 모두가 메모리 코어 동작들을 수반하기 때문에 이들 동작들은 인터리브하는 반면, 데이터 래치 I/O 및 프로그램 동작들은 동시에 일어날 수 있다. 이에 따라, 이전 페이지가 프로그램되고 있는 동안 현재 한 페이지의 판독 데이터는 토글 아웃되고 수정될 수 있다.
종래의 판독 동작들에서, 단일 논리적 페이지 판독을 위해 단지 하나의 데이터 래치만이 필요하다. 따라서 각각의 셀에 대해서, 현재 판독으로부터 단일 비트를 저장하기 위해 한 래치가 사용되고 또 다른 래치는 이전 판독으로부터 비트를 캐시하기 위해 사용된다. 이렇게 하여, 현재 판독으로부터 비트는 토글 아웃될 수 있고 이것이 데이터 처리된 후에 다시 래치에 보내지고 이때 이미 데이터 처리된 이전 비트의 프로그래밍이 동시에 행해질 수 있다.
데이터 재배치(relocation) 및 캐시 동작들의 여러 가지 특징들은 2006년 10월 19일에 공개된 미국특허출원 공개 US-2006-0233026-A1; 2006년 10월 5일에 공개된 US-2006-0221704-A1; 2005년 11월 17일에 공개된 US-2005-0257120-A1; 2006년 6월 22일에 공개된 US-2006-0136687-A1; 및 미국특허 6,266,273에 기술되어 있고, 이들은 참조로 여기에 포함시킨다.
WL-WL 플로팅 게이트 결합 효과를 보상하기 위해서, 이웃한 WLm+1에 프로그램된 상태들에 기인한 교란에 근거하여 WLm에 관한 판독을 정정하기 위해 LA 판독(룩-어헤드)이 이행된다. 보상된 판독은 WLm+1의 교란 효과를 보상하기 위해서 이 WLm+1에서 일어나는 4개의 메모리 상태들의 각 경우에 관하여 현재의 WLm이 복수회 감지될 것을 수반한다. 이에 따라, 현재의 WLm이 판독되고 그에 따라 보상될 수 있기 전에 이웃한 WLm+1로부터 판독된 데이터를 저장하기 위해 래치들이 제공되어야 한다. 2비트 메모리 시스템("D2")에 대해서, WLm+1 판독을 위해 2개의 추가의 데이터 래치들이 필요로 될 것이다. 3비트 메모리 시스템("D3")에 대해서, WLm+1 판독을 위해 3개의 추가의 데이터 래치들이 필요로 될 것이다.
WLm+1 및 WLm 데이터 둘 다를 저장하고 또한 캐시를 위해서 충분한 래치들을 갖는 메모리 장치를 구축하는 것이 가능하나, 페이지의 각 메모리 셀에 대해 최소의 래치들을 사용하면서도 LA 판독 및 캐시 페이지 카피를 구현할 수 있는 것이 바람직하다.
본 발명의 일반적인 면에 따라서, 각 메모리 셀을 위한 최소 수의 n+1 데이터 래치들의 효율적 이용으로 n 비트 메모리는 이웃한 워드라인에 저장된 데이터를 보상한 판독과 효율적 데이터 재배치를 구현할 수 있다. 이에 따라, 2비트 메모리는 이웃한 워드라인에 저장된 데이터를 보상하여 판독을 구현하고 효율적 데이터 재배치를 위해 메모리 셀당 3개의 데이터 래치들만을 필요로 할 것이다. 마찬가지로, 3비트 메모리는 이웃한 워드라인에 저장된 데이터를 보상하여 판독을 구현하고 효율적 데이터 재배치를 위해 메모리 셀당 4개의 데이터 래치들만을 필요로 할 것이다.
각각이 n비트 데이터를 저장하는 한 페이지의 메모리 셀들이 재배치되게 하기 위해서, 이것은 한 페이지의 n비트 데이터를 판독하고, n비트 데이터 각각으로부터 하나씩인 n개의 논리적 페이지들의 단일 비트 데이터가 래치되게, 대응하는 한 페이지의 n 비트 래치들에 래치하고, 임의의 수정된 비트들을 데이터 처리하고 다시 원 래치들에 리턴하고 아울러 리턴되었을 때 그 처리된 데이터를 페이지씩 동시에 프로그래밍하기 위해 페이지씩 n 논리적 데이터 페이지들 각각을 소정의 순서로 셔틀링함으로써 달성된다. 이렇게 하여, 데이터를 토글 아웃하고 돌려보내는 시간의 적어도 일부가 기입 동작 뒤로 묻혀질 수 있어, 페이지 카피를 위한 수행을 개선한다.
특히, 모든 메모리 상태들을 결정하기 위해 n 비트 코드의 비트들이 모두 사용될 수 없을 때라도, 프로그래밍을 하기 위해 사용될 수 있는 제 1 데이터 페이지가 프로그래밍을 소거된 상태에서 주어진 프로그램된 상태로 프래그래밍을 할 수 있게 소정의 순서로 데이터 처리를 위해서 논리 데이터 페이지들은 셔틀링된다. 마찬가지로, 추가의 사용가능 페이지는 훨씬 더 상위로 프로그램된 상태들로 프로그래밍이 계속될 수 있게 할 것이다. 모든 코드 비트들이 사용가능해질 때, 프로그래밍은 페이지의 모든 메모리 셀의 타겟 상태가 정의되기 때문에 완료될 수 있다.
도 18은 발명의 일반적인 실시예에 따른 캐시 페이지 카피 수법을 위한 흐름도이다. 앞에서 언급된 바와 같이, 페이지 카피는 전형적으로 블록 합체 혹은 가비지 수거 동작들 동안에 시스템 동작으로서 메모리 장치에서 개시된다. 또한, 이것은 호스트에 의해 요청된 호스트 동작일 수도 있다. 바람직한 실시예에서, 동작들은 도 1에 도시된 상태 머신(112)에 의해 구동되는 제어회로(110)의 제어하에 있다.
단계 600: 한 어레이의 메모리 셀들을 제공한다. 개개의 메모리 셀들은 각각 최소 프로그램된 상태 내지 최대 프로그램된 상태의 범위의 복수의 메모리 상태들 중 하나로 프로그램 가능하다.
단계 602: 복수의 메모리 상태들 각각을 엔코딩하기 위해 복수의 코드 비트들을 갖는 복수 비트 코드를 제공한다.
단계 610: 더 상위의 코드 비트들이 더 많이 이용가능해질수록, 더 상위의 프로그램된 상태들을 더 많이 디코딩할 수 있게 코드 비트들의 비트 순서를 미리 결정한다.
단계 620: 메모리 상태들을 결정하기 위해 제 1 셀 그룹의 메모리 셀들로부터 판독한다.
단계 622: 복수 비트 코드를 사용하여 복수 비트 데이터로서 각 메모리 상태를 엔코딩한다.
단계 624: 제 1 셀 그룹의 모든 메모리 셀의 복수 비트 데이터를 래치한다.
단계 626: 래치된 데이터를 코드 비트들의 수만큼의 데이터 그룹들로 그룹화하며, 각 데이터 그룹은 제 1 셀 그룹의 모든 메모리 셀로부터 동일한 코드 비트를 수집한다.
단계 630: 각 데이터 그룹의 비트들을 데이터 처리를 위해 외부 호스트 혹은 제어기에 출력하고 각 데이터 그룹을 업데이트하기 위해 임의의 수정된 비트들을 리턴함으로써, 소정의 비트 순서에 따라, 데이터 그룹별로 데이터 그룹들을 처리한다.
단계 632: 임의의 데이터 그룹이 단계 630의 임의의 추가의 데이터 그룹 처리와 동시에 처리되었다면, 제 2 메모리 셀의 개개의 메모리 셀들을 처리된 데이터 그룹들로부터 가용한 코드 비트들에 의해 디코딩 가능한 최상위 메모리 상태까지 프로그래밍한다.
단계 634: 복수 비트 코드의 모든 코드 비트들이 프로그래밍을 완료하기 위해 사용될 수 있을 때까지 단계 630 및 단계 632를 반복한다.
도 19(0)-19(3)은 도 18에 도시된 캐시 카피 수법의 엔코딩 및 프로그래밍 부분들을 위한 2비트 LM 코드를 사용하는 예를 도시한 것이다. 도 11(0)과 유사하게, 도 19(0)는 4상태 메모리 어레이의 임계 전압 분포들을 도시한 것이다. 이 경우에, 단계 600에서 메모리 셀들은 각각 4개의 메모리 상태들 중 하나로 프로그램 가능하다. 도 19(3)는 단계 602에서 제공된 4개의 메모리 상태들 각각에 대한 2비트 LM 코딩의 예를 도시한 것이다.
도 19(3)에 도시된 바와 같이, 2비트 LM 코드는 2개의 코드 비트들로서 하위 비트 및 상위 비트를 갖는다. 페이지 캐시 카피의 경우에, 카피 목적지는 초기에는 한 페이지의 소거된 메모리 셀들이며 이의 초기 임계 분포가 도 19(1)에 도시되었다.
도 19(1)-19(3)은 발명의 바람직한 실시예에 따라, 2비트 LM 코드를 위한 적응형 풀-시퀀스 프로그래밍을 도시한 것이다. 이 프로그래밍 모드는 도 11(1)-11(3)에 도시된 하위 및 상위 페이지의 2-패스 프로그래밍과는 대조적이며, 도 12(1)-12(2)에 도시된 풀-시퀀스 프로그래밍과도 다르다.
앞에서 기술된 풀-시퀀스 프로그래밍에서, 복수 비트 코드의 모든 비트들은 모든 가능한 메모리 상태들을 결정하기 위해 사용될 수 있다. 프로그래밍은 최소 프로그램된 "Gr" 상태부터 시작하며 모든 프로그램된 상태들은 병렬로 프로그램된다. 타겟 상태로서 "A" 상태를 갖는 메모리 셀들은 일단 이들이 "A" 상태로 프로그램되면 추가 프로그래밍으로부터 금지될 것이고 반면 "B" 및 "C"를 갖는 다른 메모리는 추가 프로그래밍을 받을 것이다. 결국, 타겟 상태로서 "B"를 갖는 메모리 셀들도 추가 프로그래밍으로부터 록 아웃(lock out) 될 것이다. 마찬가지로, 종국에는 이에 이어 타겟 상태로서 "C"를 갖는 메모리 셀들도 그러하다.
바람직한 실시예의 적응형 풀-시퀀스 프로그래밍에서, 복수 비트 코드의 모든 비트들이 동시에 사용가능한 것은 아니다. 전형적으로, 초기에는 한 비트가 사 용될 수 있고, 이에 이어 다음 비트가, 그리고 이에 이어 다음 비트가 사용될 수 있고 마지막으로 복수의 비트 코드의 모든 비트들이 제 위치에 있을 때까지 그러하다. 프로그래밍이 시작될 수 있기 전에 모든 비트들이 사용가능해지기를 기다리는 대신에, 적응형 프로그래밍 모드는 모든 비트 미만의 비트들로 프로그래밍을 할 수 있게 한다. 이것은 제 1 이용가능한 비트가 제 1의 두 개의 메모리 상태들, 즉 "Gr" 및 "A" 간을 결정할 수 있을 때 가능하다. 상위 비트가 최하위의 2개의 메모리 상태들 간을 결정할 수 있음을 도 19(2)로부터 알 수 있다. 상위 비트가 "1"일 때, 메모리 상태는 프로그래밍이 전혀 없는 "Gr" 상태에 있다. 상위 비트가 "0"에 있는 메모리 셀들에 있어서, 이들은 이 초기 단계에서 단지 "A"로 프로그램될 수 있다. 이에 따라, 2비트 코드의 단지 한 비트만이 사용할 수 있을 때라도, 프로그래밍은 과잉 프로그래밍의 위험없이 시작할 수 있다. 종국에, 제 2의 하위 비트가 사용가능해질 때, 2비트 코드가 완성될 것이며 모든 4개의 가능한 메모리 상태들을 결정할 수 있을 것이다. 이어서 프로그래밍은 도 12(1)-12(2)에 관련하여 기술된 풀-시퀀스 모드와 유사하게 진행할 것이다.
이에 따라, 2비트 LM 코드의 예에 있어서, 도 18의 단계 610은 코드 비트들의 비트 순서를 상위 비트가 하위 비트에 선행하게 사전에 결정되게 할 것이다.
단계 620에서, 일 그룹의 메모리 셀들이 판독되고 그룹의 각 메모리 셀에 메모리 상태가 결정된다.
단계 622에서, "상위 비트 하위 비트"로서 표현되는 2비트 LM 코드의 예를 사용하여, 메모리 상태 "Gr"은 "11"로서 엔코딩될 것이며, "A"는 "01"로서, "B"는 "00"으로서, "C"는 "10"으로서 엔코딩될 것이다. 일 실시예에서, 각 메모리 셀의 2비트 데이터는 각각 도 13a 및 도 13b에 도시된 바와 같이 페이지의 각 메모리 셀로부터 하위 비트들로 구성된 하위 논리 페이지 데이터로서 한 패스와 상위 논리 페이지 데이터로서 다른 한 패스인, 두 패스들에서 감지될 수 있다. 하위 논리 페이지 판독 패스는 DB에서 감지를 수반하고, 반면 상위 논리 페이지 패스는 DA에서 하나와 DC에서 다른 하나인 2개의 하위 패스들을 수반한다. 또 다른 실시예에서, 2비트 데이터는 "풀-시퀀스" 모드에서 감지될 수 있는데, 이 경우 2비트들은 각각 3개의 하위 패스들에서 판독 분계 임계값들 DA, DB, DC에 관하여 감지함으로써 한 패스에서 함께 감지된다.
단계 624에서, 그룹의 각 메모리 셀들로부터 2비트 데이터가 래치된다. 예를 들면, 도 9에 도시된 데이터 래치들(434-1, 434-2)은 각 메모리 셀에 대한 상위 및 하위 비트들을 래치하기 위해 사용될 수 있다.
단계 626에서, 래치된 데이터는 2비트 코드에서 코드 비트들의 수에 대응하는 2개의 데이터 그룹들로 그룹화된다. 제 1 데이터 그룹은 일 그룹의 메모리 셀들로부터 모든 하위 비트들을 모은 하위 비트 데이터 그룹이다. 마찬가지로, 제 2 데이터 그룹은 일 그룹의 메모리 셀들로부터 모든 상위 비트들을 모은 상위 비트 데이터 그룹이다.
단계 630에서 각 데이터 그룹으로부터 비트들은 한번에 데이터 처리된 그룹이다. 각 데이터 그룹으로부터 비트들은 데이터 처리를 위해 제어기에 출력되고, 데이터 그룹을 업데이트하기 위해 임의의 수정들이 리턴된다. 이 경우 2개의 데이터 그룹들은 단계 610에서 소정의 순서, 즉 상위 비트 데이터 그룹 및 이에 이어 하위 비트 데이터 그룹의 순서에 따라 처리된다. 이에 따라, 상위 비트 데이터 그룹은 먼저, 데이터 처리를 위해 제어기에 상위 비트들을 출력하고 상위 비트 데이터 그룹을 업데이트하기 위해 임의의 수정된 비트들을 리턴함으로써 처리된다. 이어서 하위 비트 데이터 그룹의 처리가 이어진다.
단계 632에서는, 단계 630에서 제 1 그룹의 래치들을 처리하는 제 1 반복 동안, 동시적인 프로그래밍을 위해 어떠한 처리된 데이터도 아직 이용될 수 없다.
단계 634에서, 2비트 코드들의 모든 코드 비트들이 사용될 수 있기 때문에, 동작은 단계 630으로 리턴한다.
단계 630(2)에서, 하위 비트 데이터가 다음에 처리된다. "630"에 부가된 "(2)"는 단계의 제 2 반복을 나타내기 위해 사용된다.
단계 632(2)에서, 상위 비트 데이터 그룹은 이전 단계 632에서 적소의 임의의 업데이트 데이터로 처리되었다. 프로그래밍은 사용될 수 있는 상위 비트 데이터를 사용하여 진행할 수 있다. "1"들을 가진 메모리 셀들은 프로그램되지 않으며 "0"을 가진 메모리 셀들은 상위 비트만을 사용함으로써 디코딩할 수 있는 상태 "A"인 다음 프로그램된 상태까지 프로그램될 것이다. 상위 비트 데이터 그룹을 사용한 프로그래밍은 단계 630(2)에서 하위 비트 데이터 그룹의 처리와 동시에 행해진다.
단계 634(2)에서, 프로그래밍을 완료하기 위해서 2비트 코드들의 코드 비트들이 모두 사용될 수 있는 것은 아니기 때문에, 동작은 단계 630(3)으로 리턴한다.
단계 630(3)에서, 모든 상위 및 하위 비트 데이터 그룹들이 처리되었으며, 따라서 처리할 더 이상의 그룹은 없다.
단계 632(3)에서, 상위 비트들 외에도, 하위 비트들도 이제 이용될 수 있다. 따라서 프로그래밍은 모든 코드 비트들("상위, 하위")을 사용하여 풀-시퀀스 모드에서 계속할 수 있다. 도 19(3)는 "11"을 가진 셀들은 "Gr"로서 존속할 것이며, "10"을 가진 셀은 "Gr"에서 "C"로 프로그램될 것이며, "01"을 가진 셀은 "A"에 있게 될 것이며 "00"을 가진 셀들은 "A"에서 "B"로 프로그램될 것임을 나타낸다.
단계 634(3)에서, 동작은 2비트 코드의 모든 2 코드 비트들이 프로그래밍을 완료하기 위해 사용될 수 있게 된 후에 종료한다.
단계 630에 기술된 프로그래밍 모드는 "적응형 풀-시퀀스" 프로그래밍으로서 간주될 수 있다. 이것은 도 12에 기술된 "풀-시퀀스" 프로그래밍과 다소 유사하다. 차이는 풀-시퀀스 경우에, 모든 비트들(이 경우, 하위 및 상위 비트들)을, 페이지의 각 셀이 어떤 타겟 상태로 프로그램될 것인지를 분별하기 위해 사용한다는 것이다. 프로그래밍은 모든 셀들의 소거된 상태부터 시작하여 이들 셀들에 적용되고 각 셀이 이의 타겟 상태에 이르게 프로그램되었을 때, 이것은 추가의 프로그램으로부터 금지된다. 한편, 적응형 풀-시퀀스 경우에, 초기의 모호한 덜 완전한 정보는 페이지의 모든 메모리 셀들의 타겟 상태를 확인하기에는 충분하지 않으나 다음 상태로 프로그램되어야 할 것들에 대해 주어진 메모리 상태로 유지되어야 하는 것들 간을 구별하기에는 충분하다. 더 많은 비트 정보가 사용가능하게 됨에 따라, 분해능은 더 미세해지고 프로그래밍은 점점 더 상위의 메모리 상태들로 진행할 수 있다. 종국에 모든 비트들이 사용가능하게 되었을 때, 프로그래밍은 풀-시퀀스 프로그래밍이 된다. 이에 따라, 적응형 풀-시퀀스 프로그래밍에서, 일부 셀들의 프로그래밍은 모든 비트들이 사용가능해지게 될 것을 기다리지 않고 "헤드 시작"을 얻을 수 있다.
도 20(0)-20(4)는 도 18에 도시된 캐시 카피 수법의 엔코딩 및 프로그래밍 부분들을 위해 3비트 LM 코드를 사용한 예를 도시한 것이다. 도 14(0)과 유사하게, 도 20(0)은 4상태 메모리 어레이의 임계 전압 분포들을 도시한 것이다. 이 경우, 단계 600에서 메모리 셀들은 8 메모리 상태들 중 하나로 각각이 프로그램 가능하다. 도 20(4)는 단계 602에 제공된 8개의 메모리 상태들 각각에 대한 3비트 LM 코딩의 예를 도시한 것이다.
도 20(4)에 도시된 바와 같이, 3비트 LM 코드는 3개의 코드 비트들, 즉 하위 비트, 중위 비트 및 상위 비트를 갖는다. 페이지 캐시 카피의 경우에, 카피 목적지는 한 페이지의 소거된 메모리 셀들이며 이들의 초기 임계 분포가 도 20(1)에 도시되었다.
도 19(1)-19(4)는 발명의 바람직한 실시예에 따라, 3비트 LM 코드에 대한 적응형 풀-시퀀스 프로그래밍을 도시한 것이다.
도 18에 도시된 캐시 페이지 카피 수법에 3비트 LM 코드의 적용은 앞서 기술된 2비트 LM 코드에 대한 것과 유사하다. 근본적으로, 3개의 코드 비트들, 즉, "하위, 중위, 상위" 비트들에 의해 엔코딩된 8개의 상태들이 있다.
도 14(0)과 유사하게, 도 20(0)은 8상태 메모리 어레이의 임계 전압 분포들 을 도시한 것이다. 페이지 캐시 카피의 경우에, 카피 목적지는 한 페이지의 소거된 메모리 셀들이며, 이들의 초기 임계 분포는 도 20(1)에 도시되었다.
하위, 중위 및 상위 비트들의 3 코드 비트들은 최하위 프로그램된 상태들로부터 결정할 이들의 능력에 따라 순위가 정해진다. 도 20(2)으로부터, 3비트 LM 코드에 대해서, 상위 비트는 "Gr" 상태(상위 비트 = 1)로 유지되어야 하거나 다음 프로그램된 상태들로 프로그램되게 허용된(상위 비트 = 0) 셀들간을 구별할 수 있음을 도 20(2)으로부터 알 것이다. 마찬가지로, 도 20(3)으로부터, 상위 비트와 중위 비트와의 조합은 "Gr" 혹은 "A"로 유지되어야 하거나 "B"로 프로그램될 것이 허용된 셀들간을 구별할 수 있다. 마찬가지로, 도 20(4)으로부터, 3비트 코드를 완성하는 상위 비트와, 중위 비트와 하위 비트와의 조합은 모든 가능한 메모리 상태들 간을 구별할 수 있고 프로그래밍은 풀-시퀀스 모드에서 진행할 수 있다. 그러므로 3비트 LM 코드는 상위 비트, 이에 이어 중위 비트와 이어서 하위 비트의 순서이다.
3 코드 비트들인 상위 비트, 중위 비트 및 하위 비트는 각 코드 비트에 한 그룹으로 3개의 데이터 그룹들이 된다. 앞에 기술된 2비트 경우와 유사하게, 상위 비트 데이터 그룹이 먼저 처리된다. 이에 이어 중위 비트 데이터 그룹이 처리된다. 중위 비트 데이터 그룹이 처리되고 있음에 따라, 프로그래밍은 상위 비트 데이터 그룹을 사용하여 행해진다. 나중에, 하위 비트 데이터 그룹이 처리되고 있을 때, 프로그래밍은 상위 및 중위 비트 데이터 그룹들 둘 다를 사용하여 행해진다. 마지막으로, 하위 비트 데이터 그룹이 처리된 후에, 프로그래밍은 3비트 LM 코드의 모든 3개의 코드 비트들을 사용하여 풀-시퀀스 모드에 있게 될 것이다.
도 18에 관련하여 기술된 캐시 페이지 카피 수법은 상호 관계된 적어도 3가지 면들에서 수행을 향상시킨다.
먼저, 적응형 풀-시퀀스 모드에서 프로그래밍은 워드라인에 적용된 프로그래밍 전압이 단조로 증가하는 함수가 되게 한다. 프로그래밍은 전체 임계 윈도우에 걸쳐 최하위 메모리 상태에서 최상위 메모리 상태로 한 패스에서 행해질 수 있다. 이것은 프로그래밍 전압이 각 패스의 시작에서 초기 프로그래밍 전압에서 다시 재시작해야 할 복수-패스 프로그래밍과는 반대이다.
두 번째로, 적응형 특징은 메모리 상태들을 완전히 결정하기 위해서 모든 코드 비트들이 모두 사용될 수 없을 때라도 프로그래밍이 시작될 수 있게 한다. 프로그래밍은 복수 비트 코드의 심지어 한 비트가 사용가능한 즉시 시작할 수 있다.
세 번째로, 각 메모리 셀에 프로그래밍이 한 번에 한 비트의 점진적 추가를 하여 행해질 수 있기 때문에, 제 1 비트 데이터 그룹은 일 그룹의 메모리 셀들을 프로그램하는데 사용될 수 있고 반면 제 2 비트 데이터 그룹은 동시에 데이터 처리됨으로써 준비될 수 있다. 이에 따라, 데이터 처리기간은 프로그래밍 시간 뒤로 묻혀질 수 있다. 도 18에 기술된 본 발명의 캐시 페이지 카피 수법은 n비트 코드에 대해서, n-1 데이터 처리 동작들이 프로그래밍 시간 뒤로 묻혀질 수 있게 함을 알 것이다. 예를 들면, 2비트 코드를 채용하였을 때, 한 데이터 처리 동작 기간이 절약된다. 3비트 코드에 대해서, 2개의 데이터 처리 동작 기간들이 절약된다.
마지막으로, 다음 단락에서 알게 되는 바와 같이, 이웃한 워드라인 상의 데이터에 기인한 교란효과에 대해 룩 어헤드 정정으로도, 발명의 캐시 페이지 카피 수법은 최소의 데이터 래치들로 구현될 수 있다. n 비트 메모리에 대해서, 데이터 래치들의 수는 메모리 셀 당 n+1이다.
이웃한 워드라인으로부터 교란에 대해 정정을 가진 캐시 페이지 카피(LA 판독)
바람직한 실시예에서, 한 페이지의 LM 엔코딩된 데이터는 이웃한 워드라인("WL")에 기인한 교란에 대해 보상을 하여 판독된다. WL-WL 플로팅 게이트 결합 효과를 보상하기 위해서, 이웃한 WLm+1에 프로그램된 상태들에 기인한 교란에 근거하여 WLm 상에 판독을 정정하기 위해 룩-어헤드("LA") 판독이 구현된다. LA 판독 기술은 전체가 참조로 여기 포함되는, Nima Mokhlesi에 의한 "READ OPERATION FOR NON-VOLATILE STORAGE WITH COMPENSATION FOR COUPLING" 명칭의 2006년 3월 17일에 출원된 미국특허출원 11/384,057에 기술되어 있다.
복수 비트 코딩 및 "LA" 정정 둘 다는 판독 데이터의 단순한 토글 외에도 추가의 래치들 및 버스 활동들을 요구하는 것처럼 보일 것이다. 그럼에도 불구하고, 도 18에 관련하여 기술된 캐시 페이지 카피 수법은 각 n비트 메모리 셀에 대해 최소 n+1 래치들로도 여전히 달성된다.
비휘발성 메모리 판독 동작들 동안에 플로팅 게이트 결합의 효과들을 보상하는 것은 선택된 워드라인 WLm에 대한 판독 동작 동안 이웃한 워드라인 WLm+1로부터 판독된 데이터에의 액세스를 요구한다. 필수적으로, 판독/기입 회로들(예를 들면 도 1의 270A, 270B)은 WLm에 저장된 데이터 값들을 결정할 때 워드라인 WLm+1에의 액세스를 필요로 한다. 이것은 특히 특정 보상 기술에 전용되는 칩 공간을 최소화 하려고 할 때, 메모리 설계자들에게 해결해야 할 문제를 제기할 수 있다. 2비트의 데이터를 저장하는 메모리 셀들을 구비하는 메모리 장치를 고찰한다. 이웃한 워드라인 WLm+1로부터 데이터가, 선택된 워드라인 WLm에 대한 판독 동작 동안 사용될 수 있어야 한다면, 설계자는 워드라인 WLm+1 및 워드라인 WLm으로부터 데이터가, 선택된 워드라인 WLm에 판독 동작 동안 동시에 저장될 수 있도록 충분한 데이터 래치들을 포함하기로 선택할 수 있다. 각 메모리 셀이 2비트의 데이터를 저장한다면, 모든 비트라인에 대한 4개의 데이터 래치들이 필요하다. 2개의 데이터 래치들은 워드라인 WLm+1로부터 2비트의 데이터를 저장할 수 있고 또 다른 2개의 데이터 래치들은 워드라인 WLm으로부터 2비트의 데이터를 저장할 수 있다. 마찬가지로, 3개의 추가의 래치들은 3비트 장치들에 대해, 4개의 추가의 래치들은 4비트 장치들에 대해, 등등으로 사용될 수 있을 것이다. 이 기술이 유효한 반면, 셀당 저장된 비트들의 수에 대해 각 비트라인에 데이터 레지스터들의 추가는 공간 제한들에 기인하여 일부 구현들에선 수락될 수 없을 수도 있다.
최소 데이터 래치들을 사용한 바람직한 LA 판독 수법이 전체를 참조로 여기 포함시키는, Man Lung Mui 및 Seungpil Lee에 의한 "COMPLETE WORD LINE LOOK AHEAD WITH EFFICIENT DATA LATCH ASSIGNMENT IN NON-VOLATILE MEMORY READ OPERATIONS" 명칭의 2006년 12월 28일에 출원된 미국특허출원 11/617,544에 기술되어 있다.
바람직한 LA 판독 수법에서, n비트 메모리 셀의 LA 판독을 수행하기 위해 단지 n+1 래치들만이 요구된다. 필수적으로, WLm+1의 교란 데이터가 먼저 판독된다. 이것은 n 비트 WLm+1 판독을 위해 셀 당 n 래치들을 점유할 것이다. 주어진 셀의 n 래치들이 WLm+1 혹은 WLm에 속하는지 여부를 나타내는 플래그를 저장하기 위해 셀당 추가의 래치가 사용된다. 이어서 WLm의 일련의 보상된 판독이 수행된다.
보상은 교란의 세기의 함수로서 워드라인 판독 전압을 바이어싱함으로써 달성될 수 있다. 예를 들면, WLm+1 상에 이웃한 셀이 상태 "Gr"에 있다면, 어떠한 교란도 없으며 WLm에서 판독은 바이어스 없이 수행될 것이다. WLm+1 상에 이웃한 셀이 상태 "A"에 있다면, 제 1 량의 바이어스가 있게 될 것이다. WLm+1 상에 이웃한 셀이 상태 "B"에 있다면, 제 2 량의 바이어스가 있게 될 것이며, 등등이 될 것이다.
대안적으로, 보상은 필요로 된 정정의 함수로서, 주어진 메모리 상태를 판독하기 위해 분계 임계 전압을 옮김으로써 달성될 수 있다.
각각의 보상된 판독 패스 후에, 각각의 메모리 셀들의 메모리 상태가 결정되며 이들의 데이터는 대응하는 래치들 내 대응하는 WLm+1 데이터를 대체하며 WLm 데이터를 나타내기 위해 플래그가 설정된다. 일반적으로, n비트 메모리에 대해서 WLm+1 상에 2n의 가능한 메모리 상태들, 및 이에 따라 같은 수의 보상 값들이 있을 것이다. WLm을 판독할 때, 4개의 가능한 메모리 상태들 간을 구별하기 위해 2n-1 분계 점들이 있게 될 것이다. 따라서, 일반적으로 WLm의 보상된 판독을 완료하기 위해서 2n(2n-1)개의 LA 판독 패스들이 있게 될 것이다. 예를 들면, 2비트 메모리는 총 12 판독 패스들을 가질 것이며 3비트 메모리는 총 56 판독 패스들을 가질 것이 다. LA 판독이 완료된 후에, 래치들 내 모든 WLm+1 데이터는 WLn 데이터에 의해 대체될 것이다. 따라서, 바람직한 LA 판독 기술은 판독 동안에 메모리 셀 당 n+1 래치들을 요구하며 판독이 완료된 후에는 n 래치들을 요구한다.
도 12a-12b는 3 데이터 래치들을 사용하는 2비트 메모리의 예에서 LA 판독을 수행하는 바람직한 방법을 기술하는 흐름도이다. 이 예는 도 11(0)에 도시된 예와 유사하게, 셀당 2비트 데이터를 저장하는 4상태 장치에 대해 제시된다. 워드라인 WLm 상에 일 그룹의 메모리 셀들은 WLm+1 상에 이웃한 메모리 셀들에 기인한 결합 효과에 대해 보상하여 판독된다. 각 메모리 셀에 대한 감지는 상태 "A" 레벨(상태 "Gr"과 "A" 사이), 상태 "B" 레벨(상태 "A"과 "B" 사이), 상태 "C" 레벨(상태 "B"와 "C" 사이)에서 수행된다. 후속의 프로그램된 워드라인 WLm+1에서 이웃한 메모리 셀들의 4개의 잠재적 상태들 각각을 없애기 위해 각 레벨에서 감지할 때 보상들이 제공된다.
각 메모리 셀에 대한 적합한 감지 동작의 결과들을 선택하기 위해서, 워드라인 WLm+1 상의 이웃한 메모리 셀에 관한 정보는 WLm의 대응하는 셀을 감지하면서 각 비트라인에 대해 저장된다. 비트라인을 위한 프로세서는 적합한 감지 동작의 결과들을 선택하기 위해 정보를 사용할 것이다. 예를 들면, 2비트 경우에, 각 비트라인에 대한 한 세트의 데이터 래치들 DL0 및 DL1은 선택된 워드라인의 메모리 셀로부터 판독된 데이터를 저장하기 위한 것이다. 각 비트라인을 위한 같은 한 세트의 데이터 래치들은 선택된 워드라인에 이웃한 워드라인의 메모리 셀에 관한 정보도 저장할 것이다. 각 비트라인을 위한 추가의 데이터 래치(DL2)는 플래그로서 동작하 여, 데이터 래치들이 선택된 워드라인에 대해서 혹은 이웃한 워드라인에 대해서 데이터를 저장할지 여부에 관하여 표시를 저장한다.
이에 따라, 도 21a-21b에 기술은 이웃한 워드라인 WLm+1로부터 데이터를 저장하기 위해 추가의 한 세트의 래치들이 필요하지 않도록 각 비트라인을 위한 데이터 래치들을 효율적으로 이용한다. 도 12a-21b의 예에서, 메모리 셀들은 2비트의 데이터를 저장하며, 따라서 3개의 데이터 래치들이 사용된다. 개시된 원리는 셀당 서로 다른 수의 비트들(예를 들면, 3, 4, 혹은 그 이상)을 사용하는 구현들로 확장할 수 있음이 이해될 것이다. 일반적으로, 각 비트라인에 대해 요구되는 데이터 래치들의 수는 각각의 개개의 메모리 셀에 의해 저장되는 비트들의 수보다 하나 더 많은 것과 같다. 현재 저장되는 데이터의 출처를 확인할 목적으로 단일의 추가의 래치가 이용된다.
도 21a-21b에서, 대응하는 비트라인의 메모리 셀들로부터 판독된 데이터를 각 비트라인이 저장하기 위해, DL0 및 DL1로 표기된 2개의 데이터 래치들이 사용된다. DL2로 표기된 제 3 데이터 래치는 데이터 래치들 DL0 및 DL1에 현재 저장된 데이터가 선택된 워드라인 WLm으로부터의 데이터에 대응하는지, 혹은 데이터가 선택된 워드라인에 이웃한 워드라인 WLm+1로부터의 데이터에 대응하는지 여부를 나타내는 플래그를 저장하기 위해 사용된다.
판독 동작은 단계 700에서 이웃한 워드라인 WLm+1을 판독함으로써 시작한다. 이웃한 워드라인은 도 11(0)에 도시된 3개의 정규의 기준 레벨들 DA, DB, DC에서 판 독될 수 있다. 일 실시예에서 WLm+1을 판독할 때 어떠한 보상도 적용되지 않는다. 이웃한 워드라인의 메모리 셀들에 대한 데이터 값들은 단계 702에서 결정된다. 워드라인 WLm+1에 각 비트라인의 메모리 셀에 대한 데이터 값은 단계 704에서 이 비트라인에 대한 대응하는 한 세트의 데이터 래치들(DL0, DL1)에 저장된다. 단계 706에서, 각 비트라인을 위한 제 3 데이터 래치(DL2)는 데이터 래치들(DL0, DL1) 내 데이터가 WLm+1에 메모리 셀로부터 데이터에 대응함을 나타내기 위해서 논리 0에 설정된다.
WLm+1의 4개의 가능한 이웃한 상태들 각각에 대해 하나씩인 일 그룹의 서브-판독(sub-read)들은 WLm에 2개의 상태들 간을 구별하기 위해 분계 임계 레벨들 각각에서 WLm에 대해 수행될 것이다.
이에 따라, 상태 "A" 레벨(상태 "Gr"과 "A" 사이)에 일 그룹의 서브-판독들은 단계들 708-722에서, 선택된 워드라인 WLm에 대해 수행된다. 단계 708에서 제 1 서브-판독은 플로팅 게이트 결합을 없애기 위한 어떠한 보상도 제공하지 않는다.
단계 710에서, 각 비트라인을 위한 프로세서는 비트라인을 위한 데이터 래치들을 업데이트할지 여부를 판정한다. 선택된 워드라인의 메모리 셀이 단계 708에서 서브-판독 동안 비도통이었던 비트라인들에 대해서, 프로세서는 데이터 래치들에 저장된 어떠한 값도 변경하지 않는다. 메모리 셀이 도통되었던 비트라인들에 대해서, 프로세서는 데이터 래치들(DL0, DL1)이 상태 "Gr"에 대응하는 데이터를 현재 저장하고 있는지를 판정한다. 예를 들면, 도 11(3)의 데이터 할당들이 사용된다면, 프로세서는 래치들 둘 다가 논리 1을 저장하고 있는지를 판정한다. 래치들이 논리 11을 저장하고 있지 않다면, 프로세서는 데이터 래치들 내 값들을 변경하지 않는다. 두 래치들이 11을 저장하고 있다면, 프로세서는 제 3 데이터 래치(DL2)가 논리 0을 저장하고 있는지를 판정한다. 논리 0은 래치들(DL0, DL1)이 WLm+1로부터의 데이터를 저장하고 있고 덮어 쓰일 것임을 나타낸다. 프로세서는 먼저 래치(DL2)를 체크하고 DL2가 일 실시예에서 논리 0을 저장하고 있다면 래치들(DL0, DL1)만을 체크한다. 도통된 메모리 셀에 대해 두 조건들이 만족된다면, 소거된 상태에 대해 소정의 데이터 값들로 DL0 및 DL1이 설정된다. 제 3 데이터 래치(DL2)는 DL0 및 DL1이 워드라인 WLm에 대해 현재 데이터를 저장하고 있음을 나타내기 위해 1로 설정된다. DL2에 논리 1은 후속되는 서브-판독들 동안 래치들(DL0, DL1)이 덮어 쓰이지 못하게 한다.
단계 712에서, 또 다른 상태 "A" 서브-판독이 수행된다. 이때, 상태 "A"로 프로그램되는 WLm+1에 이웃한 메모리 셀들에 대응하는 보상이 적용된다.
각 비트라인에 프로세서는 도통 메모리 셀을 갖는 비트라인들을 위한 래치를 업데이트할지를 판정하기 위해 또 다른 논리 시퀀스를 수행한다. DL0 및 DL1이 상태 "A"(예를 들면, 10)에 대한 데이터를 저장하고 있지 않다면, 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 WLm+1 데이터가 현재 저장하고 있는 것을 나타내기 위해서 DL2가 0을 저장하고 있는지를 판정한다. DL2가 0으로 설정된다면, 프로세서는 상태 "Gr"에 대한 데이터로 DL0 및 DL1을 덮어쓴다. 프로세서는 래치들이 현재 WLm로부터 데이터를 저장하고 있음을 나타내기 위해서 DL2를 1로 설정한다.
단계 716에서, 상태 "A" 서브-판독은 상태 "B"로 프로그램되는 WLm+1에서 셀들에 기초하여 보상을 적용하면서 WLm에서 수행된다. 도통 메모리 셀들에 대해서, 대응하는 비트라인 프로세서는 DL0 및 DL1이 상태 "B"(예를 들면, 00)에 대응하는 데이터를 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 DL2가 논리 0을 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 더 이상의 조치도 취해지지 않는다. DL2가 0으로 설정된다면, DL0 및 DL1은 상태 "Gr"에 대해 소정의 데이터로 덮어 쓰이고 DL2는 래치들이 현재 WLm로부터 데이터를 저장하고 있음을 나타내기 위해서 1로 설정된다.
단계 720에서, 상태 "A" 레벨에 최종의 서브-판독이 수행된다. 상태 "C"에서 WLm+1에 이웃한 셀들에 근거한 보상이 적용된다. 도통 메모리 셀들에 대해서, 대응하는 비트라인 프로세서는 래치들이 상태 1(예를 들면, 01)에 대한 데이터를 저장하고 있는지를 판정한다. DL2가 2로 설정된다면, 어떠한 조치도 취해지지 않는다. DL2가 0으로 설정된다면, 프로세서는 DL2이 0을 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 추가의 조치도 취해지지 않는다. 그러하다면, 프로세서는 상태 "Gr"에 대한 소정의 데이터로 DL0 및 DL1을 덮어쓰며 DL2을 1로 설정한다.
단계들 724-744에서, 상태 "B" 레벨에서 한 시퀀스의 서브-판독들이 워드라인 WLm에 대해 수행된다.
단계 724에서 초기 서브-판독은 플로팅 게이트 결합에 대해 어떠한 보상도 제공하지 않는다. 이 서브-판독의 결과들은 소거된 상태 "Gr"에 있는 WLm+1에 이웃한 셀을 갖는 셀들에 적용할 수 있다. 도통 메모리 셀들에 대해서, 대응하는 프로 세서는 비트라인에 대한 DL0 및 DL1이 상태 "Gr"에 대한 데이터를 저장하고 있는지를 판정한다. 이 단계는 WLm에서 감지하는 전류가 데이터가 셀에 대해 저장되어야 하는 전류임을 판정하기 위해 체크한다. DL0 및 DL1이 상태 "Gr"에 대응하지 않는다면, 어떠한 조치도 취해지지 않는다. DL0 및 DL1이 상태 "Gr"에 대해 일치한다면, 프로세서는 DL0 및 DL1에 데이터가 WLm+1에 대한 것이고 선택된 워드라인 WLm에 대한 것이 아님을 나타내기 위해서 DL2가 논리 0을 저장하고 있는지를 판정한다. DL2가 1로 설정된다면, 프로세서는 DL0 및 DL1에 데이터를 덮어쓰지 않는다. 논리 1은 DL0 및 DL1 데이터가 WLm으로부터 오고, 이에 따라 덮어 쓰이지 않아야 함을 나타낸다. DL2가 0으로 설정된다면, 프로세서는 DL0 및 DL1에 데이터를 단계 726에서 현재의 한 세트의 서브-판독들에 대해 데이터로 덮어쓴다. 이 경우, 프로세서는 DL0 및 DL1을 상태 "A" 데이터(예를 들면 10)로 설정한다. 프로세서는 DL0 및 DL1이 현재 선택된 워드라인 WLm으로부터 데이터를 저장하고 있고 WLm에 후속되는 서브-판독들 동안 덮어 쓰이지 않아야 함을 나타내기 위해서 DL2를 1로 설정할 것이다.
단계 728에서, 상태 "B" 서브-판독은 상태 "A"에서 WLm+1에 이웃한 셀들에 근거하여 보상을 적용하면서 워드라인 WLm에 수행된다. 도통 메모리 셀들에 대해서, 대응하는 비트라인에 대한 프로세서는 DL0 및 DL1이 상태 "A"에 대해 데이터를 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 DL2이 논리 0을 저장하고 있는지를 판정한다. 그렇지 않다면, 비트라인에 대해 어떠한 더 이상의 조치도 취해지지 않는다. 그러하다면, 프로 세서는 DL0 및 DL1에 데이터를 상태 "A"에 대응하는 데이터로 덮어쓴다. 또한, 프로세서는 DL2를 논리 1로 설정한다.
단계 732에서, WLm은 상태 "B"에서 WLm+1에 이웃한 셀을 가진 메모리 셀들에 대해 보상을 적용하면서 판독된다. 메모리 셀이 도통되고 있다면, 대응하는 비트라인을 위한 프로세서는 이 비트라인에 대한 DL0 및 DL1이 상태 "B" 데이터(예를 들면, 00)를 공유하고 있는지를 판정한다. 이들이 그렇다면, 프로세서는 DL0 및 DL2에 데이터가 WLm (DL2=1)로부터 온 것인지 아니면 WLm+1 (DL2=0)로부터 온 것인지를 판정한다. 데이터가 WLm+1로부터 온 것이라면, 프로세서는 DL0 및 DL1을 상태 "A"에 대한 소정의 데이터로 덮어쓴다. 또한, 프로세서는 DL2를 논리 1로 설정한다. 어느 한 상태도 만족되지 않는다면, 프로세서는 DL0 - DL2의 내용들을 변경하지 않는다.
단계 736에서, 상태 "B" 서브-판독은 상태 "C"에서 WLm+1에 이웃한 셀들에 근거하여 보상을 적용하면서 WLm에서 수행된다. 도통 메모리 셀들에 대해서, 프로세서는 DL0 및 DL1이 상태 "C"(예를 들면, 01)에 대한 데이터를 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 DL2이 논리 0을 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 DL0 및 DL1에 데이터를 상태 "A"에 대한 데이터로 덮어쓰며 DL2를 논리 1로 설정한다.
단계들 740-756은 상태 "C" 판독 기준 전압 레벨에서 한 세트의 서브-판독들을 수행한다.
제 1 서브-판독은 플로팅 게이트 결합에 대해 어떠한 보상도 포함하지 않는 단계 740에서 수행된다. 도통의 메모리 셀들에 대해서, 대응하는 비트라인 프로세서는 래치들(DL0, DL1)이 상태 "Gr"에 대한 데이터를 저장하고 있는지를 판정한다. 그렇지 않다면, 이 비트라인에 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 DL2가 논리 0을 저장하고 있는지를 판정한다. 그렇지 않다면, 데이터 래치들은 이들이 이미 WLm에 대한 데이터를 공유하고 있기 때문에 변경되지 않는다. DL2가 0으로 설정된다면, 대응하는 프로세서는 상태 "B"(예를 들면, 00)에 대응하는 소정의 데이터로 DL0 및 DL1에 데이터를 덮어쓴다. 또한, 프로세서는 DL0 및 DL1이 현재 WLm 데이터를 저장하고 있음을 나타내기 위해서 DL2를 1로 설정한다.
단계 744에서, 상태 "C" 서브-판독은 상태 "A"에서 이웃한 메모리 셀들에 근거하여 보상을 적용하면서 수행된다. 도통 셀들에 대해서, 비트라인 프로세서는 DL0 및 DL1이 상태 "A"에 대한 데이터를 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 래치들(DL0, DL1)을 상태 "B"에 대한 데이터로 덮어쓰며 DL2를 논리 1로 설정한다.
단계 748에서, 상태 "C" 서브-판독은 상태 "B"에 있는 이웃한 메모리 셀들에 근거하여 보상을 적용하면서 수행된다. 도통 셀들에 대해서, 비트라인 프로세서는 DL0 및 DL1이 상태 "B"에 대한 데이터를 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 래치들(DL0, DL1)을 상태 "B"에 대한 데이터로 덮어쓰며 DL2를 논리 1로 설정한다.
단계 752에서, 최종 상태 "C" 서브-판독은 상태 "C"에 있는 이웃한 메모리 셀들에 근거하여 보상을 적용하면서 수행된다. 도통 셀들에 대해서, 비트라인 프로세서는 DL0 및 DL1이 상태 "C"에 대한 데이터를 저장하고 있는지를 판정한다. 그렇지 않다면, 어떠한 조치도 취해지지 않는다. 그러하다면, 프로세서는 래치들(DL0, DL1)을 상태 "C"에 대한 데이터로 덮어쓰며 DL2를 논리 1로 설정한다.
최종 논리 시퀀스가 단계 756에서 수행된다. 비트 프로세서들은 임의의 비트라인에 대한 제 3 데이터 래치(DL2)가 0으로 설정되어 있는지를 판정한다. 아직도 DL2에 0을 저장하고 있는 임의의 비트라인들은 상태 레벨들 중 어느 한 레벨에 서브-판독들 중 어느 한 판독동안 도통되지 않았던 메모리 셀들을 갖는다. 따라서, 메모리 셀들은 최상위 프로그램된 상태, 즉 상태 "C"에 있다. 이들 비트라인들을 위한 프로세서들은 DL0 및 DL1을 상태 "C"에 대한 데이터로 설정하며(예를 들면, LM 코드에서 논리 01) 이어서 래치들이 현재 WLm에 대한 데이터를 저장하고 있음을 나타내기 위해서 DL2를 1로 설정한다.
n비트 메모리에 대한 n+1 래치들을 사용하여 LA 판독을 수행하는 기술은 도 21a-21b에 도시된 2비트 예에 관하여 기술되었다. 유사한 기술들이 다른 n의 값들, 이를테면 n=3 혹은 그 이상에 쉽게 적용할 수 있음이 명백할 것이다. 일부 구현들에서, 일부 메모리 상태들이 이들 간에 더 넓은 마진을 갖거나 교란에 대해 더 강고한 경우, 시간을 절약하기 위해 모든 보상들이 다 적용될 필요는 없다.
모든 특허들, 특허출원들, 논문들, 책들, 명세들, 그외 공보들, 문서들 및 여기에서 참조된 것들은 모든 목적들을 위해 이들 전부를 참조로 여기 포함시킨다. 포함시킨 공보들, 문서들 또는 참조된 것들 중 어느 것과 본 문서의 텍스트 간에 용어의 정의 혹은 사용에서 어떤 불일치 혹은 상충의 정도까지도, 본 문서 내 용어의 정의 혹은 사용이 우선할 것이다.
본 발명의 여러 면들이 어떤 실시예들에 관하여 기술되었을지라도, 발명은 첨부된 청구항들의 전체 범위 내에서 보호될 자격이 있음이 이해된다.
상술한 바와 같이, 본 발명은, 일반적으로 전기적으로 소거 가능하고 프로그램 가능한 판독전용 메모리(EEPROM) 및 플래시 EEPROM과 같은 비휘발성 반도체 메모리와, 구체적으로는 한 메모리 위치에서 다른 메모리 위치로 페이지를 카피하는 등의 메모리 동작들에서 래치 구조들의 효율적 이용에 기반한 캐시 동작들을 제공하는데 사용된다.

Claims (50)

  1. 개개의 메모리 셀들이 복수의 메모리 상태들 중 하나로 각각 프로그램할 수 있는 것인 한 어레이 메모리 셀들을 갖는 비휘발성 메모리에서, 일 그룹의 데이터를 제 1 메모리 셀 그룹에서 제 2 메모리 셀 그룹에 카피하는 방법에 있어서,
    상기 복수의 메모리 상태들 각각을 엔코딩하기 위해 복수의 코드 비트들을 갖는 복수-비트 코드를 제공하는 단계;
    더 상위의 코드 비트들을 이용가능할수록, 프로그램된 상태들이 더 디코딩하게 되도록 상기 코드 비트들의 비트 순서를 사전에 결정하는 단계;
    상기 메모리 상태들을 판정하기 위해서 상기 제 1 메모리 셀 그룹의 메모리 셀들로부터 판독하는 단계;
    복수-비트 데이터로서 각각 판독된 메모리 상태를 상기 복수-비트 코드로 엔코딩하는 단계;
    상기 제 1 메모리 셀 그룹의 모든 메모리 셀의 상기 복수-비트 데이터를 래치하는 단계;
    상기 래치된 데이터를 상기 코드 비트들의 수만큼의 데이터 그룹들로 나누는 단계로서, 각각의 데이터 그룹은 상기 제 1 메모리 셀 그룹의 모든 메모리 셀로부터 동일한 코드 비트를 수집한 것인, 단계;
    각각의 데이터 그룹을 업데이트하기 위해 임의의 수정된 비트들을 데이터 처리하고 리턴하기 위해 제어기에 각각의 데이터 그룹의 비트들을 출력함으로써, 상 기 소정의 코드 비트 순서에 따라 상기 데이터 그룹들을 데이터 그룹별로 처리하는 단계;
    임의의 데이터 그룹이 임의의 추가의 데이터 그룹 처리와 동시에 처리되었다면, 상기 처리된 데이터 그룹들로부터 가용한 코드 비트들에 의해 디코딩가능한 최상위 메모리 상태까지 상기 제 2 메모리 셀 그룹의 개개의 메모리 셀들을 프로그램하는 단계; 및
    상기 복수-비트 코드의 모든 코드 비트들이 상기 프로그래밍을 완료하는데 사용할 수 있게 될 때까지 상기 처리 및 상기 프로그래밍을 반복하는 단계를
    포함하는, 데이터 카피 방법.
  2. 제 1항에 있어서, 상기 메모리 셀 그룹의 각각의 메모리 셀의 상기 복수-비트 데이터를 래치하기 위해 한 세트의 래치들을 제공하는 단계를 더 포함하고, 상기 한 세트의 래치들은 상기 복수의 코드 비트들 및 이에 더하여 추가의 비트만을 위한 용량을 갖는, 데이터 카피 방법.
  3. 제 1항에 있어서, 상기 판독단계는 이웃하는 워드라인의 메모리 셀들에 기인한 임의의 교란 효과들을 정정하는 단계를 포함하는, 데이터 카피 방법.
  4. 제 1항에 있어서, 상기 복수-비트 코드는 2개의 비트들을 포함하는, 데이터 카피 방법.
  5. 제 1항에 있어서, 상기 복수-비트 코드는 3개의 비트들을 포함하는, 데이터 카피 방법.
  6. 제 1항에 있어서, 상기 복수-비트 코드는 4개의 비트들을 포함하는, 데이터 카피 방법.
  7. 제 1항에 있어서, 상기 한 어레이의 메모리 셀들은 복수의 소거 가능한 블록들의 메모리 셀들로 조직되며, 상기 제 1 메모리 셀 및 상기 제 2 메모리 셀 그룹은 상이한 소거 가능한 블록들에 속하는, 데이터 카피 방법.
  8. 제 1항에 있어서, 상기 한 어레이의 메모리 셀들은 복수의 소거 가능한 블록들의 메모리 셀들로 조직되고, 상기 제 1 메모리 셀 그룹 및 상기 제 2 메모리 셀 그룹은 동일한 소거 가능한 블록에 속하는, 데이터 카피 방법.
  9. 제 1항에 있어서, 상기 비휘발성 메모리는 플래시 EEPROM인, 데이터 카피 방법.
  10. 제 1항에 있어서, 상기 비휘발성 메모리는 NAND 구조를 갖는, 데이터 카피 방법.
  11. 제 1항에 있어서, 상기 비휘발성 메모리는 착탈가능한 메모리 카드상에 있는, 데이터 카피 방법.
  12. 제 1항에 있어서, 상기 비휘발성 메모리는 플로팅 게이트 구조를 갖는 메모리 셀들을 갖는, 데이터 카피 방법.
  13. 제 1항에 있어서, 상기 비휘발성 메모리는 유전층 구조를 갖는 메모리 셀들을 포함하는, 데이터 카피 방법.
  14. 제 2항에 있어서, 상기 판독단계는 이웃한 워드라인의 메모리 셀들에 기인한 임의의 교란 효과들에 대해 정정하는 단계를 포함하는, 데이터 카피 방법.
  15. 제 2항에 있어서, 상기 복수-비트 코드는 2개의 비트들을 내포하는, 데이터 카피 방법.
  16. 제 2항에 있어서, 상기 복수-코드는 3개의 비트들을 내포하는, 데이터 카피 방법.
  17. 제 2항에 있어서, 상기 복수-코드는 4개의 비트들을 내포하는, 데이터 카피 방법.
  18. 제 2항에 있어서, 상기 한 어레이의 메모리 셀들은 상기 한 어레이의 메모리 셀들은 복수의 소거 가능한 블록들의 메모리 셀들로 조직되고, 상기 제 1 메모리 셀 그룹 및 상기 제 2 메모리 셀 그룹은 서로 다른 소거 가능한 블록들에 속하는, 데이터 카피 방법.
  19. 제 2항에 있어서, 상기 한 어레이의 메모리 셀들은 복수의 소거 가능한 블록들의 메모리 셀들로 조직되고, 상기 제 1 메모리 셀 그룹 및 상기 제 2 메모리 셀 그룹은 동일한 소거 가능한 블록에 속하는, 데이터 카피 방법.
  20. 제 2항에 있어서, 상기 비휘발성 메모리는 플래시 EEPROM인, 데이터 카피 방법.
  21. 제 2항에 있어서, 상기 비휘발성 메모리는 NAND 구조를 갖는, 데이터 카피 방법.
  22. 제 2항에 있어서, 상기 비휘발성 메모리는 착탈가능한 메모리 카드상에 있는, 데이터 카피 방법.
  23. 제 2항에 있어서, 상기 비휘발성 메모리는 플로팅 게이트 구조를 갖는 메모리 셀들을 갖는, 데이터 카피 방법.
  24. 제 2항에 있어서, 상기 비휘발성 메모리는 유전층 구조를 갖는 메모리 셀들을 포함하는, 데이터 카피 방법.
  25. 비휘발성 메모리에 있어서,
    개개의 메모리 셀들이 복수의 메모리 상태들 중 하나로 각각 프로그램할 수 있는 것인 한 어레이 메모리 셀들;
    상기 복수의 메모리 상태들 각각을 엔코딩하기 위해 복수의 코드 비트들을 갖는 복수-비트 코드;
    더 상위의 코드 비트들 더 이용가능할수록, 프로그램된 상태들이 더 디코딩하게 되도록 하는 상기 코드 비트들의 비트 순서;
    메모리 셀 그룹의 각 메모리 셀의 상기 복수-비트 데이터를 래치하기 위한 한 세트의 래치들로서, 상기 한 세트의 래치들은 상기 복수의 코드 비트들 및 이에 더하여 추가의 비트만을 위한 용량을 갖는 것인, 상기 한 세트의 래치들;
    제 1 메모리 셀 그룹에서 제 2 메모리 셀 그룹으로 한 그룹의 데이터를 카피하기 위한 요청에 응하는 제어기를 포함하며,
    상기 제어기는,
    프로그램된 상기 메모리 상태들을 판정하기 위해서 상기 제 1 메모리 셀 그 룹의 메모리 셀들로부터 판독하는 단계;
    복수-비트 데이터로서 각각 판독된 메모리 상태를 상기 복수-비트 코드로 엔코딩하는 단계;
    상기 제 1 메모리 셀 그룹의 모든 메모리 셀의 상기 복수-비트 데이터를 래치하는 단계;
    상기 래치된 데이터를 상기 코드 비트들의 수만큼의 데이터 그룹들로 나누는 단계로서, 각각의 데이터 그룹은 상기 제 1 메모리 셀 그룹의 모든 메모리 셀로부터 동일한 코드 비트를 수집한 것인, 단계;
    각각의 데이터 그룹을 업데이트하기 위해 임의의 수정된 비트들을 데이터 처리하고 리턴하기 위해 제어기에 각각의 데이터 그룹의 비트들을 출력함으로써, 상기 소정의 코드 비트 순서에 따라 상기 데이터 그룹들을 데이터 그룹별로 처리하는 단계;
    임의의 데이터 그룹이 임의의 추가의 데이터 그룹 처리와 동시에 처리되었다면, 상기 처리된 데이터 그룹들로부터 가용한 코드 비트들에 의해 디코딩가능한 최상위 메모리 상태까지 상기 제 2 메모리 셀 그룹의 개개의 메모리 셀들을 프로그램하는 단계; 및
    상기 복수-비트 코드의 모든 코드 비트들이 상기 프로그래밍을 완료하는데 사용할 수 있게 될 때까지 상기 처리 및 상기 프로그래밍을 반복하는 단계를
    포함하는 동작들을 수행하는, 비휘발성 메모리.
  26. 제 25항에 있어서, 상기 한 세트의 래치들은 상기 복수의 코드 비트들 및 이에 더하여 추가의 비트만을 위한 용량을 갖는, 비휘발성 메모리.
  27. 제 25항에 있어서, 상기 판독단계는 이웃하는 워드라인의 메모리 셀들에 기인한 임의의 교란 효과들을 정정하는 단계를 포함하는, 비휘발성 메모리.
  28. 제 25항에 있어서, 상기 복수-비트 코드는 2개의 비트들을 포함하는, 비휘발성 메모리.
  29. 제 25항에 있어서, 상기 복수-비트 코드는 3개의 비트들을 포함하는, 비휘발성 메모리.
  30. 제 25항에 있어서, 상기 복수-비트 코드는 4개의 비트들을 포함하는, 비휘발성 메모리.
  31. 제 25항에 있어서, 상기 한 어레이의 메모리 셀들은 복수의 소거 가능한 블록들의 메모리 셀들로 조직되며, 상기 제 1 메모리 셀 및 상기 제 2 메모리 셀 그룹은 상이한 소거 가능한 블록들에 속하는, 비휘발성 메모리.
  32. 제 25항에 있어서, 상기 한 어레이의 메모리 셀들은 복수의 소거 가능한 블 록들의 메모리 셀들로 조직되고, 상기 제 1 메모리 셀 그룹 및 상기 제 2 메모리 셀 그룹은 동일한 소거 가능한 블록에 속하는, 비휘발성 메모리.
  33. 제 25항에 있어서, 상기 비휘발성 메모리는 플래시 EEPROM인, 비휘발성 메모리.
  34. 제 25항에 있어서, 상기 비휘발성 메모리는 NAND 구조를 갖는, 비휘발성 메모리.
  35. 제 25항에 있어서, 상기 비휘발성 메모리는 착탈가능한 메모리 카드상에 있는, 비휘발성 메모리.
  36. 제 25항에 있어서, 상기 비휘발성 메모리는 플로팅 게이트 구조를 갖는 메모리 셀들을 갖는, 비휘발성 메모리.
  37. 제 25항에 있어서, 상기 비휘발성 메모리는 유전층 구조를 갖는 메모리 셀들을 포함하는, 비휘발성 메모리.
  38. 제 26항에 있어서, 상기 판독단계는 이웃한 워드라인의 메모리 셀들에 기인한 임의의 교란 효과들에 대해 정정하는 단계를 포함하는, 비휘발성 메모리.
  39. 제 26항에 있어서, 상기 복수-비트 코드는 2개의 비트들을 내포하는, 비휘발성 메모리.
  40. 제 26항에 있어서, 상기 복수-코드는 3개의 비트들을 내포하는, 비휘발성 메모리.
  41. 제 26항에 있어서, 상기 복수-코드는 4개의 비트들을 내포하는, 비휘발성 메모리.
  42. 제 26항에 있어서, 상기 한 어레이의 메모리 셀들은 상기 한 어레이의 메모리 셀들은 복수의 소거 가능한 블록들의 메모리 셀들로 조직되고, 상기 제 1 메모리 셀 그룹 및 상기 제 2 메모리 셀 그룹은 서로 다른 소거 가능한 블록들에 속하는, 비휘발성 메모리.
  43. 제 26항에 있어서, 상기 한 어레이의 메모리 셀들은 복수의 소거 가능한 블록들의 메모리 셀들로 조직되고, 상기 제 1 메모리 셀 그룹 및 상기 제 2 메모리 셀 그룹은 동일한 소거 가능한 블록에 속하는, 비휘발성 메모리.
  44. 제 26항에 있어서, 상기 비휘발성 메모리는 플래시 EEPROM인, 비휘발성 메모 리.
  45. 제 26항에 있어서, 상기 비휘발성 메모리는 NAND 구조를 갖는, 비휘발성 메모리.
  46. 제 26항에 있어서, 상기 비휘발성 메모리는 착탈가능한 메모리 카드상에 있는, 비휘발성 메모리.
  47. 제 26항에 있어서, 상기 비휘발성 메모리는 플로팅 게이트 구조를 갖는 메모리 셀들을 갖는, 비휘발성 메모리.
  48. 제 26항에 있어서, 상기 비휘발성 메모리는 유전층 구조를 갖는 메모리 셀들을 포함하는, 비휘발성 메모리.
  49. 비휘발성 메모리에 있어서,
    개개의 메모리 셀들이 복수의 메모리 상태들 중 하나로 각각 프로그램할 수 있는 것인 한 어레이 메모리 셀들;
    상기 복수의 메모리 상태들 각각을 엔코딩하기 위해 복수의 코드 비트들을 갖는 복수-비트 코드;
    더 상위의 코드 비트들이 더 이용가능할수록, 프로그램된 상태들이 더 디코 딩하게 되도록 하는 상기 코드 비트들의 비트 순서;
    메모리 셀 그룹의 각 메모리 셀의 상기 복수-비트 데이터를 래치하기 위한 한 세트의 래치들로서, 상기 한 세트의 래치들은 상기 복수의 코드 비트들 및 이에 더하여 추가의 비트만을 위한 용량을 갖는 것인, 상기 한 세트의 래치들;
    프로그램된 상기 메모리 상태들을 판정하기 위해서 상기 제 1 메모리 셀 그룹의 메모리 셀들로부터 판독하는 수단;
    복수-비트 데이터로서 각각 판독된 메모리 상태를 상기 복수-비트 코드로 엔코딩하는 수단;
    상기 제 1 메모리 셀 그룹의 모든 메모리 셀의 상기 복수-비트 데이터를 래치하는 수단;
    상기 래치된 데이터를 상기 코드 비트들의 수만큼의 데이터 그룹들로 나누는 수단으로서, 각각의 데이터 그룹은 상기 제 1 메모리 셀 그룹의 모든 메모리 셀로부터 동일한 코드 비트를 수집한 것인, 수단;
    각각의 데이터 그룹을 업데이트하기 위해 임의의 수정된 비트들을 데이터 처리하고 리턴하기 위해 제어기에 각각의 데이터 그룹의 비트들을 출력함으로써, 상기 소정의 코드 비트 순서에 따라 상기 데이터 그룹들을 데이터 그룹별로 처리하는 수단;
    임의의 데이터 그룹이 임의의 추가의 데이터 그룹 처리와 동시에 처리되었다면, 상기 처리된 데이터 그룹들로부터 가용한 코드 비트들에 의해 디코딩가능한 최상위 메모리 상태까지 상기 제 2 메모리 셀 그룹의 개개의 메모리 셀들을 프로그램 하는 수단; 및
    상기 복수-비트 코드의 모든 코드 비트들이 상기 프로그래밍을 완료하는데 사용할 수 있게 될 때까지 상기 처리 및 상기 프로그래밍을 반복하는 수단을
    포함하는, 비휘발성 메모리.
  50. 제 49항에 있어서, 상기 한 세트의 래치들은 상기 복수의 코드 비트들 및 이에 더하여 추가의 비트만을 위한 용량을 갖는, 비휘발성 메모리.
KR1020097009984A 2007-03-07 2008-02-29 비휘발성 메모리 및 캐시 페이지 카피를 위한 방법 KR101518228B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/683,356 US7502255B2 (en) 2007-03-07 2007-03-07 Method for cache page copy in a non-volatile memory
US11/683,365 US7499320B2 (en) 2007-03-07 2007-03-07 Non-volatile memory with cache page copy
US11/683,365 2007-03-07
US11/683,356 2007-03-07
PCT/US2008/055449 WO2008109411A1 (en) 2007-03-07 2008-02-29 Non-volatile memory and method for cache page copy

Publications (2)

Publication Number Publication Date
KR20100014242A true KR20100014242A (ko) 2010-02-10
KR101518228B1 KR101518228B1 (ko) 2015-05-08

Family

ID=39504940

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097009984A KR101518228B1 (ko) 2007-03-07 2008-02-29 비휘발성 메모리 및 캐시 페이지 카피를 위한 방법

Country Status (5)

Country Link
EP (1) EP2132749B1 (ko)
JP (1) JP4791580B2 (ko)
KR (1) KR101518228B1 (ko)
TW (1) TWI362039B (ko)
WO (1) WO2008109411A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8102705B2 (en) * 2009-06-05 2012-01-24 Sandisk Technologies Inc. Structure and method for shuffling data within non-volatile memory devices
JP2011150749A (ja) * 2010-01-20 2011-08-04 Toshiba Corp 不揮発性半導体記憶装置
JP2011181131A (ja) 2010-02-26 2011-09-15 Toshiba Corp 半導体記憶装置
JP2013069392A (ja) 2011-09-26 2013-04-18 Toshiba Corp 不揮発性半導体記憶装置及び不揮発性半導体記憶装置のデータ書き込み方法
KR101893145B1 (ko) * 2011-12-06 2018-10-05 삼성전자주식회사 메모리 시스템들 및 그것들의 블록 복사 방법들
JP6652470B2 (ja) * 2016-09-07 2020-02-26 キオクシア株式会社 半導体記憶装置
JP7051546B2 (ja) * 2018-04-16 2022-04-11 キオクシア株式会社 メモリシステムおよび制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687158B2 (en) * 2001-12-21 2004-02-03 Fujitsu Limited Gapless programming for a NAND type flash memory
US7447078B2 (en) 2005-04-01 2008-11-04 Sandisk Corporation Method for non-volatile memory with background data latch caching during read operations
KR100648286B1 (ko) 2005-07-04 2006-11-23 삼성전자주식회사 단일의 페이지 버퍼 구조로 멀티-비트 및 단일-비트프로그램 동작을 수행하는 플래시 메모리 장치
WO2007131127A2 (en) * 2006-05-05 2007-11-15 Sandisk Corporation Merging queued memory operation in a non-volatile memory

Also Published As

Publication number Publication date
JP2010520575A (ja) 2010-06-10
TWI362039B (en) 2012-04-11
TW200903496A (en) 2009-01-16
WO2008109411A1 (en) 2008-09-12
JP4791580B2 (ja) 2011-10-12
EP2132749A1 (en) 2009-12-16
EP2132749B1 (en) 2014-03-26
KR101518228B1 (ko) 2015-05-08

Similar Documents

Publication Publication Date Title
US7499320B2 (en) Non-volatile memory with cache page copy
US7502255B2 (en) Method for cache page copy in a non-volatile memory
KR101727349B1 (ko) 비휘발성 메모리 및 오류들을 관리하기 위한 가속화된 기입후 판독을 사용한 방법
KR101578812B1 (ko) 가장 빠른 및/또는 가장 느린 프로그래밍 비트를 무시하여 프로그램 검증이 감소된 비휘발성 메모리와 방법
US7734861B2 (en) Pseudo random and command driven bit compensation for the cycling effects in flash memory
US7885112B2 (en) Nonvolatile memory and method for on-chip pseudo-randomization of data within a page and between pages
US7345928B2 (en) Data recovery methods in multi-state memory after program fail
US7420847B2 (en) Multi-state memory having data recovery after program fail
KR101541710B1 (ko) 비휘발성 메모리 및 인접한 교란에 대해 파이프라인식 정정으로 감지하는 방법
US8027195B2 (en) Folding data stored in binary format into multi-state format within non-volatile memory devices
US7224614B1 (en) Methods for improved program-verify operations in non-volatile memories
US7310255B2 (en) Non-volatile memory with improved program-verify operations
JP4638544B2 (ja) 不揮発性メモリにおける改善されたプログラムベリファイ操作のための方法および装置
EP2070090B1 (en) Pseudo random and command driven bit compensation for the cycling effects in flash memory and methods therefor
US7606966B2 (en) Methods in a pseudo random and command driven bit compensation for the cycling effects in flash memory
KR101787177B1 (ko) 복수 패스들로 분해된 계단 파형을 사용하는 프로그램 알고리즘
WO2013090003A1 (en) Non-volatile memory and method with improved first pass programming
WO2010077846A1 (en) Non-volatile memory and method with continuous scanning time-domain sensing
KR101518228B1 (ko) 비휘발성 메모리 및 캐시 페이지 카피를 위한 방법
WO2006107651A1 (en) Multi-state memory having data recovery after program fail

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
N231 Notification of change of applicant
E902 Notification of reason for refusal
AMND Amendment
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 5