US10755798B2 - Recovering data from a faulty memory block in a memory system - Google Patents
Recovering data from a faulty memory block in a memory system Download PDFInfo
- Publication number
- US10755798B2 US10755798B2 US16/221,682 US201816221682A US10755798B2 US 10755798 B2 US10755798 B2 US 10755798B2 US 201816221682 A US201816221682 A US 201816221682A US 10755798 B2 US10755798 B2 US 10755798B2
- Authority
- US
- United States
- Prior art keywords
- word line
- data
- memory
- bias parameters
- memory block
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 254
- 238000000034 method Methods 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims description 11
- 238000003860 storage Methods 0.000 description 53
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 238000009826 distribution Methods 0.000 description 7
- 239000010410 layer Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
Images
Classifications
-
- 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
-
- 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
- G11C29/4401—Indication or identification of errors, e.g. for repair for self repair
-
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
-
- 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
- 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/4074—Power supply or voltage generation circuits, e.g. bias voltage generators, substrate voltage generators, back-up power, power control circuits
-
- 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4099—Dummy cell treatment; Reference voltage generators
-
- 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/5621—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 storage in a floating gate
- G11C11/5642—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/08—Address circuits; Decoders; Word-line control 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/26—Sensing or reading circuits; Data output circuits
- G11C16/28—Sensing or reading circuits; Data output circuits using differential sensing or reference cells, e.g. dummy cells
-
- 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
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- 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/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- 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/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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
-
- 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
- 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
- G11C2029/1202—Word line control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Definitions
- Non-volatile memory systems provide a type of computer memory that retains stored information without requiring an external power source.
- One type of non-volatile memory, flash memory is widely used in various computing devices and in stand-alone memory devices.
- flash memory can be found in laptops, digital audio player, digital cameras, smart phones, video games, scientific instruments, industrial robots, medical electronics, solid state drives, USB drives, memory cards, and the like.
- flash memory aim to increase storage capacity.
- the implementation and architecture of flash memory enables single level cell (SLC) devices, where each cell stores one bit of information, and multi-level cell (MLC) devices including triple-level cell (TLC) devices, where each cell can store more than one bit of information.
- SLC single level cell
- MLC multi-level cell
- TLC triple-level cell
- Additional advances in flash memory also include changes in the flash memory architecture that stack memory cells (3D NAND) in order to increase storage capacity at a reduced cost per gigabyte.
- 3D NAND stack memory cells
- ECC error-correcting code
- REH read error handling
- Various embodiments include a method for recovering data from a faulty memory block in a memory system.
- the method includes reading a target word line in a memory block to obtain a first data; determining the first data has an uncorrectable error; and then adjusting bias parameters of a first group of neighboring word lines within the memory block, where adjusting bias parameters creates first adjusted bias parameters.
- the method also includes reading the target word line using the adjusted bias parameters to obtain second data from the target word line.
- the method further includes determining the second data has a second uncorrectable error; and then adjusting bias parameters of a second group of lines within the memory block, where adjusting the bias parameters of the second group creates second adjusted bias parameters.
- the method also includes reading the target word line using the first and second adjusted bias parameters to obtain a third data from the target word line.
- Other embodiments include a method for detecting a faulty memory block in a memory system.
- the method includes reading a target word line in a memory block to obtain a first data; determining the first data has an uncorrectable error; and then adjusting bias parameters of a first group of neighboring word lines within the memory block, where adjust bias parameters creates first adjusted bias parameters.
- the method further includes reading the target word line using the adjusted bias parameters to obtain second data from the target word line; determining the second data has a second uncorrectable error; and then adjusting bias parameters of a second group of lines within the memory block, where adjusting the bias parameters of the second group of lines creates second adjusted bias parameters.
- the method further includes reading the target word line using the first and second adjusted bias parameters to obtain a third data from the target word line; determining the third data has an uncorrectable error; and marking the memory block as faulty.
- Additional embodiment include a memory controller, including: a first terminal coupled to a memory block; processing circuitry coupled to the first terminal; and a memory coupled to the processing circuitry, the memory storing computer-readable instructions that when executed by the processing circuitry, cause the memory controller to: receive a first data and a first address of the first data, wherein the first address defines a target word lien corresponding to a memory cell in the memory block; determine the first data has an uncorrectable error; and then adjust first bias parameters of a first group of neighboring word lines within the memory block by a predetermined threshold; the adjusting creates first adjusted bias parameters, wherein the first group of neighboring word lines comprises a first word line immediately adjacent to the target word line.
- the computer-readable instructions further cause the memory controller to read the target word line using the first adjusted bias parameters; and receive a second data from the first address.
- FIGS. 1A-1B illustrates a block diagram of an example non-volatile memory system, in accordance with some embodiments.
- FIG. 2A illustrates a block diagram of example components of a controller, in accordance with some embodiments.
- FIG. 2B illustrates a block diagram of example components of a non-volatile memory storage system, in accordance with some embodiments.
- FIG. 3 illustrates a memory block, in accordance with some embodiments.
- FIG. 4 illustrates a distribution curve, in accordance with some embodiments.
- FIGS. 5 a -5 c illustrate conceptual and method diagrams in which a memory block is read, in accordance with some embodiments.
- FIG. 6 illustrates a method diagram, in accordance with some embodiments.
- FIG. 7 illustrates a method diagram, in accordance with some embodiments.
- Controller shall mean individual circuit components, an application-specific integrated circuit (ASIC), a microcontroller with controlling software, a digital signal processor (DSP), a processor with controlling software, a field programmable gate array (FPGA), or combinations thereof.
- ASIC application-specific integrated circuit
- DSP digital signal processor
- FPGA field programmable gate array
- At least some of the example embodiments are directed to recovering data from a faulty memory block in a memory system.
- the faulty memory block is detected when a read handling error occurs during a read of a target word line in the faulty memory block.
- An attempt to recover data is made in a first pass by adjusting the bias parameters applied to the non-read word lines of the memory block. If unsuccessful, an attempt to recover data is made in a second pass by adjusting the bias parameters of the select lines and the dummy word lines of the faulty memory block.
- the bias parameters are adjusted by increasing the read pass voltages applied to non-read word lines that are near the target word line.
- the voltages on the control lines as well as on dummy word lines are increased.
- FIG. 1A illustrates a block diagram of an example system architecture 100 including non-volatile memory.
- the example system architecture 100 includes storage system 102 , a controller 104 , and a host 106 .
- the host 106 can include any device or system that utilizes the storage system 102 .
- the host 106 can include its own controller (e.g., a processor) configured to execute instructions stored in the storage system 102 and further the host 106 can access data stored in the storage system 102 .
- Examples of the host 106 can include computing devices such as a desktop computer, rack mounted server, a laptop, a smartphone, a tablet, and the like. Host 106 can also include systems and devices such as a gaming system, a digital phone, a digital camera (e.g., digital still cameras and digital movie cameras), portable media player, digital photo frame, remote control, television stick, smart television, and the like.
- the system architecture 100 can be implemented in a memory card such as secure digital (SD) card or a micro secure digital (micro-SD) card.
- the system architecture 100 is embedded in the host, for example as a solid state disk (SSD) drive installed in a laptop computer.
- SSD solid state disk
- the host 106 can include a built-in receptacle for one or more types of memory cards or flash drives (e.g., a universal serial bus (USB) port, or a memory card slot). Furthermore, the host 106 can require adapters into which a memory card is plugged.
- USB universal serial bus
- a host 106 can include any type of device, system, and apparatus that accesses the storage system 102 .
- the storage system 102 can include its own memory controller and drivers (e.g., controller 104 )—as will be described further below—but other embodiments of the storage system 102 can include memory-only units that are instead controlled by software executed by a controller on the host 106 (e.g., a processor of a computing device controls—including error handling of—the storage unit 102 ).
- FIG. 1A illustrates the storage system 102 as separate from the host 106
- the storage system 102 is embedded with the host 106 , where the memory, controller, and drivers are formed on a single integrated circuit chip.
- the host 106 can communicate to the storage system 102 by way of a bus 112 that can implement any known or after developed communication protocol, such as Secure Digital (SD) protocol, Memory stick (MS) protocol, USB protocol, or Advanced Microcontroller Bus Architecture (AMBA).
- SD Secure Digital
- MS Memory stick
- ABA Advanced Microcontroller Bus Architecture
- the controller 104 acts as an interface between the host 106 and the storage system 102 .
- the controller 104 can include individual circuit components, processing circuitry (e.g., logic gates and switches), a processor, a microprocessor, a microcontroller with controlling software, or a field programmable gate array (FPGA).
- the controller 104 includes a computer-readable medium that stores computer-readable program code (e.g., software or firmware) executable by the processor.
- the controller 104 is a flash memory controller.
- the controller 104 manages data stored on the storage system 102 and communicates with the host 106 .
- the controller 104 formats the flash memory to ensure the memory is operating properly, maps out bad flash memory cells, and allocates spare cells to be substituted for future failed cells. Additionally, some parts of the spare cells are used to hold firmware to operate the flash memory controller (e.g., the controller 104 ), as well as implement other features.
- the host 106 When the host 106 reads data from or writes data to the memory system 102 , the host 106 communicates with the controller 104 . In one example, the host 106 provides to the controller 104 , a logical address to which data is to be read or written. Upon receiving the logical address, the controller 104 performs the operations of converting the logical address to a physical address in the storage system 102 . Although the foregoing tasks have been described as being performed by the controller 104 , these tasks are not limited to being performed only by the controller 104 . To the contrary, the host 106 can also perform these tasks. For example, the host 106 can provide the physical address to the controller 104 , in some cases.
- the controller 104 also performs various memory management functions such as wear leveling (e.g., distributing writes to extend the lifetime of the memory blocks), garbage collection (e.g., moving valid pages of data to a new block and erasing the previously used block), and error detection and correction (e.g., read error handling).
- wear leveling e.g., distributing writes to extend the lifetime of the memory blocks
- garbage collection e.g., moving valid pages of data to a new block and erasing the previously used block
- error detection and correction e.g., read error handling
- the storage system 102 includes the non-volatile memory (NVM) block 110 which includes several memory die 110 - 1 - 110 -N.
- the NVM block 110 defines a physical set of memory die, such as the memory die 110 - 1 - 110 -N.
- the NVM block 110 defines a logical set of memory die, where the NVM block 110 includes memory die from several different sets of memory die. The manner in which the NVM block 110 is defined in FIG. 1A is not meant to be limiting.
- Each memory die for example memory die 110 - 1 , includes non-volatile memory cells, such as NAND flash memory cells or NOR flash memory cells.
- non-volatile memory cells such as NAND flash memory cells or NOR flash memory cells.
- the memory cells in the storage system 102 retain data even when there is a break in the power supply.
- the storage system 102 can be easily transported and the storage system 102 can be used in memory cards and other memory devices that are not always connected to a power supply.
- the memory cells in the memory die 110 are solid-state memory cells (e.g., flash) and are one-time programmable, few-time programmable, or many time programmable. Additionally, the memory cells in the memory die 110 can include single-level cells (SLC), multiple-level cells (MLC), or triple-level cells (TLC). In some embodiments, the memory cells are fabricated in a planar manner (e.g., 2D NAND (NOT-AND) flash) or in a stacked or layered manner (e.g., 3D NAND flash). That is, planar flash memory includes a single layer of memory cell, while stacked flash memory includes memory cells that are stacked vertically in multiple layers.
- planar flash memory includes a single layer of memory cell
- stacked flash memory includes memory cells that are stacked vertically in multiple layers.
- the controller 104 and the NVM block 110 are communicatively coupled by an interface 114 that can implement any known or after developed communication protocol.
- the interface 114 is a flash interface, such as Toggle Mode 200 , 400 , or 800 , or Common Flash Memory Interface (CFI).
- the interface 114 can be implemented by several channels (i.e., physical connections) disposed between the controller 104 and the individual memory die 110 - 1 - 110 -N.
- the number of channels over which the interface 114 is established can vary based on the capabilities of the controller 104 .
- a single channel can be configured to communicatively couple more than one memory die.
- the depiction of a single interface 114 is not meant to be limiting. To the contrary, the single interface is representative of an example interface that can be used between components, and one or more interfaces can be used to communicatively couple the same components.
- the methods described herein are directed to recovering data from a faulty memory block in the storage system 102 .
- the faulty memory block is detected when a read handling error occurs during a read of a target word line in the faulty memory block.
- additional aspects of the storage system 102 are described.
- the system architecture 100 can be implemented as part of a larger system architecture.
- the system architecture 150 includes a storage module 156 that further includes several storage systems 102 .
- the storage module 156 is communicatively coupled with the host 106 by way of a storage controller 152 .
- an interface 154 between the host 106 and the storage module 156 includes a bus interface that implements any known or after developed communication protocol, such as a serial advanced technology attachment (SATA) or peripheral component interface express (PCIe) interface.
- the storage module 156 is an SSD (e.g., in a laptop computer or a tablet).
- a hierarchical storage system can include a plurality of storage controllers 152 , each of which control a respective storage system 102 . Furthermore, a plurality of hosts 106 can each access the hierarchical storage system. Hosts 106 can access memories within the hierarchical storage system via a bus interface that implements any known or after developed communication protocol including a non-volatile memory express (NVMe) or a fiber channel over Ethernet (FCoE) interface.
- NVMe non-volatile memory express
- FCoE fiber channel over Ethernet
- the hierarchical storage system can be implemented as a rack mounted storage system that is accessible by multiple host computers (e.g., a data center).
- the interface 154 can be implemented by several channels (i.e., physical connections) disposed between the storage controller 152 and the storage module 156 . In some embodiments, the number of channels over which an interface 154 is established varies based on the capabilities of the storage controller 152 .
- the depiction of a single interface is not meant to be limiting and the single interface is representative of an example interface that can be used between components, where one or more interfaces can be used to communicatively couple various components. Next, additional details of the controller 104 are described.
- a block diagram 200 of the storage system 102 illustrates additional details with respect to the controller 104 (introduced in FIG. 1A ).
- the block diagram 200 of the storage system 102 illustrates components previously described in FIG. 1A , such as the controller 104 and the NVM memory block 110 .
- Additional components that can be present within the storage system 102 include a random access memory (RAM) 230 , a read only memory (ROM) 232 , and other components 234 .
- the ROM 232 stores system boot code.
- the RAM 230 and the ROM 232 are shown as separate modules within the storage system 102 , the illustrated architecture is not meant to be limiting. To the contrary, the RAM 230 and the ROM 232 can be located within the controller 104 , portions of the RAM 230 or ROM 232 , respectively, can be located outside the controller 104 and within the controller 104 . In other embodiments, the controller 104 , the RAM 230 , and the ROM 232 can be located on separate semiconductor die. In various embodiments, the other components 234 include external electrical interfaces, external RAM, resistors, capacitors, logic gates, or other components that interface with the controller 104 .
- the controller 104 includes a module 202 that interfaces with the host 106 , a module 204 that interfaces with the NVM memory block 110 , as well as various other modules, described further below.
- the modules within the controller e.g., modules 202 and 204 ) are communicatively coupled to each other by a bus 206 .
- controller 104 The following discussion of the various modules depicted within the controller 104 are meant to be illustrative and not limiting. Further still, the various modules are not limited to being executed within the controller 104 . That is, in some embodiments, one or more modules can be executed outside the controller 104 . It is noted, the controller can be configured with hardware and/or firmware to perform the various functions described herein. For example, some of the components shown as being internal to the controller can also be stored external to the controller.
- the term module can include a packaged functional hardware unit designed for use with other components, a set of instructions executable by a controller (e.g., a processor executing software or firmware), processing circuitry configured to perform a particular function, and a self-contained hardware or software component that interfaces with a larger system.
- a module can include an application specific integrated circuit (ASIC), a Field Programmable Gate Array (FPGA), a circuit, digital logic circuit, an analog circuit, a combination of discrete circuits, gates, and other types of hardware or combination thereof.
- a module can include memory that stores instructions executable by a controller to implement a feature of the module.
- the controller 102 is implemented within the host 106 .
- the module 202 interfaces with the host 106 and includes a host interface 208 and a physical layer interface 210 that provides the electrical interface between the host 106 or next level storage controller and the controller 104 .
- the host interface 208 facilitates transferring of data, control signals, and timing signals. Examples of the host interface 208 include SATA, SATA express, Serial Attached SCSI (SAS), Fibre Channel, USB, PCIe, and NVMe.
- the module 204 communicates with the NVM block 110 .
- the module 204 can couple a first terminal of the controller 104 , where the first terminal of the controller 104 couples to the NVM block 110 .
- the module 204 includes an error correction controller (ECC) engine 212 .
- ECC error correction controller
- the ECC engine 212 encodes data received from the host 106 , where the encoded data is stored within the NVM block 110 .
- the ECC engine 212 decodes the data and corrects errors detected within the data.
- the module 204 also includes a sequencer 214 and a Redundant Array of Independent Drives (RAID) module 216 .
- the sequencer 214 generates command sequences, such as program and erase command sequences that are transmitted to the NVM memory block 110 .
- the RAID module 216 generates RAID parity and recovery of failed data. The RAID parity can be used to provide an additional level of integrity protection for data written into the non-volatile memory die 110 .
- the ECC engine 212 implements the functions of the RAID module 216 .
- the module 204 also includes a memory interface 218 that provides the command sequences to the NVM memory block 110 and receives status information from the NVM memory block 110 .
- the memory interface 218 can implement any known or after developed communication protocol including a double data rate (DDR) interface, such as a Toggle Mode 200 , 400 , or 800 interface.
- DDR double data rate
- the module 204 also includes a flash control layer 220 that controls the overall operation of the module 204 .
- additional modules within the controller 104 can include a dummy word line (DW) pattern generation module 222 , a DW error analysis module 224 , and a read parameter adjustment module 226 .
- a non-volatile memory die can include dummy word lines that are used for the purposes of analyzing and tracking behavior and health of a respective non-volatile memory die.
- the DW pattern generation module 222 puts a known data pattern into a dummy word line and tracks or periodically check for errors by reading the data back out of the dummy word line and comparing the data to the known data pattern.
- the read parameter adjustment module 226 adjusts parameters associated with a particular non-volatile memory die. For example, the read parameters adjustment module 226 can adjust parameters associated with a particular non-volatile memory die based on errors detected in a dummy word line. Furthermore, the read parameter adjustment module 226 can adjust various parameters associated with a particular memory block outside of scenarios where an error is detected in a dummy word line—for example during a read error handling operation and as described further below.
- Additional modules within the controller 104 include a buffer manager/bus controller 228 that manages buffers in the RAM 230 and controls the internal bus arbitration of the bus 206 in the controller 104 . Additionally, the controller 104 can include a media management layer 236 that performs wear leveling of the NVM memory block 110 . As previously mentioned, the various modules described with respect to the controller 104 are not meant to be limiting as to the architecture of the controller 104 . For example, the physical layer interface 210 , the RAID module 216 , the media management layer 236 , and the buffer management/bus controller 114 can be examples of optional components within the controller 104 .
- the media management layer 236 can be integrated as part of the flash management that handles flash error and interfaces with the host 106 .
- the media management layer 236 can include an algorithm (e.g., firmware in the memory device), that translates a write command received from the host 106 into a write to the NVM memory block 110 . Accordingly, modules and components within an example controller 104 have been described.
- FIG. 2B shows a block diagram with various features of the NVM memory block 110 within the storage system 102 .
- the controller 104 As details of the controller 104 have been previously described (in FIG. 2A ), in FIG. 2B the controller 104 is illustrated as a single block. Additionally, previously described RAM 230 , the ROM 232 , and the other components 234 are included in FIG. 2B to help orient the reader.
- FIG. 2B Next, details within an example memory die 110 - 1 are discussed. Although the discussion centers on the memory die 110 - 1 , each of the features discussed in relation to the memory die 110 - 1 equally applies to all the memory die within NVM memory block 110 .
- the example memory die 110 - 1 includes control circuit 250 , read/write circuits 252 , a row decoder 254 , a column decoder 256 , and a memory array 260 .
- the memory array 260 can include a two-dimensional array or a three-dimensional array of memory cells.
- the read/write circuits 252 read and program pages of memory within the memory die 110 - 1 , in parallel.
- the memory array 260 is accessed by word lines via the row decoder 254 and by bit lines via the column decoder 256 .
- the architecture of the memory die 110 - 1 is not meant to be limiting and any known architecture that can perform the functions of accessing the memory array 260 can be used without departing from the scope of this disclosure.
- access to the memory array 260 by various peripheral circuits can be implemented in a symmetric fashion on opposite sides of the memory array 260 which reduces the densities of access lines and circuitry on each side of the memory array 260 .
- the control circuit 250 includes a power control circuit 266 , an address decoder 268 , and a state machine 270 .
- the power control circuit 266 , the address decoder 268 , and the state machine 270 can be collectively referred to as managing circuits.
- the control circuit 250 and its various managing circuits are communicatively coupled by various interfaces (e.g., interfaces 262 and 264 ) to the row decoder 254 and the column decoder 256 .
- the control circuit 250 performs various operations on the memory array 260 that include reading or writing to the memory cells.
- the power control circuit 266 controls the power and voltage supplied to the word lines and bit lines during operation of the memory array 260 .
- the power control circuit 266 can include a charge pump that creates voltages larger than the supply voltage.
- the address decoder 268 provides an address interface that translates addresses between addresses provided by the host 106 and addresses used by the row decoder 254 and the column decoder 256 .
- the address decoder 268 can convert an address provided by the host 106 to an address that is understood and compatible with a format used by the row decoder 254 and the column decoder 256 .
- the state machine 270 provides chip-level control of memory operations.
- the storage system 102 includes various components including the controller 104 and the NVM memory block 110 , details of which have been described above in FIGS. 1A, 1B, 2A, and 2B .
- the memory array 260 can be divided into several memory blocks 302 .
- a memory block is defined as a unit of erase. That is, each block 302 includes the minimum number of memory cells that are erased together or as a block.
- the memory array 310 includes 1,024 blocks. However, the memory array 310 can be partitioned into more or fewer blocks. Additionally, other embodiments can use a different unit of erase.
- Each block 302 can include columns corresponding to bit lines 304 , where each column is accessed by a respective bit line. Furthermore, each block 302 can include word lines 306 and select lines 308 .
- the method in which each memory cell is accessed and the number of memory cells accessed during a read or write varies. For example, all of the bit lines of the block 302 - 1 can be simultaneously selected during read and program operations.
- memory cells along a common word line can be programmed at the same time (i.e., concurrently).
- the bit lines can be 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 an even bit line are programmed at a different time.
- Each bit line for example bit line 304 - 1 , is connected to several memory cells connected in series. More particularly, in an embodiment where each memory cell is a floating gate transistor, the floating gate transistors are connected in series to form a NAND string 310 (e.g., NAND string 310 within the dashed box). Although four memory cells are shown in FIG. 3 , the number of memory cells within the NAND string is not meant to be limiting. For example, 16, 32, 64, 128, or any other number of memory cells can be connected in a NAND string.
- a first terminal of the NAND string 310 is connected to a corresponding bit line (e.g., bit line 304 - 1 ) by a select transistor 312 that is in turn controlled by the select gate drain line (SGD) 308 - 1 .
- a second terminal of the NAND string 310 is connected to another select transistor 314 that is in turn controlled by the select gate source line (SGS) 308 - 2 .
- all other memory cells or unselected memory cells within the NAND string 310 are turned on (e.g., conducting current regardless of whether they are programmed or erased).
- the unselected memory cells have a bias parameter (e.g. a read pass voltage) applied to their respective word lines that turn on the memory cells.
- the word line 306 - 2 is connected to a voltage having a level that is specified for the read operation (e.g., read compare levels) in order to determine whether a threshold voltage of the memory cell 316 has reached a particular level.
- a bias parameter e.g., a read pass voltage
- the conduction current of the memory cell 316 is measured to determine the value stored within the memory cell 316 .
- Each of the memory blocks 302 can be divided into a number of pages defined as a unit of programming.
- a page of data can be stored in one row of memory cells.
- Each page can include user data and overhead data, where the overhead data includes ECC that has been calculated from the user data.
- the controller 104 calculates the ECC when data is programmed into the memory array 260 and subsequently checks the data when the data is read from the memory array 260 .
- the state machine 270 or other component can calculate and check the ECC.
- the ECC and other overhead data are stored in different pages, or even different memory blocks, than the user data to which they pertain.
- the rate at which memory cells can be programmed or erased varies based on factors such as manufacturing variations (e.g., silicon), variation during operation (e.g., temperature of the memory die 110 during a write versus a read), and variations correlated to time and use (e.g., age of the memory die 110 , wear, and the like). For example, some memory cells are slower to program or erase because those cells were previously erased to a lower threshold voltage than others or because of uneven wear among the memory cells.
- FIG. 4 shows a distribution graph 400 that illustrates how the resultant compare voltages can shift due to over programming.
- FIG. 4 illustrates a distribution graph where the x-axis 402 correlates to a voltage value, where a respective range of voltage values fall within a Vread bucket (e.g., Vread buckets 404 ), and the y-axis 404 correlates to a number of memory cells.
- the first Vread bucket 404 - 1 includes a first range of voltage values that correlates to a certain amount (within a range) of charge stored in a memory cell.
- All memory cells that fall within the Vread bucket 404 - 1 are determined to a store a first value.
- another Vread bucket 404 - 2 includes a second range of voltage values that correlates to a certain amount (within a range) of charge stored within a memory cell.
- a memory cell that falls within the Vread bucket 402 - 2 is determined to store a second value.
- the distribution curve 410 represents a distribution where the memory cells fall within the expected Vread buckets. However, when over programming occurs, the distribution curve shifts slightly to develop a tail, such as seen in the distribution curve 414 (e.g., tail 412 ). Accordingly, a memory cell that was originally programmed to fall within the Vread bucket 404 - 1 can result in an error during a read operation if the memory cell is determined to fall within the Vread bucket 404 - 2 . A method is described next, that addresses such an error.
- FIGS. 5A-5C illustrate conceptual and method diagrams in which an example memory block is read, according to some embodiments.
- the data that is read out of the memory block initially encounters a read error that is uncorrectable.
- the conceptual and method diagrams in FIGS. 5A-5C describe a method in which the data can be recovered after encountering the read error.
- the method in accordance with various embodiments includes adjusting the bias parameters of neighboring word lines, dummy word lines, and select lines.
- an example memory block 302 - 1 illustrates an example memory block that can be read in accordance with the methods described herein.
- the memory block 302 - 1 includes 16 word lines 502 represented by rows disposed across the memory block 302 - 1 .
- a word line of the word lines 502 connects to several memory cells, each memory cell connected to their respective NAND strings.
- a first word line 504 - 1 is disposed near a bottom portion of the memory block 302 - 1 , and subsequent word lines are disposed in an ascending manner up the memory block 302 - 1 , where the word line 504 - 16 is disposed near a top portion of the memory block 302 - 1 .
- a target word line 504 - 9 is located in a middle portion of the memory block 302 - 1 and is surrounded by immediately adjacent neighboring word lines 504 - 8 and 504 - 10 .
- the target word line 504 - 9 can also be considered to be surrounded by additional groups of word lines 508 - 1 and 508 - 2 .
- the group of word lines 508 - 1 includes seven word lines (e.g., word lines 508 - 1 - 508 - 7 ) disposed below the target word line 504 - 9
- the group of word lines 508 - 2 includes six word lines (e.g., word lines 508 - 10 - 508 - 16 ) disposed above the target word line 504 - 9 .
- the immediately adjacent neighboring word lines 504 - 8 and 504 - 10 and the groups of word lines 508 - 1 and 508 - 2 are defined as a first group of word lines 504 .
- the positioning of the target word line 504 - 9 within the memory block 302 - 1 is not meant to be limiting and the methods described herein can apply to any target word line located within any position of the memory block 302 - 1 .
- the target word line during another read cycle can be the word line 504 - 1 .
- the memory block 302 - 1 also includes two dummy word lines 510 disposed along the periphery of the memory block 302 - 1 . That is, one word line 510 - 1 is disposed below the word lines 502 and the other dummy word line 510 - 2 is disposed above the word lines 502 . Additionally, two select lines are disposed along the edges of the memory block 302 - 1 . The select line 512 - 1 is disposed below the dummy word line 510 - 1 and the select line 512 - 2 is disposed above the word line 510 - 2 . For discussion purposes, the select lines 512 and the dummy word lines 510 define a second group of lines.
- Step 1 the target word line 504 - 9 is read and the system encounters an uncorrectable error. That is, consider for purposes of discussion that the data read out of target word line 504 - 9 contains errors.
- the storage system 102 applies a select voltage to the select lines and read pass voltages to all the other word lines.
- a bias parameter of VREADK (e.g., a read pass voltage) is applied to the immediately adjacent neighboring word lines 504
- a bias parameter of VREAD (e.g., a read pass voltage) is applied to the group of word lines 508
- a bias parameter of VREAD DUMMY WL (e.g., a read pass voltage) is applied to the dummy word lines 510
- a bias parameter of VREAD SELECT is applied to the select lines 512 .
- VREADK is around 10 voltages and VREAD is around 9 voltages.
- VREADK is 8 voltages
- VREAD is 7 voltages
- VREAD DUMMY WL is 7 voltages
- VREADSELECT is 8 voltages.
- the word lines that are immediately adjacent e.g., the word lines 504 - 8 and 504 - 10
- the word lines that are immediately adjacent can have bias levels that are different from the extended neighbors (e.g., word lines 508 ).
- a bias parameter of VCGR e.g., a read voltage
- a first data 514 associated with a memory cell connected to the target word line 504 - 9 is read out.
- the first data 514 contains an error that results in a read error detected by various ECC algorithms including an LDPC (low-density parity-check) code, BCH (Bose-Chaudhuri-Hocquenghem) codes, a soft read, extra parity, and the like.
- LDPC low-density parity-check
- BCH Bose-Chaudhuri-Hocquenghem
- the ECC engine 212 applies an ECC algorithm on the first data 514 and creates an ECC output, which the ECC engine 212 then compares to a previously stored ECC output.
- the previously stored ECC result can be stored as part of overhead data (previously described with respect to FIG. 3 ).
- One of two outcomes can result from the comparison.
- One outcome can include a conclusion that the ECC output and the previously stored ECC output match. This outcome indicates the first data 514 is not corrupt and the first data 514 does not need to be processed further. However, recall that for the purposes of this discussion, the first data 514 does contain errors.
- the other outcome is the conclusion that the ECC output and the previously stored ECC output do not match.
- This outcome indicates the first data 514 is corrupted and the ECC engine 212 can perform further processing on the first data 514 .
- the ECC engine 212 executes a read error handling (REH) process.
- REH read error handling
- the ECC engine 212 attempts to correct individual bits in the first data 514 which creates modified first data. After attempting to correct the individual bits in the first data 514 , the ECC engine 212 applies the ECC algorithm on the modified first data and creates a second ECC output.
- the ECC engine 212 transmits an indication that the error correction was successful. However, if the ECC engine determines the two ECC outputs (e.g., as between the previously stored ECC output and the second ECC output) do not match, the ECC engine 212 transmits an indication that the error correction was unsuccessful or an uncorrectable error indication.
- the uncorrectable error can occur when the first data 514 includes more bits that are corrupted than the ECC engine 212 has the ability to correct. In the related art, the process ends with the uncorrectable error and the original data is not recovered. However, in the disclosed method, additional steps can be taken to overcome the uncorrectable error and recover the original data.
- bias parameters of the first group of word lines 504 are adjusted and the target word line is re-read.
- the bias parameters can be adjusted by way of the read parameter adjustment module ( FIG. 2A ) and the power control circuit 266 ( FIG. 2B ). For example, during the re-reading of the target word line (i.e., a second read), the original bias parameters applied to the first group of word lines 508 (e.g., VREADK) and 510 (e.g., VREADK) are increased.
- the bias parameters can be increased by the same offset or voltage amount. In other embodiments, the bias parameters can be increased by different amount based on a location of a particular word line to the target word line 504 - 9 .
- the bias parameters can be adjusted, by a predetermined threshold, such that the read pass voltages are increased, on the first group of word lines 504 including the word lines 504 (e.g., VREADK++) and the groups of word lines 508 (e.g., VREAD++).
- the predetermined threshold can vary between 0.5 mV-2V. In other embodiments, the predetermined threshold can vary between 0.2 mV-5V.
- both VREAD and VREADK are each respectively increased by 1 voltage; accordingly the voltage of VREAD is increased to 8 voltages and the voltage of VREADK is increased to 9 voltages.
- One range for VREADK++ is 8.5-10 voltages, while a range for VREAD++ is 7.5-9 voltages.
- the bias parameters applied to the second group of lines including the dummy word lines 510 and the select lines 512 remain the same as before (e.g., VREAD DUMMY WL is 7 voltages and VREAD SELECT is 8 voltages, respectively).
- VREAD DUMMY WL is 7 voltages
- VREAD SELECT is 8 voltages, respectively.
- data is read out of the target word line 504 - 9 using VCGR, as second data 516 .
- the ECC engine 212 applies an ECC algorithm on the second data 516 and creates an ECC output, which the ECC engine 212 then compares to the previously stored ECC output.
- the previously stored ECC result is the same as was used in Step 1 , which is stored as part of the overhead data.
- the first outcome is a conclusion that the ECC output and the previously stored ECC output match. This outcome indicates the second data 516 is not corrupt and the second data 516 does not need to be processed further. Essentially, with this first outcome, the original data stored within the memory block 302 - 1 is successfully retrieved. In such a manner, in some embodiments, increasing the read pass voltages of the neighboring word lines and extended neighboring word lines that are disposed around a target word line can resolve an uncorrectable error.
- the second outcomes is the conclusion that the ECC output and the previously stored ECC output do not match. This outcome indicates the second data 516 is corrupt and the ECC engine 212 performs further processing on the second data 516 .
- the ECC engine 212 executes an REH process. In one example REH process, the ECC engine 212 attempts to correct individual bits in the second data 516 which creates modified second data. After attempting to correct the individual bits in the second data 516 , the ECC engine 212 can apply the ECC algorithm on the modified second data and create an additional ECC output.
- Step 2 if the ECC engine determines the two ECC outputs (e.g., as between the previously stored ECC output and the additional ECC output) match, the ECC engine 212 transmits an indication that the read error handling was successful. However, if the ECC engine determines the two ECC outputs (e.g., as between the previously stored ECC output and the additional ECC output) do not match, the ECC engine 212 transmits an indication that the read error handling was unsuccessful or an uncorrectable error indication. The uncorrectable error can occur when the second data 516 includes more bits that are corrupt than the ECC engine 212 has the ability to correct. In the disclosed method, additional steps can be taken in an attempt to recover the original data, as described in FIG. 5C .
- Step 3 bias parameters of the second group of lines including the dummy word lines 510 and the select lines 512 are also adjusted and the target word line 504 - 9 is re-read. Similar to Step 2 , in Step 3 , the bias parameters are adjusted, by a predetermined threshold, such that the read pass voltage are increased on the dummy word lines 510 (e.g., VREAD DUMMY WL++) and the select voltage levels are increased on the select lines 512 (VREADSELECT++).
- the predetermined threshold can vary between 0.5 mV-2V. In other embodiments, the predetermined threshold can vary between 0.2 mV-5V.
- both VREAD DUMMY WL and VREADSELECT are each respectively increased by 1 voltage; accordingly, the voltage of VREAD DUMMY WL is increased to 8 voltages and the voltage of VREADSELECT is increased to 9 voltages.
- One range for VREAD DUMMY WL++ is 7.5-9 voltages, while a range for VREADSELECT++ is 8.5-10 voltages.
- the ECC engine 212 applies an ECC algorithm on the third data 518 and creates an ECC output, which the ECC engine 212 then compares to the previously stored ECC output.
- the previously stored ECC result is the same as was used in Steps 1 and 2 and is stored as part of the overhead data.
- two outcomes can occur.
- the first outcome is a conclusion that the ECC output and the previously stored ECC output match. This outcome indicates the third data 518 is not corrupt and the third data 518 does not need to be processed further. With this first outcome, the original data stored within the memory block 302 - 1 is successfully retrieved. That is, in some embodiments, increasing the read pass voltages of the neighboring word lines and extended neighboring word lines that are disposed around a target word line can resolve an uncorrectable error.
- the second outcome is the conclusion that the ECC output and the previously stored ECC output do not match.
- This outcome indicates the third data 518 is corrupt and the ECC engine 212 can perform further processing on the third data 518 .
- the ECC engine 212 can execute a REH process where the ECC engine 212 can attempt to correct individual bits in the third data 518 which creates modified third data. After attempting to correct the individual bits in the third data 518 , the ECC engine 212 can apply the ECC algorithm on the modified third data and create another ECC output.
- the ECC engine 212 can transmit an indication that the read error handling was successful. When the read error handling is successful at this point, the original data is recovered, which otherwise could not be recovered. However, if the ECC engine determines the two ECC output (e.g., as between the previously stored ECC output and the another ECC output) do not match, the ECC engine 212 can transmit an indication that the read error handling was unsuccessful or an uncorrectable error indication. The uncorrectable error can occur when the third data 518 includes more bits that are corrupt than the ECC engine 212 has the ability to correct.
- the process ends with the uncorrectable error and the original data is not recovered.
- the memory block 302 - 1 can be marked as faulty.
- FIG. 6 shows a method in accordance with at least some embodiments.
- the method starts (block 600 ) and includes: reading a target word line in a memory block to obtain a first data (block 602 and e.g., FIG. 5A ); determining the first data has an uncorrectable error (block 604 and e.g., FIG. 5A ), and then; adjusting bias parameters for a first group of neighboring word lines within the memory block, wherein adjusting bias parameters creates first adjusted bias parameters (block 606 and e.g., FIG. 5B ); and reading the target word line using the adjusted bias parameters to obtain second data from the target word line (block 608 and e.g., FIG. 5B ). Thereafter the method ends (block 610 .)
- FIG. 7 shows a method in accordance with at least some embodiments.
- the method starts (block 700 ) and includes: reading a target word line in a memory block to obtain a first data (block 702 and e.g., FIG. 5A ); determining the first data has an uncorrectable error (block 704 and e.g., FIG. 5A ), and then; adjusting bias parameters of a first group of neighboring word lines within the memory block, wherein adjusting bias parameters creates first adjusted bias parameters (block 706 and e.g., FIG. 5B ); reading the target word line using the adjusted bias parameters to obtain second data from the target word line (block 708 and e.g., FIG. 5B ).
- the method continues with: determining the second data has a second uncorrectable error, (block 710 and e.g., FIG. 5B ) and then; adjusting bias parameters of a second group of lines within the memory block, wherein adjusting the bias parameters of the second group of lines creates second adjusted bias parameters (block 712 and e.g., FIG. 5C ); reading the target word line using the first and second adjusted bias parameters to obtain a third data from the target word line (block 714 and e.g., FIG. 5C ); determining the third data has an uncorrectable error (block 716 and e.g., FIG. 5C ), and marking the memory block as faulty (block 718 and e.g., FIG. 5C ). Thereafter the method ends (block 720 ).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
Description
Claims (16)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/221,682 US10755798B2 (en) | 2018-12-17 | 2018-12-17 | Recovering data from a faulty memory block in a memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/221,682 US10755798B2 (en) | 2018-12-17 | 2018-12-17 | Recovering data from a faulty memory block in a memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
US20200194094A1 US20200194094A1 (en) | 2020-06-18 |
US10755798B2 true US10755798B2 (en) | 2020-08-25 |
Family
ID=71072858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/221,682 Active US10755798B2 (en) | 2018-12-17 | 2018-12-17 | Recovering data from a faulty memory block in a memory system |
Country Status (1)
Country | Link |
---|---|
US (1) | US10755798B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11216334B1 (en) * | 2020-07-28 | 2022-01-04 | Phison Electronics Corp. | Data reading method, memory storage device and memory control circuit unit |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11468945B2 (en) * | 2020-10-15 | 2022-10-11 | Arm Limited | 3D storage architecture with tier-specific controls |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8498151B1 (en) * | 2008-08-05 | 2013-07-30 | Apple Inc. | Data storage in analog memory cells using modified pass voltages |
-
2018
- 2018-12-17 US US16/221,682 patent/US10755798B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8498151B1 (en) * | 2008-08-05 | 2013-07-30 | Apple Inc. | Data storage in analog memory cells using modified pass voltages |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11216334B1 (en) * | 2020-07-28 | 2022-01-04 | Phison Electronics Corp. | Data reading method, memory storage device and memory control circuit unit |
Also Published As
Publication number | Publication date |
---|---|
US20200194094A1 (en) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107093465B (en) | Data storage device including voltage search unit | |
US11030096B2 (en) | Method of identifying and preparing a key block in a flash memory system and memory controller therefor | |
KR101312146B1 (en) | Programming management data for nand memories | |
US10002042B2 (en) | Systems and methods of detecting errors during read operations and skipping word line portions | |
US20210327530A1 (en) | Controller and operating method thereof | |
US10936415B2 (en) | Error correction scheme in flash memory | |
CN110970074B (en) | Memory system and method of operating the same | |
US10884628B2 (en) | Performance of a read in a memory system | |
US20150046638A1 (en) | Multi-bit memory device and on-chip buffered program method thereof | |
US20200142799A1 (en) | Memory system | |
US20170322843A1 (en) | Multi-die data storage device with in-memory parity circuitry | |
CN110942795B (en) | Memory system, operation method thereof and nonvolatile memory device | |
US10658045B1 (en) | Enhanced solid-state drive write performance with background erase | |
US10572189B2 (en) | Method and decoder to adjust an error locator polynomial based on an error parity | |
US11106518B2 (en) | Failure mode study based error correction | |
US10755798B2 (en) | Recovering data from a faulty memory block in a memory system | |
US11126368B2 (en) | Systems and methods for finding a last good page in NAND open block | |
US11082036B2 (en) | Memory interface system for duty-cycle error detection and correction | |
US10734081B1 (en) | Pulse-amplitude modulation for a multiple die memory device | |
US11886293B2 (en) | Memory controller managing strong error information and operating method thereof | |
US11244735B2 (en) | Systems and methods for program verification on a memory system | |
US10886002B1 (en) | NAND field use erase plus defect detections | |
US10984876B2 (en) | Temperature based programming in memory | |
US11961559B2 (en) | Storage device and operating method of storage device | |
US20240128986A1 (en) | Storage device performing error correction and operating method of storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:YANG, NILES;SHUKLA, PITAMBER;DUNGA, MOHAN;SIGNING DATES FROM 20181209 TO 20181210;REEL/FRAME:047790/0932 |
|
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: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
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 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |