US20130070524A1 - On chip dynamic read for non-volatile storage - Google Patents

On chip dynamic read for non-volatile storage Download PDF

Info

Publication number
US20130070524A1
US20130070524A1 US13/239,194 US201113239194A US2013070524A1 US 20130070524 A1 US20130070524 A1 US 20130070524A1 US 201113239194 A US201113239194 A US 201113239194A US 2013070524 A1 US2013070524 A1 US 2013070524A1
Authority
US
United States
Prior art keywords
read
volatile storage
level
storage elements
group
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
US13/239,194
Other versions
US8406053B1 (en
Inventor
Deepanshu Dutta
Dana Lee
Jeffrey Lutze
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Assigned to SANDISK TECHNOLOGIES INC. reassignment SANDISK TECHNOLOGIES INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DUTTA, DEEPANSHU, LEE, DANA, LUTZE, JEFFREY
Priority to US13/239,194 priority Critical patent/US8406053B1/en
Priority to EP12762734.7A priority patent/EP2758963B1/en
Priority to CN201280043430.0A priority patent/CN103843067B/en
Priority to PCT/US2012/055046 priority patent/WO2013043446A1/en
Priority to KR1020147009469A priority patent/KR101961975B1/en
Priority to TW101134816A priority patent/TW201322260A/en
Priority to US13/759,700 priority patent/US8576624B2/en
Publication of US20130070524A1 publication Critical patent/US20130070524A1/en
Publication of US8406053B1 publication Critical patent/US8406053B1/en
Application granted granted Critical
Assigned to SANDISK TECHNOLOGIES LLC reassignment SANDISK TECHNOLOGIES LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SANDISK TECHNOLOGIES INC
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/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/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5644Multilevel memory comprising counting devices

Definitions

  • the present disclosure relates to technology for non-volatile memory.
  • Non-volatile semiconductor memory has become more popular for use in various electronic devices.
  • non-volatile semiconductor memory is used in personal navigation devices, cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices.
  • Electrical Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories.
  • Both EEPROM and flash memory utilize a floating gate that is positioned above and insulated from a channel region in a semiconductor substrate.
  • the floating gate and channel regions are positioned between the source and drain regions.
  • a control gate is provided over and insulated from the floating gate.
  • the threshold voltage of the transistor is controlled by the amount of charge that is retained on the floating gate. That is, the minimum amount of voltage that must be applied to the control gate before the transistor is turned on to permit conduction between its source and drain is controlled by the level of charge on the floating gate.
  • Some EEPROM and flash memory devices have a floating gate that is used to store two ranges of charges and, therefore, the memory element can be programmed/erased between two states, e.g., an erased state and a programmed state.
  • Such a flash memory device is sometimes referred to as a binary flash memory device because each memory element can store one bit of data.
  • a multi-state (also called multi-level) flash memory device is implemented by identifying multiple distinct allowed/valid programmed threshold voltage ranges.
  • Each distinct threshold voltage range corresponds to a predetermined value for the set of data bits encoded in the memory device.
  • each memory element can store two bits of data when the element can be placed in one of four discrete charge bands corresponding to four distinct threshold voltage ranges.
  • a program voltage V PGM applied to the control gate during a program operation is applied as a series of pulses that increase in magnitude over time.
  • the magnitude of the pulses is increased with each successive pulse by a predetermined step size, e.g., 0.2-0.4 V.
  • V PGM can be applied to the control gates of flash memory elements.
  • verify operations are carried out. That is, the programming level of each element of a group of elements being programmed in parallel is read between successive programming pulses to determine whether it is equal to or greater than a verify level to which the element is being programmed.
  • a verification step may be performed for each state of an element to determine whether the element has reached its data-associated verify level. For example, a multi-state memory element capable of storing data in four states may need to perform verify operations for three compare points.
  • V PGM when programming an EEPROM or flash memory device, such as a NAND flash memory device in a NAND string, typically V PGM is applied to the control gate and the bit line is grounded, causing electrons from the channel of a cell or memory element, e.g., storage element, to be injected into the floating gate.
  • a cell or memory element e.g., storage element
  • read reference voltages are applied to a set of storage elements to be read, and a determination is made as to which read reference voltage causes a storage element to become conductive.
  • the read reference voltages are set to allow data states of the storage elements to be distinguished.
  • the read reference voltages are typically fixed and do not account for the fact that the threshold voltage distribution of a set of storage elements can change, e.g., due to factors such as charge leakage, temperature changes, number of programming cycles and the like. As a result, read errors can occur.
  • new read reference voltages can be determined “dynamically”.
  • some conventional approaches for dynamically determining new read levels need to construct the threshold voltage distribution for each state.
  • this requires substantial computations, which may be time consuming. Also, these computations may need to be performed in a memory controller.
  • ECC error correction codes
  • FIG. 1 is a top view of a NAND string.
  • FIG. 2 is an equivalent circuit diagram of the NAND string.
  • FIG. 3 is a block diagram of a non-volatile memory system.
  • FIG. 4 is a block diagram depicting one embodiment of a memory array.
  • FIG. 5 is a block diagram depicting one embodiment of a sense block.
  • FIG. 6A depicts an example set of Vt distributions.
  • FIG. 6B depicts an example set of Vt distributions.
  • FIG. 7 shows threshold voltage distributions for two data states.
  • FIG. 8 is a flowchart of one embodiment of a process of dynamically determining a read level on-chip.
  • FIG. 9 depicts one embodiment of read levels and associated mis-compares.
  • FIG. 10A is a flowchart of one embodiment of a process of dynamically determining a read level on a memory die.
  • FIG. 10B depicts one embodiment of data latches.
  • FIG. 11A depicts a graph of a possible relationship between mis-compares and misreads for one embodiment.
  • FIG. 11B depicts a graph indicating a correlation between misreads and mis-compares for one embodiment.
  • FIG. 12 is a flow chart describing one embodiment of a process for performing a read operation.
  • FIG. 13A describes a flowchart of one embodiment of a process of dynamically determining read levels.
  • FIG. 13B describes a flowchart of one embodiment of a process of dynamically determining read levels.
  • FIG. 14A is a flowchart of one embodiment of a process of using dynamically determined read levels from one word line for another word line.
  • FIG. 14B is a flowchart of one embodiment of a process of using dynamically determined read levels from one block in another.
  • FIG. 15 is a flowchart of one embodiment of a process of sensing for two different threshold voltages using a single word line voltage.
  • FIG. 16 is a flowchart of one embodiment of a process of reading using source-follower sensing.
  • FIG. 17 depicts a flowchart of one embodiment of a process for dynamically determining read levels.
  • Dynamically determining read levels on chip e.g., memory die
  • an initial read of non-volatile storage elements is performed at a default read level. Note that this read may determine whether each memory cell has a threshold voltage above or below the read level. Results of the read may be stored in a first set of data latches on the memory die. Then, the read level may be adjusted slightly prior to reading again. Results of the second read may be stored in a second set of data latches. Then, the results in the two sets of data latches may be compared, on a memory cell by memory cell basis.
  • the comparison may determine which memory cells showed a different result for the two reads (e.g., “mis-compares”). If the number of mis-compares is not less than a pre-determined threshold, then another read may be performed at another read level. When the number of mis-compares is less than the pre-determined threshold, the results of the last read may be used as final read results. Moreover, the last read level that was used may be used as a read level for further read operations. Thus, the read level may be dynamically determined. Note that the read level may be dynamically determined on the memory die.
  • one embodiment does not transfer data off the memory die to an external controller in order to dynamically establish the read levels. Moreover, one embodiment does not perform an ECC algorithm to dynamically establish the read levels. Therefore, time is saved by not having to transfer data off from the memory die in order to find suitable read levels. Moreover, time is saved by not having to perform an ECC algorithm in order to find suitable read levels.
  • dynamically determining read levels on chip is performed using a NAND memory array.
  • NAND is an example of a flash memory system which includes arranging multiple transistors in series, sandwiched between two select gates. The transistors in series and the select gates are referred to as a NAND string.
  • FIG. 1 is a top view showing one NAND string.
  • FIG. 2 is an equivalent circuit thereof.
  • the NAND string depicted in FIGS. 1 and 2 includes four transistors 100 , 102 , 104 and 106 in series and sandwiched between a first (or drain side) select gate 120 and a second (or source side) select gate 122 .
  • Select gate 120 connects the NAND string to a bit line via bit line contact 126 .
  • Select gate 122 connects the NAND string to source line 128 .
  • Select gate 120 is controlled by applying the appropriate voltages to select line SGD.
  • Select gate 122 is controlled by applying the appropriate voltages to select line SGS.
  • Each of the transistors 100 , 102 , 104 and 106 has a control gate and a floating gate.
  • transistor 100 has control gate 100 CG and floating gate 100 FG.
  • Transistor 102 includes control gate 102 CG and a floating gate 102 FG.
  • Transistor 104 includes control gate 104 CG and floating gate 104 FG.
  • Transistor 106 includes a control gate 106 CG and a floating gate 106 FG.
  • Control gate 100 CG is connected to word line WL 3
  • control gate 102 CG is connected to word line WL 2
  • control gate 104 CG is connected to word line WL 1
  • control gate 106 CG is connected to word line WL 0 .
  • FIGS. 1 and 2 show four memory cells in the NAND string, the use of four transistors is only provided as an example.
  • a NAND string can have fewer than four memory cells or more than four memory cells.
  • some NAND strings will include eight memory cells, 16 memory cells, 32 memory cells, 64 memory cells, 128 memory cells, etc. The discussion herein is not limited to any particular number of memory cells in a NAND string.
  • a typical architecture for a flash memory system using a NAND structure will include several NAND strings.
  • Each NAND string is connected to the source line by its source select gate controlled by select line SGS and connected to its associated bit line by its drain select gate controlled by select line SGD.
  • select line SGS Source select gate controlled by select line SGS
  • select line SGD Drain select gate controlled by select line SGD
  • Each bit line and the respective NAND string(s) that are connected to that bit line via a bit line contact comprise the columns of the array of memory cells.
  • Bit lines are shared with multiple NAND strings.
  • the bit line runs on top of the NAND strings in a direction perpendicular to the word lines and is connected to one or more sense amplifiers.
  • Each memory cell can store data (analog or digital).
  • the range of possible threshold voltages of the memory cell is divided into two ranges which are assigned logical data “1” and “0.”
  • the threshold voltage is negative after the memory cell is erased, and defined as logic “1.”
  • the threshold voltage after programming is positive and defined as logic “0.”
  • the threshold voltage is negative and a read is attempted by applying 0 volts to the control gate, the memory cell will turn on to indicate logic one is being stored.
  • the threshold voltage is positive and a read operation is attempted by applying 0 volts to the control gate, the memory cell will not turn on, which indicates that logic zero is stored.
  • the range of possible threshold voltages is divided into the number of levels of data. For example, if four levels of information is stored (two bits of data), there will 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 an erase operation is negative and defined as “11”. Positive threshold voltages are used for the data states of “10”, “01”, and “00.” If eight levels of information (or states) are stored (e.g. for three bits of data), there will be eight threshold voltage ranges assigned to the data values “000”, “001”, “010”, “011” “100”, “101”, “110” and “111.”
  • the specific relationship between the data programmed into the memory cell and the threshold voltage levels of the cell depends upon the data encoding scheme adopted for the cells.
  • U.S. Pat. No. 6,222,762 and U.S. Patent Application Publication No. 2004/0255090 both of which are incorporated herein by reference in their entirety, describe various data encoding schemes for multi-state flash memory cells.
  • data values are assigned to the threshold voltage ranges using a Gray code assignment so that if the threshold voltage of a floating gate erroneously shifts to its neighboring physical state, only one bit will be affected.
  • the data encoding scheme can be changed for different word lines, the data encoding scheme can be changed over time, or the data bits for random word lines may be inverted or otherwise randomized to reduce data pattern sensitivity and even wear on the memory cells.
  • non-volatile storage devices in addition to NAND flash memory, can also be used.
  • a so called TANOS structure consisting of a stacked layer of TaN—Al 2 O 3 —SiN—SiO 2 on a silicon substrate
  • TANOS structure consisting of a stacked layer of TaN—Al 2 O 3 —SiN—SiO 2 on a silicon substrate
  • Another type of memory cell useful in flash EEPROM systems utilizes a non-conductive dielectric material in place of a conductive floating gate to store charge in a non-volatile manner.
  • Such a cell is described in an article by Chan et al., “A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device,” IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93-95.
  • a triple layer dielectric formed of silicon oxide, silicon nitride and silicon oxide (“ONO”) is sandwiched between a conductive control gate and a surface of a semi-conductive substrate above the memory cell channel.
  • the cell is programmed by injecting electrons from the cell channel into the nitride, where they are trapped and stored in a limited region. This stored charge then changes the threshold voltage of a portion of the channel of the cell in a manner that is detectable.
  • the memory cell is erased by injecting hot holes into the nitride. See also Nozaki et al., “A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application,” IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, April 1991, pp. 497-501, which describes a similar memory cell in a split-gate configuration where a doped polysilicon gate extends over a portion of the memory cell channel to form a separate select transistor.
  • the programming techniques mentioned in section 1.2 of “Nonvolatile Semiconductor Memory Technology,” edited by William D. Brown and Joe E. Brewer, IEEE Press, 1998, incorporated herein by reference, are also described in that section to be applicable to dielectric charge-trapping devices. Other types of memory devices can also be used.
  • FIG. 3 illustrates a non-volatile storage device 210 that may include one or more memory die or chips 212 .
  • Memory die 212 includes an array (two-dimensional or three dimensional) of memory cells 200 , control circuitry 220 , and read/write circuits 230 A and 230 B.
  • access to the memory array 200 by the various peripheral circuits is implemented in a symmetric fashion, on opposite sides of the array, so that the densities of access lines and circuitry on each side are reduced by half.
  • the read/write circuits 230 A and 230 B include multiple sense blocks 300 which allow a page of memory cells to be read or programmed in parallel.
  • the memory array 200 is addressable by word lines via row decoders 240 A and 240 B and by bit lines via column decoders 242 A and 242 B.
  • a controller 244 is included in the same memory device 210 (e.g., a removable storage card or package) as the one or more memory die 212 . Commands and data are transferred between the host and controller 244 via lines 232 and between the controller and the one or more memory die 212 via lines 234 .
  • One implementation can include multiple chips 212 .
  • Control circuitry 220 cooperates with the read/write circuits 230 A and 230 B to perform memory operations on the memory array 200 .
  • the control circuitry 220 includes a state machine 222 , an on-chip address decoder 224 and a power control module 226 .
  • the state machine 222 provides chip-level control of memory operations.
  • the on-chip address decoder 224 provides an address interface to convert between the address that is used by the host or a memory controller to the hardware address used by the decoders 240 A, 240 B, 242 A, and 242 B.
  • the power control module 226 controls the power and voltages supplied to the word lines and bit lines during memory operations.
  • power control module 226 includes one or more charge pumps that can create voltages larger than the supply voltage.
  • control circuitry 220 power control circuit 226 , decoder circuit 224 , state machine circuit 222 , decoder circuit 242 A, decoder circuit 242 B, decoder circuit 240 A, decoder circuit 240 B, read/write circuits 230 A, read/write circuits 230 B, and/or controller 244 can be referred to as one or more managing circuits.
  • FIG. 4 depicts an exemplary structure of memory cell array 200 .
  • the array of memory cells is divided into M blocks of memory cells.
  • the block is the unit of erase. That is, each block contains the minimum number of memory cells that are erased together.
  • Each block is typically divided into a number of pages.
  • a page is a unit of programming.
  • 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) that has been calculated from the user data of the sector.
  • ECC Error Correction Code
  • a portion of the controller calculates the ECC when data is being programmed into the array, and also checks it when data is being read from the array.
  • the controller 244 is able to correct a certain number of misreads, based on the ECC.
  • the ECCs and/or other overhead data are stored in different pages, or even different blocks, than the user data to which they pertain.
  • a sector of user data is typically 512 bytes, corresponding to the size of a sector in magnetic disk drives.
  • a large number of pages form a block, anywhere from 8 pages, for example, up to 32, 64, 128 or more pages. Different sized blocks and arrangements can also be used.
  • bit lines are divided into odd bit lines and even bit lines.
  • odd/even bit line architecture memory cells along a common word line and connected to the odd bit lines are programmed at one time, while memory cells along a common word line and connected to even bit lines are programmed at another time.
  • FIG. 4 shows more details of block i of memory array 200 .
  • Block i includes X+1 bit lines and X+1 NAND strings.
  • Block i also includes 64 data word lines (WL 0 -WL 63 ), 2 dummy word lines (WL_d 0 and WL_d 1 ), a drain side select line (SGD) and a source side select line (SGS).
  • One terminal of each NAND string is connected to a corresponding bit line via a drain select gate (connected to select line SGD), and another terminal is connected to the source line via a source select gate (connected to select line SGS). Because there are sixty four data word lines and two dummy word lines, each NAND string includes sixty four data memory cells and two dummy memory cells.
  • the NAND strings can have more or fewer than 64 data memory cells and two dummy memory cells.
  • Data memory cells can store user or system data.
  • Dummy memory cells are typically not used to store user or system data. Some embodiments do not include dummy memory cells.
  • FIG. 5 is a block diagram of an individual sense block 300 partitioned into a core portion, referred to as a sense module 480 , and a common portion 490 .
  • a sense module 480 for each bit line and one common portion 490 for a set of multiple sense modules 480 .
  • a sense block will include one common portion 490 and eight sense modules 480 .
  • Each of the sense modules in a group will communicate with the associated common portion via a data bus 472 .
  • U.S. Patent Application Publication 2006/0140007 which is incorporated herein by reference in its entirety.
  • Sense module 480 comprises sense circuitry 470 that determines whether a conduction current in a connected bit line is above or below a predetermined threshold level.
  • sense module 480 includes a circuit commonly referred to as a sense amplifier.
  • Sense module 480 also includes a bit line latch 482 that is used to set a voltage condition on the connected bit line. For example, a predetermined state latched in bit line latch 482 will result in the connected bit line being pulled to a state designating program inhibit (e.g., Vdd).
  • Common portion 490 comprises a processor 492 , a set of data latches 494 and an I/O Interface 496 coupled between the set of data latches 494 and data bus 420 .
  • Processor 492 performs computations. For example, one of its functions is to determine the data stored in the sensed memory cell and store the determined data in the set of data latches.
  • the set of data latches 494 is used to store data bits determined by processor 492 during a read operation. In some embodiments, the data latches 494 are used to store first and second read results, as a part of a process that dynamically determines read levels.
  • Data latches 494 may also used to store data bits imported from the data bus 420 during a program operation. The imported data bits represent write data meant to be programmed into the memory.
  • I/O interface 496 provides an interface between data latches 494 and the data bus 420 .
  • bit line latch 482 serves double duty, both as a latch for latching the output of the sense module 480 and also as a bit line latch as described above.
  • each processor 492 will include an output line (not depicted in FIG. 5 ) such that each of the output lines is wired-OR'd together.
  • the output lines are inverted prior to being connected to the wired-OR line. This configuration enables a quick determination during the program verification process of when the programming process has completed because the state machine receiving the wired-OR line can determine when all bits being programmed have reached the desired level. For example, when each bit has reached its desired level, a logic zero for that bit will be sent to the wired-OR line (or a data one is inverted). When all bits output a data 0 (or a data one inverted), then the state machine knows to terminate the programming process.
  • the state machine may (in some embodiments) need to read the wired-OR line eight times, or logic is added to processor 492 to accumulate the results of the associated bit lines such that the state machine need only read the wired-OR line one time.
  • the data to be programmed is stored in the set of data latches 494 from the data bus 420 .
  • the program operation under the control of the state machine, comprises a series of programming voltage pulses (with increasing magnitudes) applied to the control gates of the addressed memory cells. Each programming pulse is followed by a verify process to determine if the memory cell has been programmed to the desired state.
  • Processor 492 monitors the verified memory state relative to the desired memory state. When the two are in agreement, processor 492 sets the bit line latch 482 so as to cause the bit line to be pulled to a state designating program inhibit. This inhibits the cell coupled to the bit line from further programming even if it is subjected to programming pulses on its control gate. In other embodiments the processor initially loads the bit line latch 482 and the sense circuitry sets it to an inhibit value during the verify process.
  • Data latch stack 494 contains a stack of data latches corresponding to the sense module. In one embodiment, there are 3-5 (or another number) data latches per sense module 480 . In one embodiment, the latches are each one bit. In some implementations (but not required), the data latches are implemented as a shift register so that the parallel data stored therein is converted to serial data for data bus 420 , and vice versa. In one embodiment, all the data latches corresponding to the read/write block of m memory cells can be linked together to form a block shift register so that a block of data can be input or output by serial transfer. In particular, the bank of read/write modules is adapted so that each of its set of data latches will shift data in to or out of the data bus in sequence as if they are part of a shift register for the entire read/write block.
  • the threshold voltages of the memory cells should be within one or more distributions of threshold voltages for programmed memory cells or within a distribution of threshold voltages for erased memory cells, as appropriate.
  • FIG. 6A illustrates example Vt distributions corresponding to data states for the memory cell array when each memory cell stores three bits of data. Other embodiment, however, may use more or fewer than three bits of data per memory cell.
  • FIG. 6A shows eight Vt distributions corresponding to an Erase state and programmed states A-G.
  • the threshold voltages in the Erase state are negative and the threshold voltages in the programmed states A-G are positive.
  • the threshold voltages in one or more of programmed states A-G may be negative. Some or all of the threshold voltages in the Erase state could be positive.
  • FIG. 6A shows read reference voltage VrA between the erase state and the A-state, and VrB between the A-state and B-state.
  • FIG. 6A shows VvA for the A-state and VvB for the B-state.
  • FIG. 6B illustrates that Vt distributions can partially overlap since the error correction algorithm can handle a certain percentage of cells that are in error. Note that in some embodiments, at one point in time the threshold voltage distribution may resemble FIG. 6A and at another time the threshold voltage distributions may overlap, as in FIG. 6B . For example, just after programming, the threshold voltage distribution may resemble FIG. 6A . However, over time, the threshold voltages of memory cells may shift, such that there may be overlap.
  • FIG. 7 shows threshold voltage distributions for two of the data states (F-state and G-state), each for two points in time.
  • Curves 702 and 704 show Vt distributions corresponding to just after the memory cells were programmed.
  • Curves 712 and 714 show Vt distributions corresponding to some time after the memory cells were programmed.
  • the threshold voltages may shift for a number of reasons. One possible reason is that the memory device may have rested without use for a period of time, resulting in charge loss from the memory cells, referred to as data retention loss. If the memory device was in a hot environment, such as an automobile, data retention may be a greater problem.
  • Curve 714 shows a possible shift for the threshold distribution of the G-state.
  • the threshold voltages have in general shifted downward, due to charge loss from the memory cell.
  • there has been some spreading of the range of the threshold voltages due to cell-to-cell variation in the amount of threshold shift down.
  • Curve 712 shows a possible shift for the threshold distribution of the F-state. Similar to the G-state, the threshold voltages for the F-state have in general shifted downward. Also, there has been some spreading of the range of the threshold voltages. Note that other shifts in the threshold voltages are possible.
  • Voltage level VrG′ represents a read level that is suitable for use just after programming.
  • Voltage level VrG′′ represents a read level that is suitable for use after the threshold voltage distributions have shifted to curves 712 and 714 .
  • read point VrG′′ corresponds to the valley of curves 712 and 714 (where the curves first intersect), although a different read level might be used.
  • box 711 represents memory cells with threshold voltages on curve 714 that would be misread if read level VrG′ were to be used. Using VrG′ would not result in misreads of memory cells with threshold voltages on curve 712 . However, as can be seen there are a substantial number of memory cells on curve 714 . Note that the y-axis may be on a log scale.
  • Error correction algorithms are able to handle some misreads. However, if the number of misreads is too high then the data cannot be successfully read. For example, if the number of misreads is greater than the error correction ability of one embodiment of controller 244 , then the data cannot be accurately read.
  • the read level is dynamically adjusted to minimize the misreads. However, it is not required that the misreads be minimized. In one embodiment, the read level is dynamically adjusted such that the misreads are sufficiently low such that they may be corrected using ECC. In some cases, a relatively strong ECC may be available, in which case a higher number of misreads may be tolerable.
  • Read levels may be dynamically determined for any unit (die, block, word line, etc.). Note that even for memory arrays that are freshly programmed, there may be differences between dies, blocks, word lines, etc., which may lead to differences between the threshold distributions. In other words, it may not be that case that one set of read levels are suitable for all dies, blocks, word lines, etc. Therefore, dynamically determining read levels may be used for freshly programmed memory. This may allow for optimizing read levels for dies, blocks, word lines, etc.
  • FIG. 8 is a flowchart of one embodiment of a process 800 of dynamically determining a read level on-chip.
  • process 800 describes a general flow and that the steps may be performed in a different order.
  • a step may comprise sub-steps. In some cases, after performing one or more sub-steps of one step, a different step or steps (or portions thereof) may be performed. Then, or more sub-steps of the first step may be performed.
  • a group of non-volatile storage elements on a memory die 212 are read at a first set of read levels.
  • each successive read may be at a lower voltage.
  • each successive read may be a higher voltage.
  • two reads are performed at the same read level; then, two more reads may be performed at another read level, and so on.
  • the set of read reference levels may be near an expected read level for distinguishing between two data states. Referring briefly to FIG. 9 , an example set of read levels, and associated mis-compares is depicted. Note that step 802 might include reading at only some of the read levels in the set.
  • results of the reads are stored on the memory die 212 .
  • the results are stored in a set of data latches. These data latches may be in the data latches 494 in a sense block 300 ; however, data latches could be located elsewhere on the memory die 212 .
  • a count of how many of the non-volatile storage elements showed different results between the two most recent of the successive reads is determined. For example, referring again to FIG. 9 , a mis-compare count is depicted below each pair of neighbor read levels. The mis-compare count for the first two reads is determined by comparing the results of the initial read level and the second read level. Each memory cell that shows a different result between the initial read and the second read is considered a mis-compare. The mis-compare count can be quite high between the initial read level and the second read level. In this example, the mis-compare count drops as the read levels approach a suitable read level. The mis-compare count may be lowest at about the valley between the threshold voltage distributions.
  • the mis-compare count may go up, as indicated in FIG. 9 . However, it is not required to perform all of these reads. In fact, it is not required to determine a minimum mis-compare count, as will be explained more fully below.
  • a read level for distinguishing between a pair of data states is determined based on a read level when the mis-compare count reaches a pre-determined criterion.
  • the read level is set to the last read level used in step 802 .
  • the pair of data states may be adjacent data states.
  • the read level may be for distinguishing between the F-state and the G-state. Note that process 800 may be used for dynamically determining a read level for distinguishing between other pairs of data states.
  • the pre-determined criterion in step 808 is based on error correction capabilities. For example, depending on factors such as how many memory cells are used for storing error correction codes, the controller 244 may be able to correct some number of misreads. The number of mis-compares that are allowed may be based on the ability of the controller to correct read errors. In one embodiment, the number of mis-compares that are allowed is such that the controller 244 should be able to correct read errors if the last read level used in step 802 is used.
  • the pre-determined criterion in step 808 is that the number of mis-compares reaches a minimum.
  • the count of mis-compares from one pair of reads may be compared with the count of mis-compares from the next pair of reads. Once the count of mis-compares is found to be higher than the previous count of mis-compares, a minimum has been found.
  • the next read levels are at lower voltages.
  • the initial read may have been a default level, such as VrG′ in FIG. 7 .
  • An assumption may have been made that for these data states that the threshold voltages are expected to shift down. However, for other data states, or other devices, it might be expected that the threshold voltages would shift up. Therefore, the read levels used in step 802 might increase. For some devices, or states, it may be difficult to predict which way the threshold voltages might shift. In this case, step 802 might first read with successively lower voltages. If the mis-compare count goes up instead of down, then the read levels may be increased.
  • FIG. 10A is a flowchart of one embodiment of a process 1000 of dynamically determining a read level on a memory die 212 .
  • Process 1000 may be used to determine a read level for distinguishing between two data states. If desired, process 1000 may be repeated to determine a read level for distinguishing between other pairs of data states. However, as will be discussed below, results of dynamically determining one read level may be used to determine read levels for distinguishing between other pairs of data states
  • Process 1000 is one embodiment of process 800 . For the sake of discussion, an example of determining a read level for distinguishing between an F-state and G-state will be used.
  • step 1001 a counter for the maximum number of reads that are permitted is initialized to zero.
  • step 1002 reading non-volatile storage at an initial level is performed.
  • the initial level may be the level that was most recently determined using process 1000 or another process. It could also be a default level that was set at the factory.
  • Step 1002 may be one sub-step for one embodiment of step 802 of FIG. 8 .
  • results from the initial read are transferred to a first set of data latches.
  • the data latches are on the memory die 212 in one embodiment.
  • An example is the data latches 494 in the sense block 300 .
  • the read level is shifted.
  • the read level is shifted in a direction that threshold voltages are expected to shift over time.
  • the read level may be shifted down or up.
  • step 1006 may be repeated several times during process 1000 .
  • the read level is shifted by the same amount each time. For example, the read level might be shifted by 50 mV each time. However, the magnitude of the voltage shift could be different from one iteration of step 1006 to the next.
  • the direction of the shift may change. For example, initially the shift might be to lower voltages. However, if it does not appear that progress is being made to locate a suitable read level, then the read level might be shifted upwards.
  • the amount of shift is a function of the mis-compare count.
  • the shift may be large when the mis-compare count is high, and as the mis-compare count reduces, the shift in read level is also reduced.
  • the mis-compare count suggests how far the read level was from the valley between two threshold voltage distributions. When the mis-compares are high, it is likely that the read level is away from the valley position, which means a larger shift can be made during the next iteration, without skipping over the valley position.
  • step 1008 the memory cells are read at the new read level.
  • step 1010 results of the read of step 1008 are transferred to a second set of data latches.
  • these latches are on the memory die 212 .
  • the data latches are in data latches 494 in sense block 300 .
  • step 1012 the results in the first and second sets of data latches are compared.
  • an XOR logic operation is performed between the first and second data latches, on a memory cell by memory cell basis. Therefore, if the read results for a given memory cell were the same for the two reads, then the comparison produces a “0,” in this embodiment. However, if the read results for a given memory cell were different for the two reads, then the comparison produces a “1,” in this embodiment.
  • a comparison result of “1” may be referred to herein as a “mis-compare.” FIG.
  • FIG. 10B depicts one embodiment of latches 494 having a Latch 1 , Latch 2 , and an XOR circuit for determining the exclusive OR between the results in the two latches.
  • the XOR circuit may output a mis-compare result. There may be one such latch 494 for each memory cell being read.
  • step 1014 the number of mis-compares for the memory cells being read, are totaled and compared to a threshold number.
  • the threshold number is based on the error correction capabilities of the controller. Further details are discussed below.
  • the number of mis-compares that are output by the XOR of FIG. 10B can be summed on the memory die 212 . In one embodiment, once the total reaches some limit (e.g., 32, 64, etc.) counting stops.
  • mis-compares are greater than the threshold, this may indicate that a suitable read level has not yet been found. If so, the count of the MaxReads is incremented by one, in step 1015 . Then, MaxReads is compared to a limit in step 1016 . Note that in some cases, the number of mis-compares might not reach a level below the threshold (step 1014 ) within the maximum number of iterations allowed. This may indicate that the data is unreadable. However, it may also be that other techniques may be used to read the data. Process 1000 may end if the number of mis-compares fails to become lower than the threshold despite attempts to read at different read levels.
  • the process 1000 ends by using the results for the read level corresponding to the lowest number of mis-compares even if that number is not lower than the threshold. Any read errors may well be correctable, especially if the threshold was well within the margin of correctable errors.
  • process 1000 may return to step 1006 to shift the read level.
  • the results stored in the second set of data latches may be transferred to the first set of data latches.
  • the second set of data latches is free to store the latest read results.
  • the roles of the data latches are reversed.
  • the next read results may be stored in the first set of data latches (rather than the second set as indicated in step 1010 ).
  • step 1014 yes
  • the threshold number is step 1014 may be set at a significantly lower level than a borderline case for correcting errors. For example, it might be that the error correction could correct 100 misreads. However, the threshold might be set such that there are likely to be fewer than 40 misreads. Note that the number of mis-compares, in general, is not the same as the number of misreads. However, in some embodiments, there is a relationship or correlation between the number of mis-compares and the number of misreads.
  • the results in the second set of latches may be used as actual read results. In one embodiment, these results are shifted out of the data latches 494 for further processing. Note that these results indicate whether each memory cell has a threshold voltage above or below a given read level. In other words, the results may distinguish between two data states. For example, the results may distinguish between the F-state and the G-state. Reads at other read levels (e.g., VrA, VrB, etc.) may be performed in order to determine the data state of each memory cell.
  • VrA e.g., VrA, VrB, etc.
  • final read level may be stored for later use. For example, the next time that this group of memory cells are to be read, the final read level could be used as the initial read level in step 1002 .
  • the final read level may be stored in one of the temporary registers on the memory, or else it may be stored externally in the controller's non-volatile memory. However, note that it is not required that process 1000 be used each time that the memory cells are read. In one embodiment, the memory cells are simply read using the final read level. Thus, in one embodiment, the final read level is stored, in step 1020 .
  • the read level may be determined without sending read results off the memory die 212 . For example, there is no need to send the read results to an external controller to perform complex calculations.
  • the read level may be found without applying ECC corrections to the results. However, note that ECC corrections may be applied after the read level is dynamically found.
  • FIG. 11A depicts a graph of a possible relationship between mis-compares and misreads (also referred to as fail bit count) for one embodiment.
  • the mis-compares and misreads are plotted versus read voltage level.
  • the mis-compares may be the mis-compares from process 800 or process 1000 , as examples.
  • the read level for a mis-compare point may be the most recent read level that was used, among the pair of read levels for which the mis-compare count was determined.
  • the scale for the mis-compares is in arbitrary units. Likewise, the scale for the misreads is in arbitrary units.
  • mis-compares may correlate to misreads in the graph of FIG. 11A .
  • FIG. 11B depicts a graph indicating a correlation 1150 between misreads and mis-compares for one embodiment.
  • the threshold is set to some specific number (e.g., 20), then this may correlate to a certain number of misreads. Therefore, the threshold may be set to correlate to some tolerable number of misreads. Note that the number of misreads may be well below the ECC capability of the controller 244 on the memory device.
  • FIG. 12 is a flow chart describing one embodiment of a process 1200 for performing a read operation.
  • FIG. 12 describes a general read process without describing how dynamic read levels are established.
  • process 1200 reads with read levels VrA, VrB, and VrC are used.
  • process 1200 describes reading memory cells that store two-bits per cell.
  • dynamic read may be used to determine voltage levels for one or more of VrA, VrB, and VrC.
  • the process of FIG. 12 can be performed for a page that encompasses all bit lines of a block, only odd bit lines of a block, only even bit lines of a block, or other subsets of bit lines of a block.
  • read reference voltage Vra is applied to the appropriate word line associated with the target page.
  • the bit lines associated with the page are sensed to determine whether the addressed memory cells turn on or do not turn on based on the application of Vra to their control gates. Bit lines that conduct indicate that the memory cells were turned on; therefore, the threshold voltages of those memory cells are below Vra (e.g., in the Erase state).
  • the result of the sensing for the bit lines is stored in the appropriate latches for those bit lines.
  • step 1246 read reference voltage Vrb is applied to the word lines associated with the page being read.
  • step 1248 the bit lines are sensed as described above.
  • step 1250 the results are stored in the appropriate latches for the bit lines.
  • step 1252 read reference voltage Vrc is applied to the word lines associated with the page.
  • step 1254 the bit lines are sensed to determine which memory cells turn on, as described above.
  • step 1256 the results from the sensing step are stored in the appropriate latches for the bit lines.
  • step 1258 the data values for each bit line are determined. For example, if a memory cell conducts at Vra, then the memory cell is in the Erased state. If a memory cell conducts at Vrb and Vrc but not at Vra, then the memory cell is in state A. If the memory cell conducts at Vrc but not at Vra and Vrb, then the memory cell is in state B. If the memory cell does not conduct at Vra, Vrb or Vrc, then the memory cell is in state C. In other embodiments, sensing the various levels (Vra, Vrb, and Vrc) may occur in different orders.
  • FIG. 13A describes a flowchart of one embodiment of a process 1300 of dynamically determining read levels.
  • Process 1300 describes one embodiment of determining read levels dynamically for use in the read operation of FIG. 12 .
  • Process 1300 may be modified for memory cells that store more than two bits per memory cell.
  • a process such as process 800 or 1000 may be used to dynamically determine a read level (e.g., VrA) for distinguishing between two states. Then, initial values for subsequent read levels (e.g., VrB, VrC) may be determined based on the first one. For example, initial values for VrB and VrC can be determined for use in a process such as 800 or 1000 .
  • the notation used in describing FIG. 13A will be as follows. A single prime will be used to refer to the read level that was used for the last read. A double prime will refer to the read level that is dynamically determined at this time. For example, VrA′ refers to the read level for the last read operation, whereas VrA′′ refers to the new read level to be dynamically determined. If no primes are used, this indicates a general reference to the read level.
  • a read level for VrA′′ is dynamically determined.
  • process 800 is used.
  • process 1000 is used. Note that the process of determining VrA′′ may accomplish steps 1240 - 1244 of FIG. 12 .
  • applying the last read level used during process 1000 may be considered to be applying VrA to a word line (step 1240 ).
  • Step 1018 of using the last set of results may be considered to be one embodiment of step 1244 (storing results).
  • VrA′′ may be 150 mV less than VrA′.
  • VrA′ may have been the default read level that was set in the factory. Thus, this indicates that this read level has shifted by 150 mV from the default level.
  • an initial value for VrB is determined based on VrB′ and the difference between VrA′′ and VrA′.
  • the initial value for VrB could be adjusted by the difference between VrA′′ and VrA′.
  • the threshold voltages for different states might be expected to shift be different amounts. Therefore, the initial value for VrB might differ from VrB′ by some other amount.
  • the initial value for VrB is used in a process to dynamically determine a new read level VrB′′.
  • the initial value for VrB may be used in step 1002 of FIG. 10 .
  • process 1000 may continue until it concludes.
  • the last read level use in process 1000 may be used as the new read level VrB′′.
  • steps of process 1000 to determine VrB′′ may be one embodiment of steps 1246 - 1250 .
  • applying the last read level in process 1000 may be one embodiment of step 1246 (applying VrB to the word line).
  • using data from the second set of latches (step 1018 ) may be considered to be one embodiment of step 1250 (storing the results of reading at VrB).
  • an initial value for VrC is determined.
  • Option A is to determine VrC based on VrC′ and the difference between VrA′′ and VrA′, in step 1310 A.
  • Option B is to determine VrC based on VrC′ and the difference between VrB′′ and VrB′, in step 1310 B.
  • VrC is determined based on a combination of (VrB′′-VrB′) and (VrA′′-VrA′). Note that it may be better to determine VrC based on a state that is closest to VrC, if it is expected that its Vt shift will be closer to its closest state.
  • the initial value for VrC may be determining by adjusting VrC′ by the difference between VrB′′ and VrB′. However, the initial value for VrC might differ from VrC′ by some other amount.
  • step 1312 the initial value for VrC is used to dynamically determine VrC′′.
  • the initial value for VrC is used in step 1002 of FIG. 10 .
  • process 1000 continues until VrC′′ is determined. Note that steps 1252 - 1256 of FIG. 12 may be accomplished by performing process 1000 to determine VrC′′.
  • process 1300 may save time by reducing the number of reads that are needed in process 1000 . Specifically, when determining VrB′′ and VrC′′ time may be saved. Note that when seven (for 3-bits per cell memory) or 15 read levels (for 4-bits per cell memory) needs to be found, even more time may be saved.
  • FIG. 13B describes a flowchart of one embodiment of a process 1350 of dynamically determining read levels in accordance with one embodiment.
  • a process such as process 800 or 1000 may be used to dynamically determine a read level for distinguishing between two states (e.g., VrA). Then, other read levels may be determined based on the first one.
  • a read level for VrA′′ is dynamically determined.
  • process 800 is used.
  • process 1000 is used.
  • step 1354 the difference between VrA′′ and VrA′ is noted.
  • VrA′′ may be 150 mV less than VrA′.
  • VrB′′ is determined based on VrB′ and the difference between VrA′′ and VrA′.
  • VrB′′ could be adjusted by the difference between VrA′′ and VrA′.
  • the threshold voltages for different states might be expected to shift be different amounts. Therefore, VrB′′ might differ from VrB′ by some other amount, which may be based on the difference between VrA′′ and VrA′.
  • VrB′′ may differ from VrB′ by the difference between VrA′′ and VrA′ plus some additional fixed amount.
  • Other relationships for the difference between VrB′′ and VrB′, and the difference between VrA′′ and VrA′ may also be used. Note that process 1000 is not performed to determine VrB′′ in this embodiment. Therefore, the value for VrB′′ may be used in step 1246 (see FIG. 12 ) without performing process 1000 . Therefore, even more time is saved.
  • VrC′′ is determined.
  • VrC′′ is determined based on VrC′ and the difference between VrA′′ and VrA′, in step 1358 A.
  • VrC′′ is determined based on VrC′ and the difference between VrB′′ and VrB′, in step 1358 B.
  • VrC′′ could be adjusted by the difference between VrA′′ and VrA′.
  • VrC′′ might differ from VrC′ by some other amount, which may be based on the difference between VrA′′ and VrA′, or the difference between VrB′′ and VrB′, or based on a combination of the two differences.
  • process 1000 is not performed to determine VrC′′ in this embodiment. Therefore, the value for VrC′′ may be used in step 1252 (see FIG. 12 ) without performing process 1000 .
  • the dynamically determined levels from one word line may be saved on a temporary register in the memory, from which it could be read, and used for read on another word line.
  • the same read levels are used on all word lines. However, there may be some word line to word line variation. Therefore, such variations may be accounted for.
  • FIG. 14A is a flowchart of one embodiment of a process 1400 of using dynamically determined read levels from one word line for another word line.
  • read levels are dynamically determined for WLn.
  • process 800 is used.
  • process 1000 is used.
  • the dynamically determined read levels are stored in a temporary register.
  • This register may be one the memory die 212 or off the memory die 212 .
  • the read levels could be stored in the controller 244 .
  • the read levels may be stored in control circuitry 220 on the memory die 212 .
  • the read levels may be stored somewhere in the read circuits 230 , or even in the memory array 200 .
  • WLn+1 is read based on the stored read levels.
  • the very same read levels are used for more than one word line.
  • a word line dependency is used to determine read levels based on the stored read levels. For example, it might be that word lines near the drain select gate suffer more or suffer less than others to threshold voltage shifts. Therefore, this may be factored in to determining read levels for those word lines.
  • step 1408 WLn+2 is read based on the stored read levels.
  • step 1410 WLn+m is read based on the stored read levels.
  • steps 1418 - 1410 may be similar to step 1406 . However, as stated, word line dependencies may be factored in. The dashed arrow between steps 1408 and 1410 indicates that other word lines may be read. Note that word lines could be read in a different order than depicted in FIG. 14A .
  • step 802 Another way in which time can be saved when dynamically determining read levels is to sense more than one threshold voltage using the same voltage applied to a selected word line. This may be used in, for example, step 802 to read two of the read levels. Referring to FIG. 10 , both the initial read of step 1002 and the second read at step 1008 may be performed using the same word line voltage. If more reads are deemed necessary in process 1000 , then the third and fourth reads could be performed using the same word line voltage.
  • dynamically determined read levels from one block may be used when reading another block. For example, a large chunk of memory may be written together and stored over multiple set of blocks, at about the same point in time. These blocks might remain largely untouched, and hence they may experience the same data-retention/thermal stress etc. It may then be expected that WLs in these blocks would show similar Vt shifts. Therefore, dynamically determined read levels from one block could be used for another.
  • FIG. 14B is a flowchart of one embodiment of a process 1450 of using dynamically determined read levels from one block in another.
  • word lines in multiple blocks are programmed. This may occur at about the same point in time.
  • blocks that were written at about the same point in time are tracked.
  • the controller 244 tracks these blocks. The controller 244 may note which blocks are written at about the same point in time, and then track which blocks are left in this state. If a block (or certain word lines therein) are programmed again, the controller 244 may exclude that block (or certain word lines) that were programmed.
  • read levels are dynamically determined for at least one word line in one of the tracked blocks.
  • the dynamically determined read levels may be stored either on the memory die 212 or in the controller 244 . In either case, the storage may be in a temporary register or permanent storage.
  • step 1460 word lines in another one of the tracked blocks are read based on the dynamically determined read levels. This may involve directly using the dynamically determined read levels, or making some adjustment to the dynamically determined read levels prior to using them in the other block. Note that it is not required to perform step 1460 immediately after step 1458 .
  • FIG. 15 is a flowchart of one embodiment of a process 1500 of sensing two different threshold voltages using a single word line voltage.
  • a read pass voltage Vread is applied to unselected word lines.
  • the read pass voltage may be sufficiently high to cause a memory cell to conduct regardless of its data state.
  • a read compare voltage Vcgry is applied to a selected word line.
  • the read compare voltage is typically close to the threshold voltage(s) that are being tested for in process 1500 . Note that applying the read compare voltage may cause a selected memory cell on a given NAND string to conduct. Moreover, the magnitude of the conduction current may be a function of the memory cell's threshold voltage. If the memory cell's threshold voltage is below the read compare voltage, then the memory cell may have a conduction current.
  • bit lines are sensed for a first length of time.
  • a capacitor that is coupled to a given bit line is charged prior to step 1506 .
  • the capacitor is discharged by the conduction current (if any). If the conduction current is strong enough, then the capacitor voltage will drop to a level that indicates that the memory cell turned on (e.g., conducted a current).
  • sensing time the longer time for which the capacitor is discharged (“sense time”), the further the capacitor voltage is expected to fall for the same conduction current. Therefore, the sense time may be selected to adjust for what threshold voltage is being sensed. In one embodiment, sensing with shorter sense time means the memory cell must have higher conduction current through the NAND string to be detected as being “on”, which means its Vt needs to be lower than what it needs to be if the sensing were done with a longer sense time.
  • bit lines are sensed for a second length of time.
  • the bit lines are sensed for a longer time in step 1508 , which may test for a higher Vt than step 1508 .
  • Step 1508 may involve sensing the same sense capacitor as step 1506 .
  • two different sense capacitors may be used. In this case, a replica of the bit line current might be provided to the second capacitor.
  • step 1510 the results from the first sense time are stored.
  • step 1512 results from the second sense time are stored. Since the first sense time is shorter, it tests for a lower threshold voltage. Therefore, the results for step 1510 are for VrA, whereas the results for step 1512 are for VrA+x mV. However, in another embodiment, the first sense time may be longer than the second sense time. In this case, the result for step 1510 are for VrA, whereas the result of step 1512 are for VrA ⁇ x mV, where x is >0.
  • FIG. 15 is one embodiment for sensing two different Vts using the same word line voltage.
  • source-follower sensing is used instead.
  • FIG. 16 is a flowchart of one embodiment of a process 1600 of reading using source-follower sensing.
  • Process 1600 may be used during step 802 to read at two different levels using the same word line voltages.
  • Process 1600 may be used during process 1000 to read at two different levels using the same word line voltages.
  • step 1602 the common source line is charged up to Vdd ⁇ 2.5V.
  • step 1604 the selected bit lines are floated to charge up by current flowing from the common source line to the bit lines.
  • step 1606 Vread is applied to the unselected word lines.
  • step 1608 Vcgrv is applied to the selected word line. Based on the threshold voltage of the selected memory cell on each NAND string, the memory cell may conduct a current. This current may flow from the source line to the bit line, thus charging the bit line. For a highly conductive cell, within certain sensing time, a higher current may flow, thus charging up the associated bit line to a higher voltage level. On the other hand, a non-conductive cell will not let any current flow, resulting in the bit line to stay at the initial level. Thus, by sensing the voltage level at the bit line, the state of the cell can be judged.
  • step 1610 the bit lines are sensed for a first voltage level.
  • step 1612 the bit lines are sensed for a second voltage level.
  • These two voltage levels are intended to test for slightly different threshold voltages.
  • two threshold voltages that differ by, for example, 50 mV could be tested for using a single word line voltage. Note that for both process 1600 and 1500 , multiple thresholds were sensed using a single word line voltage, as opposed to shifting word line voltage levels to sense at two different thresholds, as done in step 1006 of process 1000 . Therefore, any additional time needed for the word lines to settle between two different reads at two different Vcgrv levels, is mitigated.
  • the read levels that are used when dynamically determining read levels are different from each other by some set amount.
  • the second read (step 1008 ) may differ from the first read (step 1002 ) by 50 mV. Then, for the next iteration of step 1008 , the read may be adjusted by another 50 mV. Note that this is one embodiment of step 802 in FIG. 8 .
  • the same read level may be used for the two most recent reads.
  • the same read levels is used for the two most recent reads. Note that this still allows for mis-compares to be counted. Since the read level is not changed, the mis-compares may be caused by read noise, which causes a memory cell's threshold voltage to fluctuate from one read to another. If the read level is close to the valley between two threshold voltage distributions, there are fewer memory cells close to the read level, which means only few memory cell's threshold voltage can jump around due to read noise. This means the mis-compare count should be low.
  • mis-compare count can still be used as a measure that is related to misreads (or fail bit count). Note that using the same read level for two reads may save time because the word line does not need to be ramped to a different voltage between the two successive reads.
  • FIG. 17 depicts a flowchart of one embodiment of a process 1700 for dynamically determining read levels.
  • Process 1700 uses the same read levels for the two most recent reads.
  • Process 1700 is one embodiment of process 800 . Since process 1700 is similar to process 1000 it will not be described in great detail.
  • step 1701 MaxReads is initialized to zero.
  • step 1702 a first read is performed. This read is at an initial read level, which could be a default read level, the last read level used for this memory die 212 , block, word line, etc. The read level might the last read level for some other word line in the block, a different block in the die, etc.
  • step 1704 results of the first read are transferred into a first set of data latches.
  • step 1706 a second read is performed at the same level as step 1702 . Note that no shift is made, in the voltage on the selected word line, thus saving time.
  • step 1710 results of the second read are transferred into a second set of data latches.
  • step 1712 data in the first and second sets of latches are compared.
  • step 1714 a determination is made as to whether the mis-compares are less than some threshold number.
  • the threshold number may be established such that it correlates to a misread count.
  • the misread count may be one that can be corrected by an ECC algorithm.
  • the mis-compare count is expected to be less when the read level is close to the optimum read level.
  • the mis-compare count may be a function of noise. Near the optimum read level, there are fewer memory cells. Therefore, there should be fewer memory cells impacted by noise, in one embodiment.
  • the mis-compare count is not less than the threshold, then MaxReads is incremented in step 1715 . If MaxReads is over the limit (step 1716 ), then the process ends. Provided that the maximum number of iterations has not been performed, the data from the second set of latches is transferred to the first set of latches, in step 1717 .
  • the read level is shifted. In one embodiment, the read level is shifted in the direction that threshold voltage distributions are expected to move. For example, the read level may be shifted down. The read level may be shifted by any amount. In one embodiment, the amount of shift is a function of the mis-compare count.
  • the mis-compare count may, in some cases, suggest how far the read level was from the valley between two threshold voltage distributions. Thus, if mis-compare count is high, the read level for next iteration may be shifted by a larger amount, without much risk of skipping over the optimum read position which generally occurs at the valley position between the adjacent states. Similarly, small shift amounts may be used if mis-compare count is lower.
  • steps 1702 - 1714 are repeated with the new read level. Eventually, the mis-compare count should be less than the threshold.
  • the data from the second set of latches may be used, in step 1719 . Note that in one embodiment, the data from the first set of latches could be used instead.
  • the dynamic read level is established based on the last read level. Note that in this case, the last read level was used in each of the last two reads.
  • This dynamic read level may be stored for later use. It may be used when later reading the same unit (e.g., word line, block, memory die). It may also be used when reading some other unit. For example, it may be used when reading a different word line in the same block. It could also be used to help determine read levels for distinguishing between other states.
  • dynamic read levels are determined in the field.
  • read levels are dynamically determined during wafer sort, or some other time prior to shipping the memory device. Note that this may be used to establish default read levels.
  • these default read levels may be tuned for different units (e.g., memory die, block, word line, etc.). Thus, in one embodiment, separate default read levels for different units are stored on the memory device.
  • One embodiment includes a method of operating non-volatile storage.
  • the method comprises reading a group of non-volatile storage elements on a memory die at a first set of read levels.
  • the group of non-volatile storage elements store a plurality of data states. Results of the two most recent of the read levels are stored on the memory die. A count of how many of the non-volatile storage elements in the group showed a different result between the reads for the two most recent read levels is determined.
  • the determining is performed on the memory die using the results stored on the memory die.
  • a dynamic read level is determined for distinguishing between a first pair of adjacent data states of the plurality of data states based on the read level when the count reaches a pre-determined criterion.
  • One embodiment includes a non-volatile storage device, comprising a memory die, a group of non-volatile storage elements on the memory die, and one or more management circuits in communication with the group of non-volatile storage elements.
  • the group of non-volatile storage elements store a plurality of data states.
  • the one or more management circuits read the group of non-volatile storage elements at a first set of read levels.
  • the one or more management circuits store results of the two most recent of the read levels on the memory die.
  • the one or more management circuits determine a count of how many of the non-volatile storage elements in the group showed a different result between the reads at the two most recent read levels.
  • the one or more management circuits determine the count on the memory die using the results stored on the memory die.
  • the one or more management circuits establish an adjusted read level for distinguishing between a first pair of adjacent data states of the plurality of data states based on the read level when the count reaches a pre-determined criterio
  • One embodiment includes a method of operating non-volatile storage, comprising the following.
  • a determination is made whether each non-volatile storage element in a group of non-volatile storage elements on a memory die have a threshold voltage that is above a first level.
  • the group of non-volatile storage elements store a plurality of data states, some of the non-volatile storage elements in the group store error codes.
  • Indications of whether each of the non-volatile storage elements in the group have a threshold voltage that is above the first level are stored on the memory die.
  • a determination is made whether each non-volatile storage element in the group has a threshold voltage that is above a second level.
  • Indications of whether each of the non-volatile storage elements in the group have a threshold voltage that is above the second level are stored on the memory die.
  • a count of how many of the non-volatile storage elements have a threshold voltage that is between the first level and the second level is determined. The determining is performed on the memory die based on the stored indications.
  • a determination is made whether the count is less than a threshold amount.
  • the threshold amount corresponds to a level of errors that can be corrected using the error codes.
  • One of the first level or the second level is established as a level for distinguishing between a pair of the data states if the count is less than the threshold amount.
  • One embodiment includes a method of operating non-volatile storage, comprising: reading a group of non-volatile storage elements on a memory die at a first read level, the non-volatile storage elements store a plurality of data states, the first read level is near a read level for distinguishing between two data states of the plurality of data states; storing, in a first data latch on the memory die, first results of the read at the first level for each of the non-volatile storage elements in the group; reading the group of non-volatile storage elements at a second read level, the second read level is near the read level for distinguishing between the two data states, the first and second read levels test for different threshold voltages; storing, in a second data latch on the memory die, second results of the read at the second level for each of the non-volatile storage elements in the group; performing an XOR between the first results in the first data latch and the second results in the second data latch to produce a mis-compare count; and using one of the first results or the second results as
  • One embodiment includes a non-volatile storage device, comprising: a memory die; a group of non-volatile storage elements on the memory die, the group of non-volatile storage elements store a plurality of data states; a first data latch on the memory die; a second data latch on the memory die; and one or more management circuits in communication with the group of non-volatile storage elements.
  • the one or more management circuits read the group of non-volatile storage elements at a first read level, the first read level is near a read level for distinguishing between two data states of the plurality of data states.
  • the one or more management circuits store first results of the read at the first level for each of the non-volatile storage elements in the group in the first data latch.
  • the one or more management circuits read the group of non-volatile storage elements at a second read level.
  • the second read level is near the read level for distinguishing between the two data states.
  • the first and second read levels test for different threshold voltages.
  • the one or more management circuits store second results of the read at the second level for each of the non-volatile storage elements in the group in the second data latch.
  • the one or more management circuits perform an XOR between the first results in the first data latch and the second results in the second data latch to produce a mis-compare count.
  • the one or more management circuits use one of the first results or the second results as results for distinguishing between the two data states if the mis-compare count is less than a threshold amount.

Abstract

Dynamically determining read levels on chip (e.g., memory die) is disclosed herein. One method comprises reading a group of non-volatile storage elements on a memory die at a first set of read levels. Results of the two most recent of the read levels are stored on the memory die. A count of how many of the non-volatile storage elements in the group showed a different result between the reads for the two most recent read levels is determined. The determining is performed on the memory die using the results stored on the memory die. A dynamic read level is determined for distinguishing between a first pair of adjacent data states of the plurality of data states based on the read level when the count reaches a pre-determined criterion. Note that the read level may be dynamically determined on the memory die.

Description

    BACKGROUND
  • The present disclosure relates to technology for non-volatile memory.
  • Semiconductor memory has become more popular for use in various electronic devices. For example, non-volatile semiconductor memory is used in personal navigation devices, cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices. Electrical Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories.
  • Both EEPROM and flash memory utilize a floating gate that is positioned above and insulated from a channel region in a semiconductor substrate. The floating gate and channel regions are positioned between the source and drain regions. A control gate is provided over and insulated from the floating gate. The threshold voltage of the transistor is controlled by the amount of charge that is retained on the floating gate. That is, the minimum amount of voltage that must be applied to the control gate before the transistor is turned on to permit conduction between its source and drain is controlled by the level of charge on the floating gate.
  • Some EEPROM and flash memory devices have a floating gate that is used to store two ranges of charges and, therefore, the memory element can be programmed/erased between two states, e.g., an erased state and a programmed state. Such a flash memory device is sometimes referred to as a binary flash memory device because each memory element can store one bit of data.
  • A multi-state (also called multi-level) flash memory device is implemented by identifying multiple distinct allowed/valid programmed threshold voltage ranges. Each distinct threshold voltage range corresponds to a predetermined value for the set of data bits encoded in the memory device. For example, each memory element can store two bits of data when the element can be placed in one of four discrete charge bands corresponding to four distinct threshold voltage ranges.
  • Typically, a program voltage VPGM applied to the control gate during a program operation is applied as a series of pulses that increase in magnitude over time. In one possible approach, the magnitude of the pulses is increased with each successive pulse by a predetermined step size, e.g., 0.2-0.4 V. VPGM can be applied to the control gates of flash memory elements. In the periods between the program pulses, verify operations are carried out. That is, the programming level of each element of a group of elements being programmed in parallel is read between successive programming pulses to determine whether it is equal to or greater than a verify level to which the element is being programmed. For arrays of multi-state flash memory elements, a verification step may be performed for each state of an element to determine whether the element has reached its data-associated verify level. For example, a multi-state memory element capable of storing data in four states may need to perform verify operations for three compare points.
  • Moreover, when programming an EEPROM or flash memory device, such as a NAND flash memory device in a NAND string, typically VPGM is applied to the control gate and the bit line is grounded, causing electrons from the channel of a cell or memory element, e.g., storage element, to be injected into the floating gate. When electrons accumulate in the floating gate, the floating gate becomes negatively charged and the threshold voltage of the memory element is raised so that the memory element is considered to be in a programmed state.
  • Further, during a read operation, read reference voltages are applied to a set of storage elements to be read, and a determination is made as to which read reference voltage causes a storage element to become conductive. The read reference voltages are set to allow data states of the storage elements to be distinguished. However, the read reference voltages are typically fixed and do not account for the fact that the threshold voltage distribution of a set of storage elements can change, e.g., due to factors such as charge leakage, temperature changes, number of programming cycles and the like. As a result, read errors can occur.
  • To address the shift in threshold voltage distributions, new read reference voltages can be determined “dynamically”. However, some conventional approaches for dynamically determining new read levels need to construct the threshold voltage distribution for each state. However, this requires substantial computations, which may be time consuming. Also, these computations may need to be performed in a memory controller.
  • One conventional method for dynamically determining read levels is to read the data and then determine whether errors can be corrected using error correction codes (ECC). If ECC cannot correct the errors, then read levels may be shifted and the data read again. If ECC still cannot correct errors, then process is repeated until the data is successfully read. This process typically involves transferring the data out of the memory array in order to attempt to correct using ECC. Both transferring the data out of the memory array and performing the ECC may take up considerable time.
  • Moreover, as memory arrays scale down, many parasitic effects such as cell to cell interferences, and non-ideal effects such as program noise increase which lead to wider threshold voltage distributions for each programmed state. Thus, the room available between each programmed state is getting smaller and smaller with each generation, which means the error fail bit count is increasing. This makes it even more important to choose read levels for each state such that the error fail bit count is minimized.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a top view of a NAND string.
  • FIG. 2 is an equivalent circuit diagram of the NAND string.
  • FIG. 3 is a block diagram of a non-volatile memory system.
  • FIG. 4 is a block diagram depicting one embodiment of a memory array.
  • FIG. 5 is a block diagram depicting one embodiment of a sense block.
  • FIG. 6A depicts an example set of Vt distributions.
  • FIG. 6B depicts an example set of Vt distributions.
  • FIG. 7 shows threshold voltage distributions for two data states.
  • FIG. 8 is a flowchart of one embodiment of a process of dynamically determining a read level on-chip.
  • FIG. 9 depicts one embodiment of read levels and associated mis-compares.
  • FIG. 10A is a flowchart of one embodiment of a process of dynamically determining a read level on a memory die.
  • FIG. 10B depicts one embodiment of data latches.
  • FIG. 11A depicts a graph of a possible relationship between mis-compares and misreads for one embodiment.
  • FIG. 11B depicts a graph indicating a correlation between misreads and mis-compares for one embodiment.
  • FIG. 12 is a flow chart describing one embodiment of a process for performing a read operation.
  • FIG. 13A describes a flowchart of one embodiment of a process of dynamically determining read levels.
  • FIG. 13B describes a flowchart of one embodiment of a process of dynamically determining read levels.
  • FIG. 14A is a flowchart of one embodiment of a process of using dynamically determined read levels from one word line for another word line.
  • FIG. 14B is a flowchart of one embodiment of a process of using dynamically determined read levels from one block in another.
  • FIG. 15 is a flowchart of one embodiment of a process of sensing for two different threshold voltages using a single word line voltage.
  • FIG. 16 is a flowchart of one embodiment of a process of reading using source-follower sensing.
  • FIG. 17 depicts a flowchart of one embodiment of a process for dynamically determining read levels.
  • DETAILED DESCRIPTION
  • Dynamically determining read levels on chip (e.g., memory die) is disclosed herein. In one embodiment, an initial read of non-volatile storage elements (e.g., memory cells) is performed at a default read level. Note that this read may determine whether each memory cell has a threshold voltage above or below the read level. Results of the read may be stored in a first set of data latches on the memory die. Then, the read level may be adjusted slightly prior to reading again. Results of the second read may be stored in a second set of data latches. Then, the results in the two sets of data latches may be compared, on a memory cell by memory cell basis. In effect, the comparison may determine which memory cells showed a different result for the two reads (e.g., “mis-compares”). If the number of mis-compares is not less than a pre-determined threshold, then another read may be performed at another read level. When the number of mis-compares is less than the pre-determined threshold, the results of the last read may be used as final read results. Moreover, the last read level that was used may be used as a read level for further read operations. Thus, the read level may be dynamically determined. Note that the read level may be dynamically determined on the memory die.
  • Note that one embodiment does not transfer data off the memory die to an external controller in order to dynamically establish the read levels. Moreover, one embodiment does not perform an ECC algorithm to dynamically establish the read levels. Therefore, time is saved by not having to transfer data off from the memory die in order to find suitable read levels. Moreover, time is saved by not having to perform an ECC algorithm in order to find suitable read levels.
  • Also note that in some cases it may be desirable to sell a memory device without an external controller. For example, some customers may want to provide their own memory controller. Therefore, embodiments that dynamically determine read levels on chip have the advantage of providing a memory device without any special requirements that the controller determine suitable read levels.
  • In some embodiments, dynamically determining read levels on chip is performed using a NAND memory array. However, note that dynamically determining read levels may be performed on other types of non-volatile storage. NAND is an example of a flash memory system which includes arranging multiple transistors in series, sandwiched between two select gates. The transistors in series and the select gates are referred to as a NAND string. FIG. 1 is a top view showing one NAND string. FIG. 2 is an equivalent circuit thereof. The NAND string depicted in FIGS. 1 and 2 includes four transistors 100, 102, 104 and 106 in series and sandwiched between a first (or drain side) select gate 120 and a second (or source side) select gate 122. Select gate 120 connects the NAND string to a bit line via bit line contact 126. Select gate 122 connects the NAND string to source line 128. Select gate 120 is controlled by applying the appropriate voltages to select line SGD. Select gate 122 is controlled by applying the appropriate voltages to select line SGS. Each of the transistors 100, 102, 104 and 106 has a control gate and a floating gate. For example, transistor 100 has control gate 100CG and floating gate 100FG. Transistor 102 includes control gate 102CG and a floating gate 102FG. Transistor 104 includes control gate 104CG and floating gate 104FG. Transistor 106 includes a control gate 106CG and a 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 word line WL0.
  • Note that although FIGS. 1 and 2 show four memory cells in the NAND string, the use of four transistors is only provided as an example. A NAND string can have fewer than four memory cells or more than four memory cells. For example, some NAND strings will include eight memory cells, 16 memory cells, 32 memory cells, 64 memory cells, 128 memory cells, etc. The discussion herein is not limited to any particular number of memory cells in a NAND string.
  • A typical architecture for a flash memory system using a NAND structure will include several NAND strings. Each NAND string is connected to the source line by its source select gate controlled by select line SGS and connected to its associated bit line by its drain select gate controlled by select line SGD. Each bit line and the respective NAND string(s) that are connected to that bit line via a bit line contact comprise the columns of the array of memory cells. Bit lines are shared with multiple NAND strings. Typically, the bit line runs on top of the NAND strings in a direction perpendicular to the word lines and is connected to one or more sense amplifiers.
  • Each memory cell can store data (analog or digital). When storing one bit of digital data, the range of possible threshold voltages of the memory cell is divided into two ranges which are assigned logical data “1” and “0.” In one example of a NAND type flash memory, the threshold voltage is negative after the memory cell is erased, and defined as logic “1.” The threshold voltage after programming is positive 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 will turn on to indicate logic one is being stored. When the threshold voltage is positive and a read operation is attempted by applying 0 volts to the control gate, the memory cell will not turn on, which indicates that logic zero is stored.
  • In the case of storing multiple levels of data, the range of possible threshold voltages is divided into the number of levels of data. For example, if four levels of information is stored (two bits of data), there will 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 an erase operation is negative and defined as “11”. Positive threshold voltages are used for the data states of “10”, “01”, and “00.” If eight levels of information (or states) are stored (e.g. for three bits of data), there will be eight threshold voltage ranges assigned to the data values “000”, “001”, “010”, “011” “100”, “101”, “110” and “111.”
  • The specific relationship between the data programmed into the memory cell and the threshold voltage levels of the cell depends upon the data encoding scheme adopted for the cells. For example, U.S. Pat. No. 6,222,762 and U.S. Patent Application Publication No. 2004/0255090, both of which are incorporated herein by reference in their entirety, describe various data encoding schemes for multi-state flash memory cells. In one embodiment, data values are assigned to the threshold voltage ranges using a Gray code assignment so that if the threshold voltage of a floating gate erroneously shifts to its neighboring physical state, only one bit will be affected. In some embodiments, the data encoding scheme can be changed for different word lines, the data encoding scheme can be changed over time, or the data bits for random word lines may be inverted or otherwise randomized to reduce data pattern sensitivity and even wear on the memory cells.
  • Relevant examples of NAND type flash memories and their operation are provided in the following U.S. patents/patent applications, all of which are incorporated herein by reference: U.S. Pat. No. 5,570,315; U.S. Pat. No. 5,774,397; U.S. Pat. No. 6,046,935; U.S. Pat. No. 6,456,528; and U.S. Pat. Publication No. US2003/0002348. The discussion herein can also apply to other types of flash memory in addition to NAND as well as other types of non-volatile memory.
  • Other types of non-volatile storage devices, in addition to NAND flash memory, can also be used. For example, a so called TANOS structure (consisting of a stacked layer of TaN—Al2O3—SiN—SiO2 on a silicon substrate), which is basically a memory cell using trapping of charge in a nitride layer (instead of a floating gate), can also be used. Another type of memory cell useful in flash EEPROM systems utilizes a non-conductive dielectric material in place of a conductive floating gate to store charge in a non-volatile manner. Such a cell is described in an article by Chan et al., “A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device,” IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93-95. A triple layer dielectric formed of silicon oxide, silicon nitride and silicon oxide (“ONO”) is sandwiched between a conductive control gate and a surface of a semi-conductive substrate above the memory cell channel. The cell is programmed by injecting electrons from the cell channel into the nitride, where they are trapped and stored in a limited region. This stored charge then changes the threshold voltage of a portion of the channel of the cell in a manner that is detectable. The memory cell is erased by injecting hot holes into the nitride. See also Nozaki et al., “A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application,” IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, April 1991, pp. 497-501, which describes a similar memory cell in a split-gate configuration where a doped polysilicon gate extends over a portion of the memory cell channel to form a separate select transistor. The foregoing two articles are incorporated herein by reference in their entirety. The programming techniques mentioned in section 1.2 of “Nonvolatile Semiconductor Memory Technology,” edited by William D. Brown and Joe E. Brewer, IEEE Press, 1998, incorporated herein by reference, are also described in that section to be applicable to dielectric charge-trapping devices. Other types of memory devices can also be used.
  • FIG. 3 illustrates a non-volatile storage device 210 that may include one or more memory die or chips 212. Memory die 212 includes an array (two-dimensional or three dimensional) of memory cells 200, control circuitry 220, and read/ write circuits 230A and 230B. In one embodiment, access to the memory array 200 by the various peripheral circuits is implemented in a symmetric fashion, on opposite sides of the array, so that the densities of access lines and circuitry on each side are reduced by half. The read/ write circuits 230A and 230B include multiple sense blocks 300 which allow a page of memory cells to be read or programmed in parallel. The memory array 200 is addressable by word lines via row decoders 240A and 240B and by bit lines via column decoders 242A and 242B. In a typical embodiment, a controller 244 is included in the same memory device 210 (e.g., a removable storage card or package) as the one or more memory die 212. Commands and data are transferred between the host and controller 244 via lines 232 and between the controller and the one or more memory die 212 via lines 234. One implementation can include multiple chips 212.
  • Control circuitry 220 cooperates with the read/ write circuits 230A and 230B to perform memory operations on the memory array 200. The control circuitry 220 includes a state machine 222, an on-chip address decoder 224 and a power control module 226. The state machine 222 provides chip-level control of memory operations. The on-chip address decoder 224 provides an address interface to convert between the address that is used by the host or a memory controller to the hardware address used by the decoders 240A, 240B, 242A, and 242B. The power control module 226 controls the power and voltages supplied to the word lines and bit lines during memory operations. In one embodiment, power control module 226 includes one or more charge pumps that can create voltages larger than the supply voltage.
  • In one embodiment, one or any combination of control circuitry 220, power control circuit 226, decoder circuit 224, state machine circuit 222, decoder circuit 242A, decoder circuit 242B, decoder circuit 240A, decoder circuit 240B, read/write circuits 230A, read/write circuits 230B, and/or controller 244 can be referred to as one or more managing circuits.
  • FIG. 4 depicts an exemplary structure of memory cell array 200. In one embodiment, the array of memory cells is divided into M blocks of memory cells. As is common for flash EEPROM systems, the block is the unit of erase. That is, each block contains the minimum number of memory cells that are erased together. Each block is typically divided into a number of pages. A page is a unit of programming. 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) that has been calculated from the user data of the sector. A portion of the controller (described below) calculates the ECC when data is being programmed into the array, and also checks it when data is being read from the array. In one embodiment, the controller 244 is able to correct a certain number of misreads, based on the ECC.
  • Alternatively, the ECCs and/or other overhead data are stored in different pages, or even different blocks, than the user data to which they pertain. A sector of user data is typically 512 bytes, corresponding to the size of a sector in magnetic disk drives. A large number of pages form a block, anywhere from 8 pages, for example, up to 32, 64, 128 or more pages. Different sized blocks and arrangements can also be used.
  • In another embodiment, the bit lines are divided into odd bit lines and even bit lines. In an odd/even bit line architecture, memory cells along a common word line and connected to the odd bit lines are programmed at one time, while memory cells along a common word line and connected to even bit lines are programmed at another time.
  • FIG. 4 shows more details of block i of memory array 200. Block i includes X+1 bit lines and X+1 NAND strings. Block i also includes 64 data word lines (WL0-WL63), 2 dummy word lines (WL_d0 and WL_d1), a drain side select line (SGD) and a source side select line (SGS). One terminal of each NAND string is connected to a corresponding bit line via a drain select gate (connected to select line SGD), and another terminal is connected to the source line via a source select gate (connected to select line SGS). Because there are sixty four data word lines and two dummy word lines, each NAND string includes sixty four data memory cells and two dummy memory cells. In other embodiments, the NAND strings can have more or fewer than 64 data memory cells and two dummy memory cells. Data memory cells can store user or system data. Dummy memory cells are typically not used to store user or system data. Some embodiments do not include dummy memory cells.
  • FIG. 5 is a block diagram of an individual sense block 300 partitioned into a core portion, referred to as a sense module 480, and a common portion 490. In one embodiment, there will be a separate sense module 480 for each bit line and one common portion 490 for a set of multiple sense modules 480. In one example, a sense block will include one common portion 490 and eight sense modules 480. Each of the sense modules in a group will communicate with the associated common portion via a data bus 472. For further details, refer to U.S. Patent Application Publication 2006/0140007, which is incorporated herein by reference in its entirety.
  • Sense module 480 comprises sense circuitry 470 that determines whether a conduction current in a connected bit line is above or below a predetermined threshold level. In some embodiments, sense module 480 includes a circuit commonly referred to as a sense amplifier. Sense module 480 also includes a bit line latch 482 that is used to set a voltage condition on the connected bit line. For example, a predetermined state latched in bit line latch 482 will result in the connected bit line being pulled to a state designating program inhibit (e.g., Vdd).
  • Common portion 490 comprises a processor 492, a set of data latches 494 and an I/O Interface 496 coupled between the set of data latches 494 and data bus 420. Processor 492 performs computations. For example, one of its functions is to determine the data stored in the sensed memory cell and store the determined data in the set of data latches. The set of data latches 494 is used to store data bits determined by processor 492 during a read operation. In some embodiments, the data latches 494 are used to store first and second read results, as a part of a process that dynamically determines read levels. Data latches 494 may also used to store data bits imported from the data bus 420 during a program operation. The imported data bits represent write data meant to be programmed into the memory. I/O interface 496 provides an interface between data latches 494 and the data bus 420.
  • During read or sensing, the operation of the system is under the control of state machine 222 that controls the supply of different control gate voltages to the addressed cell. As it steps through the various predefined control gate voltages corresponding to the various memory states supported by the memory, the sense module 480 may trip at one of these voltages and an output will be provided from sense module 480 to processor 492 via bus 472. At that point, processor 492 determines the resultant memory state by consideration of the tripping event(s) of the sense module and the information about the applied control gate voltage from the state machine via input lines 493. It then computes a binary encoding for the memory state and stores the resultant data bits into data latches 494. In another embodiment of the core portion, bit line latch 482 serves double duty, both as a latch for latching the output of the sense module 480 and also as a bit line latch as described above.
  • It is anticipated that some implementations will include multiple processors 492. In one embodiment, each processor 492 will include an output line (not depicted in FIG. 5) such that each of the output lines is wired-OR'd together. In some embodiments, the output lines are inverted prior to being connected to the wired-OR line. This configuration enables a quick determination during the program verification process of when the programming process has completed because the state machine receiving the wired-OR line can determine when all bits being programmed have reached the desired level. For example, when each bit has reached its desired level, a logic zero for that bit will be sent to the wired-OR line (or a data one is inverted). When all bits output a data 0 (or a data one inverted), then the state machine knows to terminate the programming process. In embodiments where each processor communicates with eight sense modules, the state machine may (in some embodiments) need to read the wired-OR line eight times, or logic is added to processor 492 to accumulate the results of the associated bit lines such that the state machine need only read the wired-OR line one time.
  • During program or verify, the data to be programmed is stored in the set of data latches 494 from the data bus 420. The program operation, under the control of the state machine, comprises a series of programming voltage pulses (with increasing magnitudes) applied to the control gates of the addressed memory cells. Each programming pulse is followed by a verify process to determine if the memory cell has been programmed to the desired state. Processor 492 monitors the verified memory state relative to the desired memory state. When the two are in agreement, processor 492 sets the bit line latch 482 so as to cause the bit line to be pulled to a state designating program inhibit. This inhibits the cell coupled to the bit line from further programming even if it is subjected to programming pulses on its control gate. In other embodiments the processor initially loads the bit line latch 482 and the sense circuitry sets it to an inhibit value during the verify process.
  • Data latch stack 494 contains a stack of data latches corresponding to the sense module. In one embodiment, there are 3-5 (or another number) data latches per sense module 480. In one embodiment, the latches are each one bit. In some implementations (but not required), the data latches are implemented as a shift register so that the parallel data stored therein is converted to serial data for data bus 420, and vice versa. In one embodiment, all the data latches corresponding to the read/write block of m memory cells can be linked together to form a block shift register so that a block of data can be input or output by serial transfer. In particular, the bank of read/write modules is adapted so that each of its set of data latches will shift data in to or out of the data bus in sequence as if they are part of a shift register for the entire read/write block.
  • Additional information about the read operations and sense amplifiers can be found in (1) U.S. Pat. No. 7,196,931, “Non-Volatile Memory And Method With Reduced Source Line Bias Errors,”; (2) U.S. Pat. No. 7,023,736, “Non-Volatile Memory And Method with Improved Sensing,”; (3) U.S. Patent Application Pub. No. 2005/0169082; (4) U.S. Pat. No. 7,196,928, “Compensating for Coupling During Read Operations of Non-Volatile Memory,” and (5) United States Patent Application Pub. No. 2006/0158947, “Reference Sense Amplifier For Non-Volatile Memory,” published on Jul. 20, 2006. All five of the immediately above-listed patent documents are incorporated herein by reference in their entirety.
  • At the end of a successful programming process (with verification), the threshold voltages of the memory cells should be within one or more distributions of threshold voltages for programmed memory cells or within a distribution of threshold voltages for erased memory cells, as appropriate. FIG. 6A illustrates example Vt distributions corresponding to data states for the memory cell array when each memory cell stores three bits of data. Other embodiment, however, may use more or fewer than three bits of data per memory cell. FIG. 6A shows eight Vt distributions corresponding to an Erase state and programmed states A-G. In one embodiment, the threshold voltages in the Erase state are negative and the threshold voltages in the programmed states A-G are positive. However, the threshold voltages in one or more of programmed states A-G may be negative. Some or all of the threshold voltages in the Erase state could be positive.
  • Between each of the data states Erase-G are read reference voltages used for reading data from memory cells. For example, FIG. 6A shows read reference voltage VrA between the erase state and the A-state, and VrB between the A-state and B-state. By testing whether the threshold voltage of a given memory cell is above or below the respective read reference voltages, the system can determine what state the memory cell is in.
  • At or near the lower edge of each programmed state are verify reference voltages. For example, FIG. 6A shows VvA for the A-state and VvB for the B-state. When programming memory cells to a given state, the system will test whether those memory cells have a threshold voltage greater than or equal to the verify reference voltage.
  • FIG. 6B illustrates that Vt distributions can partially overlap since the error correction algorithm can handle a certain percentage of cells that are in error. Note that in some embodiments, at one point in time the threshold voltage distribution may resemble FIG. 6A and at another time the threshold voltage distributions may overlap, as in FIG. 6B. For example, just after programming, the threshold voltage distribution may resemble FIG. 6A. However, over time, the threshold voltages of memory cells may shift, such that there may be overlap.
  • Also note that contrary to the equal spacing/width of the depicted threshold voltage distributions, various distributions may have different widths/spacings in order to accommodate varying amounts of susceptibility to data retention loss.
  • FIG. 7 shows threshold voltage distributions for two of the data states (F-state and G-state), each for two points in time. Curves 702 and 704 show Vt distributions corresponding to just after the memory cells were programmed. Curves 712 and 714 show Vt distributions corresponding to some time after the memory cells were programmed. Just after programming, there is a significant gap between the F-state and G-state. However, after some time, the threshold voltages may shift for a number of reasons. One possible reason is that the memory device may have rested without use for a period of time, resulting in charge loss from the memory cells, referred to as data retention loss. If the memory device was in a hot environment, such as an automobile, data retention may be a greater problem.
  • Curve 714 shows a possible shift for the threshold distribution of the G-state. In this example, the threshold voltages have in general shifted downward, due to charge loss from the memory cell. Also, there has been some spreading of the range of the threshold voltages, due to cell-to-cell variation in the amount of threshold shift down. Curve 712 shows a possible shift for the threshold distribution of the F-state. Similar to the G-state, the threshold voltages for the F-state have in general shifted downward. Also, there has been some spreading of the range of the threshold voltages. Note that other shifts in the threshold voltages are possible.
  • Voltage level VrG′ represents a read level that is suitable for use just after programming. Voltage level VrG″ represents a read level that is suitable for use after the threshold voltage distributions have shifted to curves 712 and 714. In this example, read point VrG″ corresponds to the valley of curves 712 and 714 (where the curves first intersect), although a different read level might be used.
  • Note that if read level VrG′ were to be used after the threshold voltage distributions have shifted to curves 712 and 714, then memory cells on curve 714 with threshold voltages below VrG′ would be misread. In general, box 711 represents memory cells with threshold voltages on curve 714 that would be misread if read level VrG′ were to be used. Using VrG′ would not result in misreads of memory cells with threshold voltages on curve 712. However, as can be seen there are a substantial number of memory cells on curve 714. Note that the y-axis may be on a log scale.
  • Error correction algorithms are able to handle some misreads. However, if the number of misreads is too high then the data cannot be successfully read. For example, if the number of misreads is greater than the error correction ability of one embodiment of controller 244, then the data cannot be accurately read.
  • However, by dynamically adjusting the read level to, for example, VrG″, the data can be successfully read. Note that there still may be a small number of misreads; however, error correction should be able to correct these misreads. In this example, a misread occurs for memory cells on curve 714 with a threshold voltage lower than VrG″. A misread occurs for memory cells on curve 712 with a threshold voltage higher than VrG″. Note that due to the log scale, there may be relatively few memory cells at the intersection of curves 712 and 714.
  • In one embodiment, the read level is dynamically adjusted to minimize the misreads. However, it is not required that the misreads be minimized. In one embodiment, the read level is dynamically adjusted such that the misreads are sufficiently low such that they may be corrected using ECC. In some cases, a relatively strong ECC may be available, in which case a higher number of misreads may be tolerable.
  • Note that there may be variations from one memory die to the next, which may lead to differences in threshold voltage distributions. Also, within a memory die there may be variations. For example, there could be differences from one block to the next. Also, there may be word line to word line variations within a block. One possible reason for these differences is that various interference effects may be different depending on the die, block, word line, etc. This may lead to differences in threshold distribution widths. Also, there may be differences in history of the data written to different blocks. For example, two blocks programmed at two different times, which have been resting for different periods of time, will show different amount of threshold shift. Therefore, in general, the optimum read levels may differ based on die, block, word line, etc.
  • Read levels may be dynamically determined for any unit (die, block, word line, etc.). Note that even for memory arrays that are freshly programmed, there may be differences between dies, blocks, word lines, etc., which may lead to differences between the threshold distributions. In other words, it may not be that case that one set of read levels are suitable for all dies, blocks, word lines, etc. Therefore, dynamically determining read levels may be used for freshly programmed memory. This may allow for optimizing read levels for dies, blocks, word lines, etc.
  • FIG. 8 is a flowchart of one embodiment of a process 800 of dynamically determining a read level on-chip. Note that process 800 describes a general flow and that the steps may be performed in a different order. Also, note that a step may comprise sub-steps. In some cases, after performing one or more sub-steps of one step, a different step or steps (or portions thereof) may be performed. Then, or more sub-steps of the first step may be performed.
  • In step 802, a group of non-volatile storage elements on a memory die 212 are read at a first set of read levels. In one embodiment, each successive read may be at a lower voltage. In one embodiment, each successive read may be a higher voltage. In one embodiment, two reads are performed at the same read level; then, two more reads may be performed at another read level, and so on. The set of read reference levels may be near an expected read level for distinguishing between two data states. Referring briefly to FIG. 9, an example set of read levels, and associated mis-compares is depicted. Note that step 802 might include reading at only some of the read levels in the set.
  • In step 804, results of the reads are stored on the memory die 212. In one embodiment, after each read, the results are stored in a set of data latches. These data latches may be in the data latches 494 in a sense block 300; however, data latches could be located elsewhere on the memory die 212.
  • In step 806, a count of how many of the non-volatile storage elements showed different results between the two most recent of the successive reads is determined. For example, referring again to FIG. 9, a mis-compare count is depicted below each pair of neighbor read levels. The mis-compare count for the first two reads is determined by comparing the results of the initial read level and the second read level. Each memory cell that shows a different result between the initial read and the second read is considered a mis-compare. The mis-compare count can be quite high between the initial read level and the second read level. In this example, the mis-compare count drops as the read levels approach a suitable read level. The mis-compare count may be lowest at about the valley between the threshold voltage distributions. If reading were to be continued beyond this point (e.g., to still lower voltages), then the mis-compare count may go up, as indicated in FIG. 9. However, it is not required to perform all of these reads. In fact, it is not required to determine a minimum mis-compare count, as will be explained more fully below.
  • In step 808, a read level for distinguishing between a pair of data states is determined based on a read level when the mis-compare count reaches a pre-determined criterion. In one embodiment, the read level is set to the last read level used in step 802. In general, the pair of data states may be adjacent data states. In this example, the read level may be for distinguishing between the F-state and the G-state. Note that process 800 may be used for dynamically determining a read level for distinguishing between other pairs of data states.
  • In one embodiment, the pre-determined criterion in step 808 is based on error correction capabilities. For example, depending on factors such as how many memory cells are used for storing error correction codes, the controller 244 may be able to correct some number of misreads. The number of mis-compares that are allowed may be based on the ability of the controller to correct read errors. In one embodiment, the number of mis-compares that are allowed is such that the controller 244 should be able to correct read errors if the last read level used in step 802 is used.
  • In one embodiment, the pre-determined criterion in step 808 is that the number of mis-compares reaches a minimum. Referring to FIG. 9, in one embodiment it is assumed that mis-compares will drop until a minimum is reached, and then rise. In order to find the minima, the count of mis-compares from one pair of reads, may be compared with the count of mis-compares from the next pair of reads. Once the count of mis-compares is found to be higher than the previous count of mis-compares, a minimum has been found.
  • Next, note that in the example of FIG. 9, after the initial read the next read levels are at lower voltages. The initial read may have been a default level, such as VrG′ in FIG. 7. An assumption may have been made that for these data states that the threshold voltages are expected to shift down. However, for other data states, or other devices, it might be expected that the threshold voltages would shift up. Therefore, the read levels used in step 802 might increase. For some devices, or states, it may be difficult to predict which way the threshold voltages might shift. In this case, step 802 might first read with successively lower voltages. If the mis-compare count goes up instead of down, then the read levels may be increased.
  • FIG. 10A is a flowchart of one embodiment of a process 1000 of dynamically determining a read level on a memory die 212. Process 1000 may be used to determine a read level for distinguishing between two data states. If desired, process 1000 may be repeated to determine a read level for distinguishing between other pairs of data states. However, as will be discussed below, results of dynamically determining one read level may be used to determine read levels for distinguishing between other pairs of data states Process 1000 is one embodiment of process 800. For the sake of discussion, an example of determining a read level for distinguishing between an F-state and G-state will be used.
  • In step 1001, a counter for the maximum number of reads that are permitted is initialized to zero. In step 1002, reading non-volatile storage at an initial level is performed. The initial level may be the level that was most recently determined using process 1000 or another process. It could also be a default level that was set at the factory. Step 1002 may be one sub-step for one embodiment of step 802 of FIG. 8.
  • In step 1004, results from the initial read are transferred to a first set of data latches. There may be one data latch in the first set for each memory cell that is read. The data latches are on the memory die 212 in one embodiment. An example is the data latches 494 in the sense block 300.
  • In step 1006, the read level is shifted. In one embodiment, the read level is shifted in a direction that threshold voltages are expected to shift over time. The read level may be shifted down or up. Note that step 1006 may be repeated several times during process 1000. In one embodiment, the read level is shifted by the same amount each time. For example, the read level might be shifted by 50 mV each time. However, the magnitude of the voltage shift could be different from one iteration of step 1006 to the next. Also, the direction of the shift may change. For example, initially the shift might be to lower voltages. However, if it does not appear that progress is being made to locate a suitable read level, then the read level might be shifted upwards.
  • In one embodiment, the amount of shift is a function of the mis-compare count. For example, the shift may be large when the mis-compare count is high, and as the mis-compare count reduces, the shift in read level is also reduced. The mis-compare count suggests how far the read level was from the valley between two threshold voltage distributions. When the mis-compares are high, it is likely that the read level is away from the valley position, which means a larger shift can be made during the next iteration, without skipping over the valley position.
  • In step 1008, the memory cells are read at the new read level. In step 1010, results of the read of step 1008 are transferred to a second set of data latches. In one embodiment, these latches are on the memory die 212. As one example, the data latches are in data latches 494 in sense block 300.
  • In step 1012, the results in the first and second sets of data latches are compared. In one embodiment, an XOR logic operation is performed between the first and second data latches, on a memory cell by memory cell basis. Therefore, if the read results for a given memory cell were the same for the two reads, then the comparison produces a “0,” in this embodiment. However, if the read results for a given memory cell were different for the two reads, then the comparison produces a “1,” in this embodiment. A comparison result of “1” may be referred to herein as a “mis-compare.” FIG. 10B depicts one embodiment of latches 494 having a Latch 1, Latch 2, and an XOR circuit for determining the exclusive OR between the results in the two latches. The XOR circuit may output a mis-compare result. There may be one such latch 494 for each memory cell being read.
  • In step 1014, the number of mis-compares for the memory cells being read, are totaled and compared to a threshold number. In one embodiment, the threshold number is based on the error correction capabilities of the controller. Further details are discussed below. In one embodiment, the number of mis-compares that are output by the XOR of FIG. 10B can be summed on the memory die 212. In one embodiment, once the total reaches some limit (e.g., 32, 64, etc.) counting stops.
  • If the mis-compares are greater than the threshold, this may indicate that a suitable read level has not yet been found. If so, the count of the MaxReads is incremented by one, in step 1015. Then, MaxReads is compared to a limit in step 1016. Note that in some cases, the number of mis-compares might not reach a level below the threshold (step 1014) within the maximum number of iterations allowed. This may indicate that the data is unreadable. However, it may also be that other techniques may be used to read the data. Process 1000 may end if the number of mis-compares fails to become lower than the threshold despite attempts to read at different read levels. In one embodiment, the process 1000 ends by using the results for the read level corresponding to the lowest number of mis-compares even if that number is not lower than the threshold. Any read errors may well be correctable, especially if the threshold was well within the margin of correctable errors.
  • As long as the maximum number of reads have not been performed, process 1000 may return to step 1006 to shift the read level. Also, in step 1017, the results stored in the second set of data latches may be transferred to the first set of data latches. Thus, when the next read is performed, the second set of data latches is free to store the latest read results. In one embodiment, rather than actually transferring results from the second set of data latches to the first set of data latches in step 1016, the roles of the data latches are reversed. For example, the next read results may be stored in the first set of data latches (rather than the second set as indicated in step 1010).
  • Eventually, the number of mis-compares should become lower than the threshold (step 1014=yes). This may indicate that the most recent read level was suitable to read the memory cells. In one embodiment this indicates that the error correction being used will be able to correct any misreads. Note that the threshold number is step 1014 may be set at a significantly lower level than a borderline case for correcting errors. For example, it might be that the error correction could correct 100 misreads. However, the threshold might be set such that there are likely to be fewer than 40 misreads. Note that the number of mis-compares, in general, is not the same as the number of misreads. However, in some embodiments, there is a relationship or correlation between the number of mis-compares and the number of misreads.
  • In step 1018, the results in the second set of latches may be used as actual read results. In one embodiment, these results are shifted out of the data latches 494 for further processing. Note that these results indicate whether each memory cell has a threshold voltage above or below a given read level. In other words, the results may distinguish between two data states. For example, the results may distinguish between the F-state and the G-state. Reads at other read levels (e.g., VrA, VrB, etc.) may be performed in order to determine the data state of each memory cell.
  • Note that final read level may be stored for later use. For example, the next time that this group of memory cells are to be read, the final read level could be used as the initial read level in step 1002. The final read level may be stored in one of the temporary registers on the memory, or else it may be stored externally in the controller's non-volatile memory. However, note that it is not required that process 1000 be used each time that the memory cells are read. In one embodiment, the memory cells are simply read using the final read level. Thus, in one embodiment, the final read level is stored, in step 1020. Note that the read level may be determined without sending read results off the memory die 212. For example, there is no need to send the read results to an external controller to perform complex calculations. Moreover, the read level may be found without applying ECC corrections to the results. However, note that ECC corrections may be applied after the read level is dynamically found.
  • FIG. 11A depicts a graph of a possible relationship between mis-compares and misreads (also referred to as fail bit count) for one embodiment. The mis-compares and misreads are plotted versus read voltage level. The mis-compares may be the mis-compares from process 800 or process 1000, as examples. The read level for a mis-compare point may be the most recent read level that was used, among the pair of read levels for which the mis-compare count was determined. The scale for the mis-compares is in arbitrary units. Likewise, the scale for the misreads is in arbitrary units.
  • In general, mis-compares may correlate to misreads in the graph of FIG. 11A. FIG. 11B depicts a graph indicating a correlation 1150 between misreads and mis-compares for one embodiment. Note that if the threshold is set to some specific number (e.g., 20), then this may correlate to a certain number of misreads. Therefore, the threshold may be set to correlate to some tolerable number of misreads. Note that the number of misreads may be well below the ECC capability of the controller 244 on the memory device.
  • FIG. 12 is a flow chart describing one embodiment of a process 1200 for performing a read operation. FIG. 12 describes a general read process without describing how dynamic read levels are established. In process 1200 reads with read levels VrA, VrB, and VrC are used. Thus, process 1200 describes reading memory cells that store two-bits per cell. Note that dynamic read may be used to determine voltage levels for one or more of VrA, VrB, and VrC.
  • The process of FIG. 12 can be performed for a page that encompasses all bit lines of a block, only odd bit lines of a block, only even bit lines of a block, or other subsets of bit lines of a block. In step 1240, read reference voltage Vra is applied to the appropriate word line associated with the target page. In step 1242, the bit lines associated with the page are sensed to determine whether the addressed memory cells turn on or do not turn on based on the application of Vra to their control gates. Bit lines that conduct indicate that the memory cells were turned on; therefore, the threshold voltages of those memory cells are below Vra (e.g., in the Erase state). In step 1244 the result of the sensing for the bit lines is stored in the appropriate latches for those bit lines.
  • In step 1246, read reference voltage Vrb is applied to the word lines associated with the page being read. In step 1248, the bit lines are sensed as described above. In step 1250, the results are stored in the appropriate latches for the bit lines.
  • In step 1252, read reference voltage Vrc is applied to the word lines associated with the page. In step 1254, the bit lines are sensed to determine which memory cells turn on, as described above. In step 1256, the results from the sensing step are stored in the appropriate latches for the bit lines.
  • In step 1258, the data values for each bit line are determined. For example, if a memory cell conducts at Vra, then the memory cell is in the Erased state. If a memory cell conducts at Vrb and Vrc but not at Vra, then the memory cell is in state A. If the memory cell conducts at Vrc but not at Vra and Vrb, then the memory cell is in state B. If the memory cell does not conduct at Vra, Vrb or Vrc, then the memory cell is in state C. In other embodiments, sensing the various levels (Vra, Vrb, and Vrc) may occur in different orders.
  • FIG. 13A describes a flowchart of one embodiment of a process 1300 of dynamically determining read levels. Process 1300 describes one embodiment of determining read levels dynamically for use in the read operation of FIG. 12. Process 1300 may be modified for memory cells that store more than two bits per memory cell.
  • In process 1300, a process such as process 800 or 1000 may be used to dynamically determine a read level (e.g., VrA) for distinguishing between two states. Then, initial values for subsequent read levels (e.g., VrB, VrC) may be determined based on the first one. For example, initial values for VrB and VrC can be determined for use in a process such as 800 or 1000. The notation used in describing FIG. 13A will be as follows. A single prime will be used to refer to the read level that was used for the last read. A double prime will refer to the read level that is dynamically determined at this time. For example, VrA′ refers to the read level for the last read operation, whereas VrA″ refers to the new read level to be dynamically determined. If no primes are used, this indicates a general reference to the read level.
  • In step 1302, a read level for VrA″ is dynamically determined. In one embodiment, process 800 is used. In one embodiment, process 1000 is used. Note that the process of determining VrA″ may accomplish steps 1240-1244 of FIG. 12. For example, applying the last read level used during process 1000 may be considered to be applying VrA to a word line (step 1240). Step 1018 of using the last set of results may be considered to be one embodiment of step 1244 (storing results).
  • In step 1304, the difference between VrA″ and VrA′ is noted. For example, VrA″ may be 150 mV less than VrA′. As one example, VrA′ may have been the default read level that was set in the factory. Thus, this indicates that this read level has shifted by 150 mV from the default level.
  • In step 1306, an initial value for VrB is determined based on VrB′ and the difference between VrA″ and VrA′. In the simplest example, the initial value for VrB could be adjusted by the difference between VrA″ and VrA′. However, the threshold voltages for different states might be expected to shift be different amounts. Therefore, the initial value for VrB might differ from VrB′ by some other amount.
  • In step 1308, the initial value for VrB is used in a process to dynamically determine a new read level VrB″. For example, the initial value for VrB may be used in step 1002 of FIG. 10. Then, process 1000 may continue until it concludes. The last read level use in process 1000 may be used as the new read level VrB″.
  • Note certain steps of process 1000 to determine VrB″ may be one embodiment of steps 1246-1250. For example, applying the last read level in process 1000 may be one embodiment of step 1246 (applying VrB to the word line). Also, using data from the second set of latches (step 1018) may be considered to be one embodiment of step 1250 (storing the results of reading at VrB).
  • In step 1310, an initial value for VrC is determined. Option A is to determine VrC based on VrC′ and the difference between VrA″ and VrA′, in step 1310A. Option B is to determine VrC based on VrC′ and the difference between VrB″ and VrB′, in step 1310B. In one embodiment, VrC is determined based on a combination of (VrB″-VrB′) and (VrA″-VrA′). Note that it may be better to determine VrC based on a state that is closest to VrC, if it is expected that its Vt shift will be closer to its closest state. Similar to the case for the initial value for VrB, the initial value for VrC may be determining by adjusting VrC′ by the difference between VrB″ and VrB′. However, the initial value for VrC might differ from VrC′ by some other amount.
  • In step 1312, the initial value for VrC is used to dynamically determine VrC″. For example, the initial value for VrC is used in step 1002 of FIG. 10. Then, process 1000 continues until VrC″ is determined. Note that steps 1252-1256 of FIG. 12 may be accomplished by performing process 1000 to determine VrC″.
  • Note that process 1300 may save time by reducing the number of reads that are needed in process 1000. Specifically, when determining VrB″ and VrC″ time may be saved. Note that when seven (for 3-bits per cell memory) or 15 read levels (for 4-bits per cell memory) needs to be found, even more time may be saved.
  • Even more time may be saved by skipping process 1000 (or a similar process) for some read levels. For example, after determining VrA″ using process 1000, a suitable VrB″ and VrC″ may be determined without performing process 1000. FIG. 13B describes a flowchart of one embodiment of a process 1350 of dynamically determining read levels in accordance with one embodiment. In process 1350, a process such as process 800 or 1000 may be used to dynamically determine a read level for distinguishing between two states (e.g., VrA). Then, other read levels may be determined based on the first one.
  • In step 1352, a read level for VrA″ is dynamically determined. In one embodiment, process 800 is used. In one embodiment, process 1000 is used. In step 1354, the difference between VrA″ and VrA′ is noted. For example, VrA″ may be 150 mV less than VrA′.
  • In step 1356, VrB″ is determined based on VrB′ and the difference between VrA″ and VrA′. In the simplest example, VrB″ could be adjusted by the difference between VrA″ and VrA′. However, the threshold voltages for different states might be expected to shift be different amounts. Therefore, VrB″ might differ from VrB′ by some other amount, which may be based on the difference between VrA″ and VrA′. For example, VrB″ may differ from VrB′ by the difference between VrA″ and VrA′ plus some additional fixed amount. Other relationships for the difference between VrB″ and VrB′, and the difference between VrA″ and VrA′ may also be used. Note that process 1000 is not performed to determine VrB″ in this embodiment. Therefore, the value for VrB″ may be used in step 1246 (see FIG. 12) without performing process 1000. Therefore, even more time is saved.
  • In step 1358, VrC″ is determined. In option A, VrC″ is determined based on VrC′ and the difference between VrA″ and VrA′, in step 1358A. In option B, VrC″ is determined based on VrC′ and the difference between VrB″ and VrB′, in step 1358B. In the simplest example, VrC″ could be adjusted by the difference between VrA″ and VrA′. However, as mentioned above with respect to VrB″, VrC″ might differ from VrC′ by some other amount, which may be based on the difference between VrA″ and VrA′, or the difference between VrB″ and VrB′, or based on a combination of the two differences. Again, note that process 1000 is not performed to determine VrC″ in this embodiment. Therefore, the value for VrC″ may be used in step 1252 (see FIG. 12) without performing process 1000.
  • It may be that suitable read levels for different word lines within the same block are very close to one another. Therefore, instead of dynamically determining read levels for each word line (using a process such as process 800 or 1000), the dynamically determined levels from one word line, may be saved on a temporary register in the memory, from which it could be read, and used for read on another word line. In one embodiment, the same read levels are used on all word lines. However, there may be some word line to word line variation. Therefore, such variations may be accounted for.
  • FIG. 14A is a flowchart of one embodiment of a process 1400 of using dynamically determined read levels from one word line for another word line. In step 1402, read levels are dynamically determined for WLn. In one embodiment, process 800 is used. In one embodiment, process 1000 is used.
  • In step 1404, the dynamically determined read levels are stored in a temporary register. This register may be one the memory die 212 or off the memory die 212. For example, the read levels could be stored in the controller 244. The read levels may be stored in control circuitry 220 on the memory die 212. The read levels may be stored somewhere in the read circuits 230, or even in the memory array 200.
  • In step 1406, WLn+1 is read based on the stored read levels. In one embodiment, the very same read levels are used for more than one word line. In one embodiment, a word line dependency is used to determine read levels based on the stored read levels. For example, it might be that word lines near the drain select gate suffer more or suffer less than others to threshold voltage shifts. Therefore, this may be factored in to determining read levels for those word lines.
  • In step 1408, WLn+2 is read based on the stored read levels. In step 1410, WLn+m is read based on the stored read levels. Steps 1418-1410 may be similar to step 1406. However, as stated, word line dependencies may be factored in. The dashed arrow between steps 1408 and 1410 indicates that other word lines may be read. Note that word lines could be read in a different order than depicted in FIG. 14A.
  • Another way in which time can be saved when dynamically determining read levels is to sense more than one threshold voltage using the same voltage applied to a selected word line. This may be used in, for example, step 802 to read two of the read levels. Referring to FIG. 10, both the initial read of step 1002 and the second read at step 1008 may be performed using the same word line voltage. If more reads are deemed necessary in process 1000, then the third and fourth reads could be performed using the same word line voltage.
  • In one embodiment, dynamically determined read levels from one block may be used when reading another block. For example, a large chunk of memory may be written together and stored over multiple set of blocks, at about the same point in time. These blocks might remain largely untouched, and hence they may experience the same data-retention/thermal stress etc. It may then be expected that WLs in these blocks would show similar Vt shifts. Therefore, dynamically determined read levels from one block could be used for another.
  • FIG. 14B is a flowchart of one embodiment of a process 1450 of using dynamically determined read levels from one block in another. In step 1452, word lines in multiple blocks are programmed. This may occur at about the same point in time. In step 1454, blocks that were written at about the same point in time are tracked. In one embodiment, the controller 244 tracks these blocks. The controller 244 may note which blocks are written at about the same point in time, and then track which blocks are left in this state. If a block (or certain word lines therein) are programmed again, the controller 244 may exclude that block (or certain word lines) that were programmed.
  • In step 1456, read levels are dynamically determined for at least one word line in one of the tracked blocks. In step 1458, the dynamically determined read levels may be stored either on the memory die 212 or in the controller 244. In either case, the storage may be in a temporary register or permanent storage.
  • In step 1460, word lines in another one of the tracked blocks are read based on the dynamically determined read levels. This may involve directly using the dynamically determined read levels, or making some adjustment to the dynamically determined read levels prior to using them in the other block. Note that it is not required to perform step 1460 immediately after step 1458.
  • FIG. 15 is a flowchart of one embodiment of a process 1500 of sensing two different threshold voltages using a single word line voltage. In step 1502, a read pass voltage Vread is applied to unselected word lines. The read pass voltage may be sufficiently high to cause a memory cell to conduct regardless of its data state.
  • In step 1504, a read compare voltage Vcgry is applied to a selected word line. The read compare voltage is typically close to the threshold voltage(s) that are being tested for in process 1500. Note that applying the read compare voltage may cause a selected memory cell on a given NAND string to conduct. Moreover, the magnitude of the conduction current may be a function of the memory cell's threshold voltage. If the memory cell's threshold voltage is below the read compare voltage, then the memory cell may have a conduction current.
  • In step 1506, bit lines are sensed for a first length of time. In one embodiment, a capacitor that is coupled to a given bit line is charged prior to step 1506. Then, in step 1506, the capacitor is discharged by the conduction current (if any). If the conduction current is strong enough, then the capacitor voltage will drop to a level that indicates that the memory cell turned on (e.g., conducted a current).
  • Note that the longer time for which the capacitor is discharged (“sense time”), the further the capacitor voltage is expected to fall for the same conduction current. Therefore, the sense time may be selected to adjust for what threshold voltage is being sensed. In one embodiment, sensing with shorter sense time means the memory cell must have higher conduction current through the NAND string to be detected as being “on”, which means its Vt needs to be lower than what it needs to be if the sensing were done with a longer sense time.
  • In step 1508, bit lines are sensed for a second length of time. For example, the bit lines are sensed for a longer time in step 1508, which may test for a higher Vt than step 1508. Step 1508 may involve sensing the same sense capacitor as step 1506. Alternatively, two different sense capacitors may be used. In this case, a replica of the bit line current might be provided to the second capacitor.
  • In step 1510, the results from the first sense time are stored. In step 1512, results from the second sense time are stored. Since the first sense time is shorter, it tests for a lower threshold voltage. Therefore, the results for step 1510 are for VrA, whereas the results for step 1512 are for VrA+x mV. However, in another embodiment, the first sense time may be longer than the second sense time. In this case, the result for step 1510 are for VrA, whereas the result of step 1512 are for VrA−x mV, where x is >0.
  • Note that FIG. 15 is one embodiment for sensing two different Vts using the same word line voltage. In one embodiment, source-follower sensing is used instead. FIG. 16 is a flowchart of one embodiment of a process 1600 of reading using source-follower sensing. Process 1600 may be used during step 802 to read at two different levels using the same word line voltages. Process 1600 may be used during process 1000 to read at two different levels using the same word line voltages.
  • In step 1602, the common source line is charged up to Vdd˜2.5V. In step 1604, the selected bit lines are floated to charge up by current flowing from the common source line to the bit lines.
  • In step 1606, Vread is applied to the unselected word lines. In step 1608, Vcgrv is applied to the selected word line. Based on the threshold voltage of the selected memory cell on each NAND string, the memory cell may conduct a current. This current may flow from the source line to the bit line, thus charging the bit line. For a highly conductive cell, within certain sensing time, a higher current may flow, thus charging up the associated bit line to a higher voltage level. On the other hand, a non-conductive cell will not let any current flow, resulting in the bit line to stay at the initial level. Thus, by sensing the voltage level at the bit line, the state of the cell can be judged.
  • In step 1610, the bit lines are sensed for a first voltage level. In step 1612, the bit lines are sensed for a second voltage level. These two voltage levels are intended to test for slightly different threshold voltages. Thus, two threshold voltages that differ by, for example, 50 mV could be tested for using a single word line voltage. Note that for both process 1600 and 1500, multiple thresholds were sensed using a single word line voltage, as opposed to shifting word line voltage levels to sense at two different thresholds, as done in step 1006 of process 1000. Therefore, any additional time needed for the word lines to settle between two different reads at two different Vcgrv levels, is mitigated.
  • In one embodiment, the read levels that are used when dynamically determining read levels are different from each other by some set amount. For example, in process 1000 the second read (step 1008) may differ from the first read (step 1002) by 50 mV. Then, for the next iteration of step 1008, the read may be adjusted by another 50 mV. Note that this is one embodiment of step 802 in FIG. 8.
  • In one embodiment, rather than using different read levels with each successive read, the same read level may be used for the two most recent reads. Thus, in one embodiment of step 802, the same read levels is used for the two most recent reads. Note that this still allows for mis-compares to be counted. Since the read level is not changed, the mis-compares may be caused by read noise, which causes a memory cell's threshold voltage to fluctuate from one read to another. If the read level is close to the valley between two threshold voltage distributions, there are fewer memory cells close to the read level, which means only few memory cell's threshold voltage can jump around due to read noise. This means the mis-compare count should be low. On the other hand, if the read level is further away from the valley, then there will a larger population of memory cells at that point in the threshold voltage distribution, then there would be much larger number of cells that can jump around in threshold voltage and count as mis-compare. Thus, the mis-compare count can still be used as a measure that is related to misreads (or fail bit count). Note that using the same read level for two reads may save time because the word line does not need to be ramped to a different voltage between the two successive reads.
  • FIG. 17 depicts a flowchart of one embodiment of a process 1700 for dynamically determining read levels. Process 1700 uses the same read levels for the two most recent reads. Process 1700 is one embodiment of process 800. Since process 1700 is similar to process 1000 it will not be described in great detail.
  • In step 1701, MaxReads is initialized to zero. In step 1702, a first read is performed. This read is at an initial read level, which could be a default read level, the last read level used for this memory die 212, block, word line, etc. The read level might the last read level for some other word line in the block, a different block in the die, etc. In step 1704, results of the first read are transferred into a first set of data latches.
  • In step 1706, a second read is performed at the same level as step 1702. Note that no shift is made, in the voltage on the selected word line, thus saving time. In step 1710, results of the second read are transferred into a second set of data latches.
  • In step 1712, data in the first and second sets of latches are compared. In step 1714, a determination is made as to whether the mis-compares are less than some threshold number. The threshold number may be established such that it correlates to a misread count. For example, the misread count may be one that can be corrected by an ECC algorithm. In one embodiment, the mis-compare count is expected to be less when the read level is close to the optimum read level. As noted above, one possible reason for a lower mis-compare count is that the mis-compare count may be a function of noise. Near the optimum read level, there are fewer memory cells. Therefore, there should be fewer memory cells impacted by noise, in one embodiment.
  • If the mis-compare count is not less than the threshold, then MaxReads is incremented in step 1715. If MaxReads is over the limit (step 1716), then the process ends. Provided that the maximum number of iterations has not been performed, the data from the second set of latches is transferred to the first set of latches, in step 1717. In step 1718, the read level is shifted. In one embodiment, the read level is shifted in the direction that threshold voltage distributions are expected to move. For example, the read level may be shifted down. The read level may be shifted by any amount. In one embodiment, the amount of shift is a function of the mis-compare count. For example, the mis-compare count may, in some cases, suggest how far the read level was from the valley between two threshold voltage distributions. Thus, if mis-compare count is high, the read level for next iteration may be shifted by a larger amount, without much risk of skipping over the optimum read position which generally occurs at the valley position between the adjacent states. Similarly, small shift amounts may be used if mis-compare count is lower.
  • Then, steps 1702-1714 are repeated with the new read level. Eventually, the mis-compare count should be less than the threshold. When it is, the data from the second set of latches may be used, in step 1719. Note that in one embodiment, the data from the first set of latches could be used instead.
  • In step 1720, the dynamic read level is established based on the last read level. Note that in this case, the last read level was used in each of the last two reads. This dynamic read level may be stored for later use. It may be used when later reading the same unit (e.g., word line, block, memory die). It may also be used when reading some other unit. For example, it may be used when reading a different word line in the same block. It could also be used to help determine read levels for distinguishing between other states.
  • In some embodiments, dynamic read levels are determined in the field. In one embodiment, read levels are dynamically determined during wafer sort, or some other time prior to shipping the memory device. Note that this may be used to establish default read levels. Moreover, these default read levels may be tuned for different units (e.g., memory die, block, word line, etc.). Thus, in one embodiment, separate default read levels for different units are stored on the memory device.
  • One embodiment includes a method of operating non-volatile storage. The method comprises reading a group of non-volatile storage elements on a memory die at a first set of read levels. The group of non-volatile storage elements store a plurality of data states. Results of the two most recent of the read levels are stored on the memory die. A count of how many of the non-volatile storage elements in the group showed a different result between the reads for the two most recent read levels is determined. The determining is performed on the memory die using the results stored on the memory die. A dynamic read level is determined for distinguishing between a first pair of adjacent data states of the plurality of data states based on the read level when the count reaches a pre-determined criterion.
  • One embodiment includes a non-volatile storage device, comprising a memory die, a group of non-volatile storage elements on the memory die, and one or more management circuits in communication with the group of non-volatile storage elements. The group of non-volatile storage elements store a plurality of data states. The one or more management circuits read the group of non-volatile storage elements at a first set of read levels. The one or more management circuits store results of the two most recent of the read levels on the memory die. The one or more management circuits determine a count of how many of the non-volatile storage elements in the group showed a different result between the reads at the two most recent read levels. The one or more management circuits determine the count on the memory die using the results stored on the memory die. The one or more management circuits establish an adjusted read level for distinguishing between a first pair of adjacent data states of the plurality of data states based on the read level when the count reaches a pre-determined criterion.
  • One embodiment includes a method of operating non-volatile storage, comprising the following. A determination is made whether each non-volatile storage element in a group of non-volatile storage elements on a memory die have a threshold voltage that is above a first level. The group of non-volatile storage elements store a plurality of data states, some of the non-volatile storage elements in the group store error codes. Indications of whether each of the non-volatile storage elements in the group have a threshold voltage that is above the first level are stored on the memory die. A determination is made whether each non-volatile storage element in the group has a threshold voltage that is above a second level. Indications of whether each of the non-volatile storage elements in the group have a threshold voltage that is above the second level are stored on the memory die. A count of how many of the non-volatile storage elements have a threshold voltage that is between the first level and the second level is determined. The determining is performed on the memory die based on the stored indications. A determination is made whether the count is less than a threshold amount. The threshold amount corresponds to a level of errors that can be corrected using the error codes. One of the first level or the second level is established as a level for distinguishing between a pair of the data states if the count is less than the threshold amount.
  • One embodiment includes a method of operating non-volatile storage, comprising: reading a group of non-volatile storage elements on a memory die at a first read level, the non-volatile storage elements store a plurality of data states, the first read level is near a read level for distinguishing between two data states of the plurality of data states; storing, in a first data latch on the memory die, first results of the read at the first level for each of the non-volatile storage elements in the group; reading the group of non-volatile storage elements at a second read level, the second read level is near the read level for distinguishing between the two data states, the first and second read levels test for different threshold voltages; storing, in a second data latch on the memory die, second results of the read at the second level for each of the non-volatile storage elements in the group; performing an XOR between the first results in the first data latch and the second results in the second data latch to produce a mis-compare count; and using one of the first results or the second results as results for distinguishing between the two data states if the mis-compare count is less than a threshold amount.
  • One embodiment includes a non-volatile storage device, comprising: a memory die; a group of non-volatile storage elements on the memory die, the group of non-volatile storage elements store a plurality of data states; a first data latch on the memory die; a second data latch on the memory die; and one or more management circuits in communication with the group of non-volatile storage elements. The one or more management circuits read the group of non-volatile storage elements at a first read level, the first read level is near a read level for distinguishing between two data states of the plurality of data states. The one or more management circuits store first results of the read at the first level for each of the non-volatile storage elements in the group in the first data latch. The one or more management circuits read the group of non-volatile storage elements at a second read level. The second read level is near the read level for distinguishing between the two data states. The first and second read levels test for different threshold voltages. The one or more management circuits store second results of the read at the second level for each of the non-volatile storage elements in the group in the second data latch. The one or more management circuits perform an XOR between the first results in the first data latch and the second results in the second data latch to produce a mis-compare count. The one or more management circuits use one of the first results or the second results as results for distinguishing between the two data states if the mis-compare count is less than a threshold amount.
  • The foregoing detailed description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit embodiments to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain principles and practical applications, to thereby enable others skilled in the art to best utilize various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of embodiments be defined by the claims appended hereto.

Claims (25)

What is claimed is:
1. A method of operating non-volatile storage, comprising:
reading a group of non-volatile storage elements on a memory die at a first set of read levels, the group of non-volatile storage elements store a plurality of data states;
storing, on the memory die, results of the two most recent of the read levels;
determining a count of how many of the non-volatile storage elements in the group showed a different result between the reads for the two most recent read levels, the determining is performed on the memory die using the results stored on the memory die; and
establishing a dynamic read level for distinguishing between a first pair of adjacent data states of the plurality of data states based on the read level when the count reaches a pre-determined criterion.
2. The method of claim 1, wherein a portion of the group of non-volatile storage elements store error correction codes, the count reaching the pre-determined criterion includes the count being below a threshold amount that corresponds to a level that can be corrected by applying error correction using the error correction codes.
3. The method of claim 1, wherein the count reaching the pre-determined criterion includes the count reaching a minimum.
4. The method of claim 1, wherein the read levels differ from each other by a uniform step size.
5. The method of claim 4, wherein the dynamic read level is a first dynamic read level, and further comprising:
reading the group of non-volatile storage elements at a second set of read levels that differ from each other by the uniform step size;
storing, on the memory die, results of the two most recent of the second set of read levels; and
determining a count of how many of the non-volatile storage elements in the group showed a different result between the reads for the two most recent read levels in the second set, the determining is performed on the memory die using the results stored on the memory die; and
establishing a second dynamic read level for distinguishing between a second pair of adjacent data states of the plurality of data states based on the read level when the count reaches a pre-determined criterion.
6. The method of claim 5, further comprising:
determining an initial read level for the second set of read levels based on the first dynamic read level for distinguishing between the first pair of adjacent data states.
7. The method of claim 1, wherein a first read level in the first set of read levels is a default read level and a second read level in the first set of read levels is in a direction in which threshold distributions of the group of non-volatile storage elements are expected to move over time.
8. The method of claim 1, wherein the group of non-volatile storage elements are associated with a first word line, and further comprising using the first dynamic read level as an initial read level for distinguishing between the first pair of adjacent data states for non-volatile storage elements associated with other word lines.
9. The method of claim 1, wherein at least two read levels in the first set of read levels have the same magnitude.
10. The method of claim 1, wherein the storing results of the read at each the read levels includes storing results from reading at a first of the read levels in a first data latch and storing results from reading at a second of the read levels in a second data latch, the determining a count of how many of the non-volatile storage elements in the group showed a different result between the reads at the two most recent read levels includes performing an XOR of the results in the first data latch with the results in the second data latch.
11. A non-volatile storage device, comprising:
a memory die;
a group of non-volatile storage elements on the memory die, the group of non-volatile storage elements store a plurality of data states;
one or more management circuits in communication with the group of non-volatile storage elements, the one or more management circuits read the group of non-volatile storage elements at a first set of read levels, the one or more management circuits store results of the two most recent of the read levels on the memory die, the one or more management circuits determine a count of how many of the non-volatile storage elements in the group showed a different result between the reads at the two most recent read levels, the one or more management circuits determine the count on the memory die using the results stored on the memory die, the one or more management circuits establish an adjusted read level for distinguishing between a first pair of adjacent data states of the plurality of data states based on the read level when the count reaches a pre-determined criterion.
12. The non-volatile storage device of claim 11, wherein some non-volatile storage elements in the group of non-volatile storage elements store error correction codes, the one or more management circuits determine whether the count reaches a threshold amount that corresponds to a level that can be corrected by applying error correction using the error correction codes to determine whether the count reaches the pre-determined criterion.
13. The non-volatile storage device of claim 11, wherein the one or more management circuits determine whether the count reaches a minimum to determine whether the count reaches the pre-determined criterion.
14. The non-volatile storage device of claim 11, wherein the read levels in the first set differ from each other by a uniform step size.
15. The non-volatile storage device of claim 14, wherein:
the one or more management circuits read the group of non-volatile storage elements at a second set of read levels that differ from each other by a step size, the one or more management circuits store results of the two most recent of the second set of read levels on the memory die, the one or more management circuits determine a count of how many of the non-volatile storage elements in the group showed a different result between the reads for the two most recent read levels in the second set, the determining is performed on the memory die using the results stored on the memory die, the one or more management circuits establish an adjusted read level for distinguishing between a second pair of adjacent data states the plurality of data states based on the read level when the count reaches a pre-determined criterion.
16. The non-volatile storage device of claim 15, wherein:
the one or more management circuits determine an initial read level of the second set of read levels based on the adjusted read level for distinguishing between the first pair of adjacent data states.
17. The non-volatile storage device of claim 11, further comprising:
a plurality of word lines, the group of non-volatile storage elements are a first group of non-volatile storage elements associated with a first word line of the plurality of word lines,
a second group of non-volatile storage elements is associated with a second word line of the plurality of word lines,
the one or more management circuits use the adjusted read level as an initial read level to distinguish between the first pair of adjacent data states for the second group of non-volatile storage elements.
18. The non-volatile storage device of claim 11, wherein at least two successive read levels in the first set of read levels have the same magnitude.
19. The non-volatile storage device of claim 11, further comprising:
a first data latch on the memory die and a second data latch on the memory die,
logic for performing an XOR between the first data latch and the second data latch,
the one or more management circuits store results from reading at a first of the read levels in the first data latch, the one or more management circuits store results from reading at a second of the read levels in the second data latch, the one or more management circuits determine the count by performing an XOR of the results in the first data latch with the results in the second data latch.
20. A method of operating non-volatile storage, comprising:
a) determining whether each non-volatile storage element in a group of non-volatile storage elements on a memory die have a threshold voltage that is above a first level, the group of non-volatile storage elements store a plurality of data states, some of the non-volatile storage elements in the group store error codes;
b) storing, on the memory die, indications of whether each of the non-volatile storage elements in the group have a threshold voltage that is above the first level;
c) determining whether each non-volatile storage element in the group has a threshold voltage that is above a second level;
d) storing, on the memory die, indications of whether each of the non-volatile storage elements in the group have a threshold voltage that is above the second level;
e) determining a count of how many of the non-volatile storage elements have a threshold voltage that is between the first level and the second level, the determining is performed on the memory die based on the stored indications;
f) determining whether the count is less than a threshold amount, the threshold amount corresponds to a level of errors that can be corrected using the error codes;
g) establishing one of the first level or the second level as a level for distinguishing between a pair of the data states if the count is less than the threshold amount.
21. The method of claim 20, further comprising:
repeating said a)-said g) until the count is less than the threshold amount, the non-volatile storage elements are tested for a different first and second threshold voltage level with each repetition.
22. A method of operating non-volatile storage, comprising:
reading a group of non-volatile storage elements on a memory die at a first read level, the non-volatile storage elements store a plurality of data states, the first read level is near a read level for distinguishing between two data states of the plurality of data states;
storing, in a first data latch on the memory die, first results of the read at the first level for each of the non-volatile storage elements in the group;
reading the group of non-volatile storage elements at a second read level, the second read level is near the read level for distinguishing between the two data states, the first and second read levels test for different threshold voltages;
storing, in a second data latch on the memory die, second results of the read at the second level for each of the non-volatile storage elements in the group;
performing an XOR between the first results in the first data latch and the second results in the second data latch to produce a mis-compare count; and
using one of the first results or the second results as results for distinguishing between the two data states if the mis-compare count is less than a threshold amount.
23. The method of claim 22, wherein some of the non-volatile storage elements in the group store error codes, the threshold amount is based on a number of errors that can be corrected using the stored error codes.
24. A non-volatile storage device, comprising:
a memory die;
a group of non-volatile storage elements on the memory die, the group of non-volatile storage elements store a plurality of data states;
a first data latch on the memory die;
a second data latch on the memory die; and
one or more management circuits in communication with the group of non-volatile storage elements, the one or more management circuits read the group of non-volatile storage elements at a first read level, the first read level is near a read level for distinguishing between two data states of the plurality of data states,
the one or more management circuits store first results of the read at the first level for each of the non-volatile storage elements in the group in the first data latch, the one or more management circuits read the group of non-volatile storage elements at a second read level, the second read level is near the read level for distinguishing between the two data states, the first and second read levels test for different threshold voltages, the one or more management circuits store second results of the read at the second level for each of the non-volatile storage elements in the group in the second data latch, the one or more management circuits perform an XOR between the first results in the first data latch and the second results in the second data latch to produce a mis-compare count, the one or more management circuits use one of the first results or the second results as results for distinguishing between the two data states if the mis-compare count is less than a threshold amount.
25. The non-volatile storage device of claim 24, wherein the threshold amount is based on an error correction code (ECC) limit.
US13/239,194 2011-09-21 2011-09-21 On chip dynamic read for non-volatile storage Active US8406053B1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
US13/239,194 US8406053B1 (en) 2011-09-21 2011-09-21 On chip dynamic read for non-volatile storage
KR1020147009469A KR101961975B1 (en) 2011-09-21 2012-09-13 On chip dynamic read for non-volatile storage
CN201280043430.0A CN103843067B (en) 2011-09-21 2012-09-13 Read for dynamic on the piece of nonvolatile memory
PCT/US2012/055046 WO2013043446A1 (en) 2011-09-21 2012-09-13 On chip dynamic read for non-volatile storage
EP12762734.7A EP2758963B1 (en) 2011-09-21 2012-09-13 On chip determined dynamic read reference level for non-volatile storage
TW101134816A TW201322260A (en) 2011-09-21 2012-09-21 On chip dynamic read for non-volatile storage
US13/759,700 US8576624B2 (en) 2011-09-21 2013-02-05 On chip dynamic read for non-volatile storage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/239,194 US8406053B1 (en) 2011-09-21 2011-09-21 On chip dynamic read for non-volatile storage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/759,700 Division US8576624B2 (en) 2011-09-21 2013-02-05 On chip dynamic read for non-volatile storage

