KR20080080529A - Reverse coupling effect with timing information - Google Patents

Reverse coupling effect with timing information Download PDF

Info

Publication number
KR20080080529A
KR20080080529A KR1020087013971A KR20087013971A KR20080080529A KR 20080080529 A KR20080080529 A KR 20080080529A KR 1020087013971 A KR1020087013971 A KR 1020087013971A KR 20087013971 A KR20087013971 A KR 20087013971A KR 20080080529 A KR20080080529 A KR 20080080529A
Authority
KR
South Korea
Prior art keywords
storage elements
nonvolatile storage
data
timing information
neighboring
Prior art date
Application number
KR1020087013971A
Other languages
Korean (ko)
Other versions
KR101016432B1 (en
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/271,241 external-priority patent/US7289344B2/en
Priority claimed from US11/272,335 external-priority patent/US7289348B2/en
Application filed by 샌디스크 코포레이션 filed Critical 샌디스크 코포레이션
Publication of KR20080080529A publication Critical patent/KR20080080529A/en
Application granted granted Critical
Publication of KR101016432B1 publication Critical patent/KR101016432B1/en

Links

Images

Classifications

    • 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/10Programming or data input circuits
    • G11C16/12Programming voltage switching 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/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/3436Arrangements for verifying correct programming or erasure

Abstract

Shifts in the apparent charge stored on a floating gate (or other charge storing element) of a non-volatile memory cell can occur because of the coupling of an electric field based on the charge stored in neighboring floating gates (or other neighboring charge storing elements). The problem occurs most pronouncedly between sets of adjacent memory cells that have been programmed at different times. To compensate for this coupling, the read process for a given memory cell will take into account the programmed state of a neighbor memory cell if the neighbor memory cell was programmed subsequent to the given memory cell. Techniques for determining whether the neighbor memory cell was programmed before or after the given memory cell are disclosed.

Description

타이밍 정보를 이용한 리버스 커플링 효과{REVERSE COUPLING EFFECT WITH TIMING INFORMATION}REVERSE COUPLING EFFECT WITH TIMING INFORMATION}

본 명세서에서 설명되는 기술은 비휘발성 메모리에 관한 것이다.The technology described herein relates to nonvolatile memory.

반도체 메모리는 다양한 전자 디바이스에서 점점 더 많이 사용되고 있다. 예를 들어, 비휘발성 반도체 메모리는 셀률러 전화기, 디지털 카메라, PDA(Personal Digital Assistant), 모바일 컴퓨팅 디바이스, 비휘발성 컴퓨팅 디바이스 및 다른 디바이스에서 사용되고 있다. 전기적 소거 가능 판독 전용 메모리(Electrical Erasable Programmable Read Only Memory, EEPROM) 및 플래시 메모리는 가장 널리 이용되는 비휘발성 반도체 메모리 중의 하나이다.Semiconductor memories are increasingly used in various electronic devices. For example, nonvolatile semiconductor memory is used in cellular telephones, digital cameras, personal digital assistants (PDAs), mobile computing devices, nonvolatile computing devices, and other devices. Electrically erasable programmable read only memory (EEPROM) and flash memory are one of the most widely used nonvolatile semiconductor memories.

EEPROM 및 플래시 메모리는 반도체 기판 내의 채널 영역 위에 배치되고 이 채널 영역으로부터 절연되어 있는 플로팅 게이트를 이용한다. 플로팅 게이트는 소스 영역과 드레인 영역 사이에 위치하고 있다. 제어 게이트는 플로팅 게이트로 위에 제공되고 이 플로팅 게이트로부터 절연되어 있다. 트랜지스터의 임계 전압은 플로팅 게이트 상에 보유되는 전하의 양에 의해 제어된다. 즉, 트랜지스터가 그 소스와 드레인 간의 전도를 허용하기 위해 턴온되기 전에 제어 게이트에 인가되어야만 하는 최소 전압의 양은 플로팅 게이트 상의 전하의 레벨에 의해 제어된다.EEPROMs and flash memories utilize floating gates disposed over and insulated from channel regions within a semiconductor substrate. The floating gate is located between the source and drain regions. The control gate is provided above and insulated from the floating gate. The threshold voltage of the transistor is controlled by the amount of charge retained on the floating gate. That is, the amount of minimum voltage that must be applied to the control gate before the transistor is turned on to allow conduction between its source and drain is controlled by the level of charge on the floating gate.

EEPROM 또는 플래시 메모리 디바이스, 예를 들어 NAND 플래시 메모리 디바이스를 프로그래밍할 때, 전형적으로 프로그램 전압이 제어 게이트에 인가되고 그리고 비트 라인은 접지된다. 채널로부터의 전자들은 플로팅 게이트에 주입된다. 전자들이 플로팅 게이트에 축적될 때, 플로팅 게이트는 음으로 충전되고 그리고 메모리 셀의 임계 전압은 상승되어 메모리 셀은 프로그래밍 상태에 있게 된다. 프로그래밍에 대한 더 많은 정보는 미국 특허 번호 6,859,397 및 미국 특허 출원 번호 10/629,068(발명의 명칭: "Detecting Over Programmed Memory," 2003.07.29. 출원)에서 찾을 수 있으며, 이 모두는 그 전체가 참조로 본 명세서에 통합된다.When programming an EEPROM or flash memory device, such as a NAND flash memory device, typically a program voltage is applied to the control gate and the bit line is grounded. Electrons from the channel are injected into the floating gate. When electrons accumulate in the floating gate, the floating gate is negatively charged and the threshold voltage of the memory cell is raised so that the memory cell is in a programmed state. More information about programming can be found in U.S. Patent No. 6,859,397 and U.S. Patent Application No. 10 / 629,068, filed "Detecting Over Programmed Memory," filed Jul. 29, 2003, all of which are incorporated by reference in their entirety. Incorporated herein.

일부 EEPROM 및 플래시 메모리 디바이스는 두 가지 범위의 전하를 저장하는데 사용되는 플로팅 게이트를 구비하며, 따라서 메모리 셀은 두 가지 상태(소거 상태 및 프로그래밍 상태) 사이에서 프로그래밍/소거될 수 있다. 이러한 플래시 메모리 디바이스는 때때로 바이너리 플래시 메모리 디바이스로 언급된다.Some EEPROM and flash memory devices have floating gates that are used to store two ranges of charges, so that memory cells can be programmed / erased between two states (erasure state and programming state). Such flash memory devices are sometimes referred to as binary flash memory devices.

다중-상태 플래시 메모리 디바이스는 금지 범위에 의해 분리된 복수의 개별적 허용/유효 프로그래밍 임계 전압 범위를 식별함으로써 구현된다. 각각의 개별 임계 전압 범위는 메모리 디바이스에서 인코딩된 데이터 비트들의 세트에 대해 미리 결정된 값에 대응한다.Multi-state flash memory devices are implemented by identifying a plurality of individual allowable / effective programming threshold voltage ranges separated by a forbidden range. Each individual threshold voltage range corresponds to a predetermined value for the set of encoded data bits in the memory device.

플로팅 게이트 상에 저장된 겉보기 전하(apparent charge)의 시프트(shift)는 플로팅 게이트에 인접하여 저장된 혹은 플로팅 게이트 가까이에 저장된 전하에 근거하는 전기장의 커플링으로 인해 발생할 수 있다. 이 플로팅 게이트 대 플로팅 게이트 커플링 현상은 미국 특허 번호 5,867,429에 설명되어 있고, 이것은 참조로 그 전체가 본 명세서 통합된다. 타겟 플로팅 게이트에 대한 커플링을 야기할 수 있는 플로팅 게이트는 동일한 비트 라인 상의 플로팅 게이트, 동일한 워드 라인 상의 플로팅 게이트, 혹은 타겟 플로팅 게이트로부터 가로질러 있는 플로팅 게이트를 포함할 수 있는데, 왜냐하면 이들은 또 다른 비트 라인 및 또 다른 워드 라인 상에 있기 때문이다.A shift in the apparent charge stored on the floating gate can occur due to the coupling of the electric field based on charge stored near or near the floating gate. This floating gate to floating gate coupling phenomenon is described in US Pat. No. 5,867,429, which is hereby incorporated by reference in its entirety. Floating gates that can cause coupling to the target floating gate can include floating gates on the same bit line, floating gates on the same word line, or floating gates traversing from the target floating gate, because they are another bit. It is on the line and another word line.

플로팅 게이트 대 플로팅 게이트 커플링 현상은 다른 시간에 프로그래밍되는 메모리 셀들의 세트들 간에서 가장 확실하게 일어난다. 예를 들어, 제 1 메모리 셀이 프로그래밍되어 데이터의 한 세트에 대응하는 플로팅 게이트에 전하의 레벨을 더한다. 후속적으로, 하나 또는 그 이상의 이웃하는 메모리 셀들이 프로그래밍되어 데이터의 제 2 세트에 대응하는 플로팅 게이트에 전하의 레벨을 더한다. 하나 또는 그 이상의 이웃하는 메모리 셀들이 프로그래밍된 이후에, 제 1 메모리 셀로부터 판독된 전하 레벨은 프로그래밍과는 다른 것으로 보이는데, 왜냐하면 제 1 메모리 셀에 연결되는 이웃하는 메모리 셀들 상의 전하의 효과 때문이다. 이웃하는 메모리 셀들로부터의 커플링은 판독되는 겉보기 전하 레벨을 충분한 양만큼 시프팅시켜 저장된 데이터가 대량 판독될 수 있다.Floating gate to floating gate coupling occurs most reliably between sets of memory cells that are programmed at different times. For example, a first memory cell is programmed to add a level of charge to the floating gate corresponding to a set of data. Subsequently, one or more neighboring memory cells are programmed to add a level of charge to the floating gate corresponding to the second set of data. After one or more neighboring memory cells have been programmed, the charge level read from the first memory cell appears to be different from programming because of the effect of the charge on neighboring memory cells connected to the first memory cell. Coupling from neighboring memory cells can shift the apparent charge level read by a sufficient amount so that the stored data can be read out in bulk.

플로팅 게이트 대 플로팅 게이트 커플링의 효과는 다중-상태 디바이스에 있어 매우 중요한데, 왜냐하면 다중-상태 디바이스에서 허용된 임계 전압 범위 및 금지 범위는 바이너리 디바이스에서 보다 더 좁기 때문이다.The effect of floating gate to floating gate coupling is very important for multi-state devices because the threshold voltage range and forbidden ranges allowed in multi-state devices are narrower than in binary devices.

메모리 셀들의 크기가 계속 작아짐에 따라, 임계 전압의 자연적인 프로그래밍 및 소거 분포는, 짧은 채널 효과, 더 큰 옥사이드 두께/커플링 비율 변화 및 더 큰 채널 도펀트 변동으로 인해, 증가할 것으로 예측되며, 인접 상태들 간의 가용한 분리는 감소될 것으로 예측된다. 이 효과는 단지 두 가지 상태를 이용하는 메모리(바이너리 메모리)보다 다중-상태 메모리에 대해 훨씬 더 중요하다. 더욱이, 워드 라인들 간의 공간 및 비트 라인들 간의 공간의 감소로 인접하는 플로팅 게이트들 간의 커플링이 또한 증가한다.As memory cells continue to shrink in size, the natural programming and erase distribution of the threshold voltage is expected to increase due to short channel effects, larger oxide thickness / coupling ratio changes, and larger channel dopant variations. Available separation between states is expected to be reduced. This effect is much more important for multi-state memory than just two states (binary memory). Moreover, the reduction between the space between word lines and the space between bit lines also increases the coupling between adjacent floating gates.

인접하는 플로팅 게이트들 간의 커플링을 보상하기 위해, 주어진 메모리 셀에 대한 판독 프로세스는, 만약 이웃 메모리 셀이 상기 주어진 메모리 셀에 후속하여 프로그래밍된다면, 이웃 메모리 셀의 프로그래밍 상태를 고려한다. 주어진 메모리 셀들 이전에 혹은 이후에 이웃 메모리 셀이 프로그래밍되었는지 여부를 결정하는 기술이 개시된다.To compensate for coupling between adjacent floating gates, the read process for a given memory cell takes into account the programming state of the neighboring memory cell if the neighboring memory cell is programmed subsequent to the given memory cell. Techniques for determining whether a neighbor memory cell has been programmed before or after given memory cells are disclosed.

일 실시예는 하나 또는 그 이상의 비휘발성 저장 소자들에 저장된 데이터 세트에 대해 커스터마이징(customizing)된 저장된 타이밍 정보(timing information)에 액세스(access)하는 것을 포함하고, 그리고 하나 또는 그 이상의 저장 소자들로부터 데이터 세트를 판독하는 것을 포함한다. 데이터의 판독은 타이밍 정보에 근거하여 데이터 세트에서의 하나 또는 그 이상의 포텐셜 에러(potential error)들을 선택적으로 보상하는 것을 포함한다.One embodiment includes accessing stored timing information customized for a data set stored in one or more non-volatile storage elements, and from one or more storage elements. Reading the data set. Reading of the data includes selectively compensating for one or more potential errors in the data set based on the timing information.

예시적 일 실시예는 복수의 비휘발성 저장 소자들과, 비휘발성 저장 소자들에 연결된 워드 라인들의 세트와, 그리고 상기 비휘발성 저장 소자들과 통신하는 하나 또는 그 이상의 관리 회로들을 포함한다. 하나 또는 그 이상의 관리 회로들은 리 정의되지 않은 워드 라인 순서로 비휘발성 저장 소자들에 데이터를 프로그래밍한다. 이 프로그래밍은 데이터에 대한 타이밍 정보를 저장하는 것을 포함한다. 하나 또는 그 이상의 관리 회로들은 비휘발성 저장 시스템으로부터 데이터를 판독하고, 이것은 만약 저장된 타이밍 정보가 이웃하는 비휘발성 저장 소자들이 데이터를 저장하고 있는 비휘발성 저장 소자들보다 시간적으로 뒤에 잠재적으로 프로그래밍되었다고 나타낸다면, 비휘발성 저장 소자들 간의 커플링을 보상하는 것을 포함한다.One exemplary embodiment includes a plurality of nonvolatile storage elements, a set of word lines coupled to the nonvolatile storage elements, and one or more management circuits in communication with the nonvolatile storage elements. One or more management circuits program data to nonvolatile storage elements in an undefined word line order. This programming includes storing timing information for the data. One or more management circuits read data from the nonvolatile storage system, which indicates that the stored timing information indicates that the neighboring nonvolatile storage elements are potentially programmed later in time than the nonvolatile storage elements storing the data. Compensating for coupling between non-volatile storage elements.

도 1은 NAND 스트링의 상부도이다.1 is a top view of a NAND string.

도 2는 NAND 스트링의 등가 회로도이다.2 is an equivalent circuit diagram of a NAND string.

도 3은 NAND 스트링의 단면도이다.3 is a cross-sectional view of a NAND string.

도 4는 비휘발성 메모리 시스템의 블럭도이다.4 is a block diagram of a nonvolatile memory system.

도 5는 비휘발성 메모리 어레이의 블럭도이다.5 is a block diagram of a nonvolatile memory array.

도 6은 임계 전압 분포의 예시적 세트를 나타낸 것이다.6 illustrates an exemplary set of threshold voltage distributions.

도 7은 임계 전압 분포의 예시적 세트를 나타낸 것이다.7 illustrates an exemplary set of threshold voltage distributions.

도 8A-C는 다양한 임계 전압 분포를 나타내고 그리고 비휘발성 메모리를 프로그래밍하는 프로세스를 나타내고 있다.8A-C illustrate various threshold voltage distributions and illustrate the process of programming the nonvolatile memory.

도 9는 비휘발성 메모리를 프로그래밍하는 프로세스의 일 실시예를 설명하는 흐름도이다.9 is a flow chart describing one embodiment of a process for programming a nonvolatile memory.

도 10은 비휘발성 메모리를 판독하기 위한 프로세스의 일 실시예를 설명하는 흐름도이다.10 is a flow chart describing one embodiment of a process for reading a nonvolatile memory.

도 11은 데이터의 하나의 페이지(또는 다른 유닛)를 나타낸 블럭도이다.11 is a block diagram illustrating one page (or other unit) of data.

도 12는 비휘발성 메모리를 프로그래밍하는 프로세스의 일 실시예를 설명하는 흐름도이다.12 is a flow chart describing one embodiment of a process for programming a nonvolatile memory.

도 13은 비휘발성 메모리를 판독하는 프로세스의 일 실시예를 설명하는 흐름도이다.13 is a flow chart describing one embodiment of a process for reading a nonvolatile memory.

도 14는 커플링을 보상하기 위해 오프셋(offset)을 사용함이 없이 워드 라인 상의 메모리 셀들을 판독하는 프로세스의 일 실시예를 설명하는 흐름도이다.14 is a flowchart illustrating one embodiment of a process for reading memory cells on a word line without using an offset to compensate for coupling.

도 15A는 커플링을 보상하기 위해 오프셋을 사용하여, 워드 라인 상의 메모리 셀들을 판독하는 프로세스의 일 실시예를 설명하는 흐름도이다.15A is a flow diagram illustrating one embodiment of a process for reading memory cells on a word line using an offset to compensate for coupling.

도 15B는 커플링을 보상하기 위해 오프셋을 사용하여, 워드 라인 상의 메모리 셀들을 판독하는 프로세스의 일 실시예를 설명하는 흐름도이다.15B is a flow diagram illustrating one embodiment of a process for reading memory cells on a word line using an offset to compensate for coupling.

도 16은 데이터의 하나의 페이지(또는 다른 유닛)를 나타낸 블럭도이다.16 is a block diagram illustrating one page (or other unit) of data.

도 17은 히스토리 데이터(history data)를 설명하는 차트이다.17 is a chart illustrating history data.

도 18은 비휘발성 메모리를 프로그래밍하는 프로세스의 일 실시예를 설명하는 흐름도이다.18 is a flow chart describing one embodiment of a process for programming a nonvolatile memory.

도 19는 히스토리 데이터를 결정하는 프로세스의 일 실시예를 설명하는 흐름도이다.19 is a flow chart describing one embodiment of a process for determining historical data.

도 20은 비휘발성 메모리를 판독하는 프로세스의 일 실시예를 설명하는 흐름도이다.20 is a flow chart describing one embodiment of a process for reading a nonvolatile memory.

도 21은 이웃하는 메모리 셀들로부터의 커플링을 고려한 판독 동작을 수행하는 프로세스의 일 실시예를 설명하는 흐름도이다.21 is a flow diagram illustrating one embodiment of a process for performing a read operation that takes into account coupling from neighboring memory cells.

도 22는 이웃하는 메모리 셀들로부터의 커플링을 고려한 판독 동작을 수행하는 프로세스의 일 실시예를 설명하는 흐름도이다.FIG. 22 is a flow diagram illustrating one embodiment of a process for performing a read operation that takes into account coupling from neighboring memory cells. FIG.

0037]0037]

본 발명을 구현하기에 적합한 비휘발성 메모리 시스템의 일 예는 NAND 플래시 메모리 구조를 사용하는 것이며, 이것은 두 개의 선택 게이트들 사이에 복수의 트랜지스터들을 직렬로 정렬시키는 것을 포함한다. 직렬 연결된 트랜지스터들과 선택 게이트들은 NAND 스트링으로 언급된다. 도 1은 하나의 NAND 스트링을 보여주는 상부 도면이다. 도 2는 그 등가 회로이다. 도 1 및 도 2에 도시된 NAND 스트링은 직렬 연결된 네 개의 트랜지스터(100, 102, 104 및 106)를 포함하는데, 이것은 제 1 선택 게이트(120)와 제 2 선택 게이트(122) 사이에 샌드위치되어 있다. 선택 게이트(120)는 NAND 스트링을 비트 라인 콘택(126)에 연결한다. 선택 게이트(122)는 NAND 스트링을 소스 라인 콘택(128)에 연결한다. 선택 게이트(120)는 적절한 전압을 제어 게이트(120CG)에 인가함으로써 제어된다. 선택 게이트(122)는 적절한 전압을 제어 게이트(122CG)에 인가함으로써 제어된다. 트랜지스터(100, 102, 104 및 106) 각각은 제어 게이트 및 플로팅 게이트를 갖는다. 트랜지스터(100)는 제어 게이트(100CG) 및 플로팅 게이트(100FG)를 갖는다. 트랜지스터(102)는 제어 게이트(102CG) 및 플로팅 게이트(102FG)를 갖는다. 트랜지스터(104)는 제어 게이 트(104CG) 및 플로팅 게이트(104FG)를 갖는다. 트랜지스터(106)는 제어 게이트(106CG) 및 플로팅 게이트(106FG)를 갖는다. 제어 게이트(100CG)는 워드 라인(WL3)에 연결되고, 제어 게이트(102CG)는 워드 라인(WL2)에 연결되고, 제어 게이트(104CG)는 워드 라인(WL1)에 연결되고, 그리고 제어 게이트(106CG)는 워드 라인(WL0)에 연결된다. 일 실시예에서, 트랜지스터(100, 102, 104 및 106)는 각각의 메모리 셀들이다. 다른 실시예들에서, 메모리 셀들은 복수의 트랜지스터들을 포함할 수 있거나, 또는 도 1 및 도 2에 도시된 것과 다를 수 있다. 선택 게이트(120)는 선택 라인(SGD)에 연결되다. 선택 게이트(122)는 선택 라인(SGS)에 연결된다.One example of a nonvolatile memory system suitable for implementing the present invention is to use a NAND flash memory structure, which includes aligning a plurality of transistors in series between two select gates. The transistors in series and the select gates are referred to as a NAND string. 1 is a top view showing one NAND string. 2 is an equivalent circuit thereof. The NAND string shown in FIGS. 1 and 2 includes four transistors 100, 102, 104 and 106 in series, which are sandwiched between the first select gate 120 and the second select gate 122. FIG. . Select gate 120 connects the NAND string to bit line contact 126. Select gate 122 connects the NAND string to source line contact 128. The select gate 120 is controlled by applying an appropriate voltage to the control gate 120CG. The select gate 122 is controlled by applying an appropriate voltage to the control gate 122CG. Each of transistors 100, 102, 104, and 106 has a control gate and a floating gate. Transistor 100 has control gate 100CG and floating gate 100FG. Transistor 102 has control gate 102CG and floating gate 102FG. Transistor 104 has control gate 104CG and floating gate 104FG. Transistor 106 has control gate 106CG and floating gate 106FG. Control gate 100CG is connected to word line WL3, control gate 102CG is connected to word line WL2, control gate 104CG is connected to word line WL1, and control gate 106CG ) Is connected to the word line WL0. In one embodiment, transistors 100, 102, 104, and 106 are respective memory cells. In other embodiments, the memory cells may include a plurality of transistors or may differ from those shown in FIGS. 1 and 2. The select gate 120 is connected to the select line SGD. The select gate 122 is connected to the select line SGS.

도 3은 상기 설명된 NAND 스트링의 단면도를 나타낸다. 도 3에 도시된 바와 같이, NAND 스트링의 트랜지스터들은 p-웰 영역(140)에 형성된다. 각각의 트랜지스터들은 제어 게이트(IOOCG, 102CG, 104CG 및 106CG)와 플로팅 게이트(100FG, 102FG, 104FG 및 106FG)로 구성된 적층 게이트 구조를 포함한다. 플로팅 게이트들은 옥사이드 혹은 다른 유전체 필름의 상부의 p-웰의 표면 상에 형성된다. 제어 게이트는 플로팅 게이트 위에 있고, 인터-폴리실리콘 유전체 층(inter-polysilicon dielectric layer)이 제어 게이트와 플로팅 게이트를 분리한다. 메모리 셀들(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 스트링에 대해 공통 소스 라인에 연결된다.3 shows a cross-sectional view of the NAND string described above. As shown in FIG. 3, transistors of the NAND string are formed in the p-well region 140. Each transistor includes a stacked gate structure consisting of control gates IOOCG, 102CG, 104CG and 106CG and floating gates 100FG, 102FG, 104FG and 106FG. Floating gates are formed on the surface of the p-well on top of an oxide or other dielectric film. The control gate is above the floating gate, and an inter-polysilicon dielectric layer separates the control gate and the floating gate. The control gates of the memory cells 100, 102, 104, and 106 form a word line. N + doped layers 130, 132, 134, 136 and 138 are shared between neighboring cells, whereby the cells are connected in series to each other to form a NAND string. This N + doped layer forms the source and drain of each of the cells. For example, N + doped layer 130 serves as a drain of transistor 122, serves as a source for transistor 106, and N + doped layer 132 serves as a drain for transistor 106. And act as a source for transistor 104, N + doped layer 134 as a drain for transistor 104, as a source for transistor 102, and an N + doped layer ( 136 serves as a drain for transistor 102, serves as a source for transistor 100, and N + doped layer 138 serves as a drain for transistor 100, and transistor 120 ) Acts as a source. N + doped layer 126 is connected to the bit line for the NAND string, while N + doped layer 128 is connected to the common source line for the plurality of NAND strings.

주의할 것으로, 도 1 내지 도 3은 NAND 스트링 내의 네 개의 메모리 셀들을 나타내지만, 이러한 네 개의 트랜지스터들의 사용은 단지 예로서 제공된다는 것이다. 본 명세서에서 설명되는 기술을 이용하여 사용되는 NAND 스트링은 네 개의 메모리 셀들보다 더 적은 개수를 가질 수 있거나 혹은 네 개의 메모리 셀들보다 더 많은 개수를 가질 수 있다. 예를 들어, 일부 NAND 스트링은 8개의 메모리 셀들, 16개의 메모리 셀들, 32개의 메모리 셀들, 64개의 메모리 셀들 등을 포함할 수 있다. 본 명세서에서의 설명이 NAND 스트링에서의 메모리 셀들의 임의의 특정 개수에 한정되는 것은 아니다.It should be noted that while FIGS. 1-3 show four memory cells in a NAND string, the use of these four transistors is provided only as an example. The NAND string used using the techniques described herein may have fewer than four memory cells or may have more than four memory cells. For example, some NAND strings may include eight memory cells, sixteen memory cells, thirty-two memory cells, sixty-four memory cells, and the like. The description herein is not limited to any particular number of memory cells in the NAND string.

각각의 메모리 셀은 아날로그 형태 혹은 디지털 형태로 나타나는 데이터를 저장할 수 있다. 한 비트의 디지털 데이터를 저장할 때, 메모리 셀의 가능한 임계 전압의 범위는 두 가지 범위로 나누어질 수 있는데, 그것은 논리적 데이터 "1" 및 "0"으로 할당된다. NAND 플래시 메모리의 일 예에서, 전압 임계치는 메모리 셀이 소거된 이후 음의 값이고 로직 "1"로 정의된다. 임계 전압은 프로그램 동작 이후에 양의 값이며 로직 "0"으로 정의된다. 임계 전압이 음의 값이고 그리고 0 볼트를 제어 게이트에 인가함으로써 판독이 시도될 때, 메모리 셀은 턴온되어 로직 일이 저장되었음을 나타낸다. 임계 전압이 양의 값이고 그리고 제어 게이트에 0 볼트를 인가함으로써 판독 동작이 시도될 때, 메모리 셀은 턴온되지 않으며, 이것은 로직 제로가 저장되었음을 나타낸다.Each memory cell can store data in analog or digital form. When storing one bit of digital data, the range of possible threshold voltages of a memory cell can be divided into two ranges, which are allocated to logical data "1" and "0". In one example of a NAND flash memory, the voltage threshold is negative after the memory cell is erased and defined as logic "1". The threshold voltage is positive after a program operation and defined as logic "0". When the threshold voltage is negative and a read is attempted by applying 0 volts to the control gate, the memory cell is turned on to indicate that the logic work has been stored. When the threshold voltage is positive and a read operation is attempted by applying 0 volts to the control gate, the memory cell is not turned on, indicating that logic zero is stored.

메모리 셀은 또한 복수의 상태를 저장할 수 있고, 그럼으로써 복수 비트의 디지털 데이터를 저장할 수 있다. 복수 상태의 데이터를 저장하는 경우에, 임계 전압 원도우는 많은 상태로 나누어진다. 예를 들어, 만약 네 가지 상태가 사용된다면, 데이터 값 "11", "10", "01" 및 "00"에 할당되는 네 가지 임계 전압 범위가 있을 수 있다. NAND-타입 메모리의 일 예에서, 소거 동작 이후의 임계 전압은 음의 값이고 "11"로서 정의된다. 양의 임계 전압이 "10", "01" 및 "00"의 상태에 대해 사용된다. 일부 실시예에서, 데이터 값(예를 들어, 논리적 상태)이 그레이 코드 할당을 사용하여 임계 범위에 할당되어 만약 플로팅 게이트의 임계 전압이 그 이웃하는 물리적 상태로 크게 시프팅할지라도 단지 한 비트만이 영향을 받는다. 메모리 셀에 프로그래밍되는 데이터와 셀의 임계 전압 범위 간의 특정 관계는 메모리 셀이 채택하고 있는 데이터 인코딩 방식에 따라 다르다. 예를 들어 미국 특허 번호 6,222,762 및 미국 특허 출원 번호 10/461,244(발명의 명칭: "Tracking Cells For A Memory System", 2003.06.13. 출원)은 다중-상태 플래시 메모리 셀들에 대한 다양한 데이터 인코딩 방식을 설명하고 있으며, 이 모두는 그 전체가 참조로 본 명세 서에 통합된다.The memory cell can also store multiple states, thereby storing multiple bits of digital data. In the case of storing data of multiple states, the threshold voltage window is divided into many states. For example, if four states are used, there may be four threshold voltage ranges assigned to the data values "11", "10", "01" and "00". In one example of a NAND-type memory, the threshold voltage after the erase operation is negative and defined as "11". Positive threshold voltages are used for the states of "10", "01" and "00". In some embodiments, a data value (e.g., logical state) is assigned to a threshold range using gray code assignment so that only one bit, even if the threshold voltage of the floating gate shifts significantly to its neighboring physical state. get affected. The specific relationship between the data programmed into the memory cell and the threshold voltage range of the cell depends on the data encoding scheme employed by the memory cell. For example, US Patent No. 6,222,762 and US Patent Application No. 10 / 461,244, entitled "Tracking Cells For A Memory System", filed June 13, 2003, describe various data encoding schemes for multi-state flash memory cells. All of which are incorporated herein by reference in their entirety.

0042]0042]

NAND-타입 플래시 메모리 및 그 관련 동작의 관련 예는 다음의 미국 특허/특허출원에서 제공되는데, 이들 모두는 그 전체가 참조로 본 명세서에 통합되는데, 이러한 것을 나열해 보면, 미국 특허 번호 5,570,315, 미국 특허 번호 5,774,397, 미국 특허 번호 6,046,935, 미국 특허 번호 5,386,422, 미국 특허 번호 6,456,528, 미국 특허 출원번호 09/893,277(공개 번호 US2003/0002348)이 있다. NAND 플래시 메모리에 추가되는 다른 타입의 비휘발성 메모리가 또한 본 발명과 함께 사용될 수 있다.Relevant examples of NAND-type flash memories and their associated operations are provided in the following US patent / patent applications, all of which are incorporated herein by reference in their entirety, listing these, US Pat. No. 5,570,315, US Patent No. 5,774,397, US Patent No. 6,046,935, US Patent No. 5,386,422, US Patent No. 6,456,528, US Patent Application No. 09 / 893,277 (Publication US2003 / 0002348). Other types of nonvolatile memory in addition to NAND flash memory can also be used with the present invention.

플래시 EEPROM 시스템에서 사용가능한 또 다른 타입의 메모리 셀은 비휘발성 방식으로 전하를 저장하기 위해 전도성 플로팅 게이트 대신에 비전도성 유전체 물질을 사용한다. 이러한 셀은 논문 "A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device"(저자: Chen 외, IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93-95)에서 설명된다. 실리콘 옥사이드, 실리콘 나이트라이드, 실리콘 옥사이드(silicon Oxide, silicon Nitride, silicon Oxide, "ONO")로 형성된 삼중 층은 메모리 셀 채널 위의 반-전도성 기판의 표면과 전도성 제어 게이트 사이에 샌드위치된다. 셀은 셀 채널로부터의 전자들을 나이트라이드에 주입함으로써 프로그래밍된고, 여기서 이들은 제한된 영역에 트래핑(trapping)되고 저장된다. 그 다음에 저장된 전하는 검출가능한 방식으로 셀의 채널의 일부의 임계 전압을 변경시킨다. 이 셀은 핫 홀(hot hole)들을 나이트라이드에 주입함으로써 소거된다. 또한 논문 "A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application"(저자: Nozaki 외, IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, April 1991, pp. 497-501)을 또한 참조하기 바라며, 이 논문은 분할-게이트 구성으로 유사한 셀을 설명하고 있으며, 여기서 도핑된 폴리실리콘 게이트는 개별 선택 트랜지스터를 형성하기 위해 메모리 셀 채널의 일부를 넘어 확장한다. 앞서의 두 개의 논문은 그 전체가 참조로 본 명세서에 통합된다. 논문 "Nonvolatile Semiconductor Memory Technology"(집필자: William D. Brown 및 Joe E. Brewer, IEEE Press, 1998)의 섹션 1.2에서 언급되는 프로그래밍 기술은 유전체 전하-트래핑 디바이스에 응용가능하도록 그 섹션에서 또한 설명되고 있으며, 이 논문도 참조로 본 명세서에 통합된다. 이 문단에서 설명되는 메모리 셀에서는 또한 이웃하는 메모리 셀들 간의 커플링이 있을 수 있다. 따라서, 본 명세서에서 설명되는 기술은 또한 다른 메모리 셀들의 유전체 영역들 간의 커플링에 적용된다.Another type of memory cell usable in flash EEPROM systems uses nonconductive dielectric materials instead of conductive floating gates to store charge in a nonvolatile manner. Such cells are described in the paper "A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device" (Chen et al., IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93-95). do. The triple layer formed of silicon oxide, silicon nitride, silicon oxide ("ONO") is sandwiched between the surface of the semi-conductive substrate over the memory cell channel and the conductive control gate. The cell is programmed by injecting electrons from the cell channel into the nitride, where they are trapped and stored in a restricted region. The stored charge then changes the threshold voltage of a portion of the channel of the cell in a detectable manner. This cell is erased by injecting hot holes into the nitride. In addition, the article "A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application" (author: Nozaki et al., IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, April 1991, pp. 497-501) For reference, this paper describes a similar cell in a split-gate configuration, where the doped polysilicon gate extends beyond a portion of the memory cell channel to form individual select transistors. The previous two articles are incorporated herein by reference in their entirety. The programming techniques mentioned in section 1.2 of the article "Nonvolatile Semiconductor Memory Technology" (author: William D. Brown and Joe E. Brewer, IEEE Press, 1998) are also described in that section to be applicable to dielectric charge-trapping devices. This article is also incorporated herein by reference. In the memory cells described in this paragraph, there may also be coupling between neighboring memory cells. Thus, the techniques described herein also apply to coupling between dielectric regions of other memory cells.

각각의 셀에 두 개의 비트를 저장하기 위한 또 다른 접근법이 논문 "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell"(저자: Eitan 외, IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545.)에서 설명된다. ONO 유전체 층은 소스 확산과 드레인 확산 사이의 채널을 가로질러 확장한다. 하나의 데이터 비트에 대한 전하는 드레인에 인접한 유전체 층에 국부화되고, 그리고 다른 데이터 비트에 대한 전하는 소스에 인접한 유전체 층에 국부화된다. 다중-상태 데이터 저장소는 유전체 내의 공간적으로 분리된 전하 저장 영역의 바이너리 상태를 개별적으로 판독함으로써 획득된다. 이 문단에서 설명되는 메모리 셀 들은 또한 본 발명과 함께 사용될 수 있다.Another approach for storing two bits in each cell is described in the paper "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell" by Eitan et al., IEEE Electron Device Letters, vol. 21, no. November 2000, pp. 543-545. The ONO dielectric layer extends across the channel between the source and drain diffusions. Charge for one data bit is localized to the dielectric layer adjacent to the drain, and charge for another data bit is localized to the dielectric layer adjacent to the source. Multi-state data storage is obtained by individually reading the binary states of the spatially separated charge storage regions in the dielectric. The memory cells described in this paragraph can also be used with the present invention.

도 4는 플래시 메모리 시스템의 일 실시예의 블럭도이다. 메모리 셀 어레이(202)는 컬럼 제어 회로(couumn control circuit)(204), 로우 제어 회로(row control circuit)(206), c-소스 제어 회로(210), 및 p-웰 제어 회로(208)에 의해 제어된다. 컬럼 제어 회로(204)는 메모리 셀 어레이(202)의 비트 라인에 연결되어 메모리 셀에 저장된 데이터를 판독하고, 프로그래밍 동작 동안의 메모리 셀들의 상태를 결정하고, 그리고 프로그래밍을 촉진 또는 프로그래밍을 금지시키기 위해 비트 라인의 포텐셜 레벨을 제어한다. 로우 제어 회로(206)는 워드 라인들에 연결되어 워드 라인들 중 하나를 선택하고, 판독 전압을 인가하며, 프로그램 전압을 인가하고, 그리고 소거 전압을 인가한다. 예를 들어, EPROM 및 플래시 메모리 회로에 사용되는 프로그램 전압 레벨은 메모리 회로에 정상적으로 사용되는 전압보다 더 높다. 이들은 종종 회로에 공급되는 전압보다 더 높다. 이러한 더 높은 전압은 바람직하게는 로우 제어 회로(206) 내의 전하 범프(charge pump)에 의해 생산되는데(또는 다른 곳에서 생산될 수 있음), 이것은 예를 들어 본질적으로 용량성 워드라인에 전하를 덤핑(dumpping)시켜 더 높은 전압으로 충전시킨다. 전하 범프는 전압 Vin에서의 입력을 수신하고, 그리고 일련의 전압 멀티플라이어 스테이지(voltage multiplier stages)에서 점진적으로 입력 전압을 부스팅(boosting)시킴으로써 더 높은 전압 Vout을 제공한다. 전압 출력은 부하, 예를 들어 EPROM 메모리 회로의 워드 라인에 공급된다. 일부 실시예들에서, 부하로부터 전하 범프까지의 피드백 신호 가 있다. 종래 기술의 범프는 부하가 미리 결정된 전압에 도달했다는 것을 나타내는 신호에 응답하여 턴오프된다. 대안적으로, 부하가 미리 결정된 전압에 도달한 경우 과충전을 방지하기 위해 션트(shunt)가 사용된다. 그러나, 이것은 더 많은 전력을 소비하고 그리고 저전력 애플리케이션에서는 바람직하지 않다. 전하 범프에 대한 더 많은 정보는 미국 특허 6,734,718에 설명되어 있으며, 이것은 그 전체가 참조로 본 명세서에 통합된다.4 is a block diagram of one embodiment of a flash memory system. The memory cell array 202 is connected to a column control circuit 204, a row control circuit 206, a c-source control circuit 210, and a p-well control circuit 208. Is controlled by The column control circuit 204 is connected to the bit lines of the memory cell array 202 to read data stored in the memory cells, determine the state of the memory cells during a programming operation, and to facilitate or inhibit programming. Controls the potential level of the bit line. The row control circuit 206 is connected to the word lines to select one of the word lines, apply a read voltage, apply a program voltage, and apply an erase voltage. For example, program voltage levels used in EPROM and flash memory circuits are higher than voltages normally used in memory circuits. They are often higher than the voltage supplied to the circuit. This higher voltage is preferably produced by a charge pump (or elsewhere) in the row control circuit 206, which for example dumps charge into essentially capacitive wordlines. to charge to a higher voltage. The charge bumps receive an input at voltage V in and provide a higher voltage V out by gradually boosting the input voltage in a series of voltage multiplier stages. The voltage output is supplied to a load, for example a word line of the EPROM memory circuit. In some embodiments, there is a feedback signal from the load to the charge bumps. Prior art bumps are turned off in response to a signal indicating that the load has reached a predetermined voltage. Alternatively, a shunt is used to prevent overcharging when the load reaches a predetermined voltage. However, this consumes more power and is not desirable in low power applications. More information about charge bumps is described in US Pat. No. 6,734,718, which is incorporated herein by reference in its entirety.

C-소스 제어 회로(210)는 메모리 셀에 연결된 공통 소스 라인(도 5에서 "C-소스"라 표시됨)을 제어한다. P-웰 제어 회로(208)는 p-웰 전압을 제어한다.The C-source control circuit 210 controls a common source line (labeled "C-source" in FIG. 5) connected to the memory cell. P-well control circuit 208 controls the p-well voltage.

메모리 셀에 저장된 데이터는 컬럼 제어 회로(204)에 의해 판독되고, 그리고 데이터 입력/출력 버퍼(212)를 통해 외부 I/O 라인에 출력된다. 메모리 셀에 저장될 프로그램 데이터는 외부 I/O 라인을 통해 데이터 입력/출력 버퍼(212)에 입력되고, 그리고 컬럼 제어 회로(204)에 전달된다. 외부 I/O 라인이 제어기(218)에 연결된다.Data stored in the memory cell is read by the column control circuit 204 and output to the external I / O line through the data input / output buffer 212. Program data to be stored in the memory cell is input to the data input / output buffer 212 via an external I / O line, and transferred to the column control circuit 204. An external I / O line is connected to the controller 218.

플래시 메모리 디바이스를 제어하기 위한 컴맨드 데이터(command data)가 제어기(218)에 입력된다. 컴맨드 데이터는 플래시 메모리에 어떤 동작이 요구되는지를 알려준다. 입력 컴맨드는 상태 머신(216)에 전달되고, 이것은 컬럼 제어 회로(204), 로우 제어 회로(206), c-소스 제어(210), p-웰 제어 회로(208) 및 데이터 입력/출력 버퍼(212)를 제어한다. 상태 머신(216)은 또한 준비/비지(READY/BUSY) 혹은 패스/실패(PASS/FAIL)와 같은 플래시 메모리의 상태 데이터를 출력할 수 있다. 일부 실시예에서, 상태 머신(216)은, 아래에서 설명되는 흐름도에서 설명되는 프로세스들을 포함하는, 프로그래밍 프로세스, 검증 프로세스, 및 판독 프로세스를 관리한다.Command data for controlling the flash memory device is input to the controller 218. Command data tells Flash memory what action is required. The input command is passed to the state machine 216, which is the column control circuit 204, the row control circuit 206, the c-source control 210, the p-well control circuit 208 and the data input / output buffer. Control 212. The state machine 216 may also output state data in flash memory, such as READY / BUSY or PASS / FAIL. In some embodiments, state machine 216 manages a programming process, a verification process, and a read process, including the processes described in the flowcharts described below.

제어기(218)는 개인용 컴퓨터, 디지털 카메라, PDA 등과 같은 호스트 시스템과 연결되거나 혹은 연결가능하다. 제어기(218)는, 호스트로부터 컴맨드를 수신하기 위해, 호스트로부터 데이터를 수신하기 위해, 호스트에 데이터를 제공하기 위해, 그리고 호스트에 상태 정보를 제공하기 위해, 호스트와 통신한다. 제어기(218)는 호스트로부터의 컴맨드을 컴맨드 신호로 변환하는데, 이 컴맨드 신호는 컴맨드 회로(214)에 의해 해석될 수 있고 실행될 수 있으며, 이 컴맨드 회로는 상태 머신(216)과 통신한다. 제어기(218)는 전형적으로 메모리 어레이에 기입되거나 또는 메모리 어레이로부터 판독되는 사용자 데이터에 대한 버퍼 메모리를 포함한다. 일부 실시예에서, 프로그래밍 프로세스는 제어기에 의해 관리될 수 있다.The controller 218 may or may be connected to a host system such as a personal computer, digital camera, PDA, or the like. The controller 218 communicates with a host to receive commands from the host, to receive data from the host, to provide data to the host, and to provide status information to the host. The controller 218 converts a command from the host into a command signal, which can be interpreted and executed by the command circuit 214, which communicates with the state machine 216. do. Controller 218 typically includes buffer memory for user data written to or read from the memory array. In some embodiments, the programming process may be managed by a controller.

하나의 예시적 메모리 시스템은, 제어기(218)를 포함하는 하나의 집적 회로를 포함하고, 그리고 그 각각이 메모리 어레이 및 그 관련 회로, 입력/출력 및 상태 머신 회로를 포함하는 하나 또는 그 이상의 집적 회로 칩을 포함한다. 메모리 어레이와 시스템의 제어기 회로를 하나 또는 그 이상의 집적 회로 칩에 집적시키는 것이 최근 경향이다. 메모리 시스템은 호스트 시스템의 일부로서 내장될 수 있거나 또는 호스트 시스템에 탈착가능하게 삽입된 메모리 카드(또는 다른 패키지)에 포함될 수 있다. 이러한 탈착가능한 카드는 전체 메모리 시스템(예를 들어, 제어기를 포함함)을 포함할 수 있거나 또는 단지 메모리 어레이(들) 및 그 관련 주변 회로(제어기는 호스트에 내장됨)를 포함할 수 있다. 따라서, 제어기(또는 제어 능력)은 호스트 내에 내장될 수 있거나 탈착 가능한 메모리 시스템 내에 포함될 수 있다.One example memory system includes one integrated circuit that includes a controller 218, and one or more integrated circuits each including a memory array and its associated circuits, input / output and state machine circuits. Includes a chip. BACKGROUND OF THE INVENTION In recent years, the integration of controller circuits of memory arrays and systems into one or more integrated circuit chips is a recent trend. The memory system may be embedded as part of the host system or may be included in a memory card (or other package) removably inserted into the host system. Such a removable card may include an entire memory system (eg, including a controller) or may simply include a memory array (s) and its associated peripheral circuitry (controller is embedded in the host). Thus, the controller (or control capability) can be embedded in the host or included in a removable memory system.

일부 실시예에서, 도 4의 컴포넌트들 중 일부는 결합될 수 있다. 다양한 설계로, 메모리 셀 어레이(202)와는 다른, 하나 또는 그 이상의 도 4의 컴포넌트들은 (단독으로 혹은 결합하여) 관리 회로로 고려될 수 있다. 예를 들어, 하나 또는 그 이상의 관리 회로들은 컴맨드 회로, 상태 머신, 로우 제어 회로, 컬럼 제어 회로, 웰 제어 회로, 소스 제어 회로 또는 데이터 I/O 회로 중 어느 하나 혹은 이들의 결합을 포함할 수 있다.In some embodiments, some of the components of FIG. 4 may be combined. In various designs, one or more components of FIG. 4, other than memory cell array 202, may be considered as management circuitry (alone or in combination). For example, the one or more management circuits may include any one or combination of command circuits, state machines, row control circuits, column control circuits, well control circuits, source control circuits, or data I / O circuits. have.

도 5를 참조하면, 메모리 셀 어레이(202)의 예시적 구조가 설명된다. 예를 들어, 1,024 블럭으로 구분되어 있는 NAND 플래시 EEPROM이 설명된다. 각각의 블럭에 저장된 데이터는 동시에 소거된다. 일 실시예에서, 블럭은 동시에 소거되는 셀들의 최소 단위이다. 이 예에서, 각각의 블럭에는 짝수 개의 컬럼과 홀수 개의 컬럼으로 나누어진 8,512 개의 컬럼이 있다. 비트 라인은 또한 짝수 개의 비트 라인(BLe)과 홀수 개의 비트 라인(BLo)으로 나누어진다. 도 5는 NAND 스트링을 형성하기 위해 직렬 연결된 네 개의 메모리 셀들을 나타낸다. 네 개의 셀들이 각각의 NAND 스트링에 포함되도록 도시되었지만, 네 개의 메모리 셀들보다 많거나 또는 적은 개수의 메모리 셀들도 사용될 수 있다. NAND 스트링의 한 단자는 선택 트랜지스터(SGD)를 통해 대응하는 비트 라인에 연결되고, 그리고 또 다른 단자는 제 2 선택 트랜지스터(SGS)를 통해 c-소스에 연결된다.5, an exemplary structure of the memory cell array 202 is described. For example, a NAND flash EEPROM is described that is divided into 1,024 blocks. Data stored in each block is erased at the same time. In one embodiment, a block is the smallest unit of cells that are simultaneously erased. In this example, each block has 8,512 columns divided into even columns and odd columns. The bit line is also divided into even bit lines (BLe) and odd bit lines (BLo). 5 shows four memory cells connected in series to form a NAND string. Although four cells are shown to be included in each NAND string, more or fewer memory cells than four memory cells may be used. One terminal of the NAND string is connected to the corresponding bit line through the select transistor SGD, and the other terminal is connected to the c-source through the second select transistor SGS.

판독 및 프로그래밍 동작의 일 실시예 동안, 4,256 개의 메모리 셀들이 동시에 선택된다. 선택된 메모리 셀들은 동일한 워드 라인 및 동일한 종류의 비트 라 인(예를 들어, 짝수 개의 비트 라인 혹은 홀수 개의 비트 라인)을 갖는다. 따라서, 532 바이트의 데이터가 동시에 판독될 수 있거나 또는 프로그래밍될 수 있다. 동시에 판독되거나 또는 프로그래밍되는 532 바이트의 데이터는 논리적 페이지를 형성한다. 따라서, 하나의 블럭은 적어도 여덟 개의 논리적 페이지(네 개의 워드 라인, 그 각각은 홀수 개의 페이지 및 짝수 개의 페이지를 가짐)를 저장할 수 있다. 각각의 메모리 셀이 두 비트의 데이터를 저장할 때(예를 들어, 다중-상태 메모리 셀), 여기서 이러한 두 비트들 각각은 다른 페이지에 저장되며, 하나의 블럭은 16 개의 논리적 페이지를 저장한다. 다른 크기의 블럭 및 페이지가 또한 본 발명과 함께 사용될 수 있다. 추가적으로, 도 4 및 도 5와는 다른 아키텍처가 또한 본 발명을 구현하기 위해 사용될 수 있다. 예를 들어, 일 실시예에서, 비트 라인은 홀수 개의 비트 라인 및 짝수 개의 비트 라인으로 나누어 지지 않고 그래서 모든 비트 라인은 동시에 프로그래밍되고 판독된다(또는 동시에 프로그래밍되고 판독되지 않는다).During one embodiment of the read and program operations, 4,256 memory cells are selected at the same time. The selected memory cells have the same word line and the same kind of bit line (eg, even bit lines or odd bit lines). Thus, 532 bytes of data can be read or programmed simultaneously. Simultaneously read or programmed 532 bytes of data form a logical page. Thus, one block can store at least eight logical pages (four word lines, each with odd pages and even pages). When each memory cell stores two bits of data (eg, a multi-state memory cell), where each of these two bits is stored in a different page, one block stores 16 logical pages. Other sized blocks and pages may also be used with the present invention. In addition, other architectures than FIGS. 4 and 5 may also be used to implement the present invention. For example, in one embodiment, the bit lines are not divided into odd bit lines and even bit lines so that all bit lines are programmed and read at the same time (or not simultaneously programmed and read).

메모리 셀들은 p-웰을 소거 전압(예를 들어, 20 볼트)까지 상승시키고, 그리고 선택된 블럭의 워드 라인을 접지시킴으로써 소거된다. 소스 및 비트 라인은 플로팅된다. 전체 메모리 어레이, 개별 블럭, 또는 셀을 또 다른 유닛상에서의 소거가 수행될 수 있다. 플로팅 게이트로부터 p-웰 영역으로 전자들이 전달되고, 그리고 임계 전압이 음의 값이 된다(일 실시예에서).Memory cells are erased by raising the p-well to an erase voltage (eg, 20 volts) and grounding the word line of the selected block. The source and bit lines are plotted. Erasing the entire memory array, individual blocks, or cells on another unit may be performed. Electrons are transferred from the floating gate to the p-well region, and the threshold voltage becomes negative (in one embodiment).

판독 및 검증 동작에서, 선택 게이트(SGD 및 SGS)와 비선택 워드 라인(예를 들어, WLO, WL2 및 WL3)은 판독 패스 전압(예를 들어, 4.5 볼트)까지 상승되어 트랜지스터가 패스 게이트로서 동작하도록 한다. 선택 워드 라인(예를 들어, WL1)은 일정 전압에 연결되고, 이 전압의 레벨은, 해당 메모리 셀의 임계 전압이 이러한 레벨 위에 있는지 혹은 아래에 있는지를 결정하기 위해, 각각의 판독 및 검증 동작에 대해 특정되어 있다. 예를 들어, 두 가지 레벨의 메모리 셀에 대한 판독 동작에서, 선택된 워드 라인(WL1)이 접지될 수 있고, 그래서 임계 전압이 0V보다 더 높은지 여부가 검출된다. 두 가지 레벨의 메모리 셀에 대한 검증 동작에서, 선택 워드 라인(WL1)은 예를 들어 0.8V에 연결되고, 그래서 임계 전압이 적어도 0.8V에 도달했는지 안했는지 여부가 검증된다. 소스 및 p-웰은 제로 볼트에 있다. 선택된 비트 라인(BLe)은 일정 레벨, 예를 들어 0.7V까지 사전충전된다. 만약 임계 전압이 워드 라인 상의 판독 혹은 검증 레벨보다 더 높다면, 해당 셀과 관련된 비트 라인(BLe)의 포텐셜 레벨은 비전도성 메모리 셀 때문에 높은 레벨을 유지한다. 반면에, 만약 임계 전압이 판독 혹은 검증 레벨보다 더 낮다면, 해당 비트 라인(BLe)의 포텐셜 레벨은, 예를 들어 0.5V보다 작은, 낮은 레벨로 감소하는데, 이것은 전도성 메모리 셀이 비트라인을 방전시키기 때문이다. 그럼으로써 메모리 셀의 상태는 비트 라인에 연결된 전압 비교기 감지 증폭기에 의해 검출된다.In read and verify operations, the select gates SGD and SGS and the unselected word lines (e.g., WLO, WL2, and WL3) are raised to a read pass voltage (e.g., 4.5 volts) such that the transistor operates as a pass gate. Do it. The select word line (eg, WL1) is connected to a constant voltage, and the level of this voltage is applied to each read and verify operation to determine whether the threshold voltage of the corresponding memory cell is above or below this level. Is specified. For example, in a read operation on two levels of memory cells, the selected word line WL1 may be grounded, so it is detected whether the threshold voltage is higher than 0V. In the verify operation for two levels of memory cells, the select word line WL1 is connected to 0.8V, for example, so that it is verified whether or not the threshold voltage has reached at least 0.8V. The source and p-well are at zero volts. The selected bit line BLe is precharged to a certain level, for example 0.7V. If the threshold voltage is higher than the read or verify level on the word line, the potential level of the bit line BLe associated with that cell remains high because of the non-conductive memory cell. On the other hand, if the threshold voltage is lower than the read or verify level, the potential level of the corresponding bit line BLe decreases to a lower level, for example less than 0.5V, which causes the conductive memory cell to discharge the bit line. Because it is. As a result, the state of the memory cell is detected by a voltage comparator sense amplifier connected to the bit line.

앞서 설명된 소거, 판독, 및 검증 동작은 종래의 알려진 기술에 따라 수행된다. 따라서, 설명되는 것들 중 많은 부분은 당업자에 의해 여러 가지로 변형될 수 있다. 종래의 알려진 다른 소거, 판독 및 검증 기술이 또한 사용될 수 있다.The erase, read, and verify operations described above are performed in accordance with known techniques. Accordingly, many of the described things can be variously modified by those skilled in the art. Other erase, read and verify techniques known in the art may also be used.

앞서 설명되는 바와 같이, 각각의 블럭은 여러 개의 페이지로 나누어질 수 있다. 일 실시예에서, 페이지는 프로그래밍의 단위이다. 일부 실시예에서, 개개의 페이지는 세그먼트로 나누어질 수 있고 그리고 이 세그먼트는 기본적인 프로그래밍 동작시 한 번에 기입되는 가장 작은 개수의 셀들을 포함할 수 있다. 데이터의 하나 또는 그 이상의 페이지는 전형적으로 메모리 셀의 하나의 로우(row)에 저장된다. 페이지는 하나 또는 그 이상의 섹터를 저장할 수 있다. 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 오버헤드 데이터는 전형적으로 에러 정정 코드(Error Correction Code, ECC)를 포함하며, 이 에러 정정 코드는 섹터의 사용자 데이터로부터 계산된다. 제어기의 일부는, 데이터가 어레이에 프로그래밍될 ECC를 계산하고, 그리고 또한 데이터가 어레이로부터 판독될 때 이것을 점검한다. 대안적으로, ECC 및/또는 다른 오버헤드 데이터는, 이들이 속한 사용자 데이터와는 다른 페이지, 또는 심지어 다른 블럭에 저장된다. 다른 실시예에서, 메모리 디바이스의 다른 부분(예를 들어, 상태 머신)이 ECC를 계산할 수 있다.As described above, each block can be divided into several pages. In one embodiment, a page is a unit of programming. In some embodiments, individual pages may be divided into segments, which may include the smallest number of cells written at a time in a basic programming operation. One or more pages of data are typically stored in one row of memory cells. A page can store one or more sectors. A sector includes user data and overhead data. Overhead data typically includes an Error Correction Code (ECC), which is calculated from the user data of the sector. Some of the controllers calculate the ECC to be programmed into the array and also check this when the data is read from the array. Alternatively, ECC and / or other overhead data is stored on a different page, or even on a different block than the user data to which they belong. In other embodiments, other portions of the memory device (eg, state machine) may calculate the ECC.

사용자 데이터의 섹터는 전형적으로 512 바이트이고, 이것은 자기 디스크 드라이브 내의 섹터의 크기에 대응하는 것이다. 오버헤드 데이터는 전형적으로 추가적인 16-20 바이트이다. 많은 페이지들이 블럭을 형성하는데, 어느 경우에는 8개의 페이지로부터, 예를 들어 최대 32개 혹은 64개 또는 그 이상의 페이지일 수 있다.A sector of user data is typically 512 bytes, which corresponds to the size of a sector in a magnetic disk drive. Overhead data is typically an additional 16-20 bytes. Many pages form blocks, which in some cases can be from eight pages, for example up to 32 or 64 or more pages.

도 6은 각각의 메모리 셀이 두 비트의 데이터를 저장할 때의 메모리 셀 어레이에 대한 임계 전압 분포를 나타낸 것이다. 도 6은 소거된 메모리 셀에 대한 제 1 임계 전압 분포를 나타낸다. 프로그래밍된 메모리 셀들에 대한 세 가지 임계 전압 분포(A, B 및 C)가 또한 도시되어 있다. 일 실시예에서, E 분포에서의 임계 전압은 음의 값이고, 그리고 A, B 및 C 분포에서의 임계 전압은 양의 값이다.Figure 6 shows the threshold voltage distribution for a memory cell array when each memory cell stores two bits of data. 6 shows a first threshold voltage distribution for an erased memory cell. Three threshold voltage distributions A, B, and C for programmed memory cells are also shown. In one embodiment, the threshold voltages in the E distribution are negative, and the threshold voltages in the A, B, and C distributions are positive.

도 6의 각각의 별개의 임계 전압 범위는 데이터 비트들의 세트에 대한 미리 결정된 값에 대응한다. 메모리 셀에 프로그래밍된 데이터와 셀의 임계 전압 레벨 간의 특정 관계는 셀에 대해 채택된 데이터 인코딩 방식에 따라 다르다. 한 가지 예는, 임계 전압 범위 E(상태 E)에 "11"을 할당하고, 임계 전압 범위 A(상태 A)에 "10"을 할당하고, 임계 전압 범위 B(상태 B)에 "00"을 할당하고, 그리고 임계 전압 범위 C(상태 C)에 "01"을 할당하는 것이다. 그러나, 다른 실시예에서, 다른 방식이 사용된다.Each distinct threshold voltage range of FIG. 6 corresponds to a predetermined value for the set of data bits. The specific relationship between the data programmed into the memory cell and the threshold voltage level of the cell depends on the data encoding scheme adopted for the cell. One example assigns "11" to threshold voltage range E (state E), assigns "10" to threshold voltage range A (state A), and assigns "00" to threshold voltage range B (state B). And assign "01" to the threshold voltage range C (state C). However, in other embodiments, other approaches are used.

도 6은 또한 메모리 셀로부터 데이터를 판독하기 위한 세 개의 판독 기준 전압(Vra, Vrb 및 Vrc)을 나타내고 있다. 주어진 메모리 셀의 임계 전압이 Vra, Vrb 및 Vrc보다 높은지 혹은 낮은지 여부를 테스팅함으로써, 시스템은 메모리 셀이 무슨 상태에 있는지를 결정할 수 있다. 도 6은 또한 세 가지 검증 기준 전압 Vva, Vvb 및 Vvc를 나타내고 있다. 메모리 셀들을 상태 A에 프로그래밍할 때, 시스템은 이러한 메모리 셀들이 Vva보다 큰 임계 전압을 가지는지 아니면 Vva와 동일한 임계 전압을 가지는지 여부를 테스트한다. 메모리 셀들을 상태 B에 프로그래밍할 때, 시스템은 메모리 셀들이 Vvb보다 큰 임계 전압을 가지는지 아니면 Vvb와 동일한 임계 전압을 가지는지 여부를 테스트한다. 메모리 셀들을 상태 C에 프로그래밍할 때, 시스템은 메모리 셀들이 Vvc보다 큰 임계 전압을 가지는지 아니면 Vvc와 동일한 임계 전압을 가지는지 여부를 결정한다.6 also shows three read reference voltages Vra, Vrb and Vrc for reading data from a memory cell. By testing whether the threshold voltages of a given memory cell are above or below Vra, Vrb and Vrc, the system can determine what state the memory cell is in. 6 also shows three verification reference voltages Vva, Vvb and Vvc. When programming the memory cells to state A, the system tests whether these memory cells have a threshold voltage greater than Vva or the same threshold voltage as Vva. When programming the memory cells to state B, the system tests whether the memory cells have a threshold voltage greater than Vvb or the same threshold voltage as Vvb. When programming the memory cells to state C, the system determines whether the memory cells have a threshold voltage greater than Vvc or a threshold voltage equal to Vvc.

전체 시퀀스 프로그래밍(full sequence programming)으로 알려진 일 실시예에서, 메모리 셀은 소거 상태 E로부터 프로그래밍된 상태 A, B 또는 C 중 어느 하나로 바로 프로그래밍될 수 있다(휘어진 화살표로 표시되어 있음). 예를 들어, 프 로그래밍될 일군의 메모리 셀이 먼저 소거되고, 그래서 상기 군내의 모든 메모리 셀들은 소거된 상태 E에 있게 된다. 일부 메모리 셀들은 또한 상태 E로부터 상태 A로 프로그래밍되고, 다른 메모리 셀들은 상태 E로부터 상태 B로, 그리고/또는 상태 E로부터 상태 C로 프로그래밍된다.In one embodiment, known as full sequence programming, a memory cell can be programmed directly from erased state E to any of programmed states A, B or C (indicated by the curved arrows). For example, the group of memory cells to be programmed is first erased, so all memory cells in the group are in the erased state E. Some memory cells are also programmed from state E to state A, and other memory cells are programmed from state E to state B and / or from state E to state C.

도 7은 두 개의 다른 페이지(아래쪽 페이지 및 위쪽 페이지)에 대한 데이터를 저장하는 다중-상태 메모리 셀을 프로그래밍하는 2-패스 기술의 예를 나타내고 있다. 네 가지 상태가 도시되어 있다. 상태 E(11), 상태 A(10), 상태 B(00) 및 상태 C(01). 상태 E에 대해, 양쪽 페이지들은 "1"을 저장한다. 상태 A에 대해, 아래쪽 페이지는 "0"을 저장하고, 그리고 위쪽 페이지는 "1"을 저장한다. 상태 B에 대해, 양쪽 페이지들은 "0"을 저장한다. 상태 C에 대해, 아래쪽 페이지는 "1"을 저장하고, 그리고 위쪽 페이지는 "0"을 저장한다. 주의할 것으로, 비록 특정 비트 패턴이 각각의 상태에 할당될지라도, 서로 다른 비트 패턴이 또한 할당될 수 있다. 제 1 프로그래밍 패스에서, 셀의 임계 전압 레벨은 아래쪽의 논리적 페이지에 프로그래밍될 비트에 따라서 설정된다. 만약 이 비트가 로직 "1"이라면, 임계 전압은 변경되지 않는데, 왜냐하면 이것은 초기 소거의 결과로서 적절한 상태에 있기 때문이다. 그러나, 만약 프로그래밍될 비트가 로직 "0"이라면, 셀의 임계 레벨은, 화살표(230)로 도시된 바와 같이, 상태 A로 증가한다. 이것이 제 1 프로그래밍을 패스로 끝낸다.7 shows an example of a two-pass technique for programming a multi-state memory cell that stores data for two different pages (lower page and upper page). Four states are shown. State E (11), State A (10), State B (00), and State C (01). For state E, both pages store "1". For state A, the lower page stores "0" and the upper page stores "1". For state B, both pages store a "0". For state C, the lower page stores "1" and the upper page stores "0". Note that although a specific bit pattern is assigned to each state, different bit patterns may also be assigned. In the first programming pass, the threshold voltage level of the cell is set in accordance with the bit to be programmed into the lower logical page. If this bit is a logic "1", the threshold voltage is not changed because it is in the proper state as a result of the initial erase. However, if the bit to be programmed is a logic "0", then the threshold level of the cell increases to state A, as shown by arrow 230. This ends the first programming with a pass.

제 2 프로그래밍 패스에서, 셀의 임계 전압 레벨은 위쪽의 논리적 페이지에 프로그래밍되는 비트에 따라 설정된다. 만약 위쪽의 논리적 페이지 비트가 로직 "1"을 저장해야 한다면, 어떠한 프로그래밍도 일어나지 않는데, 왜냐하면 셀은 상태 E 또는 A 중 하나에 있기 때문이며, 이것은 아래쪽 페이지 비트의 프로그래밍에 따라 다르고, 이들 모두는 "1"의 위쪽 페이지 비트를 지닌다. 만약 위쪽의 페이지 비트가 로직 "0"이 되어야 한다면, 임계 전압은 시프팅된다. 만약 제 1 패스로 결과적으로 셀이 소거된 상태 E에 머물러 있다면, 제 2 단계에서 셀은 프로그래밍되어 임계 전압은 화살표(234)로 도시된 바와 같이 상태 C에 있도록 증가한다. 만약 셀이 제 1 프로그래밍 패스의 결과로서 상태 A에 프로그래밍된다면, 메모리 셀은 제 2 패스로 더 프로그래밍 되어 임계 전압은 화살표(232)로 도시된 바와 같이 상태 B에 있도록 증가한다. 제 2 패스의 결과는 아래쪽 페이지에 대한 데이터를 변경시키지 않고 위쪽 페이지에 대해 로직 "0"을 저장하도록 지정된 상태에 셀을 프로그래밍하는 것이다.In the second programming pass, the threshold voltage level of the cell is set according to the bit programmed into the upper logical page. If the upper logical page bit has to store logic "1", no programming takes place because the cell is in either state E or A, which depends on the programming of the lower page bit, all of which are "1". With the upper page bit of ". If the upper page bit should be a logic "0", the threshold voltage is shifted. If the cell stays in the erased state E as a result of the first pass, then in the second step the cell is programmed so that the threshold voltage increases to be in state C as shown by arrow 234. If the cell is programmed to state A as a result of the first programming pass, the memory cell is further programmed into the second pass so that the threshold voltage is increased to be in state B as shown by arrow 232. The result of the second pass is to program the cell in the specified state to store logic "0" for the upper page without changing the data for the lower page.

일 실시예에서, 만약 충분한 데이터가 기입되어 전체 페이지를 채운다면, 시스템은 전체 시퀀스 기입을 수행하도록 설정될 수 있다. 만약 전체 페이지에 대해 불충분한 데이터가 기입되지 않는다면, 프로그래밍 프로세스는 수신된 데이터로 아래쪽 페이지를 프로그래밍할수 있다. 후속 데이터가 수신될 때, 시스템은 위쪽 페이지를 프로그래밍한다. 또 다른 실시예에서, 만약 충분한 데이터가 후속적으로 수신되어 전체(또는 대부분의) 워드 라인의 메모리 셀들을 채운다면, 시스템은 아래쪽 페이지를 프로그래밍하는 모드로 기입을 시작하여 전체 시퀀스 프로그래밍 모드로 변환될 수 있다. 이러한 실시예의 더 세부적인 것은 미국 특허 출원 번호 11/013,125(발명의 명칭: "Pipelined Programming of Non- Volatile Memories Using Early Data", 2004.12.14. 출원, 발명자: Sergy Anatolievich Gorobets 및 Yan Li)에 개시되어 있으며, 이것은 그 전체가 참조로 본 명세서에 통합된다.In one embodiment, if enough data is written to fill the entire page, the system may be configured to perform full sequence writing. If insufficient data is not written for the entire page, the programming process can program the lower page with the received data. When subsequent data is received, the system programs the upper page. In another embodiment, if enough data is subsequently received to fill the memory cells of the entire (or most) word line, the system will begin writing to the mode of programming the lower page to convert to full sequence programming mode. Can be. More details of this embodiment are disclosed in US patent application Ser. No. 11 / 013,125, entitled "Pipelined Programming of Non-Volatile Memories Using Early Data", Dec. 14, 2004, filed by Inventor Sergy Anatolievich Gorobets and Yan Li. Which is hereby incorporated by reference in its entirety.

도 8A 내지 도 8C는, 임의의 특별한 메모리 셀에 대해, 이전 페이지에 대한 인접한 메모리 셀들에 대한 기입 이후에 특별한 페이지에 대한 그 특별한 메모리 셀에 대한 기입에 의해 플로팅 게이트 대 플로팅 게이트 커플링을 감소시키는 비휘발성 메모리를 프로그래밍하는 또 다른 프로세스를 개시한다. 도 8A 내지 도 8C에서 설명되는 프로세스의 실시예의 한 예에서, 비휘발성 메모리 셀들은 네 개의 데이터 상태를 사용하여, 메모리 셀당 두 비트의 데이터를 저장한다. 예를 들어, 상태 E가 소거된 상태이고, 그리고 상태 A, B 및 C가 프로그래밍된 상태라고 가정하자. 상태 E는 데이터 11을 저장한다. 상태 A는 데이터 01을 저장한다. 상태 B는 데이터 10을 저장한다. 상태 C는 데이터 00을 저장한다. 이것은 비-그레이 코딩(non-Gray coding)이 예인데, 왜냐하면 양쪽 비트들이 인접하는 상태 A와 B 사이에서 변하기 때문이다. 데이터의 물리적 데이터 상태로의 다른 인코딩이 또한 사용될 수 있다. 각각이 메모리 셀은 두 개의 데이터 페이지를 저장한다. 참조 목적으로, 이러한 데이터 페이지들은 위쪽 페이지 및 아래쪽 페이지로 언급된다. 그러나 이들은 다른 명칭을 가질 수 있다. 도 8의 프로세스에 대한 상태 A를 참조하면, 위쪽 페이지는 비트 0을 저장하고, 그리고 아래쪽 페이지는 비트 1을 저장한다. 상태 B를 참조하면, 위쪽 페이지는 비트 1을 저장하고, 그리고 아래쪽 페이지는 비트 0을 저장한다. 상태 C를 참조하면, 양쪽 페이지 모두 비트 데이터 0을 저장한다.8A-8C reduce floating gate to floating gate coupling for any particular memory cell by writing to that particular memory cell for a particular page after writing to adjacent memory cells for the previous page. Another process for programming nonvolatile memory is disclosed. In one example of the embodiment of the process described in FIGS. 8A-8C, nonvolatile memory cells store four bits of data per memory cell using four data states. For example, assume that state E is an erased state and states A, B, and C are programmed states. State E stores data 11. State A stores data 01. State B stores data 10. State C stores data 00. This is an example of non-gray coding, since both bits change between adjacent states A and B. Other encodings of the data into the physical data state can also be used. Each memory cell stores two data pages. For reference purposes, these data pages are referred to as top page and bottom page. However, they may have other names. Referring to state A for the process of Figure 8, the upper page stores bit 0, and the lower page stores bit 1. Referring to state B, the upper page stores bit 1, and the lower page stores bit 0. Referring to state C, both pages store bit data 0.

도 8A 내지 도 8C의 프로그래밍 프로세스는 두 단계 프로세스이다. 제 1 단 계에서, 아래쪽 페이지가 프로그래밍된다. 만약 아래쪽 페이지가 데이터 1을 유지해야 한다면, 메모리 셀 상태는 상태 E에 머물러 있다. 만약 데이터가 0으로 프로그래밍되야 한다면, 메모리 셀의 전압의 임계치는 상승되어 메모리 셀은 상태 B'로 프로그래밍된다. 도 8A는 상태 E로부터 상태 B'로의 메모리 셀의 프로그래밍을 보여주고 있다. 도 8A에 도시된 상태 B'는 임시적 상태(interim state) B이다. 따라서, 검증 포인트는 Vvb보다 더 낮은 Vvb'로 도시된다.The programming process of FIGS. 8A-8C is a two step process. In the first step, the lower page is programmed. If the lower page must hold data 1, the memory cell state remains in state E. If the data must be programmed to zero, the threshold of the voltage of the memory cell is raised so that the memory cell is programmed to state B '. 8A shows the programming of a memory cell from state E to state B '. State B 'shown in Figure 8A is an interim state B. Therefore, the verification point is shown as Vvb 'lower than Vvb.

일 실시예에서, 메모리 셀이 상태 E로부터 상태 B1으로 프로그래밍된 이후에, 인접하는 워드 라인 상의 그 이웃 메모리 셀이 아래쪽 페이지에 대하여 프로그래밍 된다. 이웃 메모리 셀의 프로그래밍 이후에, 플로팅 게이트 대 플로팅 게이트 커플링 효과는 상태 B'에 있는 해당 메모리 셀의 겉보기 임계 전압(apparent threshold voltage)을 상승시킨다. 이것은 도 8B의 임계 전압 분포(250)로서 도시된 것에 대해 상태 B' 대한 임계 전압 분포의 폭을 넓히는 효과를 갖는다. 임계 전압 분포의 이 겉보기 폭 넓어짐은 위쪽 페이지를 프로그래밍할 때 치유된다.In one embodiment, after a memory cell is programmed from state E to state B1, its neighboring memory cells on an adjacent word line are programmed for the lower page. After programming of the neighboring memory cells, the floating gate to floating gate coupling effect raises the apparent threshold voltage of the corresponding memory cell in state B '. This has the effect of widening the width of the threshold voltage distribution for state B 'for what is shown as threshold voltage distribution 250 of FIG. 8B. This apparent widening of the threshold voltage distribution is healed when programming the upper page.

도 8C는 위쪽 페이지를 프로그래밍하는 프로세스를 도시한다. 만약 메모리 셀이 소거된 상태 E에 있고, 위쪽 페이지가 1에 머물러 있어야 한다면, 메모리 셀은 상태 E에 머물러 있다. 만약 메모리 셀이 상태 E에 있고, 그 위쪽 페이지 데이터가 0으로 프로그래밍되어야 한다면, 메모리 셀의 임계 전압은 상승되어 메모리 셀은 상태 A에 있게 된다. 만약 메모리 셀인 중간의 임계 전압 분포(250)에 있고, 위쪽 페이지 데이터가 1에 머물러 있어야 한다면, 메모리 셀은 최종 상태 B로 프로그래밍된다. 만약 메모리 셀이 중간의 임계 전압 분포(250)에 있고, 위쪽 페이지 데이터가 0이 되어야 한다면, 메모리 셀의 임계 전압은 상승되어 메모리 셀은 상태 C에 있게 된다.8C shows a process for programming the upper page. If the memory cell is in the erased state E, and the upper page should remain at 1, the memory cell remains in the state E. If the memory cell is in state E and its upper page data must be programmed to zero, the threshold voltage of the memory cell is raised so that the memory cell is in state A. If the memory cell is in the middle threshold voltage distribution 250 and the upper page data should stay at 1, then the memory cell is programmed to the final state B. If the memory cell is in the intermediate threshold voltage distribution 250 and the upper page data should be zero, the threshold voltage of the memory cell is raised so that the memory cell is in state C.

도 8A 내지 도 8C에 도시된 프로세스는 플로팅 게이트 대 플로팅 게이트의 커플링 효과를 감소시키는데, 왜냐하면, 이웃 메모리 셀들의 단지 위쪽 페이지 프로그래밍만이 주어진 메모리 셀의 겉보기 임계 전압에 영향을 미치기 때문이다. 대안적인 상태 코딩의 예는 위쪽 페이지 데이터가 1일 때 분포(250)로부터 상태 C로의 이동하는 것이고, 그리고 위쪽 페이지 데이터가 0일 때 상태 B로 이동하는 것이다. 비록 도 9A 내지 도 9C가 네 개의 데이터 상태 및 두 개의 데이터 페이지에 대한 예를 제공하고 있지만, 도 8A 내지 도 8C로 설명되는 개념은 네 개의 상태보다 많거나 적은 경우 및 두 개의 페이지와는 다른 개수를 갖는 다른 실시예에도 적용될 수 있다. 다양한 프로그래밍 방식 및 플로팅 게이트 대 플로팅 게이트 커플링에 대한 더 세부적인 것은 미국 특허 출원 번호 11/099,133(발명의 명칭: "Compensating For Coupling During Read Operations Of Non- Volatile Memory", 2005.04.05. 출원) 및 미국 특허 번호 6,657,891(2003.12.02. 발행, 발명자: Shibata 외)에서 알 수 있으며, 이 모두는 그 전체가 참조로 본 명세서에 통합된다.The process shown in FIGS. 8A-8C reduces the coupling effect of floating gate to floating gate because only upper page programming of neighboring memory cells affects the apparent threshold voltage of a given memory cell. An example of an alternative state coding is to move from distribution 250 to state C when the upper page data is 1 and to move to state B when the upper page data is zero. Although FIGS. 9A-9C provide examples for four data states and two data pages, the concepts illustrated in FIGS. 8A-8C are more or less than four states and a different number than two pages. It can be applied to other embodiments having. More details on the various programmatic and floating gate to floating gate couplings can be found in US patent application Ser. No. 11 / 099,133, entitled "Compensating For Coupling During Read Operations Of Non-Volatile Memory," filed Apr. 05, 2005. US Pat. No. 6,657,891 issued December 12, 2003, inventor: Shibata et al., All of which are incorporated herein by reference in their entirety.

앞서 설명된 바와 같이, 이웃하는 메모리 셀들은 메모리 셀의 겉보기 임계 전압에 영향을 미칠 수 있는 커플링을 일으킬 수 있다. 이웃하는 메모리 셀은 인접 워드 라인, 인접 비트 라인, 인접하지 않지만 가까이 있는 비트 라인, 또는 인접하지 않지만 가까이 있는 워드 라인 상에 있을 수 있다. 시스템은, 판독되는 메모리 셀(또는 플로팅 게이트)이 프로그래밍되는 이웃하는 메모리 셀(또는 플로팅 게이트) 이전에 프로그래밍되기 때문에 커플링에 대한 포텐셜(potential)이 존재하는지 여부를 먼저 결정함으로써 이웃하는 플로팅 메모리 셀들 간의 커플링을 선택적으로 보상한다. 만약 판독되는 메모리 셀이 이웃하는 메모리 셀 이전에 프로그래밍된다면, 이웃하는 메모리 셀의 프로그래밍의 레벨에 근거하여 커플링을 보상하는 프로세스가 사용될 수 있다.As described above, neighboring memory cells can cause coupling that can affect the apparent threshold voltage of the memory cell. Neighboring memory cells can be on adjacent word lines, adjacent bit lines, non-adjacent but adjacent bit lines, or non-adjacent but adjacent word lines. The system determines neighboring floating memory cells by first determining whether there is a potential for coupling because the memory cell (or floating gate) being read is programmed before the neighboring memory cell (or floating gate) being programmed. Selectively compensates for coupling of the liver. If the memory cell to be read is programmed before the neighboring memory cell, a process that compensates for the coupling based on the level of programming of the neighboring memory cell can be used.

도 9는 타이밍 정보를 사용하는 것을 포함하는 프로그래밍에 대한 하이 레벨 프로세스의 일 실시예를 나타낸 흐름도이다. 도 10은 커플링에 대한 포텐셜이 있는지 여부를 결정하고 이것에 근거하여 선택적으로 보상하기 위해 프로그래밍된 타이밍 정보를 사용하는 판독에 대한 프로세스의 일 실시예를 나타낸 흐름도이다.9 is a flow diagram illustrating one embodiment of a high level process for programming that includes using timing information. 10 is a flow diagram illustrating one embodiment of a process for reading using timing information programmed to determine whether there is potential for coupling and to selectively compensate based on it.

도 9의 단계(300)에서, 데이터 기입 요청이 수신된다. 이 요청은 제어기, 상태 머신, 또는 또 다른 디바이스에서 수신될 수 있다. 이 요청에 응답하여, 데이터(하나 또는 그 이상의 정보 비트)가 단계(302)에서 플래시 메모리 어레이에 기입된다. 추가적으로 타이밍 정보는 단계(304)에서 저장된다. 타이밍 정보는 단계(302)에서 기입된 데이터에 대해 커스터마이징된다. 일 실시예에서, 타이밍 정보는 단계(302)에서 저장된 데이터와 함께 저장된다. 다른 실시예에서, 타이밍 정보는 개별적으로 저장된다. 단계(302 및 304)는 동시에 또는 개별적으로(임의의 순서로) 수행될 수 있다. 주의할 것으로, 본 명세서에 포함된 흐름도 모두에서, 흐름도 내에 도시된 단계들의 순서는 반드시 고정된 것이 아니며, 많은 경우에 있어 다른 적당한 순서로 수행될 수도 있다.In step 300 of FIG. 9, a data write request is received. This request may be received at the controller, state machine, or another device. In response to this request, data (one or more information bits) is written to the flash memory array at step 302. In addition, timing information is stored at 304. Timing information is customized for the data written in step 302. In one embodiment, timing information is stored with the data stored at step 302. In another embodiment, the timing information is stored separately. Steps 302 and 304 may be performed simultaneously or separately (in any order). It should be noted that, in all of the flowcharts included herein, the order of the steps shown in the flowcharts is not necessarily fixed, and in many cases may be performed in other suitable orders.

사용될 수 있는 타이밍 정보의 예는 많이 있다. 일 실시예에서, 타임 스탬프(time stamp)가 사용된다. 이 타임 스탬프는 호스트 디바이스에 대한 시스템 클럭으로부터 판독되는 절대적 타임 스탬프(absolute time stamp)일 수 있다. 또 다른 실시예에서, 메모리 시스템은 내부 배터리를 포함할 수 있고, 그 자신의 클럭을 저장할 수 있다. 또 다른 실시예에서, 상대적 타임 스탬프(relative time stamp)가 사용될 수 있다. 예를 들어, 시스템은 싸이클 카운트(cycle count)를 유지할 수 있다. 싸이클 카운트는 각각의 프로그래밍 싸이클을 센다. 이 싸이클 카운트는 상태 머신, 제어기 혹은 또 다른 디바이스에 의해 유지될 수 있다. 싸이클 카운트는 단계(304)에서 타이밍 정보로서 저장될 수 있다. 만약 데이터의 제 1 세트가 데이터의 제 2 세트보다 더 큰 싸이클 카운트를 갖는다면, 데이터의 제 1 세트는 데이터의 제 2 세트 이후에 프로그래밍된다. 타이밍 정보의 또 다른 실시예는 이웃하는 메모리 셀 이전에 또는 이후에 데이터가 프로그래밍되었지 여부를 나타내는 표시를 포함할 수 있다.There are many examples of timing information that can be used. In one embodiment, a time stamp is used. This time stamp may be an absolute time stamp read from the system clock for the host device. In yet another embodiment, the memory system may include an internal battery and may store its own clock. In another embodiment, a relative time stamp can be used. For example, the system can maintain a cycle count. The cycle count counts each programming cycle. This cycle count can be maintained by a state machine, a controller or another device. The cycle count may be stored as timing information at step 304. If the first set of data has a larger cycle count than the second set of data, the first set of data is programmed after the second set of data. Another embodiment of timing information may include an indication indicating whether data has been programmed before or after a neighboring memory cell.

도 10은 데이터를 판독하기 위한 프로세스를 나타낸 흐름도를 제공한다. 단계(340)에서, 데이터 판독 요청이 제어기, 상태 머신, 또는 다른 디바이스에 의해 수신된다. 단계(342)에서, 데이터에 대한 타이밍 정보가 액세스된다. 이것이 단계(304)에서 저장된 타이밍 정보이다. 단계(344)에서, 액세스된 타이밍 정보에 근거하여 커플링에 대한 포텐셜이 존재하는지 여부가 결정된다. 일 실시예에서, 판독 요청과 관련된 데이터를 저장하는 메모리 셀들이 이웃하는 메모리 셀들 이전에 프로그래밍되었다고 타이밍 정보가 나타내는지 여부를 시스템이 결정한다. 만약 그렇 다면, 메모리 셀들 간의 커플링에 대한 포텐셜이 존재한다. 만약 판독 요청과 관련된 데이터를 저장하는 메모리 셀들이 이웃하는 셀들을 프로그래밍한 이후에 프로그래밍되었다면, 커플링에 대한 포텐셜은 존재하지 않을 것이다. 만약 단계(344)가 커플링에 대한 포텐셜이 존재한다고 결정한다면, 이웃하는 셀들의 프로그래밍의 레벨이 필요한 커플링을 생성하기에 충분하지 않다면 임의의 실제 커플링은 존재하지 않을 것이다. 만약 커플링에 대한 포텐셜이 존재하지 않는다면(단계(346)), 단계(348)에서 커플링의 고려 없이 판독 프로세스가 수행된다. 주의할 것으로, 판독 프로세스는 비휘발성 메모리 내에 저장된 정보를 결정하는 것과 이 정보를 보고하는 것을 포함한다. 만약 커플링에 대한 포텐셜이 존재한다고 결정된다면(단계(346)), 단계(350)에서 포텐셜 커플링의 고려 없이 판독 프로세스가 수행된다. 일 실시예에서, 단계(350)는 만약 필요하다면 커플링을 보상하는 것을 포함한다. 메모리 셀들 간의 커플링을 보상하는 다른 많은 방식이 있다. 임의의 적절한 방식이 본 명세서에서 설명되는 기술과 함께 사용될 수 있다.10 provides a flow diagram illustrating a process for reading data. In step 340, a data read request is received by a controller, state machine, or other device. In step 342, timing information for the data is accessed. This is the timing information stored in step 304. In step 344, it is determined whether there is a potential for coupling based on the timing information accessed. In one embodiment, the system determines whether the timing information indicates that the memory cells that store data associated with the read request are programmed before neighboring memory cells. If so, there is a potential for coupling between memory cells. If the memory cells storing the data associated with the read request were programmed after programming neighboring cells, there would be no potential for coupling. If step 344 determines that there is a potential for coupling, then no actual coupling will be present if the level of programming of neighboring cells is not sufficient to produce the required coupling. If there is no potential for coupling (step 346), then in step 348 a read process is performed without consideration of the coupling. Note that the read process includes determining information stored in non-volatile memory and reporting this information. If it is determined that there is a potential for coupling (step 346), then in step 350 a read process is performed without consideration of potential coupling. In one embodiment, step 350 includes compensating the coupling if necessary. There are many other ways to compensate for coupling between memory cells. Any suitable manner can be used with the techniques described herein.

도 11은 데이터 페이지의 일 실시예를 나타내는 블럭도이다. 이 데이터 페이지는 헤더(380), 타이밍 정보(382), 사용자 데이터(384), 및 에러 정정 코드(ECC)(386)를 포함한다. 헤더 정보(380)는 헤더에서 사용될 본 발명의 기술분야에서 알려진 데이터의 임의의 세트를 포함할 수 있다. 헤더 정보의 일부 예들은 어드레스 정보, 비트 및/또는 섹터 매핑 관련 정보, 섹터에 대한 기입의 횟수 카운트 등을 포함할 수 있다. 다른 정보가 헤더에 저장될 수도 있다. 타이밍 정보(382)는 단계(304)에서 저장된 타이밍 정보이다. 사용자 데이터(384)는 단계(302)에서 기입 된 데이터를 포함한다. ECC(366)는 본 발명의 기술분야에서 알려진 에러 정정 코드를 포함한다. 주의할 것으로, 일부 기입 요청은 복수의 페이지에 기입하는 것을 요구할 수 있다. 이 경우에, 하나 또는 그 이상의 타이밍 정보 세트가 사용될 수 있다.11 is a block diagram illustrating an embodiment of a data page. This data page includes a header 380, timing information 382, user data 384, and an error correction code (ECC) 386. Header information 380 may include any set of data known in the art to be used in the header. Some examples of header information may include address information, bit and / or sector mapping related information, a count of the number of writes to a sector, and the like. Other information may be stored in the header. Timing information 382 is the timing information stored in step 304. User data 384 includes the data written in step 302. ECC 366 includes error correction codes known in the art. Note that some write requests may require writing to multiple pages. In this case, one or more sets of timing information may be used.

도 12는 데이터 기입을 위한 프로세스의 일 실시예를 나타낸 흐름도이다. 도 12의 프로세스는 도 9의 단계(302 및 304)를 수행하기 위한 일 실시예이다. 도 12의 단계(402)에서, 시스템은 데이터 기입 요청 수신에 응답하여 프로그래밍을 위해 메모리의 적절한 부분을 선택한다. 이것은 기입을 위해 블럭 및/또는 페이지 및/또는 섹터를 선택하는 것을 포함할 수 있다. 일 실시예에서, 도 12의 프로세스는 데이터를 페이지에 기입하고, 이것은 공통 워드 라인에 연결된 메모리 셀에 데이터를 기입하는 것을 포함한다. 단계(404)에서, 메모리의 선택 부분은 사전 프로그래밍 되고, 이것은 플래시 메모리의 웨어링을 위해 제공된다. 선택된 섹터 또는 페이지 내의 모든 메모리 셀은 동일한 임계 전압 범위에 프로그래밍 된다. 선택에 따라서는, 단계(404)가 선택될 수 있다. 단계(406)에서, 프로그래밍될 메모리 셀들이 소거된다. 예를 들어, 단계(406)는 오래된 메모리 셀들을 상태 E(도 6 내지 도 8 참조)로 이동시키는 것을 포함할 수 있다. 일부 실시예들에서, 단계(406)는 또한 소프트 프로그래밍 프로세스를 수행하는 것을 포함한다. 소거 프로세스 동안, 메모리 셀들의 일부는, 분포 E(도 6 내지 도 8 참조) 아래에 있는 값으로 낮아진 임계 전압을 가지는 것도 가능하다. 소프트 프로그래밍 프로세스는 프로그램 전압 펄스를 메모리 셀들에 인가하여, 이들의 임계 전압이 임계 전압 분포 E 내에 있도록 증가 한다.12 is a flow diagram illustrating one embodiment of a process for writing data. The process of FIG. 12 is one embodiment for performing steps 302 and 304 of FIG. In step 402 of FIG. 12, the system selects an appropriate portion of memory for programming in response to receiving a data write request. This may include selecting blocks and / or pages and / or sectors for writing. In one embodiment, the process of FIG. 12 writes data to a page, which includes writing data to a memory cell connected to a common word line. In step 404, the selected portion of the memory is preprogrammed, which is provided for wear of the flash memory. All memory cells in a selected sector or page are programmed to the same threshold voltage range. Depending on the selection, step 404 may be selected. In step 406, the memory cells to be programmed are erased. For example, step 406 may include moving old memory cells to state E (see FIGS. 6-8). In some embodiments, step 406 also includes performing a soft programming process. During the erase process, it is also possible that some of the memory cells have a threshold voltage lowered to a value below distribution E (see FIGS. 6-8). The soft programming process applies a program voltage pulse to the memory cells, increasing them so that their threshold voltages are within the threshold voltage distribution E.

단게(408)에서, 시스템은 타임 스탬프를 요구한다. 이 타임 스탬프는 절대적 시간일 수 있다. 예를 들어, 메모리 시스템은 제어기를 통해 호스트로부터 날짜/시간을 요구할 수 있다. 대안적으로, 메모리 시스템은 배터리 및 내부 클럭을 포함할 수 있어, 메모리 시스템은 자신의 타임 스탬프를 제공할 수 있다. 또 다른 실시예에서, 메모리 시스템은 싸이클 카운트를 유지할 수 있다. 시스템이 페이지를 프로그래밍할 때마다, 싸이클 카운트가 증가한다. 단계(408)에서 획득된 타입 스탬프는 현재 싸이클 카운트일 수 있다. 싸이클 카운트가 절대적 시간을 제공하지 않는 반면에, 상대적 시간을 제공한다. 싸이클 카운터를 사용하여, 두 개 혹은 그 이상의 페이지들 중 어느 것이 먼저 프로그래밍 되었는지를 결정하는 것이 가능하다.In step 408, the system requires a time stamp. This time stamp may be absolute time. For example, the memory system may request a date / time from the host through a controller. Alternatively, the memory system can include a battery and an internal clock so that the memory system can provide its time stamp. In yet another embodiment, the memory system may maintain a cycle count. Each time the system programs the page, the cycle count is incremented. The type stamp obtained in step 408 may be the current cycle count. While cycle counts do not provide absolute time, they provide relative time. Using the cycle counter, it is possible to determine which of the two or more pages has been programmed first.

단계(410)에서, 프로그래밍될 데이터는 적절한 래치/레지스터(latches/registers)에 저장된다. 일 실시예에서, 도 12의 프로세스는 데이터의 하나의 페이지를 프로그래밍하는데 사용될 수 있다. 프로그래밍되는 메모리 셀들 모두는 동일한 워드 라인 상에 있다. 각각 메모리 셀은 자기 자신의 비트 라인과 그 비트 라인과 관련된 래치들의 세트를 갖는다. 이러한 래치들은 관련 메모리 셀에 대해 프로그래밍될 데이터의 표시를 저장한다. 단계(410)는 또한 타임 스탬프를 저장하는 메모리 셀에 대한 비트 라인들과 관련된 래치들에 타임 스탬프 데이터를 저장하는 것을 포함한다. 단계(412)에서, 제 1 프로그램 펄스의 크기가 설정된다. 일부 실시예에서, 워드 라인에 인가되는 전압은 프로그램 펄스들의 세트이고, 각각의 펄스의 크기는 이전의 펄스로부터 단계 크기(예를 들어, 2v-4v)만큼 증가한다. 단계(414)에서, 프로그램 카운트(Program Count, PC)는 초기에 제로로 설정된다.In step 410, the data to be programmed is stored in appropriate latches / registers. In one embodiment, the process of FIG. 12 may be used to program one page of data. All of the memory cells being programmed are on the same word line. Each memory cell has its own bit line and a set of latches associated with that bit line. These latches store an indication of the data to be programmed for the associated memory cell. Step 410 also includes storing time stamp data in latches associated with the bit lines for the memory cell that stores the time stamp. In step 412, the magnitude of the first program pulse is set. In some embodiments, the voltage applied to the word line is a set of program pulses, the magnitude of each pulse increasing by a step size (eg, 2v-4v) from the previous pulse. In step 414, the Program Count (PC) is initially set to zero.

단계(416)에서, 프로그램 펄스는 적절한 워드 라인(들)에 인가된다. 단계(418)에서, 워드 라인(들) 상의 메모리 셀들은 이들이 타겟 임계 전압 레벨에 도달했는지 여부를 알 수 있도록 검증된다. 만약 모든 메모리 셀들이 타겟 임계 전압 레벨에 도달했다면(단계(420)), 프로그래밍 프로세스는 단계(422)에서 성공적으로 완료한다(상태=패스). 만약 모든 메모리 셀들이 검증된 것이 아니라면, 단계(424)에서 프로그램 카운트(PC)가 20(또는 다른 적절한 값)보다 작은지 여부가 결정된다. 만약 프로그램 카운트가 20보다 작지 않다면, 프로그래밍 프로세스는 실패한다(단계(426)). 만약 프로그램 카운터가 20보다 작다면, 단계(428)에서, 프로그램 전압 신호(Vpgm)의 크기는 다음 펄스 동안 단계 크기(예를 들어, 3v)만큼 증가하고, 그리고 프로그램 카운터(PC)가 증가한다. 유의할 것으로, 타겟 임계 전압에 도달한 이러한 메모리 셀들은 현재의 프로그래밍 싸이클의 나머지 동안의 프로그래밍으로부터 락킹된다. 단계(428) 이후에, 도 12의 프로세스는 단계(416)에서 계속되고, 그리고 다음 프로그램 펄스가 인가된다.In step 416, program pulses are applied to the appropriate word line (s). In step 418, the memory cells on the word line (s) are verified to see if they have reached the target threshold voltage level. If all memory cells have reached the target threshold voltage level (step 420), the programming process completes successfully at step 422 (state = pass). If not all the memory cells have been verified, it is determined in step 424 whether the program count PC is less than 20 (or other appropriate value). If the program count is not less than 20, the programming process fails (step 426). If the program counter is less than 20, in step 428, the magnitude of the program voltage signal Vpgm increases by the step magnitude (e.g., 3v) during the next pulse, and the program counter PC increases. Note that these memory cells that have reached the target threshold voltage are locked from programming during the remainder of the current programming cycle. After step 428, the process of FIG. 12 continues at step 416, and the next program pulse is applied.

도 13은 도 12의 프로세스 또는 다른 프로세스에 따라 기입된 데이터를 판독하기 위한 프로세스의 일 예를 제공한다. 도 13은 도 10의 프로세스의 실시예이다. 도 13의 단계(500)에서, 데이터 판독 요청이 수신된다. 단계(502)에서, 판독 프로세스가 요청된 페이지에 대해 수행된다. 일 실시예에서, 이것은 동일한 워드 라인에 연결된 메모리 셀들의 세트로부터 데이터를 판독하는 것을 포함한다. 일부 실시예에서, 각각의 워드 라인은 두 개의 인접한 워드 라인들(예를 들어, 위쪽의 하나 의 워드 라인 및 아래쪽에 하나의 워드 라인, 또는 왼쪽에 하나의 워드 라인 및 오른쪽에 하나의 워드 라인)을 가질 수 있다. 단계(504)에서, 인접한 워드 라인들 중 하나가 판독된다. 단계(506)에서, 다른 인접한 워드 라인이 판독된다. 해당 데이터를 저장하는 워드 라인이 단지 하나의 인접한 워드 라인을 포함하는 실시예에서, 단계(506)는 생략될 수 있다. 유의할 것으로, 단계(502, 504 및 506)는 사용자 데이터에 추가되는 관련 타이밍 정보를 판독하는 것을 포함한다. 즉, 도 11에 도시된 전체 페이지가 판독되는 것이고, 그리고 그 페이지는 타이밍 정보(382)를 포함한다. 도 13의 실시예에서, 타이밍 정보는 절대적 시간 혹은 상대적 시간(예를 들어, 싸이클 카운트)과 같은 타임 스탬프의 일부 타입이다. 단계(508)에서, 다양한 타임 스탬프들의 비교에 근거하여 커플링에 대한 포텐셜이 있는지 여부가 결정된다. 예를 들어, 만약, 판독되는 워드 라인에 대한 타임 스탬프가 두 개의 인접한 워드 라인의 타임 스탬프보다 더 이후라면, 판독되는 워드 라인은 두 개의 인접한 워드 라인 이후에 프로그래밍 된 것으로 고려되고 아울러 플로팅 게이트 대 플로팅 게이트 커플링에 대한 포텐셜은 없는 것으로 고려된다. 만약 판독되는 워드 라인의 타임 스탬프가 두 개의 인접한 워드 라인들 중 어느 하나에 대한 타임 스탬프보다 더 빠르다면, 커플링에 대한 포턴셜은 존재한다. 만약 커플링에 대한 포텐셜이 없다면(단계(510)), 단계(502)에서 판독되는 데이터는 저장되고 그리고 커플링에 대한 어떠한 보상도 고려하지 않고 사용자에게 보고된다. 만약 커플링에 대한 포텐셜이 존재한다고 결정된다면(단계(510)), 단계(514)에서 커플링을 보상하는 추가적인 판독 프로세스가 수행된다.FIG. 13 provides an example of a process for reading data written in accordance with the process of FIG. 12 or another process. 13 is an embodiment of the process of FIG. 10. In step 500 of FIG. 13, a data read request is received. In step 502, a read process is performed for the requested page. In one embodiment, this includes reading data from a set of memory cells connected to the same word line. In some embodiments, each word line is two adjacent word lines (e.g., one word line above and one word line below, or one word line on the left and one word line on the right). Can have In step 504, one of the adjacent word lines is read. In step 506, another adjacent word line is read. In embodiments where the word line that stores the data contains only one adjacent word line, step 506 may be omitted. Note that steps 502, 504, and 506 include reading relevant timing information added to the user data. That is, the entire page shown in FIG. 11 is read out, and the page includes timing information 382. In the embodiment of FIG. 13, the timing information is some type of time stamp, such as absolute time or relative time (eg, cycle count). In step 508, it is determined whether there is a potential for coupling based on the comparison of the various time stamps. For example, if the time stamp for the word line being read is later than the time stamp of two adjacent word lines, the word line being read is considered to be programmed after two adjacent word lines and is also floating gate to floating. It is considered that there is no potential for gate coupling. If the time stamp of the word line being read is earlier than the time stamp for either of the two adjacent word lines, there is a potential for coupling. If there is no potential for coupling (step 510), the data read in step 502 is stored and reported to the user without considering any compensation for the coupling. If it is determined that there is a potential for coupling (step 510), an additional read process is performed in step 514 to compensate for the coupling.

도 14는 데이터 페이지에 대한 판독 동작(도 13의 단계(502) 참조)을 수행하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다. 도 14의 실시예는 공통 워드 라인에 연결된 메모리 셀들의 세트로부터 데이터 페이지를 판독하는 것과 관련된다. 도 14의 특정 실시예는 도 6 내지 도 8의 상태 E, A, B 및 C와 같은 네 가지 상태를 포함하는 다중-상태 메모리와 관련되어 있다. 도 14의 기술은 또한 다른 구성에도 적용가능하다. 단계(540)에서, 판독 기준 전압(Vra)이 페이지와 관련된 적절한 워드 라인에 인가된다. 단계(542)에서, 페이지와 관련된 비트 라인이 감지되어, 어드레싱된 메모리 셀들이 그들의 제어 게이트에 인가된 Vra에 따라 전도 상태인지 혹은 전도 상태가 아닌지 여부가 결정된다. 전도 상태의 비트 라인은 메모리 셀들이 턴온되었다고 나타낸다. 따라서 이러한 메모리 셀들의 임계 전압은 Vra 아래에 있다(예를 들어, 상태 E에 있다). 단계(544)에서, 비트 라인에 대한 감지 결과는 비트 라인에 대한 적절한 래치에 저장된다. 단계(546)에서, 판독되는 페이지와 관련된 워드 라인에 판독 기준 전압(Vrb)이 인가된다. 단계(548)에서, 비트 라인은 앞서 설명된 바와 같이 감지되며, 단계(550)에서, 그 결과가 비트 라인에 대한 적절한 래치에 저장되고, 단계(552)에서, 판독 기준 전압(Vrc)이 페이지와 관련된 워드 라인에 인가된다. 단계(554)에서, 앞서 설명된 바와 같이, 비트 라인이 감지되어 어떤 메모리 셀이 전도상태에 있는지가 결정된다. 단계(556)에서, 감지 단계로부터의 결과가 비트 라인에 대한 적절한 래치에 저장된다. 단계(558)에서, 각각의 비트 라인에 대한 데이터 값이 결정된다. 예를 들어, 만약 메모리 셀이 Vra에서 전도상태에 있다면, 메모리 셀은 상태 E에 있다. 만약 메모리 셀이 Vrb 및 Vrc 에서 전도상태에 있지만 Vra에서 전도상태에 있지 않다면, 메모리 셀은 상태 A에 있다. 만약 메모리 셀이 Vrc에서 전도상태에 있지만 Vra 및 Vrb에서 전도상태에 있지 않다면, 메모리 셀은 상태 B에 있다. 만약 메모리 셀이 Vra, Vrb 또는 Vrc에서 전도상태에 있지 않다면, 메모리 셀은 상태 C에 있다. 일 실시예에서 데이터 값은 감지 증폭기와 관련된 프로세싱 유닛에 의해 결정된다. 단계(560)에서, 결정된 데이터 값은 각각의 비트 라인에 대해 적절한 래치에 저장되거나, 혹은 다른 경우에는 상태 머신, 제어기 또는 다른 디바이스에 의해 사용된다. 다른 실시예에서, 다양한 레벨(Vra, Vrb, 및 Vrc)을 감지하는 것은 다른 순서로 발생할 수 있다.14 is a flowchart illustrating one embodiment of a process for performing a read operation (see step 502 of FIG. 13) for a data page. The embodiment of FIG. 14 relates to reading a data page from a set of memory cells connected to a common word line. The particular embodiment of FIG. 14 relates to a multi-state memory that includes four states, such as states E, A, B, and C of FIGS. The technique of FIG. 14 is also applicable to other configurations. In step 540, a read reference voltage Vra is applied to the appropriate word line associated with the page. In step 542, the bit lines associated with the page are sensed to determine whether the addressed memory cells are conductive or not, depending on the Vra applied to their control gate. The bit line in the conductive state indicates that the memory cells are turned on. Thus, the threshold voltages of these memory cells are below Vra (eg, in state E). In step 544, the sensing result for the bit line is stored in the appropriate latch for the bit line. In step 546, a read reference voltage Vrb is applied to the word line associated with the page being read. In step 548, the bit line is sensed as described above, in step 550, the result is stored in an appropriate latch for the bit line, and in step 552, the read reference voltage Vrc is paged. Is applied to the word line associated with. In step 554, as described above, the bit line is sensed to determine which memory cell is in the conductive state. In step 556, the results from the sensing step are stored in the appropriate latch for the bit line. In step 558, a data value for each bit line is determined. For example, if the memory cell is in the conducting state at Vra, the memory cell is in state E. If the memory cell is in the conductive state in Vrb and Vrc but not in the conductive state in Vra, the memory cell is in state A. If the memory cell is in the conduction state at Vrc but not in the conduction state at Vra and Vrb, the memory cell is in state B. If the memory cell is not in a conductive state at Vra, Vrb or Vrc, the memory cell is in state C. In one embodiment, the data value is determined by the processing unit associated with the sense amplifier. In step 560, the determined data value is stored in an appropriate latch for each bit line, or otherwise used by a state machine, controller or other device. In other embodiments, sensing the various levels Vra, Vrb, and Vrc may occur in a different order.

도 15A는 포텐셜 커플링을 보상하는 추가적인 판독 프로세스를 수행하기 위한 프로세스의 일 실시예를 설명하는 흐름도를 제공한다. 따라서, 도 15A는 도 13의 단계(514)의 일 실시예를 제공한다. 도 15A의 실시예는 두 개의 이웃하는 워드 라인들로부터의 포텐셜 커플링이 존재한다고 가정한다. 단계(600)에서, 시스템은 이웃들 각각에 근거하여 오프셋들을 결정한다. 다른 많은 타입의 오프셋들이 있으며 사용될 수 있는 오프셋들에 대한 값들도 많이 있다. 일 실시예에서, 만약 이웃 메모리 셀이 상태 A로 프로그래밍된다면(도 6 참조), 오프셋은 0.1 볼트이고, 만약 이웃 메모리 셀이 상태 B로 프로그래밍된다면, 오프셋은 0.2 볼트이고, 그리고 만약 이웃 메모리 셀이 상태 C로 프로그래밍된다면, 오프셋은 0.3 볼트이다. 다른 실시예에서는, 다른 값들 또는 방식이 사용될 수 있다. 시스템이 단계(504 및 506)에서 이웃하는 워드 라인들에 저장된 값들을 판독하고, 따라서 어떤 오프셋을 사용할지를 결정할 수 있다. 이 시스템은 이웃하는 워드 라인들 각각에 대한 오프셋들의 세트를 결정할 수 있고, 그 다음에 두 개의 오프셋들을 함께 더할 수 있다. 이러한 방식으로 여섯 개의 가능한 오프셋들이 있다.15A provides a flow diagram describing one embodiment of a process for performing an additional read process that compensates for potential coupling. Thus, FIG. 15A provides one embodiment of step 514 of FIG. 13. The embodiment of FIG. 15A assumes that there is potential coupling from two neighboring word lines. In step 600, the system determines offsets based on each of the neighbors. There are many other types of offsets and there are many values for offsets that can be used. In one embodiment, if the neighbor memory cell is programmed to state A (see FIG. 6), the offset is 0.1 volts, if the neighbor memory cell is programmed to state B, the offset is 0.2 volts, and if the neighbor memory cell is If programmed in state C, the offset is 0.3 volts. In other embodiments, other values or schemes may be used. The system may read the values stored in the neighboring word lines at steps 504 and 506 and thus determine which offset to use. The system can determine a set of offsets for each of the neighboring word lines and then add the two offsets together. In this way there are six possible offsets.

예를 들어, 주어진 메모리 셀이 두 개의 이웃들을 갖는다고 가정하자. 제 1 이웃이 상태 B로 프로그래밍된다. 제 2 이웃이 상태 C로 프로그래밍된다. 그 다음에, 제 1 이웃으로부터의 오프셋은 0.2 볼트이고, 그리고 제 2 이웃으로부터의 오프셋은 0.3 볼트이다. 특정 메모리 셀에 대한 전체 오프셋은 0.5 볼트이다.For example, suppose a given memory cell has two neighbors. The first neighbor is programmed to state B. The second neighbor is programmed to state C. The offset from the first neighbor is then 0.2 volts, and the offset from the second neighbor is 0.3 volts. The total offset for a particular memory cell is 0.5 volts.

다른 실시예에서, 여섯 개보다 많거나 혹은 적은 포텐셜 오프셋이 있을 수 있다. 일부 실시예에서, 오프셋들은 제로 볼트 오프셋을 포함할 수 있다. 예를 들어, 제로 볼트 오프셋은 이웃하는 메모리 셀들이 상태 E에 머물러 있을 때 사용될 수 있다.In other embodiments, there may be more or less than six potential offsets. In some embodiments, the offsets may include a zero volt offset. For example, a zero volt offset can be used when neighboring memory cells stay in state E.

도 15A의 단계(602)에서, 어떠한 오프셋들도 수신하지 않는 이러한 메모리 셀들은 단계(502)로부터 이전의 판독 데이터를 저장한다. 예를 들어, 만약 메모리 셀이 상태 E에 있는 이웃들을 갖는다면, 어떠한 오프셋도 사용되지 않는다(또는 Ov 오프셋이 사용된다). 단계(604)에서 판독 프로세스는 판독 포인트를 갖는 제 1 오프셋을 사용하여 수행된다. 예를 들어, 도 14의 프로세스가 수행될 수 있다. 그러나, 판독 비교 포인트로서 Vra, Vrb, 및 Vrc를 사용하는 대신, 판독 프로세스는 Vra + 제 1 오프셋, Vrb + 제 1 오프셋, 및 Vrc + 제 1 오프셋을 사용한다. 단계(606)에서, 제 1 오프셋과 관련된 비트 라인에 대한 데이터가 저장된다. 즉, 상태 E에 하나의 이웃을 갖고 상태 A에 또 다른 하나의 이웃을 갖는 이러한 메모리 셀들은 단계(604)로부터 저장된 데이터를 갖는다. 단계(608)에서, 판독 프로세스가 판독 비교 포인트들을 갖는 오프셋들의 제 2 세트를 사용하여 수행된다. 예를 들어, 도 14의 프로세스가 판독 비교 포인트들에 대해 Vra + 제 2 오프셋, Vrb + 제 2 오프셋, 및 Vrc + 제 2 오프셋을 가지고 사용될 수 있다. 단계(610)에서, 제 2 오프셋과 관련된 비트 라인들은 단계(608)로부터의 데이터를 저장한다. 예를 들어, 상태 E에 하나의 이웃을 가지고 그리고 상태 B에 또 다른 하나의 이웃을 가지거나 또는 상태 A에 양쪽 이웃 모두를 갖는 이러한 메모리 셀들은 단계(608)로부터의 데이터를 저장한다. 단계(612)에서, 판독 프로세스가 판독 비교 포인트를 갖는 제 3 오프셋을 사용하여 수행된다. 단계(614)에서, 데이터가 제 3 오프셋과 관련된 이러한 비트 라인들에 대해 저장된다. 단계(616)에서, 판독 프로세스가 판독 비교 포인트를 갖는 제 4 오프셋을 사용하여 수행된다. 단계(618)에서, 단계(616)으로부터의 데이터가 제 4 오프셋과 관련된 이러한 비트 라인들에 대해 저장된다. 단계(620)에서, 판독 프로세스가 판독 비교 포인트들을 갖는 제 5 오프셋을 사용하여 수행된다. 단계(622)에서, 데이터는 제 5 오프셋과 관련된 이러한 비트 라인들에 대해 저장된다. 단계(624)에서, 판독 프로세스가 판독 비교 포인트들을 갖는 제 6 오프셋을 사용하여 수행된다. 단계(626)에서, 단계(624)로부터의 데이터는 제 6 오프셋과 관련된 이러한 비트 라인들에 대해 저장된다. 일 예에서, 제 1 오프셋은 0.1 볼트이고, 제 2 오프셋은 0.2 볼트이고, 제 3 오프셋은 0.3 볼트이고, 제 4 오프셋은 0.4 볼트이고, 제 5 오프셋은 0.5 볼트이고, 그리고 제 6 오프셋은 0.6 볼트이다. 커플링을 보상하는 것에 대한 더 많은 정보는 미국 특허 출원 번호 11/099,133(발명의 명칭: "Compensating for Coupling During Read Operations On Non- Volatile Memory", 2005.04.05. 출원, 발명자: Jian Chen)에 설명되어 있으며, 이것은 그 전체가 참조로 본 명세서에 통합된다.In step 602 of FIG. 15A, these memory cells that do not receive any offsets store previous read data from step 502. For example, if the memory cell has neighbors in state E, no offset is used (or an Ov offset is used). In step 604 the read process is performed using a first offset with a read point. For example, the process of FIG. 14 may be performed. However, instead of using Vra, Vrb, and Vrc as read comparison points, the read process uses Vra + first offset, Vrb + first offset, and Vrc + first offset. In step 606, data for the bit line associated with the first offset is stored. That is, these memory cells having one neighbor in state E and another neighbor in state A have data stored from step 604. In step 608, a read process is performed using a second set of offsets with read compare points. For example, the process of FIG. 14 can be used with Vra + second offset, Vrb + second offset, and Vrc + second offset for read comparison points. In step 610, the bit lines associated with the second offset store the data from step 608. For example, such memory cells having one neighbor in state E and another neighbor in state B or both neighbors in state A store data from step 608. In step 612, a read process is performed using a third offset with a read compare point. In step 614, data is stored for these bit lines associated with the third offset. In step 616, a read process is performed using a fourth offset with a read compare point. In step 618, data from step 616 is stored for these bit lines associated with the fourth offset. In step 620, a read process is performed using a fifth offset with read compare points. In step 622, data is stored for these bit lines associated with the fifth offset. In step 624, a read process is performed using a sixth offset with read compare points. At step 626, data from step 624 is stored for these bit lines associated with the sixth offset. In one example, the first offset is 0.1 volts, the second offset is 0.2 volts, the third offset is 0.3 volts, the fourth offset is 0.4 volts, the fifth offset is 0.5 volts, and the sixth offset is 0.6 Bolts. More information on compensating coupling is described in US patent application Ser. No. 11 / 099,133, entitled "Compensating for Coupling During Read Operations On Non-Volatile Memory", Apr. 5, 2005, filed by Jian Chen. Which is hereby incorporated by reference in its entirety.

도 15A의 프로세스는 두 개의 이웃들로부터의 포텐셜 커플링이 있는 경우 수행된다. 만약 단계(508)에서 단지 하나의 이웃으로부터의 포텐셜 커플링이 있는 것으로 결정된다면, 단계(514)에서 도 15B의 프로세스가 수행된다. 단계(630)에서, 시스템은 하나의 이웃에 근거하여 오프셋들을 결정한다. 단계(632)에서, 어떠한 오프셋과도 관련되지 않은 이러한 비트 라인들에 대한 이전의 판독 데이터가 단계(632)에서 저장된다. 단계(634)에서, 판독 프로세스가 판독 비교 포인트들을 갖는 제 1 오프셋을 사용하여 수행된다. 단계(636)에서, 제 1 오프셋과 관련된 이러한 비트 라인들에 대한 데이터가 저장된다. 단계(638)에서, 판독 프로세스가 판독 비교 포인트들을 갖는 제 2 오프셋을 사용하여 수행된다. 단계(640)에서, 제 2 오프셋과 관련된 이러한 비트 라인들에 대한 데이터가 저장된다. 단계(642)에서, 판독 프로세스가 판독 비교 포인트들을 갖는 제 3 오프셋을 사용하여 수행된다. 단계(644)에서, 제 3 오프셋과 관련된 이러한 비트 라인들에 대한 데이터가 저장된다.The process of FIG. 15A is performed when there is potential coupling from two neighbors. If at step 508 it is determined that there is potential coupling from only one neighbor, then at step 514 the process of FIG. 15B is performed. In step 630, the system determines offsets based on one neighbor. In step 632, previous read data for these bit lines that are not associated with any offset is stored in step 632. In step 634, a read process is performed using a first offset with read compare points. At step 636, data for these bit lines associated with the first offset is stored. In step 638, a read process is performed using a second offset with read compare points. In step 640, data for these bit lines associated with the second offset is stored. In step 642, a read process is performed using a third offset with read compare points. In step 644, data for these bit lines associated with the third offset is stored.

또 다른 실시예에서, 타임 스탬프를 저장하는 것이라기보다는, 타이밍 정보는, 특별한 페이지가 이웃하는 워드 라인들(또는 다른 이웃들) 상의 데이터 이후에 혹은 잠재적으로 이전에 프로그래밍되었는지 여부에 관한 표시로서 저장된다. 이 정보를 통해 페이지가 잠재적으로 이전에 기입되었는지 여부를 단지 알 수 있는 이유는, 이웃이 소거되는 동안 페이지가 기입되고 그리고 이웃이 결코 기입되지 않는 것이 가능하기 때문이다.In another embodiment, rather than storing a time stamp, timing information is stored as an indication as to whether a particular page was programmed after, or potentially before, data on neighboring word lines (or other neighbors). . The only reason for this information is to know whether the page was potentially previously written because it is possible that the page is written while the neighbor is erased and the neighbor is never written.

도 16은 데이터 페이지의 또 다른 예를 제공한다. 도시된 페이지는 헤더(650), 타이밍 정보(652), 사용자 데이터(654), 타이밍 정보(656) 및 ECC(658)를 포함한다. 타이밍 정보(652)는 이전 워드 라인에 대한 히스토리(HPWL(History Previous Word Line))를 제공한다. 타이밍 정보(656)는 다음 워드 라인에 대한 히스토리(HNWL(History Next Word Line))를 제공한다. 타이밍 정보(652 및 656)에 관하여, 타이밍 정보(652 및 656)에 관하여, 용어 이전 및 다음의 사용을 통해 시간 또는 순서적 의미를 설명하려는 것이 아니다. 오히려, 이전 또는 다음은 두 개의 다른 이웃들을 식별하기 위해 사용된다. 예를 들어, 도 5를 다시 보면, 워드 라인(WL2)은 적어도 두 개의 이웃(WL3 및 WL1)을 갖는다. 단지 명명의 목적으로, 소스에 가장 가까운 이웃 워드 라인이 이전 워드 라인으로 언급되고, 그리고 드레인에 가장 가까운 이웃 워드 라인이 다음 워드 라인으로 언급된다. 따라서, WL1에 대해, 이전 워드 라인은 WL1이고, 다음 워드 라인은 WL2이다. 커플링에 대한 포텐셜을 결정하고 그리고 보상하는 본 명세서에 설명된 기술은 미리 정의되지 않은 순서로 데이터를 프로그래밍하는 프로그래밍 방식을 포함하는 다른 많은 프로그래밍 방식과 함께 적절하게 사용될 수 있다. 즉, 일부 실시예들에서, 워드 라인들은 WL0으로부터 WL3까지 프로그래밍된다. 다른 실시예에서, 시스템은 워드 라인을 램덤하게 선택할 수 있고, 그리고 임의 순서로 워드 라인을 프로그래밍할 수 있다. 본 명세서에서 설명된 기술은 어떠한 실시예와도 함께 동작할 수 있다.16 provides another example of a data page. The page shown includes a header 650, timing information 652, user data 654, timing information 656, and ECC 658. The timing information 652 provides a history (HWL) for the previous word line. Timing information 656 provides a history (HNWL) for the next word line. With respect to timing information 652 and 656, with respect to timing information 652 and 656, it is not intended to describe the temporal or sequential meaning through use of the terms before and after. Rather, the previous or next is used to identify two different neighbors. For example, referring back to FIG. 5, the word line WL2 has at least two neighbors WL3 and WL1. For purposes of naming only, the neighboring word line closest to the source is referred to as the previous word line, and the neighboring word line closest to the drain is referred to as the next word line. Thus, for WL1, the previous word line is WL1 and the next word line is WL2. The techniques described herein that determine and compensate for the potential for coupling can be suitably used in conjunction with many other programming approaches, including those that program data in an undefined order. That is, in some embodiments, word lines are programmed from WL0 to WL3. In another embodiment, the system can randomly select word lines and program the word lines in any order. The techniques described herein can work with any embodiment.

도 17은 HPWL(652) 및 HNWL(656)에 저장될 수 있는 데이터 값들을 설명하는 차트이다. 일 실시예에서, 저장된 데이터는 2비트, 즉 11, 10, 및 00을 포함한다. 만약 HPWL(652) 및 HNWL(656)이 11을 저장한다면, 히스토리를 저장하는 페이지, 섹터 혹은 워드 라인은 소거된다. 만약 HPWL(652) 및 HNWL(656)이 10을 저장한다면, 그 히스토리 값을 저장하는 워드 라인은 각각의 이웃 워드 라인 이전에 프로그래밍 된다. 만약 HPWL(652) 또는 HNWL(656)이 00을 저장한다면, 각각의 이웃하는 워드 라인은 히스토리를 저장하는 워드 라인 이전에 프로그래밍된다.17 is a chart illustrating data values that may be stored in HPWL 652 and HNWL 656. In one embodiment, the stored data includes two bits, namely 11, 10, and 00. If the HPWL 652 and the HNWL 656 store 11, the page, sector or word line that stores the history is erased. If HPWL 652 and HNWL 656 store 10, the word line that stores its history value is programmed before each neighboring word line. If HPWL 652 or HNWL 656 stores 00, each neighboring word line is programmed before the word line that stores history.

도 18은 도 16에 도시된 페이지를 프로그래밍하는 프로세스의 일 실시예를 설명하는 흐름도이다. 도 18의 단계(402-406)는 도 12에서와 동일하다. 단계(680)는 이전 워드 라인에 대한 히스토리를 판독하는 것과 HPWL을 결정하는 것을 포함한다. 예를 들어, 만약 도 5의 워드 라인(WL2)이 프로그래밍되고 있다면 이전 워드 라인은 WL1이다. 단계(680)는 WLl이 소거되었는지(HNWL=11) 또는 프로그래밍되었는지(예를 들어, HNWL=1O) 여부를 알 수 있도록 WL1에 대한 HNWL(656)을 관측하는 것을 포함한다. WL1에 대한 HNWL에 근거하여, 시스템은 WL2에 대한 HPWL(652)을 결정한다. 단계(682)에서, 시스템은 다음 라인에 대한 히스토리를 판독하고 HNWL을 결정한다. 예를 들어, 도 5의 WL2에 기입시, 시스템은 워드 라인(WL3)의 HPWL를 먼저 판독하고, 그것에 근거하여 어떤 값이 워드 라인(WL2)에 대해 HNWL에 저장되어야 하는지를 결정한다. 헤더(650), HPWL(652), 사용자 데이터(654), HNWL(656) 및 ECC(658)를 프로그래밍하는 데이터는 단계(684)에서 비트 라인들 각각에 대한 적절한 래치에 저장된다. 도 17의 단계(412-428)는 도 12에서와 동일하다.18 is a flow chart describing one embodiment of a process for programming the page shown in FIG. Steps 402-406 of FIG. 18 are the same as in FIG. 12. Step 680 includes reading the history for the previous word line and determining the HPWL. For example, if the word line WL2 of FIG. 5 is being programmed, the previous word line is WL1. Step 680 includes observing HNWL 656 for WL1 to see whether WLl has been erased (HNWL = 11) or programmed (eg, HNWL = 1O). Based on the HNWL for WL1, the system determines the HPWL 652 for WL2. In step 682, the system reads the history for the next line and determines the HNWL. For example, upon writing to WL2 in FIG. 5, the system first reads the HPWL of word line WL3 and based on it determines which value should be stored in HNWL for word line WL2. Data for programming the header 650, HPWL 652, user data 654, HNWL 656, and ECC 658 is stored in an appropriate latch for each of the bit lines in step 684. Steps 412-428 of FIG. 17 are the same as in FIG. 12.

도 19는 다음 워드 라인 혹은 이전 워드 라인으로부터의 히스토리 정보를 판 독하고 그리고 적절한 HPWL 또는 HNWL을 결정하는 프로세스의 일 실시예를 설명하는 흐름도이다. 예를 들어, 도 19는 단계(680 또는 682)의 일 실시예를 제공한다. 단계(700)에서, 전압 Vra를 적절한 워드 라인에 인가함으로써 판독 프로세스가 수행된다. 단계(702)에서, 비트 라인이 감지되어 메모리 셀이 턴온인지 아닌지 여부가 결정된다. 단계(702)는 히스토리 값(HPWL 또는 HNWL)을 저장하는 이러한 메모리 셀들 상에서만 단지 수행될 필요가 있다. 다른 실시예에서, 단계(702)는 워드 라인에 연결된 모든 메모리 셀들(또는 다른 많은 메모리 셀 세트) 상에서 수행된다. 유의할 것으로, 만약 히스토리 값이 11(상태 E)이라면, 메모리 셀은 턴온된다. 만약 그렇지 않다면, 히스토리를 저장하는 메모리 셀은 Vra에 응답하여 턴온되지 않는다. 만약 히스토리를 저장하는 메모리 셀들이 턴온된다면, 이웃 워드 라인에 연결된 메모리 셀들은 소거된 것으로 고려된다. 따라서, 현재의 메모리 셀들은, 이웃 워드 라인이 프로그래밍되고 있기 이전에 잠재적으로 프로그래밍되고 있다. 만약 히스토리를 저장하는 메모리 셀들이 턴온되지 않는다면, 이웃 워드 라인 상의 메모리 셀들은 이미 프로그래밍된것으로 고려되고, 그리고 현재의 워드 라인은 프로그래밍 되는 이웃 워드 라인에 이후에 프로그래밍되고 있다고 고려된다. 단계(702)로부터의 결과는 단계(704)에서 저장된다. 히스토리 정보를 저장하는 메모리 셀들이 턴온 인지 턴오프인지 여부에 근거하여(단계(706)), 적절한 값이 현재의 워드 라인에 대해 히스토리에 저장된다. 만약 이웃의 히스토리가 11이라면, 단계(710)에서 값 10은 현재의 워드 라인에 대해 적절한 히스토리 값에 저장되고, 이것은 현재의 워드 라인이 이웃 이전에 프로그래밍되는 것을 나타낸다. 만약 이웃에 대한 히스토 리 값이 10이라면, 현재의 워드 라인에서의 히스토리에 대해 00이 저장되어 현재의 워드 라인이 이웃 이후에 프로그래밍되는 것을 나타낸다.19 is a flowchart illustrating one embodiment of a process for reading historical information from the next or previous word line and determining an appropriate HPWL or HNWL. For example, FIG. 19 provides one embodiment of step 680 or 682. In step 700, a read process is performed by applying the voltage Vra to the appropriate word line. In step 702, a bit line is detected to determine whether or not the memory cell is turned on. Step 702 only needs to be performed on these memory cells that store a history value (HPWL or HNWL). In another embodiment, step 702 is performed on all memory cells (or many other memory cell sets) connected to a word line. Note that if the history value is 11 (state E), the memory cell is turned on. If not, the memory cell storing the history is not turned on in response to Vra. If the memory cells storing the history are turned on, the memory cells connected to the neighboring word line are considered erased. Thus, current memory cells are potentially programmed before the neighboring word lines are being programmed. If the memory cells that store history are not turned on, the memory cells on the neighboring word line are considered to be already programmed, and the current word line is considered to be subsequently programmed to the neighboring word line to be programmed. The results from step 702 are stored in step 704. Based on whether the memory cells storing history information are turned on or turned off (step 706), an appropriate value is stored in history for the current word line. If the neighbor's history is 11, then at step 710 the value 10 is stored in the appropriate history value for the current word line, indicating that the current word line is programmed before the neighbor. If the history value for the neighbor is 10, 00 is stored for history on the current word line, indicating that the current word line is programmed after the neighbor.

도 20은 도 18의 프로세스에 따라 프로그래밍되는 데이터를 판독하는 판독 프로세스의 일 실시예를 설명하는 흐름도이다. 유의할 것으로, 도 20은 도 10의 프로세스에 대한 또 다른 실시예이다. 도 20의 단계(800)에서, 데이터 판독 요청이 수신된다. 단계(802)에서, 판독 프로세스가 어떠한 오프셋 사용 없이 워드 라인에 대해 수행된다. 예를 들어, 도 14의 프로세스가 수행된다. 단계(804)에서, 히스토리가 판독되는 워드 라인에 대해 액세스된다. 유의할 것으로, 일 실시예에서, 단계(802)에서 히스토리 데이터는 전체 페이지의 판독 프로세스의 일부로서 판독된다. 그 다음으로 단계(804)에서 이 데이터는 프로세서, 상태 머신 등에 의해 액세스된다. 다른 실시예들에서, 히스토리 데이터는 단계(802) 이전에 혹은 이후에 액세스될 수 있다. 만약 HNWL 또는 HPWL가 11이라면(단계(806), 페이지는 소거된 데이터를 가지면, 단계(808)에서 소거된 데이터가 보고된다. 만약 HNWL 및 HPWL 모두가 00이라면, 판독되는 현재 페이지는 양쪽 이웃 모두 이후에 프로그래밍되는 것으로 고려된다. 따라서, 단계(810)에서, 데이터는 커플링 보상 없이 보고된다. 만약 HNWL=00이고 HPWL=10이라면(단계(812), 단계(814)에서 이전 이웃으로부터의 커플링을 보상하는 추가적인 판독 동작이 수행된다. 만약 HNWL=10이고 HPWL=10이라면, 단계(818)에서 양쪽 이웃들로부터의 커플링을 보상하는 추가적인 판독 동작이 수행된다. 만약 HNWL=10이고 HPWL=00이라면, 단계(816)에서 다음 이웃으로부터의 커플링을 보상하는 추가적인 판독 동작이 수행된다.20 is a flow chart describing one embodiment of a read process for reading data programmed in accordance with the process of FIG. Note that FIG. 20 is another embodiment of the process of FIG. 10. In step 800 of FIG. 20, a data read request is received. In step 802, a read process is performed on the word line without using any offset. For example, the process of FIG. 14 is performed. In step 804, history is accessed for the word line to be read. Note that in one embodiment, historical data is read as part of the read process of the entire page at step 802. This data is then accessed in step 804 by the processor, state machine, or the like. In other embodiments, historical data may be accessed before or after step 802. If HNWL or HPWL is 11 (step 806, if the page has erased data, then the erased data is reported in step 808. If both HNWL and HPWL are 00, the current page being read is both neighbors). It is considered to be programmed later, therefore, in step 810, the data is reported without coupling compensation, if HNWL = 00 and HPWL = 10 (step 812, couple from previous neighbor in step 814). An additional read operation is performed to compensate the ring, if HNWL = 10 and HPWL = 10, an additional read operation is performed to compensate for coupling from both neighbors at step 818. If HNWL = 10 and HPWL = 00 If yes, in step 816 an additional read operation is performed to compensate for the coupling from the next neighbor.

도 21은 하나의 이웃으로부터의 커플링을 보상하는 추가적인 판독 동작을 수행하기 위한 프로세스의 일 예를 설명하는 흐름도이다. 예를 들어, 도 21의 프로세스는 도 20의 단계(814) 또는 단계(816)의 일부로서 수행될 수 있다. 단계(904)에서, 제어 게이트 또는 워드 라인에서 제공되는 판독 비교 포인트(Vra)를 사용하여 이웃하는 워드 라인으로부터 데이터가 판독된다. 단계(906)에서, 전체 워드 라인 혹은 페이지가 소거되었는지 여부가 결정된다. 만약 메모리 셀 모두가 상태 E에 있다면, 메모리 셀 모두는 Vra에 응답하여 턴온된다. 만약 모든 메모리 셀들이 소거된다면(단계(906)), 단계(908)에서 이웃 워드 라인으로부터의 커플링의 어떠한 보상을 수행함이 없이 데이터가 보고된다. 만약 이웃하는 워드 라인이 소거되지 않는다면(단계(906)), 판독 프로세스는 계속하여, 판독 비교 포인트(Vrb)를 사용하여 판독 동작을 하고 그리고 비교 포인트(Vrc)를 사용하여 판독 동작을 한다(단계(910)). 세 개의 판독 동작에 근거하여, 이웃에 저장된 데이터가 결정될 수 있다(도 14의 설명 참조). 단계(910) 이후에, 이웃에 저장된 데이터에 따라 포텐셜 커플링을 보상하는 추가적인 판독 프로세스가 수행된다. 예를 들어, 도 15B의 프로세스가 수행될 수 있다.21 is a flow chart illustrating an example of a process for performing an additional read operation that compensates for coupling from one neighbor. For example, the process of FIG. 21 may be performed as part of step 814 or step 816 of FIG. 20. In step 904, data is read from a neighboring word line using the read comparison point Vra provided at the control gate or word line. In step 906, it is determined whether the entire word line or page has been erased. If all of the memory cells are in state E, all of the memory cells are turned on in response to Vra. If all memory cells are erased (step 906), then data is reported without performing any compensation of the coupling from the neighboring word lines in step 908. If the neighboring word lines are not erased (step 906), the read process continues with the read operation using the read compare point Vrb and the read operation using the compare point Vrc (step). (910)). Based on the three read operations, the data stored in the neighbor can be determined (see the description of FIG. 14). After step 910, an additional read process is performed to compensate for potential coupling in accordance with the data stored in the neighborhood. For example, the process of FIG. 15B can be performed.

도 22는 두 개의 이웃들로부터의 커플링을 고려한 추가적인 판독 동작을 수행하기 위한 프로세스의 일 실시예를 설명하는 흐름도이다. 예를 들어, 도 22의 프로세스는 도 20의 단계(818)의 일부로서 수행될 수 있다. 단계(930)에서, 양쪽 이웃 워드 라인들이 판독 비교 포인트(Vra)를 사용하여 판독된다. 만약 양쪽 이웃들이 소거된 것으로 결정된다면(단계(932)), 단계(934)에서, 데이터는 커플링 보상 없이 보고된다. 만약 하나의 이웃이 소거된 것으로 결정된다면(예를 들어, 하나의 이웃 워드 라인 혹은 페이지가 턴온된 메모리 셀 모두를 가지고 있고, 반면에 다른 이웃은 Vra에 응답하여 턴온된 메모리 셀 모두를 가지고 있지 않다면), 단계(950)에서 하나의 이웃은 Vrb 및 Vrc의 판독 비교 포인트들을 사용하여 수행되는 판독 프로세스의 대상이 된다(도 21의 단계(910)와 유사함). 단계(952)에서, 단계(952)에서의 포텐셜 커플링을 보상하는 추가적인 판독 프로세스가 수행된다(도 21의 단계(912)와 유사함). 만약 단계(932)에서 어떠한 이웃도 소거되지 않았다고 결정된다면, 단계(936)에서 양쪽 이웃들은 Vrb 및 Vrc의 판독 비교 포인트를 사용하여 수행되는 판독 프로세스를 갖는다. 단계(938)에서, 양쪽 워드 라인들으로부터의 포텐셜 커플링을 보상하는 추가적인 판독 프로세스가 수행되고, 그리고 그 데이터가 보고된다. 일 실시예에서, 단계(938)는 도 15A의 프로세스를 수행하는 것을 포함한다.22 is a flow diagram illustrating one embodiment of a process for performing an additional read operation that takes into account coupling from two neighbors. For example, the process of FIG. 22 may be performed as part of step 818 of FIG. 20. In step 930, both neighboring word lines are read using the read comparison point Vra. If both neighbors are determined to be erased (step 932), then at step 934, data is reported without coupling compensation. If one neighbor is determined to be erased (e.g. one neighbor word line or page has all of the memory cells turned on, while the other neighbor does not have all of the memory cells turned on in response to Vra) In step 950, one neighbor is subject to a read process performed using the read comparison points of Vrb and Vrc (similar to step 910 of FIG. 21). In step 952, an additional read process is performed to compensate for the potential coupling in step 952 (similar to step 912 of FIG. 21). If at step 932 it is determined that no neighbors have been erased, then at step 936 both neighbors have a read process performed using the read comparison points of Vrb and Vrc. In step 938, an additional read process is performed to compensate for potential coupling from both word lines, and the data is reported. In one embodiment, step 938 includes performing the process of FIG. 15A.

본 명세서에서 설명되는 커플링에 대한 포텐셜을 검출하고 그 커플링을 보상하는 기술은 다른 타입의 에러에 대한 포텐셜을 검출하고 (선택에 따라서는) 이러한 에러들을 보상하는 것에 적용가능하다.Techniques for detecting the potential for the coupling described herein and compensating for that coupling are applicable to detecting the potential for other types of errors and (optionally) compensating for these errors.

앞서의 상세한 설명은 예시 및 설명의 목적을 제공된다. 본 발병을 이러한 개시된 형태에 정확히 한정시키려는 것이 아니면 또한 이러한 개시된 형태가 본 발명 전부를 의미하는 것도 아니다. 상기 설명으로부터 많은 수정 및 변형이 가능하다. 설명된 실시예들은 본 발명 및 그 실제 애플리케이션의 원리를 가장 잘 설명하기 위해 선택된 것이며, 그럼으로써 당업자로 하여금 다양한 실시 형태로 본 발명 을 가장 잘 이용하도록 하기 위함이며 그리고 사용하기 원하는 특정 부분에 적합하게 이용하도록 하기 위함이다. 본 발명의 범위는 첨부되는 특허청구범위에 의해 정의된다.The foregoing detailed description serves the purpose of illustration and description. It is also not intended to be exhaustive or to limit the invention to such disclosed forms, and such disclosed forms do not imply all of the invention. Many modifications and variations are possible in light of the above description. The described embodiments are chosen to best explain the principles of the invention and its practical application, thereby enabling those skilled in the art to best utilize the invention in its various embodiments and as appropriate to the specific parts they desire to use. This is for use. The scope of the invention is defined by the appended claims.

Claims (37)

비휘발성 저장소를 동작시키는 방법으로서,A method of operating nonvolatile storage, 저장된 타이밍 정보에 액세스하는 단계와, 여기서 상기 저장된 타이밍 정보는 데이터 세트에 대해 커스터마이징되어 있고, 상기 데이터 세트는 하나 또는 그 이상의 비휘발성 저장 소자들에 저장되며; 그리고Accessing stored timing information, wherein the stored timing information is customized for a data set, the data set being stored in one or more non-volatile storage elements; And 상기 하나 또는 그 이상의 비휘발성 저장 소자들로부터 상기 데이터 세트를 판독하는 단계를 포함하여 구성되고, 상기 판독하는 단계는 상기 타이밍 정보에 근거하여 상기 데이터 세트에서의 하나 또는 그 이상의 포텐셜 에러들을 선택적으로 보상하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.And reading the data set from the one or more nonvolatile storage elements, wherein the reading selectively compensates for one or more potential errors in the data set based on the timing information. A method of operating a non-volatile storage, characterized in that it comprises. 제1항에 있어서,The method of claim 1, 상기 하나 또는 그 이상의 포텐셜 에러들은 상기 하나 또는 그 이상의 비휘발성 저장 소자들과 하나 또는 그 이상의 이웃하는 비휘발성 저장 소자들 간의 포텐셜 커플링으로 인한 것인 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Wherein the one or more potential errors are due to potential coupling between the one or more nonvolatile storage elements and one or more neighboring nonvolatile storage elements. 제1항에 있어서,The method of claim 1, 상기 액세스하는 단계 및 상기 판독하는 단계는,The accessing step and the reading step, 상기 하나 또는 그 이상의 비휘발성 저장 소자들과 관련된 워드 라인에 대한 제 1 시간 데이터를 판독하는 것과, 상기 저장된 타이밍 정보는 상기 제 1 시간 데이터를 포함하고;Reading first time data for a word line associated with the one or more nonvolatile storage elements, and wherein the stored timing information includes the first time data; 이웃하는 비휘발성 저장 소자들과 관련된 워드 라인에 대한 제 2 시간 데이터를 판독하는 것과;Reading second time data for a word line associated with neighboring nonvolatile storage elements; 상기 제 1 시간 데이터를 상기 제 2 시간 데이터에 비교하는 것과; 그리고Comparing the first time data to the second time data; And 상기 비교에 근거하여 에러들에 대한 포텐셜이 있는지 여부를 결정하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Determining whether there is a potential for errors based on the comparison. 제1항에 있어서,The method of claim 1, 상기 하나 또는 그 이상의 포텐셜 에러들을 선택적으로 보상하는 것은,Selectively compensating for the one or more potential errors, 상기 하나 또는 그 이상의 비휘발성 저장 소자들에 대한 이웃하는 비휘발성 저장 소자들을 감지하는 것과;Sensing neighboring nonvolatile storage elements for the one or more nonvolatile storage elements; 상기 이웃하는 비휘발성 저장 소자들로부터 감지된 정보에 근거하여 상기 하나 또는 그 이상의 비휘발성 저장 소자들에 대해 기초를 둔 판독 전압 오프셋들을 결정하는 것과; 그리고Determining read voltage offsets based on the one or more nonvolatile storage elements based on information sensed from the neighboring nonvolatile storage elements; And 상기 오프셋들을 사용하여 상기 하나 또는 그 이상의 저장 소자들을 판독하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Reading the one or more storage elements using the offsets. 제1항에 있어서,The method of claim 1, 상기 액세스하는 단계 및 판독하는 단계는,The step of accessing and reading, 제 1 워드 라인에 연결된 메모리 소자들로부터 데이터를 판독하는 것과, 여기서 상기 메모리 소자들은 상기 하나 또는 그 이상의 비휘발성 저장 소자들 및 상기 타이밍 정보를 저장하는 추가적인 비휘발성 저장 소자들을 포함하고, 상기 타이밍 정보는 제 1 값 및 제 2 값을 포함하고, 상기 제 1 값은 제 1 이웃 세트에 대해 상기 하나 또는 그 이상의 비휘발성 저장 소자들을 프로그래밍하는 타이밍을 나타내고, 상기 제 2 값은 제 2 이웃 세트에 대해 상기 하나 또는 그 이상의 비휘발성 저장 소자들을 프로그래밍하는 타이밍을 나타내며;Reading data from memory elements coupled to a first word line, wherein the memory elements comprise the one or more nonvolatile storage elements and additional nonvolatile storage elements for storing the timing information, the timing information Includes a first value and a second value, wherein the first value indicates a timing for programming the one or more nonvolatile storage elements for a first set of neighbors, and the second value is for a second set of neighbors Indicate timing of programming the one or more nonvolatile storage elements; 만약 상기 하나 또는 그 이상의 비휘발성 저장 소자들이 상기 제 1 이웃 세트 이후에 프로그래밍되었다고 상기 제 1 값이 나타낸다면 아울러 상기 하나 또는 그 이상의 비휘발성 저장 소자들이 상기 제 2 이웃 세트 이후에 프로그래밍되었다고 상기 제 2 값이 나타낸다면, 하나 또는 그 이상의 포텐셜 에러들을 보상하지 않고 상기 데이터를 보고하는 것과; 그리고If the first value indicates that the one or more nonvolatile storage elements have been programmed after the first neighbor set, the second value is that the one or more nonvolatile storage elements have been programmed after the second neighbor set. If the value indicates, reporting the data without compensating for one or more potential errors; And 만약 상기 하나 또는 그 이상의 비휘발성 저장 소자들이 상기 제 1 이웃 세트 이전에 잠재적으로 프로그래밍되었다고 상기 제 1 값이 나타낸다면, 또는 상기 하나 또는 그 이상의 비휘발성 저장 소자들이 상기 제 2 이웃 세트 이전에 잠재적으로 프로그래밍되었다고 상기 제 2 값이 나타낸다면, 하나 또는 그 이상의 포텐셜 에러들을 보상한 이후에 상기 데이터를 보고하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.If the first value indicates that the one or more nonvolatile storage elements are potentially programmed prior to the first neighbor set, or the one or more nonvolatile storage elements are potentially located before the second neighbor set If the second value indicates that it has been programmed, then reporting the data after compensating for one or more potential errors. 제1항에 있어서,The method of claim 1, 상기 하나 또는 그 이상의 비휘발성 저장 소자들에 상기 데이터를 프로그래밍하는 단계를 더 포함하고, 상기 데이터를 프로그래밍하는 단계는 상기 타이밍 정보를 프로그래밍하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Programming the data to the one or more non-volatile storage elements, wherein programming the data comprises programming the timing information. 제6항에 있어서,The method of claim 6, 상기 프로그래밍하는 단계는,The programming step, 이웃하는 비휘발성 저장 소자들의 세트와 관련된 이웃 타이밍 정보를 판독하는 것과; 그리고Reading neighbor timing information associated with a set of neighboring nonvolatile storage elements; And 상기 이웃 타이밍 정보에 근거하여 상기 데이터 세트에 대해 커스터마이징된 상기 타이밍 정보를 결정하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Determining the customized timing information for the data set based on the neighbor timing information. 제7항에 있어서,The method of claim 7, wherein 상기 하나 또는 그 이상의 비휘발성 저장 소자들은 다중-상태 비휘발성 저장 소자들이고;The one or more nonvolatile storage elements are multi-state nonvolatile storage elements; 상기 이웃 타이밍 정보를 판독하는 것은 하나의 기준 전압 레벨에서 판독 동작을 수행하는 것을 포함하고; 그리고Reading the neighbor timing information includes performing a read operation at one reference voltage level; And 상기 타이밍 정보를 결정하는 것은 하나의 기준 전압 레벨에서의 상기 판독 동작에 전체적으로 근거를 두고 있는 것을 특징으로 하는 비휘발성 저장소를 동작 시키는 방법.Determining the timing information is based entirely on the read operation at one reference voltage level. 제6항에 있어서,The method of claim 6, 상기 프로그램하는 단계는,The programming step, 이웃하는 비휘발성 저장 소자들의 제 1 세트와 관련된 제 1 이웃 타이밍 정보를 판독하는 것과;Reading first neighbor timing information associated with a first set of neighboring nonvolatile storage elements; 상기 제 1 이웃 타이밍 정보에 근거하여 제 1 타이밍 값을 결정하는 것과;Determining a first timing value based on the first neighbor timing information; 이웃하는 비휘발성 저장 소자들의 제 2 세트와 관련된 제 2 이웃 타이밍 정보를 판독하는 것과; 그리고Reading second neighbor timing information associated with a second set of neighboring nonvolatile storage elements; And 상기 제 2 이웃 타이밍 정보에 근거하여 제 2 타이밍 값을 결정하는 것을 포함하며, 상기 이웃하는 비휘발성 저장 소자들의 세트와 관련된 상기 타이밍 정보는 상기 제 1 타이밍 값과 상기 제 2 타이밍 값을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Determining a second timing value based on the second neighbor timing information, wherein the timing information associated with the set of neighboring nonvolatile storage elements includes the first timing value and the second timing value. Characterized in that it operates a non-volatile storage. 제9항에 있어서,The method of claim 9, 상기 이웃하는 비휘발성 저장 소자들의 제 1 세트는 제 1 워드 라인에 연결되고;The first set of neighboring nonvolatile storage elements is coupled to a first word line; 상기 하나 또는 그 이상의 비휘발성 저장 소자들은 상기 제 1 워드 라인에 인접하고 있는 제 2 워드 라인에 연결되고;The one or more nonvolatile storage elements are coupled to a second word line adjacent to the first word line; 상기 이웃하는 비휘발성 저장 소자들의 제 2 세트는 상기 제 2 워드 라인에 인접하고 있는 제 3 워드 라인에 연결되고; 그리고The second set of neighboring nonvolatile storage elements is coupled to a third word line adjacent to the second word line; And 상기 하나 또는 그 이상의 포텐셜 에러들은 상기 이웃하는 비휘발성 저장 소자들의 제 1 세트와 상기 하나 또는 그 이상의 비휘발성 저장 소자들의 커플링 및 상기 이웃하는 비휘발성 저장 소자들의 제 2 세트와 상기 하나 또는 그 이상의 비휘발성 저장 소자들의 커플링에 근거를 두고 있는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.The one or more potential errors are coupled to the first set of neighboring nonvolatile storage elements and the one or more nonvolatile storage elements and the second set of neighboring nonvolatile storage elements and the one or more. A method for operating nonvolatile storage, characterized in that it is based on coupling of nonvolatile storage elements. 제1항에 있어서,The method of claim 1, 상기 선택적으로 보상하는 것은,Compensating the selectively, 만약 하나 또는 그 이상의 이웃하는 비휘발성 저장 소자들을 프로그래밍하기 이전에 상기 하나 또는 그 이상의 비휘발성 저장 소자들이 프로그래밍되었다고 상기 타이밍 정보가 나타낸다면, 상기 하나 또는 그 이상의 비휘발성 소자들과 상기 하나 또는 그 이상의 이웃하는 비휘발성 저장 소자들 간의 커플링에 대한 제 1 보상 프로세스를 수행하는 것과, 그리고If the timing information indicates that the one or more nonvolatile storage elements were programmed prior to programming one or more neighboring nonvolatile storage elements, the one or more nonvolatile elements and the one or more Performing a first compensation process for coupling between neighboring nonvolatile storage elements, and 만약 상기 하나 또는 그 이상의 이웃하는 비휘발성 저장 소자들을 프로그래밍하기 이전에 상기 하나 또는 그 이상의 비휘발성 저장 소자들이 프로그래밍되지 않았다고 상기 타이밍 정보가 나타낸다면, 제 1 보상 프로세스를 수행함이 없이 판독하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.If the timing information indicates that the one or more nonvolatile storage elements were not programmed prior to programming the one or more neighboring nonvolatile storage elements, then reading without performing a first compensation process; And operating non-volatile storage. 제1항에 있어서,The method of claim 1, 상기 선택적으로 보상하는 것은 상기 타이밍 정보에 근거하여 전압 오프셋을 사용할지 또는 사용하지 않을지 여부를 선택하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.And wherein said selectively compensating includes selecting whether or not to use a voltage offset based on said timing information. 제1항에 있어서,The method of claim 1, 상기 타이밍 정보는 절대적 시간을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.And the timing information comprises an absolute time. 제1항에 있어서,The method of claim 1, 상기 타이밍 정보는 싸이클 카운트 시간을 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.And the timing information includes a cycle count time. 제1항에 있어서,The method of claim 1, 상기 타이밍 정보는 상기 하나 또는 그 이상의 비휘발성 저장 소자들과 이웃하는 비휘발성 저장 소자들 간의 프로그래밍의 순서의 표시를 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Wherein the timing information includes an indication of the order of programming between the one or more nonvolatile storage elements and neighboring nonvolatile storage elements. 제1항에 있어서,The method of claim 1, 상기 타이밍 정보는 상기 데이터 세트가 소거된 데이터인지, 또는 이웃하는 워드 라인들의 프로그래밍 이후에 프로그래밍된 데이터인지, 또는 이웃하는 워드 라인들의 프로그래밍 이전에 잠재적으로 프로그래밍된 데이터인지 여부를 나타내는 2 비트 코드를 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.The timing information includes a two bit code indicating whether the data set is erased data, data programmed after programming of neighboring word lines, or potentially programmed data prior to programming of neighboring word lines. Operating non-volatile storage. 제1항에 있어서,The method of claim 1, 상기 데이터 세트는 데이터 페이지를 포함하고;The data set comprises a data page; 상기 하나 또는 그 이상의 비휘발성 저장 소자들은 제 1 워드 라인에 연결되고; 그리고The one or more nonvolatile storage elements are coupled to a first word line; And 상기 하나 또는 그 이상의 포텐셜 에러들은, 상기 제 1 워드 라인에 이웃하고 있는 워드 라인들에 연결된 하나 또는 그 이상의 비휘발성 저장 소자들과 상기 하나 또는 그 이상의 비휘발성 저장 소자들 중 하나 또는 그 이상의 비휘발성 저장 소자들 간의 커플링으로 인한 것인 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.The one or more potential errors may include one or more nonvolatile storage elements connected to word lines adjacent to the first word line and one or more of the one or more nonvolatile storage elements. And a coupling between the storage elements. 제1항에 있어서,The method of claim 1, 상기 저장된 타이밍 정보는 상기 데이터 세트를 판독하는 동안 액세스되는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Wherein the stored timing information is accessed while reading the data set. 제1항에 있어서,The method of claim 1, 상기 타이밍 정보는 상기 데이터 세트를 판독하기 이전에 액세스되는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Wherein the timing information is accessed prior to reading the data set. 제1항에 있어서,The method of claim 1, 상기 데이터 세트의 판독 요청을 수신하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Receiving a read request for the data set. 제1항에 있어서,The method of claim 1, 상기 하나 또는 그 이상의 비휘발성 저장 소자들은 NAND 플래시 메모리 소자들인 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.Wherein said one or more non-volatile storage elements are NAND flash memory elements. 제1항에 있어서,The method of claim 1, 상기 하나 또는 그 이상의 비휘발성 저장 소자들은 다중-상태 플래시 메모리 소자들인 것을 특징으로 하는 비휘발성 저장소를 동작시키는 방법.And the one or more nonvolatile storage elements are multi-state flash memory elements. 비휘발성 저장 시스템으로서,Non-volatile storage system, 복수의 비휘발성 저장 소자들과; 그리고A plurality of nonvolatile storage elements; And 상기 비휘발성 저장 소자들과 통신하는 하나 또는 그 이상의 관리 회로들을 포함하여 구성되며, 상기 하나 또는 그 이상의 관리 회로들은 저장된 타이밍 정보에 액세스하고, 상기 저장된 타이밍 정보는 상기 복수의 비휘발성 저장 소자들에 저장된 데이터 세트에 대해 커스터마이징되어 있으며, 그리고 상기 하나 또는 그 이상의 관리 회로들은 상기 복수의 비휘발성 저장 소자들로부터 상기 데이터 세트 를 판독하고, 상기 판독은 상기 타이밍 정보에 근거하여 상기 데이터 세트에서의 하나 또는 그 이상의 포텐셜 에러들을 선택적으로 보상하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.One or more management circuits in communication with the nonvolatile storage elements, wherein the one or more management circuits access stored timing information, and the stored timing information is stored in the plurality of nonvolatile storage elements. Customized to a stored data set, and wherein the one or more management circuits read the data set from the plurality of nonvolatile storage elements, the readout being one or more in the data set based on the timing information. And selectively compensating for further potential errors. 제23항에 있어서,The method of claim 23, wherein 상기 하나 또는 그 이상의 포텐셜 에러들은 상기 하나 또는 그 이상의 비휘발성 저장 소자들과 하나 또는 그 이상의 이웃하는 비휘발성 저장 소자들 간의 포텐셜 커플링으로 인한 것인 것을 특징으로 하는 비휘발성 저장 시스템.And the one or more potential errors are due to potential coupling between the one or more nonvolatile storage elements and one or more neighboring nonvolatile storage elements. 제23항에 있어서,The method of claim 23, wherein 상기 데이터 세트는 상기 복수의 비휘발성 저장 소자들의 서브세트에 저장되고, 상기 서브세트는 이웃하는 비휘발성 저장 소자들을 가지며;The data set is stored in a subset of the plurality of nonvolatile storage elements, the subset having neighboring nonvolatile storage elements; 상기 하나 또는 그 이상의 관리 회로들은 상기 서브세트와 관련되어 있는 워드 라인에 대한 제 1 시간 데이터를 판독하고 아울러 상기 이웃하는 비휘발성 저장 소자들과 관련되어 있는 워드 라인에 대한 제 2 시간 데이터를 판독하고; 그리고The one or more management circuits read first time data for a word line associated with the subset and read second time data for a word line associated with the neighboring nonvolatile storage elements. ; And 상기 하나 또는 그 이상의 관리 회로들은 상기 제 1 시간 데이터를 상기 제 2 시간 데이터에 비교하고 그리고 상기 비교에 근거하여 에러들에 대한 포텐셜이 있는지 여부를 결정하는 것을 특징으로 하는 비휘발성 저장 시스템.The one or more management circuits compare the first time data to the second time data and determine whether there is a potential for errors based on the comparison. 제23항에 있어서,The method of claim 23, wherein 상기 선택적으로 보상하는 것은 전압 오프셋을 사용할지 또는 사용하지 않을지를 선택하는 것을 포함하고 아울러 상기 이웃하는 비휘발성 저장 소자들에 근거하여 판독 프로세스 동안 상기 전압 오프셋을 얼마나 많이 사용할지를 선택하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.Compensating the selectively includes selecting whether or not to use a voltage offset and selecting how much to use the voltage offset during a read process based on the neighboring nonvolatile storage elements. Non-volatile storage system. 제23항에 있어서,The method of claim 23, wherein 상기 데이터 세트는 상기 복수의 비휘발성 저장 소자들의 서브세트에 저장되고, 상기 서브세트는 이웃들의 제 1 세트 및 이웃들의 제 2 세트를 가지며;The data set is stored in a subset of the plurality of nonvolatile storage elements, the subset having a first set of neighbors and a second set of neighbors; 상기 하나 또는 그 이상의 관리 회로들은 제 1 워드 라인에 연결된 메모리 소자들로부터 데이터를 판독하고, 상기 메모리 소자들은 상기 서브세트 및 상기 타이밍 정보를 저장하는 추가적인 비휘발성 저장 소자들을 포함하고, 상기 타이밍 정보는 제 1 값과 제 2 값을 포함하며, 상기 제 1 값은 이웃들의 제 1 세트에 대해 상기 서브세트를 프로그래밍하는 타이밍을 나타내고, 상기 제 2 값은 이웃들의 제 2 세트에 대해 서브세트를 프로그래밍하는 타이밍을 나타내며;The one or more management circuits read data from memory elements connected to a first word line, the memory elements including additional non-volatile storage elements for storing the subset and the timing information, the timing information being A first value and a second value, wherein the first value indicates timing of programming the subset for a first set of neighbors, and the second value indicates programming of the subset for a second set of neighbors. Indicate timing; 상기 하나 또는 그 이상의 관리 회로들은, 만약 상기 제 1 값이 상기 이웃들의 제 1 세트 이후에 서브세트가 프로그래밍되었다고 나타내고 아울러 상기 제 2 값이 상기 이웃들의 제 2 세트 이후에 상기 서브세트가 프로그래밍되었다고 나타낸다면, 하나 또는 그 이상의 포텐셜 에러들을 보상함이 없이 상기 데이터를 보고하며; 그리고The one or more management circuits indicate that the first value indicates that the subset has been programmed after the first set of neighbors and the second value indicates that the subset has been programmed after the second set of neighbors. Report the data without compensating for one or more potential errors; And 상기 하나 또는 그 이상의 관리 회로들, 만약 상기 제 1 값이 상기 이웃들의 제 1 세트 이전에 상기 서브세트가 잠재적으로 프로그래밍되었다고 나타내거나 또는 상기 제 2 값이 상기 이웃들의 제 2 세트 이전에 상기 서브세트가 잠재적으로 프로그래밍되었다고 나타낸다면, 하나 또는 그 이상의 포텐셜 에러들을 보상한 이후에 상기 데이터를 보고하는 것을 특징으로 하는 비휘발성 저장 시스템.The one or more management circuits, if the first value indicates that the subset was potentially programmed before the first set of neighbors or the second value is the subset before the second set of neighbors And if it is potentially programmed, reporting the data after compensating for one or more potential errors. 제23항에 있어서,The method of claim 23, wherein 상기 하나 또는 그 이상의 관리 회로들은 상기 복수의 비휘발성 저장 소자들의 서브세트에 상기 데이터 세트를 프로그래밍하고, 상기 서브세트에 상기 데이터 세트를 프로그래밍하는 것은 상기 타이밍 정보를 프로그래밍하는 것을 포함하고; 그리고The one or more management circuits program the data set to a subset of the plurality of nonvolatile storage elements, and programming the data set to the subset includes programming the timing information; And 상기 데이터 세트를 프로그래밍하는 것은 이웃 타이밍 정보를 판독하는 것과 그리고 상기 이웃 타이밍 정보에 근거하여 상기 데이터 세트에 대해 커스터마이징된 상기 타이밍 정보를 결정하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.Programming the data set comprises reading neighbor timing information and determining the customized timing information for the data set based on the neighbor timing information. 제28항에 있어서,The method of claim 28, 상기 하나 또는 그 이상의 비휘발성 저장 소자들은 다중-상태 비휘발성 저장 소자들이고;The one or more nonvolatile storage elements are multi-state nonvolatile storage elements; 상기 이웃 타이밍 정보를 판독하는 것은 하나의 기준 전압 레벨에서 판독 동작을 수행하는 것을 포함하고; 그리고Reading the neighbor timing information includes performing a read operation at one reference voltage level; And 상기 타이밍 정보를 결정하는 것은 하나의 기준 전압 레벨에서의 상기 판독 동작에 근거하는 것을 특징으로 하는 비휘발성 저장 시스템.Determining the timing information is based on the read operation at one reference voltage level. 제23항에 있어서,The method of claim 23, wherein 상기 데이터 세트는 상기 복수의 비휘발성 저장 소자들의 세브세트에 저장되고, 상기 서브세트는 이웃하는 비휘발성 저장 소자들을 가지며; 그리고The data set is stored in a subset of the plurality of nonvolatile storage elements, the subset having neighboring nonvolatile storage elements; And 상기 선택적으로 보상하는 것은, 만약 상기 이웃하는 비휘발성 저장 소자들을 프로그래밍하기 이전에 상기 서브세트가 프로그래밍되었다고 상기 타이밍 정보가 나타낸다면, 상기 서브세트와 상기 이웃하는 비휘발성 저장 소자들 간의 커플링에 대한 제 1 보상 프로세스를 수행하는 것을 포함하고, 그리고 만약 상기 이웃하는 비휘발성 저장 소자들을 프로그래밍하기 이전에 상기 서브세트가 프로그래밍되지 않았다고 상기 타이밍 정보가 나타낸다면, 제 1 보상 프로세스를 수행함이 없이 판독하는 것을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.The selectively compensating means for coupling between the subset and the neighboring nonvolatile storage elements if the timing information indicates that the subset was programmed prior to programming the neighboring nonvolatile storage elements. Performing a first compensation process, and if the timing information indicates that the subset was not programmed prior to programming the neighboring nonvolatile storage elements, reading without performing the first compensation process. Non-volatile storage system comprising a. 제23항에 있어서,The method of claim 23, wherein 상기 타이밍 정보는 절대적 시간, 상대적 시간, 또는 프로그래밍의 순서의 표시를 포함할 수 있는 것을 특징으로 하는 비휘발성 저장 시스템.And the timing information may comprise an indication of absolute time, relative time, or order of programming. 제23항에 있어서,The method of claim 23, wherein 상기 데이터 세트는 데이터 페이지를 포함하고;The data set comprises a data page; 상기 데이터 세트는 제 1 워드 라인에 연결된 상기 복수의 비휘발성 저장 소자들의 서브세트에 저장되고; 그리고The data set is stored in a subset of the plurality of nonvolatile storage elements coupled to a first word line; And 상기 하나 또는 그 이상의 포텐셜 에러들은, 상기 제 1 워드 라인에 이웃하고 있는 워드 라인들에 연결된 하나 또는 그 이상의 비휘발성 저장 소자들과 상기 서브세트 간의 커플링으로 인한 것인 것을 특징으로 하는 비휘발성 저장 시스템.Wherein said one or more potential errors are due to coupling between said subset and one or more nonvolatile storage elements coupled to word lines adjacent to said first word line. system. 제23항에 있어서,The method of claim 23, wherein 상기 저장된 타이밍 정보는 상기 데이터 세트를 판독하는 동안 동시에 액세스되는 것을 특징으로 하는 비휘발성 저장 시스템.And said stored timing information is accessed simultaneously while reading said data set. 제23항에 있어서,The method of claim 23, wherein 상기 하나 또는 그 이상의 관리 회로들은 상태 머신과 디코더와 감지 회로들과 그리고 제어기 중 하나 또는 그 이상을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.And the one or more management circuits comprise one or more of a state machine, a decoder, a sense circuit and a controller. 제23항에 있어서,The method of claim 23, wherein 상기 복수의 비휘발성 저장 소자들은 NAND 플래시 메모리 디바이스들인 것을 특징으로 하는 비휘발성 저장 시스템.And the plurality of nonvolatile storage elements are NAND flash memory devices. 제23항에 있어서,The method of claim 23, wherein 상기 복수의 비휘발성 저장 소자들은 다중-상태 플래시 메모리 디바이스들인 것을 특징으로 하는 비휘발성 저장 시스템.And the plurality of nonvolatile storage elements are multi-state flash memory devices. 제23항에 있어서,The method of claim 23, wherein 상기 복수의 비휘발성 저장 소자들은 플로팅 게이트들을 포함하는 것을 특징으로 하는 비휘발성 저장 시스템.And the plurality of nonvolatile storage elements comprises floating gates.
KR1020087013971A 2005-11-10 2006-11-08 Reverse coupling effect with timing information KR101016432B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/272,335 2005-11-10
US11/271,241 US7289344B2 (en) 2005-11-10 2005-11-10 Reverse coupling effect with timing information for non-volatile memory
US11/271,241 2005-11-10
US11/272,335 US7289348B2 (en) 2005-11-10 2005-11-10 Reverse coupling effect with timing information

Publications (2)

Publication Number Publication Date
KR20080080529A true KR20080080529A (en) 2008-09-04
KR101016432B1 KR101016432B1 (en) 2011-02-21

Family

ID=37831516

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087013971A KR101016432B1 (en) 2005-11-10 2006-11-08 Reverse coupling effect with timing information

Country Status (5)

Country Link
EP (1) EP1946325A1 (en)
JP (1) JP4938020B2 (en)
KR (1) KR101016432B1 (en)
TW (1) TWI315068B (en)
WO (1) WO2007058846A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8203881B2 (en) 2009-02-17 2012-06-19 Samsung Electronics Co., Ltd. Nonvolatile memory device, method of operating nonvolatile memory device and memory system including nonvolatile memory device
US9058878B2 (en) 2011-01-03 2015-06-16 Hynix Semiconductor Inc. Read methods of semiconductor memory device
KR20200101459A (en) * 2018-03-14 2020-08-27 실리콘 스토리지 테크놀로지 인크 Method and apparatus for programming analog neural memory in deep learning artificial neural network

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7936599B2 (en) * 2007-06-15 2011-05-03 Micron Technology, Inc. Coarse and fine programming in a solid state memory
KR101411976B1 (en) * 2007-07-09 2014-06-27 삼성전자주식회사 Flash memory system and error correction method thereof
US8499229B2 (en) 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash memory
US7633798B2 (en) * 2007-11-21 2009-12-15 Micron Technology, Inc. M+N bit programming and M+L bit read for M bit memory cells
KR101368694B1 (en) * 2008-01-22 2014-03-03 삼성전자주식회사 Apparatus and method of memory programming
WO2010002943A1 (en) * 2008-07-01 2010-01-07 Lsi Corporation Methods and apparatus for interfacing between a flash memory controller and a flash memory array
US7983078B2 (en) * 2008-09-24 2011-07-19 Sandisk Technologies Inc. Data retention of last word line of non-volatile memory arrays

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542407B1 (en) * 2002-01-18 2003-04-01 Sandisk Corporation Techniques of recovering data from memory cells affected by field coupling with adjacent memory cells
JP3913704B2 (en) * 2003-04-22 2007-05-09 株式会社東芝 Nonvolatile semiconductor memory device and electronic device using the same
US7372730B2 (en) * 2004-01-26 2008-05-13 Sandisk Corporation Method of reading NAND memory to compensate for coupling between storage elements

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8203881B2 (en) 2009-02-17 2012-06-19 Samsung Electronics Co., Ltd. Nonvolatile memory device, method of operating nonvolatile memory device and memory system including nonvolatile memory device
US9058878B2 (en) 2011-01-03 2015-06-16 Hynix Semiconductor Inc. Read methods of semiconductor memory device
KR20200101459A (en) * 2018-03-14 2020-08-27 실리콘 스토리지 테크놀로지 인크 Method and apparatus for programming analog neural memory in deep learning artificial neural network

Also Published As

Publication number Publication date
TWI315068B (en) 2009-09-21
JP4938020B2 (en) 2012-05-23
KR101016432B1 (en) 2011-02-21
TW200737207A (en) 2007-10-01
WO2007058846A1 (en) 2007-05-24
JP2009516318A (en) 2009-04-16
EP1946325A1 (en) 2008-07-23

Similar Documents

Publication Publication Date Title
US7289344B2 (en) Reverse coupling effect with timing information for non-volatile memory
EP1886319B1 (en) Starting program voltage shift with cycling of non-volatile memory
US7170788B1 (en) Last-first mode and apparatus for programming of non-volatile memory with reduced program disturb
US7218552B1 (en) Last-first mode and method for programming of non-volatile memory with reduced program disturb
EP1964127B1 (en) Method for programming non-volatile memory with reduced program disturb using modified pass voltages
US7369437B2 (en) System for reading non-volatile storage with efficient setup
KR101016432B1 (en) Reverse coupling effect with timing information
US20070097749A1 (en) Method for programming of multi-state non-volatile memory using smart verify
EP2030205B1 (en) Method for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
EP1946323B1 (en) Method for programming of multi-state non-volatile memory using smart verify
WO2008083131A2 (en) Method for programming with initial programming voltage based on trial
EP2340537A1 (en) Improving data retention of last word line of non-volatile memory arrays
TWI397075B (en) Alternating read mode
US7733701B2 (en) Reading non-volatile storage with efficient setup
US7583531B2 (en) Reverse coupling effect with timing information
EP1943652B1 (en) Last-first mode and method for programming of non-volatile memory of nand type with reduced program disturb
EP1946324B1 (en) Method for controlled programming of non-volatile memory exhibiting bit line coupling
EP2256748A1 (en) Reducing read disturb for non-volatile storage

Legal Events

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 10