US11714710B2 - Providing data of a memory system based on an adjustable error rate - Google Patents

Providing data of a memory system based on an adjustable error rate Download PDF

Info

Publication number
US11714710B2
US11714710B2 US17/544,772 US202117544772A US11714710B2 US 11714710 B2 US11714710 B2 US 11714710B2 US 202117544772 A US202117544772 A US 202117544772A US 11714710 B2 US11714710 B2 US 11714710B2
Authority
US
United States
Prior art keywords
memory cell
data
memory
error rate
data stored
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
Application number
US17/544,772
Other versions
US20220091935A1 (en
Inventor
Mustafa N. Kaynak
Larry J. Koudele
Michael Sheperek
Patrick R. KHAYAT
Sampath K. Ratnam
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Priority to US17/544,772 priority Critical patent/US11714710B2/en
Assigned to MICRON TECHNOLOGIES, INC. reassignment MICRON TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KOUDELE, Larry J, SHEPEREK, MICHAEL, RATNAM, Sampath K, KHAYAT, Patrick R, KAYNAK, MUSTAKA N
Assigned to MICRON TECHNOLOGY, INC. reassignment MICRON TECHNOLOGY, INC. CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE: MICRON TECHNOLOGIES, INC. PREVIOUSLY RECORDED AT REEL: 058339 FRAME: 0238. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Assignors: KOUDELE, Larry J, SHEPEREK, MICHAEL, RATNAM, Sampath K, KHAYAT, Patrick R, KAYNAK, Mustafa N
Publication of US20220091935A1 publication Critical patent/US20220091935A1/en
Application granted granted Critical
Publication of US11714710B2 publication Critical patent/US11714710B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3481Circuits or methods to verify correct programming of nonvolatile memory cells whilst programming is in progress, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair

Definitions

  • the present disclosure generally relates to a memory system, and more specifically, relates to providing data of a memory system based on an adjustable error rate.
  • a memory system can be a storage system, such as a solid-state drive (SSD), and can include one or more memory components that store data.
  • a memory system can include memory devices such as non-volatile memory devices and volatile memory devices.
  • a host system can utilize a memory system to store data at the memory devices of the memory system and to retrieve data stored at the memory system.
  • FIG. 1 illustrates an example computing environment that includes a memory system in accordance with some embodiments of the present disclosure.
  • FIG. 2 is a flow diagram of an example method to provide additional data of a memory system based on an adjustable error rate exceeding a threshold in accordance with some embodiments of the present disclosure.
  • FIG. 3 is a flow diagram of an example method to perform an error correction operation on data based on a read operation performed on another data in accordance with some embodiments of the present disclosure.
  • FIG. 4 A illustrates an example of initial program verify voltages for levels of a memory cell in accordance with one embodiment of the present disclosure.
  • FIG. 4 B illustrates an example of adjusting program verify voltages to increase or decrease the error rates of data stored at portions of the memory cell in accordance with some embodiments of the present disclosure.
  • FIG. 5 A illustrates an example of providing data from a memory cell of a memory system based on an adjustable error rate in accordance with some embodiments of the present disclosure.
  • FIG. 5 B illustrates an example of providing additional data of the memory system based on an adjustable error rate in accordance with some embodiments of the present disclosure.
  • FIG. 6 is a block diagram of an example computer system in which implementations of the present disclosure may operate.
  • aspects of the present disclosure are directed to providing data of a memory system based on an adjustable error rate.
  • a memory system is a storage system, such as a solid-state drive (SSD).
  • the memory system is a hybrid memory/storage system.
  • a host system can utilize a memory system that includes one or more memory devices.
  • the memory devices can include non-volatile memory devices, such as, for example, negative-and (NAND).
  • NAND negative-and
  • the host system can provide data to be stored at the memory system and can request data to be retrieved from the memory system.
  • the memory system can store the data at memory cells of a memory device included in the memory system.
  • Each of the memory cells can store one or more bits of binary data corresponding to the data received from the host system.
  • the memory device can include a quad-level cell (QLC) memory.
  • QLC memory each memory cell can store four bits of data.
  • a memory cell can store four bits of data (e.g., 1111, 0000, 1101, etc.) corresponding to data received from the host system.
  • Each bit of the memory cell is stored at a different portion (also referred to as “page” hereafter) of the memory cell.
  • a memory cell of the QLC memory can have a total of four pages.
  • the memory cell can include a lower page (LP), an upper page (UP), an extra page (XP) and a top page (TP), where each page stores a bit of data.
  • a bit can be represented by each of the four pages of the memory cell.
  • each combination of four bits can correspond to a different voltage level (also referred to as “level” hereafter).
  • a first level of the memory cell can correspond to 1111
  • a second level can correspond to 0111, and so on. Because a memory cell for a QLC memory includes 4 bits of data, there are a total of 16 possible combinations of the four bits of data. Accordingly, a memory cell for a QLC memory can be programmed to one of 16 different levels.
  • the memory system receives a request from a host system to perform a programming operation to store data at the QLC memory.
  • a controller of the memory system can store the data by performing a two-pass programming operation on the memory cells of the memory system.
  • the controller programs a number of pages to a memory cell.
  • the controller can apply a voltage level to the memory cell to program three pages of data from the host system to the memory cell.
  • the second programming pass can then be performed on the memory cell.
  • the second programming pass programs the last page of the memory cell.
  • the level that the memory cell is programmed to in the second programming pass can be based on the last page of the memory cell as well as the prior pages that were programmed at the memory cell in the first programming pass. Therefore, if data stored at any of the pages of the memory cell during the first programming pass includes an error and the error is not corrected before the second programming pass is performed on the memory cell, then the memory cell will be programmed to the wrong level (also referred to as “level misplacement” hereafter), resulting in an increased error rate for the data stored at the memory cell. These types of errors can be considered as write-in errors, where the wrong data is written to the memory cell.
  • Level misplacements can result in high reliability errors of the data stored at the memory cell, which can deteriorate the performance of the memory system if a large number of error correction operations are to be performed. Accordingly, after programming the first three of the four portions of a memory cell of a QLC memory during the first programming pass, in the second programming pass the memory system can determine whether data stored at the first three portions includes an error by providing the data to the controller. In one example of a conventional memory system, a read operation is performed on the three portions of the memory cell during the second programming pass. For example, the controller performs the read operation on data at the three pages of the memory cell that was programmed during the first programming pass.
  • the read operation is used to correct the bit errors at any of the pages and determine the corresponding error rate associated with the data stored at the memory cell.
  • second pass programing of the conventional memory system can be performed using the last page provided by the host system and the three corrected pages at the controller. This can result in no level misplacement or a reduced level misplacement.
  • the corrected data can be programmed to the memory cell along with data to be programmed to the remaining page of the memory cell that is received from the host system during the second programming pass.
  • an interface used by the controller of the memory system can be shared between multiple memory devices that include memory cells.
  • the interface can have a limited bandwidth that is available for input/output (IO) operations performed by the controller on the memory devices. Accordingly, performing IO operations that utilize a large amount of the bandwidth, such as the read operations on the three pages of multiple memory cells associated with the first programming pass, can result in a saturation of the interface (e.g., the bandwidth of IO operations exceeds the available bandwidth of the interface).
  • IO operations that utilize a large amount of the bandwidth, such as the read operations on the three pages of multiple memory cells associated with the first programming pass, can result in a saturation of the interface (e.g., the bandwidth of IO operations exceeds the available bandwidth of the interface).
  • the data stored at all three pages of the memory cell are read internally and stored locally at a buffer of the memory device without providing the data to the controller via the interface.
  • the first programming pass includes three IO operations (one IO operation per page) and the second programming pass includes one IO operation to program the remaining page for a total of four IO operations being performed via the interface. While such an example can reduce the number of IO operations being performed via the interface, the probability of level misplacement increases by not providing any of the data of the first programming pass to the controller for error correction.
  • the data stored at all three pages of the first programming pass is sent to the controller via the interface.
  • the first programming pass includes three IO operations to program the first three pages and providing the data stored at all three pages to the controller utilizes another three IO operations.
  • the second programming pass includes four IO operations (e.g., 3 IO operations for the three pages provided to the controller and 1 IO operation to program data received from the host system to the remaining page), resulting in a total of 10 IO operations being performed via the interface.
  • This increased number of IO operations performed via the interface can cause a bottleneck of IO operations at the interface that can be performed at the rate of available bandwidth of the interface, resulting in an increase in latency and a decrease in performance of the memory system.
  • the data stored at the three portions can additionally be stored locally on a buffer memory of a controller of the memory system during the first programming pass to reduce the number of IO operations being performed via the interface.
  • the first programming pass includes three IO operations to program the first three pages and the second programming pass includes four IO operations (e.g., 3 IO operations for the three pages stored locally on the buffer of the controller and 1 IO operation to program data received from the host system to the remaining page), resulting in a total of 7 IO operations being performed via the interface.
  • storing the data locally on the controller can result in additional components being added to the controller, such as a buffer memory to store the data provided to the memory cell. This can result in an increase in the cost and complexity of the memory system.
  • the first data stored at the first portion of the memory cell is provided to a controller of the memory system.
  • the controller first corrects any errors at the first data and determines an error rate associated with the first data.
  • the first data may be data from a particular page of a group of pages that was programmed during a first programming pass.
  • the controller determines whether the error rate associated with the first data exceeds a threshold.
  • the error rate associated with the first page can be used as a proxy for other data from the other two pages that was programmed during the first programming pass.
  • This use of the error rate of the first page as a proxy for the other data from the other pages programmed during the first programming pass can be utilized in the second programming pass.
  • the three pages programmed during the first programming pass can have similar error and disturb mechanisms. Therefore, an elevated error rate for the first page can also indicate an elevated error rate for the data at the other two pages programmed in the first programming pass. Because the first data stored at the first portion of the memory cell (e.g., the first page) is programmed during the first programming pass with the second data at the second portion (e.g., the second page), the error rate of the first data can be used to determine whether the second data likely includes an error.
  • the second data stored at the memory cell can also have a relatively high error rate. Accordingly, if the memory system determines that the error rate exceeds the threshold, then the second data stored at the second portion of the memory cell is provided to the controller of the memory system for error correction. Such a process can ensure that first and second pages will not include level misplacement when the second programming pass is performed.
  • providing data to a controller based on determined error rates can result in improved system performance of the memory system by providing second data from a second portion of the memory cell to a controller when an error rate of first data at a first portion of memory cell exceeds a threshold. Accordingly, the number of IO operations being performed via the interface of the memory system can be reduced by providing the second data via the interface when the error rate exceeds a threshold and the occurrence of bottlenecks at the interface caused by the IO operations can be reduced or eliminated. Furthermore, additional components, such as a buffer memory for the storage of data (e.g., first data and second data), are not added to the controller. Additionally, the number of level misplacements is reduced because data stored at pages having a high error rate are provided to the controller for error correction.
  • a buffer memory for the storage of data e.g., first data and second data
  • the performance of the storage device can be improved by decreasing the latency of the storage device without the addition of hardware components to the memory controller.
  • the present examples describe providing data to a controller based on determined error rates during a second programming pass of a memory cell of a QLC memory
  • aspects of the present disclosure can be applied to any programming operation of a memory cell of a memory system that includes multiple (e.g., two or more) bits of data.
  • the present examples describe providing data to a controller based on determined error rates during the second programming pass of a memory cell of QLC memory, aspects of the present disclosure can be applied to any number (e.g., one or more) programming operations for any type of memory.
  • FIG. 1 illustrates an example computing environment 100 that includes a memory system 110 in accordance with some implementations of the present disclosure.
  • the memory system 110 can include media, such as memory devices 112 A to 112 N.
  • the memory devices 112 A to 112 N can be volatile memory devices, non-volatile memory devices, or a combination of such.
  • the memory system is a storage system.
  • An example of a storage system is a SSD.
  • the computing environment 100 can include a host system 120 that uses the memory system 110 .
  • the host system 120 can write data to the memory system 110 and read data from the memory system 110 .
  • the memory system 110 is a hybrid memory/storage system.
  • the host system 120 can be a computing device such as a desktop computer, laptop computer, network server, mobile device, or such computing device that includes a memory and a processing device.
  • the host system 120 can include or be coupled to the memory system 110 so that the host system 120 can read data from or write data to the memory system 110 .
  • the host system 120 can be coupled to the memory system 110 via a physical host interface.
  • “coupled to” generally refers to a connection between components, which can be an indirect communicative connection or direct communicative connection (e.g., without intervening components), whether wired or wireless, including connections such as, electrical, optical, magnetic, etc.
  • Examples of a physical host interface include, but are not limited to, a serial advanced technology attachment (SATA) interface, a peripheral component interconnect express (PCIe) interface, universal serial bus (USB) interface, Fibre Channel, Serial Attached SCSI (SAS), etc.
  • the physical host interface can be used to transmit data between the host system 120 and the memory system 110 .
  • the host system 120 can further utilize an NVM Express (NVMe) interface to access the memory devices 112 A to 112 N when the memory system 110 is coupled with the host system 120 by the PCIe interface.
  • NVMe NVM Express
  • the physical host interface can provide an interface for passing control, address, data, and other signals between the memory system 110 and the host system 120 .
  • the memory devices 112 A to 112 N can include any combination of the different types of non-volatile memory devices and/or volatile memory devices.
  • An example of non-volatile memory devices includes a negative-and (NAND) type flash memory.
  • Each of the memory devices 112 A to 112 N can include one or more arrays of memory cells such as single level cells (SLCs) or multi-level cells (MLCs) (e.g., triple level cells (TLCs) or quad-level cells (QLCs)).
  • a particular memory device can include both an SLC portion and a MLC portion of memory cells.
  • Each of the memory cells can store bits of data (e.g., data blocks) used by the host system 120 .
  • the memory devices 112 A to 112 N can be based on any other type of memory such as a volatile memory.
  • the memory devices 112 A to 112 N can be, but are not limited to, random access memory (RAM), read-only memory (ROM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), phase change memory (PCM), magneto random access memory (MRAM), negative-or (NOR) flash memory, electrically erasable programmable read-only memory (EEPROM), and a cross-point array of non-volatile memory cells.
  • a cross-point array of non-volatile memory can perform bit storage based on a change of bulk resistance, in conjunction with a stackable cross-gridded data access array. Additionally, in contrast to many Flash-based memory, cross point non-volatile memory can perform a write in-place operation, where a non-volatile memory cell can be programmed without the non-volatile memory cell being previously erased. Furthermore, the memory cells of the memory devices 112 A to 112 N can be grouped as memory pages or data blocks that can refer to a unit of the memory device used to store data.
  • the controller 115 can communicate with the memory devices 112 A to 112 N to perform operations such as reading data, writing data, or erasing data at the memory devices 112 A to 112 N and other such operations.
  • the controller 115 can include hardware such as one or more integrated circuits and/or discrete components, a buffer memory, or a combination thereof.
  • the controller 115 can be a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc.), or other suitable processor.
  • the controller 115 can include a processor (processing device) 117 configured to execute instructions stored in local memory 119 .
  • the local memory 119 of the controller 115 includes an embedded memory configured to store instructions for performing various processes, operations, logic flows, and routines that control operation of the memory system 110 , including handling communications between the memory system 110 and the host system 120 .
  • the local memory 119 can include memory registers storing, e.g., memory pointers, fetched data, etc.
  • the local memory 119 can also include read-only memory (ROM) for storing micro-code. While the example memory system 110 in FIG.
  • a memory system 110 may not include a controller 115 , and may instead rely upon external control (e.g., provided by an external host, or by a processor or controller separate from the memory system).
  • external control e.g., provided by an external host, or by a processor or controller separate from the memory system.
  • the controller 115 can receive commands or operations from the host system 120 and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to the memory devices 112 A to 112 N.
  • the controller 115 can be responsible for other operations such as wear leveling operations, garbage collection operations, error detection and error-correcting code (ECC) operations, encryption operations, caching operations, and address translations between a logical block address and a physical block address that are associated with the memory devices 112 A to 112 N.
  • the controller 115 can further include host interface circuitry to communicate with the host system 120 via the physical host interface.
  • the host interface circuitry can convert the commands received from the host system into command instructions to access the memory devices 112 A to 112 N as well as convert responses associated with the memory devices 112 A to 112 N into information for the host system 120 .
  • the memory system 110 can include an error determining component 113 that can be used to determine error rates for data stored at memory cells of the memory system.
  • the error rate can be determined by comparing the data read from the memory cell and comparing it with output data associated with an error correction operation performed on the data.
  • the controller 111 includes at least a portion of the error determining component 113 .
  • the error determining component 113 can determine error rates associated with the data read from the memory.
  • the error rates for the data can correspond to a probability that the data stored at a memory cell includes an error.
  • the error determining component 113 can determine an error rate that is associated with first data stored at a first portion of a memory cell of one of the memory devices 112 A-N of the memory system 110 .
  • the error determining component 113 can determine the error rate for first data stored at the first page of a memory cell that is provided to the controller. Further details with regards to the operations of the error determining component 113 are described below.
  • the data structure can be a table or other types of data structures to store the write attributes for memory pages in the first region.
  • the table can include a corresponding entry for each memory page associated with data written to the first region.
  • the write attribute handler 113 can receive and store an indication of a temperature measurement taken at the time the data is programmed to the memory devices 112 A to 112 N. After the pages are programed, the measured temperature is stored on a page in a SLC page in the memory. By storing the write attributes in the SLC page, the controller 115 can determine, for example, whether there is an extreme shift in temperature from when the data was programmed at a memory cell to when it was subsequently read from that memory cell.
  • the memory system 110 can also include additional circuitry or components that are not illustrated.
  • the memory system 110 can include a cache or buffer (e.g., DRAM) and address circuitry (e.g., a row decoder and a column decoder) that can receive an address from the controller 115 and decode the address to access the memory devices 112 A to 112 N.
  • a cache or buffer e.g., DRAM
  • address circuitry e.g., a row decoder and a column decoder
  • FIG. 2 is a flow diagram of an example method 200 to provide second data to a controller based on an adjusted error rate exceeding a threshold, in accordance with some embodiments of the present disclosure.
  • the method 200 can be performed by processing logic that can include hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, integrated circuit, etc.), software (e.g., instructions run or executed on a processing device), or a combination thereof.
  • the method 200 is performed by the error determining component 113 of FIG. 1 .
  • the method 200 can be performed by a host system (e.g., host system 120 of FIG. 1 ) having access to modify parameters of the memory device.
  • a host system e.g., host system 120 of FIG. 1
  • a processing device identifies a first data stored at a first portion of a memory cell and a second data stored at a second portion of the memory cell. For example, the processing device identifies first data stored at the first page of a memory cell and second data stored at the second page of the memory cell.
  • an error rate associated with the first data is determined. In one embodiment, the error rate can be determined by comparing the first data that is provided to the controller with output data of an error correction operation associated with the first data. In embodiments, the error rate can be greater than an expected error rate of the second data.
  • the first data can act as a proxy for the second data.
  • the second data can also be assumed to have a high error rate.
  • the error rate of the data at a particular portion of the three portions can be higher than the error rate at the other data at the remaining portions of the three portions of the memory cell.
  • the error rate associated with the first data stored at the first portion of the memory cell can be adjusted so that it is greater than the error rate associated with the second data (or any other data programmed during the first programming pass).
  • the adjustment of the error rate can be based on the adjusting of program verify (PV) voltages for corresponding levels of the memory cell.
  • the PV voltage for a particular level corresponds to a target voltage threshold, such each memory cell at the particular level has a voltage threshold that exceeds the PV voltage. For example, if a particular level has a PV voltage of PV 1 , then the memory cells programmed to the particular level can have a voltage threshold that is greater than PV 1 .
  • the PV voltages can be adjusted such that a desirable ordering between page error rates can be achieved.
  • the operation to adjust the PV voltages can be performed over time.
  • the input of the DPT operation uses page error rates and iteratively adjusts PV voltages associated with particular pages of a memory cell in an iterative process to achieve a desired error rate between different pages of the memory cell.
  • a DPT operation can adjust the PV voltages associated with the memory cell so that a subsequent error rate associated with the first data stored at the memory cell can be expected to be greater than a subsequent error rate associated with the other data stored at the memory cell.
  • the DPT operation can decrease the range of the PV voltage associated with the data stored at the memory cell and/or increase the range of the PV voltage associated with the other data stored at the memory cell to ensure that the subsequent error rate associated with the data is greater than the subsequent error rate associated with the other data. Further detail regarding the adjustment of PV voltages are described below in conjunction with FIGS. 4 A and 4 B
  • the processing device determines whether the error rate exceeds a threshold.
  • the first error rate may be expected to be larger than other error rates for other data stored at the memory cell.
  • a read operation can be performed on the first data stored at the first portion of the memory cell.
  • the first data from the read operation can be provided to a controller of the memory system and the controller can determine whether the error rate for the first data exceeds the threshold.
  • the second data stored at the second portion of the memory cell is provided for use in an error correction operation. For example, the second data stored at the second page of the memory cell that was programmed during the first programming pass is provided to the controller (e.g., controller 111 of FIG.
  • the second data stored at the second page of the memory cell can be provided to the controller during a second programming pass of a two-pass programming operation.
  • an error correction operation is performed on the second data, as will be discussed in more detail below.
  • third data stored at a third portion of the memory cell can be provided for use in an error correction operation in response to the error rate exceeding a threshold.
  • third data stored at a third page of the memory cell can be provided to the controller. The controller can determine whether the third data includes an error. If the controller determines the third data includes an error, the controller can perform an error correction data on the third data to correct the error.
  • an error rate for a particular data stored at a memory cell during a first programming pass exceeds a threshold rate
  • other data stored at the memory cell during the first programming pass can be retrieved and provided for use in an error correction operation.
  • the error correction operation can be performed on the data stored at the memory cell as part of the second programming pass.
  • FIG. 3 is a flow diagram of an example method 300 to perform an error correction operation on data based on a read operation performed on another data, in accordance with some embodiments of the present disclosure.
  • the method 300 can be performed by processing logic that can include hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, integrated circuit, etc.), software (e.g., instructions run or executed on a processing device), or a combination thereof.
  • the method 300 can be performed by the error determining component 113 of FIG. 1 .
  • the method 200 can be performed by a host system (e.g., host system 120 of FIG. 1 ) having access to modify parameters of the memory device.
  • a host system e.g., host system 120 of FIG. 1
  • a processing device performs a read operation on first data stored at a first portion of a memory cell. For example, a read operation is performed on first data stored at the first page of a memory cell.
  • an error rate associated with the first data stored at a first portion of the memory cell is adjusted to that the error rate associated with the first data is greater than an error rate associated with second data that is stored at a second portion of the memory cell.
  • the error rates can be adjusted by modifying associated PV voltage values, as will be described below.
  • an error rate associated with the first data is determined to exceed a threshold.
  • second data stored at a second portion of the memory cell is provided for use in an error correction operation.
  • second data stored at the second page of the memory cell can be provided to the controller for error correction.
  • the error correction operation is performed on the second data.
  • an error-correcting code (ECC) operation or another type of error detection and correction operation can be used to detect and correct the error. For example, if the data read at the first page of the memory cell corresponds to a value of 1, the error can be corrected by changing the value from a 1 to a 0.
  • the first data can be determined to include an error. If the first data is determined to include an error, then an error correction operation can be performed on the first data.
  • the corrected second data is provided to the second portion of the memory cell. For example, the corrected second data is provided to the second page of the memory cell for storage.
  • the first data or corrected first data is provided to the first page of the memory cell.
  • the remaining page of the memory cell programmed during the second programming pass can be programmed based on the corrected data that is provided to the first page and/or second page of the memory cell.
  • FIG. 4 A illustrates an example of initial program verify voltages 400 for levels of a memory cell, in accordance with one embodiment of the present disclosure.
  • a memory cell that stores two bits of data includes four levels L 0 , L 1 , L 2 , and L 3 that can be programmed with three PV voltages (e.g., PV 1 for L 1 , PV 2 for L 2 and PV 3 for L 3 ).
  • the valley margin between L 1 and L 2 (D 2 ) determines an expected error rate for data stored at a portion of the memory cell and the valley margin between L 0 and L 1 (D 1 ) and L 2 and L 3 (D 3 ) determine the error rate for data stored at another portion of the memory cell.
  • FIG. 4 B illustrates an example of adjusting program verify voltages 450 to increase or decrease the error rates of data stored at portions the memory cell, in accordance with some embodiments of the present disclosure.
  • the error rate for the data stored at the portion of the memory cell is to be decreased so that the error rate for the data stored at the portion of the memory cell is less than the error rate for the data stored at the other portion of the memory cell.
  • PV 2 can be shifted to the right (e.g., PV 2 A), which decreases the valley margin D 3 between shifted L 2 and L 3 while also increasing the valley margin D 2 between L 1 and L 2 .
  • the result is a decrease in the error rate associated with the data stored at the portion of the memory cell by increasing the distance D 2 associated with data stored at the first portion of the memory cell. Furthermore, the expected error rate associated with the data stored at the other portion of the memory cell is increased by decreasing the distance D 3 associated with the error rate for data stored at the second portion of the memory cell.
  • PV 1 can be shifted to the left (e.g., PV 1 A), which decreases valley margin D 1 between shifted L 1 and L 0 and increases distance D 2 valley margin shifted L 1 and L 2 .
  • the error rate associated with the data stored at the other portion of the memory cell is increased by decreasing the distance D 1 associated with the error rate for data stored at the other portion of the memory cell.
  • FIG. 5 A illustrates an example of providing data from a memory cell of a memory system 500 based on an adjustable error rate, in accordance with some embodiments of the present disclosure.
  • the memory system 500 includes a memory cell 530 and a controller 510 that corresponds to controller 111 of FIG. 1 .
  • the present illustration discusses providing data to a controller of the memory system based on an adjustable error rate, in other embodiments the data can be provided to other components of the computing environment 100 of FIG. 1 .
  • the data can be provided to host system 120 of FIG. 1 so that the host system can provide the error correction for the data.
  • the memory cell 530 can include first data 540 a stored at a first portion (e.g., the first page) of the memory cell 530 and second data 545 a stored at a second portion (e.g., the second page) of the memory cell 530 .
  • a read operation can be performed on memory cell 530 as part of a first programming pass of a two-pass programming process.
  • first data 540 b can be provided to controller 510 .
  • First data 540 b can be a copy of first data 540 a read from memory cell 530 .
  • the memory system can determine whether a first error rate associated with the first data 540 b exceeds a threshold when a controller 510 performs an error correction operation on first data 540 b.
  • FIG. 5 B illustrates an example of providing additional data of the memory cell of the memory system, in accordance with some embodiments of the present disclosure. If the first error rate associated with first data 540 b exceeds a threshold, then second data 545 b is read from a memory device 520 associated with memory cell 530 to controller 510 . Upon receipt of second data 545 b , the controller 510 determines whether second data 545 b includes any errors. If controller 510 determines that second data 545 b includes errors, then controller 510 can perform an error correction operation on second data 545 b . The controller provides corrected first data and/or second data to memory cell 530 .
  • the corrected first data can be provided to the first page of the memory cell and/or the corrected second data can be provided to the second page of the memory cell.
  • controller 510 can determine that first data 540 b and/or second data 545 b do not include any errors. Accordingly, the controller 510 can provide first data 540 b and/or second data 545 b to memory cell 530 to refresh the portions of the data stored at memory cell 530 .
  • FIG. 6 illustrates an example machine of a computer system 600 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
  • the computer system 600 may correspond to a host system (e.g., the host system 120 of FIG. 1 ) that includes or utilizes a memory system (e.g., the memory system 110 of FIG. 1 ) or may be used to perform the operations of a controller (e.g., to execute an operating system to perform operations corresponding to the error determining component 113 of FIG. 1 ).
  • the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and/or the Internet.
  • the machine may operate in the capacity of a server or a client machine in client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment.
  • the machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
  • PC personal computer
  • PDA Personal Digital Assistant
  • STB set-top box
  • STB set-top box
  • a cellular telephone a web appliance
  • server a server
  • network router a network router
  • switch or bridge any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
  • machine shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
  • the example computer system 600 includes a processing device 602 , a main memory 604 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 606 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage system 618 , which communicate with each other via a bus 630 .
  • main memory 604 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.
  • DRAM dynamic random access memory
  • SDRAM synchronous DRAM
  • RDRAM Rambus DRAM
  • static memory 606 e.g., flash memory, static random access memory (SRAM), etc.
  • SRAM static random access memory
  • Processing device 602 represents one or more general-purpose processing devices such as a microprocessor, a central processing unit, or the like. More particularly, the processing device may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 602 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 602 is configured to execute instructions 626 for performing the operations and steps discussed herein.
  • the computer system 600 may further include a network interface device 608 to communicate over the network 620 .
  • the data storage system 618 may include a machine-readable storage medium 624 (also known as a computer-readable medium) on which is stored one or more sets of instructions or software 626 embodying any one or more of the methodologies or functions described herein.
  • the instructions 626 may also reside, completely or at least partially, within the main memory 604 and/or within the processing device 602 during execution thereof by the computer system 600 , the main memory 604 and the processing device 602 also constituting machine-readable storage media.
  • the machine-readable storage medium 624 , data storage system 618 , and/or main memory 604 may correspond to the memory system 110 of FIG. 1 .
  • the instructions 626 include instructions to implement functionality corresponding to an error determining component (e.g., error determining component 113 of FIG. 1 ).
  • an error determining component e.g., error determining component 113 of FIG. 1
  • the machine-readable storage medium 624 is shown in an example implementation to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media that store the one or more sets of instructions.
  • the term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure.
  • the term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
  • the present disclosure also relates to an apparatus for performing the operations herein.
  • This apparatus may be specially constructed for the intended purposes, or it may include a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
  • the present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure.
  • a machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer).
  • a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.

Abstract

A first data stored at a first portion of a memory cell and a second data stored at a second portion of the memory cell are identified. A first error rate associated with first data stored at the first portion of the memory cell is determined. The first error rate is adjusted to exceed a second error rate associated with the second data stored at the second portion of the memory cell. A determination is made as to whether the first error rate exceeds a threshold. The second data stored at the second portion of the memory cell is provided for use in an error correction operation by a controller associated with the memory cell in response to determining that the first error rate exceeds the threshold.

Description

RELATED APPLICATIONS
This application is a continuation application of co-pending U.S. patent application Ser. No. 16/746,786, filed Jan. 17, 2020, which is a continuation application of co-pending U.S. patent application Ser. No. 15/914,402, filed Mar. 7, 2018, which are herein incorporated by reference.
TECHNICAL FIELD
The present disclosure generally relates to a memory system, and more specifically, relates to providing data of a memory system based on an adjustable error rate.
BACKGROUND
A memory system can be a storage system, such as a solid-state drive (SSD), and can include one or more memory components that store data. For example, a memory system can include memory devices such as non-volatile memory devices and volatile memory devices. In general, a host system can utilize a memory system to store data at the memory devices of the memory system and to retrieve data stored at the memory system.
BRIEF DESCRIPTION OF THE DRAWINGS
The present disclosure will be understood more fully from the detailed description given below and from the accompanying drawings of various implementations of the disclosure.
FIG. 1 illustrates an example computing environment that includes a memory system in accordance with some embodiments of the present disclosure.
FIG. 2 is a flow diagram of an example method to provide additional data of a memory system based on an adjustable error rate exceeding a threshold in accordance with some embodiments of the present disclosure.
FIG. 3 is a flow diagram of an example method to perform an error correction operation on data based on a read operation performed on another data in accordance with some embodiments of the present disclosure.
FIG. 4A illustrates an example of initial program verify voltages for levels of a memory cell in accordance with one embodiment of the present disclosure.
FIG. 4B illustrates an example of adjusting program verify voltages to increase or decrease the error rates of data stored at portions of the memory cell in accordance with some embodiments of the present disclosure.
FIG. 5A illustrates an example of providing data from a memory cell of a memory system based on an adjustable error rate in accordance with some embodiments of the present disclosure.
FIG. 5B illustrates an example of providing additional data of the memory system based on an adjustable error rate in accordance with some embodiments of the present disclosure.
FIG. 6 is a block diagram of an example computer system in which implementations of the present disclosure may operate.
DETAILED DESCRIPTION
Aspects of the present disclosure are directed to providing data of a memory system based on an adjustable error rate. An example of a memory system is a storage system, such as a solid-state drive (SSD). In some embodiments, the memory system is a hybrid memory/storage system. In general, a host system can utilize a memory system that includes one or more memory devices. The memory devices can include non-volatile memory devices, such as, for example, negative-and (NAND). The host system can provide data to be stored at the memory system and can request data to be retrieved from the memory system.
The memory system can store the data at memory cells of a memory device included in the memory system. Each of the memory cells can store one or more bits of binary data corresponding to the data received from the host system. The memory device can include a quad-level cell (QLC) memory. In QLC memory, each memory cell can store four bits of data. For example, in a QLC memory, a memory cell can store four bits of data (e.g., 1111, 0000, 1101, etc.) corresponding to data received from the host system. Each bit of the memory cell is stored at a different portion (also referred to as “page” hereafter) of the memory cell. A memory cell of the QLC memory can have a total of four pages. For example, the memory cell can include a lower page (LP), an upper page (UP), an extra page (XP) and a top page (TP), where each page stores a bit of data. For example, a bit can be represented by each of the four pages of the memory cell. In a memory cell for a QLC memory, each combination of four bits can correspond to a different voltage level (also referred to as “level” hereafter). For example, a first level of the memory cell can correspond to 1111, a second level can correspond to 0111, and so on. Because a memory cell for a QLC memory includes 4 bits of data, there are a total of 16 possible combinations of the four bits of data. Accordingly, a memory cell for a QLC memory can be programmed to one of 16 different levels.
Generally, the memory system receives a request from a host system to perform a programming operation to store data at the QLC memory. A controller of the memory system can store the data by performing a two-pass programming operation on the memory cells of the memory system. During a first programming pass of the two-pass programming operation, the controller programs a number of pages to a memory cell. For example, the controller can apply a voltage level to the memory cell to program three pages of data from the host system to the memory cell. The second programming pass can then be performed on the memory cell.
The second programming pass programs the last page of the memory cell. The level that the memory cell is programmed to in the second programming pass can be based on the last page of the memory cell as well as the prior pages that were programmed at the memory cell in the first programming pass. Therefore, if data stored at any of the pages of the memory cell during the first programming pass includes an error and the error is not corrected before the second programming pass is performed on the memory cell, then the memory cell will be programmed to the wrong level (also referred to as “level misplacement” hereafter), resulting in an increased error rate for the data stored at the memory cell. These types of errors can be considered as write-in errors, where the wrong data is written to the memory cell. Level misplacements can result in high reliability errors of the data stored at the memory cell, which can deteriorate the performance of the memory system if a large number of error correction operations are to be performed. Accordingly, after programming the first three of the four portions of a memory cell of a QLC memory during the first programming pass, in the second programming pass the memory system can determine whether data stored at the first three portions includes an error by providing the data to the controller. In one example of a conventional memory system, a read operation is performed on the three portions of the memory cell during the second programming pass. For example, the controller performs the read operation on data at the three pages of the memory cell that was programmed during the first programming pass. The read operation is used to correct the bit errors at any of the pages and determine the corresponding error rate associated with the data stored at the memory cell. Thus, when a conventional memory system provides the three pages associated with the first pass to the controller, then second pass programing of the conventional memory system can be performed using the last page provided by the host system and the three corrected pages at the controller. This can result in no level misplacement or a reduced level misplacement. The corrected data can be programmed to the memory cell along with data to be programmed to the remaining page of the memory cell that is received from the host system during the second programming pass. However, an interface used by the controller of the memory system can be shared between multiple memory devices that include memory cells. The interface can have a limited bandwidth that is available for input/output (IO) operations performed by the controller on the memory devices. Accordingly, performing IO operations that utilize a large amount of the bandwidth, such as the read operations on the three pages of multiple memory cells associated with the first programming pass, can result in a saturation of the interface (e.g., the bandwidth of IO operations exceeds the available bandwidth of the interface). In one example of a conventional memory system, the data stored at all three pages of the memory cell are read internally and stored locally at a buffer of the memory device without providing the data to the controller via the interface. In such an example, the first programming pass includes three IO operations (one IO operation per page) and the second programming pass includes one IO operation to program the remaining page for a total of four IO operations being performed via the interface. While such an example can reduce the number of IO operations being performed via the interface, the probability of level misplacement increases by not providing any of the data of the first programming pass to the controller for error correction.
In another example of a conventional memory system, the data stored at all three pages of the first programming pass is sent to the controller via the interface. In such an example, the first programming pass includes three IO operations to program the first three pages and providing the data stored at all three pages to the controller utilizes another three IO operations. The second programming pass includes four IO operations (e.g., 3 IO operations for the three pages provided to the controller and 1 IO operation to program data received from the host system to the remaining page), resulting in a total of 10 IO operations being performed via the interface. This increased number of IO operations performed via the interface can cause a bottleneck of IO operations at the interface that can be performed at the rate of available bandwidth of the interface, resulting in an increase in latency and a decrease in performance of the memory system.
Alternatively, in another example of a conventional memory system, rather than the memory system performing a read operation on the data stored at the three portions of the memory cell, the data stored at the three portions can additionally be stored locally on a buffer memory of a controller of the memory system during the first programming pass to reduce the number of IO operations being performed via the interface. In such an example, the first programming pass includes three IO operations to program the first three pages and the second programming pass includes four IO operations (e.g., 3 IO operations for the three pages stored locally on the buffer of the controller and 1 IO operation to program data received from the host system to the remaining page), resulting in a total of 7 IO operations being performed via the interface. However, storing the data locally on the controller can result in additional components being added to the controller, such as a buffer memory to store the data provided to the memory cell. This can result in an increase in the cost and complexity of the memory system.
Aspects of the present disclosure address the above and other deficiencies by providing data to a controller based on an error rate. The first data stored at the first portion of the memory cell is provided to a controller of the memory system. The controller first corrects any errors at the first data and determines an error rate associated with the first data. The first data may be data from a particular page of a group of pages that was programmed during a first programming pass The controller determines whether the error rate associated with the first data exceeds a threshold. In one embodiment, the error rate associated with the first page can be used as a proxy for other data from the other two pages that was programmed during the first programming pass. This use of the error rate of the first page as a proxy for the other data from the other pages programmed during the first programming pass can be utilized in the second programming pass. For example, the three pages programmed during the first programming pass can have similar error and disturb mechanisms. Therefore, an elevated error rate for the first page can also indicate an elevated error rate for the data at the other two pages programmed in the first programming pass. Because the first data stored at the first portion of the memory cell (e.g., the first page) is programmed during the first programming pass with the second data at the second portion (e.g., the second page), the error rate of the first data can be used to determine whether the second data likely includes an error. For example, if the error rate exceeds the threshold, indicating a relatively high error rate associated with the first data, then the second data stored at the memory cell can also have a relatively high error rate. Accordingly, if the memory system determines that the error rate exceeds the threshold, then the second data stored at the second portion of the memory cell is provided to the controller of the memory system for error correction. Such a process can ensure that first and second pages will not include level misplacement when the second programming pass is performed.
Thus, providing data to a controller based on determined error rates can result in improved system performance of the memory system by providing second data from a second portion of the memory cell to a controller when an error rate of first data at a first portion of memory cell exceeds a threshold. Accordingly, the number of IO operations being performed via the interface of the memory system can be reduced by providing the second data via the interface when the error rate exceeds a threshold and the occurrence of bottlenecks at the interface caused by the IO operations can be reduced or eliminated. Furthermore, additional components, such as a buffer memory for the storage of data (e.g., first data and second data), are not added to the controller. Additionally, the number of level misplacements is reduced because data stored at pages having a high error rate are provided to the controller for error correction. As a result, the performance of the storage device can be improved by decreasing the latency of the storage device without the addition of hardware components to the memory controller. Although the present examples describe providing data to a controller based on determined error rates during a second programming pass of a memory cell of a QLC memory, aspects of the present disclosure can be applied to any programming operation of a memory cell of a memory system that includes multiple (e.g., two or more) bits of data. Furthermore, although the present examples describe providing data to a controller based on determined error rates during the second programming pass of a memory cell of QLC memory, aspects of the present disclosure can be applied to any number (e.g., one or more) programming operations for any type of memory.
FIG. 1 illustrates an example computing environment 100 that includes a memory system 110 in accordance with some implementations of the present disclosure. The memory system 110 can include media, such as memory devices 112A to 112N. The memory devices 112A to 112N can be volatile memory devices, non-volatile memory devices, or a combination of such. In some embodiments, the memory system is a storage system. An example of a storage system is a SSD. In general, the computing environment 100 can include a host system 120 that uses the memory system 110. In some implementations, the host system 120 can write data to the memory system 110 and read data from the memory system 110. In some embodiments, the memory system 110 is a hybrid memory/storage system.
The host system 120 can be a computing device such as a desktop computer, laptop computer, network server, mobile device, or such computing device that includes a memory and a processing device. The host system 120 can include or be coupled to the memory system 110 so that the host system 120 can read data from or write data to the memory system 110. The host system 120 can be coupled to the memory system 110 via a physical host interface. As used herein, “coupled to” generally refers to a connection between components, which can be an indirect communicative connection or direct communicative connection (e.g., without intervening components), whether wired or wireless, including connections such as, electrical, optical, magnetic, etc. Examples of a physical host interface include, but are not limited to, a serial advanced technology attachment (SATA) interface, a peripheral component interconnect express (PCIe) interface, universal serial bus (USB) interface, Fibre Channel, Serial Attached SCSI (SAS), etc. The physical host interface can be used to transmit data between the host system 120 and the memory system 110. The host system 120 can further utilize an NVM Express (NVMe) interface to access the memory devices 112A to 112N when the memory system 110 is coupled with the host system 120 by the PCIe interface. The physical host interface can provide an interface for passing control, address, data, and other signals between the memory system 110 and the host system 120.
The memory devices 112A to 112N can include any combination of the different types of non-volatile memory devices and/or volatile memory devices. An example of non-volatile memory devices includes a negative-and (NAND) type flash memory. Each of the memory devices 112A to 112N can include one or more arrays of memory cells such as single level cells (SLCs) or multi-level cells (MLCs) (e.g., triple level cells (TLCs) or quad-level cells (QLCs)). In some implementations, a particular memory device can include both an SLC portion and a MLC portion of memory cells. Each of the memory cells can store bits of data (e.g., data blocks) used by the host system 120. Although non-volatile memory devices such as NAND type flash memory are described, the memory devices 112A to 112N can be based on any other type of memory such as a volatile memory. In some implementations, the memory devices 112A to 112N can be, but are not limited to, random access memory (RAM), read-only memory (ROM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), phase change memory (PCM), magneto random access memory (MRAM), negative-or (NOR) flash memory, electrically erasable programmable read-only memory (EEPROM), and a cross-point array of non-volatile memory cells. A cross-point array of non-volatile memory can perform bit storage based on a change of bulk resistance, in conjunction with a stackable cross-gridded data access array. Additionally, in contrast to many Flash-based memory, cross point non-volatile memory can perform a write in-place operation, where a non-volatile memory cell can be programmed without the non-volatile memory cell being previously erased. Furthermore, the memory cells of the memory devices 112A to 112N can be grouped as memory pages or data blocks that can refer to a unit of the memory device used to store data.
The controller 115 can communicate with the memory devices 112A to 112N to perform operations such as reading data, writing data, or erasing data at the memory devices 112A to 112N and other such operations. The controller 115 can include hardware such as one or more integrated circuits and/or discrete components, a buffer memory, or a combination thereof. The controller 115 can be a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc.), or other suitable processor. The controller 115 can include a processor (processing device) 117 configured to execute instructions stored in local memory 119. In the illustrated example, the local memory 119 of the controller 115 includes an embedded memory configured to store instructions for performing various processes, operations, logic flows, and routines that control operation of the memory system 110, including handling communications between the memory system 110 and the host system 120. In some embodiments, the local memory 119 can include memory registers storing, e.g., memory pointers, fetched data, etc. The local memory 119 can also include read-only memory (ROM) for storing micro-code. While the example memory system 110 in FIG. 1 has been illustrated as including the controller 115, in another embodiment of the present disclosure, a memory system 110 may not include a controller 115, and may instead rely upon external control (e.g., provided by an external host, or by a processor or controller separate from the memory system).
In general, the controller 115 can receive commands or operations from the host system 120 and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to the memory devices 112A to 112N. The controller 115 can be responsible for other operations such as wear leveling operations, garbage collection operations, error detection and error-correcting code (ECC) operations, encryption operations, caching operations, and address translations between a logical block address and a physical block address that are associated with the memory devices 112A to 112N. The controller 115 can further include host interface circuitry to communicate with the host system 120 via the physical host interface. The host interface circuitry can convert the commands received from the host system into command instructions to access the memory devices 112A to 112N as well as convert responses associated with the memory devices 112A to 112N into information for the host system 120.
The memory system 110 can include an error determining component 113 that can be used to determine error rates for data stored at memory cells of the memory system. The error rate can be determined by comparing the data read from the memory cell and comparing it with output data associated with an error correction operation performed on the data. In some embodiments, the controller 111 includes at least a portion of the error determining component 113. The error determining component 113 can determine error rates associated with the data read from the memory. The error rates for the data can correspond to a probability that the data stored at a memory cell includes an error. The error determining component 113 can determine an error rate that is associated with first data stored at a first portion of a memory cell of one of the memory devices 112A-N of the memory system 110. For example, the error determining component 113 can determine the error rate for first data stored at the first page of a memory cell that is provided to the controller. Further details with regards to the operations of the error determining component 113 are described below.
In some implementation, the data structure can be a table or other types of data structures to store the write attributes for memory pages in the first region. In some implementations, the table can include a corresponding entry for each memory page associated with data written to the first region. As data from the host system 120 is received to be stored at the memory devices 112A to 112N, the write attribute handler 113 can receive and store an indication of a temperature measurement taken at the time the data is programmed to the memory devices 112A to 112N. After the pages are programed, the measured temperature is stored on a page in a SLC page in the memory. By storing the write attributes in the SLC page, the controller 115 can determine, for example, whether there is an extreme shift in temperature from when the data was programmed at a memory cell to when it was subsequently read from that memory cell.
The memory system 110 can also include additional circuitry or components that are not illustrated. In some implementations, the memory system 110 can include a cache or buffer (e.g., DRAM) and address circuitry (e.g., a row decoder and a column decoder) that can receive an address from the controller 115 and decode the address to access the memory devices 112A to 112N.
FIG. 2 is a flow diagram of an example method 200 to provide second data to a controller based on an adjusted error rate exceeding a threshold, in accordance with some embodiments of the present disclosure. The method 200 can be performed by processing logic that can include hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, integrated circuit, etc.), software (e.g., instructions run or executed on a processing device), or a combination thereof. In some implementations, the method 200 is performed by the error determining component 113 of FIG. 1 . In another implementation, the method 200 can be performed by a host system (e.g., host system 120 of FIG. 1 ) having access to modify parameters of the memory device.
At block 210, a processing device identifies a first data stored at a first portion of a memory cell and a second data stored at a second portion of the memory cell. For example, the processing device identifies first data stored at the first page of a memory cell and second data stored at the second page of the memory cell. At block 220, an error rate associated with the first data is determined. In one embodiment, the error rate can be determined by comparing the first data that is provided to the controller with output data of an error correction operation associated with the first data. In embodiments, the error rate can be greater than an expected error rate of the second data. As previously discussed, by having the error rate of the first data be greater than an error rate associated with a second or other data stored at the memory cell, the first data can act as a proxy for the second data. For example, if the first data has a high error rate, then the second data can also be assumed to have a high error rate. Thus, if data at three portions (e.g., pages) of a memory cell are programmed, the error rate of the data at a particular portion of the three portions can be higher than the error rate at the other data at the remaining portions of the three portions of the memory cell.
Accordingly, in some embodiments, the error rate associated with the first data stored at the first portion of the memory cell can be adjusted so that it is greater than the error rate associated with the second data (or any other data programmed during the first programming pass). The adjustment of the error rate can be based on the adjusting of program verify (PV) voltages for corresponding levels of the memory cell. The PV voltage for a particular level corresponds to a target voltage threshold, such each memory cell at the particular level has a voltage threshold that exceeds the PV voltage. For example, if a particular level has a PV voltage of PV1, then the memory cells programmed to the particular level can have a voltage threshold that is greater than PV1. The PV voltages can be adjusted such that a desirable ordering between page error rates can be achieved. The operation to adjust the PV voltages (also referred to as a dynamic programming target (DPT) operation hereafter) can be performed over time. The input of the DPT operation uses page error rates and iteratively adjusts PV voltages associated with particular pages of a memory cell in an iterative process to achieve a desired error rate between different pages of the memory cell. A DPT operation can adjust the PV voltages associated with the memory cell so that a subsequent error rate associated with the first data stored at the memory cell can be expected to be greater than a subsequent error rate associated with the other data stored at the memory cell. For example, the DPT operation can decrease the range of the PV voltage associated with the data stored at the memory cell and/or increase the range of the PV voltage associated with the other data stored at the memory cell to ensure that the subsequent error rate associated with the data is greater than the subsequent error rate associated with the other data. Further detail regarding the adjustment of PV voltages are described below in conjunction with FIGS. 4A and 4B
At block 230, the processing device determines whether the error rate exceeds a threshold. The first error rate may be expected to be larger than other error rates for other data stored at the memory cell. In one implementation, a read operation can be performed on the first data stored at the first portion of the memory cell. The first data from the read operation can be provided to a controller of the memory system and the controller can determine whether the error rate for the first data exceeds the threshold. At block 240, in response to determining that the error rate exceeds the threshold, the second data stored at the second portion of the memory cell is provided for use in an error correction operation. For example, the second data stored at the second page of the memory cell that was programmed during the first programming pass is provided to the controller (e.g., controller 111 of FIG. 1 ) for error correction. In one implementation, the second data stored at the second page of the memory cell can be provided to the controller during a second programming pass of a two-pass programming operation. In some implementations, an error correction operation is performed on the second data, as will be discussed in more detail below. In implementations, third data stored at a third portion of the memory cell can be provided for use in an error correction operation in response to the error rate exceeding a threshold. For example, third data stored at a third page of the memory cell can be provided to the controller. The controller can determine whether the third data includes an error. If the controller determines the third data includes an error, the controller can perform an error correction data on the third data to correct the error.
As such, when an error rate for a particular data stored at a memory cell during a first programming pass exceeds a threshold rate, other data stored at the memory cell during the first programming pass can be retrieved and provided for use in an error correction operation. The error correction operation can be performed on the data stored at the memory cell as part of the second programming pass.
FIG. 3 is a flow diagram of an example method 300 to perform an error correction operation on data based on a read operation performed on another data, in accordance with some embodiments of the present disclosure. The method 300 can be performed by processing logic that can include hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, integrated circuit, etc.), software (e.g., instructions run or executed on a processing device), or a combination thereof. In some implementations, the method 300 can be performed by the error determining component 113 of FIG. 1 . In another implementation, the method 200 can be performed by a host system (e.g., host system 120 of FIG. 1 ) having access to modify parameters of the memory device.
At block 310, a processing device performs a read operation on first data stored at a first portion of a memory cell. For example, a read operation is performed on first data stored at the first page of a memory cell. At block 320, an error rate associated with the first data stored at a first portion of the memory cell is adjusted to that the error rate associated with the first data is greater than an error rate associated with second data that is stored at a second portion of the memory cell. The error rates can be adjusted by modifying associated PV voltage values, as will be described below. At block 330, an error rate associated with the first data is determined to exceed a threshold. At block 340, in response to determining that the error rate exceeds the threshold, second data stored at a second portion of the memory cell is provided for use in an error correction operation. For example, second data stored at the second page of the memory cell can be provided to the controller for error correction.
At block 350, the error correction operation is performed on the second data. In some implementations, an error-correcting code (ECC) operation or another type of error detection and correction operation can be used to detect and correct the error. For example, if the data read at the first page of the memory cell corresponds to a value of 1, the error can be corrected by changing the value from a 1 to a 0. In implementations, the first data can be determined to include an error. If the first data is determined to include an error, then an error correction operation can be performed on the first data. At block 360, the corrected second data is provided to the second portion of the memory cell. For example, the corrected second data is provided to the second page of the memory cell for storage. In some implementations, the first data or corrected first data is provided to the first page of the memory cell. In implementations, the remaining page of the memory cell programmed during the second programming pass can be programmed based on the corrected data that is provided to the first page and/or second page of the memory cell.
FIG. 4A illustrates an example of initial program verify voltages 400 for levels of a memory cell, in accordance with one embodiment of the present disclosure. As shown, a memory cell that stores two bits of data includes four levels L0, L1, L2, and L3 that can be programmed with three PV voltages (e.g., PV1 for L1, PV2 for L2 and PV3 for L3). In this example, the valley margin between L1 and L2 (D2) determines an expected error rate for data stored at a portion of the memory cell and the valley margin between L0 and L1 (D1) and L2 and L3 (D3) determine the error rate for data stored at another portion of the memory cell.
FIG. 4B illustrates an example of adjusting program verify voltages 450 to increase or decrease the error rates of data stored at portions the memory cell, in accordance with some embodiments of the present disclosure. As shown, the error rate for the data stored at the portion of the memory cell is to be decreased so that the error rate for the data stored at the portion of the memory cell is less than the error rate for the data stored at the other portion of the memory cell. For example, PV2 can be shifted to the right (e.g., PV2A), which decreases the valley margin D3 between shifted L2 and L3 while also increasing the valley margin D2 between L1 and L2. The result is a decrease in the error rate associated with the data stored at the portion of the memory cell by increasing the distance D2 associated with data stored at the first portion of the memory cell. Furthermore, the expected error rate associated with the data stored at the other portion of the memory cell is increased by decreasing the distance D3 associated with the error rate for data stored at the second portion of the memory cell.
In another example, PV1 can be shifted to the left (e.g., PV1A), which decreases valley margin D1 between shifted L1 and L0 and increases distance D2 valley margin shifted L1 and L2. This results in a decrease in the error rate associated with the data stored at the portion of the memory cell by increasing the distance D2 associated with data stored at the portion of the memory cell. Furthermore, the error rate associated with the data stored at the other portion of the memory cell is increased by decreasing the distance D1 associated with the error rate for data stored at the other portion of the memory cell.
FIG. 5A illustrates an example of providing data from a memory cell of a memory system 500 based on an adjustable error rate, in accordance with some embodiments of the present disclosure. The memory system 500 includes a memory cell 530 and a controller 510 that corresponds to controller 111 of FIG. 1 . Although the present illustration discusses providing data to a controller of the memory system based on an adjustable error rate, in other embodiments the data can be provided to other components of the computing environment 100 of FIG. 1 . For example, the data can be provided to host system 120 of FIG. 1 so that the host system can provide the error correction for the data. The memory cell 530 can include first data 540 a stored at a first portion (e.g., the first page) of the memory cell 530 and second data 545 a stored at a second portion (e.g., the second page) of the memory cell 530. As previously discussed, a read operation can be performed on memory cell 530 as part of a first programming pass of a two-pass programming process. During the read operation, first data 540 b can be provided to controller 510. First data 540 b can be a copy of first data 540 a read from memory cell 530. Upon receiving the first data 540 b, the memory system can determine whether a first error rate associated with the first data 540 b exceeds a threshold when a controller 510 performs an error correction operation on first data 540 b.
FIG. 5B illustrates an example of providing additional data of the memory cell of the memory system, in accordance with some embodiments of the present disclosure. If the first error rate associated with first data 540 b exceeds a threshold, then second data 545 b is read from a memory device 520 associated with memory cell 530 to controller 510. Upon receipt of second data 545 b, the controller 510 determines whether second data 545 b includes any errors. If controller 510 determines that second data 545 b includes errors, then controller 510 can perform an error correction operation on second data 545 b. The controller provides corrected first data and/or second data to memory cell 530. For example, the corrected first data can be provided to the first page of the memory cell and/or the corrected second data can be provided to the second page of the memory cell. In some implementations, controller 510 can determine that first data 540 b and/or second data 545 b do not include any errors. Accordingly, the controller 510 can provide first data 540 b and/or second data 545 b to memory cell 530 to refresh the portions of the data stored at memory cell 530.
FIG. 6 illustrates an example machine of a computer system 600 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. For example, the computer system 600 may correspond to a host system (e.g., the host system 120 of FIG. 1 ) that includes or utilizes a memory system (e.g., the memory system 110 of FIG. 1 ) or may be used to perform the operations of a controller (e.g., to execute an operating system to perform operations corresponding to the error determining component 113 of FIG. 1 ). In alternative implementations, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and/or the Internet. The machine may operate in the capacity of a server or a client machine in client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment.
The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example computer system 600 includes a processing device 602, a main memory 604 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 606 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage system 618, which communicate with each other via a bus 630.
Processing device 602 represents one or more general-purpose processing devices such as a microprocessor, a central processing unit, or the like. More particularly, the processing device may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 602 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 602 is configured to execute instructions 626 for performing the operations and steps discussed herein. The computer system 600 may further include a network interface device 608 to communicate over the network 620.
The data storage system 618 may include a machine-readable storage medium 624 (also known as a computer-readable medium) on which is stored one or more sets of instructions or software 626 embodying any one or more of the methodologies or functions described herein. The instructions 626 may also reside, completely or at least partially, within the main memory 604 and/or within the processing device 602 during execution thereof by the computer system 600, the main memory 604 and the processing device 602 also constituting machine-readable storage media. The machine-readable storage medium 624, data storage system 618, and/or main memory 604 may correspond to the memory system 110 of FIG. 1 .
In one implementation, the instructions 626 include instructions to implement functionality corresponding to an error determining component (e.g., error determining component 113 of FIG. 1 ). While the machine-readable storage medium 624 is shown in an example implementation to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media that store the one or more sets of instructions. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
Some portions of the preceding detailed descriptions have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. The present disclosure may refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage systems.
The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the intended purposes, or it may include a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the method. The structure for a variety of these systems will appear as set forth in the description below. In addition, the present disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein.
The present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.
In the foregoing specification, implementations of the disclosure have been described with reference to specific example implementations thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of implementations of the disclosure as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.

Claims (20)

What is claimed is:
1. A system comprising:
a memory device; and
a processing device, operatively coupled with the memory device, to:
adjust a first error rate associated with a first data stored at a first portion of a memory cell to exceed a second error rate associated with a second data stored at a second portion of the memory cell, wherein one or more program verify voltages is adjusted for corresponding levels of the memory cell; and
responsive to determining that the first error rate exceeds a threshold, performing an error correction operation on the second data stored at the second portion of the memory cell.
2. The system of claim 1, wherein the corrected second data is provided to the second portion of the memory cell during a second programming operation performed on the memory cell.
3. The system of claim 1, wherein the first error rate associated with the first data stored at the first portion of the memory cell is based on a first programming operation performed on the memory cell.
4. The system of claim 1, wherein the one or more program verify voltages for a particular level corresponds to a target voltage threshold that exceeds the program verify voltage.
5. The system of claim 1, wherein the threshold is a value that indicates a high error rate associated with the first data.
6. The system of claim 1, wherein the processing device is further to:
responsive to determining that the first error rate exceeds the threshold, performing an error correction operation on a third data stored at a third portion of the memory cell.
7. A method comprising:
adjusting a first error rate associated with a first data stored at a first portion of a memory cell to exceed a second error rate associated with a second data stored at a second portion of the memory cell, wherein one or more program verify voltages is adjusted for corresponding levels of the memory cell; and
responsive to determining that the first error rate exceeds a threshold, performing an error correction operation on the second data stored at the second portion of the memory cell.
8. The method of claim 7, wherein the corrected second data is provided to the second portion of the memory cell during a second programming operation performed on the memory cell.
9. The method of claim 7, wherein the first error rate associated with the first data stored at the first portion of the memory cell is based on a first programming operation performed on the memory cell.
10. The method of claim 7, wherein the one or more program verify voltages for a particular level corresponds to a target voltage threshold that exceeds the program verify voltage.
11. The method of claim 7, wherein the threshold is a value that indicates a high error rate associated with the first data.
12. The method of claim 11, further comprising:
responsive to determining that the first error rate exceeds the threshold, performing an error correction operation on a third data stored at a third portion of the memory cell.
13. A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to:
adjust a first error rate associated with a first data stored at a first portion of a memory cell to exceed a second error rate associated with a second data stored at a second portion of the memory cell, wherein one or more program verify voltages is adjusted for corresponding levels of the memory cell; and
responsive to determining that the first error rate exceeds a threshold, performing an error correction operation on the second data stored at the second portion of the memory cell.
14. The non-transitory computer-readable storage medium of claim 13, wherein the corrected second data is provided to the second portion of the memory cell during a second programming operation performed on the memory cell.
15. The non-transitory computer-readable storage medium of claim 13, wherein the first error rate associated with the first data stored at the first portion of the memory cell is based on a first programming operation performed on the memory cell.
16. The non-transitory computer-readable storage medium of claim 13, wherein the one or more program verify voltages for a particular level corresponds to a target voltage threshold that exceeds the program verify voltage.
17. The non-transitory computer-readable storage medium of claim 13, wherein the threshold is a value that indicates a high error rate associated with the first data.
18. The system of claim 1, wherein the error correction operations is an error-correcting code (ECC) operation.
19. The method of claim 7, wherein the error correction operations is an error-correcting code (ECC) operation.
20. The non-transitory computer-readable storage medium of claim 13, wherein the error correction operations is an error-correcting code (ECC) operation.
US17/544,772 2018-03-07 2021-12-07 Providing data of a memory system based on an adjustable error rate Active US11714710B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/544,772 US11714710B2 (en) 2018-03-07 2021-12-07 Providing data of a memory system based on an adjustable error rate

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/914,402 US10540228B2 (en) 2018-03-07 2018-03-07 Providing data of a memory system based on an adjustable error rate
US16/746,786 US11231995B2 (en) 2018-03-07 2020-01-17 Providing data of a memory system based on an adjustable error rate
US17/544,772 US11714710B2 (en) 2018-03-07 2021-12-07 Providing data of a memory system based on an adjustable error rate

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US16/746,786 Continuation US11231995B2 (en) 2018-03-07 2020-01-17 Providing data of a memory system based on an adjustable error rate

