US10896123B2 - Enhancing the effectiveness of read scan performance and reliability for non-volatile memory - Google Patents
Enhancing the effectiveness of read scan performance and reliability for non-volatile memory Download PDFInfo
- Publication number
- US10896123B2 US10896123B2 US16/218,800 US201816218800A US10896123B2 US 10896123 B2 US10896123 B2 US 10896123B2 US 201816218800 A US201816218800 A US 201816218800A US 10896123 B2 US10896123 B2 US 10896123B2
- Authority
- US
- United States
- Prior art keywords
- blocks
- memory
- data
- block
- read
- 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.)
- Active, expires
Links
- 230000015654 memory Effects 0.000 title claims abstract description 412
- 230000002708 enhancing effect Effects 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000003860 storage Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 5
- 239000004065 semiconductor Substances 0.000 claims description 4
- 239000000758 substrate Substances 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 57
- 238000009826 distribution Methods 0.000 description 22
- 238000012937 correction Methods 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 10
- 230000036541 health Effects 0.000 description 9
- 238000003491 array Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 230000033590 base-excision repair Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 244000287680 Garcinia dulcis Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 150000002500 ions Chemical class 0.000 description 2
- 230000005415 magnetization Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007784 solid electrolyte Substances 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 230000035882 stress Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910017629 Sb2Te3 Inorganic materials 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004193 electrokinetic chromatography Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical group [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 229910052709 silver Inorganic materials 0.000 description 1
- 239000004332 silver Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- WFKWXMTUELFFGS-UHFFFAOYSA-N tungsten Chemical compound [W] WFKWXMTUELFFGS-UHFFFAOYSA-N 0.000 description 1
- 229910052721 tungsten Inorganic materials 0.000 description 1
- 239000010937 tungsten Substances 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
- 229910052727 yttrium Inorganic materials 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5671—Digital 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 trapping in an insulator
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3431—Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/20—Arrangements for detecting or preventing errors in the information received using signal quality detector
- H04L1/203—Details of error rate determination, e.g. BER, FER or WER
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
Definitions
- Semiconductor memory is widely used in various electronic devices such as cellular telephones, digital cameras, personal digital assistants, medical electronics, mobile computing devices, servers, solid state drives, non-mobile computing devices and other devices.
- Semiconductor memory may comprise non-volatile memory or volatile memory.
- a non-volatile memory allows information to be stored and retained even when the non-volatile memory is not connected to a source of power (e.g., a battery).
- Examples of non-volatile memory include flash memory (e.g., NAND-type and NOR-type flash memory).
- Memory systems can be used to store data provided by a host device, client, user or other entity. It is important that when data stored in the memory system is read back and reported to the host device, client, user or other entity, the data is reported back accurately.
- FIG. 1 is a block diagram of one embodiment of a memory system connected to a host.
- FIG. 2 is a block diagram of one embodiment of a Front End Processor Circuit.
- the Front End Processor Circuit is part of a Controller.
- FIG. 3 is a block diagram of one embodiment of a Back End Processor Circuit.
- the Back End Processor Circuit is part of a Controller.
- FIG. 4 is a block diagram of one embodiment of a memory package.
- FIG. 5A is a block diagram of one embodiment of a memory die.
- FIG. 5B depicts an exemplary structure of a memory cell array.
- FIG. 6A depicts threshold voltage distributions.
- FIG. 6B is a table describing one example of an assignment of data values to data states.
- FIG. 7 is a schematic representation of some of the metadata information that can be included for groups of blocks.
- FIG. 8 is a flow chart describing one embodiment of a process for programming non-volatile memory.
- FIG. 9 illustrate the distributions of FIG. 6A at a later time, when they have spread from the freshly programmed distributions illustrated in FIG. 6A .
- FIG. 10 represents a page of data formed of multiple ECC codewords.
- FIG. 11 is a flow chart describing one embodiment for reading out and correcting data using ECC.
- FIG. 12 is a flow chart describing one embodiment of maintaining CVD time tags.
- FIG. 13 is a flow chart describing one embodiment of a read scan process.
- FIG. 14 is a flow chart describing one embodiment of step 1309 of the read scan process of FIG. 13 .
- Data stored in a non-volatile memory can degrade over time.
- the data state of a memory cell is based on the memory cell's threshold voltage, which in turn is dependent on the amount of charge stored in the memory cell.
- the threshold state of a memory cell can drift, such as due to “disturbs” during read, write or erase operations on other memory cells of a device or due to charge leakage. If the threshold voltage of a memory cell drifts too far, the memory system will not be able to recover the data stored on the memory cell.
- MLC multi-state cell
- ECC error correction code
- One technique for managing error is to periodically perform a read scan, reading the memory cells of a memory system and, if more than some amount of error is found, refreshing the portion of memory that has large amounts of error by reading out the data, correcting it, and storing the corrected data back in the memory system.
- a periodic read scan can be used for monitoring the health of the memory blocks in the system.
- a typical prior art read scan algorithm is based on a round robin algorithm where the user blocks are scanned sequentially in a fixed order, such as from the first physical block address to the last physical block address.
- a high capacity memory system such as a solid state drive (SSD)
- SSD solid state drive
- a read scan process is introduced that targets memory blocks more likely to be part of a high BER region.
- the memory system maintains metadata on different multi-block sets or regions of the memory system, including a range or estimate of a BER rate for a set of blocks or regions as a group.
- the memory system ranks the sets of blocks based on the BERs (or other data quality indication for the sets) and, starting with the set of blocks with the highest range or estimate of BER, scans the blocks of the different sets.
- the blocks can be further ordered for the read scan based on additional metadata, such as the number of program/erase cycles.
- FIG. 1 is a block diagram of one embodiment of a memory system 100 connected to a host 120 .
- Memory system 100 can implement the technology proposed herein for read scan operations.
- the memory system 100 includes a controller 102 that encodes data streams with a corresponding level of ECC, forms the streams into ECC codewords, forms the codewords into pages, and transfers the pages to memory packages 104 to be written into memory.
- controller 102 that encodes data streams with a corresponding level of ECC, forms the streams into ECC codewords, forms the codewords into pages, and transfers the pages to memory packages 104 to be written into memory.
- Example memory systems include solid state drives (“SSDs”), memory cards and embedded memory devices; however, other types of memory systems can also be used.
- SSDs solid state drives
- Memory system 100 of FIG. 1 comprises the controller 102 , non-volatile memory 104 for storing data, and local memory (e.g. DRAM/ReRAM) 106 .
- Controller 102 comprises a Front End Processor (FEP) circuit 110 and one or more Back End Processor (BEP) circuits 112 .
- FEP circuit 110 is implemented on an ASIC.
- each BEP circuit 112 is implemented on a separate ASIC.
- a unified controller ASIC can combine both the front end and back end functions.
- the ASICs for each of the BEP circuit(s) 112 and the FEP circuit 110 are implemented on the same semiconductor such that the Controller 102 is manufactured as a System on a Chip (“SoC”).
- SoC System on a Chip
- FEP circuit 110 and BEP circuit 112 both include their own processors.
- FEP circuit 110 and BEP circuit 112 work as a master slave configuration where the FEP circuit 110 is the master and each BEP circuit 112 is a slave.
- FEP circuit 110 implements a Flash Translation Layer (FTL) or Media Management Layer (MML) that performs memory management (e.g., garbage collection, wear leveling, etc.), logical to physical address translation, communication with the host 120 , management of DRAM (local volatile memory), and management of the overall operation of the SSD (or other non-volatile storage system).
- the BEP circuit(s) 112 manages memory operations in the memory packages/die at the request of FEP circuit 110 .
- the BEP circuit(s) 112 can carry out the read, erase, and programming processes. Additionally, the BEP circuit(s) 112 can perform buffer management, set specific voltage levels required by the FEP circuit 110 , perform error correction (ECC), control the Toggle Mode interfaces to the memory packages, etc. In one embodiment, each BEP circuit 112 is responsible for its own set of memory packages.
- non-volatile memory of memory packages 104 comprises a plurality of memory packages. Each memory package includes one or more memory die. Therefore, Controller 102 is connected to one or more non-volatile memory die. In one embodiment, each memory die in the memory packages 104 utilize NAND flash memory (e.g., two dimensional NAND flash memory and/or three dimensional NAND flash memory). In other embodiments, the memory package can include other types of memory.
- NAND flash memory e.g., two dimensional NAND flash memory and/or three dimensional NAND flash memory.
- the memory package can include other types of memory.
- Controller 102 communicates with host 120 via an interface 130 that implements NVM Express (NVMe) over PCI Express (PCIe).
- host 120 includes a host processor 122 , host memory 124 , and a PCIe interface 126 connected along bus 128 .
- Host memory 124 is the host's physical memory, and can be DRAM, SRAM, non-volatile memory or another type of storage. In one embodiment, host 120 is external to and separate from memory system 100 . In another embodiment, memory system 100 is embedded in host 120 .
- FIG. 2 is a block diagram of one embodiment of FEP circuit 110 .
- FIG. 2 shows a PCIe interface 150 to communicate with host 120 and a host processor 152 in communication with that PCIe interface 150 .
- the host processor 152 can be any type of processor known in the art that is suitable for the implementation.
- Host processor 152 is in communication with a network-on-chip (NOC) 154 .
- NOC network-on-chip
- a NOC is a communication subsystem on an integrated circuit, typically between cores in a SoC. NOCs can span synchronous and asynchronous clock domains or use unclocked asynchronous logic. NOC technology applies networking theory and methods to on-chip communications and brings notable improvements over conventional bus and crossbar interconnections.
- NOC improves the scalability of SoCs and the power efficiency of complex SoCs compared to other designs.
- the wires and the links of the NOC 154 are shared by many signals. A high level of parallelism is achieved because all links in the NOC 154 can operate simultaneously on different data packets. Therefore, as the complexity of integrated subsystems keep growing, a NOC provides enhanced performance (such as throughput) and scalability in comparison with previous communication architectures (e.g., dedicated point-to-point signal wires, shared buses, or segmented buses with bridges).
- a memory processor 156 Connected to and in communication with NOC 154 is a memory processor 156 , SRAM 160 and a DRAM controller 162 .
- the DRAM controller 162 is used to operate and communicate with the DRAM (e.g., DRAM 106 ).
- SRAM 160 is local RAM memory used by memory processor 156 .
- Memory processor 156 is used to run the FEP circuit and perform the various memory operations.
- in communication with the NOC 154 are two PCIe Interfaces 164 and 166 .
- the SSD controller will include two BEP circuits 112 ; therefore there are two PCIe Interfaces 164 / 166 . Each PCIe Interface communicates with one of the BEP circuits 112 . In other embodiments, there can be more or less than two BEP circuits 112 ; therefore, there can be more than two PCIe Interfaces.
- FEP circuit 110 can also include a Flash Translation Layer (FTL) or, more generally, a Media Management Layer (MML) 158 that performs memory management (e.g., garbage collection, wear leveling, load balancing, etc.), logical to physical address translation, communication with the host, management of DRAM (local volatile memory) and management of the overall operation of the SSD or other non-volatile storage system.
- FTL Flash Translation Layer
- MML Media Management Layer
- the media management layer MML 158 may be integrated as part of the memory management that may handle memory errors and interfacing with the host.
- MML 158 may be a module in the FEP circuit 110 and may be responsible for the internals of memory management.
- the MML 158 may include an algorithm in the memory device firmware which translates writes from the host into writes to the memory structure (e.g., 326 of FIG. 5A below) of a die.
- the MML 158 may be needed because: 1) the memory may have limited endurance; 2) the memory structure may only be written in multiples of pages; and/or 3 ) the memory structure may not be written unless it is erased as a block.
- the MML 158 understands these potential limitations of the memory structure which may not be visible to the host. Accordingly, the MML 158 attempts to translate writes from the host into writes into the memory structure.
- FIG. 3 is a block diagram of one embodiment of the BEP circuit 112 .
- FIG. 3 shows a PCIe Interface 200 for communicating with the FEP circuit 110 (e.g., communicating with one of PCIe Interfaces 164 and 166 of FIG. 2 ).
- PCIe Interface 200 is in communication with two NOCs 202 and 204 . In one embodiment the two NOCs can be combined into one large NOC.
- Each NOC ( 202 / 204 ) is connected to SRAM ( 230 / 260 ), a buffer ( 232 / 262 ), a processor ( 220 / 250 ), and a data path controller ( 222 / 252 ) via an XOR engine ( 224 / 254 ) and an ECC engine ( 226 / 256 ).
- the ECC engines 226 / 256 are used to perform error correction, as known in the art.
- SRAM 230 / 260 is local RAM memory used by memory processor 220 / 250 and can store system data such as the CVD time tags 231 / 261 , that are discussed further below.
- the XOR engines 224 / 254 are used to XOR the data so that data can be combined and stored in a manner that can be recovered in case there is a programming error.
- Data path controller 222 is connected to an interface module for communicating via four channels with memory packages.
- the top NOC 202 is associated with an interface 228 for four channels for communicating with memory packages and the bottom NOC 204 is associated with an interface 258 for four additional channels for communicating with memory packages.
- Each interface 228 / 258 includes four Toggle Mode interfaces (TM Interface), four buffers and four schedulers. There is one scheduler, buffer and TM Interface for each of the channels.
- the processor can be any standard processor known in the art.
- the data path controllers 222 / 252 can be a processor, FPGA, microprocessor or other type of controller.
- the XOR engines 224 / 254 and ECC engines 226 / 256 are dedicated hardware circuits, known as hardware accelerators.
- the XOR engines 224 / 254 and ECC engines 226 / 256 can be implemented in software. Embodiments of the ECC engines 224 / 254 are discussed further below, with respect to the use of “vertical ECC”.
- the scheduler, buffer, and TM Interfaces are hardware circuits.
- FIG. 4 is a block diagram of one embodiment of a memory package 104 that includes a plurality of memory die 292 connected to a memory bus (data lines and chip enable lines) 294 .
- the memory bus 294 connects to a Toggle Mode Interface 296 for communicating with the TM Interface of a BEP circuit 112 (see e.g., FIG. 3 ).
- the memory package 104 can include a small controller connected to the memory bus and the TM Interface.
- the memory package 104 can have one or more memory die 292 .
- each memory package 104 includes eight or 16 memory die; however, other numbers of memory die can also be implemented. The technology described herein is not limited to any particular number of memory die.
- FIG. 5A is a functional block diagram of one embodiment of a memory die 300 (e.g., the memory die 292 in FIG. 4 ).
- the components depicted in FIG. 5A are electrical circuits.
- each memory die 300 includes a memory structure 326 , control circuitry 310 , and read/write circuits 328 .
- Memory structure 326 is addressable by word lines via a row decoder 324 and by bit lines via a column decoder 332 .
- the read/write circuits 328 include multiple sense blocks 350 including SB1, SB2, . . . , SBp (sensing circuitry) and allow a page of memory cells to be read or programmed in parallel. Commands and data are transferred between the Controller 102 (in FIG. 1 ) and the memory die 300 via lines 318 .
- memory die 300 includes a set of input and/or output (I/O) pins that connect to lines 318 .
- I/O input and/or output
- Control circuitry 310 cooperates with the read/write circuits 328 to perform memory operations (e.g., write, read, and others) on memory structure 326 , and includes a state machine 312 , an on-chip address decoder 314 , a power control circuit 316 , and a temperature sensor circuit 317 .
- State machine 312 provides die-level control of memory operations.
- state machine 312 is programmable by software. In other embodiments, state machine 312 does not use software and is completely implemented in hardware (e.g., electrical circuits). In another embodiment, state machine 312 is replaced by a micro-controller.
- control circuitry 310 includes buffers such as registers, ROM fuses and other storage devices for storing default values such as base voltages and other parameters. Temperature sensor circuit 317 detects current temperature at memory die 300 .
- the on-chip address decoder 314 provides an address interface between addresses used by the Controller 102 to the hardware address used by the decoders 324 and 332 .
- Power control module 316 controls the power and voltages supplied to the word lines and bit lines during memory operations. Power control module 316 may include charge pumps for creating voltages.
- the sense blocks include bit line drivers.
- control circuits refers to a controller (e.g., 102 ), a state machine (e.g., 312 ), a micro-controller and/or control circuitry (e.g., 310 ), or other analogous circuits that are used to control non-volatile memory.
- memory structure 326 comprises a three dimensional memory array of non-volatile memory cells in which multiple memory levels are formed above a single substrate, such as a wafer.
- the memory structure 326 may comprise any type of non-volatile memory that are monolithically formed in one or more physical levels of memory cells having an active area disposed above a silicon (or other type of) substrate.
- the non-volatile memory cells comprise vertical NAND strings with charge-trapping material such as described, for example, in U.S. Pat. No. 9,721,662, incorporated herein by reference in its entirety.
- memory structure 326 comprises a two dimensional memory array of non-volatile memory cells.
- the non-volatile memory cells are NAND flash memory cells utilizing floating gates such as described, for example, in U.S. Pat. No. 9,082,502, incorporated herein by reference in its entirety.
- Other types of memory cells e.g., NOR-type flash memory can also be used.
- memory array architecture or memory cell included in memory structure 326 is not limited to the examples above. Many different types of memory array architectures or memory technologies can be used to form memory structure 326 . No particular non-volatile memory technology is required for purposes of the new claimed embodiments proposed herein.
- Other examples of suitable technologies for memory cells of the memory structure 326 include ReRAM memories, magnetoresistive memory (e.g., MRAM, Spin Transfer Torque MRAM, Spin Orbit Torque MRAM), phase change memory (e.g., PCM), and the like.
- suitable technologies for memory cell architectures of the memory structure 326 include two dimensional arrays, three dimensional arrays, cross-point arrays, stacked two dimensional arrays, vertical bit line arrays, and the like.
- cross point memory includes reversible resistance-switching elements arranged in cross point arrays accessed by X lines and Y lines (e.g., word lines and bit lines).
- the memory cells may include conductive bridge memory elements.
- a conductive bridge memory element may also be referred to as a programmable metallization cell.
- a conductive bridge memory element may be used as a state change element based on the physical relocation of ions within a solid electrolyte.
- a conductive bridge memory element may include two solid metal electrodes, one relatively inert (e.g., tungsten) and the other electrochemically active (e.g., silver or copper), with a thin film of the solid electrolyte between the two electrodes.
- the conductive bridge memory element may have a wide range of programming thresholds over temperature.
- Magnetoresistive memory stores data by magnetic storage elements.
- the elements are formed from two ferromagnetic plates, each of which can hold a magnetization, separated by a thin insulating layer.
- One of the two plates is a permanent magnet set to a particular polarity; the other plate's magnetization can be changed to match that of an external field to store data.
- a memory device is built from a grid of such memory cells. In one embodiment for programming, each memory cell lies between a pair of write lines arranged at right angles to each other, parallel to the cell, one above and one below the cell. When current is passed through them, an induced magnetic field is created.
- Phase change memory exploits the unique behavior of chalcogenide glass.
- One embodiment uses a GeTe—Sb2Te3 super lattice to achieve non-thermal phase changes by simply changing the co-ordination state of the Germanium atoms with a laser pulse (or light pulse from another source). Therefore, the doses of programming are laser pulses.
- the memory cells can be inhibited by blocking the memory cells from receiving the light.
- the memory cells are programmed by current pulses. Note that the use of “pulse” in this document does not require a square pulse but includes a (continuous or non-continuous) vibration or burst of sound, current, voltage light, or other wave.
- FIG. 5B depicts an exemplary structure of memory structure 326 .
- the memory structure 326 includes an array of memory cells that is divided into a large number of blocks of memory cells.
- each block is the unit of erase. That is, each block contains the minimum number of memory cells that are erased together.
- Other embodiments can use different units of erase.
- the blocks can be grouped into sets of blocks, such as blocks of particular region of the memory structure 326 .
- the stippled region of blocks (block 0, block 1, and block 2) can be a set of blocks, where the use of sets of blocks is relevant in the discussion given below for the read scan process discussed with reference to FIGS. 13 and 14 .
- FIG. 5B depicts a NAND flash EEPROM that is partitioned into 1,024 blocks. However, more or less than 1024 blocks can be used.
- each block in this example, there are 69,624 columns corresponding to bit lines BL0, BL1, . . . BL69,623.
- all of the bit lines of a block can be simultaneously selected during read and program operations. Memory cells along a common word line and connected to any bit line can be programmed (or read) at the same time (e.g., concurrently).
- the bit lines are divided into even bit lines and odd 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. 5B shows four memory cells connected in series to form a NAND string.
- each NAND string Although four cells are shown to be included in each NAND string, more or less than four can be used (e.g., 16, 32, 64, 128 or another number or memory cells can be on a NAND string).
- One terminal of the NAND string is connected to a corresponding bit line via a drain select gate (connected to select gate drain line SGD), and another terminal is connected to the source line via a source select gate (connected to select gate source line SGS).
- 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
- the controller 102 calculates the ECC when data is being programmed into the array structure 326 , and also checks it when data is being read from the array.
- the state machine 312 , controller 102 , or other component can calculate and check 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.
- each word line of a block is associated with one page.
- each word line of a block is associated with 3 pages.
- the word lines can be associated with other numbers of pages.
- 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 threshold voltage distributions for a memory array when each memory cell stores three bits of data. Other embodiments, however, may use other data capacities per memory cell (e.g., such as one, two, four, or five bits of data per memory cell).
- FIG. 6A shows eight threshold voltage distributions, corresponding to eight data states.
- the first threshold voltage distribution (data state) S0 represents memory cells that are erased.
- the other seven threshold voltage distributions (data states) S1-S7 represent memory cells that are programmed and, therefore, are also called programmed states.
- Each threshold voltage distribution (data state) corresponds to predetermined values for the set of data bits.
- 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.
- data values are assigned to the threshold voltage ranges using a Gray code assignment so that if the threshold voltage of a memory erroneously shifts to its neighboring physical state, only one bit will be affected.
- FIG. 6A shows seven read reference voltages, Vr1, Vr2, Vr3, Vr4, Vr5, Vr6, and Vr7 for reading data from memory cells.
- FIG. 6A also shows seven verify reference voltages, Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, and Vv7.
- Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, and Vv7 When programming memory cells to data state S1, the system will test whether those memory cells have a threshold voltage greater than or equal to Vv1. When programming memory cells to data state S2, the system will test whether the memory cells have threshold voltages greater than or equal to Vv2. When programming memory cells to data state S3, the system will determine whether memory cells have their threshold voltage greater than or equal to Vv3. When programming memory cells to data state S4, the system will test whether those memory cells have a threshold voltage greater than or equal to Vv4. When programming memory cells to data state S5, the system will test whether those memory cells have a threshold voltage greater than or equal to Vv5. When programming memory cells to data state S6, the system will test whether those memory cells have a threshold voltage greater than or equal to Vv6. When programming memory cells to data state S7, the system will test whether those memory
- memory cells can be programmed from the erased data state S0 directly to any of the programmed data states S1-S7.
- a population of memory cells to be programmed may first be erased so that all memory cells in the population are in erased data state S0.
- a programming process is used to program memory cells directly into data states S1, S2, S3, S4, S5, S6, and/or S7.
- data states S1, S2, S3, S4, S5, S6, and/or S7 For example, while some memory cells are being programmed from data state S0 to data state S1, other memory cells are being programmed from data state S0 to data state S2 and/or from data state S0 to data state S3, and so on.
- the arrows of FIG. 6A represent the full sequence programming.
- data states S1-S7 can overlap, with controller 102 relying on error correction to identify the correct data being stored.
- error correction and the overlapping of distributions is discussed in more detail below with respect to FIG. 9 .
- FIG. 6B is a table describing one example of an assignment of data values to data states.
- S0 111.
- Other encodings of data can also be used. No particular data encoding is required by the technology disclosed herein.
- all memory cells are moved to data state S0, the erased state.
- all bits stored in a memory cell are 1 when the memory cells are erased (e.g., in data state S0).
- the optimal verify reference voltages [Vv] and the read reference voltages [Vr] may also differ for difference regions of the memory array or memory device, as a memory device may have different characteristics in different regions due to processing variations and layout differences.
- a memory system can maintain system data, including metadata on the user data, to be able to operate more efficiently.
- metadata is the number of program/erase (P/E) cycles that each of the blocks have experience, as this information is a good indicator of the block's relative wear and can useful in managing the memory for processes such as wear leveling.
- the system can maintain such information on the memory Cells' Voltage threshold Distributions (CVD) time tag, including operating parameters such as the Vr and Vv values for reading and verifying the different data states as illustrated in FIG. 6A .
- the memory processor 230 / 260 can maintain the CVD time tag data 231 / 251 in the SRAM 230 / 260 of FIG. 3 .
- maintaining separate set of parameters for different groups of blocks can allow for more accurate operation of the memory device; and rather than establishing optimized parameters for a block each time it is accessed, as in a dynamic read operation, this allows for the operating parameters to readily available, with updates only performed occasionally or when needed.
- each CVD time tag can cover a group or set of blocks (for example, 20, 30, 50 or 100 blocks) in the same area or contiguous region of a die, as memory blocks in the same regions will usually share fairly similar characteristics.
- a given CVD time tag will cover a range of physical block addresses corresponding to an area of a single die.
- FIG. 7 is a schematic representation of some of the metadata information that can be included in CVD time tag embodiments.
- a CVD time tag includes an ID of information identifying the physical blocks it covers, such as a range or ranges of physical block addresses, where an example of a set of blocks covered by a shared CVD time tag is represented by the stippled region of blocks 0-2 in FIG. 5B .
- the CVD time tag can also include a time stamp to indicate when the current parameters of a given CVD time tag was set.
- the parameters kept in the CVD time tag can include the set of read parameters ([Vr]) for the different states and the set of program verify parameters ([Vv]) for the different states. These can be presented as digital values that would be converted analog voltages by a digital-to-analog (DAC) conversion on the memory circuit.
- DAC digital-to-analog
- parameters presented by the CVD time tag can include program parameters, such as amplitude of the initial programming pulse for each state and step size.
- the CVD time tag can also include information on operating conditions (such as temperature) at the time of programming.
- the controller can keep the CVD time tags in RAM memory, such as SRAM 230 / 260 of FIG. 3 or SRAM 160 of FIG. 2 , where they can be accessed as needed.
- the controller can maintain copies of the CVD time tags in non-volatile memory, from where they can be loaded to the controller's RAM at power up.
- the BER (bit error rate) field will be discussed in more detail below.
- FIG. 8 is a flowchart describing one embodiment of a process for programming.
- the process of FIG. 8 is performed on memory die 300 using the control circuit 310 discussed above.
- the process of FIG. 8 can be performed at the direction of state machine 312 .
- the process of FIG. 8 can also be used to implement the full sequence programming discussed above. Additionally, the process of can be used to implement each phase of a multi-phase programming process.
- the program voltage applied to the control gates (via a selected word line) during a program operation is applied as a series of program pulses. Between programming pulses are a set of verify pulses to perform verification. In many implementations, the magnitude of the program pulses is increased with each successive pulse by a predetermined step size.
- the programming voltage (Vpgm is initialized to the starting magnitude (e.g., ⁇ 12-16V or another suitable level) and a program counter (PC) maintained by the state machine 312 is initialized at 1.
- the group of memory cells selected to be programmed are programmed concurrently and are all connected to the same word line (the selected word line). There will likely be other memory cells that are not selected for programming (unselected memory cells) that are also connected to the selected word line. That is, the selected word line will also be connected to memory cells that are supposed to be inhibited from programming. For example, when data is written to a set of memory cells, some of the memory cells will need to store data associated with state S0 so they will not be programmed. Additionally, as memory cells reach their intended target data state, they will be inhibited from further programming.
- Those NAND strings that include memory cells connected to the selected word line that are to be inhibited from programming have their channel's voltage raised, or boosted, to inhibit programming. When a channel has a boosted voltage, the voltage differential between the channel and the word line is not large enough to cause programming.
- the bit lines of the NAND strings along the selected word line are biased to either a program enable or a program inhibit voltage level, depending on whether the memory cells on that NAND string for the selected word line is to be programmed or not.
- a program pulse of the program signal Vpgm is applied to the selected word line (the word line selected for programming). If a memory cell should be programmed, then the corresponding bit line is grounded. On the other hand, if the memory cell should remain at its current threshold voltage, then the corresponding bit line is connected to a program inhibit voltage to inhibit programming.
- a program inhibit voltage is a voltage selected to raise the voltage level within the channel region of non-selected memory cells to a high enough voltage level so that when the program pulse is applied to the selected word line, any voltage differential generated between the channel and the control gate of a non-selected memory cell is insufficient to induce electron injection into the non-selected memory cell's charge storing region.
- a non-selected NAND string may have its corresponding bit lines biased to a program inhibit level of around 2.5V, for example, where this value can vary from around 1.5V to 3.5V or even higher depending on the embodiment.
- step 544 the program pulse is concurrently applied to all memory cells connected to the selected word line so that all of the memory cells connected to the selected word line are programmed concurrently. That is, they are programmed at the same time or during overlapping times (both of which are considered concurrent). In this manner all of the memory cells connected to the selected word line will concurrently have their threshold voltage change, unless they have been locked out from programming due to application of the program inhibit voltage.
- the appropriate memory cells are verified using the appropriate set of verify reference voltages to perform one or more verify operations.
- the verification process is performed by testing whether the threshold voltages of the memory cells selected for programming have reached the appropriate verify reference voltage.
- the verify operation can use the corresponding set of verify values [Vv] values from the CVD time tag, as discussed above with respect to FIG. 7 , for embodiments using CVD time tags.
- step 548 it is determined whether all the memory cells have reached their target threshold voltages (pass). If so, the programming process is complete and successful because all selected memory cells were programmed and verified to their target states. A status of “PASS” is reported in step 550 . If, in step 548 , it is determined that not all of the memory cells have reached their target threshold voltages (fail), then the programming process continues to step 552 .
- the memory system counts the number of memory cells that have not yet reached their respective target threshold voltage distribution. That is, the system counts the number of memory cells that have, so far, failed the verify process. This counting can be done by the state machine, the controller, or other logic. In one implementation, each of the sense blocks will store the status (pass/fail) of their respective cells. In one embodiment, there is one total count, which reflects the total number of memory cells currently being programmed that have failed the last verify step. In another embodiment, separate counts are kept for each data state.
- step 554 it is determined whether the count from step 552 is less than or equal to a predetermined limit.
- the predetermined limit is the number of bits that can be corrected by error correction codes (ECC) during a read process for the page of memory cells. If the number of failed cells is less than or equal to the predetermined limit, than the programming process can stop and a status of “PASS” is reported in step 550 . In this situation, enough memory cells programmed correctly such that the few remaining memory cells that have not been completely programmed can be corrected using ECC during the read process.
- the predetermined limit used in step 554 is below the number of bits that can be corrected by error correction codes (ECC) during a read process to allows for future/additional errors.
- than the predetermined limit can be a portion (pro-rata or not pro-rata) of the number of bits that can be corrected by ECC during a read process for the page of memory cells.
- the limit is not predetermined. Instead, it changes based on the number of errors already counted for the page, the number of program-erase cycles performed or other criteria.
- step 556 the programming process continues at step 556 and the program counter PC is checked against the program limit value (PL). Examples of program limit values include 6, 12, 16, 20 and 30; however, other values can be used. If the program counter PC is not less than the program limit value PL, then the program process is considered to have failed and a status of FAIL is reported in step 560 . If the program counter PC is less than the program limit value PL, then the process continues at step 558 during which time the Program Counter PC is incremented by 1 and the program voltage Vpgm is stepped up to the next magnitude.
- PL program limit value
- next pulse will have a magnitude greater than the previous pulse by a step size (e.g., a step size of 0.1-0.4 volts).
- step size e.g., a step size of 0.1-0.4 volts.
- the selected word line is connected to a voltage (one example of a reference signal), a level of which is specified for each read operation (e.g., see read compare levels Vr1, Vr2, Vr3, Vr4, Vr5, Vr6, and Vr7, of FIG. 5 ) or verify operation (e.g. see verify target levels Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, and Vv7 of FIG. 5 ) in order to determine whether a threshold voltage of the concerned memory cell has reached such level.
- the conduction current of the memory cell is measured to determine whether the memory cell turned on (conducted current) in response to the voltage applied to the word line.
- the conduction current is measured to be greater than a certain value, then it is assumed that the memory cell turned on and the voltage applied to the word line is greater than the threshold voltage of the memory cell. If the conduction current is not measured to be greater than the certain value, then it is assumed that the memory cell did not turn on and the voltage applied to the word line is not greater than the threshold voltage of the memory cell.
- the unselected memory cells are provided with one or more read pass voltages (also referred to as a read bypass voltages) at their control gates so that these memory cells will operate as pass gates (e.g., conducting current regardless of whether they are programmed or erased).
- the conduction current of a memory cell is measured by the rate it discharges or charges a dedicated capacitor in the sense amplifier.
- the conduction current of the selected memory cell allows (or fails to allow) the NAND string that includes the memory cell to discharge a corresponding bit line. The voltage on the bit line is measured after a period of time to see whether it has been discharged or not. Note that the technology described herein can be used with different methods known in the art for verifying/reading. Other read and verify techniques known in the art can also be used.
- the memory cells After a programming operation, the memory cells will be written into well-defined distributions of threshold voltages for the different data states, such as illustrated in FIG. 6A .
- a memory system will typically allow some amount of error in the programming process, as this can be handled by ECC. Because of this, some number of memory cells have threshold voltages that are outside of the distribution for their intended data states, but this number should be well within the system's ECC capabilities to allow for data error that can subsequently occur as the memory system operates over time.
- operations on one set of selected memory cells can place a voltage differential on other, non-selected memory cells of the array.
- adjacent word lines and adjacent bit lines will have some degree of capacitive coupling.
- bit lines and word line become closer to one another, and as device capacity is increased, the word lines and bit lines become longer. Both of these lead to increased capacitive coupling. Consequently, when a program pulse is applied to one word line, it may affect the data state of memory cells on nearby word lines, resulting in a program disturb.
- the voltage levels applied to selected memory cells in a read operation may affect nearby non-selected memory cells, leading read disturb.
- erase operations can lead erase disturbs, as unselected memory blocks sharing a well region or source region with a selected block may experience the high erase voltage applied to the selected block.
- the NAND structure shown in FIG. 5B can lead to disturbs.
- non-selected memory cells in a NAND string are biased to conduct when a memory cell in a shared NAND string is selected for sensing or programming.
- Erase operations can similarly place strains on the memory cells of an array. Over time, these stresses lead to read, write, or erase induced disturbs on the memory cells that can shift their threshold voltages. Even without these stresses, the charge storage regions of the memory cells can leak charge over time. This will lead to the well-defined, separated state distributions (e.g., illustrated in FIG. 6A ) to spread.
- FIG. 9 illustrate the distributions of FIG. 6A at a later time, when they have spread from the freshly programmed distributions illustrated in FIG. 6A .
- the tails of one distribution can begin to overlap with the tails of neighboring distributions. For instance, looking at the S1 and S2 distributions, these now overlap, with some of the memory cells programmed to state S2 now having threshold values below Vr2, causing them to be read as belonging to state S1, and with some of the memory cells programmed to state S1 now having threshold values above Vr2, causing them to be read as belonging to the state S2.
- ECC error correction code
- error correction is used with the programming of a page of data.
- Memory systems often use ECC to protect data form corruption.
- ECC coding schemes are well known in the art. These conventional error correction codes are especially useful in large scale memories, including flash (and other non-volatile) memories, because of the substantial impact on manufacturing yield and device reliability that such coding schemes can provide, rendering devices that have a few non-programmable or defective cells as useable.
- a tradeoff exists between the yield savings and the cost of providing additional memory cells to store the code bits (i.e., the code “rate”).
- ECC codes are better suited for flash memory devices than others.
- ECC codes for flash memory devices tend to have higher code rates (i.e., a lower ratio of code bits to data bits) than the codes used in data communications applications (which may have code rates as low as 1 ⁇ 2).
- Examples of well-known ECC codes commonly used in connection with flash memory storage include Reed-Solomon codes, other Bose, Chaudhuri, and Hocquenghem (BCH) codes, Hamming codes, and the like.
- BCH Hocquenghem
- the error correction codes used in connection with flash memory storage are “systematic,” in that the data portion of the eventual codeword is unchanged from the actual data being encoded, with the code or parity bits appended to the data bits to form the complete codeword.
- the particular parameters for a given error correction code include the type of code, the size of the block of actual data from which the codeword is derived, and the overall length of the codeword after encoding.
- a typical BCH code applied to a sector of 512 bytes (4096 bits) of data can correct up to four error bits, if at least 60 ECC or parity bits are used.
- Reed-Solomon codes are a subset of BCH codes, and are also commonly used for error correction.
- a typical Reed-Solomon code can correct up to four errors in a 512 byte sector of data, using about 72 ECC bits.
- error correction coding provides substantial improvement in manufacturing yield, as well as in the reliability of the flash memory over time.
- the Controller 102 receives host data, also referred to as information bits, that is to be stored non-volatile three dimensional memory structure 326 .
- Other techniques can be used that map input data to output data in more complex manners.
- LDPC codes low density parity check (LDPC) codes
- Gallager codes can be used. More details about LDPC codes can be found in R. G. Gallager, “Low-density parity-check codes,” IRE Trans. Inform. Theory, vol. IT-8, pp. 21 28, January 1962; and D. MacKay, Information Theory, Inference and Learning Algorithms, Cambridge University Press 2003, chapter 47.
- LDPC codes are typically applied to multiple pages encoded across a number of storage elements, but they do not need to be applied across multiple pages.
- the data bits can be mapped to a logical page and stored in the storage structure 326 by programming one or more memory cells to one or more programming states, which corresponds to the matrix or codeword v.
- FIG. 10 is a schematic representation of a page of data, the page formed of multiple codewords CW1, CW2, . . . , CWn.
- Each code word CWi includes a user data portion DATAi and an ECC portion ECCi with ECC data corresponding to the user data of the codeword.
- the controller will form up ECC codewords by breaking up the data into chunks and, for each chunk, generating the corresponding ECC by the ECC engine 226 / 256 .
- Each chunk of data and its corresponding ECC is formed into an ECC codeword and the ECC codewords are then formed into pages.
- the pages are transferred to be written into the memory structure 326 , where, to take the 3-bit per cell example describe with respect to FIGS. 6A and 6B , three of these pages of data are written to each word line or physical page.
- an iterative probabilistic decoding process is used when reading data which implements error correction decoding corresponding to the encoding implemented in the Controller 102 (see ECC engine 226 / 256 ). Further details regarding iterative probabilistic decoding can be found in the above-mentioned D. MacKay text.
- the iterative probabilistic decoding attempts to decode a codeword read from the memory by assigning initial probability metrics to each bit in the codeword.
- the probability metrics indicate a reliability of each bit, that is, how likely it is that the bit is not in error.
- the probability metrics are logarithmic likelihood ratios (LLRs) which are obtained from LLR tables. LLR values are measures of the reliability with which the values of various binary bits read from the storage elements are known.
- the LLR for a bit is given by:
- An LLR value can be provided for each of the bit positions in a codeword. Further, the LLR tables can account for the multiple read results so that an LLR of greater magnitude is used when the bit value is consistent in the different codewords.
- Controller 102 receives the codeword CW1 and accesses the LLRs and iterates in successive iterations in which it determines if parity checks of the error encoding process have been satisfied. If all parity checks have been satisfied, the decoding process has converged and the codeword has been successfully error corrected. If one or more parity checks have not been satisfied, the decoder will adjust the LLRs of one or more of the bits which are inconsistent with a parity check and then reapply the parity check or next check in the process to determine if it has been satisfied. For example, the magnitude and/or polarity of the LLRs can be adjusted. If the parity check in question is still not satisfied, the LLR can be adjusted again in another iteration.
- Adjusting the LLRs can result in flipping a bit (e.g., from 0 to 1 or from 1 to 0) in some, but not all, cases.
- another parity check is applied to the codeword, if applicable, once the parity check in question has been satisfied.
- the process moves to the next parity check, looping back to the failed check at a later time. The process continues in an attempt to satisfy all parity checks.
- the decoding process of CW1 is completed to obtain the decoded information including parity bits v and the decoded information bits i.
- FIG. 11 is a flow chart describing one embodiment for reading out and correcting data using ECC.
- the controller 102 sends a read command for one or more pages of data to the one of the memory die of memory packages 104 .
- the read request can be a request by the host 120 for reading data or an internal request originating with the controller 102 , such as for a refresh operation or a read scan. Embodiments for read scan operations are discussed in more detail below.
- the addressed memory die such as a die 300 on one of memory packages 104 , reads out the requested page or pages. For example, in the 3-bit per cell embodiment illustrated in FIG.
- the set of [Vr] values can be obtained from the corresponding CVD time tag.
- the read pages are transferred from the memory die of memory packages 104 to the controller 102 . In the case where multiple pages are being read, these steps and the subsequent steps can be performed sequentially for a series of requested pages.
- the codewords of the page are decoded by the ECC engine 226 / 256 as described above. Based on the ECC data of a code word, the corresponding user data is corrected at step 1109 , if the amount of error does not exceed the error correction capacity of the ECC used.
- the data is transferred out to the host 120 , if the data was in request to a host read, or put to the use for which the controller 102 requested it if the request was internal. For example, if the controller 102 requested the data for a refresh operation, the read and corrected data would be re-written back into one of the memory die 300 of memory packages 104 . If the amount of error in a codeword is uncorrectable, the controller may issue an error status, attempt further error correction measures, or both.
- the ECC engine 226 / 256 may also determine bit error rates for the pages read at step 1113 . This information can be accumulated, as can other information varying the read and verify voltage sets [Vr] and [Vv] that provide better results, to update CVD time tag parameter at step 1115 . Varying of these sensing parameters and updating the CVD time tag is discussed further below with respect to FIG. 12 .
- the memory system is designed to tolerate some amount of error.
- the amount of error a system can tolerate is dependent upon the “strength”, or capability, of the ECC arrangement used. Stronger ECC allows for more error, but with the tradeoff of lower performance and the need to store more ECC data, reducing the capacity available for user data.
- memory systems can perform refresh operations to restore degraded data. In a refresh operation, a data set is read, corrected, and rewritten, restoring the data's quality.
- the likelihood of error to occur in the memory cells of an array can vary from location to location.
- the amount of error for a block or other set of memory cells, or bit error rate can depend on the time since the block was written, as the longer the time since a block was written, the more time over which the data can degrade.
- the amount of error is also affected by the amount of activity in or near the block, as this can induce data disturbs: for example, if data of a particular block is frequently read, this will lead to a higher rate of read disturb.
- the BER of a block can also depend on the physical characteristics of a block, with some block more prone to error due to processing variations or other physical properties. Consequently, to more efficiently reduce the error of a memory array, the system can target these blocks suffering from a high bit error rate.
- the memory system can perform a read scan of the memory by going through the memory and checking the data quality, or health, of the blocks in order to find blocks that should be refreshed.
- the data quality or health of a block refers to a measure of how well-defined the distributions of the different data states are, such as can be determined by the bit error for a block or other techniques, such as performing read operations using shifted Vr values.
- Read scan can be routinely used for monitoring the health of the blocks in a memory system, such as Solid-State Drive (SSD) system, by checking all of a system's block for error.
- SSD Solid-State Drive
- a typical scan algorithm is based on a round robin algorithm where the user blocks are scanned sequentially in a fixed order, such as from the first physical block address to the last physical block address.
- BER block bit error rate
- the CVD time tags can also include a field with information on the BER (or other value indicating data quality or health) of its corresponding set of blocks.
- this BER field may be a range of BER values for the set of blocks corresponding to a given CVD time tag or an estimate of an average value for the corresponding set of blocks.
- the BER field can be updated over time during memory operations and used to determine whether the operating parameters, such as the Vr values, need updating. As described in the following embodiments, the BER field can also be used to order memory blocks for a read scan operation.
- FIG. 12 is a flow chart describing one embodiment of the updating the CVD time tags (as in step 1115 of FIG. 11 ) and maintaining a BER estimate or range for groups of blocks, which can be used in a read scan process (as in step 1300 of FIG. 13 ).
- FIG. 12 considers the monitoring of the read reference voltages [Vr] and the BER field of the CVD time tag.
- the initial setting of the CVD time tags of the memory system is performed. These can include the device parameter values discussed above with respect to FIG.
- 7 and, depending on the embodiment, can be a common set of initial values used for all block sets of the memory system based on testing and device characterization or can be individually trimmed for the individual die or regions/sets of block within the die as part of a test process for fresh devices before they are shipped out.
- the system can subsequently monitor operation and update these parameters.
- the memory die 300 receives a read command from the controller 102 .
- the requested page is read.
- the read is performed using the read reference parameters [Vr] of the current CVD time tag corresponding to region or set of blocks to which the word line belongs.
- Vr read reference parameters
- data is read in pages, where a page is made up of codewords.
- the ECC engine 226 / 265 is used to decode the codewords.
- the bit error rate (BER) can be determined, as discussed above with respect to step 1113 of FIG. 11 .
- Step 1207 determines whether this BER is overly high, e.g., by comparing the BER to a threshold.
- the controller can shift the [Vr] values at step 1209 to try to optimize the read reference values of [Vr].
- the determination can be based on a threshold amount of error that is below the maximum amount of error that the ECC engines 226 / 256 can handle, where the maximum amount of tolerable error will depend the type of ECC algorithm used and its strength.
- step 1207 the flow moves on to step 1211 .
- the loop of steps 1207 , 1209 , and 1205 may be iterated several times, where if the read still does not pass after some number of iteration and the system cannot recover the date through other system features (such as the XOR blocks 224 / 254 ), the read result is reported as an uncorrectable ECC (UECC) result.
- UECC uncorrectable ECC
- the system can monitor the shifts to the [Vr] and the BER values at step 1211 .
- the CVD time tag holding the [Vr] values corresponds to a set of multiple memory blocks, often a region adjacent blocks of a memory die as illustrated by the stippled blocks block 0, block 1 and block 2 of FIG. 5B .
- the memory system can determine whether to update the corresponding CVD time tag at step 1213 .
- This decision can be based on the [Vr] values determined in the loop of steps 1207 , 1209 and 1205 showing a significant shift from the current values, the current estimate for the BER of the group appearing to differ significantly from the BERs found at step 1205 , shifts in other parameters maintained in the CVD time tag, the time stamp being old, or some combination of these and other factors. If the decision at 1213 is not to update the CVD time tag, the flow loops back to 1203 for a subsequent read command.
- the CVD time tag is to be updated, this is done at step 1215 .
- the [Vr] value in the CVD time tag for the set of blocks can be updated.
- the estimated BER estimate or range of values for the corresponding set of blocks can be updated.
- the system can monitor the BER of the memory system by inspecting the CVD time tag IDs and checking and ranking the CVD time tags by the BER fields. After identifying the CVD time tag with the highest BER field value, the system picks the corresponding set of blocks for a read scan.
- the blocks of the selected set can be scanned sequentially based on physical block addresses or further ordered. For example, the blocks within the selected set can be further ranked based on their program/erase (P/E) count.
- P/E program/erase
- the blocks of the selected set can be ranked from lowest to highest P/E counts and, starting from the blocks with the lowest P/E count all of the blocks of the set with the highest BER field are scanned.
- other factors that can affect the BER can be used to order the blocks of a selected set: for example, temperature or other operation parameters can be used, such as the difference between the temperature at the time a block was programmed and the temperature at time of read using, for example, the temperature sensor circuit 317 on the memory die 300 .
- the set of blocks corresponding to the CVD time tag with the next highest value for its BER field is picked for scanning.
- interrupting operations such as a host read
- the scan can be interrupted to allow the higher priority operation to take place.
- FIG. 1 shows a memory system 100 having a controller 102 and memory packages 104 , where a memory system will usually have more than one or more memory packages, in some cases (such as an SSD) many more, with each memory package each having one or more memory die, as illustrated in FIG. 4 , of which memory die 300 in FIG. 5A is just one representative.
- Memory die 300 includes a memory structure 326 , on-chip control circuitry 310 , and read/write circuits 328 .
- Memory structure 326 is addressable by word lines via a row decoder 324 and by bit lines via a column decoder 332 .
- the memory structure 326 can be formed according to various technologies described above, as well as other memory device technologies that can experience data degradation.
- the memory structure 326 is formed of multiple blocks as described above with respect to FIG. 5B .
- the blocks can be grouped into sets of blocks, such as blocks of particular region of the memory structure 326 .
- the stippled region of blocks block 0, block 1 and block 2 can be a set of blocks.
- Commands and data are transferred between the controller 102 and the memory die 300 via lines 318 .
- the elements of the controller 102 referenced in the read scan flows of FIGS. 13 and 14 can include for the different memory channels memory the interface 228 / 258 , processor 220 / 250 , ECC engine 226 / 256 and SRAM memory 230 / 260 .
- the processor 220 / 250 and ECC engine 226 / 256 can be as described in more detail above with respect to respective the similarly numbered elements of FIGS. 1-4 .
- the CVD time tags used in the read scan process can be stored in SRAM memory 230 / 260 as CVD time tags 231 / 261 .
- the controller 102 can store the CVD time tags in other working memory for the controller 102 , such as SRAM 160 or DRAM/ReRAM 106 .
- the controller 102 including processors 220 / 250 , 156 , and/or 152 and ECC engine 226 / 256 , and control circuitry on the die, including on-chip controller 310 , can variously form the one or more control circuits used in the read scan process to determine blocks or other segments of the memory having an amount of error above a threshold.
- the processor 220 / 250 can maintain an estimate of error for regions or sets of blocks, such as the BER rate of the CVD time tags 231 / 261 , in SRAM 230 / 260 . Based on these estimates of error for the sets of blocks, the processor 220 / 250 can determine an order for the read scan the sets of blocks, as well as possibly ordering the blocks with the sets, and then send commands for the selected blocks to be read scanned. Then memory 300 then performs a scan of the requested block by reading a portion of the block, where, as described further below, this be a selected subset of the ECC codewords (CWs) stored in the block.
- CWs ECC codewords
- ECC codewords can then be sent back to the controller 102 , where they can be decoded by ECC engine 226 / 256 to determine an amount of error for the block and, if this amount of error exceeds a threshold, the controller 102 can instruct the memory 300 to perform a refresh operation and relocate the block. This process can be described in more detail with respect to FIG. 13 .
- FIG. 13 is a flow chart describing one embodiment of the read scan process.
- the primary embodiments describe here looks at the read scan process being done at the block level, and in terms of groups or sets of blocks, similar techniques can be applied at other levels of granularity for the memory system.
- the read scan can be performed at the level of the individual sub-blocks, where the CVD time tag information can be maintained at the level of a block of multiple sub-blocks or at the multi-block level.
- the memory system Prior to initiating the read scan, the memory system has been maintaining a BER range or estimate (or other health indicator value) for the diverse groups of blocks, such as the CVD time tags in the embodiments mainly described here, as represented at step 1300 and described above in more detail for one embodiment with respect to FIG. 12 .
- the health indicator value can correspond to BER range or estimate, but, more generally, can be incorporate a number of factors, including BER, number of program/erase cycles, temperature, block decoding failure history, or combinations of these and other factors that can be used to quantify the quality with which the memory blocks maintain their data content.
- the controller 102 can monitor these quantities for implementation of a more general or alternate health indicator value.
- the read scan operation starts at step 1301 .
- the memory system can perform the read scan on a periodic basis or in response to criteria such as an error result, for example.
- the memory system checks the CVD time tags and their BER fields.
- the processor 220 / 250 would access SRAM memory 230 / 260 to read the CVD time tags 231 / 261 and check their BER fields.
- the back end processor 220 / 250 can then rank the CVD time tags according to their BER fields at step 1305 , ranking them from highest to lowest, and perform the read scan in the order of the ranking.
- Each CVD time tag corresponds to a set or group of multiple blocks, which can correspond to a physical region on a memory die.
- the blocks within the set are then ordered by the processor 220 / 250 and to provide the order in which the sets of blocks will be sequentially scanned at step 1307 .
- the ordering within the set can be based on physical address order or based on properties of the blocks, such as P/E count or operating conditions.
- the blocks of the set then undergo a read scan to determine the BER for each of the blocks in step 1309 . Step 1309 is considered in more detail below with respect to FIG. 14 .
- FIG. 14 considers scanning and comparing the blocks of a set one by one, while FIG. 13 is for an embodiment in which all of the blocks of a set corresponding to a particular CVD time tag have their scan's BER determined before moving on for a comparison with the threshold. If FIG. 14 includes steps 1409 and 1411 , steps 1311 and 1313 of FIG. 13 can be omitted. Conversely, if steps 1409 and 1411 are omitted in the flow of FIG. 14 , the flow of FIG. 14 goes from the “no” path of step 1413 to step 1311 of FIG. 13 .
- step 1311 the BERs of the scanned blocks are compared against a threshold value.
- a memory system such as that of FIG. 12 , is designed to handle a certain amount of error based on the capabilities of its ECC engine 226 / 256 . The higher amount the tolerated error, the more robust the memory, but this requires a larger amount of ECC data, which comes at the cost of reduced storage volume for user data. Consequently, the strength of the ECC used is a design choice based on the retention capabilities of the memory and other factors. For example, if the amount of error that the ECC engine 226 / 256 can tolerate and still expect to decode the data is 1% for example, the threshold can be set somewhat lower at, say, a BER of 0.7%.
- the block is refreshed and relocated in step 1313 before looping back to step 1305 . If multiple blocks are being relocated, they can also undergo garbage collection. If the BER rate is below the threshold at step 1311 , the flow loops directly back to step 1305 .
- FIG. 14 is a flow chart describing one embodiment for step 1309 of the read scan process of FIG. 13 .
- the embodiment of FIG. 14 includes a comparison of the blocks' BER with the threshold value for each block as they are decoded, rather than decoding all the blocks of a set corresponding a CVD time tag (as in FIG. 13 ) before making the comparison.
- step 1401 follows on from step 1307 with the sets of blocks, and the blocks within the sets, ranked in the order in which they are to be read.
- the read scan command is sent for the highest ranked block in the currently selected set of blocks.
- controller 102 would send a read scan command for the specified block to the memory die 300 .
- the read scan will be performed using the read/write circuits 328 , row decoder 324 and column decoder 332 circuits, and the on-chip controller 310 .
- a read scan will typically not read all of the data in the block, but sample portions of the data as this will usually give a sufficient indication of quality of the data stored in a block, without the amount of time a full read and ECC decode would consume.
- a block is formed of a number of physical pages or word lines, each of which stores one or, for a multi-state memory, more than one logical page of data.
- a (logical) page of data can be quite large, when using ECC, rather than encode a whole page of with ECC, a memory system will often break a page into smaller components and encode each of these with its own ECC into a set of ECC codewords. This structure is illustrated in FIG. 10 , as discussed above.
- the ECC codewords are read out of array structure 326 and transferred out to the controller 102 , where the ECC engine 226 / 256 can be used to decode the ECC codewords.
- the controller 102 can determine the amount of error, or BER, of the user date from the code word. Consequently, by reading out ECC codewords from the selected block and transferring these to the controller 102 , the controller can obtain a good estimate of the BER for the block.
- BER the amount of error
- ECC codewords from the block to the controller.
- a number of embodiments can be used. For example, only one ECC codeword or a few ECC codewords per page may be checked, where this could just be the first ECC codewords on the page or one or more codes words from specific areas of a word line.
- just the first ECC codeword may be checked in the scan; or, if a particular memory structure is known to commonly have defects in a particular array region, such the ends of the word lines where the first and last ECC codewords of a page are written, then the first and last ECC codewords could be checked.
- a word line stores multiple pages of data
- all of the pages or only a subset of pages can be checked in the scan: for example, if common errors are most frequent found in one of the pages (e.g., the upper page), the scan might only check the first ECC codeword of the upper page in a word line.
- all word lines of a block, or only a sample set of word lines may be checked in a block.
- the amount of a block's content checked in the read scan is a trade-off between accuracy and performance, but in most application a representative sample, such as one ECC codeword for each data page of a block, is sufficient.
- the sample ECC codewords from the block are sent to the controller 102 at step 1405 , where they are decoded to determine their BER at step 1407 .
- all of the block of a set of blocks corresponding to CVD time tag can be decoded and then checked at step 1311 of FIG. 13 , in which case the flow of FIG. 14 would skip to step 1413 ; or the blocks of the set can each be checked after the BER is determined in step 1407 , in which case the flow of FIG. 14 continues on to step 1409 .
- step 1409 the block's BER is checked against the threshold value and, if the block's BER exceeds the threshold, at step 1411 the controller 102 instructs the memory die 300 to relocate the block. If the block's BER does not exceed the threshold, the flow continues on to step 1413 .
- Steps 1409 and 1411 correspond to steps 1311 and 1313 of FIG. 13 as described above, but now for a single block at a time. After step 1411 , the flow continues on to step 1413 .
- Step 1413 determines where there are more blocks in the set corresponding to the CVD time tag selected at step 1305 and, if so, loops back to step 1401 . If all blocks in the set have been read scanned, the flow returns to step 1305 (if steps 1407 and 1409 are included) or to step 1311 (if steps 1409 and 1411 are skipped).
- One embodiment includes an apparatus including a non-volatile memory and one or more control circuits.
- the non-volatile memory comprises a plurality of blocks, each block having a plurality of non-volatile memory cells.
- the one or more control circuits are configured to maintain, for each of a plurality of sets of blocks, an estimate of error for the set of blocks as a whole, where each set of blocks includes a plurality of blocks and each of the blocks belong to one of the sets of blocks and establish an order for the sets of blocks based on the estimates of error.
- the one or more control circuits are further configured to scan one or more of the sets of blocks according to the order, including individually scanning individual blocks of a set of blocks being scanned to determine a corresponding amount of error for each of the individual blocks of the set of blocks being scanned.
- One embodiment includes a method that includes maintaining, for each of a plurality of groups of blocks of a non-volatile memory, corresponding metadata including a heath indicator value, each of the groups including a distinct plurality of blocks.
- the groups are ranked according to the corresponding health indicator values.
- the one of more of the groups are scanned in an order based on the ranking, the scanning of a group including: for each block of the group, reading a portion of the data stored in the block; and determining an error rate for each of the blocks based on the reading of the portion of the data stored in the block.
- One embodiment includes a non-volatile memory system of one or more memory die and a controller.
- the one or more memory die each have a plurality of blocks of non-volatile memory cells.
- the controller is configured to maintain a data quality level indication for each of a plurality of regions of the one or more memory die.
- Each of the regions includes a plurality of blocks and each of the blocks belonging to one of the regions.
- the controller is further configured to determine a region ordering for the regions based on the quality level indications, select a region based on the region ordering, and to determine an error estimation for the data of each of the blocks of the selected region.
- a connection may be a direct connection or an indirect connection (e.g., via one or more other parts).
- the element when an element is referred to as being connected or coupled to another element, the element may be directly connected to the other element or indirectly connected to the other element via intervening elements.
- the element When an element is referred to as being directly connected to another element, then there are no intervening elements between the element and the other element.
- Two devices are “in communication” if they are directly or indirectly connected so that they can communicate electronic signals between them.
- set of objects may refer to a “set” of one or more of the objects.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
where P(v=0|Y) is the probability that a bit is a 0 given the condition that the state read is Y, and P(v=1|Y) is the probability that a bit is a 1 given the condition that the state read is Y. Thus, an LLR>0 indicates a bit is more likely a 0 than a 1, while an LLR<0 indicates a bit is more likely a 1 than a 0, to meet one or more parity checks of the error correction code. Further, a greater magnitude indicates a greater probability or reliability. Thus, a bit with an LLR=63 is more likely to be a 0 than a bit with an LLR=5, and a bit with an LLR=−63 is more likely to be a 1 than a bit with an LLR=−5. LLR=0 indicates the bit is equally likely to be a 0 or a 1.
Claims (16)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/218,800 US10896123B2 (en) | 2018-12-13 | 2018-12-13 | Enhancing the effectiveness of read scan performance and reliability for non-volatile memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/218,800 US10896123B2 (en) | 2018-12-13 | 2018-12-13 | Enhancing the effectiveness of read scan performance and reliability for non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
US20200192791A1 US20200192791A1 (en) | 2020-06-18 |
US10896123B2 true US10896123B2 (en) | 2021-01-19 |
Family
ID=71072585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/218,800 Active 2039-01-30 US10896123B2 (en) | 2018-12-13 | 2018-12-13 | Enhancing the effectiveness of read scan performance and reliability for non-volatile memory |
Country Status (1)
Country | Link |
---|---|
US (1) | US10896123B2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11282564B1 (en) * | 2020-11-11 | 2022-03-22 | Micron Technology, Inc. | Selective wordline scans based on a data state metric |
US11436083B2 (en) | 2020-09-04 | 2022-09-06 | Western Digital Technologies, Inc. | Data address management in non-volatile memory |
US11527300B2 (en) * | 2020-08-26 | 2022-12-13 | Western Digital Technologies, Inc. | Level dependent error correction code protection in multi-level non-volatile memory |
US20230393932A1 (en) * | 2022-06-02 | 2023-12-07 | Micron Technology, Inc. | Managing data integrity using a change in a number of data errors and an amount of time in which the change occurred |
TWI831297B (en) * | 2022-01-13 | 2024-02-01 | 慧榮科技股份有限公司 | Control method of flash memory controller, flash memory controller, and electronic device |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102519572B1 (en) | 2018-05-11 | 2023-04-07 | 에스케이하이닉스 주식회사 | Memory system and operating method of memory system |
KR20200124045A (en) | 2019-04-23 | 2020-11-02 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
KR20200137548A (en) | 2019-05-30 | 2020-12-09 | 에스케이하이닉스 주식회사 | Memory device and test operating method thereof |
KR20200126678A (en) * | 2019-04-30 | 2020-11-09 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
US11404097B2 (en) | 2018-12-11 | 2022-08-02 | SK Hynix Inc. | Memory system and operating method of the memory system |
US11139010B2 (en) | 2018-12-11 | 2021-10-05 | SK Hynix Inc. | Memory system and operating method of the memory system |
KR20200126666A (en) | 2019-04-30 | 2020-11-09 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
US11327551B2 (en) | 2019-02-14 | 2022-05-10 | Micron Technology, Inc. | Methods and apparatus for characterizing memory devices |
JP2020170477A (en) * | 2019-04-05 | 2020-10-15 | 株式会社バッファロー | Storage device, control method thereof, and program |
US10916292B1 (en) * | 2019-08-28 | 2021-02-09 | Micron Technology, Inc. | Performing a refresh operation based on system characteristics |
US11320987B2 (en) * | 2019-08-29 | 2022-05-03 | Micron Technology, Inc. | Scanning techniques for a media-management operation of a memory sub-system |
CN112015338B (en) * | 2020-08-19 | 2021-07-23 | 山东大学 | Non-volatile memory table look-up inspection method |
US11527294B2 (en) * | 2020-08-25 | 2022-12-13 | Micron Technology, Inc. | Memory sub-system scan |
JP2022047393A (en) * | 2020-09-11 | 2022-03-24 | キオクシア株式会社 | Memory system, semiconductor storage device, and data reading method |
US11295801B1 (en) * | 2020-09-21 | 2022-04-05 | Silicon Motion, Inc. | Method for managing flash memory module and associated flash memory controller and memory device |
US11740956B2 (en) | 2021-08-09 | 2023-08-29 | Micron Technology, Inc. | Probabilistic data integrity scan with an adaptive scan frequency |
US11694758B2 (en) * | 2021-08-09 | 2023-07-04 | Micron Technology, Inc. | Changing scan frequency of a probabilistic data integrity scan based on data quality |
US11658685B2 (en) * | 2021-10-05 | 2023-05-23 | Macronix International Co., Ltd. | Memory with multi-mode ECC engine |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080239851A1 (en) * | 2007-03-28 | 2008-10-02 | Lin Jason T | Flash Memory with Data Refresh Triggered by Controlled Scrub Data Reads |
US20100131697A1 (en) * | 2008-11-23 | 2010-05-27 | Sandisk Il Ltd. | Methods for tag-grouping of blocks in storage devices |
US20130326284A1 (en) * | 2012-05-29 | 2013-12-05 | Fusion-Io, Inc. | Apparatus, system, and method for managing solid-state storage reliability |
US20140059405A1 (en) * | 2012-08-21 | 2014-02-27 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US20140115410A1 (en) * | 2012-10-24 | 2014-04-24 | Kevin Patrick Kealy | Bit Error Rate Estimation for Wear Leveling and for Block Selection Based on Data Type |
US20150058535A1 (en) * | 2013-08-21 | 2015-02-26 | Sandisk Technologies Inc. | Relocating data based on matching address sequences |
US20150113207A1 (en) * | 2013-10-17 | 2015-04-23 | SK Hynix Inc. | Operating method of data storage device |
US20150113203A1 (en) * | 2013-10-18 | 2015-04-23 | Sandisk Enterprise Ip Llc | Device and Method for Managing Die Groups |
US20150169403A1 (en) * | 2013-12-17 | 2015-06-18 | Silicon Motion, Inc. | Data storage device and data maintenance method thereof |
US20150179284A1 (en) * | 2013-12-19 | 2015-06-25 | Sandisk Technologies Inc. | System and method of managing tags associated with read voltages |
US20160170682A1 (en) * | 2014-12-16 | 2016-06-16 | Sandisk Technologies Inc. | Tag-based wear leveling for a data storage device |
US9672940B1 (en) * | 2016-08-18 | 2017-06-06 | Sandisk Technologies Llc | Non-volatile memory with fast read process |
-
2018
- 2018-12-13 US US16/218,800 patent/US10896123B2/en active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080239851A1 (en) * | 2007-03-28 | 2008-10-02 | Lin Jason T | Flash Memory with Data Refresh Triggered by Controlled Scrub Data Reads |
US20100131697A1 (en) * | 2008-11-23 | 2010-05-27 | Sandisk Il Ltd. | Methods for tag-grouping of blocks in storage devices |
US20130326284A1 (en) * | 2012-05-29 | 2013-12-05 | Fusion-Io, Inc. | Apparatus, system, and method for managing solid-state storage reliability |
US20140059405A1 (en) * | 2012-08-21 | 2014-02-27 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US20140115410A1 (en) * | 2012-10-24 | 2014-04-24 | Kevin Patrick Kealy | Bit Error Rate Estimation for Wear Leveling and for Block Selection Based on Data Type |
US20150058535A1 (en) * | 2013-08-21 | 2015-02-26 | Sandisk Technologies Inc. | Relocating data based on matching address sequences |
US20150113207A1 (en) * | 2013-10-17 | 2015-04-23 | SK Hynix Inc. | Operating method of data storage device |
US20150113203A1 (en) * | 2013-10-18 | 2015-04-23 | Sandisk Enterprise Ip Llc | Device and Method for Managing Die Groups |
US20150169403A1 (en) * | 2013-12-17 | 2015-06-18 | Silicon Motion, Inc. | Data storage device and data maintenance method thereof |
US20150179284A1 (en) * | 2013-12-19 | 2015-06-25 | Sandisk Technologies Inc. | System and method of managing tags associated with read voltages |
US20160170682A1 (en) * | 2014-12-16 | 2016-06-16 | Sandisk Technologies Inc. | Tag-based wear leveling for a data storage device |
US9672940B1 (en) * | 2016-08-18 | 2017-06-06 | Sandisk Technologies Llc | Non-volatile memory with fast read process |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11527300B2 (en) * | 2020-08-26 | 2022-12-13 | Western Digital Technologies, Inc. | Level dependent error correction code protection in multi-level non-volatile memory |
US11436083B2 (en) | 2020-09-04 | 2022-09-06 | Western Digital Technologies, Inc. | Data address management in non-volatile memory |
US11282564B1 (en) * | 2020-11-11 | 2022-03-22 | Micron Technology, Inc. | Selective wordline scans based on a data state metric |
US11682446B2 (en) | 2020-11-11 | 2023-06-20 | Micron Technology, Inc. | Selective wordline scans based on a data state metric |
TWI831297B (en) * | 2022-01-13 | 2024-02-01 | 慧榮科技股份有限公司 | Control method of flash memory controller, flash memory controller, and electronic device |
US20230393932A1 (en) * | 2022-06-02 | 2023-12-07 | Micron Technology, Inc. | Managing data integrity using a change in a number of data errors and an amount of time in which the change occurred |
US12045130B2 (en) * | 2022-06-02 | 2024-07-23 | Micron Technology, Inc. | Managing data integrity using a change in a number of data errors and an amount of time in which the change occurred |
Also Published As
Publication number | Publication date |
---|---|
US20200192791A1 (en) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10896123B2 (en) | Enhancing the effectiveness of read scan performance and reliability for non-volatile memory | |
US10418097B2 (en) | Non-volatile storage system with read calibration | |
US10403377B2 (en) | Non-volatile storage with adaptive redundancy | |
US9450610B1 (en) | High quality log likelihood ratios determined using two-index look-up table | |
US10432232B2 (en) | Multi-type parity bit generation for encoding and decoding | |
US9590656B2 (en) | System and method for higher quality log likelihood ratios in LDPC decoding | |
US10452471B2 (en) | Non-volatile memory with dynamic write abort detection and recovery | |
US9454414B2 (en) | System and method for accumulating soft information in LDPC decoding | |
CN103827971B (en) | Method for non-volatile memory with accelerated post-write read using combined verification of multiple pages | |
US9997258B2 (en) | Using non-volatile memory bad blocks | |
US10938421B2 (en) | Decoding optimization for channel mismatch | |
US10223199B2 (en) | Non-volatile memory configured to return error reduced read data | |
US10153046B1 (en) | Non-volatile memory with backing up of programmed data | |
US10063258B2 (en) | Method and data storage device to estimate a number of errors using convolutional low-density parity-check coding | |
US10346232B2 (en) | Non-volatile storage with failure prediction | |
US20200402582A1 (en) | Non-volatile storage system with fast slc operation | |
CN109726142B (en) | Nonvolatile memory system for recovering bad blocks | |
US11036582B2 (en) | Uncorrectable error correction code (UECC) recovery time improvement | |
TW201319801A (en) | Post-write read in non-volatile memories using comparison of data as written in binary and multi-state formats | |
US10248499B2 (en) | Non-volatile storage system using two pass programming with bit error control | |
US11107518B2 (en) | Extending operating temperature of storage device | |
US10573397B1 (en) | Parameter tracking for non-volatile memory to avoid over-programming | |
US20220101926A1 (en) | Non-volatile memory with switchable erase methods | |
CN111538621A (en) | Soft chip hunting recovery for bit line faults | |
CN112562772B (en) | Adaptive low density parity check hard decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:YANG, NIAN NILES;SHARMA, SAHIL;REUSSWIG, PHILIP;AND OTHERS;REEL/FRAME:047765/0742 Effective date: 20181212 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS AGENT, ILLINOIS Free format text: SECURITY INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:052915/0566 Effective date: 20200113 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:059127/0001 Effective date: 20220203 |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:064715/0001 Effective date: 20230818 Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067045/0156 Effective date: 20230818 |
|
AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067567/0682 Effective date: 20240503 |