Publications (2)

Publication Number Publication Date
US20130070524A1 true US20130070524A1 (en) 2013-03-21
US8406053B1 US8406053B1 (en) 2013-03-26

Family

ID=46924558

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/239,194 Active US8406053B1 (en) 2011-09-21 2011-09-21 On chip dynamic read for non-volatile storage
US13/759,700 Active US8576624B2 (en) 2011-09-21 2013-02-05 On chip dynamic read for non-volatile storage

Family Applications After (1)

Application Number Title Priority Date Filing Date
US13/759,700 Active US8576624B2 (en) 2011-09-21 2013-02-05 On chip dynamic read for non-volatile storage

Country Status (6)

Country Link
US (2) US8406053B1 (en)
EP (1) EP2758963B1 (en)
KR (1) KR101961975B1 (en)
CN (1) CN103843067B (en)
TW (1) TW201322260A (en)
WO (1) WO2013043446A1 (en)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130107623A1 (en) * 2011-11-01 2013-05-02 Micron Technology, Inc. Memory cell sensing
US20130135932A1 (en) * 2011-11-24 2013-05-30 Samsung Electronics Co., Ltd. Non-volatile memory, method of operating the same, memory system including the same, and method of operating the system
US20140237200A1 (en) * 2013-02-20 2014-08-21 Apple Inc. Readout of interfering memory cells using estimated interference to other memory cells
US20140245089A1 (en) * 2013-02-28 2014-08-28 Kabushiki Kaisha Toshiba Semiconductor memory device
US20140269055A1 (en) * 2013-03-15 2014-09-18 Kabushiki Kaisha Toshiba Semiconductor memory device
US20150340086A1 (en) * 2014-05-23 2015-11-26 Micron Technology, Inc. Threshold voltage analysis
US9672928B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Method and apparatus for estimating read levels of nonvolatile memory and for programming pilot signals used for such estimation
US9805809B1 (en) * 2016-08-31 2017-10-31 Sandisk Technologies Llc State-dependent read compensation
US20180054279A1 (en) * 2015-03-10 2018-02-22 Coriant Oy Methods and devices for managing transfer of data frames
US9952944B1 (en) * 2016-10-25 2018-04-24 Sandisk Technologies Llc First read solution for memory
US20180114580A1 (en) * 2016-10-25 2018-04-26 Sandisk Technologies Llc Command Sequence For First Read Solution For Memory
WO2018111363A1 (en) * 2016-12-16 2018-06-21 Sandisk Technologies Llc Dynamic read table generation
US10026486B1 (en) 2017-03-06 2018-07-17 Sandisk Technologies Llc First read countermeasures in memory
US20190035485A1 (en) * 2017-07-25 2019-01-31 Apple Inc. Syndrome Weight Based Evaluation of Memory Cells Performance Using Multiple Sense Operations
US10199111B1 (en) 2017-08-04 2019-02-05 Micron Technology, Inc. Memory devices with read level calibration
US10347315B2 (en) 2017-10-31 2019-07-09 Sandisk Technologies Llc Group read refresh
US10529433B1 (en) 2018-08-13 2020-01-07 Micron Technology, Inc. Offset memory component automatic calibration (AUTOCAL) error recovery for a memory sub-system
US10622075B2 (en) * 2017-12-12 2020-04-14 Sandisk Technologies Llc Hybrid microcontroller architecture for non-volatile memory
US10950316B2 (en) * 2018-12-28 2021-03-16 Micron Technology, Inc. Apparatus for determining a pass voltage of a read operation
US11074982B2 (en) * 2012-02-23 2021-07-27 Micron Technology, Inc. Memory configured to perform logic operations on values representative of sensed characteristics of data lines and a threshold data value
US20210350856A1 (en) * 2020-05-07 2021-11-11 Micron Technology, Inc. Improved reading of soft bits and hard bits from memory cells
US11221800B2 (en) 2020-03-02 2022-01-11 Micron Technology, Inc. Adaptive and/or iterative operations in executing a read command to retrieve data from memory cells
US11403042B2 (en) 2020-03-02 2022-08-02 Micron Technology, Inc. Self adapting iterative read calibration to retrieve data from memory cells
US11474748B2 (en) 2020-03-02 2022-10-18 Micron Technology, Inc. Compound feature generation in classification of error rate of data retrieved from memory cells
US11514983B2 (en) 2021-04-02 2022-11-29 Micron Technology, Inc. Identify the programming mode of memory cells based on cell statistics obtained during reading of the memory cells
US11562793B2 (en) 2020-05-07 2023-01-24 Micron Technology, Inc. Read soft bits through boosted modulation following reading hard bits
US11615854B2 (en) 2021-04-02 2023-03-28 Micron Technology, Inc. Identify the programming mode of memory cells during reading of the memory cells
US11657886B2 (en) 2020-05-07 2023-05-23 Micron Technology, Inc. Intelligent proactive responses to operations to read data from memory cells
US11664073B2 (en) 2021-04-02 2023-05-30 Micron Technology, Inc. Adaptively programming memory cells in different modes to optimize performance
US11740970B2 (en) 2020-03-02 2023-08-29 Micron Technology, Inc. Dynamic adjustment of data integrity operations of a memory system based on error rate classification
US11880571B2 (en) 2020-05-13 2024-01-23 Micron Technology, Inc. Counter-based methods and systems for accessing memory cells

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458536B2 (en) 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
US9036417B2 (en) 2012-09-06 2015-05-19 Sandisk Technologies Inc. On chip dynamic read level scan and error detection for nonvolatile storage
US9530515B2 (en) 2013-03-13 2016-12-27 Sandisk Technologies Llc Determining read voltages for reading memory
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9390008B2 (en) 2013-12-11 2016-07-12 Sandisk Technologies Llc Data encoding for non-volatile memory
US9129701B2 (en) * 2013-12-19 2015-09-08 Sandisk Technologies Inc. Asymmetric state detection for non-volatile storage
KR102218722B1 (en) 2014-06-09 2021-02-24 삼성전자주식회사 Nonvolatile memory system and operating method of memory controller
KR102290974B1 (en) 2014-11-07 2021-08-19 삼성전자주식회사 Operating method for nonvolatile memory device, memory controller, and nonvolatile memory system including them
US9720754B2 (en) 2014-11-20 2017-08-01 Western Digital Technologies, Inc. Read level grouping for increased flash performance
US9576671B2 (en) 2014-11-20 2017-02-21 Western Digital Technologies, Inc. Calibrating optimal read levels
US9905302B2 (en) 2014-11-20 2018-02-27 Western Digital Technologies, Inc. Read level grouping algorithms for increased flash performance
CN105825894B (en) * 2015-01-07 2019-10-01 华邦电子股份有限公司 Memory reading method and digital memory device
JP6378102B2 (en) 2015-01-28 2018-08-22 東芝メモリ株式会社 Semiconductor device and reading method
US9472298B1 (en) * 2015-05-13 2016-10-18 Sandisk Technologies Llc Dynamic read valley search in non-volatile memory
KR102412781B1 (en) 2015-11-03 2022-06-24 삼성전자주식회사 Non-volatile memory device and method of reading non-volatile memory device
KR102585221B1 (en) * 2016-04-21 2023-10-05 삼성전자주식회사 Memory Device, Memory System and Method of Operating Memory Device
KR20180070974A (en) 2016-12-19 2018-06-27 삼성전자주식회사 Read operation method of nonvoltile memory, memory system including the same and operation method thereof
CN106683703B (en) * 2017-03-15 2023-09-15 珠海零边界集成电路有限公司 Data reading method, integrated circuit and chip
US10418097B2 (en) * 2017-11-27 2019-09-17 Western Digital Technologies, Inc. Non-volatile storage system with read calibration
KR102427638B1 (en) 2018-01-10 2022-08-01 삼성전자주식회사 Non-volatile memory device and read method thereof
KR102402668B1 (en) 2018-02-26 2022-05-26 삼성전자주식회사 Non-volatile memory device, operating method thereof and storage device including the same
KR102470726B1 (en) * 2018-03-14 2022-11-25 삼성전자주식회사 Non-volatile memory device
CN110751276A (en) * 2018-07-24 2020-02-04 闪迪技术有限公司 Implementing neural networks with ternary inputs and binary weights in NAND memory arrays
TWI690930B (en) * 2019-01-09 2020-04-11 力晶積成電子製造股份有限公司 Method of compensating charge loss and source line bias in programing of non-volatile memory device
US10872671B1 (en) 2019-06-13 2020-12-22 Sandisk Technologies Llc Dynamic read voltages in non-volatile memory
US10998041B1 (en) * 2020-05-07 2021-05-04 Western Digital Technologies, Inc. Calibrating non-volatile memory read thresholds
US11238953B2 (en) * 2020-05-07 2022-02-01 Micron Technology, Inc. Determine bit error count based on signal and noise characteristics centered at an optimized read voltage
US10991444B1 (en) 2020-05-28 2021-04-27 Western Digital Technologies, Inc. Tiered read reference calibration
JP2021190150A (en) 2020-06-02 2021-12-13 キオクシア株式会社 Memory system and memory controller
US11488682B2 (en) 2020-06-24 2022-11-01 Sandisk Technologies Llc Calibration for integrated memory assembly
US11049547B1 (en) 2020-08-05 2021-06-29 Samsung Electronics Co., Ltd. Non-volatile memory device, operating method thereof, and storage device including the non-volatile memory device
KR20220086733A (en) 2020-12-16 2022-06-24 삼성전자주식회사 Memory controller, memory device and storage device
KR20230005634A (en) * 2021-07-01 2023-01-10 에스케이하이닉스 주식회사 Storage device performing read operation and operating method thereof

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (en) 1993-09-21 1999-02-01 사토 후미오 Nonvolatile semiconductor memory device
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US7177197B2 (en) * 2001-09-17 2007-02-13 Sandisk Corporation Latched programming of memory and method
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US7196931B2 (en) 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
US7046568B2 (en) 2002-09-24 2006-05-16 Sandisk Corporation Memory sensing circuit and method for low voltage operation
US7327619B2 (en) 2002-09-24 2008-02-05 Sandisk Corporation Reference sense amplifier for non-volatile memory
US20040153902A1 (en) 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US20060140007A1 (en) 2004-12-29 2006-06-29 Raul-Adrian Cernea Non-volatile memory and method with shared processing for an aggregate of read/write circuits
US7196928B2 (en) 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
US7471562B2 (en) 2006-05-08 2008-12-30 Macronix International Co., Ltd. Method and apparatus for accessing nonvolatile memory with read error by changing read reference
US7844878B2 (en) 2006-08-09 2010-11-30 Microsoft Corporation Dynamic electronic correction code feedback to extend memory device lifetime
US7903468B2 (en) 2007-04-23 2011-03-08 Ramot At Telaviv University Ltd. Adaptive dynamic reading of flash memories
US8073648B2 (en) 2007-05-14 2011-12-06 Sandisk Il Ltd. Measuring threshold voltage distribution in memory using an aggregate characteristic
US7613045B2 (en) 2007-11-26 2009-11-03 Sandisk Il, Ltd. Operation sequence and commands for measuring threshold voltage distribution in memory
US7957187B2 (en) * 2008-05-09 2011-06-07 Sandisk Corporation Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution
US7808831B2 (en) * 2008-06-30 2010-10-05 Sandisk Corporation Read disturb mitigation in non-volatile memory
US8458536B2 (en) * 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
KR101391362B1 (en) * 2008-07-23 2014-05-07 삼성전자주식회사 Flash memory system configuring reading voltage level and configuration method of reading voltage level
US7859932B2 (en) 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage
US8027195B2 (en) 2009-06-05 2011-09-27 SanDisk Technologies, Inc. Folding data stored in binary format into multi-state format within non-volatile memory devices
KR101603099B1 (en) * 2009-10-01 2016-03-28 삼성전자주식회사 A memory system detecting th distributionof unstable memory cell and the method for detecting the distribution of unstable memory cell
KR20120010924A (en) * 2010-07-27 2012-02-06 엘지전자 주식회사 Refrigerator with ice feeding means
US8358542B2 (en) * 2011-01-14 2013-01-22 Micron Technology, Inc. Methods, devices, and systems for adjusting sensing voltages in devices
US8631288B2 (en) * 2011-03-14 2014-01-14 Micron Technology, Inc. Methods, devices, and systems for data sensing in a memory system

Cited By (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130107623A1 (en) * 2011-11-01 2013-05-02 Micron Technology, Inc. Memory cell sensing
US8891297B2 (en) * 2011-11-01 2014-11-18 Micron Technology, Inc. Memory cell sensing
KR101858560B1 (en) 2011-11-24 2018-05-18 삼성전자주식회사 Method for operating non-volatile memory device and method for operating memory system having the same
US20130135932A1 (en) * 2011-11-24 2013-05-30 Samsung Electronics Co., Ltd. Non-volatile memory, method of operating the same, memory system including the same, and method of operating the system
US8885409B2 (en) * 2011-11-24 2014-11-11 Samsung Electronics Co., Ltd. Non-volatile memory, method of operating the same, memory system including the same, and method of operating the system
US9396796B2 (en) 2011-11-24 2016-07-19 Samsung Electronics Co., Ltd. Memory system including nonvolatile memory devices which contain multiple page buffers and control logic therein that support varying read voltage level test operations
US11074982B2 (en) * 2012-02-23 2021-07-27 Micron Technology, Inc. Memory configured to perform logic operations on values representative of sensed characteristics of data lines and a threshold data value
US20140237200A1 (en) * 2013-02-20 2014-08-21 Apple Inc. Readout of interfering memory cells using estimated interference to other memory cells
US9530516B2 (en) 2013-02-20 2016-12-27 Apple Inc. Readout of interfering memory cells using estimated interference to other memory cells
US9135972B2 (en) * 2013-02-20 2015-09-15 Apple Inc. Readout of interfering memory cells using estimated interference to other memory cells
US20140245089A1 (en) * 2013-02-28 2014-08-28 Kabushiki Kaisha Toshiba Semiconductor memory device
US9129711B2 (en) * 2013-02-28 2015-09-08 Kabushiki Kaisha Toshiba Semiconductor memory device
US9190159B2 (en) * 2013-03-15 2015-11-17 Kabushiki Kaisha Toshiba Semiconductor memory device
US20140269055A1 (en) * 2013-03-15 2014-09-18 Kabushiki Kaisha Toshiba Semiconductor memory device
US20150340086A1 (en) * 2014-05-23 2015-11-26 Micron Technology, Inc. Threshold voltage analysis
US9659639B2 (en) 2014-05-23 2017-05-23 Micron Technology, Inc. Threshold voltage analysis
TWI581272B (en) * 2014-05-23 2017-05-01 美光科技公司 Threshold voltage analysis
KR101891429B1 (en) * 2014-05-23 2018-09-28 마이크론 테크놀로지, 인크 Threshold voltage analysis
US9455029B2 (en) * 2014-05-23 2016-09-27 Micron Technology, Inc. Threshold voltage analysis
US10554339B2 (en) * 2015-03-10 2020-02-04 Coriant Oy Methods and devices for managing transfer of data frames
US20180054279A1 (en) * 2015-03-10 2018-02-22 Coriant Oy Methods and devices for managing transfer of data frames
US9672928B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Method and apparatus for estimating read levels of nonvolatile memory and for programming pilot signals used for such estimation
US9805809B1 (en) * 2016-08-31 2017-10-31 Sandisk Technologies Llc State-dependent read compensation
WO2018080644A1 (en) * 2016-10-25 2018-05-03 Sandisk Technologies Llc Dynamic read for a nand memory
US20180114580A1 (en) * 2016-10-25 2018-04-26 Sandisk Technologies Llc Command Sequence For First Read Solution For Memory
US20180113759A1 (en) * 2016-10-25 2018-04-26 Sandisk Technologies Llc First Read Solution For Memory
US9952944B1 (en) * 2016-10-25 2018-04-24 Sandisk Technologies Llc First read solution for memory
US10394649B2 (en) 2016-10-25 2019-08-27 Sandisk Technologies Llc First read solution for memory
US10372536B2 (en) 2016-10-25 2019-08-06 Sandisk Technologies Llc First read solution for memory
US10262743B2 (en) * 2016-10-25 2019-04-16 Sandisk Technologies Llc Command sequence for first read solution for memory
WO2018111363A1 (en) * 2016-12-16 2018-06-21 Sandisk Technologies Llc Dynamic read table generation
US20180173447A1 (en) * 2016-12-16 2018-06-21 Sandisk Technologies Llc Dynamic read table generation
US10558381B2 (en) * 2016-12-16 2020-02-11 Sandisk Technologies Llc Dynamic read table generation
US10229744B2 (en) 2017-03-06 2019-03-12 Sandisk Technologies Llc First read countermeasures in memory
US10026486B1 (en) 2017-03-06 2018-07-17 Sandisk Technologies Llc First read countermeasures in memory
US20190035485A1 (en) * 2017-07-25 2019-01-31 Apple Inc. Syndrome Weight Based Evaluation of Memory Cells Performance Using Multiple Sense Operations
US10388394B2 (en) * 2017-07-25 2019-08-20 Apple Inc. Syndrome weight based evaluation of memory cells performance using multiple sense operations
US10510422B2 (en) 2017-08-04 2019-12-17 Micron Technology, Inc. Memory devices with read level calibration
US10199111B1 (en) 2017-08-04 2019-02-05 Micron Technology, Inc. Memory devices with read level calibration
KR20200028492A (en) * 2017-08-04 2020-03-16 마이크론 테크놀로지, 인크 Memory device with read level calibration
KR102172893B1 (en) 2017-08-04 2020-11-03 마이크론 테크놀로지, 인크 Memory device with read level calibration function
WO2019027799A1 (en) * 2017-08-04 2019-02-07 Micron Technology, Inc. Memory devices with read level calibration
US10347315B2 (en) 2017-10-31 2019-07-09 Sandisk Technologies Llc Group read refresh
US10622075B2 (en) * 2017-12-12 2020-04-14 Sandisk Technologies Llc Hybrid microcontroller architecture for non-volatile memory
US10529433B1 (en) 2018-08-13 2020-01-07 Micron Technology, Inc. Offset memory component automatic calibration (AUTOCAL) error recovery for a memory sub-system
US11715530B2 (en) 2018-08-13 2023-08-01 Micron Technology, Inc. Offset memory component automatic calibration (autocal) error recovery for a memory sub-system
US11361833B2 (en) 2018-08-13 2022-06-14 Micron Technology, Inc. Offset memory component automatic calibration (autocal) error recovery for a memory subsystem
US10950316B2 (en) * 2018-12-28 2021-03-16 Micron Technology, Inc. Apparatus for determining a pass voltage of a read operation
US11309039B2 (en) 2018-12-28 2022-04-19 Micron Technology, Inc. Apparatus for determining a pass voltage of a read operation
US11221800B2 (en) 2020-03-02 2022-01-11 Micron Technology, Inc. Adaptive and/or iterative operations in executing a read command to retrieve data from memory cells
US11775217B2 (en) 2020-03-02 2023-10-03 Micron Technology, Inc. Adaptive and/or iterative operations in executing a read command to retrieve data from memory cells
US11403042B2 (en) 2020-03-02 2022-08-02 Micron Technology, Inc. Self adapting iterative read calibration to retrieve data from memory cells
US11474748B2 (en) 2020-03-02 2022-10-18 Micron Technology, Inc. Compound feature generation in classification of error rate of data retrieved from memory cells
US11762599B2 (en) 2020-03-02 2023-09-19 Micron Technology, Inc. Self adapting iterative read calibration to retrieve data from memory cells
US11740970B2 (en) 2020-03-02 2023-08-29 Micron Technology, Inc. Dynamic adjustment of data integrity operations of a memory system based on error rate classification
US11726719B2 (en) 2020-03-02 2023-08-15 Micron Technology, Inc. Compound feature generation in classification of error rate of data retrieved from memory cells
US11257546B2 (en) * 2020-05-07 2022-02-22 Micron Technology, Inc. Reading of soft bits and hard bits from memory cells
US11657886B2 (en) 2020-05-07 2023-05-23 Micron Technology, Inc. Intelligent proactive responses to operations to read data from memory cells
US11562793B2 (en) 2020-05-07 2023-01-24 Micron Technology, Inc. Read soft bits through boosted modulation following reading hard bits
US20210350856A1 (en) * 2020-05-07 2021-11-11 Micron Technology, Inc. Improved reading of soft bits and hard bits from memory cells
US11880571B2 (en) 2020-05-13 2024-01-23 Micron Technology, Inc. Counter-based methods and systems for accessing memory cells
US11664073B2 (en) 2021-04-02 2023-05-30 Micron Technology, Inc. Adaptively programming memory cells in different modes to optimize performance
US11615854B2 (en) 2021-04-02 2023-03-28 Micron Technology, Inc. Identify the programming mode of memory cells during reading of the memory cells
US11514983B2 (en) 2021-04-02 2022-11-29 Micron Technology, Inc. Identify the programming mode of memory cells based on cell statistics obtained during reading of the memory cells

Also Published As

Publication number Publication date
US8576624B2 (en) 2013-11-05
CN103843067B (en) 2017-03-29
TW201322260A (en) 2013-06-01
WO2013043446A1 (en) 2013-03-28
US8406053B1 (en) 2013-03-26
US20130148425A1 (en) 2013-06-13
KR20140065440A (en) 2014-05-29
EP2758963B1 (en) 2018-05-02
CN103843067A (en) 2014-06-04
KR101961975B1 (en) 2019-03-25
EP2758963A1 (en) 2014-07-30

Similar Documents

Publication Publication Date Title
US8576624B2 (en) On chip dynamic read for non-volatile storage
US9710325B2 (en) On chip dynamic read level scan and error detection for nonvolatile storage
USRE45754E1 (en) Selective memory cell program and erase
US8942043B2 (en) Non-volatile storage with process that reduces read disturb on end wordlines
US7564711B2 (en) Multiple pass write sequence for non-volatile storage
US8456911B2 (en) Intelligent shifting of read pass voltages for non-volatile storage
US8456915B2 (en) Programming non-volatile storage with fast bit detection and verify skip
US7983078B2 (en) Data retention of last word line of non-volatile memory arrays
US8473809B2 (en) Data coding for improved ECC efficiency
US8369156B2 (en) Fast random access to non-volatile storage
US8937835B2 (en) Non-volatile storage with read process that reduces disturb

Legal Events

Date Code Title Description
AS Assignment

Owner name: SANDISK TECHNOLOGIES INC., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DUTTA, DEEPANSHU;LEE, DANA;LUTZE, JEFFREY;SIGNING DATES FROM 20110920 TO 20110921;REEL/FRAME:026944/0620

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
AS Assignment

Owner name: SANDISK TECHNOLOGIES LLC, TEXAS

Free format text: CHANGE OF NAME;ASSIGNOR:SANDISK TECHNOLOGIES INC;REEL/FRAME:038807/0850

Effective date: 20160516

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8