Publications (2)

Publication Number Publication Date
US20220091935A1 US20220091935A1 (en) 2022-03-24
US11714710B2 true US11714710B2 (en) 2023-08-01

Family

ID=67843930

Family Applications (3)

Application Number Title Priority Date Filing Date
US15/914,402 Active 2038-05-01 US10540228B2 (en) 2018-03-07 2018-03-07 Providing data of a memory system based on an adjustable error rate
US16/746,786 Active US11231995B2 (en) 2018-03-07 2020-01-17 Providing data of a memory system based on an adjustable error rate
US17/544,772 Active US11714710B2 (en) 2018-03-07 2021-12-07 Providing data of a memory system based on an adjustable error rate

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US15/914,402 Active 2038-05-01 US10540228B2 (en) 2018-03-07 2018-03-07 Providing data of a memory system based on an adjustable error rate
US16/746,786 Active US11231995B2 (en) 2018-03-07 2020-01-17 Providing data of a memory system based on an adjustable error rate

Country Status (5)

Country Link
US (3) US10540228B2 (en)
EP (1) EP3762812A4 (en)
KR (1) KR20200118500A (en)
CN (1) CN111954863A (en)
WO (1) WO2019173649A1 (en)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068186B2 (en) 2018-02-09 2021-07-20 Micron Technology, Inc. Providing recovered data to a new memory cell at a memory sub-system based on an unsuccessful error correction operation
US10540228B2 (en) 2018-03-07 2020-01-21 Micron Technology, Inc. Providing data of a memory system based on an adjustable error rate
WO2019169586A1 (en) 2018-03-07 2019-09-12 Micron Technology, Inc. Performing read operation prior to two-pass programming of storage system
US10553290B1 (en) * 2018-10-30 2020-02-04 Micron Technology, Inc. Read disturb scan consolidation
US11061762B2 (en) * 2019-02-04 2021-07-13 Intel Corporation Memory programming techniques
JP2020155174A (en) * 2019-03-19 2020-09-24 キオクシア株式会社 Memory system
WO2021031205A1 (en) * 2019-08-22 2021-02-25 Micron Technology, Inc. Granular error reporting on multi-pass programming of non-volatile memory
US11507454B2 (en) * 2020-10-26 2022-11-22 Oracle International Corporation Identifying non-correctable errors using error pattern analysis
WO2022251019A1 (en) * 2021-05-27 2022-12-01 Micron Technology, Inc. Memory bank protection
US11861177B2 (en) * 2021-08-06 2024-01-02 Micron Technology, Inc. Configurable verify level for a set of data in a memory device

Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080137415A1 (en) 2006-12-11 2008-06-12 Seung Jae Lee Multi-Bit Flash Memory Device and Program Method Thereof
US20080276150A1 (en) 2007-05-02 2008-11-06 Samsung Electronics Co., Ltd Error control code apparatuses and methods of using the same
US20090109748A1 (en) 2007-10-25 2009-04-30 Samsung Electronics Co., Ltd. Apparatus and method of multi-bit programming
US20090287969A1 (en) 2008-05-13 2009-11-19 Bpm Microsystems Electronic apparatus and bit error rate tolerance method for programming non-volatile memory devices
US20120236641A1 (en) * 2010-10-05 2012-09-20 STEC, Inc. A California Corporation Asymmetric log-likelihood ratio for mlc flash channel
US20120240007A1 (en) 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
US8484519B2 (en) 2011-08-19 2013-07-09 Stec, Inc. Optimal programming levels for LDPC
US20140164870A1 (en) 2012-12-07 2014-06-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
US20140301142A1 (en) 2013-04-03 2014-10-09 Western Digital Technologies, Inc. Systems and methods of write precompensation to extend life of a solid-state memory
US20150199268A1 (en) 2014-01-16 2015-07-16 Pure Storage Data placement based on data retention in a tiered storage device system
KR20150130633A (en) 2014-05-13 2015-11-24 삼성전자주식회사 Storage device including nonvolatile memory device and read method thereof
US20160041891A1 (en) 2014-08-07 2016-02-11 Sandisk Technologies Inc. Storage Module and Method for Analysis and Disposition of Dynamically Tracked Read Error Events
US20160218740A1 (en) 2015-01-28 2016-07-28 Micron Technology, Inc. Estimating an error rate associated with memory
US9496043B1 (en) 2015-06-24 2016-11-15 International Business Machines Corporation Dynamically optimizing flash data retention or endurance based on data write frequency
US20170075756A1 (en) 2015-09-16 2017-03-16 Kabushiki Kaisha Toshiba Cache Memory System and Processor System
US20170102991A1 (en) 2015-10-08 2017-04-13 Seagate Technology Llc Internal copy-back with read-verify
US20170213597A1 (en) 2016-01-27 2017-07-27 Microsemi Storage Solutions (Us), Inc. Nonvolatile memory system with program step manager and method for program step management
US20170255403A1 (en) 2016-03-04 2017-09-07 Western Digital Technologies, Inc. Temperature variation compensation
US20170345510A1 (en) 2016-05-27 2017-11-30 Western Digital Technologies, Inc. Temperature variation compensation
KR20180009430A (en) 2016-07-18 2018-01-29 에스케이하이닉스 주식회사 Memory system and operation method for the same
US20190097132A1 (en) 2017-09-25 2019-03-28 Sandisk Technologies Llc Reram read state verification based on cell turn-on characteristics
US20190332467A1 (en) 2017-01-11 2019-10-31 Groq, Inc. Error Correction in Computation
US10540228B2 (en) 2018-03-07 2020-01-21 Micron Technology, Inc. Providing data of a memory system based on an adjustable error rate

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990644B2 (en) * 2011-12-22 2015-03-24 Micron Technology, Inc. Apparatus and methods of programming memory cells using adjustable charge state level(s)
US8954824B2 (en) * 2012-02-28 2015-02-10 Micron Technology, Inc. Error detection or correction of stored signals after one or more heat events in one or more memory devices
US9147486B2 (en) * 2013-09-05 2015-09-29 Micron Technology, Inc. Continuous adjusting of sensing voltages
US8942028B1 (en) * 2014-06-16 2015-01-27 Sandisk Technologies Inc. Data reprogramming for a data storage device
US10169144B2 (en) * 2016-01-15 2019-01-01 Micron Technology, Inc. Non-volatile memory including selective error correction

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080137415A1 (en) 2006-12-11 2008-06-12 Seung Jae Lee Multi-Bit Flash Memory Device and Program Method Thereof
US20080276150A1 (en) 2007-05-02 2008-11-06 Samsung Electronics Co., Ltd Error control code apparatuses and methods of using the same
US20090109748A1 (en) 2007-10-25 2009-04-30 Samsung Electronics Co., Ltd. Apparatus and method of multi-bit programming
US20090287969A1 (en) 2008-05-13 2009-11-19 Bpm Microsystems Electronic apparatus and bit error rate tolerance method for programming non-volatile memory devices
US20120236641A1 (en) * 2010-10-05 2012-09-20 STEC, Inc. A California Corporation Asymmetric log-likelihood ratio for mlc flash channel
US20120240007A1 (en) 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
US8484519B2 (en) 2011-08-19 2013-07-09 Stec, Inc. Optimal programming levels for LDPC
US20140164870A1 (en) 2012-12-07 2014-06-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
US20140301142A1 (en) 2013-04-03 2014-10-09 Western Digital Technologies, Inc. Systems and methods of write precompensation to extend life of a solid-state memory
US20150199268A1 (en) 2014-01-16 2015-07-16 Pure Storage Data placement based on data retention in a tiered storage device system
KR20150130633A (en) 2014-05-13 2015-11-24 삼성전자주식회사 Storage device including nonvolatile memory device and read method thereof
US20160041891A1 (en) 2014-08-07 2016-02-11 Sandisk Technologies Inc. Storage Module and Method for Analysis and Disposition of Dynamically Tracked Read Error Events
US20160218740A1 (en) 2015-01-28 2016-07-28 Micron Technology, Inc. Estimating an error rate associated with memory
US9496043B1 (en) 2015-06-24 2016-11-15 International Business Machines Corporation Dynamically optimizing flash data retention or endurance based on data write frequency
US20170075756A1 (en) 2015-09-16 2017-03-16 Kabushiki Kaisha Toshiba Cache Memory System and Processor System
JP2017058953A (en) 2015-09-16 2017-03-23 株式会社東芝 Cache memory system
US20170102991A1 (en) 2015-10-08 2017-04-13 Seagate Technology Llc Internal copy-back with read-verify
US20170213597A1 (en) 2016-01-27 2017-07-27 Microsemi Storage Solutions (Us), Inc. Nonvolatile memory system with program step manager and method for program step management
US20170255403A1 (en) 2016-03-04 2017-09-07 Western Digital Technologies, Inc. Temperature variation compensation
US20170345510A1 (en) 2016-05-27 2017-11-30 Western Digital Technologies, Inc. Temperature variation compensation
KR20180009430A (en) 2016-07-18 2018-01-29 에스케이하이닉스 주식회사 Memory system and operation method for the same
US20190332467A1 (en) 2017-01-11 2019-10-31 Groq, Inc. Error Correction in Computation
US20190097132A1 (en) 2017-09-25 2019-03-28 Sandisk Technologies Llc Reram read state verification based on cell turn-on characteristics
US10540228B2 (en) 2018-03-07 2020-01-21 Micron Technology, Inc. Providing data of a memory system based on an adjustable error rate

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Extended European Search Report Serial No. EP 19 76 3489, dated Nov. 1, 2021, 10 pages.
International Search Report and Written Opinion for International Patent Application Serial No. PCT/US2019/0021239, dated Jul. 11, 2019, 10 pages.

Also Published As

Publication number Publication date
US20220091935A1 (en) 2022-03-24
EP3762812A4 (en) 2021-12-08
US10540228B2 (en) 2020-01-21
CN111954863A (en) 2020-11-17
US11231995B2 (en) 2022-01-25
EP3762812A1 (en) 2021-01-13
US20200151058A1 (en) 2020-05-14
US20190278655A1 (en) 2019-09-12
KR20200118500A (en) 2020-10-15
WO2019173649A1 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
US11714710B2 (en) Providing data of a memory system based on an adjustable error rate
US11763896B2 (en) Preread and read threshold voltage optimization
US11455194B2 (en) Management of unmapped allocation units of a memory sub-system
US11868639B2 (en) Providing recovered data to a new memory cell at a memory sub-system based on an unsuccessful error correction operation
US11256429B2 (en) Adjustment of a pre-read operation based on an operating temperature
US11544008B2 (en) Temperature correction in memory sub-systems
US11688475B2 (en) Performing read operation prior to two-pass programming of storage system
US11354037B2 (en) Scan frequency modulation based on memory density or block usage
US11720259B2 (en) Selective dummy writes for asynchronous power loss handling in memory devices
US10685725B2 (en) Performing an operation on a memory cell of a memory system at a frequency based on temperature
US20230205450A1 (en) Voltage threshold prediction-based memory management

Legal Events

Date Code Title Description
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: MICRON TECHNOLOGIES, INC., IDAHO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KOUDELE, LARRY J;KAYNAK, MUSTAKA N;SHEPEREK, MICHAEL;AND OTHERS;SIGNING DATES FROM 20180306 TO 20190305;REEL/FRAME:058339/0238

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

AS Assignment

Owner name: MICRON TECHNOLOGY, INC., IDAHO

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE: MICRON TECHNOLOGIES, INC. PREVIOUSLY RECORDED AT REEL: 058339 FRAME: 0238. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNORS:KOUDELE, LARRY J;KAYNAK, MUSTAFA N;SHEPEREK, MICHAEL;AND OTHERS;SIGNING DATES FROM 20180306 TO 20190305;REEL/FRAME:058535/0914

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