US20230030713A1 - Read threshold adjustment techniques for memory - Google Patents
Read threshold adjustment techniques for memory Download PDFInfo
- Publication number
- US20230030713A1 US20230030713A1 US17/890,014 US202217890014A US2023030713A1 US 20230030713 A1 US20230030713 A1 US 20230030713A1 US 202217890014 A US202217890014 A US 202217890014A US 2023030713 A1 US2023030713 A1 US 2023030713A1
- Authority
- US
- United States
- Prior art keywords
- read
- memory
- value
- threshold
- memory cells
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 554
- 238000000034 method Methods 0.000 title claims abstract description 122
- 238000012937 correction Methods 0.000 claims description 18
- 238000009826 distribution Methods 0.000 description 55
- 230000004044 response Effects 0.000 description 48
- 230000006870 function Effects 0.000 description 19
- 238000004242 micellar liquid chromatography Methods 0.000 description 8
- 239000000758 substrate Substances 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 230000002277 temperature effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000000969 carrier Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- ZOXJGFHDIHLPTG-UHFFFAOYSA-N Boron Chemical compound [B] ZOXJGFHDIHLPTG-UHFFFAOYSA-N 0.000 description 1
- 229910002601 GaN Inorganic materials 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- JMASRVWKEDWRBT-UHFFFAOYSA-N Gallium nitride Chemical compound [Ga]#N JMASRVWKEDWRBT-UHFFFAOYSA-N 0.000 description 1
- 229910000577 Silicon-germanium Inorganic materials 0.000 description 1
- LEVVHYCKPQWKOP-UHFFFAOYSA-N [Si].[Ge] Chemical compound [Si].[Ge] LEVVHYCKPQWKOP-UHFFFAOYSA-N 0.000 description 1
- 229910045601 alloy Inorganic materials 0.000 description 1
- 239000000956 alloy Substances 0.000 description 1
- 229910052785 arsenic Inorganic materials 0.000 description 1
- RQNWIZPPADIBDY-UHFFFAOYSA-N arsenic atom Chemical compound [As] RQNWIZPPADIBDY-UHFFFAOYSA-N 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 229910052796 boron Inorganic materials 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 239000013626 chemical specie Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- -1 e.g. Substances 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 229910052732 germanium Inorganic materials 0.000 description 1
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical compound [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- BHEPBYXIRTUNPN-UHFFFAOYSA-N hydridophosphorus(.) (triplet) Chemical compound [PH] BHEPBYXIRTUNPN-UHFFFAOYSA-N 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000005468 ion implantation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 150000002739 metals Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229910052594 sapphire Inorganic materials 0.000 description 1
- 239000010980 sapphire Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/20—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits using counters or linear-feedback shift registers [LFSR]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
- G11C29/50004—Marginal testing, e.g. race, voltage or current testing of threshold voltage
Definitions
- the following relates generally to one or more systems for memory and more specifically to read threshold adjustment techniques for memory.
- Memory devices are widely used to store information in various electronic devices such as computers, wireless communication devices, cameras, digital displays, and the like.
- Information is stored by programing memory cells within a memory device to various states.
- binary memory cells may be programmed to one of two supported states, often corresponding to a logic 1 or a logic 0.
- a single memory cell may support more than two possible states, any one of which may be stored by the memory cell.
- a component may read, or sense, the state of one or more memory cells within the memory device.
- a component may write, or program, one or more memory cells within the memory device to corresponding states.
- Memory devices include magnetic hard disks, random access memory (RAM), read-only memory (ROM), dynamic RAM (DRAM), synchronous dynamic RAM (SDRAM), ferroelectric RAM (FeRAM), magnetic RAM (MRAM), resistive RAM (RRAM), flash memory, phase change memory (PCM), 3-dimensional cross-point memory (3D cross point), not-or (NOR) and not-and (NAND) memory devices, and others.
- RAM random access memory
- ROM read-only memory
- DRAM dynamic RAM
- SDRAM synchronous dynamic RAM
- FeRAM ferroelectric RAM
- MRAM magnetic RAM
- RRAM resistive RAM
- flash memory phase change memory
- PCM phase change memory
- Memory devices may be volatile or non-volatile.
- Volatile memory cells e.g., DRAM cells
- Non-volatile memory cells e.g., NAND memory cells
- NAND memory cells may maintain their programmed states for extended periods of time even in the absence of an external power source.
- FIG. 1 illustrates an example of a system that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- FIG. 2 illustrates a plot of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- FIG. 3 illustrates an example of a system that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- FIG. 4 illustrates a plot of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- FIG. 5 illustrates an example of a system that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- FIG. 6 illustrates a plot of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- FIG. 7 illustrates an example of a system that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- FIG. 8 shows a block diagram of a memory device that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- FIGS. 9 - 11 show flowcharts illustrating a method or methods that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- a memory device may access a memory cell as part of a read operation.
- the memory cell may output a signal to a sense component and the sense component may compare the signal to one or more read thresholds (e.g., reference voltages, reference currents, or any combination thereof).
- the memory device may determine a logic value of the memory cell (e.g., a stored logic value such as 0 or 1 for a binary memory cell configured to store one bit; 00, 01, 10, or 11 for a non-binary cell configured to store two bits; etc.) in response to comparing the signal to the one or more read thresholds.
- the memory device may determine that the memory cell is storing a first logic value (e.g., 0) if the signal is below a read threshold or that the memory cell is storing a second logic value (e.g., 1) if the signal is above the read threshold, although any quantity of thresholds and logic values may be used.
- the memory device may read a set of bits from a set of memory cells, where the set of bits may be referred to as a codeword.
- the memory device may detect an uncorrectable error in response to reading one or more codewords from the memory cells.
- the one or more read thresholds may have shifted over time due to program-erase (PE) cycles, read disturbances, cross-temperature effects, and the like. Such shifts may result in a quantity of errors that an error correction code (ECC) or other error correcting scheme of the memory device is unable to correct.
- PE program-erase
- ECC error correction code
- the memory device may implement read threshold adjustment techniques for memory. Such techniques may enable the memory device to accurately shift one or more read thresholds after reading data in which a relatively high quantity of errors is detected (e.g., prior to reading the data again), which may correct at least a subset of errors (e.g., an uncorrectable error may be eliminated or become correctable due to the shifted read thresholds).
- a memory device may be configured to store data within a memory array as codewords that are balanced or at least nearly balanced, where a balanced codeword may include equal numbers of 1s and 0s.
- a memory device may apply a scrambler (e.g., pseudo-random scrambler) before storing data and store the scrambled data as a codeword, where the codeword may be balanced or nearly balanced in response to the scrambler.
- the memory device may include one or more counters configured to track a quantity of logic values in the data.
- the memory cells may be examples of single level cells (SLCs) (e.g., the memory cells may each store a single logic value or bit such as a 0 or a 1).
- the memory device may compare a signal from the memory cells to a read threshold to identify a logic value stored by a cell.
- the memory device may read a set of memory cells as part of reading a codeword.
- the memory device may increment a counter to track a quantity of a logic values in the codeword (e.g., the counter may be incremented if a 1 is read from a memory cell and thus may indicate a total quantity of 1s in the codeword).
- the device may be configured to select a direction or magnitude for shifting the one or more read thresholds using the one or more counters. By selecting the direction or magnitude for shifting the read thresholds using the counters, the memory device may reduce a quantity of attempts to read a codeword and reduce wear of the memory device (e.g., extend a life of the device due to predicting a correct direction to shift the read threshold relatively consistently), among other benefits.
- the memory device may shift the read threshold in accordance with the quantity of one or more logic values in the data. For example, the memory device may shift the read threshold in a first direction if the quantity of first logic values in the data (e.g., a quantity of 1s) is larger than a second quantity of second logic values in the data (e.g., a quantity of 0s). Alternatively, the memory device may shift the read threshold in a second direction if the quantity of the first logic values is smaller than the quantity of the second logic values. In some cases, the memory device may select a magnitude by which to shift the read threshold in response to the comparison (e.g., if the counter indicates a relatively high quantity, the memory device may shift the read threshold by a relatively large amount).
- the memory cells may be examples of non-binary memory cells as described herein, each of which may store at least two bits of information (e.g., 00, 01, 10, or 11 for memory cells each configured to store two bits, 000, 111, 011, etc. for memory cells each configure to store three bits, and so on).
- the memory cells may each include two or more levels for bit storage (e.g., a lower bit level may store a first bit which may be referred to as a lower bit, an upper bit level may store a second bit which may be referred to as an upper bit, an extra bit level may store a third bit which may be referred to as an extra bit, and so on for any quantity of levels).
- a level may be referred to as a page (e.g., an upper level may be referred to as an upper page).
- the memory device may use a set of counters associated with the levels of the memory cells.
- each level may be associated with a respective counter of the set of counters.
- a first level e.g., a lower level
- the memory device increment the first counter to track a quantity of a logic values in data stored in the first level (e.g., the first counter may be incremented if a 1 is read from a lower level of the memory cell).
- the memory device may increment a second counter corresponding to a second level of the memory cells (e.g., an upper level) in response to reading data stored in the second level.
- the second counter may indicate a quantity of memory cells whose stored logic values (e.g., the logic value of a lower bit and an upper bit) result in a logic gate output having a particular value (e.g., a XOR or XNOR logic gate may output a 1 or a 0 based on multiple bits stored by a given memory cell).
- a logic gate output having a particular value (e.g., a XOR or XNOR logic gate may output a 1 or a 0 based on multiple bits stored by a given memory cell).
- Such techniques may be used for any quantity of levels and counters.
- the memory device may increment a third counter corresponding to the third level (e.g., a XOR or XNOR logic gate may output a 1 or a 0 based on a logic value of the lower bit, upper bit, and extra bit stored in a memory cell).
- a memory device may use a combination of the counters to evaluate multiple thresholds at once. For example, the memory device may use a linear combination of the counts of the set of counters to determine a direction, magnitude, or both for adjusting the multiple read thresholds.
- the memory device may use a set of counters associated with a set of read thresholds, where each counter of the set of counters may correspond to a respective read threshold of the set of read thresholds.
- Each counter may track a quantity of logic values stored by the data for a respective read threshold (e.g., a lower page read threshold may correspond to a counter indicating a quantity of 1s or 0s read from the lower level of the memory cells, two upper bit read thresholds may correspond to two counters indicating a quantity of 1s or 0s read from the upper level of the memory cells, and so on).
- the memory device may implement logic to determine counts for each threshold.
- the counter values for the upper bit read thresholds may fail to account for logic values being incorrectly read from another distribution as described herein.
- the memory device may adjust a first count by a second count (e.g., an edge or end threshold count may be subtracted from another threshold count to account for distributions improperly leaking across thresholds).
- the memory device may iteratively adjust counts in order to determine a count for each read threshold, and the memory device may adjust the read thresholds using the adjusted counts.
- FIG. 1 is an example of a system 100 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the system 100 includes a host system 105 coupled with a memory system 110 .
- a memory system 110 may be or include any device or collection of devices, where the device or collection of devices includes at least one memory array.
- a memory system 110 may be or include a Universal Flash Storage (UFS) device, an embedded Multi-Media Controller (eMMC) device, a flash device, a universal serial bus (USB) flash device, a secure digital (SD) card, a solid-state drive (SSD), a hard disk drive (HDD), a dual in-line memory module (DIMM), a small outline DIMM (SO-DIMM), or a non-volatile DIMM (NVDIMM), among other possibilities.
- UFS Universal Flash Storage
- eMMC embedded Multi-Media Controller
- flash device a universal serial bus
- USB universal serial bus
- SD secure digital
- SSD solid-state drive
- HDD hard disk drive
- DIMM dual in-line memory module
- SO-DIMM small outline DIMM
- NVDIMM non-volatile DIMM
- the system 100 may be included in a computing device such as a desktop computer, a laptop computer, a network server, a mobile device, a vehicle (e.g., airplane, drone, train, automobile, or other conveyance), an Internet of Things (IoT) enabled device, an embedded computer (e.g., one included in a vehicle, industrial equipment, or a networked commercial device), or any other computing device that includes memory and a processing device.
- a computing device such as a desktop computer, a laptop computer, a network server, a mobile device, a vehicle (e.g., airplane, drone, train, automobile, or other conveyance), an Internet of Things (IoT) enabled device, an embedded computer (e.g., one included in a vehicle, industrial equipment, or a networked commercial device), or any other computing device that includes memory and a processing device.
- a computing device such as a desktop computer, a laptop computer, a network server, a mobile device, a vehicle (e.g., airplane, drone,
- the system 100 may include a host system 105 , which may be coupled with the memory system 110 .
- this coupling may include an interface with a host system controller 106 , which may be an example of a control component configured to cause the host system 105 to perform various operations in accordance with examples as described herein.
- the host system 105 may include one or more devices, and in some cases may include a processor chipset and a software stack executed by the processor chipset.
- the host system 105 may include an application configured for communicating with the memory system 110 or a device therein.
- the processor chipset may include one or more cores, one or more caches (e.g., memory local to or included in the host system 105 ), a memory controller (e.g., NVDIMM controller), and a storage protocol controller (e.g., PCIe controller, serial advanced technology attachment (SATA) controller).
- the host system 105 may use the memory system 110 , for example, to write data to the memory system 110 and read data from the memory system 110 . Although one memory system 110 is shown in FIG. 1 , the host system 105 may be coupled with any quantity of memory systems 110 .
- the host system 105 may be coupled with the memory system 110 via at least one physical host interface.
- the host system 105 and the memory system 110 may in some cases be configured to communicate via a physical host interface using an associated protocol (e.g., to exchange or otherwise communicate control, address, data, and other signals between the memory system 110 and the host system 105 ).
- Examples of a physical host interface may include, but are not limited to, a SATA interface, a UFS interface, an eMMC interface, a peripheral component interconnect express (PCIe) interface, a USB interface, a Fiber Channel interface, a Small Computer System Interface (SCSI), a Serial Attached SCSI (SAS), a Double Data Rate (DDR) interface, a DIMM interface (e.g., DIMM socket interface that supports DDR), an Open NAND Flash Interface (ONFI), and a Low Power Double Data Rate (LPDDR) interface.
- one or more such interfaces may be included in or otherwise supported between a host system controller 106 of the host system 105 and a memory system controller 115 of the memory system 110 .
- the host system 105 may be coupled with the memory system 110 (e.g., the host system controller 106 may be coupled with the memory system controller 115 ) via a respective physical host interface for each memory device 130 included in the memory system 110 , or via a respective physical host interface for each type of memory device 130 included in the memory system 110 .
- Memory system 110 may include a memory system controller 115 and one or more memory devices 130 .
- a memory device 130 may include one or more memory arrays of any type of memory cells (e.g., non-volatile memory cells, volatile memory cells, or any combination thereof). Although two memory devices 130 - a and 130 - b are shown in the example of FIG. 1 , the memory system 110 may include any quantity of memory devices 130 . Further, where memory system 110 includes more than one memory device 130 , different memory devices 130 within memory system 110 may include the same or different types of memory cells.
- the memory system controller 115 may be coupled with and communicate with the host system 105 (e.g., via the physical host interface), and may be an example of a control component configured to cause the memory system 110 to perform various operations in accordance with examples as described herein.
- the memory system controller 115 may also be coupled with and communicate with memory devices 130 to perform operations such as reading data, writing data, erasing data, or refreshing data at a memory device 130 , and other such operations, which may generically be referred to as access operations.
- the memory system controller 115 may receive commands from the host system 105 and communicate with one or more memory devices 130 to execute such commands (e.g., at memory arrays within the one or more memory devices 130 ).
- the memory system controller 115 may receive commands or operations from the host system 105 and may convert the commands or operations into instructions or appropriate commands to achieve the desired access of the memory devices 130 . And in some cases, the memory system controller 115 may exchange data with the host system 105 and with one or more memory devices 130 (e.g., in response to or otherwise in association with commands from the host system 105 ). For example, the memory system controller 115 may convert responses (e.g., data packets or other signals) associated with the memory devices 130 into corresponding signals for the host system 105 .
- responses e.g., data packets or other signals
- the memory system controller 115 may be configured for other operations associated with the memory devices 130 .
- the memory system controller 115 may execute or manage operations such as wear-leveling operations, garbage collection operations, error control operations such as error-detecting operations or error-correcting operations, encryption operations, caching operations, media management operations, background refresh, health monitoring, and address translations between logical addresses (e.g., logical block addresses (LBAs)) associated with commands from the host system 105 and physical addresses (e.g., physical block addresses) associated with memory cells within the memory devices 130 .
- LBAs logical block addresses
- the memory system controller 115 may include hardware such as one or more integrated circuits or discrete components, a buffer memory, or a combination thereof.
- the hardware may include circuitry with dedicated (e.g., hard-coded) logic to perform the operations ascribed herein to the memory system controller 115 .
- the memory system controller 115 may be or include a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a digital signal processor (DSP)), or any other suitable processor or processing circuitry.
- FPGA field programmable gate array
- ASIC application specific integrated circuit
- DSP digital signal processor
- the memory system controller 115 may also include a local memory 120 .
- the local memory 120 may include read-only memory (ROM) or other memory that may store operating code (e.g., executable instructions) executable by the memory system controller 115 to perform functions ascribed herein to the memory system controller 115 .
- the local memory 120 may additionally or alternatively include static random access memory (SRAM) or other memory that may be used by the memory system controller 115 for internal storage or calculations, for example, related to the functions ascribed herein to the memory system controller 115 .
- SRAM static random access memory
- the local memory 120 may serve as a cache for the memory system controller 115 .
- data may be stored in the local memory 120 if read from or written to a memory device 130 , and may be available within the local memory 120 for subsequent retrieval for or manipulation (e.g., updating) by the host system 105 (e.g., with reduced latency relative to a memory device 130 ) in accordance with a cache policy.
- a memory system 110 may not include a memory system controller 115 .
- the memory system 110 may additionally or alternatively rely upon an external controller (e.g., implemented by the host system 105 ) or one or more local controllers 135 , which may be internal to memory devices 130 , respectively, to perform the functions ascribed herein to the memory system controller 115 .
- an external controller e.g., implemented by the host system 105
- one or more local controllers 135 which may be internal to memory devices 130 , respectively, to perform the functions ascribed herein to the memory system controller 115 .
- one or more functions ascribed herein to the memory system controller 115 may in some cases instead be performed by the host system 105 , a local controller 135 , or any combination thereof.
- a memory device 130 that is managed at least in part by a memory system controller 115 may be referred to as a managed memory device.
- An example of a managed memory device is a managed NAND (MNAND) device.
- a memory device 130 may include one or more arrays of non-volatile memory cells.
- a memory device 130 may include NAND (e.g., NAND flash) memory, ROM, phase change memory (PCM), self-selecting memory, other chalcogenide-based memories, ferroelectric RAM (FeRAM), magneto RAM (MRAM), NOR (e.g., NOR flash) memory, Spin Transfer Torque (STT)-MRAM, conductive bridging RAM (CBRAM), resistive random access memory (RRAM), oxide based RRAM (OxRAM), and electrically erasable programmable ROM (EEPROM).
- a memory device 130 may include one or more arrays of volatile memory cells.
- a memory device 130 may include random access memory (RAM) memory cells, such as dynamic RAM (DRAM) memory cells, synchronous DRAM (SDRAM) memory cells, or SRAM memory cells.
- RAM random access memory
- DRAM dynamic RAM
- SDRAM synchronous DRAM
- a memory device 130 may include (e.g., on a same die or within a same package) a local controller 135 , respectively, which may execute operations on one or more memory cells of the memory device 130 .
- a local controller 135 may operate in conjunction with a memory system controller 115 or may perform one or more functions ascribed herein to the memory system controller 115 .
- a memory device 130 may be or include a NAND device (e.g., NAND flash device).
- a memory device 130 may be or include a memory die 160 .
- a memory device 130 may be a package that includes one or more dies 160 .
- a die 160 may, in some examples, be a piece of electronics-grade semiconductor cut from a wafer (e.g., a silicon die cut from a silicon wafer).
- Each die 160 may include one or more planes 165 , and each plane 165 may include a respective set of blocks 170 , where each block 170 may include a respective set of pages 175 , and each page 175 may include a set of memory cells.
- a NAND memory device 130 may include memory cells configured to each store one bit of information, which may be referred to as SLCs. Additionally or alternatively, a NAND memory device 130 may include memory cells configured to each store multiple bits of information, which may be referred to as MLCs if configured to each store two bits of information, as tri-level cells (TLCs) if configured to each store three bits of information, as quad-level cells (QLCs) if configured to each store four bits of information, or more generically as multiple-level or multi-bit memory cells. Multiple-level memory cells may provide greater density of storage relative to SLC memory cells but may, in some cases, involve narrower read or write margins or greater complexities for supporting circuitry.
- planes 165 may refer to groups of blocks 170 , and in some cases, concurrent operations may take place within different planes 165 .
- concurrent operations may be performed on memory cells within different blocks 170 so long as the different blocks 170 are in different planes 165 .
- performing concurrent operations in different planes 165 may be subject to one or more restrictions, such as identical operations being performed on memory cells within different pages 175 that have the same page address within their respective planes 165 (e.g., related to command decoding, page address decoding circuitry, or other circuitry being shared across planes 165 ).
- a block 170 may include memory cells organized into rows (pages 175 ) and columns (e.g., strings, not shown). For example, memory cells in a same page 175 may share (e.g., be coupled with) a common word line, and memory cells in a same string may share (e.g., be coupled with) a common digit line (which may alternatively be referred to as a bit line).
- memory cells may be read and programmed (e.g., written) at a first level of granularity (e.g., at the page level of granularity) but may be erased at a second level of granularity (e.g., at the block level of granularity).
- a page 175 may be the smallest unit of memory (e.g., set of memory cells) that may be independently programmed or read (e.g., programed or read concurrently as part of a single program or read operation)
- a block 170 may be the smallest unit of memory (e.g., set of memory cells) that may be independently erased (e.g., erased concurrently as part of a single erase operation).
- NAND memory cells may be erased before they can be rewritten with new data.
- a used page 175 may in some cases not be updated until the entire block 170 that includes the page 175 has been erased.
- the system 100 may include any quantity of non-transitory computer readable media that support read threshold adjustment techniques for memory.
- the host system 105 , the memory system controller 115 , or a memory device 130 may include or otherwise may access one or more non-transitory computer readable media storing instructions (e.g., firmware) for performing the functions ascribed herein to the host system 105 , memory system controller 115 , or memory device 130 .
- instructions e.g., firmware
- such instructions if executed by the host system 105 (e.g., by the host system controller 106 ), by the memory system controller 115 , or by a memory device 130 (e.g., by a local controller 135 ), may cause the host system 105 , memory system controller 115 , or memory device 130 to perform one or more associated functions as described herein.
- the system 100 may implement read threshold adjustment techniques as described herein.
- the memory system 110 (or the host system 105 ) may adjust one or more read thresholds using one or more counters as described herein, which may enable the memory system 110 to correct one or more errors (e.g., otherwise uncorrectable errors), reduce a quantity of reading operations for a codeword, extend a life of the memory system 110 , or any combination thereof, among other benefits.
- the memory system 110 may include one or more counters configured to track a quantity of logic values in data.
- the memory system 110 may be configured to select a direction or magnitude for shifting the one or more read thresholds using the one or more counters.
- the memory devices 130 may include SLCs or multiple-bit cells (e.g., MLCs, TLCs, QLCs, and so on). Though certain examples may be described herein in the context of NAND memory cells, it is to be understood that the techniques described herein may be applied in the context of any type of memory cells.
- FIG. 2 illustrates a plot 200 of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the plot 200 may illustrate examples of operations implemented by a system 100 as described with reference to FIG. 1 or another system as described herein.
- the plot 200 may include a voltage axis 205 and a quantity axis 210 for illustrative clarity, although other metrics may be used (e.g., a current axis or a charge axis rather than a voltage axis).
- the plot 200 may illustrate example distributions 215 for the voltages of signals read from (e.g., in response to reading) memory cells in a memory array and an example adjustment 225 of a threshold 220 using one or more counters.
- the plot 200 may include a read threshold 220 , which may be an example of a voltage threshold, though a current threshold or charge threshold may additionally or alternative be used.
- the read threshold 220 may be used as part of one or more access operations (e.g., read operations).
- a memory device may receive a command to read data from an address of a memory array.
- the data may be a codeword indicated by an address in the command.
- the memory device may access memory cells associated with the codeword (e.g., each memory cell included in the address) and compare an output of a memory cell to the read threshold 220 .
- the memory device may read the corresponding memory cell as storing a first logic value (e.g., a 0 or a 1).
- the memory device may read the corresponding memory cell as storing a second logic value (e.g., a 1 or a 0).
- the plot 200 may include distribution 215 - a and distribution 215 - b .
- the distributions 215 may illustrate the voltages of signals sensed for a quantity of memory cells from which a codeword is read that are storing a respective logic value.
- a point on the distribution 215 - a may represent a quantity of memory cells storing a respective voltage value.
- the memory cells with voltages on the distribution 215 - a may be examples of memory cells previously written with a first logic value (e.g., 1) and the distribution 215 - b may be examples of memory cells previously written with a second logic value (e.g., 0).
- a first logic value e.g. 1
- the distribution 215 - b may be examples of memory cells previously written with a second logic value (e.g., 0).
- the distributions 215 may be any shape or associated with any logic value.
- the memory device may implement one or more ECC schemes to detect or correct errors in the data.
- the memory device may use error-correcting cyclic codes such as Bose, Chaudhuri, and Hocquenghen (BCH) codes.
- BCH Bose, Chaudhuri, and Hocquenghen
- the memory device may use linear error-correcting codes, such as low-density parity-check (LDPC) codes.
- LDPC low-density parity-check
- User data may be stored in the memory array as one or more codewords.
- ECC bits may be generated using the ECC scheme and the codeword may include the user data bits and ECC bits (e.g., parity bits).
- the memory system may implement one or more encoders (e.g., as part of one or more memory devices 130 or a memory system controller 115 ), which in some cases may be referred to as scramblers, to generate balanced codewords in response to user data to be written to the memory array, such that the memory array may store balanced or nearly balanced codewords representative of the user data.
- the memory system may use a scrambler or other encoder to generate a sequence of bits from user data where each bit has an equal probability of being a 1 or a 0.
- a memory device may store user data (e.g., regardless of the original user data sequence of bits) in the form of codewords in which bits having a relatively similar probability of being a 0 or a 1, which may improve a reliability and lifespan of the memory device and reduce read disturbance.
- the read threshold 220 may deviate from a desired value, which may result in one or more errors in the data.
- the distributions 215 may shift over time such that an ideal location of the read threshold 220 at some later time may be different from an ideal location of the read threshold 220 at some prior time.
- the ideal location of read threshold 220 may be shifted over time due to PE cycles, read disturbances, cross temperature effects, or a combination thereof (e.g., the distributions 215 may shift over time due to PE cycles, read disturbances, cross temperature effects, or a combination thereof). Such shifts may result in a portion of the memory cells being read as incorrect values.
- memory cells of the distribution 215 - b (e.g., written to a second logic value such as a 1 or a 0) that are located to the left of the read threshold 220 may be incorrectly read as memory cells of the distribution 215 - a .
- memory cells written as a second logic value (e.g., 0) may be read as the first logic value (e.g., 1) due to the voltage of those memory cells being less than the read threshold 220 .
- such a shift in the read threshold 220 may introduce a relatively large quantity of errors in a codeword, which may result in an detectable but uncorrectable error (e.g., more erroneous bits than an ECC scheme of the memory device may correct, but not so many erroneous bits that the ECC scheme of the memory device fails to detect the error, such as a two-bit error if the ECC scheme is a single-error-correcting double-error-detecting (SECDED) scheme, for example).
- SECDED single-error-correcting double-error-detecting
- the memory system may adjust the read threshold 220 using one or more counters.
- the memory system may use a pseudo-random or random scrambler to encode user data to a codeword (e.g., the memory system may include the scrambler, for example, in a controller of the memory system or elsewhere in the memory system).
- the probability that a bit of the codeword is a first logic value may be 0.5, although any probabilities or scramblers may be used.
- the decoder of the memory system may include a counter configured to count the quantity of bits having a particular logic value within a codeword read from the memory.
- a counter may increment each time a 1 is read as part of the codeword, and the counter value may indicate the quantity of 1s in the codeword.
- the counter may track the quantity of bits that are of a second logic value (e.g., a quantity of 0s in the codeword).
- the memory system may compare the quantity (e.g., count) of bits having a first logic value indicated by the counter to a threshold or a quantity of bits having a second logic value. For example, the memory system may compare the quantity to a difference between the total quantity of bits in the codeword and the quantity (e.g., if a codeword has 9312 bits, the memory system may compare the quantity to 9312 minus the quantity, as one example). It is to be understood that these and any other specific numbers provided herein are examples provided solely for the sake of illustrative clarity and are not limiting of the claims.
- the memory system may compare the quantity to one or more threshold quantities (e.g., the memory system may determine whether the quantity of bits having a first logic value is greater than or less than half the bits in the codeword, or greater than or less than half the bits in the codeword by at least some amount).
- the memory system may perform an adjustment 225 in response to the comparison. For example, the memory system may select a direction, a magnitude, or both to adjust (e.g., shift) the read threshold 220 in response to the quantity indicated by the counter. As an illustrative example, the memory system may determine that the quantity of 1s in the codeword is greater than the quantity of 0s or satisfies a threshold quantity of 1s. The memory system may shift the read threshold 220 in a direction associated with the determination. For instance, the memory system may shift the read threshold 220 to the left (e.g., adjust a reference voltage for read operations to be relatively smaller) such that the read threshold 220 is located relatively closer to the distribution 215 - a .
- the memory system may select a direction, a magnitude, or both to adjust (e.g., shift) the read threshold 220 in response to the quantity indicated by the counter.
- the memory system may determine that the quantity of 1s in the codeword is greater than the quantity of 0s or satisfie
- the memory system may determine a magnitude of the adjustment 225 in response to the counter (e.g., a table may indicate the magnitude, the magnitude may scale with the quantity such that a relatively large quantity of 1s in the codeword corresponds to a relatively large adjustment 225 , etc.).
- a table may indicate the magnitude
- the magnitude may scale with the quantity such that a relatively large quantity of 1s in the codeword corresponds to a relatively large adjustment 225 , etc.
- the memory system may adjust to the right in response to a counter, the memory system may track the quantity of second logic values, and the like).
- the memory system may perform the techniques described herein regardless of whether an error is uncorrectable or not (e.g., a relatively high quantity of errors may satisfy a threshold and the memory system may proactively shift the thresholds using the techniques described herein to reduce the quantity of errors).
- the memory system may perform another read operation after adjusting the read threshold 220 .
- the memory system may read the codeword from the memory cells using the adjusted read threshold 220 .
- the second read operation may result in a relatively higher or lower quantity of the first logic value.
- a lower quantity of 1s may be read due to the read threshold being shifted such that memory cells of the distribution 215 - b that were incorrectly read as 1s in the first read operation due to the initial location of the read threshold 220 now being correctly read as 0s due to the shifted location of the read threshold 220 .
- a quantity of errors may be reduced such that errors may be eliminated or an ECC code may correct any remaining errors.
- the memory system may perform additional or alternative adjustments 225 . For example, if the second read operation results in another uncorrectable error, the memory system may repeat the comparison and adjustment process until a successful read occurs. Alternatively, the memory system may perform an adjustment in an opposite direction in response to the second uncorrectable error (e.g., the memory system may shift the threshold to the left for a second operation and shift the threshold to the right of the initial read threshold 220 for a third operation in response to the second operation including an uncorrectable error).
- the memory system may perform an adjustment in an opposite direction in response to the second uncorrectable error (e.g., the memory system may shift the threshold to the left for a second operation and shift the threshold to the right of the initial read threshold 220 for a third operation in response to the second operation including an uncorrectable error).
- the memory system may detect an error using BCH code (e.g., an ECC decoder may be an example of a BCH decoder).
- BCH code e.g., an ECC decoder may be an example of a BCH decoder.
- the user data size may be 1 Kilobyte (KB) (e.g., 8000 bits) and a size of the codeword may be 9312 bits, which may support correction of up to 80 errors in the data. In other words, for an uncorrectable error to occur, 81 or more bits of the data may be flipped to an incorrect value.
- the memory system may determine that a first quantity of the bits corresponding to a first logic value is greater than a second quantity of the bits corresponding to a second logic value (e.g., the codeword was read with more 1s than 0s or more 0s than 1s). In such cases, there may be a relatively high probability that the correct direction to adjust the read threshold 220 is the direction that results in a relatively higher quantity of bits corresponding to the second logic value (e.g., shifting the threshold left to result in more 0s from the distribution 215 - b ). In other words, the memory system may shift the threshold in a direction that results in a high quantity of bits corresponding to the second logic value due to determining that the first quantity of bits if higher than the second quantity of bits. For example, in order for the codeword to be uncorrectable and the direction indicated by the counter to be incorrect, there may be at least
- T represents the quantity of bits the ECC code can correct.
- the memory system may detect an error using LDPC code (e.g., an ECC decoder may be an example of a LDPC decoder).
- the code may correspond to a set quantity of errors that render codeword uncorrectable.
- the probability that a direction is a correct direction may be calculated as a product of the probability that the original scrambled codeword includes the indicated quantity of bits with a first logic value and the probability that the quantity of bits may result in an uncorrectable error.
- the memory system may calculate such probabilities described herein and shift the threshold 220 in response to the calculation.
- the memory system may use a binomial formula or other calculation techniques to determine a probability that a direction is correct, and select the direction in response to the probability.
- the memory system may be pre-configured with thresholds and may adjust the threshold 220 in response to the pre-configured thresholds.
- the memory system may be configured to shift a direction to reduce the greater quantity of bits (e.g., if quantity of 1s are greater than quantity of 0s in the codeword, shift to a lower voltage threshold 220 such that the quantity of 1s are reduced).
- the memory system may be configured to store and consult a look-up table and may adjust the threshold 220 in a direction, magnitude, or both indicated in the table by a field corresponding to a respective counter value or range of counter values.
- the different counter values associated with the different entries of the look-up table may be in response to such probabilities as determined prior to configuration of the memory system or in response to experimental techniques, for example.
- FIG. 3 illustrates an example of a system 300 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the system 300 may be an example of or include aspects of the system 100 and/or the plot 200 as described with reference to FIGS. 1 and 2 .
- the system 300 may include memory 305 , which may be example of a memory array as described herein (e.g., NAND SLC memory cells).
- the system 300 may illustrate an example implementation of adjusting a read threshold using a decoder 310 , a counter 315 , and a comparison component 320 .
- the various components of the system 300 may be combined or located different than shown (e.g., the decoder 310 may include the counter 315 and the comparison component 320 in logic).
- the system 300 may include an encoder 335 .
- the encoder 335 may be configured to scramble user data into a codeword as described herein with reference to FIG. 2 .
- the encoder 335 may receive user data and generate a balanced sequence of 0’s and 1’s using a scrambler as described herein.
- the encoder 335 may additionally or alternatively be configured to encode the codeword using an ECC code, to support an error detection or correction procedure if later reading the codeword from the memory 305 .
- the system 300 may show a data path for performing an adjustment 325 of a read threshold using the techniques described herein with reference to FIG. 2 .
- data e.g., a codeword
- the data may be input to the decoder 310 and the counter 315 .
- the decoder 310 may detect an uncorrectable error 330 in response to decoding the data.
- the decoder 310 may include a descrambler in addition or in the alternative to the ECC decoder.
- the decoder 310 may be configured to descramble the codeword to the original user data as part of the read operation.
- the counter 315 may track a quantity of bits in the data that correspond to a first logic value (e.g., the counter may increment each time a 1 or a 0 is read from a memory cell) as described with reference to FIG. 2 .
- the comparison component 320 may receive a quantity of bits corresponding to the first logic value from the counter 315 , an indication that the data includes an uncorrectable error from the decoder 310 , or both. For example, if the decoder 310 detects that the errors 330 in the data are uncorrectable (e.g., the data includes an uncorrectable quantity of errors for an ECC scheme), the decoder 310 may indicate the error 330 to the comparison component 320 .
- the comparison component 320 may compare the quantity of bits to a second quantity of bits (e.g., a quantity of 0s to a quantity of 1s).
- the comparison component 320 may compare the quantity of bits indicated by the counter 315 to one or more thresholds (e.g., determine whether the quantity of bits satisfies, exceeds, or falls below a threshold such as half the bits of the codeword, or some number of other thresholds in order to identify an extent to which the codeword is unbalanced as read).
- a threshold such as half the bits of the codeword, or some number of other thresholds in order to identify an extent to which the codeword is unbalanced as read.
- the memory system may perform an adjustment 325 using a result from the comparison component 320 . For example, if the comparison component 320 indicates that the quantity of bits with the first logic value is greater than the quantity of bits with the second logic value or satisfies a threshold, the memory system may select a direction to reduce the quantity of bits with the first logic value for a subsequent read operation. As an illustrative example, the memory system may determine that the quantity of 1s is greater than the quantity of 0s in a codeword or satisfies a threshold quantity. The memory system may also determine that the error 330 is uncorrectable.
- a logic gate may receive the indication that the error 330 is uncorrectable and an indication of whether the quantity of bits with a first logic value is greater or less than the quantity of bits with a second logic value.
- the logic gate may output a signal indicating that the error 330 is uncorrectable and a first result of the comparison component 320 (e.g., more 1s than 0s).
- the memory system may perform adjustment 325 - a (e.g., the memory system may shift the threshold to obtain a relatively higher quantity of 0s). The direction of the shift, the magnitude of the shift, or both may be in response to the outputs of the counter 315 and the comparison component 320 .
- the logic gate may output a signal indicating that the error 330 is uncorrectable and a second result of the comparison component 320 (e.g., more 0s than 1s).
- the memory system may perform adjustment 325 - b (e.g., the memory system may shift the threshold to obtain a relatively higher quantity of 1s).
- the memory system may adjust the read threshold from a first value to a second value, where the direction of the adjustment, the magnitude of the adjustment, or both may be in response to the outputs of the counter 315 and the comparison component 320 .
- the memory system may read the codeword using the read threshold having the second value. Such process may repeat as needed until a codeword is read that is error-free or correctable by the decoder 310 , or until a threshold number of attempts (codeword reads) are performed.
- FIG. 4 illustrates a plot 400 of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the plot 400 may be an example of operations implemented by a system 100 as described with reference to FIG. 1 .
- the plot 400 may implement aspects of the plot 200 or the system 300 as described with reference to FIGS. 2 and 3 , respectively.
- the plot 400 may illustrate example distributions 415 for MLC data in a memory array.
- the plot 400 shows thresholds 420 and distributions 415 for memory cells storing two bits, although aspects of the teachings herein may be extended to memory cells each storing any quantity of bits.
- the plot 400 may include a read threshold 420 - a , a read threshold 420 - b , and a read threshold 420 - c , which may be examples of voltage thresholds, though current thresholds or charge thresholds may additional or alternatively be used.
- a memory system may read memory cells using the read thresholds 420 . For example, the memory system may compare a voltage of a signal generated in response to reading a memory cell to the read thresholds 420 and identify a logic value in response to comparing the voltage.
- the different thresholds 420 may be associated with respective bits stored in the memory cell.
- the threshold 420 - b may be associated with a respective first bit of the memory cell, which may be referred to as a “lower bit” or a “lower page bit” of the memory cell.
- the threshold 420 - b may be referred to as a “lower page threshold.”
- the threshold 420 - a and the threshold 420 - c may be associated with a respective second bit of the memory cell, which may be referred to as an “upper bit” or an “upper page bit” of the memory cell.
- the thresholds 420 - a and 420 - c may be referred to as “upper page thresholds.”
- the memory cell may read the respective first bit (e.g., lower page bit) as a 1.
- the memory system may read the respective second bit (e.g., upper page bit) using the read threshold 420 - a if the respective first bit is 1.
- the memory system may read the second bit as a 1 if the voltage signal is less than the threshold 420 - a and a 0 if the voltage signal is greater than the threshold 420 - a .
- the memory system may read the respective first bit as a 0 if the voltage signal is greater than the read threshold 420 - b .
- the memory system may read the respective second bit as a 0 if the voltage signal is less than the read threshold 420 - c and a 1 if the voltage signal is greater than the read threshold 420 - c .
- the distribution 415 - a may correspond to memory cells written with a logic value of 11 (e.g., a lower page bit of 1 and an upper page bit of 1)
- the distribution 415 - b may correspond to memory cells written with a logic value of 01 (e.g., a lower page bit of 1 and an upper page bit of 0)
- the distribution 415 - c may correspond to memory cells written with a logic value of 00 (e.g., a lower page bit of 0 and an upper page bit of 0)
- the distribution 415 - c may correspond to memory cells written with a logic value of 10 (e.g., a lower page bit of 0 and an upper page bit of 1).
- the logic values, distributions 415 , and read thresholds 420 may be different than described (e.g., distributions 415 and read thresholds 420 may be associated with different logic values, lower page bits, or upper page bits). Although shown as parabolic curves for illustrative clarity, it is to be understood that the distributions 415 may be any shape or associated with any logic value.
- one or more of the distributions 415 may become shifted over time such that the one or more read thresholds 420 deviate from an ideal read threshold, which may result in one or more errors in the data.
- the distributions 415 may become shifted over time due to PE cycles, read disturbances, cross temperature effects, or a combination thereof. The shift may result in a portion of the memory cells being read as storing incorrect values.
- memory cells of the distribution 215 - b (e.g., written to a second logic value such as a 01) that are located to the left of the read threshold 420 - a may be incorrectly read as memory cells of the distribution 215 - a
- memory cells of the distribution 215 - c (e.g., written to a third logic value such as 00) that are located to the left of the read threshold 420 - b may be incorrectly read (e.g., read as 01), and the like.
- memory cells written with a second logic value may be read as storing the first logic value (e.g., 11) due to the voltage of those memory cells being less than the read threshold 420 - a .
- the first logic value e.g. 11
- such a shift in the read thresholds 420 may introduce a relatively large quantity of errors in a codeword, which may result in an error that is detectable but uncorrectable by an ECC scheme of the memory system.
- the memory system may adjust one or more read thresholds 420 using one or more counters.
- the memory system may use a pseudo-random or random scrambler to encode user data to generate data, which may be stored in a memory array as a representation of the user data.
- the probability that a bit of the data may correspond to one of four logic values may be 0.25, although any quantity of bits, logic values, probabilities, or scramblers may be used.
- the decoder of the memory system may include one or more counters configured to increment as the memory system reads the data from the memory.
- a memory cell of the set of memory cells may include two or more levels for bit storage.
- a lower bit may be stored on a lower page (e.g., a lower level) of the memory cell and an upper bit may be stored in an upper page (e.g., an upper level) of the memory cell, as described above.
- the lower bit has a logic value of 1
- the voltage of the memory cell may be written to the left of the lower page read threshold 420 - b .
- the upper bit may be a logic value of 1 if written to the left of the upper page read threshold 420 - a or 0 if written to the right.
- the lower bit may have a logic value of 0 and written to the right of the lower page read threshold 420 - b and an upper bit value of 0 may be written to the left of the upper page read threshold 420 - c .
- data may be stored in the memory cells such that a codeword is written and read on a respective level (e.g., each bit of a codeword may be stored on a lower level of the memory cells and each bit of a second codeword may be stored on an upper level of the memory cells).
- the memory system may use a set of counters associated with the levels of the memory cells. For example, each level (e.g., page) may be associated with a respective counter.
- the memory system may include a first counter associated with the read threshold 420 - b and a second counter associated with the read thresholds 420 - a and 420 - c .
- the memory system may increment the first counter in a SLC manner. For example, the first counter may be incremented to track a quantity of memory cells storing a lower page bit logic value of 0 or 1.
- the memory system may increment the second counter using one or more logic gates.
- the memory system may include logic circuitry (e.g., one or more Boolean or other logic gates) and may increment a counter in response to an output of the logic circuitry.
- the memory system may adjust the thresholds 420 using the counter indicating a quantity of memory cells having a first result of the logic gate (e.g., the memory system may compare the quantity to a threshold or a second quantity of memory cells having a second result and adjust the thresholds 420 associated with the counter using the comparison).
- the logic circuitry may include an XNOR logic gate. For example, the upper page bit and the lower page bit of a same memory cell may be input to the XNOR logic gate.
- the XNOR logic gate may be configured to output a first logic value (e.g., 1) if two inputs are the same and output a second logic value (e.g., 0) if the two inputs are different, the two inputs including the respective first bit of a memory cell (e.g., the lower page bit) and the respective second bit of the memory cell (e.g., the upper page bit).
- other logic gates may be used for one or more counters (e.g., XOR logic gates).
- the XOR logic gate may be configured to output a first logic value (e.g., 1) if the two inputs (e.g., the lower page bit and the upper page bit) are different.
- the memory system may implement an algorithm to determine a direction or magnitude of adjustment of the read thresholds 420 for any quantity of levels (e.g., bits stored by a memory cell) using the values indicated by the counters.
- the algorithm may include determining excess logic values (e.g., excess 1s) stored across each level and shifting the read thresholds 420 in a magnitude or direction in response to the total number of excess 1s or 0s.
- the memory system may increment the first counter in the SLC manner as described above (e.g., the memory system may count the quantity of 1s which may be used to determine excess 1s in the lower bit level of the data).
- the memory system may increment the second counter using a logic operation (e.g., XNOR) of the lower bit and the upper bit.
- the memory system can determine excess bits stored to the right of the read thresholds 420 - a and 420 - c .
- the memory system may perform such operations for further counters if more than two bits are stored in the cell (e.g., for TLC, the memory system may XOR all three bits as inputs, track the quantity of 1s, and subtract half the memory cells in the data or codeword to calculate the number of bits to the left of the 4 extra bit level thresholds).
- the memory system may obtain a first count associated with the first counter indicating excess 1s of the lower level, a second count associated with a second counter indicating excess 1s in the upper level, and so on.
- the memory system may perform a linear combination of the values indicated by the counters which will indicate the total number of excess 1s across each bit level.
- the first count may be the value of the counter
- the second count may be the value of the second counter multiplied by two
- a third count may be the value of a third counter multiplied by four, and so on.
- the resulting value (e.g., the linear combination) may be used to determine which direction or magnitude to shift all of the thresholds 420 .
- any technique may be used to evaluate the values indicated by the counters associated with each level of the memory cells.
- the memory system may use a set of counters respectively associated with a set of read thresholds 420 .
- each counter of the set of counters may correspond to a respective read threshold 420 of the set of read thresholds 420 .
- Each counter may track a quantity of logic values stored by the data for a respective read threshold 420 .
- a lower page read threshold 420 - b may correspond to a first counter indicating a quantity of 1s read from the lower level of the memory cells
- a second counter may correspond to the upper page read threshold 420 - a indicating a quantity of 1s read from a the distribution 415 - b
- a third counter may correspond to the upper page read threshold 420 - c indicating a quantity of 1s read from the upper level of the memory cells, and so on for memory cells with more than four read thresholds 420 - c .
- the memory system may implement adjustment operations to determine counts for each threshold. For example, the memory system may iteratively adjust the counts for each counter associated with each respective read thresholds 420 to determine an accurate count for each read threshold 420 .
- the memory system may read an even quantity of 0s and 1s across the read thresholds 420 - b due to an amount of 1s incorrectly coming from the distribution 415 - d and an equal amount of 0s incorrectly coming from the distribution 415 - c . Accordingly, the memory system may use the edge read thresholds 420 - a and 420 - c to first determine a quantity of excess logic values (e.g., bits may only be incorrectly read from one direction, so the excess count is accurate for read thresholds 420 on an edge of the plot 400 ).
- a quantity of excess logic values e.g., bits may only be incorrectly read from one direction, so the excess count is accurate for read thresholds 420 on an edge of the plot 400 .
- the memory system can then adjust the count of the counter for the read threshold 420 - b by subtracting any excess logic values from the edge thresholds 420 , which results in an accurate quantity of excess logic values for the read threshold 420 - b .
- Such techniques may be extended to more read thresholds 420 for more bits stored per logic cell.
- the memory system may perform an adjustment of one or more read thresholds 420 using the set of counters. For example, the memory system may select a direction, a magnitude, or both to adjust (e.g., shift) the read threshold 220 in response to the quantity indicated by the one or more counters (e.g., the linear combination of the counters to shift the thresholds together, or the memory system may treat each read threshold 420 separately and shift in the direction that offsets the quantity of excess logic values). As one illustrative example, the linear combination may indicate that the read thresholds 420 are relatively too far right and the memory system may adjust the read thresholds 420 to the left by a magnitude scaled by the quantity of excess logic values (e.g., excess 1s).
- the memory system may perform another read operation after adjusting the read thresholds 420 .
- the memory system may read the data using the adjusted read thresholds 420 .
- the read thresholds 420 By adjusting the read thresholds 420 in the selected direction or magnitude in response to the counters, errors in the data may be eliminated or reduced such that an ECC code may be used to correct any remaining errors or the memory system may proactively adjust the thresholds to reduce the effects of read disturbances and the like.
- the memory system may perform additional or alternative adjustments 225 . For example, if the second read operation results in another uncorrectable error or a relatively high quantity of errors, the memory system may repeat the comparison and adjustment process until a successful read occurs.
- the memory system may perform an adjustment in an opposite direction in response to the second uncorrectable error (e.g., the memory system may shift the thresholds a first direction for a second operation and shift the thresholds to an opposite direction from an initial location for a third operation in response to the second operation including an uncorrectable error) or if the quantity of errors increases after the adjustment.
- the memory system may perform an adjustment in an opposite direction in response to the second uncorrectable error (e.g., the memory system may shift the thresholds a first direction for a second operation and shift the thresholds to an opposite direction from an initial location for a third operation in response to the second operation including an uncorrectable error) or if the quantity of errors increases after the adjustment.
- a TLC system may include 7 thresholds 420 and use one or more counters to adjust the thresholds 420 as described herein with reference to FIGS. 6 and 7 .
- FIG. 5 illustrates an example of a system 500 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the system 500 may be an example of or include aspects of the system 100 , the plot 200 , the system 300 , and/or the plot 400 as described with reference to FIGS. 1 - 4 .
- the system 500 may include memory 505 , which may be example of a memory array as described herein (e.g., an array of NAND multi-bit memory cells).
- the system 500 may illustrate an example implementation of adjusting a read threshold using a decoder 510 , one or more counters 515 , and a comparison component 520 .
- the various components of the system 500 may be combined or located different than shown (e.g., the decoder 510 may include the counters 515 and the comparison component 520 in logic).
- the system 500 may include an encoder 535 .
- the encoder 535 may be an example of an encoder as described herein (e.g., an encoder 335 ).
- the encoder 535 may be configured to scramble user data into a codeword as described herein with reference to FIGS. 2 - 4 .
- the encoder 535 may receive user data and generate a balanced sequence of 0’s and 1’s using a scrambler.
- the encoder 535 may additionally or alternatively be configured to encode the codeword using an ECC code, to support an error detection or correction procedure if later reading the codeword from the memory 505 .
- the system 500 may show a data path for performing one or more adjustments 525 of one or more read thresholds using the techniques described herein, including with reference to FIG. 2 .
- data e.g., a codeword
- the data may be input to the decoder 510 .
- the data may also be input to the counter 515 - a , the counter 515 - b , or both.
- the decoder 510 may detect an uncorrectable error 530 in response to decoding the data.
- the error 530 may be a quantity of errors that satisfy a threshold (e.g., the memory system may adjust read thresholds if the quantity of errors satisfies a threshold even if the errors are correctable).
- the decoder 510 may include a descrambler in addition or in the alternative to the ECC decoder.
- the decoder 510 may be configured to descramble the codeword to the original user data as part of the read operation.
- the counters 515 may track a quantity of bits in the data that correspond to a first logic value (e.g., the counter 515 - a and/or the counter 515 - b may increment each time a 1 or a 0 is read from a respective first bit or a respective second bit of a memory cell) or a quantity of memory cells that correspond to a first result output by a set of logic circuitry (e.g., the counter 515 - a and/or the counter 515 - b may increment each time the logic circuitry outputs a first result or a second result, such as a 1 if the upper page bit and the lower page bit of a memory cells are the same logic value) as described herein, including with reference to FIG. 4 .
- a first logic value e.g., the counter 515 - a and/or the counter 515 - b may increment each time a 1 or a 0 is read from a respective first bit or a respective second bit of a memory cell
- the system 500 may include logic circuitry 540 .
- the logic circuitry 540 may be configured to perform any of the operations ascribed herein to logic circuitry or logic gates in connection with adjusting one or more read thresholds.
- the logic circuitry 540 may include a logic gate (e.g., an XNOR logic gate) configured to receive one or more inputs (e.g., a respective upper bit and a respective lower bit read from each memory cell associated with a codeword) and output a corresponding result (e.g., a 1 to the counter 515 - b ) indicating whether the two inputs are the same or different, among other possibilities.
- a logic gate e.g., an XNOR logic gate
- the comparison component 520 may receive an indication of a quantity of bits from the one or more counters 515 , an indication that the data includes an uncorrectable error 530 from the decoder 510 , or any combination thereof. For example, if the decoder 510 detects that the errors 530 in the data are uncorrectable (e.g., the data includes an uncorrectable quantity of errors for an ECC scheme), the decoder 510 may indicate the error 530 to the comparison component 520 .
- the comparison component 520 may compare the quantity of bits to a second quantity of bits (e.g., a quantity of 0s to a quantity of 1s) or a threshold as described herein, including with reference to FIG. 4 . Additionally or alternatively, the comparison component 520 or another component may determine a linear combination of the first counter 515 - a and the counter 515 - b and use the result to determine the direction or magnitude of an adjustment 525 .
- the memory system may perform an adjustment 525 in response to a result from the comparison component 520 .
- the comparison component 520 indicates that the read thresholds are relatively too far from an ideal read threshold location as described herein
- the memory system may select a direction of adjustment, a magnitude of adjustment, or both in accordance with the magnitude and direction of the count (e.g., to reduce the quantity of bits being incorrectly read as part of another distribution due to a current location of the read thresholds, among other examples as described herein with reference to FIG. 4 ).
- the memory system may perform adjustment 525 - a (e.g., the memory system may shift one or more thresholds to the left), an adjustment 525 - b (e.g., the memory system may shift one or more thresholds to the right), a combination thereof as described with reference to FIG. 4 .
- the system 500 may include one or more additional counters 515 .
- the system 500 may include a counter 515 for each read threshold as described with reference to FIG. 4 (e.g., for MLC, the system 500 may include 3 counters 515 ).
- the system may not include logic circuitry 540 (e.g., each counter 515 may be incremented if a 1 or a 0 is read for a respective read threshold).
- the comparison component 520 may perform operations described with reference to FIG. 4 .
- the comparison component 520 may iteratively adjust the values of the counters 515 to obtain accurate excess counts for each counter 515 and perform an adjustment 525 - a or 525 - b on a per-threshold basis, among other examples.
- FIG. 6 illustrates a plot 600 of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the plot 600 may be an example of operations implemented by a system 100 as described with reference to FIG. 1 .
- the plot 600 may implement aspects of the plots and systems described herein, such as the plot 400 and system 500 as described with reference to FIGS. 4 and 5 , respectively.
- the plot 600 may illustrate example distributions 615 for TLC data in a memory array.
- the plot 600 shows thresholds 620 and distributions 615 for memory cells storing three bits on three levels, although aspects of the teachings herein may be extended to memory cells each storing any quantity of bits.
- the plot 600 may include a read threshold 620 - a , a read threshold 620 - b , a read threshold 620 - c , a read threshold 620 - d , a read threshold 620 - e , a read threshold 620 - f and a read threshold 620 - g , which may be examples of voltage thresholds, though current thresholds or charge thresholds may additional or alternatively be used.
- a memory system may read memory cells using the read thresholds 620 . For example, the memory system may compare a voltage of a signal generated in response to reading a memory cell to the read thresholds 620 and identify a logic value in response to comparing the voltage.
- the different thresholds 620 may be associated with respective bits stored in the memory cell.
- the threshold 620 - d may be associated with a respective first bit of the memory cell, which may be referred to as a “lower bit” or a “lower page bit” of the memory cell.
- the threshold 620 - d may be referred to as a “lower page threshold” or a “lower level threshold.”
- the threshold 620 - b and the threshold 620 - f may be associated with a respective second bit of the memory cell, which may be referred to as an “upper bit” or an “upper page bit” of the memory cell.
- the thresholds 620 - b and 620 - f may be referred to as “upper page thresholds” or “upper level thresholds.”
- the thresholds 620 - a , 620 - c , 620 - e , and 620 - g may be associated with a respective third bit of the memory cell, which may be referred to as an “extra bit” or an “extra page bit” of the memory cell.
- the thresholds 620 - a , 620 - c , 620 - e , and 620 - g may be referred to as “extra page thresholds” or “extra level thresholds.” Additionally or alternatively, the lower level may be referred to as a first level, the upper level may be referred to as a second level, and the extra level may be referred to as a third level.
- each distribution 615 corresponding to a set of three bits (e.g., the distribution 615 - a corresponding to a lower page, upper page, and extra page bits of 1, 1, and 1, respectively), it is to be understood that any layout or orientation of bits and distributions may be used.
- the logic values, distributions 615 , and read thresholds 620 may be different than described (e.g., distributions 615 and read thresholds 620 may be associated with different logic values, lower page bits, or upper page bits).
- distributions 615 may be any shape or associated with any logic value.
- the memory cell may read the respective first bit (e.g., lower page bit) as a 1.
- the memory system may read the respective second bit (e.g., upper page bit) using the read threshold 620 - b if the respective first bit is 1.
- the memory system may read the second bit as a 1 if the voltage signal is less than the threshold 620 - b and a 0 if the voltage signal is greater than the threshold 620 - b .
- the memory system may read the respective third bit (e.g., extra page bit) using the read threshold 620 - a if the respective second bit is 1.
- the memory system may read the third bit as a 1 if the voltage signal is less than the threshold 620 - a and a 0 if the signal is greater than the thresholds 620 - a .
- one or more of the distributions 615 may become shifted over time such that the one or more read thresholds 620 deviate from an ideal read threshold, which may result in one or more errors in the data as described herein. Accordingly, the memory system may adjust one or more read thresholds 620 using one or more counters.
- the memory system may implement multiple counters.
- the memory system may use a set of counters associated with each level of the memory cells.
- a first counter may correspond to the first level (e.g., read threshold 620 - d ), a second counter may correspond to the second level (e.g., read thresholds 620 - b and 620 - f ), and a third counter may correspond to the third level (e.g., read thresholds 620 - a , 620 - c , 620 - e , and 620 - g ).
- the memory system may use an algorithm as described herein with reference to FIG. 4 , but extended and adapted to accommodate an additional level, to increment the counters and determine a direction, magnitude, or both to adjust the read thresholds 620 using a linear combination of the three counters. For example, the memory system may increment the first counter to track a quantity of memory cells storing a lower page bit logic value of 1 to obtain the lower page excess 1s.
- the memory system may increment the second counter using a logic gate as described herein (e.g., a XOR or XNOR logic gate). By using a logic gate, the second counter may indicate a quantity of cells storing an upper bit logic value to the right (or left) of the thresholds 620 - b and 620 - f .
- the memory system may increment the third counter such that the third counter indicates a quantity of cells storing an extra bit logic value to the right (or left) of the thresholds 620 - a , 620 - c , 620 - e , and 620 - g .
- the memory system may obtain a first count associated with the first counter indicating excess 1s of the lower level, a second count associated with a second counter indicating excess 1s in the upper level, and a third count associated with the third counter indicating excess 1s in the extra level.
- the memory system may perform a linear combination of the values indicated by the counters which will indicate the total number of excess 1s across all of the bit levels.
- the first count may be the value of the counter
- the second count may be the value of the second counter multiplied by two
- a third count may be the value of a third counter multiplied by four
- the resulting value (e.g., the linear combination) may be used to determine which direction or magnitude to shift all of the thresholds 620 .
- any technique may be used to evaluate the values indicated by the counters associated with each level of the memory cells.
- the memory system may use a set of counters respectively associated with a set of read thresholds 620 .
- each counter of the set of counters may correspond to a respective read threshold 620 of the set of read thresholds 620 (e.g., the memory system may use seven counters in plot 600 for TLC memory cells).
- the memory system may adjust the count of each counter iteratively as described herein with reference to FIG. 4 .
- the memory system may determine an edge read threshold 620 - a count (or a count of the other edge read threshold 620 - g ).
- the edge threshold counts may be accurate because any bits incorrectly read are lost to the next distribution or gained from the next distribution (e.g., an accurate quantity of excess 1s or 0s may be obtained due to a single source of extra 1s or 0s).
- the memory system may use the count of the edge read thresholds to obtain an accurate count for the next read thresholds 620 .
- the memory system may subtract excess 1s of the counter for the read threshold 620 - a from the counter of the read threshold 620 - b .
- an accurate count may be obtained for the counter of the read threshold 620 - b .
- the memory system may iterate such procedures for each read threshold 62, which may enable the memory system to treat each read threshold 620 separately (e.g., the memory system may use each individual adjusted count to select a direction or magnitude of adjustment for each read threshold 620 ).
- the memory system may determine counts for each counter in the set of counters (e.g., each counter that corresponds to a respective read threshold 620 ) based on a subset of memory cells.
- each read threshold 620 may correspond to a different logic value for one of multiple levels in a memory cell. That is, for a respective read threshold 620 , a single level of a memory cell may change logic value depending on which side of the read threshold 620 the voltage lies (e.g., the other levels of the cell may not change logic value for the read threshold 620 ). In other words, the other levels of the memory cell may be constant and one of the levels may be changeable when moving across the read threshold 620 .
- the memory system may select a subset of memory cells to determine a count for a counter that corresponds to a respective read threshold 620 .
- the memory system may analyze (e.g., look at) memory cells that have one or more levels with logic values that are constant for the respective read threshold 620 .
- the memory system may determine a count of the subset of memory cells that have a first logic value or a second logic value for the level that is not constant with respective to the read threshold 620 .
- the lower bit and the extra bit may be a same value of 1 and 0, respectively, regardless of whether the voltage lies on the left or right of the read threshold 620 - b .
- the memory system may select memory cells that have a lower bit value of 1 and an extra bit value of 0 to determine the count associated with the read threshold 620 - b .
- the memory system may determine how many upper bits have a first logic value (e.g., 1 or 0) from the subset of memory cells with a lower bit value of 1 and an extra bit value of 0.
- the memory system may perform such counts for each counter (e.g., each read threshold 620 ) and adjust the counts as described herein (e.g., using the edge threshold counts and adjusting each count iteratively).
- FIG. 7 illustrates an example of a system 700 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the system 700 may be an example of or include aspects of the systems and plots as described with reference to FIGS. 1 - 6 .
- the system 700 may include memory 705 , which may be example of a memory array as described herein (e.g., an array of NAND multi-bit memory cells).
- the system 700 may illustrate an example implementation of adjusting a read threshold using a decoder 710 , one or more counters 715 , and a comparison component 720 .
- the various components of the system 700 may be combined or located different than shown (e.g., the decoder 710 may include the counters 715 and the comparison component 720 in logic).
- the system 700 may include an encoder 735 .
- the encoder 735 may be an example of an encoder as described herein (e.g., an encoder 335 ).
- the encoder 735 may be configured to scramble user data into a codeword as described herein with reference to FIGS. 2 - 6 .
- the encoder 735 may receive user data and generate a balanced sequence of 0’s and 1’s using a scrambler.
- the encoder 735 may additionally or alternatively be configured to encode the codeword in response to an ECC code, to support an error detection or correction procedure if later reading the codeword from the memory 705 .
- the system 700 may show a data path for performing one or more adjustments 725 of one or more read thresholds using the techniques described herein, including with reference to FIG. 6 .
- data e.g., a codeword
- the data may be input to the decoder 710 .
- the data may also be input to the counter 715 - a , the counter 715 - b , and the counter 715 - c .
- the counters 715 may be examples of a first counter, second counter, and third counter as described with reference to FIG. 6 .
- the decoder 710 may detect an uncorrectable error 730 in response to decoding the data. Additionally or alternatively, the error 730 may be a quantity of errors that satisfy a threshold (e.g., the memory system may adjust read thresholds if the quantity of errors satisfies a threshold even if the errors are correctable).
- the decoder 710 may include a descrambler in addition or in the alternative to the ECC decoder.
- the decoder 710 may be configured to descramble the codeword to the original user data as part of the read operation.
- the counters 715 may track a quantity of bits in the data that correspond to a first logic value (e.g., the counters 715 may increment each time a 1 or a 0 is read from a respective first bit, a respective second bit, or a respective third bit of a memory cell) or a quantity of memory cells that correspond to a first result output by a set of logic circuitry (e.g., the counter 715 - b and/or the counter 715 - c may increment each time the logic circuitry outputs a first result or a second result, such as a XOR or XNOR result of the three bits) as described herein, including with reference to FIGS. 4 and 6 .
- a first logic value e.g., the counters 715 may increment each time a 1 or a 0 is read from a respective first bit, a respective second bit, or a respective third bit of a memory cell
- a set of logic circuitry e.g., the counter 715 - b
- the system 700 may include logic circuitry 740 .
- the logic circuitry 740 may be configured to perform any of the operations ascribed herein to logic circuitry or logic gates in connection with adjusting one or more read thresholds.
- the logic circuitry 740 - a may include a logic gate (e.g., an XNOR logic gate) configured to receive one or more inputs (e.g., a respective upper bit and a respective lower bit read from each memory cell) and output a corresponding result (e.g., a 1 to the counter 715 - b ) indicating whether the two inputs are the same or different, among other possibilities.
- a logic gate e.g., an XNOR logic gate
- the logic circuitry 740 - b may include a logic gate (e.g., a XOR logic gate) configured to receive one or more inputs (e.g., a respective upper bit, a respective lower bit, and a respective extra bit read from each memory cell) and output a corresponding result (e.g., a 1 to the counter 715 - c ) indicating whether the two inputs are the same or different, among other possibilities.
- a logic gate e.g., a XOR logic gate
- the comparison component 720 may receive an indication of a quantity of bits from the one or more counters 715 , an indication that the data includes an uncorrectable error 730 from the decoder 710 , or any combination thereof. For example, if the decoder 710 detects that the errors 730 in the data are uncorrectable (e.g., the data includes an uncorrectable quantity of errors for an ECC scheme), the decoder 710 may indicate the error 730 to the comparison component 720 .
- the comparison component 720 may compare the quantity of bits to a second quantity of bits (e.g., a quantity of 0s to a quantity of 1s) or a threshold as described herein, including with reference to FIG. 4 .
- the comparison component 720 or another component may determine a linear combination of the first counter 715 - a and the counter 715 - b and use the result to determine the direction or magnitude of an adjustment 725 , as described with reference to FIGS. 4 and 6 .
- the memory system may perform an adjustment 725 in response to a result from the comparison component 720 .
- the comparison component 720 indicates that the read thresholds are relatively too far from an ideal read threshold location as described herein
- the memory system may select a direction of adjustment, a magnitude of adjustment, or both in accordance with the magnitude and direction of the count (e.g., to reduce the quantity of bits being incorrectly read as part of another distribution due to a current location of the read thresholds, among other examples as described herein with reference to FIG. 4 ).
- the memory system may perform adjustment 725 - a (e.g., the memory system may shift one or more thresholds to the left), an adjustment 725 - b (e.g., the memory system may shift one or more thresholds to the right), a combination thereof as described with reference to FIGS. 4 and 6 .
- the system 700 may include one or more additional counters 715 .
- the system 700 may include a counter 715 for each read threshold as described with reference to FIGS. 4 or 6 (e.g., for TLC, the system 700 may include 7 counters 715 ).
- the system may not include logic circuitry 740 (e.g., each counter 715 may be incremented if a 1 or a 0 is read for a respective read threshold).
- the comparison component 720 may perform operations described with reference to FIGS. 4 and 6 .
- the comparison component 720 may iteratively adjust the values of the counters 715 to obtain accurate excess counts for each counter 715 and perform an adjustment 725 - a or 725 - b on a per-threshold basis, among other examples.
- FIG. 8 illustrates an example of a block diagram 800 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the memory system 805 may be an example of aspects of a memory system as described with reference to FIGS. 1 - 7 .
- the memory system 805 may be referred to as a memory device or may include one or more memory devices.
- the memory system 805 may include a read component 810 , a counter component 815 , an error component 820 , a read threshold component 825 , a comparison component 830 , a selection component 835 , and an adjustment component 840 .
- Each of these modules may communicate, directly or indirectly, with one another (e.g., via one or more buses).
- the read component 810 may be configured as or otherwise support a means for reading a codeword from a memory array of one or more memory devices using a read threshold having a first value.
- the counter component 815 may be configured as or otherwise support a means for incrementing a counter of the one or more memory devices in response to reading the codeword, the counter indicating a quantity of bits of the codeword that correspond to a first logic value.
- the error component 820 may be configured as or otherwise support a means for detecting an error in the codeword after reading the codeword.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting the read threshold from the first value to a second value in response to the quantity of bits indicated by the counter.
- the read component 810 may be configured as or otherwise support a means for reading the codeword from the memory array using the read threshold having the second value.
- the comparison component 830 may be configured as or otherwise support a means for comparing the quantity of bits of the codeword that correspond to the first logic value to a second quantity of bits of the codeword that correspond to a second logic value, where adjusting the read threshold from the first value to the second value is in response to the comparison.
- the selection component 835 may be configured as or otherwise support a means for selecting a direction of adjustment, a magnitude of adjustment, or both associated with adjusting the read threshold in response to the comparison.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting the read threshold from the first value to the second value in accordance with the selected direction of adjustment, the magnitude of adjustment, or both.
- the comparison component 830 may be configured as or otherwise support a means for determining that the quantity of bits of the codeword that correspond to the first logic value satisfies a threshold in response to the comparing.
- the selection component 835 may be configured as or otherwise support a means for selecting a direction of adjustment, a magnitude of adjustment, or both associated with adjusting the read threshold in response to the quantity of bits satisfying the threshold.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting the read threshold by a magnitude, a direction, or both corresponding to the quantity of bits indicated by the counter.
- the error component 820 may be configured as or otherwise support a means for determining that the error is an uncorrectable error for an error correction code scheme, where detecting the error is in response to the error correction code scheme, and where adjusting the read threshold is in response to the error being uncorrectable for the error correction code scheme.
- the read threshold includes a voltage threshold, a current threshold, a charge threshold, or any combination thereof.
- the error component 820 may be configured as or otherwise support a means for detecting a second error in the codeword based at least in part on reading the codeword using the read threshold having the second value.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting the read threshold from the second value to a third value on the detected second error.
- the read component 810 may be configured as or otherwise support a means for reading data from a set of memory cells within the one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store a respective plurality of bits each corresponding to a respective level of a plurality of levels each corresponding to a respective subset of read thresholds of the at least three read thresholds.
- the counter component 815 may be configured as or otherwise support a means for incrementing each counter of a set of counters based at least in part on reading the data, the set of counters including a first counter corresponding to a first level of the plurality of levels and a second counter corresponding to a second level of the plurality of levels.
- the error component 820 may be configured as or otherwise support a means for detecting an error in the data based at least in part on reading the data using the at least three read thresholds.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting one or more of the at least three read thresholds based at least in part on the set of counters.
- the read component 810 may be configured as or otherwise support a means for reading the data from the memory array after adjusting the one or more of the at least three read thresholds.
- the counter component 815 may be configured as or otherwise support a means for incrementing the first counter corresponding to the first level, the first counter indicating a quantity of bits stored by the set of memory cells that correspond to a first logic value. In some examples, to support incrementing each counter of the set of counters, the counter component 815 may be configured as or otherwise support a means for incrementing the second counter corresponding to the second level, the second counter indicating a quantity of outputs from one or more logic gates corresponding to a particular logic value.
- the inputs to the one or more logic gates include a first bit stored by a first memory cell and a second bit stored by the first memory cell, the first bit corresponding to the first level and the second bit corresponding to the second level.
- the counter component 815 may be configured as or otherwise support a means for incrementing a third counter corresponding to a third level of the plurality of levels, the third counter indicating a second quantity of outputs from the one or more logic gates corresponding to a particular logic value, where the inputs to the one or more logic gates include a first bit stored by a first memory cell, a second bit stored by the first memory cell, and a third bit stored by the first memory cell.
- the counter component 815 may be configured as or otherwise support a means for where the first bit corresponds to the first level, the second bit corresponds to the second level, and the third bit corresponds to the third level.
- the counter component 815 may be configured as or otherwise support a means for determining a quantity of bits that correspond to a first logic value based at least in part on a combination of counts, each of the counts indicated by a respective counter of the set of counters.
- the combination of counts includes a linear combination of a first count indicated by the first counter, a second count indicated by the second counter, a third count indicated by a third counter, a fourth count indicated by a fourth counter, or any combination thereof.
- a direction, a magnitude, or both of the adjusting of the at least three read thresholds is based at least in part on the quantity of bits that correspond to the first logic value.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting the at least three read thresholds in a direction indicated by the set of counters.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting the at least three read thresholds by a magnitude indicated by the set of counters.
- the selection component 835 may be configured as or otherwise support a means for selecting a direction of adjustment, a magnitude of adjustment, or both associated with the adjusting of the one or more of the at least three read thresholds based at least in part on the set of counters.
- the error component 820 may be configured as or otherwise support a means for detecting a second error in the data based at least in part on reading the data from the memory array after adjusting the one or more of the at least three read thresholds.
- the read threshold component 825 may be configured as or otherwise support a means for readjusting the one or more of the at least three read thresholds based at least in part on detecting the second error.
- the at least three read thresholds each include a respective voltage threshold, a respective current threshold, or any combination thereof.
- the read component 810 may be configured as or otherwise support a means for reading data from a set of memory cells within the one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store at least two bits.
- the counter component 815 may be configured as or otherwise support a means for incrementing each counter of a set of counters based at least in part on reading the data using the at least three read thresholds, where each counter of the set of counters corresponds to a respective read threshold of the at least three read thresholds and indicates a respective quantity of bits of the data corresponding to a first logic value.
- the adjustment component 840 may be configured as or otherwise support a means for adjusting a first quantity indicated by a first counter of the set of counters using a second quantity indicated by a second counter of the set of counters.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting, after adjusting the first quantity indicated by the first counter, one or more of the at least three read thresholds based at least in part on the set of counters.
- the read component 810 may be configured as or otherwise support a means for reading the data from the memory array after adjusting the one or more of the at least three read thresholds.
- the counter component 815 may be configured as or otherwise support a means for determining the first quantity indicated by the first counter, the first quantity indicating a quantity of bits for a first respective threshold of the at least three read thresholds that correspond to the first logic value. In some examples, the counter component 815 may be configured as or otherwise support a means for determining the second quantity indicated by the second counter, the second quantity indicating a quantity of bits for a second respective threshold of the at least three read thresholds that correspond to the first logic value.
- the adjustment component 840 may be configured as or otherwise support a means for subtracting the second quantity from the first quantity. In some examples, the adjustment component 840 may be configured as or otherwise support a means for adjusting a third quantity indicated by a third counter of the set of counters based at least in part on the first quantity, the second quantity, or both.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting a first threshold of the at least three read thresholds in a direction indicated by the first counter, a second threshold of the at least three read thresholds in a direction indicated by the second counter, a third threshold of the at least three read thresholds in a direction indicated by a third counter, a fourth threshold of the at least three read thresholds in a direction indicated by a fourth counter, or any combination thereof.
- the read threshold component 825 may be configured as or otherwise support a means for adjusting a first threshold of the at least three read thresholds by a magnitude indicated by the first counter, a second threshold of the at least three read thresholds by a magnitude indicated by the second counter, a third threshold of the at least three read thresholds by a magnitude indicated by a third counter, a fourth threshold of the at least three read thresholds by a magnitude indicated by a fourth counter, or any combination thereof.
- the read threshold component 825 may be configured as or otherwise support a means for selecting a subset of memory cells from the set of memory cells for each read threshold of the at least three read thresholds, where a respective subset of memory cells corresponds to a respective read threshold and a respective counter, and incrementing the respective counter based on a quantity of the respective subset of memory cells that correspond to the first logic state.
- FIG. 9 shows a flowchart illustrating a method 900 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the operations of method 900 may be implemented by a memory system or its components as described herein.
- the operations of method 900 may be performed by a memory system as described with reference to FIGS. 1 through 8 .
- a memory system may execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally or alternatively, the memory system may perform aspects of the described functions using special-purpose hardware.
- the method may include reading a codeword from a memory array of one or more memory devices using a read threshold having a first value.
- the operations of 905 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 905 may be performed by a read component 810 as described with reference to FIG. 8 .
- the method may include incrementing a counter based at least in part on reading the codeword, the counter indicating a quantity of bits of the codeword that correspond to a first logic value.
- the operations of 910 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 910 may be performed by a counter component 815 as described with reference to FIG. 8 .
- the method may include detecting an error in the codeword after reading the codeword.
- the operations of 915 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 915 may be performed by an error component 820 as described with reference to FIG. 8 .
- the method may include adjusting the read threshold from the first value to a second value based at least in part on the quantity of bits indicated by the counter.
- the operations of 920 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 920 may be performed by a read threshold component 825 as described with reference to FIG. 8 .
- the method may include reading the codeword from the memory array using the read threshold having the second value.
- the operations of 925 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 925 may be performed by a read component 810 as described with reference to FIG. 8 .
- an apparatus as described herein may perform a method or methods, such as the method 900 .
- the apparatus may include, features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for reading a codeword from a memory array of the one or more memory devices using a read threshold having a first value, incrementing a counter based at least in part on reading the codeword, the counter indicating a quantity of bits of the codeword that correspond to a first logic value, detecting an error in the codeword after reading the codeword, adjusting the read threshold from the first value to a second value based at least in part on the quantity of bits indicated by the counter, and reading the codeword from the memory array using the read threshold having the second value.
- Some examples of the method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for comparing the quantity of bits of the codeword that correspond to the first logic value to a second quantity of bits of the codeword that correspond to a second logic value, where adjusting the read threshold from the first value to the second value may be based at least in part on the comparison.
- Some examples of the method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for selecting a direction of adjustment, a magnitude of adjustment, or both associated with adjusting the read threshold based at least in part on the comparison.
- Some examples of the method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting the read threshold from the first value to the second value in accordance with the selected direction of adjustment, the magnitude of adjustment, or both.
- Some examples of the method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining that the quantity of bits of the codeword that correspond to the first logic value satisfies a threshold based at least in part on the comparing and selecting a direction of adjustment, a magnitude of adjustment, or both associated with adjusting the read threshold based at least in part on the quantity of bits satisfying the threshold.
- Some examples of the method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting the read threshold may include operations, features, circuitry, logic, means, or instructions for adjusting the read threshold by a magnitude, a direction, or both corresponding to the quantity of bits indicated by the counter.
- Some examples of the method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining that the error may be an uncorrectable error for an error correction code scheme, where detecting the error may be based at least in part on the error correction code scheme, and where adjusting the read threshold may be based at least in part on the error being uncorrectable for the error correction code scheme.
- the read threshold may be a voltage threshold, a current threshold, a charge threshold or any combination thereof.
- Some examples of the method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for detecting a second error in the codeword based at least in part on reading the codeword using the read threshold having the second value and adjusting the read threshold from the second value to a third value based at least in part on the detected second error.
- FIG. 10 shows a flowchart illustrating a method 1000 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the operations of method 1000 may be implemented by a memory system or its components as described herein.
- the operations of method 1000 may be performed by a memory system as described with reference to FIGS. 1 through 8 .
- a memory system may execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally or alternatively, the memory system may perform aspects of the described functions using special-purpose hardware.
- the method may include reading data from a set of memory cells within one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store a respective plurality of bits each corresponding to a respective level of a plurality of levels each corresponding to a respective subset of read thresholds of the at least three read thresholds.
- the operations of 1005 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1005 may be performed by a read component 810 as described with reference to FIG. 8 .
- the method may include incrementing each counter of a set of counters based at least in part on reading the data, the set of counters including a first counter corresponding to a first level of the plurality of levels and a second counter corresponding to a second level of the plurality of levels.
- the operations of 1010 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1010 may be performed by a counter component 815 as described with reference to FIG. 8 .
- the method may include detecting an error in the data based at least in part on reading the data using the at least three read thresholds.
- the operations of 1015 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1015 may be performed by an error component 820 as described with reference to FIG. 8 .
- the method may include adjusting one or more of the at least three read thresholds based at least in part on the set of counters.
- the operations of 1020 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1020 may be performed by a read threshold component 825 as described with reference to FIG. 8 .
- the method may include reading the data from the memory array after adjusting the one or more of the at least three read thresholds.
- the operations of 1025 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1025 may be performed by a read component 810 as described with reference to FIG. 8 .
- an apparatus as described herein may perform a method or methods, such as the method 1000 .
- the apparatus may include, features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for reading data from a set of memory cells within the one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store a respective plurality of bits each corresponding to a respective level of a plurality of levels each corresponding to a respective subset of read thresholds of the at least three read thresholds, incrementing each counter of a set of counters based at least in part on reading the data, the set of counters including a first counter corresponding to a first level of the plurality of levels and a second counter corresponding to a second level of the plurality of levels, detecting an error in the data based at least in part on reading the data using the at least three read thresholds, adjusting one or more of the at least three read thresholds based at least
- operations, features, circuitry, logic, means, or instructions for incrementing each counter of the set of counters may include operations, features, circuitry, logic, means, or instructions for incrementing the first counter corresponding to the first level, the first counter indicating a quantity of bits stored by the set of memory cells that correspond to a first logic value, and incrementing the second counter corresponding to the second level, the second counter indicating a quantity of outputs from one or more logic gates corresponding to a particular logic value.
- the inputs to the one or more logic gates include a first bit stored by a first memory cell and a second bit stored by the first memory cell, the first bit corresponding to the first level and the second bit corresponding to the second level.
- operations, features, circuitry, logic, means, or instructions for incrementing each counter of the set of counters may include operations, features, circuitry, logic, means, or instructions for incrementing a third counter corresponding to a third level of the plurality of levels, the third counter indicating a second quantity of outputs from the one or more logic gates corresponding to a particular logic value, where the inputs to the one or more logic gates include a first bit stored by a first memory cell, a second bit stored by the first memory cell, and a third bit stored by the first memory cell, and where the first bit corresponds to the first level, the second bit corresponds to the second level, and the third bit corresponds to the third level.
- Some examples of the method 1000 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining a quantity of bits that correspond to a first logic value based at least in part on a combination of counts, each of the counts indicated by a respective counter of the set of counters.
- the combination of counts includes a linear combination of a first count indicated by the first counter, a second count indicated by the second counter, a third count indicated by a third counter, a fourth count indicated by a fourth counter, or any combination thereof.
- a direction, a magnitude, or both of the adjusting of the at least three read thresholds may be based at least in part on the quantity of bits that correspond to the first logic value.
- operations, features, circuitry, logic, means, or instructions for the adjusting may include operations, features, circuitry, logic, means, or instructions for adjusting the at least three read thresholds in a direction indicated by the set of counters.
- operations, features, circuitry, logic, means, or instructions for the adjusting may include operations, features, circuitry, logic, means, or instructions for adjusting the at least three read thresholds by a magnitude indicated by the set of counters.
- Some examples of the method 1000 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for selecting a direction of adjustment, a magnitude of adjustment, or both associated with the adjusting of the one or more of the at least three read thresholds based at least in part on the set of counters.
- Some examples of the method 1000 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for detecting a second error in the data based at least in part on reading the data from the memory array after adjusting the one or more of the at least three read thresholds and readjusting the one or more of the at least three read thresholds based at least in part on detecting the second error.
- the at least three read thresholds each include a respective voltage threshold, a respective current threshold, or any combination thereof.
- FIG. 11 shows a flowchart illustrating a method 1100 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein.
- the operations of method 1100 may be implemented by a memory system or its components as described herein.
- the operations of method 1100 may be performed by a memory system as described with reference to FIGS. 1 through 8 .
- a memory system may execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally or alternatively, the memory system may perform aspects of the described functions using special-purpose hardware.
- the method may include reading data from a set of memory cells within one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store at least two bits.
- the operations of 1105 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1105 may be performed by a read component 810 as described with reference to FIG. 8 .
- the method may include incrementing each counter of a set of counters based at least in part on reading the data using the at least three read thresholds, where each counter of the set of counters corresponds to a respective read threshold of the at least three read thresholds and indicates a respective quantity of bits of the data corresponding to a first logic value.
- the operations of 1110 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1110 may be performed by a counter component 815 as described with reference to FIG. 8 .
- the method may include adjusting a first quantity indicated by a first counter of the set of counters using a second quantity indicated by a second counter of the set of counters.
- the operations of 1115 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1115 may be performed by an adjustment component 840 as described with reference to FIG. 8 .
- the method may include adjusting, after adjusting the first quantity indicated by the first counter, one or more of the at least three read thresholds based at least in part on the set of counters.
- the operations of 1120 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1120 may be performed by a read threshold component 825 as described with reference to FIG. 8 .
- the method may include reading the data from the memory array after adjusting the one or more of the at least three read thresholds.
- the operations of 1125 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1125 may be performed by a read component 810 as described with reference to FIG. 8 .
- an apparatus as described herein may perform a method or methods, such as the method 1100 .
- the apparatus may include, features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for reading data from a set of memory cells within the one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store at least two bits, incrementing each counter of a set of counters based at least in part on reading the data using the at least three read thresholds, where each counter of the set of counters corresponds to a respective read threshold of the at least three read thresholds and indicates a respective quantity of bits of the data corresponding to a first logic value, adjusting a first quantity indicated by a first counter of the set of counters using a second quantity indicated by a second counter of the set of counters, adjusting, after adjusting the first quantity indicated by the first counter, one or more of the at least three read thresholds based at least in part on
- Some examples of the method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining the first quantity indicated by the first counter, the first quantity indicating a quantity of bits for a first respective threshold of the at least three read thresholds that correspond to the first logic value, and determining the second quantity indicated by the second counter, the second quantity indicating a quantity of bits for a second respective threshold of the at least three read thresholds that correspond to the first logic value.
- operations, features, circuitry, logic, means, or instructions for adjusting the first quantity may include operations, features, circuitry, logic, means, or instructions for subtracting the second quantity from the first quantity.
- Some examples of the method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting a third quantity indicated by a third counter of the set of counters based at least in part on the first quantity, the second quantity, or both.
- Some examples of the method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting a first threshold of the at least three read thresholds in a direction indicated by the first counter, a second threshold of the at least three read thresholds in a direction indicated by the second counter, a third threshold of the at least three read thresholds in a direction indicated by a third counter, a fourth threshold of the at least three read thresholds in a direction indicated by a fourth counter, or any combination thereof.
- Some examples of the method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting a first threshold of the at least three read thresholds by a magnitude indicated by the first counter, a second threshold of the at least three read thresholds by a magnitude indicated by the second counter, a third threshold of the at least three read thresholds by a magnitude indicated by a third counter, a fourth threshold of the at least three read thresholds by a magnitude indicated by a fourth counter, or any combination thereof.
- Some examples of the method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for selecting a subset of memory cells from the set of memory cells for each read threshold of the at least three read thresholds, where a respective subset of memory cells corresponds to a respective read threshold and a respective counter, and incrementing the respective counter based on a quantity of the respective subset of memory cells that correspond to the first logic state.
- the terms “electronic communication,” “conductive contact,” “connected,” and “coupled” may refer to a relationship between components that supports the flow of signals between the components. Components are considered in electronic communication with (or in conductive contact with or connected with or coupled with) one another if there is any conductive path between the components that can, at any time, support the flow of signals between the components. At any given time, the conductive path between components that are in electronic communication with each other (or in conductive contact with or connected with or coupled with) may be an open circuit or a closed circuit based on the operation of the device that includes the connected components.
- the conductive path between connected components may be a direct conductive path between the components or the conductive path between connected components may be an indirect conductive path that may include intermediate components, such as switches, transistors, or other components.
- intermediate components such as switches, transistors, or other components.
- the flow of signals between the connected components may be interrupted for a time, for example, using one or more intermediate components such as switches or transistors.
- Coupled refers to condition of moving from an open-circuit relationship between components in which signals are not presently capable of being communicated between the components over a conductive path to a closed-circuit relationship between components in which signals are capable of being communicated between components over the conductive path. If a component, such as a controller, couples other components together, the component initiates a change that allows signals to flow between the other components over a conductive path that previously did not permit signals to flow.
- isolated refers to a relationship between components in which signals are not presently capable of flowing between the components. Components are isolated from each other if there is an open circuit between them. For example, two components separated by a switch that is positioned between the components are isolated from each other if the switch is open. If a controller isolates two components, the controller affects a change that prevents signals from flowing between the components using a conductive path that previously permitted signals to flow.
- the devices discussed herein, including a memory array may be formed on a semiconductor substrate, such as silicon, germanium, silicon-germanium alloy, gallium arsenide, gallium nitride, etc.
- the substrate is a semiconductor wafer.
- the substrate may be a silicon-on-insulator (SOI) substrate, such as silicon-on-glass (SOG) or silicon-on-sapphire (SOP), or epitaxial layers of semiconductor materials on another substrate.
- SOI silicon-on-insulator
- SOG silicon-on-glass
- SOP silicon-on-sapphire
- the conductivity of the substrate, or sub-regions of the substrate may be controlled through doping using various chemical species including, but not limited to, phosphorous, boron, or arsenic. Doping may be performed during the initial formation or growth of the substrate, by ion-implantation, or by any other doping means.
- a switching component or a transistor discussed herein may represent a field-effect transistor (FET) and comprise a three terminal device including a source, drain, and gate.
- the terminals may be connected to other electronic elements through conductive materials, e.g., metals.
- the source and drain may be conductive and may comprise a heavily-doped, e.g., degenerate, semiconductor region.
- the source and drain may be separated by a lightly-doped semiconductor region or channel. If the channel is n-type (i.e., majority carriers are electrons), then the FET may be referred to as a n-type FET.
- the FET may be referred to as a p-type FET.
- the channel may be capped by an insulating gate oxide.
- the channel conductivity may be controlled by applying a voltage to the gate. For example, applying a positive voltage or negative voltage to an n-type FET or a p-type FET, respectively, may result in the channel becoming conductive.
- a transistor may be “on” or “activated” if a voltage greater than or equal to the transistor’s threshold voltage is applied to the transistor gate.
- the transistor may be “off” or “deactivated” if a voltage less than the transistor’s threshold voltage is applied to the transistor gate.
- the functions described herein may be implemented in hardware, software executed by a processor, firmware, or any combination thereof. If implemented in software executed by a processor, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Other examples and implementations are within the scope of the disclosure and appended claims. For example, due to the nature of software, functions described above can be implemented using software executed by a processor, hardware, firmware, hardwiring, or combinations of any of these. Features implementing functions may also be physically located at various positions, including being distributed such that portions of functions are implemented at different physical locations.
- a general-purpose processor may be a microprocessor, but in the alternative, the processor may be any processor, controller, microcontroller, or state machine.
- a processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
- “or” as used in a list of items indicates an inclusive list such that, for example, a list of at least one of A, B, or C means A or B or C or AB or AC or BC or ABC (i.e., A and B and C).
- the phrase “based on” shall not be construed as a reference to a closed set of conditions. For example, an exemplary step that is described as “based on condition A” may be based on both a condition A and a condition B without departing from the scope of the present disclosure.
- the phrase “based on” shall be construed in the same manner as the phrase “based at least in part on.” If used to describe a conditional action or process, the terms “if,” “when,” “based on,” “based at least in part on,” and “in response to,” may be interchangeable.
- Computer-readable media includes both non-transitory computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another.
- a non-transitory storage medium may be any available medium that can be accessed by a general purpose or special purpose computer.
- non-transitory computer-readable media can comprise RAM, ROM, electrically erasable programmable read-only memory (EEPROM), compact disk (CD) ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other non-transitory medium that can be used to carry or store desired program code means in the form of instructions or data structures and that can be accessed by a general-purpose or special-purpose computer, or a general-purpose or special-purpose processor.
- RAM random access memory
- ROM read-only memory
- EEPROM electrically erasable programmable read-only memory
- CD compact disk
- magnetic disk storage or other magnetic storage devices or any other non-transitory medium that can be used to carry or store desired program code means in the form of instructions
- any connection is properly termed a computer-readable medium.
- the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave
- the coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave are included in the definition of medium.
- Disk and disc include CD, laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of computer-readable media.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Methods, systems, and devices for read threshold adjustment techniques for memory are described. A memory device may read a codeword from a memory array of the memory device using a read threshold having a first value. The memory device may increment one or more counters of the memory device based on reading the codeword. The counter may indicate a quantity of bits of the codeword that correspond to a first logic value. The memory device may detect an error, such as an uncorrectable error, in the codeword based on reading the codeword. The memory device may adjust the read threshold from the first value to the second value based on the quantity of bits indicated by the counter. The memory device may read the codeword using the read threshold having the second value.
Description
- The present Application for Patent is a continuation of U.S. Pat. Application No. 17/240,938 by Eisenhuth et al., entitled “READ THRESHOLD ADJUSTMENT TECHNIQUES FOR MEMORY,” filed Apr. 26, 2021, assigned to the assignee hereof, and expressly incorporated by reference herein.
- The following relates generally to one or more systems for memory and more specifically to read threshold adjustment techniques for memory.
- Memory devices are widely used to store information in various electronic devices such as computers, wireless communication devices, cameras, digital displays, and the like. Information is stored by programing memory cells within a memory device to various states. For example, binary memory cells may be programmed to one of two supported states, often corresponding to a
logic 1 or alogic 0. In some examples, a single memory cell may support more than two possible states, any one of which may be stored by the memory cell. To access information stored by a memory device, a component may read, or sense, the state of one or more memory cells within the memory device. To store information, a component may write, or program, one or more memory cells within the memory device to corresponding states. - Various types of memory devices exist, including magnetic hard disks, random access memory (RAM), read-only memory (ROM), dynamic RAM (DRAM), synchronous dynamic RAM (SDRAM), ferroelectric RAM (FeRAM), magnetic RAM (MRAM), resistive RAM (RRAM), flash memory, phase change memory (PCM), 3-dimensional cross-point memory (3D cross point), not-or (NOR) and not-and (NAND) memory devices, and others. Memory devices may be volatile or non-volatile. Volatile memory cells (e.g., DRAM cells) may lose their programmed states over time unless they are periodically refreshed by an external power source. Non-volatile memory cells (e.g., NAND memory cells) may maintain their programmed states for extended periods of time even in the absence of an external power source.
-
FIG. 1 illustrates an example of a system that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. -
FIG. 2 illustrates a plot of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein. -
FIG. 3 illustrates an example of a system that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. -
FIG. 4 illustrates a plot of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein. -
FIG. 5 illustrates an example of a system that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. -
FIG. 6 illustrates a plot of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein. -
FIG. 7 illustrates an example of a system that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. -
FIG. 8 shows a block diagram of a memory device that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. -
FIGS. 9-11 show flowcharts illustrating a method or methods that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein. - A memory device may access a memory cell as part of a read operation. For example, the memory cell may output a signal to a sense component and the sense component may compare the signal to one or more read thresholds (e.g., reference voltages, reference currents, or any combination thereof). The memory device may determine a logic value of the memory cell (e.g., a stored logic value such as 0 or 1 for a binary memory cell configured to store one bit; 00, 01, 10, or 11 for a non-binary cell configured to store two bits; etc.) in response to comparing the signal to the one or more read thresholds. As an illustrative example, the memory device may determine that the memory cell is storing a first logic value (e.g., 0) if the signal is below a read threshold or that the memory cell is storing a second logic value (e.g., 1) if the signal is above the read threshold, although any quantity of thresholds and logic values may be used. In some examples the memory device may read a set of bits from a set of memory cells, where the set of bits may be referred to as a codeword. In some cases, the memory device may detect an uncorrectable error in response to reading one or more codewords from the memory cells. For example, the one or more read thresholds may have shifted over time due to program-erase (PE) cycles, read disturbances, cross-temperature effects, and the like. Such shifts may result in a quantity of errors that an error correction code (ECC) or other error correcting scheme of the memory device is unable to correct.
- In accordance with the techniques described herein, the memory device may implement read threshold adjustment techniques for memory. Such techniques may enable the memory device to accurately shift one or more read thresholds after reading data in which a relatively high quantity of errors is detected (e.g., prior to reading the data again), which may correct at least a subset of errors (e.g., an uncorrectable error may be eliminated or become correctable due to the shifted read thresholds).
- For example, a memory device may be configured to store data within a memory array as codewords that are balanced or at least nearly balanced, where a balanced codeword may include equal numbers of 1s and 0s. For example, a memory device may apply a scrambler (e.g., pseudo-random scrambler) before storing data and store the scrambled data as a codeword, where the codeword may be balanced or nearly balanced in response to the scrambler. In connection with reading data (e.g., codewords) from the memory array, the memory device may include one or more counters configured to track a quantity of logic values in the data.
- In some examples, the memory cells may be examples of single level cells (SLCs) (e.g., the memory cells may each store a single logic value or bit such as a 0 or a 1). In such examples, the memory device may compare a signal from the memory cells to a read threshold to identify a logic value stored by a cell. The memory device may read a set of memory cells as part of reading a codeword. The memory device may increment a counter to track a quantity of a logic values in the codeword (e.g., the counter may be incremented if a 1 is read from a memory cell and thus may indicate a total quantity of 1s in the codeword). If the memory device detects that the codeword includes a relatively high quantity of errors (e.g., a quantity of errors that result in an uncorrectable quantity of errors), the device may be configured to select a direction or magnitude for shifting the one or more read thresholds using the one or more counters. By selecting the direction or magnitude for shifting the read thresholds using the counters, the memory device may reduce a quantity of attempts to read a codeword and reduce wear of the memory device (e.g., extend a life of the device due to predicting a correct direction to shift the read threshold relatively consistently), among other benefits.
- In some examples, the memory device may shift the read threshold in accordance with the quantity of one or more logic values in the data. For example, the memory device may shift the read threshold in a first direction if the quantity of first logic values in the data (e.g., a quantity of 1s) is larger than a second quantity of second logic values in the data (e.g., a quantity of 0s). Alternatively, the memory device may shift the read threshold in a second direction if the quantity of the first logic values is smaller than the quantity of the second logic values. In some cases, the memory device may select a magnitude by which to shift the read threshold in response to the comparison (e.g., if the counter indicates a relatively high quantity, the memory device may shift the read threshold by a relatively large amount).
- In some examples, the memory cells may be examples of non-binary memory cells as described herein, each of which may store at least two bits of information (e.g., 00, 01, 10, or 11 for memory cells each configured to store two bits, 000, 111, 011, etc. for memory cells each configure to store three bits, and so on). Stated alternatively, the memory cells may each include two or more levels for bit storage (e.g., a lower bit level may store a first bit which may be referred to as a lower bit, an upper bit level may store a second bit which may be referred to as an upper bit, an extra bit level may store a third bit which may be referred to as an extra bit, and so on for any quantity of levels). In some examples, a level may be referred to as a page (e.g., an upper level may be referred to as an upper page).
- In some examples, the memory device may use a set of counters associated with the levels of the memory cells. In some cases, each level may be associated with a respective counter of the set of counters. For example, a first level (e.g., a lower level) may correspond to a first counter. The memory device increment the first counter to track a quantity of a logic values in data stored in the first level (e.g., the first counter may be incremented if a 1 is read from a lower level of the memory cell). The memory device may increment a second counter corresponding to a second level of the memory cells (e.g., an upper level) in response to reading data stored in the second level. For example, the second counter may indicate a quantity of memory cells whose stored logic values (e.g., the logic value of a lower bit and an upper bit) result in a logic gate output having a particular value (e.g., a XOR or XNOR logic gate may output a 1 or a 0 based on multiple bits stored by a given memory cell). Such techniques may be used for any quantity of levels and counters. For example, if the memory cell stores three bits using a first, second, and third level respectively, the memory device may increment a third counter corresponding to the third level (e.g., a XOR or XNOR logic gate may output a 1 or a 0 based on a logic value of the lower bit, upper bit, and extra bit stored in a memory cell). Thus, a memory device may use a combination of the counters to evaluate multiple thresholds at once. For example, the memory device may use a linear combination of the counts of the set of counters to determine a direction, magnitude, or both for adjusting the multiple read thresholds.
- Additionally or alternatively, the memory device may use a set of counters associated with a set of read thresholds, where each counter of the set of counters may correspond to a respective read threshold of the set of read thresholds. Each counter may track a quantity of logic values stored by the data for a respective read threshold (e.g., a lower page read threshold may correspond to a counter indicating a quantity of 1s or 0s read from the lower level of the memory cells, two upper bit read thresholds may correspond to two counters indicating a quantity of 1s or 0s read from the upper level of the memory cells, and so on). The memory device may implement logic to determine counts for each threshold. For example, the counter values for the upper bit read thresholds may fail to account for logic values being incorrectly read from another distribution as described herein. Thus, the memory device may adjust a first count by a second count (e.g., an edge or end threshold count may be subtracted from another threshold count to account for distributions improperly leaking across thresholds). The memory device may iteratively adjust counts in order to determine a count for each read threshold, and the memory device may adjust the read thresholds using the adjusted counts.
- Features of the disclosure are initially described in the context of systems, devices, and circuits as described with reference to
FIG. 1 . Features of the disclosure are described in the context of read distributions and systems as described with reference toFIGS. 2-8 . These and other features of the disclosure are further illustrated by and described with reference to an apparatus diagram and flowcharts that relate to read threshold adjustment techniques for memory as described with reference toFIGS. 9-12 . -
FIG. 1 is an example of asystem 100 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. Thesystem 100 includes ahost system 105 coupled with amemory system 110. - A
memory system 110 may be or include any device or collection of devices, where the device or collection of devices includes at least one memory array. For example, amemory system 110 may be or include a Universal Flash Storage (UFS) device, an embedded Multi-Media Controller (eMMC) device, a flash device, a universal serial bus (USB) flash device, a secure digital (SD) card, a solid-state drive (SSD), a hard disk drive (HDD), a dual in-line memory module (DIMM), a small outline DIMM (SO-DIMM), or a non-volatile DIMM (NVDIMM), among other possibilities. - The
system 100 may be included in a computing device such as a desktop computer, a laptop computer, a network server, a mobile device, a vehicle (e.g., airplane, drone, train, automobile, or other conveyance), an Internet of Things (IoT) enabled device, an embedded computer (e.g., one included in a vehicle, industrial equipment, or a networked commercial device), or any other computing device that includes memory and a processing device. - The
system 100 may include ahost system 105, which may be coupled with thememory system 110. In some examples, this coupling may include an interface with ahost system controller 106, which may be an example of a control component configured to cause thehost system 105 to perform various operations in accordance with examples as described herein. Thehost system 105 may include one or more devices, and in some cases may include a processor chipset and a software stack executed by the processor chipset. For example, thehost system 105 may include an application configured for communicating with thememory system 110 or a device therein. The processor chipset may include one or more cores, one or more caches (e.g., memory local to or included in the host system 105), a memory controller (e.g., NVDIMM controller), and a storage protocol controller (e.g., PCIe controller, serial advanced technology attachment (SATA) controller). Thehost system 105 may use thememory system 110, for example, to write data to thememory system 110 and read data from thememory system 110. Although onememory system 110 is shown inFIG. 1 , thehost system 105 may be coupled with any quantity ofmemory systems 110. - The
host system 105 may be coupled with thememory system 110 via at least one physical host interface. Thehost system 105 and thememory system 110 may in some cases be configured to communicate via a physical host interface using an associated protocol (e.g., to exchange or otherwise communicate control, address, data, and other signals between thememory system 110 and the host system 105). Examples of a physical host interface may include, but are not limited to, a SATA interface, a UFS interface, an eMMC interface, a peripheral component interconnect express (PCIe) interface, a USB interface, a Fiber Channel interface, a Small Computer System Interface (SCSI), a Serial Attached SCSI (SAS), a Double Data Rate (DDR) interface, a DIMM interface (e.g., DIMM socket interface that supports DDR), an Open NAND Flash Interface (ONFI), and a Low Power Double Data Rate (LPDDR) interface. In some examples, one or more such interfaces may be included in or otherwise supported between ahost system controller 106 of thehost system 105 and amemory system controller 115 of thememory system 110. In some examples, thehost system 105 may be coupled with the memory system 110 (e.g., thehost system controller 106 may be coupled with the memory system controller 115) via a respective physical host interface for eachmemory device 130 included in thememory system 110, or via a respective physical host interface for each type ofmemory device 130 included in thememory system 110. -
Memory system 110 may include amemory system controller 115 and one ormore memory devices 130. Amemory device 130 may include one or more memory arrays of any type of memory cells (e.g., non-volatile memory cells, volatile memory cells, or any combination thereof). Although two memory devices 130-a and 130-b are shown in the example ofFIG. 1 , thememory system 110 may include any quantity ofmemory devices 130. Further, wherememory system 110 includes more than onememory device 130,different memory devices 130 withinmemory system 110 may include the same or different types of memory cells. - The
memory system controller 115 may be coupled with and communicate with the host system 105 (e.g., via the physical host interface), and may be an example of a control component configured to cause thememory system 110 to perform various operations in accordance with examples as described herein. Thememory system controller 115 may also be coupled with and communicate withmemory devices 130 to perform operations such as reading data, writing data, erasing data, or refreshing data at amemory device 130, and other such operations, which may generically be referred to as access operations. In some cases, thememory system controller 115 may receive commands from thehost system 105 and communicate with one ormore memory devices 130 to execute such commands (e.g., at memory arrays within the one or more memory devices 130). For example, thememory system controller 115 may receive commands or operations from thehost system 105 and may convert the commands or operations into instructions or appropriate commands to achieve the desired access of thememory devices 130. And in some cases, thememory system controller 115 may exchange data with thehost system 105 and with one or more memory devices 130 (e.g., in response to or otherwise in association with commands from the host system 105). For example, thememory system controller 115 may convert responses (e.g., data packets or other signals) associated with thememory devices 130 into corresponding signals for thehost system 105. - The
memory system controller 115 may be configured for other operations associated with thememory devices 130. For example, thememory system controller 115 may execute or manage operations such as wear-leveling operations, garbage collection operations, error control operations such as error-detecting operations or error-correcting operations, encryption operations, caching operations, media management operations, background refresh, health monitoring, and address translations between logical addresses (e.g., logical block addresses (LBAs)) associated with commands from thehost system 105 and physical addresses (e.g., physical block addresses) associated with memory cells within thememory devices 130. - The
memory system controller 115 may include hardware such as one or more integrated circuits or discrete components, a buffer memory, or a combination thereof. The hardware may include circuitry with dedicated (e.g., hard-coded) logic to perform the operations ascribed herein to thememory system controller 115. Thememory system controller 115 may be or include a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a digital signal processor (DSP)), or any other suitable processor or processing circuitry. - The
memory system controller 115 may also include alocal memory 120. In some cases, thelocal memory 120 may include read-only memory (ROM) or other memory that may store operating code (e.g., executable instructions) executable by thememory system controller 115 to perform functions ascribed herein to thememory system controller 115. In some cases, thelocal memory 120 may additionally or alternatively include static random access memory (SRAM) or other memory that may be used by thememory system controller 115 for internal storage or calculations, for example, related to the functions ascribed herein to thememory system controller 115. Additionally or alternatively, thelocal memory 120 may serve as a cache for thememory system controller 115. For example, data may be stored in thelocal memory 120 if read from or written to amemory device 130, and may be available within thelocal memory 120 for subsequent retrieval for or manipulation (e.g., updating) by the host system 105 (e.g., with reduced latency relative to a memory device 130) in accordance with a cache policy. - Although the example of
memory system 110 inFIG. 1 has been illustrated as including thememory system controller 115, in some cases, amemory system 110 may not include amemory system controller 115. For example, thememory system 110 may additionally or alternatively rely upon an external controller (e.g., implemented by the host system 105) or one or morelocal controllers 135, which may be internal tomemory devices 130, respectively, to perform the functions ascribed herein to thememory system controller 115. In general, one or more functions ascribed herein to thememory system controller 115 may in some cases instead be performed by thehost system 105, alocal controller 135, or any combination thereof. In some cases, amemory device 130 that is managed at least in part by amemory system controller 115 may be referred to as a managed memory device. An example of a managed memory device is a managed NAND (MNAND) device. - A
memory device 130 may include one or more arrays of non-volatile memory cells. For example, amemory device 130 may include NAND (e.g., NAND flash) memory, ROM, phase change memory (PCM), self-selecting memory, other chalcogenide-based memories, ferroelectric RAM (FeRAM), magneto RAM (MRAM), NOR (e.g., NOR flash) memory, Spin Transfer Torque (STT)-MRAM, conductive bridging RAM (CBRAM), resistive random access memory (RRAM), oxide based RRAM (OxRAM), and electrically erasable programmable ROM (EEPROM). Additionally or alternatively, amemory device 130 may include one or more arrays of volatile memory cells. For example, amemory device 130 may include random access memory (RAM) memory cells, such as dynamic RAM (DRAM) memory cells, synchronous DRAM (SDRAM) memory cells, or SRAM memory cells. - In some examples, a
memory device 130 may include (e.g., on a same die or within a same package) alocal controller 135, respectively, which may execute operations on one or more memory cells of thememory device 130. Alocal controller 135 may operate in conjunction with amemory system controller 115 or may perform one or more functions ascribed herein to thememory system controller 115. - In some cases, a
memory device 130 may be or include a NAND device (e.g., NAND flash device). Amemory device 130 may be or include amemory die 160. For example, in some cases, amemory device 130 may be a package that includes one or more dies 160. Adie 160 may, in some examples, be a piece of electronics-grade semiconductor cut from a wafer (e.g., a silicon die cut from a silicon wafer). Each die 160 may include one ormore planes 165, and eachplane 165 may include a respective set ofblocks 170, where eachblock 170 may include a respective set ofpages 175, and eachpage 175 may include a set of memory cells. - In some cases, a
NAND memory device 130 may include memory cells configured to each store one bit of information, which may be referred to as SLCs. Additionally or alternatively, aNAND memory device 130 may include memory cells configured to each store multiple bits of information, which may be referred to as MLCs if configured to each store two bits of information, as tri-level cells (TLCs) if configured to each store three bits of information, as quad-level cells (QLCs) if configured to each store four bits of information, or more generically as multiple-level or multi-bit memory cells. Multiple-level memory cells may provide greater density of storage relative to SLC memory cells but may, in some cases, involve narrower read or write margins or greater complexities for supporting circuitry. - In some cases,
planes 165 may refer to groups ofblocks 170, and in some cases, concurrent operations may take place withindifferent planes 165. For example, concurrent operations may be performed on memory cells withindifferent blocks 170 so long as thedifferent blocks 170 are indifferent planes 165. In some cases, performing concurrent operations indifferent planes 165 may be subject to one or more restrictions, such as identical operations being performed on memory cells withindifferent pages 175 that have the same page address within their respective planes 165 (e.g., related to command decoding, page address decoding circuitry, or other circuitry being shared across planes 165). - In some cases, a
block 170 may include memory cells organized into rows (pages 175) and columns (e.g., strings, not shown). For example, memory cells in asame page 175 may share (e.g., be coupled with) a common word line, and memory cells in a same string may share (e.g., be coupled with) a common digit line (which may alternatively be referred to as a bit line). - For some NAND architectures, memory cells may be read and programmed (e.g., written) at a first level of granularity (e.g., at the page level of granularity) but may be erased at a second level of granularity (e.g., at the block level of granularity). That is, a
page 175 may be the smallest unit of memory (e.g., set of memory cells) that may be independently programmed or read (e.g., programed or read concurrently as part of a single program or read operation), and ablock 170 may be the smallest unit of memory (e.g., set of memory cells) that may be independently erased (e.g., erased concurrently as part of a single erase operation). Further, in some cases, NAND memory cells may be erased before they can be rewritten with new data. Thus, for example, a usedpage 175 may in some cases not be updated until theentire block 170 that includes thepage 175 has been erased. - The
system 100 may include any quantity of non-transitory computer readable media that support read threshold adjustment techniques for memory. For example, thehost system 105, thememory system controller 115, or amemory device 130 may include or otherwise may access one or more non-transitory computer readable media storing instructions (e.g., firmware) for performing the functions ascribed herein to thehost system 105,memory system controller 115, ormemory device 130. For example, such instructions, if executed by the host system 105 (e.g., by the host system controller 106), by thememory system controller 115, or by a memory device 130 (e.g., by a local controller 135), may cause thehost system 105,memory system controller 115, ormemory device 130 to perform one or more associated functions as described herein. - The
system 100 may implement read threshold adjustment techniques as described herein. For example, the memory system 110 (or the host system 105) may adjust one or more read thresholds using one or more counters as described herein, which may enable thememory system 110 to correct one or more errors (e.g., otherwise uncorrectable errors), reduce a quantity of reading operations for a codeword, extend a life of thememory system 110, or any combination thereof, among other benefits. For example, thememory system 110 may include one or more counters configured to track a quantity of logic values in data. Thememory system 110 may be configured to select a direction or magnitude for shifting the one or more read thresholds using the one or more counters. In some examples, thememory devices 130 may include SLCs or multiple-bit cells (e.g., MLCs, TLCs, QLCs, and so on). Though certain examples may be described herein in the context of NAND memory cells, it is to be understood that the techniques described herein may be applied in the context of any type of memory cells. -
FIG. 2 illustrates aplot 200 of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein. Theplot 200 may illustrate examples of operations implemented by asystem 100 as described with reference toFIG. 1 or another system as described herein. Theplot 200 may include avoltage axis 205 and aquantity axis 210 for illustrative clarity, although other metrics may be used (e.g., a current axis or a charge axis rather than a voltage axis). Generally, theplot 200 may illustrateexample distributions 215 for the voltages of signals read from (e.g., in response to reading) memory cells in a memory array and anexample adjustment 225 of athreshold 220 using one or more counters. - The
plot 200 may include aread threshold 220, which may be an example of a voltage threshold, though a current threshold or charge threshold may additionally or alternative be used. Theread threshold 220 may be used as part of one or more access operations (e.g., read operations). For example, a memory device may receive a command to read data from an address of a memory array. The data may be a codeword indicated by an address in the command. The memory device may access memory cells associated with the codeword (e.g., each memory cell included in the address) and compare an output of a memory cell to theread threshold 220. For example, if a sense component of the memory device detects a voltage lower than the readthreshold 220, the memory device may read the corresponding memory cell as storing a first logic value (e.g., a 0 or a 1). Alternatively, if the sense component detects a voltage higher than the readthreshold 220, the memory device may read the corresponding memory cell as storing a second logic value (e.g., a 1 or a 0). - The
plot 200 may include distribution 215-a and distribution 215-b. Thedistributions 215 may illustrate the voltages of signals sensed for a quantity of memory cells from which a codeword is read that are storing a respective logic value. For example, a point on the distribution 215-a may represent a quantity of memory cells storing a respective voltage value. The memory cells with voltages on the distribution 215-a may be examples of memory cells previously written with a first logic value (e.g., 1) and the distribution 215-b may be examples of memory cells previously written with a second logic value (e.g., 0). Although shown as parabolic curves for illustrative clarity, it is to be understood that thedistributions 215 may be any shape or associated with any logic value. - The memory device may implement one or more ECC schemes to detect or correct errors in the data. For example, the memory device may use error-correcting cyclic codes such as Bose, Chaudhuri, and Hocquenghen (BCH) codes. Additionally or alternatively, the memory device may use linear error-correcting codes, such as low-density parity-check (LDPC) codes. It is to be understood that any type of code-based technique or other technique for error correction or detection may be implemented by the memory device. User data may be stored in the memory array as one or more codewords. For example, ECC bits may be generated using the ECC scheme and the codeword may include the user data bits and ECC bits (e.g., parity bits).
- In some examples, the memory system may implement one or more encoders (e.g., as part of one or
more memory devices 130 or a memory system controller 115), which in some cases may be referred to as scramblers, to generate balanced codewords in response to user data to be written to the memory array, such that the memory array may store balanced or nearly balanced codewords representative of the user data. As an illustrative example, the memory system may use a scrambler or other encoder to generate a sequence of bits from user data where each bit has an equal probability of being a 1 or a 0. Thus, a memory device may store user data (e.g., regardless of the original user data sequence of bits) in the form of codewords in which bits having a relatively similar probability of being a 0 or a 1, which may improve a reliability and lifespan of the memory device and reduce read disturbance. - In some examples, the
read threshold 220 may deviate from a desired value, which may result in one or more errors in the data. Viewed alternatively, thedistributions 215 may shift over time such that an ideal location of theread threshold 220 at some later time may be different from an ideal location of theread threshold 220 at some prior time. For example, the ideal location of readthreshold 220 may be shifted over time due to PE cycles, read disturbances, cross temperature effects, or a combination thereof (e.g., thedistributions 215 may shift over time due to PE cycles, read disturbances, cross temperature effects, or a combination thereof). Such shifts may result in a portion of the memory cells being read as incorrect values. For example, memory cells of the distribution 215-b (e.g., written to a second logic value such as a 1 or a 0) that are located to the left of theread threshold 220 may be incorrectly read as memory cells of the distribution 215-a. As an illustrative example, memory cells written as a second logic value (e.g., 0) may be read as the first logic value (e.g., 1) due to the voltage of those memory cells being less than the readthreshold 220. In some examples, such a shift in theread threshold 220 may introduce a relatively large quantity of errors in a codeword, which may result in an detectable but uncorrectable error (e.g., more erroneous bits than an ECC scheme of the memory device may correct, but not so many erroneous bits that the ECC scheme of the memory device fails to detect the error, such as a two-bit error if the ECC scheme is a single-error-correcting double-error-detecting (SECDED) scheme, for example). - Accordingly, the memory system may adjust the
read threshold 220 using one or more counters. For example, the memory system may use a pseudo-random or random scrambler to encode user data to a codeword (e.g., the memory system may include the scrambler, for example, in a controller of the memory system or elsewhere in the memory system). In such an example, the probability that a bit of the codeword is a first logic value may be 0.5, although any probabilities or scramblers may be used. The decoder of the memory system may include a counter configured to count the quantity of bits having a particular logic value within a codeword read from the memory. For example, a counter may increment each time a 1 is read as part of the codeword, and the counter value may indicate the quantity of 1s in the codeword. Alternatively, the counter may track the quantity of bits that are of a second logic value (e.g., a quantity of 0s in the codeword). - For a given codeword, the memory system may compare the quantity (e.g., count) of bits having a first logic value indicated by the counter to a threshold or a quantity of bits having a second logic value. For example, the memory system may compare the quantity to a difference between the total quantity of bits in the codeword and the quantity (e.g., if a codeword has 9312 bits, the memory system may compare the quantity to 9312 minus the quantity, as one example). It is to be understood that these and any other specific numbers provided herein are examples provided solely for the sake of illustrative clarity and are not limiting of the claims. Additionally or alternatively, the memory system may compare the quantity to one or more threshold quantities (e.g., the memory system may determine whether the quantity of bits having a first logic value is greater than or less than half the bits in the codeword, or greater than or less than half the bits in the codeword by at least some amount).
- The memory system may perform an
adjustment 225 in response to the comparison. For example, the memory system may select a direction, a magnitude, or both to adjust (e.g., shift) theread threshold 220 in response to the quantity indicated by the counter. As an illustrative example, the memory system may determine that the quantity of 1s in the codeword is greater than the quantity of 0s or satisfies a threshold quantity of 1s. The memory system may shift theread threshold 220 in a direction associated with the determination. For instance, the memory system may shift theread threshold 220 to the left (e.g., adjust a reference voltage for read operations to be relatively smaller) such that theread threshold 220 is located relatively closer to the distribution 215-a. Additionally or alternatively, the memory system may determine a magnitude of theadjustment 225 in response to the counter (e.g., a table may indicate the magnitude, the magnitude may scale with the quantity such that a relatively large quantity of 1s in the codeword corresponds to a relativelylarge adjustment 225, etc.). Although described as adjusting to the left (e.g., towards distribution 215-a) and tracking the quantity of the first logic value in the codeword for illustrative clarity, any additional or alternative variations may be implemented by the memory system (e.g., the memory system may adjust to the right in response to a counter, the memory system may track the quantity of second logic values, and the like). In some examples, the memory system may perform the techniques described herein regardless of whether an error is uncorrectable or not (e.g., a relatively high quantity of errors may satisfy a threshold and the memory system may proactively shift the thresholds using the techniques described herein to reduce the quantity of errors). - The memory system may perform another read operation after adjusting the
read threshold 220. For example, the memory system may read the codeword from the memory cells using the adjustedread threshold 220. By adjusting theread threshold 220 in the selected direction or magnitude, the second read operation may result in a relatively higher or lower quantity of the first logic value. For example, a lower quantity of 1s may be read due to the read threshold being shifted such that memory cells of the distribution 215-b that were incorrectly read as 1s in the first read operation due to the initial location of theread threshold 220 now being correctly read as 0s due to the shifted location of theread threshold 220. Accordingly, a quantity of errors may be reduced such that errors may be eliminated or an ECC code may correct any remaining errors. In some examples, the memory system may perform additional oralternative adjustments 225. For example, if the second read operation results in another uncorrectable error, the memory system may repeat the comparison and adjustment process until a successful read occurs. Alternatively, the memory system may perform an adjustment in an opposite direction in response to the second uncorrectable error (e.g., the memory system may shift the threshold to the left for a second operation and shift the threshold to the right of theinitial read threshold 220 for a third operation in response to the second operation including an uncorrectable error). - As one illustrative example, the memory system may detect an error using BCH code (e.g., an ECC decoder may be an example of a BCH decoder). The user data size may be 1 Kilobyte (KB) (e.g., 8000 bits) and a size of the codeword may be 9312 bits, which may support correction of up to 80 errors in the data. In other words, for an uncorrectable error to occur, 81 or more bits of the data may be flipped to an incorrect value. The memory system may determine that a first quantity of the bits corresponding to a first logic value is greater than a second quantity of the bits corresponding to a second logic value (e.g., the codeword was read with more 1s than 0s or more 0s than 1s). In such cases, there may be a relatively high probability that the correct direction to adjust the
read threshold 220 is the direction that results in a relatively higher quantity of bits corresponding to the second logic value (e.g., shifting the threshold left to result in more 0s from the distribution 215-b). In other words, the memory system may shift the threshold in a direction that results in a high quantity of bits corresponding to the second logic value due to determining that the first quantity of bits if higher than the second quantity of bits. For example, in order for the codeword to be uncorrectable and the direction indicated by the counter to be incorrect, there may be at least -
- bits that correspond to the first logic value in the data (e.g., in a codeword), where T represents the quantity of bits the ECC code can correct. The probability that the original scrambled codeword included such a quantity of bits having the first logic value may be relatively low, and the probability that the
threshold 220 shifting to reduce the quantity of 1s (e.g., to the left) is the correct direction may accordingly be relatively high. - As another illustrative example, the memory system may detect an error using LDPC code (e.g., an ECC decoder may be an example of a LDPC decoder). In such examples, the code may correspond to a set quantity of errors that render codeword uncorrectable. In such examples, the probability that a direction is a correct direction may be calculated as a product of the probability that the original scrambled codeword includes the indicated quantity of bits with a first logic value and the probability that the quantity of bits may result in an uncorrectable error.
- In some examples, the memory system may calculate such probabilities described herein and shift the
threshold 220 in response to the calculation. For example, the memory system may use a binomial formula or other calculation techniques to determine a probability that a direction is correct, and select the direction in response to the probability. Additionally or alternatively, the memory system may be pre-configured with thresholds and may adjust thethreshold 220 in response to the pre-configured thresholds. For example, the memory system may be configured to shift a direction to reduce the greater quantity of bits (e.g., if quantity of 1s are greater than quantity of 0s in the codeword, shift to alower voltage threshold 220 such that the quantity of 1s are reduced). Additionally or alternatively, the memory system may be configured to store and consult a look-up table and may adjust thethreshold 220 in a direction, magnitude, or both indicated in the table by a field corresponding to a respective counter value or range of counter values. The different counter values associated with the different entries of the look-up table may be in response to such probabilities as determined prior to configuration of the memory system or in response to experimental techniques, for example. -
FIG. 3 illustrates an example of asystem 300 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. In some examples, thesystem 300 may be an example of or include aspects of thesystem 100 and/or theplot 200 as described with reference toFIGS. 1 and 2 . For example, thesystem 300 may includememory 305, which may be example of a memory array as described herein (e.g., NAND SLC memory cells). Thesystem 300 may illustrate an example implementation of adjusting a read threshold using adecoder 310, acounter 315, and acomparison component 320. Although shown as separate for illustrative clarity, the various components of thesystem 300 may be combined or located different than shown (e.g., thedecoder 310 may include thecounter 315 and thecomparison component 320 in logic). - In some examples, the
system 300 may include anencoder 335. Theencoder 335 may be configured to scramble user data into a codeword as described herein with reference toFIG. 2 . For example, theencoder 335 may receive user data and generate a balanced sequence of 0’s and 1’s using a scrambler as described herein. Theencoder 335 may additionally or alternatively be configured to encode the codeword using an ECC code, to support an error detection or correction procedure if later reading the codeword from thememory 305. - The
system 300 may show a data path for performing an adjustment 325 of a read threshold using the techniques described herein with reference toFIG. 2 . For example, data (e.g., a codeword) may be read from thememory 305. The data may be input to thedecoder 310 and thecounter 315. Thedecoder 310 may detect anuncorrectable error 330 in response to decoding the data. In some examples, thedecoder 310 may include a descrambler in addition or in the alternative to the ECC decoder. For example, thedecoder 310 may be configured to descramble the codeword to the original user data as part of the read operation. Additionally or alternatively, thecounter 315 may track a quantity of bits in the data that correspond to a first logic value (e.g., the counter may increment each time a 1 or a 0 is read from a memory cell) as described with reference toFIG. 2 . - The
comparison component 320 may receive a quantity of bits corresponding to the first logic value from thecounter 315, an indication that the data includes an uncorrectable error from thedecoder 310, or both. For example, if thedecoder 310 detects that theerrors 330 in the data are uncorrectable (e.g., the data includes an uncorrectable quantity of errors for an ECC scheme), thedecoder 310 may indicate theerror 330 to thecomparison component 320. Thecomparison component 320 may compare the quantity of bits to a second quantity of bits (e.g., a quantity of 0s to a quantity of 1s). In some examples, thecomparison component 320 may compare the quantity of bits indicated by thecounter 315 to one or more thresholds (e.g., determine whether the quantity of bits satisfies, exceeds, or falls below a threshold such as half the bits of the codeword, or some number of other thresholds in order to identify an extent to which the codeword is unbalanced as read). - The memory system may perform an adjustment 325 using a result from the
comparison component 320. For example, if thecomparison component 320 indicates that the quantity of bits with the first logic value is greater than the quantity of bits with the second logic value or satisfies a threshold, the memory system may select a direction to reduce the quantity of bits with the first logic value for a subsequent read operation. As an illustrative example, the memory system may determine that the quantity of 1s is greater than the quantity of 0s in a codeword or satisfies a threshold quantity. The memory system may also determine that theerror 330 is uncorrectable. For example, a logic gate may receive the indication that theerror 330 is uncorrectable and an indication of whether the quantity of bits with a first logic value is greater or less than the quantity of bits with a second logic value. The logic gate may output a signal indicating that theerror 330 is uncorrectable and a first result of the comparison component 320 (e.g., more 1s than 0s). In such examples, the memory system may perform adjustment 325-a (e.g., the memory system may shift the threshold to obtain a relatively higher quantity of 0s). The direction of the shift, the magnitude of the shift, or both may be in response to the outputs of thecounter 315 and thecomparison component 320. Alternatively, the logic gate may output a signal indicating that theerror 330 is uncorrectable and a second result of the comparison component 320 (e.g., more 0s than 1s). In such examples, the memory system may perform adjustment 325-b (e.g., the memory system may shift the threshold to obtain a relatively higher quantity of 1s). Accordingly, the memory system may adjust the read threshold from a first value to a second value, where the direction of the adjustment, the magnitude of the adjustment, or both may be in response to the outputs of thecounter 315 and thecomparison component 320. After adjusting the read threshold, the memory system may read the codeword using the read threshold having the second value. Such process may repeat as needed until a codeword is read that is error-free or correctable by thedecoder 310, or until a threshold number of attempts (codeword reads) are performed. -
FIG. 4 illustrates a plot 400 of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein. The plot 400 may be an example of operations implemented by asystem 100 as described with reference toFIG. 1 . The plot 400 may implement aspects of theplot 200 or thesystem 300 as described with reference toFIGS. 2 and 3 , respectively. Generally, the plot 400 may illustrateexample distributions 415 for MLC data in a memory array. As an illustrative example, the plot 400 showsthresholds 420 anddistributions 415 for memory cells storing two bits, although aspects of the teachings herein may be extended to memory cells each storing any quantity of bits. - The plot 400 may include a read threshold 420-a, a read threshold 420-b, and a read threshold 420-c, which may be examples of voltage thresholds, though current thresholds or charge thresholds may additional or alternatively be used. A memory system may read memory cells using the read
thresholds 420. For example, the memory system may compare a voltage of a signal generated in response to reading a memory cell to the readthresholds 420 and identify a logic value in response to comparing the voltage. - In some examples, the
different thresholds 420 may be associated with respective bits stored in the memory cell. As an example of a MLC memory cell storing two bits, the threshold 420-b may be associated with a respective first bit of the memory cell, which may be referred to as a “lower bit” or a “lower page bit” of the memory cell. In some cases, the threshold 420-b may be referred to as a “lower page threshold.” The threshold 420-a and the threshold 420-c may be associated with a respective second bit of the memory cell, which may be referred to as an “upper bit” or an “upper page bit” of the memory cell. In some cases, the thresholds 420-a and 420-c may be referred to as “upper page thresholds.” As an illustrative example, if a voltage signal of a memory cell is less than the threshold 420-b the memory cell may read the respective first bit (e.g., lower page bit) as a 1. The memory system may read the respective second bit (e.g., upper page bit) using the read threshold 420-a if the respective first bit is 1. For example, the memory system may read the second bit as a 1 if the voltage signal is less than the threshold 420-a and a 0 if the voltage signal is greater than the threshold 420-a. As another illustrative example, the memory system may read the respective first bit as a 0 if the voltage signal is greater than the read threshold 420-b. The memory system may read the respective second bit as a 0 if the voltage signal is less than the read threshold 420-c and a 1 if the voltage signal is greater than the read threshold 420-c. - In such examples, the distribution 415-a may correspond to memory cells written with a logic value of 11 (e.g., a lower page bit of 1 and an upper page bit of 1), the distribution 415-b may correspond to memory cells written with a logic value of 01 (e.g., a lower page bit of 1 and an upper page bit of 0), the distribution 415-c may correspond to memory cells written with a logic value of 00 (e.g., a lower page bit of 0 and an upper page bit of 0), and the distribution 415-c may correspond to memory cells written with a logic value of 10 (e.g., a lower page bit of 0 and an upper page bit of 1). In some examples, the logic values,
distributions 415, and readthresholds 420 may be different than described (e.g.,distributions 415 and readthresholds 420 may be associated with different logic values, lower page bits, or upper page bits). Although shown as parabolic curves for illustrative clarity, it is to be understood that thedistributions 415 may be any shape or associated with any logic value. - In some examples, one or more of the
distributions 415 may become shifted over time such that the one ormore read thresholds 420 deviate from an ideal read threshold, which may result in one or more errors in the data. For example, thedistributions 415 may become shifted over time due to PE cycles, read disturbances, cross temperature effects, or a combination thereof. The shift may result in a portion of the memory cells being read as storing incorrect values. For example, memory cells of the distribution 215-b (e.g., written to a second logic value such as a 01) that are located to the left of the read threshold 420-a may be incorrectly read as memory cells of the distribution 215-a, memory cells of the distribution 215-c (e.g., written to a third logic value such as 00) that are located to the left of the read threshold 420-b may be incorrectly read (e.g., read as 01), and the like. As an illustrative example, memory cells written with a second logic value (e.g., 01) may be read as storing the first logic value (e.g., 11) due to the voltage of those memory cells being less than the read threshold 420-a. In some examples, such a shift in the readthresholds 420 may introduce a relatively large quantity of errors in a codeword, which may result in an error that is detectable but uncorrectable by an ECC scheme of the memory system. - Accordingly, the memory system may adjust one or
more read thresholds 420 using one or more counters. For example, the memory system may use a pseudo-random or random scrambler to encode user data to generate data, which may be stored in a memory array as a representation of the user data. In such an example, the probability that a bit of the data may correspond to one of four logic values may be 0.25, although any quantity of bits, logic values, probabilities, or scramblers may be used. The decoder of the memory system may include one or more counters configured to increment as the memory system reads the data from the memory. - In some examples, such as for multi-bit cells (e.g., MLC, TLC, QLC, etc.) configured to store two or more bits of information, the memory system may implement multiple counters. For example, a memory cell of the set of memory cells may include two or more levels for bit storage. In the example of a MLC cell shown in
FIG. 4 , a lower bit may be stored on a lower page (e.g., a lower level) of the memory cell and an upper bit may be stored in an upper page (e.g., an upper level) of the memory cell, as described above. As an illustrative example, if the lower bit has a logic value of 1, the voltage of the memory cell may be written to the left of the lower page read threshold 420-b. In such an example, the upper bit may be a logic value of 1 if written to the left of the upper page read threshold 420-a or 0 if written to the right. As another example, the lower bit may have a logic value of 0 and written to the right of the lower page read threshold 420-b and an upper bit value of 0 may be written to the left of the upper page read threshold 420-c. In some examples, data may be stored in the memory cells such that a codeword is written and read on a respective level (e.g., each bit of a codeword may be stored on a lower level of the memory cells and each bit of a second codeword may be stored on an upper level of the memory cells). - In some examples, the memory system may use a set of counters associated with the levels of the memory cells. For example, each level (e.g., page) may be associated with a respective counter. In the example of
FIG. 4 with an upper level and a lower level, the memory system may include a first counter associated with the read threshold 420-b and a second counter associated with the read thresholds 420-a and 420-c. In such examples, the memory system may increment the first counter in a SLC manner. For example, the first counter may be incremented to track a quantity of memory cells storing a lower page bit logic value of 0 or 1. - The memory system may increment the second counter using one or more logic gates. For example, the memory system may include logic circuitry (e.g., one or more Boolean or other logic gates) and may increment a counter in response to an output of the logic circuitry. The memory system may adjust the
thresholds 420 using the counter indicating a quantity of memory cells having a first result of the logic gate (e.g., the memory system may compare the quantity to a threshold or a second quantity of memory cells having a second result and adjust thethresholds 420 associated with the counter using the comparison). In some cases, the logic circuitry may include an XNOR logic gate. For example, the upper page bit and the lower page bit of a same memory cell may be input to the XNOR logic gate. The XNOR logic gate may be configured to output a first logic value (e.g., 1) if two inputs are the same and output a second logic value (e.g., 0) if the two inputs are different, the two inputs including the respective first bit of a memory cell (e.g., the lower page bit) and the respective second bit of the memory cell (e.g., the upper page bit). Additionally or alternatively, other logic gates may be used for one or more counters (e.g., XOR logic gates). For example, the XOR logic gate may be configured to output a first logic value (e.g., 1) if the two inputs (e.g., the lower page bit and the upper page bit) are different. - Accordingly, the memory system may implement an algorithm to determine a direction or magnitude of adjustment of the read
thresholds 420 for any quantity of levels (e.g., bits stored by a memory cell) using the values indicated by the counters. The algorithm may include determining excess logic values (e.g., excess 1s) stored across each level and shifting the readthresholds 420 in a magnitude or direction in response to the total number of excess 1s or 0s. For example, the memory system may increment the first counter in the SLC manner as described above (e.g., the memory system may count the quantity of 1s which may be used to determine excess 1s in the lower bit level of the data). The memory system may increment the second counter using a logic operation (e.g., XNOR) of the lower bit and the upper bit. Thus, the memory system can determine excess bits stored to the right of the read thresholds 420-a and 420-c. The memory system may perform such operations for further counters if more than two bits are stored in the cell (e.g., for TLC, the memory system may XOR all three bits as inputs, track the quantity of 1s, and subtract half the memory cells in the data or codeword to calculate the number of bits to the left of the 4 extra bit level thresholds). Thus, the memory system may obtain a first count associated with the first counter indicating excess 1s of the lower level, a second count associated with a second counter indicating excess 1s in the upper level, and so on. For example, the memory system may perform a linear combination of the values indicated by the counters which will indicate the total number of excess 1s across each bit level. For example, the first count may be the value of the counter, the second count may be the value of the second counter multiplied by two, a third count may be the value of a third counter multiplied by four, and so on. The resulting value (e.g., the linear combination) may be used to determine which direction or magnitude to shift all of thethresholds 420. Although described as using a linear combination for a total count, it is to be understood any technique may be used to evaluate the values indicated by the counters associated with each level of the memory cells. - Additionally or alternatively, the memory system may use a set of counters respectively associated with a set of read
thresholds 420. In other words, each counter of the set of counters may correspond to arespective read threshold 420 of the set of readthresholds 420. Each counter may track a quantity of logic values stored by the data for arespective read threshold 420. As an example, a lower page read threshold 420-b may correspond to a first counter indicating a quantity of 1s read from the lower level of the memory cells, a second counter may correspond to the upper page read threshold 420-a indicating a quantity of 1s read from a the distribution 415-b, a third counter may correspond to the upper page read threshold 420-c indicating a quantity of 1s read from the upper level of the memory cells, and so on for memory cells with more than four read thresholds 420-c. The memory system may implement adjustment operations to determine counts for each threshold. For example, the memory system may iteratively adjust the counts for each counter associated with eachrespective read thresholds 420 to determine an accurate count for eachread threshold 420. In other words, such adjustment operations may account for the counts of other counters, which may improve an accuracy of the counts. As an illustrative example, the memory system may read an even quantity of 0s and 1s across the read thresholds 420-b due to an amount of 1s incorrectly coming from the distribution 415-d and an equal amount of 0s incorrectly coming from the distribution 415-c. Accordingly, the memory system may use the edge read thresholds 420-a and 420-c to first determine a quantity of excess logic values (e.g., bits may only be incorrectly read from one direction, so the excess count is accurate forread thresholds 420 on an edge of the plot 400). The memory system can then adjust the count of the counter for the read threshold 420-b by subtracting any excess logic values from theedge thresholds 420, which results in an accurate quantity of excess logic values for the read threshold 420-b. Such techniques may be extended tomore read thresholds 420 for more bits stored per logic cell. - The memory system may perform an adjustment of one or
more read thresholds 420 using the set of counters. For example, the memory system may select a direction, a magnitude, or both to adjust (e.g., shift) theread threshold 220 in response to the quantity indicated by the one or more counters (e.g., the linear combination of the counters to shift the thresholds together, or the memory system may treat eachread threshold 420 separately and shift in the direction that offsets the quantity of excess logic values). As one illustrative example, the linear combination may indicate that the readthresholds 420 are relatively too far right and the memory system may adjust the readthresholds 420 to the left by a magnitude scaled by the quantity of excess logic values (e.g., excess 1s). - The memory system may perform another read operation after adjusting the read
thresholds 420. For example, the memory system may read the data using the adjusted readthresholds 420. By adjusting the readthresholds 420 in the selected direction or magnitude in response to the counters, errors in the data may be eliminated or reduced such that an ECC code may be used to correct any remaining errors or the memory system may proactively adjust the thresholds to reduce the effects of read disturbances and the like. In some examples, the memory system may perform additional oralternative adjustments 225. For example, if the second read operation results in another uncorrectable error or a relatively high quantity of errors, the memory system may repeat the comparison and adjustment process until a successful read occurs. Alternatively, the memory system may perform an adjustment in an opposite direction in response to the second uncorrectable error (e.g., the memory system may shift the thresholds a first direction for a second operation and shift the thresholds to an opposite direction from an initial location for a third operation in response to the second operation including an uncorrectable error) or if the quantity of errors increases after the adjustment. - While shown as two bits per cell for illustrative clarity, it is to be understood that the concepts described with reference to
FIG. 4 may be implemented for other cell types storing any quantity of bits (e.g., other multi-bit cells such as TLC or QLC). For example, a TLC system may include 7thresholds 420 and use one or more counters to adjust thethresholds 420 as described herein with reference toFIGS. 6 and 7 . -
FIG. 5 illustrates an example of asystem 500 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. In some examples, thesystem 500 may be an example of or include aspects of thesystem 100, theplot 200, thesystem 300, and/or the plot 400 as described with reference toFIGS. 1-4 . For example, thesystem 500 may includememory 505, which may be example of a memory array as described herein (e.g., an array of NAND multi-bit memory cells). Thesystem 500 may illustrate an example implementation of adjusting a read threshold using adecoder 510, one ormore counters 515, and acomparison component 520. Although shown as separate for illustrative clarity, the various components of thesystem 500 may be combined or located different than shown (e.g., thedecoder 510 may include thecounters 515 and thecomparison component 520 in logic). - In some examples, the
system 500 may include anencoder 535. Theencoder 535 may be an example of an encoder as described herein (e.g., an encoder 335). For example, theencoder 535 may be configured to scramble user data into a codeword as described herein with reference toFIGS. 2-4 . For example, theencoder 535 may receive user data and generate a balanced sequence of 0’s and 1’s using a scrambler. Theencoder 535 may additionally or alternatively be configured to encode the codeword using an ECC code, to support an error detection or correction procedure if later reading the codeword from thememory 505. - The
system 500 may show a data path for performing one or more adjustments 525 of one or more read thresholds using the techniques described herein, including with reference toFIG. 2 . For example, data (e.g., a codeword) may be read from thememory 505. The data may be input to thedecoder 510. The data may also be input to the counter 515-a, the counter 515-b, or both. Thedecoder 510 may detect anuncorrectable error 530 in response to decoding the data. Additionally or alternatively, theerror 530 may be a quantity of errors that satisfy a threshold (e.g., the memory system may adjust read thresholds if the quantity of errors satisfies a threshold even if the errors are correctable). In some examples, thedecoder 510 may include a descrambler in addition or in the alternative to the ECC decoder. For example, thedecoder 510 may be configured to descramble the codeword to the original user data as part of the read operation. Additionally or alternatively, thecounters 515 may track a quantity of bits in the data that correspond to a first logic value (e.g., the counter 515-a and/or the counter 515-b may increment each time a 1 or a 0 is read from a respective first bit or a respective second bit of a memory cell) or a quantity of memory cells that correspond to a first result output by a set of logic circuitry (e.g., the counter 515-a and/or the counter 515-b may increment each time the logic circuitry outputs a first result or a second result, such as a 1 if the upper page bit and the lower page bit of a memory cells are the same logic value) as described herein, including with reference toFIG. 4 . - In some examples, the
system 500 may includelogic circuitry 540. Thelogic circuitry 540 may be configured to perform any of the operations ascribed herein to logic circuitry or logic gates in connection with adjusting one or more read thresholds. For example, thelogic circuitry 540 may include a logic gate (e.g., an XNOR logic gate) configured to receive one or more inputs (e.g., a respective upper bit and a respective lower bit read from each memory cell associated with a codeword) and output a corresponding result (e.g., a 1 to the counter 515-b) indicating whether the two inputs are the same or different, among other possibilities. - The
comparison component 520 may receive an indication of a quantity of bits from the one ormore counters 515, an indication that the data includes anuncorrectable error 530 from thedecoder 510, or any combination thereof. For example, if thedecoder 510 detects that theerrors 530 in the data are uncorrectable (e.g., the data includes an uncorrectable quantity of errors for an ECC scheme), thedecoder 510 may indicate theerror 530 to thecomparison component 520. Thecomparison component 520 may compare the quantity of bits to a second quantity of bits (e.g., a quantity of 0s to a quantity of 1s) or a threshold as described herein, including with reference toFIG. 4 . Additionally or alternatively, thecomparison component 520 or another component may determine a linear combination of the first counter 515-a and the counter 515-b and use the result to determine the direction or magnitude of an adjustment 525. - The memory system may perform an adjustment 525 in response to a result from the
comparison component 520. For example, if thecomparison component 520 indicates that the read thresholds are relatively too far from an ideal read threshold location as described herein, the memory system may select a direction of adjustment, a magnitude of adjustment, or both in accordance with the magnitude and direction of the count (e.g., to reduce the quantity of bits being incorrectly read as part of another distribution due to a current location of the read thresholds, among other examples as described herein with reference toFIG. 4 ). In such examples, the memory system may perform adjustment 525-a (e.g., the memory system may shift one or more thresholds to the left), an adjustment 525-b (e.g., the memory system may shift one or more thresholds to the right), a combination thereof as described with reference toFIG. 4 . - In some examples, the
system 500 may include one or moreadditional counters 515. For example, thesystem 500 may include acounter 515 for each read threshold as described with reference toFIG. 4 (e.g., for MLC, thesystem 500 may include 3 counters 515). In some such examples, the system may not include logic circuitry 540 (e.g., eachcounter 515 may be incremented if a 1 or a 0 is read for a respective read threshold). In such cases where the read thresholds are treated separately, thecomparison component 520 may perform operations described with reference toFIG. 4 . For example, thecomparison component 520 may iteratively adjust the values of thecounters 515 to obtain accurate excess counts for eachcounter 515 and perform an adjustment 525-a or 525-b on a per-threshold basis, among other examples. -
FIG. 6 illustrates aplot 600 of example read distributions that support read threshold adjustment techniques for memory in accordance with examples as disclosed herein. Theplot 600 may be an example of operations implemented by asystem 100 as described with reference toFIG. 1 . Theplot 600 may implement aspects of the plots and systems described herein, such as the plot 400 andsystem 500 as described with reference toFIGS. 4 and 5 , respectively. Generally, theplot 600 may illustrateexample distributions 615 for TLC data in a memory array. As an illustrative example, theplot 600 showsthresholds 620 anddistributions 615 for memory cells storing three bits on three levels, although aspects of the teachings herein may be extended to memory cells each storing any quantity of bits. - The
plot 600 may include a read threshold 620-a, a read threshold 620-b, a read threshold 620-c, a read threshold 620-d, a read threshold 620-e, a read threshold 620-f and a read threshold 620-g, which may be examples of voltage thresholds, though current thresholds or charge thresholds may additional or alternatively be used. A memory system may read memory cells using the readthresholds 620. For example, the memory system may compare a voltage of a signal generated in response to reading a memory cell to the readthresholds 620 and identify a logic value in response to comparing the voltage. - In some examples, the
different thresholds 620 may be associated with respective bits stored in the memory cell. As an example of a TLC memory cell storing three bits, the threshold 620-d may be associated with a respective first bit of the memory cell, which may be referred to as a “lower bit” or a “lower page bit” of the memory cell. In some cases, the threshold 620-d may be referred to as a “lower page threshold” or a “lower level threshold.” The threshold 620-b and the threshold 620-f may be associated with a respective second bit of the memory cell, which may be referred to as an “upper bit” or an “upper page bit” of the memory cell. In some cases, the thresholds 620-b and 620-f may be referred to as “upper page thresholds” or “upper level thresholds.” The thresholds 620-a, 620-c, 620-e, and 620-g may be associated with a respective third bit of the memory cell, which may be referred to as an “extra bit” or an “extra page bit” of the memory cell. In some cases, the thresholds 620-a, 620-c, 620-e, and 620-g may be referred to as “extra page thresholds” or “extra level thresholds.” Additionally or alternatively, the lower level may be referred to as a first level, the upper level may be referred to as a second level, and the extra level may be referred to as a third level. - Although shown as each
distribution 615 corresponding to a set of three bits (e.g., the distribution 615-a corresponding to a lower page, upper page, and extra page bits of 1, 1, and 1, respectively), it is to be understood that any layout or orientation of bits and distributions may be used. In some examples, the logic values,distributions 615, and readthresholds 620 may be different than described (e.g.,distributions 615 and readthresholds 620 may be associated with different logic values, lower page bits, or upper page bits). Although shown as parabolic curves for illustrative clarity, it is to be understood that thedistributions 615 may be any shape or associated with any logic value. - In the example shown, if a voltage signal of a memory cell is less than the threshold 620-d the memory cell may read the respective first bit (e.g., lower page bit) as a 1. The memory system may read the respective second bit (e.g., upper page bit) using the read threshold 620-b if the respective first bit is 1. For example, the memory system may read the second bit as a 1 if the voltage signal is less than the threshold 620-b and a 0 if the voltage signal is greater than the threshold 620-b. The memory system may read the respective third bit (e.g., extra page bit) using the read threshold 620-a if the respective second bit is 1. For example, the memory system may read the third bit as a 1 if the voltage signal is less than the threshold 620-a and a 0 if the signal is greater than the thresholds 620-a.
- In some examples, one or more of the
distributions 615 may become shifted over time such that the one ormore read thresholds 620 deviate from an ideal read threshold, which may result in one or more errors in the data as described herein. Accordingly, the memory system may adjust one ormore read thresholds 620 using one or more counters. - In some examples, for multi-bit cells (e.g., MLC, TLC, QLC, etc.) configured to store two or more bits of information, the memory system may implement multiple counters. In the example of a TLC cell shown in
FIG. 6 , in some cases the memory system may use a set of counters associated with each level of the memory cells. For example, a first counter may correspond to the first level (e.g., read threshold 620-d), a second counter may correspond to the second level (e.g., read thresholds 620-b and 620-f), and a third counter may correspond to the third level (e.g., read thresholds 620-a, 620-c, 620-e, and 620-g). - The memory system may use an algorithm as described herein with reference to
FIG. 4 , but extended and adapted to accommodate an additional level, to increment the counters and determine a direction, magnitude, or both to adjust the readthresholds 620 using a linear combination of the three counters. For example, the memory system may increment the first counter to track a quantity of memory cells storing a lower page bit logic value of 1 to obtain the lower page excess 1s. The memory system may increment the second counter using a logic gate as described herein (e.g., a XOR or XNOR logic gate). By using a logic gate, the second counter may indicate a quantity of cells storing an upper bit logic value to the right (or left) of the thresholds 620-b and 620-f. Similarly, the memory system may increment the third counter such that the third counter indicates a quantity of cells storing an extra bit logic value to the right (or left) of the thresholds 620-a, 620-c, 620-e, and 620-g. The memory system may obtain a first count associated with the first counter indicating excess 1s of the lower level, a second count associated with a second counter indicating excess 1s in the upper level, and a third count associated with the third counter indicating excess 1s in the extra level. For example, the memory system may perform a linear combination of the values indicated by the counters which will indicate the total number of excess 1s across all of the bit levels. For example, the first count may be the value of the counter, the second count may be the value of the second counter multiplied by two, a third count may be the value of a third counter multiplied by four, and so on. The resulting value (e.g., the linear combination) may be used to determine which direction or magnitude to shift all of thethresholds 620. Although described as using a linear combination for a total count, it is to be understood any technique may be used to evaluate the values indicated by the counters associated with each level of the memory cells. - Additionally or alternatively, the memory system may use a set of counters respectively associated with a set of read
thresholds 620. In other words, each counter of the set of counters may correspond to arespective read threshold 620 of the set of read thresholds 620 (e.g., the memory system may use seven counters inplot 600 for TLC memory cells). The memory system may adjust the count of each counter iteratively as described herein with reference toFIG. 4 . For example, the memory system may determine an edge read threshold 620-a count (or a count of the other edge read threshold 620-g). The edge threshold counts may be accurate because any bits incorrectly read are lost to the next distribution or gained from the next distribution (e.g., an accurate quantity of excess 1s or 0s may be obtained due to a single source of extra 1s or 0s). The memory system may use the count of the edge read thresholds to obtain an accurate count for thenext read thresholds 620. For example, the memory system may subtract excess 1s of the counter for the read threshold 620-a from the counter of the read threshold 620-b. By accounting for the excess (or dearth) of logic values from the edge threshold, an accurate count may be obtained for the counter of the read threshold 620-b. The memory system may iterate such procedures for each read threshold 62, which may enable the memory system to treat eachread threshold 620 separately (e.g., the memory system may use each individual adjusted count to select a direction or magnitude of adjustment for each read threshold 620). - In some examples, the memory system may determine counts for each counter in the set of counters (e.g., each counter that corresponds to a respective read threshold 620) based on a subset of memory cells. For example, each read
threshold 620 may correspond to a different logic value for one of multiple levels in a memory cell. That is, for arespective read threshold 620, a single level of a memory cell may change logic value depending on which side of theread threshold 620 the voltage lies (e.g., the other levels of the cell may not change logic value for the read threshold 620). In other words, the other levels of the memory cell may be constant and one of the levels may be changeable when moving across theread threshold 620. In some such examples, the memory system may select a subset of memory cells to determine a count for a counter that corresponds to arespective read threshold 620. For example, the memory system may analyze (e.g., look at) memory cells that have one or more levels with logic values that are constant for therespective read threshold 620. The memory system may determine a count of the subset of memory cells that have a first logic value or a second logic value for the level that is not constant with respective to theread threshold 620. As an illustrative example, for the read threshold 620-b, the lower bit and the extra bit may be a same value of 1 and 0, respectively, regardless of whether the voltage lies on the left or right of the read threshold 620-b. The memory system may select memory cells that have a lower bit value of 1 and an extra bit value of 0 to determine the count associated with the read threshold 620-b. For example, the memory system may determine how many upper bits have a first logic value (e.g., 1 or 0) from the subset of memory cells with a lower bit value of 1 and an extra bit value of 0. In some cases, the memory system may perform such counts for each counter (e.g., each read threshold 620) and adjust the counts as described herein (e.g., using the edge threshold counts and adjusting each count iteratively). - While shown as three bits per cell for illustrative clarity, it is to be understood that the concepts described herein with reference to
FIG. 6 and elsewhere may be extended and implemented for other cell types storing any quantity of bits (e.g., other multi-bit cells, such as QLC). -
FIG. 7 illustrates an example of asystem 700 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. In some examples, thesystem 700 may be an example of or include aspects of the systems and plots as described with reference toFIGS. 1-6 . For example, thesystem 700 may includememory 705, which may be example of a memory array as described herein (e.g., an array of NAND multi-bit memory cells). Thesystem 700 may illustrate an example implementation of adjusting a read threshold using adecoder 710, one ormore counters 715, and acomparison component 720. Although shown as separate for illustrative clarity, the various components of thesystem 700 may be combined or located different than shown (e.g., thedecoder 710 may include thecounters 715 and thecomparison component 720 in logic). - In some examples, the
system 700 may include anencoder 735. Theencoder 735 may be an example of an encoder as described herein (e.g., an encoder 335). For example, theencoder 735 may be configured to scramble user data into a codeword as described herein with reference toFIGS. 2-6 . For example, theencoder 735 may receive user data and generate a balanced sequence of 0’s and 1’s using a scrambler. Theencoder 735 may additionally or alternatively be configured to encode the codeword in response to an ECC code, to support an error detection or correction procedure if later reading the codeword from thememory 705. - The
system 700 may show a data path for performing one or more adjustments 725 of one or more read thresholds using the techniques described herein, including with reference toFIG. 6 . For example, data (e.g., a codeword) may be read from thememory 705. The data may be input to thedecoder 710. The data may also be input to the counter 715-a, the counter 715-b, and the counter 715-c. Thecounters 715 may be examples of a first counter, second counter, and third counter as described with reference toFIG. 6 . - The
decoder 710 may detect anuncorrectable error 730 in response to decoding the data. Additionally or alternatively, theerror 730 may be a quantity of errors that satisfy a threshold (e.g., the memory system may adjust read thresholds if the quantity of errors satisfies a threshold even if the errors are correctable). In some examples, thedecoder 710 may include a descrambler in addition or in the alternative to the ECC decoder. For example, thedecoder 710 may be configured to descramble the codeword to the original user data as part of the read operation. Additionally or alternatively, thecounters 715 may track a quantity of bits in the data that correspond to a first logic value (e.g., thecounters 715 may increment each time a 1 or a 0 is read from a respective first bit, a respective second bit, or a respective third bit of a memory cell) or a quantity of memory cells that correspond to a first result output by a set of logic circuitry (e.g., the counter 715-b and/or the counter 715-c may increment each time the logic circuitry outputs a first result or a second result, such as a XOR or XNOR result of the three bits) as described herein, including with reference toFIGS. 4 and 6 . - In some examples, the
system 700 may includelogic circuitry 740. Thelogic circuitry 740 may be configured to perform any of the operations ascribed herein to logic circuitry or logic gates in connection with adjusting one or more read thresholds. For example, the logic circuitry 740-a may include a logic gate (e.g., an XNOR logic gate) configured to receive one or more inputs (e.g., a respective upper bit and a respective lower bit read from each memory cell) and output a corresponding result (e.g., a 1 to the counter 715-b) indicating whether the two inputs are the same or different, among other possibilities. The logic circuitry 740-b may include a logic gate (e.g., a XOR logic gate) configured to receive one or more inputs (e.g., a respective upper bit, a respective lower bit, and a respective extra bit read from each memory cell) and output a corresponding result (e.g., a 1 to the counter 715-c) indicating whether the two inputs are the same or different, among other possibilities. - The
comparison component 720 may receive an indication of a quantity of bits from the one ormore counters 715, an indication that the data includes anuncorrectable error 730 from thedecoder 710, or any combination thereof. For example, if thedecoder 710 detects that theerrors 730 in the data are uncorrectable (e.g., the data includes an uncorrectable quantity of errors for an ECC scheme), thedecoder 710 may indicate theerror 730 to thecomparison component 720. Thecomparison component 720 may compare the quantity of bits to a second quantity of bits (e.g., a quantity of 0s to a quantity of 1s) or a threshold as described herein, including with reference toFIG. 4 . Additionally or alternatively, thecomparison component 720 or another component may determine a linear combination of the first counter 715-a and the counter 715-b and use the result to determine the direction or magnitude of an adjustment 725, as described with reference toFIGS. 4 and 6 . - The memory system may perform an adjustment 725 in response to a result from the
comparison component 720. For example, if thecomparison component 720 indicates that the read thresholds are relatively too far from an ideal read threshold location as described herein, the memory system may select a direction of adjustment, a magnitude of adjustment, or both in accordance with the magnitude and direction of the count (e.g., to reduce the quantity of bits being incorrectly read as part of another distribution due to a current location of the read thresholds, among other examples as described herein with reference toFIG. 4 ). In such examples, the memory system may perform adjustment 725-a (e.g., the memory system may shift one or more thresholds to the left), an adjustment 725-b (e.g., the memory system may shift one or more thresholds to the right), a combination thereof as described with reference toFIGS. 4 and 6 . - In some examples, the
system 700 may include one or moreadditional counters 715. For example, thesystem 700 may include acounter 715 for each read threshold as described with reference toFIGS. 4 or 6 (e.g., for TLC, thesystem 700 may include 7 counters 715). In some such examples, the system may not include logic circuitry 740 (e.g., eachcounter 715 may be incremented if a 1 or a 0 is read for a respective read threshold). In such cases where the read thresholds are treated separately, thecomparison component 720 may perform operations described with reference toFIGS. 4 and 6 . For example, thecomparison component 720 may iteratively adjust the values of thecounters 715 to obtain accurate excess counts for eachcounter 715 and perform an adjustment 725-a or 725-b on a per-threshold basis, among other examples. -
FIG. 8 illustrates an example of a block diagram 800 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. Thememory system 805 may be an example of aspects of a memory system as described with reference toFIGS. 1-7 . In some examples, thememory system 805 may be referred to as a memory device or may include one or more memory devices. Thememory system 805 may include aread component 810, acounter component 815, anerror component 820, aread threshold component 825, acomparison component 830, aselection component 835, and anadjustment component 840. Each of these modules may communicate, directly or indirectly, with one another (e.g., via one or more buses). - The
read component 810 may be configured as or otherwise support a means for reading a codeword from a memory array of one or more memory devices using a read threshold having a first value. Thecounter component 815 may be configured as or otherwise support a means for incrementing a counter of the one or more memory devices in response to reading the codeword, the counter indicating a quantity of bits of the codeword that correspond to a first logic value. Theerror component 820 may be configured as or otherwise support a means for detecting an error in the codeword after reading the codeword. Theread threshold component 825 may be configured as or otherwise support a means for adjusting the read threshold from the first value to a second value in response to the quantity of bits indicated by the counter. Theread component 810 may be configured as or otherwise support a means for reading the codeword from the memory array using the read threshold having the second value. - The
comparison component 830 may be configured as or otherwise support a means for comparing the quantity of bits of the codeword that correspond to the first logic value to a second quantity of bits of the codeword that correspond to a second logic value, where adjusting the read threshold from the first value to the second value is in response to the comparison. In some examples, theselection component 835 may be configured as or otherwise support a means for selecting a direction of adjustment, a magnitude of adjustment, or both associated with adjusting the read threshold in response to the comparison. In some examples, theread threshold component 825 may be configured as or otherwise support a means for adjusting the read threshold from the first value to the second value in accordance with the selected direction of adjustment, the magnitude of adjustment, or both. - In some examples, the
comparison component 830 may be configured as or otherwise support a means for determining that the quantity of bits of the codeword that correspond to the first logic value satisfies a threshold in response to the comparing. Theselection component 835 may be configured as or otherwise support a means for selecting a direction of adjustment, a magnitude of adjustment, or both associated with adjusting the read threshold in response to the quantity of bits satisfying the threshold. - In some examples, the
read threshold component 825 may be configured as or otherwise support a means for adjusting the read threshold by a magnitude, a direction, or both corresponding to the quantity of bits indicated by the counter. - The
error component 820 may be configured as or otherwise support a means for determining that the error is an uncorrectable error for an error correction code scheme, where detecting the error is in response to the error correction code scheme, and where adjusting the read threshold is in response to the error being uncorrectable for the error correction code scheme. - In some examples, the read threshold includes a voltage threshold, a current threshold, a charge threshold, or any combination thereof.
- In some examples, the
error component 820 may be configured as or otherwise support a means for detecting a second error in the codeword based at least in part on reading the codeword using the read threshold having the second value. Theread threshold component 825 may be configured as or otherwise support a means for adjusting the read threshold from the second value to a third value on the detected second error. - In some examples, the
read component 810 may be configured as or otherwise support a means for reading data from a set of memory cells within the one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store a respective plurality of bits each corresponding to a respective level of a plurality of levels each corresponding to a respective subset of read thresholds of the at least three read thresholds. Thecounter component 815 may be configured as or otherwise support a means for incrementing each counter of a set of counters based at least in part on reading the data, the set of counters including a first counter corresponding to a first level of the plurality of levels and a second counter corresponding to a second level of the plurality of levels. Theerror component 820 may be configured as or otherwise support a means for detecting an error in the data based at least in part on reading the data using the at least three read thresholds. Theread threshold component 825 may be configured as or otherwise support a means for adjusting one or more of the at least three read thresholds based at least in part on the set of counters. In some examples, theread component 810 may be configured as or otherwise support a means for reading the data from the memory array after adjusting the one or more of the at least three read thresholds. - In some examples, to support incrementing each counter of the set of counters, the
counter component 815 may be configured as or otherwise support a means for incrementing the first counter corresponding to the first level, the first counter indicating a quantity of bits stored by the set of memory cells that correspond to a first logic value. In some examples, to support incrementing each counter of the set of counters, thecounter component 815 may be configured as or otherwise support a means for incrementing the second counter corresponding to the second level, the second counter indicating a quantity of outputs from one or more logic gates corresponding to a particular logic value. - In some examples, the inputs to the one or more logic gates include a first bit stored by a first memory cell and a second bit stored by the first memory cell, the first bit corresponding to the first level and the second bit corresponding to the second level.
- In some examples, to support incrementing each counter of the set of counters, the
counter component 815 may be configured as or otherwise support a means for incrementing a third counter corresponding to a third level of the plurality of levels, the third counter indicating a second quantity of outputs from the one or more logic gates corresponding to a particular logic value, where the inputs to the one or more logic gates include a first bit stored by a first memory cell, a second bit stored by the first memory cell, and a third bit stored by the first memory cell. In some examples, to support incrementing each counter of the set of counters, thecounter component 815 may be configured as or otherwise support a means for where the first bit corresponds to the first level, the second bit corresponds to the second level, and the third bit corresponds to the third level. - In some examples, the
counter component 815 may be configured as or otherwise support a means for determining a quantity of bits that correspond to a first logic value based at least in part on a combination of counts, each of the counts indicated by a respective counter of the set of counters. In some examples, the combination of counts includes a linear combination of a first count indicated by the first counter, a second count indicated by the second counter, a third count indicated by a third counter, a fourth count indicated by a fourth counter, or any combination thereof. - In some examples, a direction, a magnitude, or both of the adjusting of the at least three read thresholds is based at least in part on the quantity of bits that correspond to the first logic value. In some examples, to support adjusting, the
read threshold component 825 may be configured as or otherwise support a means for adjusting the at least three read thresholds in a direction indicated by the set of counters. In some examples, to support adjusting, theread threshold component 825 may be configured as or otherwise support a means for adjusting the at least three read thresholds by a magnitude indicated by the set of counters. - In some examples, the
selection component 835 may be configured as or otherwise support a means for selecting a direction of adjustment, a magnitude of adjustment, or both associated with the adjusting of the one or more of the at least three read thresholds based at least in part on the set of counters. - In some examples, the
error component 820 may be configured as or otherwise support a means for detecting a second error in the data based at least in part on reading the data from the memory array after adjusting the one or more of the at least three read thresholds. In some examples, theread threshold component 825 may be configured as or otherwise support a means for readjusting the one or more of the at least three read thresholds based at least in part on detecting the second error. In some examples, the at least three read thresholds each include a respective voltage threshold, a respective current threshold, or any combination thereof. - In some examples, the
read component 810 may be configured as or otherwise support a means for reading data from a set of memory cells within the one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store at least two bits. In some examples, thecounter component 815 may be configured as or otherwise support a means for incrementing each counter of a set of counters based at least in part on reading the data using the at least three read thresholds, where each counter of the set of counters corresponds to a respective read threshold of the at least three read thresholds and indicates a respective quantity of bits of the data corresponding to a first logic value. Theadjustment component 840 may be configured as or otherwise support a means for adjusting a first quantity indicated by a first counter of the set of counters using a second quantity indicated by a second counter of the set of counters. In some examples, theread threshold component 825 may be configured as or otherwise support a means for adjusting, after adjusting the first quantity indicated by the first counter, one or more of the at least three read thresholds based at least in part on the set of counters. In some examples, theread component 810 may be configured as or otherwise support a means for reading the data from the memory array after adjusting the one or more of the at least three read thresholds. - In some examples, the
counter component 815 may be configured as or otherwise support a means for determining the first quantity indicated by the first counter, the first quantity indicating a quantity of bits for a first respective threshold of the at least three read thresholds that correspond to the first logic value. In some examples, thecounter component 815 may be configured as or otherwise support a means for determining the second quantity indicated by the second counter, the second quantity indicating a quantity of bits for a second respective threshold of the at least three read thresholds that correspond to the first logic value. - In some examples, to support adjusting the first quantity, the
adjustment component 840 may be configured as or otherwise support a means for subtracting the second quantity from the first quantity. In some examples, theadjustment component 840 may be configured as or otherwise support a means for adjusting a third quantity indicated by a third counter of the set of counters based at least in part on the first quantity, the second quantity, or both. - In some examples, the
read threshold component 825 may be configured as or otherwise support a means for adjusting a first threshold of the at least three read thresholds in a direction indicated by the first counter, a second threshold of the at least three read thresholds in a direction indicated by the second counter, a third threshold of the at least three read thresholds in a direction indicated by a third counter, a fourth threshold of the at least three read thresholds in a direction indicated by a fourth counter, or any combination thereof. - In some examples, the
read threshold component 825 may be configured as or otherwise support a means for adjusting a first threshold of the at least three read thresholds by a magnitude indicated by the first counter, a second threshold of the at least three read thresholds by a magnitude indicated by the second counter, a third threshold of the at least three read thresholds by a magnitude indicated by a third counter, a fourth threshold of the at least three read thresholds by a magnitude indicated by a fourth counter, or any combination thereof. - In some examples, the
read threshold component 825 may be configured as or otherwise support a means for selecting a subset of memory cells from the set of memory cells for each read threshold of the at least three read thresholds, where a respective subset of memory cells corresponds to a respective read threshold and a respective counter, and incrementing the respective counter based on a quantity of the respective subset of memory cells that correspond to the first logic state. -
FIG. 9 shows a flowchart illustrating amethod 900 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. The operations ofmethod 900 may be implemented by a memory system or its components as described herein. For example, the operations ofmethod 900 may be performed by a memory system as described with reference toFIGS. 1 through 8 . In some examples, a memory system may execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally or alternatively, the memory system may perform aspects of the described functions using special-purpose hardware. - At 905, the method may include reading a codeword from a memory array of one or more memory devices using a read threshold having a first value. The operations of 905 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 905 may be performed by a
read component 810 as described with reference toFIG. 8 . - At 910, the method may include incrementing a counter based at least in part on reading the codeword, the counter indicating a quantity of bits of the codeword that correspond to a first logic value. The operations of 910 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 910 may be performed by a
counter component 815 as described with reference toFIG. 8 . - At 915, the method may include detecting an error in the codeword after reading the codeword. The operations of 915 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 915 may be performed by an
error component 820 as described with reference toFIG. 8 . - At 920, the method may include adjusting the read threshold from the first value to a second value based at least in part on the quantity of bits indicated by the counter. The operations of 920 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 920 may be performed by a
read threshold component 825 as described with reference toFIG. 8 . - At 925, the method may include reading the codeword from the memory array using the read threshold having the second value. The operations of 925 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 925 may be performed by a
read component 810 as described with reference toFIG. 8 . - In some examples, an apparatus as described herein may perform a method or methods, such as the
method 900. The apparatus may include, features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for reading a codeword from a memory array of the one or more memory devices using a read threshold having a first value, incrementing a counter based at least in part on reading the codeword, the counter indicating a quantity of bits of the codeword that correspond to a first logic value, detecting an error in the codeword after reading the codeword, adjusting the read threshold from the first value to a second value based at least in part on the quantity of bits indicated by the counter, and reading the codeword from the memory array using the read threshold having the second value. - Some examples of the
method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for comparing the quantity of bits of the codeword that correspond to the first logic value to a second quantity of bits of the codeword that correspond to a second logic value, where adjusting the read threshold from the first value to the second value may be based at least in part on the comparison. - Some examples of the
method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for selecting a direction of adjustment, a magnitude of adjustment, or both associated with adjusting the read threshold based at least in part on the comparison. - Some examples of the
method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting the read threshold from the first value to the second value in accordance with the selected direction of adjustment, the magnitude of adjustment, or both. - Some examples of the
method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining that the quantity of bits of the codeword that correspond to the first logic value satisfies a threshold based at least in part on the comparing and selecting a direction of adjustment, a magnitude of adjustment, or both associated with adjusting the read threshold based at least in part on the quantity of bits satisfying the threshold. - Some examples of the
method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting the read threshold may include operations, features, circuitry, logic, means, or instructions for adjusting the read threshold by a magnitude, a direction, or both corresponding to the quantity of bits indicated by the counter. - Some examples of the
method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining that the error may be an uncorrectable error for an error correction code scheme, where detecting the error may be based at least in part on the error correction code scheme, and where adjusting the read threshold may be based at least in part on the error being uncorrectable for the error correction code scheme. - In some examples of the
method 900 and the apparatus described herein, the read threshold may be a voltage threshold, a current threshold, a charge threshold or any combination thereof. - Some examples of the
method 900 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for detecting a second error in the codeword based at least in part on reading the codeword using the read threshold having the second value and adjusting the read threshold from the second value to a third value based at least in part on the detected second error. -
FIG. 10 shows a flowchart illustrating amethod 1000 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. The operations ofmethod 1000 may be implemented by a memory system or its components as described herein. For example, the operations ofmethod 1000 may be performed by a memory system as described with reference toFIGS. 1 through 8 . In some examples, a memory system may execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally or alternatively, the memory system may perform aspects of the described functions using special-purpose hardware. - At 1005, the method may include reading data from a set of memory cells within one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store a respective plurality of bits each corresponding to a respective level of a plurality of levels each corresponding to a respective subset of read thresholds of the at least three read thresholds. The operations of 1005 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1005 may be performed by a
read component 810 as described with reference toFIG. 8 . - At 1010, the method may include incrementing each counter of a set of counters based at least in part on reading the data, the set of counters including a first counter corresponding to a first level of the plurality of levels and a second counter corresponding to a second level of the plurality of levels. The operations of 1010 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1010 may be performed by a
counter component 815 as described with reference toFIG. 8 . - At 1015, the method may include detecting an error in the data based at least in part on reading the data using the at least three read thresholds. The operations of 1015 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1015 may be performed by an
error component 820 as described with reference toFIG. 8 . - At 1020, the method may include adjusting one or more of the at least three read thresholds based at least in part on the set of counters. The operations of 1020 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1020 may be performed by a
read threshold component 825 as described with reference toFIG. 8 . - At 1025, the method may include reading the data from the memory array after adjusting the one or more of the at least three read thresholds. The operations of 1025 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1025 may be performed by a
read component 810 as described with reference toFIG. 8 . - In some examples, an apparatus as described herein may perform a method or methods, such as the
method 1000. The apparatus may include, features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for reading data from a set of memory cells within the one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store a respective plurality of bits each corresponding to a respective level of a plurality of levels each corresponding to a respective subset of read thresholds of the at least three read thresholds, incrementing each counter of a set of counters based at least in part on reading the data, the set of counters including a first counter corresponding to a first level of the plurality of levels and a second counter corresponding to a second level of the plurality of levels, detecting an error in the data based at least in part on reading the data using the at least three read thresholds, adjusting one or more of the at least three read thresholds based at least in part on the set of counters, and reading the data from the memory array after adjusting the one or more of the at least three read thresholds. - In some examples of the
method 1000 and the apparatus described herein, operations, features, circuitry, logic, means, or instructions for incrementing each counter of the set of counters may include operations, features, circuitry, logic, means, or instructions for incrementing the first counter corresponding to the first level, the first counter indicating a quantity of bits stored by the set of memory cells that correspond to a first logic value, and incrementing the second counter corresponding to the second level, the second counter indicating a quantity of outputs from one or more logic gates corresponding to a particular logic value. - In some examples of the
method 1000 and the apparatus described herein, the inputs to the one or more logic gates include a first bit stored by a first memory cell and a second bit stored by the first memory cell, the first bit corresponding to the first level and the second bit corresponding to the second level. - In some examples of the
method 1000 and the apparatus described herein, operations, features, circuitry, logic, means, or instructions for incrementing each counter of the set of counters may include operations, features, circuitry, logic, means, or instructions for incrementing a third counter corresponding to a third level of the plurality of levels, the third counter indicating a second quantity of outputs from the one or more logic gates corresponding to a particular logic value, where the inputs to the one or more logic gates include a first bit stored by a first memory cell, a second bit stored by the first memory cell, and a third bit stored by the first memory cell, and where the first bit corresponds to the first level, the second bit corresponds to the second level, and the third bit corresponds to the third level. - Some examples of the
method 1000 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining a quantity of bits that correspond to a first logic value based at least in part on a combination of counts, each of the counts indicated by a respective counter of the set of counters. - In some examples of the
method 1000 and the apparatus described herein, the combination of counts includes a linear combination of a first count indicated by the first counter, a second count indicated by the second counter, a third count indicated by a third counter, a fourth count indicated by a fourth counter, or any combination thereof. - In some examples of the
method 1000 and the apparatus described herein, a direction, a magnitude, or both of the adjusting of the at least three read thresholds may be based at least in part on the quantity of bits that correspond to the first logic value. - In some examples of the
method 1000 and the apparatus described herein, operations, features, circuitry, logic, means, or instructions for the adjusting may include operations, features, circuitry, logic, means, or instructions for adjusting the at least three read thresholds in a direction indicated by the set of counters. - In some examples of the
method 1000 and the apparatus described herein, operations, features, circuitry, logic, means, or instructions for the adjusting may include operations, features, circuitry, logic, means, or instructions for adjusting the at least three read thresholds by a magnitude indicated by the set of counters. - Some examples of the
method 1000 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for selecting a direction of adjustment, a magnitude of adjustment, or both associated with the adjusting of the one or more of the at least three read thresholds based at least in part on the set of counters. - Some examples of the
method 1000 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for detecting a second error in the data based at least in part on reading the data from the memory array after adjusting the one or more of the at least three read thresholds and readjusting the one or more of the at least three read thresholds based at least in part on detecting the second error. - In some examples of the
method 1000 and the apparatus described herein, the at least three read thresholds each include a respective voltage threshold, a respective current threshold, or any combination thereof. -
FIG. 11 shows a flowchart illustrating amethod 1100 that supports read threshold adjustment techniques for memory in accordance with examples as disclosed herein. The operations ofmethod 1100 may be implemented by a memory system or its components as described herein. For example, the operations ofmethod 1100 may be performed by a memory system as described with reference toFIGS. 1 through 8 . In some examples, a memory system may execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally or alternatively, the memory system may perform aspects of the described functions using special-purpose hardware. - At 1105, the method may include reading data from a set of memory cells within one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store at least two bits. The operations of 1105 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1105 may be performed by a
read component 810 as described with reference toFIG. 8 . - At 1110, the method may include incrementing each counter of a set of counters based at least in part on reading the data using the at least three read thresholds, where each counter of the set of counters corresponds to a respective read threshold of the at least three read thresholds and indicates a respective quantity of bits of the data corresponding to a first logic value. The operations of 1110 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1110 may be performed by a
counter component 815 as described with reference toFIG. 8 . - At 1115, the method may include adjusting a first quantity indicated by a first counter of the set of counters using a second quantity indicated by a second counter of the set of counters. The operations of 1115 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1115 may be performed by an
adjustment component 840 as described with reference toFIG. 8 . - At 1120, the method may include adjusting, after adjusting the first quantity indicated by the first counter, one or more of the at least three read thresholds based at least in part on the set of counters. The operations of 1120 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1120 may be performed by a
read threshold component 825 as described with reference toFIG. 8 . - At 1125, the method may include reading the data from the memory array after adjusting the one or more of the at least three read thresholds. The operations of 1125 may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of 1125 may be performed by a
read component 810 as described with reference toFIG. 8 . - In some examples, an apparatus as described herein may perform a method or methods, such as the
method 1100. The apparatus may include, features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for reading data from a set of memory cells within the one or more memory devices using at least three read thresholds, each memory cell of the set of memory cells configured to store at least two bits, incrementing each counter of a set of counters based at least in part on reading the data using the at least three read thresholds, where each counter of the set of counters corresponds to a respective read threshold of the at least three read thresholds and indicates a respective quantity of bits of the data corresponding to a first logic value, adjusting a first quantity indicated by a first counter of the set of counters using a second quantity indicated by a second counter of the set of counters, adjusting, after adjusting the first quantity indicated by the first counter, one or more of the at least three read thresholds based at least in part on the set of counters, and reading the data from the memory array after adjusting the one or more of the at least three read thresholds. - Some examples of the
method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining the first quantity indicated by the first counter, the first quantity indicating a quantity of bits for a first respective threshold of the at least three read thresholds that correspond to the first logic value, and determining the second quantity indicated by the second counter, the second quantity indicating a quantity of bits for a second respective threshold of the at least three read thresholds that correspond to the first logic value. - In some examples of the
method 1100 and the apparatus described herein, operations, features, circuitry, logic, means, or instructions for adjusting the first quantity may include operations, features, circuitry, logic, means, or instructions for subtracting the second quantity from the first quantity. - Some examples of the
method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting a third quantity indicated by a third counter of the set of counters based at least in part on the first quantity, the second quantity, or both. - Some examples of the
method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting a first threshold of the at least three read thresholds in a direction indicated by the first counter, a second threshold of the at least three read thresholds in a direction indicated by the second counter, a third threshold of the at least three read thresholds in a direction indicated by a third counter, a fourth threshold of the at least three read thresholds in a direction indicated by a fourth counter, or any combination thereof. - Some examples of the
method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for adjusting a first threshold of the at least three read thresholds by a magnitude indicated by the first counter, a second threshold of the at least three read thresholds by a magnitude indicated by the second counter, a third threshold of the at least three read thresholds by a magnitude indicated by a third counter, a fourth threshold of the at least three read thresholds by a magnitude indicated by a fourth counter, or any combination thereof. - Some examples of the
method 1100 and the apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for selecting a subset of memory cells from the set of memory cells for each read threshold of the at least three read thresholds, where a respective subset of memory cells corresponds to a respective read threshold and a respective counter, and incrementing the respective counter based on a quantity of the respective subset of memory cells that correspond to the first logic state. - It should be noted that the methods described above describe possible implementations, and that the operations and the steps may be rearranged or otherwise modified and that other implementations are possible. Further, portions from two or more of the methods may be combined.
- Information and signals described herein may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof. Some drawings may illustrate signals as a single signal; however, the signal may represent a bus of signals, where the bus may have a variety of bit widths.
- If used to describe a conditional action or process, the terms “if,” “when,” “based on,” “based at least in part on,” and “in response to,” may be interchangeable.
- The terms “electronic communication,” “conductive contact,” “connected,” and “coupled” may refer to a relationship between components that supports the flow of signals between the components. Components are considered in electronic communication with (or in conductive contact with or connected with or coupled with) one another if there is any conductive path between the components that can, at any time, support the flow of signals between the components. At any given time, the conductive path between components that are in electronic communication with each other (or in conductive contact with or connected with or coupled with) may be an open circuit or a closed circuit based on the operation of the device that includes the connected components. The conductive path between connected components may be a direct conductive path between the components or the conductive path between connected components may be an indirect conductive path that may include intermediate components, such as switches, transistors, or other components. In some examples, the flow of signals between the connected components may be interrupted for a time, for example, using one or more intermediate components such as switches or transistors.
- The term “coupling” refers to condition of moving from an open-circuit relationship between components in which signals are not presently capable of being communicated between the components over a conductive path to a closed-circuit relationship between components in which signals are capable of being communicated between components over the conductive path. If a component, such as a controller, couples other components together, the component initiates a change that allows signals to flow between the other components over a conductive path that previously did not permit signals to flow.
- The term “isolated” refers to a relationship between components in which signals are not presently capable of flowing between the components. Components are isolated from each other if there is an open circuit between them. For example, two components separated by a switch that is positioned between the components are isolated from each other if the switch is open. If a controller isolates two components, the controller affects a change that prevents signals from flowing between the components using a conductive path that previously permitted signals to flow.
- The devices discussed herein, including a memory array, may be formed on a semiconductor substrate, such as silicon, germanium, silicon-germanium alloy, gallium arsenide, gallium nitride, etc. In some examples, the substrate is a semiconductor wafer. In other examples, the substrate may be a silicon-on-insulator (SOI) substrate, such as silicon-on-glass (SOG) or silicon-on-sapphire (SOP), or epitaxial layers of semiconductor materials on another substrate. The conductivity of the substrate, or sub-regions of the substrate, may be controlled through doping using various chemical species including, but not limited to, phosphorous, boron, or arsenic. Doping may be performed during the initial formation or growth of the substrate, by ion-implantation, or by any other doping means.
- A switching component or a transistor discussed herein may represent a field-effect transistor (FET) and comprise a three terminal device including a source, drain, and gate. The terminals may be connected to other electronic elements through conductive materials, e.g., metals. The source and drain may be conductive and may comprise a heavily-doped, e.g., degenerate, semiconductor region. The source and drain may be separated by a lightly-doped semiconductor region or channel. If the channel is n-type (i.e., majority carriers are electrons), then the FET may be referred to as a n-type FET. If the channel is p-type (i.e., majority carriers are holes), then the FET may be referred to as a p-type FET. The channel may be capped by an insulating gate oxide. The channel conductivity may be controlled by applying a voltage to the gate. For example, applying a positive voltage or negative voltage to an n-type FET or a p-type FET, respectively, may result in the channel becoming conductive. A transistor may be “on” or “activated” if a voltage greater than or equal to the transistor’s threshold voltage is applied to the transistor gate. The transistor may be “off” or “deactivated” if a voltage less than the transistor’s threshold voltage is applied to the transistor gate.
- The description set forth herein, in connection with the appended drawings, describes example configurations and does not represent all the examples that may be implemented or that are within the scope of the claims. The term “exemplary” used herein means “serving as an example, instance, or illustration,” and not “preferred” or “advantageous over other examples.” The detailed description includes specific details to providing an understanding of the described techniques. These techniques, however, may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form to avoid obscuring the concepts of the described examples.
- In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If just the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
- The functions described herein may be implemented in hardware, software executed by a processor, firmware, or any combination thereof. If implemented in software executed by a processor, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Other examples and implementations are within the scope of the disclosure and appended claims. For example, due to the nature of software, functions described above can be implemented using software executed by a processor, hardware, firmware, hardwiring, or combinations of any of these. Features implementing functions may also be physically located at various positions, including being distributed such that portions of functions are implemented at different physical locations.
- For example, the various illustrative blocks and modules described in connection with the disclosure herein may be implemented or performed with a general-purpose processor, a DSP, an ASIC, an FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
- As used herein, including in the claims, “or” as used in a list of items (for example, a list of items prefaced by a phrase such as “at least one of” or “one or more of”) indicates an inclusive list such that, for example, a list of at least one of A, B, or C means A or B or C or AB or AC or BC or ABC (i.e., A and B and C). Also, as used herein, the phrase “based on” shall not be construed as a reference to a closed set of conditions. For example, an exemplary step that is described as “based on condition A” may be based on both a condition A and a condition B without departing from the scope of the present disclosure. In other words, as used herein, the phrase “based on” shall be construed in the same manner as the phrase “based at least in part on.” If used to describe a conditional action or process, the terms “if,” “when,” “based on,” “based at least in part on,” and “in response to,” may be interchangeable.
- Computer-readable media includes both non-transitory computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A non-transitory storage medium may be any available medium that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, non-transitory computer-readable media can comprise RAM, ROM, electrically erasable programmable read-only memory (EEPROM), compact disk (CD) ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other non-transitory medium that can be used to carry or store desired program code means in the form of instructions or data structures and that can be accessed by a general-purpose or special-purpose computer, or a general-purpose or special-purpose processor. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, include CD, laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of computer-readable media.
- The description herein is provided to enable a person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the scope of the disclosure. Thus, the disclosure is not limited to the examples and designs described herein, but is to be accorded the broadest scope consistent with the principles and novel features disclosed herein.
Claims (21)
1. (canceled)
2. An apparatus, comprising:
a memory device; and
a controller coupled with the memory device and configured to cause the apparatus to:
read a plurality of memory cells of a memory array of the memory device using a read threshold having a first value;
adjust the read threshold from the first value to a second value based at least in part on a quantity of memory cells of the plurality of memory cells indicated, by the reading using the read threshold having the first value, as corresponding to a logic value of a plurality of logic values; and
read the plurality of memory cells of the memory array using the read threshold having the second value.
3. The apparatus of claim 2 , wherein the controller is further configured to cause the apparatus to:
compare the quantity of memory cells indicated as corresponding to the logic value to a second quantity of memory cells of the plurality of memory cells indicated, by the reading using the read threshold having the first value, as corresponding to a second logic value of the plurality of logic values, wherein adjusting the read threshold from the first value to the second value is based at least in part on the comparison.
4. The apparatus of claim 3 , wherein the controller is further configured to cause the apparatus to:
select a direction of adjustment, or a magnitude of adjustment, or both based at least in part on the comparison, wherein the adjusting the read threshold from the first value to the second value is in accordance with the selected direction of adjustment, or the selected magnitude of adjustment, or both.
5. The apparatus of claim 2 , wherein the controller is further configured to cause the apparatus to:
determine that the quantity of memory cells indicated as corresponding to the logic value satisfies a threshold, wherein adjusting the read threshold from the first value to the second value is based at least in part on the determination that the quantity of memory cells indicated as corresponding to the logic value satisfies the threshold.
6. The apparatus of claim 5 , wherein the controller is further configured to cause the apparatus to:
select a direction of adjustment, or a magnitude of adjustment, or both based at least in part on the determination that the quantity of memory cells indicated as corresponding to the logic value satisfies the threshold, wherein adjusting the read threshold from the first value to the second value is in accordance with the selected direction of adjustment, or the selected magnitude of adjustment, or both.
7. The apparatus of claim 2 , wherein, to adjust the read threshold from the first value to the second value, the controller is further configured to cause the apparatus to:
determine a direction of the adjustment, or a magnitude of the adjustment, or both based at least in part on a look-up table.
8. The apparatus of claim 2 , wherein the controller is further configured to cause the apparatus to:
detect an error, using an error correction code scheme, after reading the plurality of memory cells using the read threshold having the first value; and
determine that the error is an uncorrectable error for the error correction code scheme, wherein adjusting the read threshold is based at least in part on the determination that the error is uncorrectable for the error correction code scheme.
9. The apparatus of claim 2 , wherein the read threshold comprises a voltage threshold, a current threshold, or a combination thereof.
10. The apparatus of claim 2 , wherein the controller is further configured to cause the apparatus to:
detect an error based at least in part on reading the plurality of memory cells using the read threshold having the second value; and
adjust the read threshold from the second value to a third value based at least in part on the detected error.
11. A non-transitory computer-readable medium storing code comprising instructions which, when executed by a processor of an electronic device, cause the electronic device to:
read a plurality of memory cells of a memory array using a read threshold having a first value;
adjust the read threshold from the first value to a second value based at least in part on a quantity of memory cells of the plurality of memory cells indicated, by the reading using the read threshold having the first value, as corresponding to a logic value of a plurality of logic values; and
read the plurality of memory cells of the memory array using the read threshold having the second value.
12. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the processor of the electronic device, further cause the electronic device to:
compare the quantity of memory cells indicated as corresponding to the logic value to a second quantity of memory cells of the plurality of memory cells indicated, by the reading using the read threshold having the first value, as corresponding to a second logic value of the plurality of logic values, wherein adjusting the read threshold from the first value to the second value is based at least in part on the comparison.
13. The non-transitory computer-readable medium of claim 12 , wherein the instructions, when executed by the processor of the electronic device, further cause the electronic device to:
select a direction of adjustment, or a magnitude of adjustment, or both based at least in part on the comparison, wherein the adjusting the read threshold from the first value to the second value is in accordance with the selected direction of adjustment, or the selected magnitude of adjustment, or both.
14. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the processor of the electronic device, further cause the electronic device to:
determine that the quantity of memory cells indicated as corresponding to the logic value satisfies a threshold, wherein adjusting the read threshold from the first value to the second value is based at least in part on the determination that the quantity of memory cells indicated as corresponding to the logic value satisfies the threshold.
15. The non-transitory computer-readable medium of claim 14 , wherein the instructions, when executed by the processor of the electronic device, further cause the electronic device to:
select a direction of adjustment, or a magnitude of adjustment, or both based at least in part on the determination that the quantity of memory cells indicated as corresponding to the logic value satisfies the threshold, wherein adjusting the read threshold from the first value to the second value is in accordance with the selected direction of adjustment, or the selected magnitude of adjustment, or both.
16. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the processor of the electronic device, further cause the electronic device to:
detect an error, using an error correction code scheme, after reading the plurality of memory cells using the read threshold having the first value; and
determine that the error is uncorrectable for the error correction code scheme, wherein adjusting the read threshold is based at least in part on the determination that the error is uncorrectable for the error correction code scheme.
17. The non-transitory computer-readable medium of claim 11 , wherein the read threshold comprises a voltage threshold, a current threshold, or a combination thereof.
18. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the processor of the electronic device, further cause the electronic device to:
detect an error based at least in part on reading the plurality of memory cells using the read threshold having the second value; and
adjust the read threshold from the second value to a third value based at least in part on the detected error.
19. A method performed by a memory device, the method comprising:
reading a plurality of memory cells of a memory array of the memory device using a read threshold having a first value;
adjusting the read threshold from the first value to a second value based at least in part on a quantity of memory cells of the plurality of memory cells indicated, by the reading using the read threshold having the first value, as corresponding to a logic value of a plurality of logic values; and
reading the plurality of memory cells of the memory array using the read threshold having the second value.
20. The method of claim 19 , further comprising:
comparing the quantity of memory cells indicated as corresponding to the logic value to a second quantity of memory cells of the plurality of memory cells indicated, by the reading using the read threshold having the first value, as corresponding to a second logic value of the plurality of logic values, wherein adjusting the read threshold from the first value to the second value is based at least in part on the comparison.
21. The method of claim 20 , further comprising:
selecting a direction of adjustment, or a magnitude of adjustment, or both based at least in part on the comparison.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/890,014 US11854641B2 (en) | 2021-04-26 | 2022-08-17 | Read threshold adjustment techniques for memory |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/240,938 US11443828B1 (en) | 2021-04-26 | 2021-04-26 | Read threshold adjustment techniques for memory |
US17/890,014 US11854641B2 (en) | 2021-04-26 | 2022-08-17 | Read threshold adjustment techniques for memory |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/240,938 Continuation US11443828B1 (en) | 2021-04-26 | 2021-04-26 | Read threshold adjustment techniques for memory |
Publications (2)
Publication Number | Publication Date |
---|---|
US20230030713A1 true US20230030713A1 (en) | 2023-02-02 |
US11854641B2 US11854641B2 (en) | 2023-12-26 |
Family
ID=83196067
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/240,938 Active US11443828B1 (en) | 2021-04-26 | 2021-04-26 | Read threshold adjustment techniques for memory |
US17/890,014 Active 2041-05-16 US11854641B2 (en) | 2021-04-26 | 2022-08-17 | Read threshold adjustment techniques for memory |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/240,938 Active US11443828B1 (en) | 2021-04-26 | 2021-04-26 | Read threshold adjustment techniques for memory |
Country Status (2)
Country | Link |
---|---|
US (2) | US11443828B1 (en) |
CN (1) | CN115248743B (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11443828B1 (en) * | 2021-04-26 | 2022-09-13 | Micron Technology, Inc. | Read threshold adjustment techniques for memory |
US11656789B2 (en) * | 2021-08-25 | 2023-05-23 | Western Digital Technologies, Inc. | Asymmetric read sense |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9454420B1 (en) * | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US20170011803A1 (en) * | 2015-07-09 | 2017-01-12 | Apple Inc. | Adaptation of high-order read thresholds |
US9653156B2 (en) * | 2015-02-20 | 2017-05-16 | Kabushiki Kaisha Toshiba | Memory controller, nonvolatile semiconductor memory device and memory system |
US11443828B1 (en) * | 2021-04-26 | 2022-09-13 | Micron Technology, Inc. | Read threshold adjustment techniques for memory |
US11494114B1 (en) * | 2021-04-26 | 2022-11-08 | Micron Technology, Inc. | Read threshold adjustment techniques for non-binary memory cells |
US20230112694A1 (en) * | 2021-10-07 | 2023-04-13 | Samsung Electronics Co., Ltd. | Storage devices and methods of operating storage devices |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117519B2 (en) * | 2008-01-15 | 2012-02-14 | Micron Technology, Inc. | Memory apparatus and method using erasure error correction to reduce power consumption |
US11336303B2 (en) * | 2010-06-04 | 2022-05-17 | Micron Technology, Inc. | Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory |
US20130047045A1 (en) * | 2011-08-19 | 2013-02-21 | Stec, Inc. | Error indicator from ecc decoder |
US8719647B2 (en) * | 2011-12-15 | 2014-05-06 | Micron Technology, Inc. | Read bias management to reduce read errors for phase change memory |
US9728263B2 (en) * | 2013-05-31 | 2017-08-08 | Sandisk Technologies Llc | Method and device for iteratively updating read voltages |
US9818488B2 (en) | 2015-10-30 | 2017-11-14 | Seagate Technology Llc | Read threshold voltage adaptation using bit error rates based on decoded data |
US10417086B2 (en) * | 2017-08-11 | 2019-09-17 | Winbond Electronics Corp. | Data write method and memory storage device using the same |
US10949293B2 (en) * | 2018-07-24 | 2021-03-16 | Micron Technology Inc. | Erroneous bit discovery in memory system |
US10833704B1 (en) * | 2018-12-12 | 2020-11-10 | Xilinx, Inc. | Low-density parity check decoder using encoded no-operation instructions |
KR20220039432A (en) * | 2020-09-22 | 2022-03-29 | 삼성전자주식회사 | Semiconductor memory devices and methods of operating the same |
-
2021
- 2021-04-26 US US17/240,938 patent/US11443828B1/en active Active
-
2022
- 2022-04-25 CN CN202210441893.8A patent/CN115248743B/en active Active
- 2022-08-17 US US17/890,014 patent/US11854641B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9454420B1 (en) * | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9653156B2 (en) * | 2015-02-20 | 2017-05-16 | Kabushiki Kaisha Toshiba | Memory controller, nonvolatile semiconductor memory device and memory system |
US20170011803A1 (en) * | 2015-07-09 | 2017-01-12 | Apple Inc. | Adaptation of high-order read thresholds |
US11443828B1 (en) * | 2021-04-26 | 2022-09-13 | Micron Technology, Inc. | Read threshold adjustment techniques for memory |
US11494114B1 (en) * | 2021-04-26 | 2022-11-08 | Micron Technology, Inc. | Read threshold adjustment techniques for non-binary memory cells |
US20230112694A1 (en) * | 2021-10-07 | 2023-04-13 | Samsung Electronics Co., Ltd. | Storage devices and methods of operating storage devices |
Also Published As
Publication number | Publication date |
---|---|
CN115248743B (en) | 2024-03-15 |
US11854641B2 (en) | 2023-12-26 |
CN115248743A (en) | 2022-10-28 |
US11443828B1 (en) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934688B2 (en) | Read threshold adjustment techniques for non-binary memory cells | |
US11854641B2 (en) | Read threshold adjustment techniques for memory | |
US11809329B2 (en) | Recovery of logical-to-physical table information for a memory device | |
US11016843B2 (en) | Direct-input redundancy scheme with adaptive syndrome decoder | |
US11716096B2 (en) | Memory error correction based on layered error detection | |
US12001279B2 (en) | Error protection for managed memory devices | |
US11782787B2 (en) | Dynamic error control configuration for memory systems | |
US11789817B2 (en) | Error correction for internal read operations | |
US11875039B2 (en) | Temperature-based scrambling for error control in memory systems | |
US11726863B2 (en) | Memory data correction using multiple error control operations | |
US11797385B2 (en) | Managing information protection schemes in memory systems | |
US12027213B2 (en) | Determining offsets for memory read operations | |
US11942966B2 (en) | Managing error control information using a register | |
US11977443B2 (en) | Dynamic parity scheme |
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 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |