Avoiding errors based on block family voltage distribution parameters
By measuring and utilizing the voltage distribution parameters of the memory device, the appropriate read level value is identified, which solves the problem of time voltage shift caused by slow charge loss in memory cells, improves the efficiency and accuracy of read operations, and reduces system resource consumption.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- MICRON TECHNOLOGY INC
- Filing Date
- 2022-03-30
- Publication Date
- 2026-05-19
AI Technical Summary
In the prior art, the threshold voltage of memory cells shifts over time due to slow charge loss, which increases the bit error rate in read operations. Furthermore, existing methods consume significant resources or are inefficient when trying to mitigate this problem.
By measuring the voltage distribution parameter values in the memory device, the corresponding read level value is identified, and a read level suitable for mitigating time voltage shift is determined at the block or block group level. This reduces the measurement frequency, and the distributed voltage is stored in the block family metadata table to improve read operation efficiency.
It effectively reduces the bit error rate in read operations, lowers system resource consumption, improves the efficiency and accuracy of read operations, and reduces the storage requirements of the metadata table.
Smart Images

Figure CN115148267B_ABST
Abstract
Description
Technical Field
[0001] The embodiments of this disclosure generally relate to memory subsystems, and more specifically, to error avoidance using characteristics of voltage distribution. Background Technology
[0002] A memory subsystem may include one or more memory devices for storing data. Memory devices may be, for example, non-volatile memory devices and volatile memory devices. Generally, a host system can utilize a memory subsystem to store data at memory devices and retrieve data from memory devices. Summary of the Invention
[0003] In one aspect, this disclosure relates to a method comprising: receiving, via a processing means, a request to read data from a block of a memory device coupled to the processing means; determining, using a first data structure that maps block identifiers to corresponding block family identifiers, a block family associated with the block of the memory device; determining, using a second data structure that maps block family identifiers to corresponding voltage distribution parameter values, voltage distribution parameter values associated with the block family; determining a set of read levels associated with the voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell included in the block of the memory device; and reading data from the block of the memory device using the determined set of read levels.
[0004] In another aspect, this disclosure relates to a system comprising: a memory; and a processing means communicatively coupled to the memory, the processing means performing operations including: receiving a read data request from a block of the memory; determining voltage distribution parameter values associated with the block of the memory using a data structure that maps one or more block identifier sets to corresponding voltage distribution parameter values; determining a set of read levels associated with the voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell in which at least a portion of the block of the memory is stored; and reading data from the block of the memory using the determined set of read levels.
[0005] In another aspect, this disclosure relates to a non-transitory machine-readable storage medium storing instructions that cause a processing device to perform operations including: receiving a request to read data from a block of a memory device coupled to the processing device; determining a block family associated with the block of the memory device using a first data structure that maps block identifiers to corresponding block family identifiers; determining voltage distribution parameter values associated with the block family using a second data structure that maps block family identifiers to corresponding voltage distribution parameter values; determining a set of read levels associated with the voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell included in the block of the memory device; and reading data from the block of the memory device using the determined set of read levels. Attached Figure Description
[0006] This disclosure will be more fully understood from the detailed description given below and the accompanying drawings of various embodiments thereof. However, the drawings should not be construed as limiting this disclosure to the specific embodiments, but are for explanation and understanding only.
[0007] Figure 1 This describes an example computing system including a memory subsystem according to some embodiments of the present disclosure.
[0008] Figure 2 This illustration schematically depicts time-voltage shift caused by slow charge loss exhibited by a three-level memory cell according to some embodiments of the present disclosure.
[0009] Figure 3 The illustration schematically depicts the distributed voltage corresponding to specific characteristics of the voltage distribution according to some embodiments of the present disclosure, as well as the voltage distribution and the change of the distributed voltage over time.
[0010] Figure 4A and 4B An example of reading a level manager component according to some embodiments of this disclosure is described.
[0011] Figure 4C An example of a read level manager that can use a block family to determine voltage distribution parameters according to some embodiments of this disclosure is described.
[0012] Figure 4D An instance read level manager is described, which uses a block identifier set to determine voltage distribution parameters according to some embodiments of this disclosure.
[0013] Figure 5A This is a flowchart of an example method for determining a read level based on the distributed voltage of a memory cell and reading data using the determined read level, according to aspects of this disclosure.
[0014] Figure 5B This is a flowchart of an example method for determining a read level based on the distributed voltage of a block and reading data using the determined read level, according to aspects of this disclosure.
[0015] Figure 5C This is a flowchart of an example method for determining the read level of a block based on the distributed voltage of a block family containing the block, and for reading data using the determined read level, according to aspects of this disclosure.
[0016] Figure 5D This is a flowchart of an example method for determining a read level based on the distributed voltage of a block and reading data using the determined read level, according to aspects of this disclosure.
[0017] Figure 6 This is a flowchart of an example method for performing a distributed voltage calibration scan according to aspects of this disclosure to determine the distributed voltage of a block and store the distributed voltage in a block metadata table.
[0018] Figure 7 This is a block diagram of an example computer system in which embodiments of the present disclosure can be operated. Detailed Implementation
[0019] This disclosure relates to error avoidance in memory devices using voltage distribution parameters, such as voltage corresponding to the voltage distribution and its change over time as the voltage distribution is attributed to slow charge loss. The memory subsystem can be a memory device, a memory module, or a combination of both. The following is combined with… Figure 1 Describe examples of storage devices and memory modules. Generally, a host system may utilize a memory subsystem that includes one or more components, such as a memory device for storing data. The host system can provide data to be stored in the memory subsystem and can request to retrieve data from the memory subsystem.
[0020] The memory subsystem may contain high-density non-volatile memory devices, where data retention is required when no power is supplied to the memory devices. An example of a non-volatile memory device is a NAND flash memory device. The following section combines... Figure 1Other examples of non-volatile memory devices are described. A non-volatile memory device is a package of one or more dies. Each die may consist of one or more planes. For some types of non-volatile memory devices (e.g., NAND devices), each plane consists of a set of physical blocks. Each block consists of a set of pages. Each page consists of a set of memory cells (“cells”). A cell is an electronic circuit that stores information. Depending on the cell type, a cell may store one or more bits of binary information and has various logic states associated with the number of bits stored. The logic states may be represented by binary values (e.g., “0” and “1” or combinations of such values).
[0021] Data operations can be performed by the memory subsystem. Data operations can be host-initiated. For example, the host system can initiate data operations (e.g., write, read, erase, etc.) on the memory subsystem. The host system can send access requests (e.g., write commands, read commands) to the memory subsystem to store data on a memory device located in the memory subsystem and to read data from a memory device on the memory subsystem. The data to be read or written, as specified by the host request, is referred to hereinafter as "host data". The host request may contain logical address information (e.g., logical block address (LBA), namespace) for the host data, which is the location associated between the host system and the host data. The logical address information (e.g., LBA, namespace) may be part of the metadata of the host data. The metadata may also include error handling data (e.g., error correction codes (ECC), parity data), data version (e.g., to distinguish between new and old data being written), a valid bitmap (whose LBA or logical transfer unit contains valid data), etc.
[0022] A memory device comprises multiple memory cells, each of which may store one or more bits of information, depending on the memory cell type. A memory cell can be programmed (written to) by applying a voltage to it, which causes the memory cell to retain a charge, thereby allowing modulation of the voltage distribution generated by the memory cell. Furthermore, precise control over the amount of charge stored in a memory cell allows the use of multiple threshold voltage levels corresponding to different logic levels. Multiple threshold levels allow a single memory cell to store multiple bits of information: in 2... n A memory cell operating at different threshold voltage levels can store n bits of information. Therefore, a read operation can be performed by comparing the measured voltage exhibited by the memory cell with one or more threshold voltage levels to distinguish between two logic levels for a single-level cell and multiple logic levels for a multi-level cell.
[0023] In this document, "block" should refer to a set of contiguous or non-contiguous memory pages. An example of a "block" is an "erasable block," which is the smallest erasable unit of memory, while a "page" is the smallest writable unit of memory. Each page comprises a set of memory cells. A memory cell is an electronic circuit that stores information. "Superblock" should refer to a set of blocks that spans multiple dies written in an interleaved manner. In some cases, a superblock may span all dies within a storage device, such as an SSD. A superblock may contain multiple blocks from a single die, for example, one per plane. Drives typically manage data erasure and programming on a superblock basis.
[0024] "Read level" in this document should refer to the voltage level. The read levels are numbered L1 to L2 in ascending order of voltage. n , where n is the number of bits that can be stored in the cell. As an example, for a three-level cell (TLC) corresponding to 3 bits per cell, there can be 8 threshold distributions (levels), and 7 read thresholds (read threshold voltages) can be used to distinguish between levels. "Read level value" herein should refer to a voltage or a digital-to-audio converter (DAC) value representing the voltage applied to the read element (typically the control gate of a NAND cell) for the purpose of reading the cell. "Read level offset" herein should refer to a component of the equation that determines the read level value. Read level offsets can be summed (e.g., read level value = offset_a + offset_b + ...). "Read level base" herein should refer to one of the read level offsets. For example, the read level base can be stored in the metadata of the memory device. Each read level can correspond to one of the threshold levels described above. "Calibration" herein should refer to changing the read level value (possibly by adjusting the read level offset or read level base) based on one or more measurements of selected data state metrics (e.g., bit error rate) to better match the ideal read level for reading or a read set.
[0025] A write operation stores a logic value, such as zero or one, in a memory cell by applying a "programming" voltage corresponding to the logic value to the write gate. A read operation is performed by applying a read voltage to the control gate of the memory cell and determining whether the read voltage is sufficient to overcome the voltage stored at the cell. As an example, in a single-level cell, a first voltage level (e.g., 0 volts) may correspond to logic one, and a second voltage level (e.g., 3 volts) may correspond to logic zero. Logic zero can be stored by applying 3 volts to the write gate, and logic one corresponds to an erase distribution, which in this example corresponds to 0 volts. To read the cell, a voltage can be applied to the cell's control gate. If the applied read voltage causes the transistor to conduct, the voltage stored in the cell is less than the applied voltage. Therefore, a voltage between the first and second voltage levels can then be applied to the control gate to determine whether logic zero or one is stored in the cell. For example, if 1.5 volts are applied to the control gate and the cell threshold voltage is 3 volts (logic zero), the transistor does not conduct (because the applied 1.5 volts cannot overcome the written 3 volts), and the stored value is determined to be logic zero. Alternatively, if the cell threshold voltage is 0 volts (logic one) and 1.5 volts are applied to the control gate, the transistor conducts (because the applied 1.5 volts overcome the written volts), thereby indicating logic one.
[0026] As discussed above, n information bits can be stored in memory cells using multiple voltage levels. A read voltage level can be understood as corresponding to a valley between two voltage distributions, as described below. The read voltage level can be between two threshold voltages, each of which separates the voltage level from the other. To store n information bits, 2... n Threshold distribution (level). To read 2 n Two threshold distributions can be established to create 2 n-1 read threshold (read value). For example, to store two information bits that can represent four different logic values, the corresponding threshold voltages could be 1 volt, 2 volts, and 3 volts. A specific logic value can be stored in the cell by applying a programming voltage level corresponding to the logic value to the cell's write gate. Then, to read the two information bits from the cell, three operations can be performed to identify the voltage that overcomes the voltage stored in the cell: apply 0.5 volts to the control gate and read (e.g., by determining if the transistor is conducting), apply 1.5 volts and read, and apply 2.5 volts and read. The result can be used to determine the values of the two logic bits. If applying 0.5 volts causes the transistor to conduct, then 0.5 volts has overcome the written voltage, so the written voltage is 0 volts (e.g., logic zero). Similarly, if applying 1.5 volts causes the transistor to conduct, then the written voltage is 1 volt (e.g., logic one), and the threshold voltage is 1.5 volts. If applying 2.5 volts causes the transistor to conduct, then the written voltage is 2 volts (e.g., logic three). Otherwise, the written voltage is 3 volts (e.g., logic 2). During writing, the voltage applied to the write gate is inaccurate and traverses a distribution of voltages that can be represented as near each of the programming voltage levels across several memory cells. Therefore, in a cell that can be interpreted as representing the voltage of two bits, there are four corresponding threshold voltage distributions. Each distribution can be understood as a curve with a peak representing the highest probability of occurrence at the corresponding programming voltage level. Each voltage distribution may have a decreasing probability of occurrence to the left and right of the peak. The probability of occurrence may decrease towards a minimum value, which is close to 0 at voltages to the left and right of the peak (below and above the programming voltage level). The voltage of the minimum probability of occurrence may correspond to the threshold voltage at the boundary between the voltage distribution and adjacent voltage distributions.
[0027] Due to a phenomenon known as Slow Charge Loss (“SCL”), the threshold voltage of a memory cell changes over time as the cell’s charge degrades; this is called “time voltage shift” (because charge degradation causes the voltage distribution to shift along the voltage axis towards a lower voltage level). Time voltage shift (TVS) should be used herein to refer to the change in the measured voltage of a cell over time. TVS can include various components, such as inherent charge loss, system charge loss, and fast charge loss. Memory fabricated using certain NAND technologies typically exhibits more TVS than floating gate NAND. TVS typically increases with program-erase cycles (PECs), higher temperatures, and higher programming voltages. TVS exhibits a significant die-to-die variation. In memories exhibiting TVS, the threshold voltage changes rapidly initially (immediately after the memory cell is programmed) and then slows down approximately logarithmically with respect to the time elapsed since the cell programming event began. If the time voltage shift caused by slow charge loss is not reduced, it can increase the bit error rate in read operations.
[0028] This disclosure addresses the above and other deficiencies by providing a memory subsystem controller that determines a read level suitable for mitigating time-voltage shift by measuring voltage distribution parameter values (“parameter values”) of each block or group of blocks stored in a memory device and identifying read level values corresponding to the parameter values. The memory subsystem controller can use the read level values to mitigate time-voltage shift when reading data from a block or group of blocks. The parameter value can be, for example, a voltage corresponding to a specific characteristic of the voltage distribution of a memory cell. The specific characteristic can be, for example, a characteristic of the voltage distribution, such as the peak, median, mean, or modulus of the voltage distribution. The parameter value changes over time and can correspond to the amount of time-voltage shift of the memory cell. The memory subsystem controller can use the specific parameter value to determine a read level suitable for the amount of time-voltage shift corresponding to the specific parameter value.
[0029] In this document, "distributed voltage" should refer to a distributed parameter value, which is a voltage and corresponds to a specific characteristic of the voltage distribution of a memory cell. For example, distributed voltage can be understood as the voltage value corresponding to the peak value of a voltage distribution. Distributed voltage can be the median, mean, magnitude, or other characteristic of a voltage distribution. A voltage distribution can be a specific voltage distribution within the voltage distribution of a memory cell; for example, the 7th voltage distribution (or other specified voltage distribution) of a three-level memory cell can store voltages that can represent eight values corresponding to eight voltage distributions numbered 0 to 7. The memory subsystem controller can look up the read level value corresponding to a specific parameter value in a mapping table that maps parameter values to corresponding read level values. For example, the mapping table can be a voltage mapping table that maps distributed voltages to read levels. A voltage mapping table can be generated from empirical data using a process that identifies distributed voltages corresponding to suitable read level values (e.g., generating read level values with low error rates, high accuracy, etc.).
[0030] In some embodiments, interpolation can be used to determine the read level of a distributed voltage that is not present in the voltage map. If the distributed voltage is not in the voltage map, the memory subsystem controller can determine the read level value of the distributed voltage by interpolation between two selected voltage values in the map that are respectively greater than and less than the distributed voltage. For example, the first selected voltage value could be the largest voltage value in the map that is less than the distributed voltage, and the second selected voltage value could be the smallest voltage value in the map that is greater than the distributed voltage. The read level can be determined as the average of the first voltage value and the second voltage value. For example, the difference between the first voltage and the distributed voltage can be used to weight the read level value associated with the first value relative to the read level value associated with the second value in a weighted average calculation.
[0031] In some embodiments, instead of measuring the distributed voltage of a block for each memory read operation, the memory subsystem controller may measure the distributed voltage of a block less frequently and store the distributed voltage in a block metadata table or another mapping table that associates a block with the distributed voltage. For example, the distributed voltage of a block may be measured, and the distributed voltage may be stored in the block metadata table whenever the time since the block was programmed has increased by a threshold amount (e.g., 50%) relative to the previous time when the distributed voltage of the block was measured. The memory subsystem controller may then retrieve the distributed voltage of a particular block from the block metadata table, for example, by looking up the distributed voltage corresponding to the block in the block metadata table for each memory read operation. The memory subsystem controller may then use the voltage mapping table to determine the read level corresponding to the distributed voltage. Storing the distributed voltage associated with the block in this way and accessing the stored distributed voltage in a read operation enables read operations to be performed quickly and efficiently without the considerable additional latency required to identify the read level based on the distributed voltage.
[0032] In some embodiments, the memory subsystem controller may store distributed voltages in a block family metadata table that associates block families representing block sets with distributed voltages. The memory subsystem controller may maintain a block family metadata table that associates each block set with a corresponding block family. A block set may be, for example, a range of block identifiers or other block sets expected to have SCL-like characteristics. To determine the read level for a block read operation, the memory subsystem controller may identify the block family containing the blocks (using the block family metadata table), identify the distributed voltages associated with the block family (using the block family metadata table), and identify the read level corresponding to the distributed voltages (using a voltage mapping table). Over time, the distributed voltages associated with each block family in the block family metadata table may be updated, for example, by sampling the distributed voltages of the blocks in each block family to be updated. For example, the distributed voltages associated with the block family may be updated at periodic time intervals, or after a threshold time period following the next write operation to a block in the block family. The distributed voltage can be understood as representing the “position” of a distribution along an axis. The position may correspond to a characteristic of a particular voltage distribution of a memory cell (e.g., the 7th voltage distribution), such as a peak value. As time increases after programming, the location of a characteristic of a particular distribution, represented by the distributed voltage, shifts towards a lower voltage reflecting the state of time-voltage shift. The memory subsystem controller can measure the distributed voltage as the value of the voltage at a specific memory cell or group of cells within a block. The measured distributed voltage can be used to determine the read level value of the memory cell and other memory cells that may have similar amounts of time-voltage shift, such as other memory cells storing data in the same block or superblock as the measured memory cell. At a specific time after programming, the memory subsystem can mitigate the time-voltage shift effect when performing a read operation by measuring the location (“distribution location”) (e.g., the median voltage of the distribution) of a characteristic of a particular voltage distribution at a specific memory cell or group of cells and mapping the measured location (e.g., the distributed voltage) to a read level value previously determined to correspond to the distribution location. The memory subsystem can then use the read level value to read data from the memory cell.
[0033] The advantages of this disclosure include (but are not limited to) a smaller number of operations for determining read levels compared to other techniques that attempt to mitigate the effects of time voltage shift with finer granularity. For example, according to this disclosure, the operation of determining the read level offset can be performed on demand (e.g., in response to a request to access a specific block), without the additional overhead or complexity of garbage collection-related operations that may run indefinitely during system operation. The read level offset of a block or block group changes according to the age of the block because the distributed voltage changes to the value corresponding to the older block due to the time voltage shift effect itself. Furthermore, entries in the block metadata table can be deleted when a block is written. In addition, the operation of determining the distributed voltage may require fewer system resources and fewer reads because reads are performed at the block family level rather than at the block level. Therefore, performing reads at the block family level improves system performance.
[0034] Storing distributed voltages in association with block families and accessing the stored distributed voltages using the block family accessing the block being read in a read operation significantly reduces the amount of storage space used by the metadata table. This is because each association, rather than each block, is stored in the block family metadata table. A block family can correspond to, for example, hundreds or thousands of blocks, so the block family metadata table can be significantly smaller than a separate metadata table storing a distributed voltage association for each block. Since a block family can contain blocks with similar SCL characteristics (e.g., newness, wear, or temperature history), using a single distributed voltage to determine the read level of each block in the block family is unlikely to cause a decrease in read accuracy or an increase in read errors.
[0035] Figure 1This description describes an example computing system 100 including a memory subsystem 110 according to some embodiments of the present disclosure. The memory subsystem 110 may include media, such as one or more volatile memory devices (e.g., memory device 140), one or more non-volatile memory devices (e.g., memory device 130), or combinations thereof. The memory subsystem 110 may be a storage device, a memory module, or a mixture of storage devices and memory modules. Examples of storage devices include solid-state drives (SSDs), flash drives, universal serial bus (USB) flash drives, embedded multimedia controller (eMMC) drives, universal flash memory (UFS) drives, secure digital cards (SD cards), and hard disk drives (HDDs). Examples of memory modules include dual in-line memory modules (DIMMs), small outline DIMMs (SO-DIMMs), and various types of non-volatile dual in-line memory modules (NVDIMMs). The computing system 100 may be a computing device, such as a desktop computer, laptop computer, web server, mobile device, vehicle (e.g., airplane, drone, train, car or other means of transport), Internet of Things (IoT) enabled device, embedded computer (e.g., computer contained in a vehicle, industrial equipment or networked commercially available device), or such computing device that includes memory and processing power.
[0036] The computing system 100 may include a host system 120 coupled to one or more memory subsystems 110. In some embodiments, the host system 120 is coupled to different types of memory subsystems 110. Figure 1 This describes an example of a host system 120 coupled to a memory subsystem 110. As used herein, “coupled to…” or “coupled with…” generally refers to a connection between components, which can be an indirect or direct communication connection (e.g., without an intervening component), whether wired or wireless, including connections such as electrical, optical, and magnetic connections.
[0037] Host system 120 may include a processor chipset and a software stack executed by the processor chipset. The processor chipset may include one or more cores, one or more caches, a memory controller (e.g., an NVDIMM controller), and a storage protocol controller (e.g., a PCIe controller, a SATA controller). Host system 120 uses memory subsystem 110, for example, to write data to memory subsystem 110 and to read data from memory subsystem 110.
[0038] Host system 120 can be coupled to memory subsystem 110 via a physical host interface. Examples of physical host interfaces include, but are not limited to, Serial Advanced Technology Attachment (SATA) interfaces, Peripheral Component Interconnect High Speed (PCIe) interfaces, Universal Serial Bus (USB) interfaces, Fibre Channel, Serial Attached SCSI (SAS), Dual Data Rate (DDR) memory bus, Small Computer System Interface (SCSI), Dual In-line Memory Module (DIMM) interfaces (e.g., DIMM sockets supporting Dual Data Rate (DDR)). The physical host interface can be used to transmit data between host system 120 and memory subsystem 110. When memory subsystem 110 is coupled to host system 120 via a PCIe interface, host system 120 can further utilize an NVM High Speed (NVMe) interface to access memory components (e.g., memory device 130). The physical host interface provides an interface for transmitting control, address, data, and other signals between memory subsystem 110 and host system 120. Figure 1 The memory subsystem 110 is described as an example. Generally, the host system 120 can access multiple memory subsystems via the same communication connection, multiple separate communication connections, and / or a combination of communication connections.
[0039] Memory devices 130 and 140 may comprise any combination of different types of non-volatile memory devices and / or volatile memory devices. Volatile memory devices (e.g., memory device 140) may be, but are not limited to, random access memory (RAM), such as dynamic random access memory (DRAM) and synchronous dynamic random access memory (SDRAM).
[0040] Some examples of non-volatile memory devices (e.g., memory device 130) include NAND flash memory and in-place write memory, such as three-dimensional crosspoint (“3D crosspoint”) memory. The crosspoint array of non-volatile memory can be combined with a stackable cross-grid data access array to perform bit storage based on changes in volume resistance. Furthermore, compared to many flash-based memories, crosspoint non-volatile memory can perform in-place write operations, where non-volatile memory cells can be programmed without pre-erasing them. NAND flash memory includes, for example, two-dimensional NAND (2D NAND) and three-dimensional NAND (3D NAND).
[0041] Each of the memory devices 130 may include one or more arrays of memory cells. One type of memory cell, such as a single-level cell (SLC), may store one bit per cell. Other types of memory cells, such as multi-level cell (MLC), three-level cell (TLC), and four-level cell (QLC), may store multiple bits per cell. In some embodiments, each of the memory devices 130 may include one or more arrays of memory cells, such as SLC, MLC, TLC, QLC, or any combination of such arrays. In some embodiments, a particular memory device may include an SLC portion of memory cells, and an MLC portion, a TLC portion, or a QLC portion. The memory cells of the memory device 130 may be grouped into pages, which may refer to logical cells of the memory device used for storing data. For some types of memory (e.g., NAND), pages may be grouped to form blocks.
[0042] While non-volatile memory devices, such as 3D cross-point non-volatile memory cell arrays and NAND flash memories (e.g., 2D NAND, 3D NAND), are described, memory device 130 may be based on any other type of non-volatile memory, such as read-only memory (ROM), phase-change memory (PCM), auto-select memory, other chalcogenide-based memories, ferroelectric transistor random access memory (FeTRAM), ferroelectric random access memory (FeRAM), magnetic random access memory (MRAM), spin-transfer torque (STT)-MRAM, conductive bridged RAM (CBRAM), resistive random access memory (RRAM), oxide-based RRAM (OxRAM), NOR flash memory, and electrically erasable programmable read-only memory (EEPROM).
[0043] The memory subsystem controller 115 (for simplicity, controller 115) can communicate with the memory device 130 to perform operations, such as reading data, writing data, erasing data, and other such operations at the memory device 130. The memory subsystem controller 115 may include hardware, such as one or more integrated circuits and / or discrete components, buffer memories, or combinations thereof. The hardware may include a digital circuit system with dedicated (i.e., hard-decoded) logic to perform the operations described herein. The memory subsystem controller 115 may be a microcontroller, a dedicated logic circuit system (e.g., a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), etc.), or other suitable processor.
[0044] The memory subsystem controller 115 may include a processor 117 (e.g., a processing device) configured to execute instructions stored in local memory 119. In the illustrated example, the local memory 119 of the memory subsystem controller 115 includes embedded memory configured to store instructions for executing various processes, operations, logic flows, and routines that control the operation of the memory subsystem 110, including handling communication between the memory subsystem 110 and the host system 120.
[0045] In some embodiments, local memory 119 may include memory registers storing memory pointers, fetched data, etc. Local memory 119 may also include read-only memory (ROM) for storing microcode. Although in Figure 1 The instance memory subsystem 110 has been described as including a memory subsystem controller 115, but in another embodiment of this disclosure, the memory subsystem 110 does not include a memory subsystem controller 115, but instead may rely on external control (e.g., provided by an external host or by a processor or controller separate from the memory subsystem).
[0046] Typically, the memory subsystem controller 115 receives commands or operations from the host system 120 and translates these commands or operations into instructions or appropriate commands to perform the desired access to the memory device 130. The memory subsystem controller 115 may handle other operations such as wear leveling, garbage collection, error detection and error correction (ECC) operations, encryption, caching, and address translation between logical addresses (e.g., logical block addresses, namespaces) and physical addresses (e.g., physical block addresses) associated with the memory device 130. The memory subsystem controller 115 may further include a host interface circuitry for communicating with the host system 120 via a physical host interface. The host interface circuitry can translate commands received from the host system into instructions for accessing the memory device 130, and translate responses associated with the memory device 130 into information for the host system 120.
[0047] In some implementations, the memory subsystem 110 may use a striping scheme, in which each data payload (e.g., user data) utilizes multiple dies of the memory devices 130, 140 (e.g., NAND flash memory devices), such that the payload is distributed across a subset of the dies, while the remaining one or more dies are used to store error correction information (e.g., parity bits). Therefore, a set of blocks distributed across a set of dies of a memory device using a striping scheme is referred to herein as a “superblock”.
[0048] The memory subsystem 110 may also include additional circuitry or components not described. In some embodiments, the memory subsystem 110 may include a cache or buffer (e.g., DRAM) and an address circuitry (e.g., row decoder and column decoder) that can receive addresses from the memory subsystem controller 115 and decode the addresses to access the memory device 130.
[0049] In some embodiments, memory device 130 includes a local media controller 135, which operates in conjunction with memory subsystem controller 115 to perform operations on one or more memory cells of memory device 130. An external controller (e.g., memory subsystem controller 115) may externally manage memory device 130 (e.g., perform media management operations on memory device 130). In some embodiments, memory device 130 is a managed memory device, which is a raw memory device combined with a local controller (e.g., local controller 135) for media management within the same memory device package. An example of a managed memory device is a managed NAND (MNAND) device.
[0050] The memory subsystem 110 includes a read level manager component 113 that determines an appropriate read level for a memory cell based on voltages associated with specific characteristics of the voltage distribution of the memory cell. As described above, time-voltage shift causes the threshold read level of a memory cell to change over time. The read level determined based on the distributed voltage, as described below, mitigates the effect of time-voltage shift. When data is written to a memory cell, the amount of voltage placed on the cell's gate to be written to is not precise. Therefore, in order to write to several memory cells at a specified target voltage, there exists a distribution of voltages near each of the target voltages. The voltage distribution can be a distribution of threshold voltages across multiple memory cells programmed to be in a specific state associated with the voltage distribution.
[0051] The read level manager component 113 can perform a calibration scan at a specific time to measure the distributed voltage associated with a specific characteristic of the voltage distribution of one or more cells in each block (or superblock or other memory cell), and store the measured distributed voltage in association with the block in a block metadata table. For a read operation, the read level manager component 113 can determine the distributed voltage corresponding to the block by looking up the block in the block metadata table and retrieving the distributed voltage corresponding to the block from the block metadata table. The read level manager component 113 can then determine a suitable read level for the read operation by looking up the read level corresponding to the voltage in a voltage mapping table, and perform the read operation by reading data from the block using the read level.
[0052] In a particular embodiment, the memory subsystem controller 115 includes at least a portion of the read level manager component 113. For example, the memory subsystem controller 115 may include a processor 117 (processing means) configured to execute instructions stored in local memory 119 for performing the operations described herein. In some embodiments, the read level manager component 113 is part of the host system 110, an application, or an operating system. Further details regarding the read level manager component 113 are described below.
[0053] Figure 2 This describes a time-voltage shift caused, at least in part, by the slow charge loss exhibited by a three-level memory cell, according to embodiments of the present disclosure. Although Figure 2 The illustrative example utilizes a three-level cell, but the same observations can be made, and therefore, the same remedy can be applied to single-level cells and any memory cell with multiple levels. A memory cell can be programmed (written) by applying a specific voltage (e.g., a programming voltage) to it, which generates the charge held by the memory cell. Precise control of the amount of charge stored by the memory cell allows the memory cell to have multiple threshold voltage levels corresponding to different logic levels, thus effectively allowing a single memory cell to store multiple bits of information. With 2 n A memory cell operating at different threshold voltage levels can store n bits of information.
[0054] Each illustration in Figures 210 and 230 shows a programming voltage distribution 220A-220N (also referred to herein as a "programming distribution," "voltage distribution," or "distribution") for a memory cell programmed to encode the corresponding logic level by a corresponding write level (which may be assumed to be at the midpoint of the programming distribution). Programming distributions 220A to 220N illustrate the range (e.g., a normal distribution of threshold voltages) of the threshold voltages used to program the memory cell at the corresponding write level (e.g., programming voltage). To distinguish adjacent program distributions (corresponding to two different logic levels), read threshold voltage levels (shown by vertical dashed lines) are defined such that any measured voltage below the read threshold level is associated with one of a pair of adjacent program distributions, while any measured voltage greater than or equal to the read threshold level is associated with the other of the pair of adjacent distributions. In Figure 210, eight states of the memory cell are shown below the corresponding program distribution (the distribution of states is not shown except for the state marked ER, which is the erased state). Each state corresponds to a logic level. Threshold voltage levels are labeled Va to Vh. As shown, any measured voltage below Va is associated with the ER state. The states labeled P1, P2, P3, P4, P5, P6, and P7 correspond to distributions 22A-220N, respectively.
[0055] The time after programming (TAP) in this document refers to the time elapsed since the cell was written and, along with temperature, is a major driver of time-voltage shift (TVS). TAP can be estimated (e.g., inferred from data state metrics) or measured directly (e.g., based on the controller clock). Cells, blocks, pages, block families, etc., are new (or relatively new) with (relatively) small TAPs and old (or relatively old) with (relatively) large TAPs. A time slice is the duration between two TAP points during which measurements can be performed (e.g., reference calibration 8 to 12 minutes after programming). A time slice can be referenced by its center point (e.g., 10 minutes).
[0056] As can be seen from example graphs 210 and 230, which compare the time after programming (TAP) which is 0 (immediately after programming) and the TAP after T hours (where T is the number of hours), the program distribution changes over time primarily due to slow charge loss. To reduce the read bit error rate, the corresponding read threshold voltage can be adjusted to compensate for the shift in the program distribution, as shown by the vertical dashed line. In various embodiments of this disclosure, the time voltage shift is selectively tracked for the die group based on measurements taken at one or more representative dies in the die group. Based on measurements of the time voltage shift and operating temperature of the dies in the die group, which are characterized by representative dies in the die group, the read threshold voltage offset for reading memory cells in the die group is updated and applied to the base read threshold level to perform a read operation.
[0057] Figure 3 The illustration schematically depicts a distributed voltage corresponding to specific characteristics of a voltage distribution, as well as the voltage distribution and the change of the distributed voltage over time, according to some embodiments of the present disclosure. Although Figure 3 The illustrative example utilizes a three-level cell, but the same observations can be made, and therefore the same remedies can be applied to single-level cells and any memory cell with multiple levels. Figure 3 Chart 300 shows the voltage distribution of memory cells at time 0 hours after programming, and chart 350 shows the voltage distribution of memory cells at subsequent TAP hours. (See above regarding...) Figure 2 As described, the voltage distribution 320A-G has shifted after T hours, as shown in Figure 350.
[0058] Each of Figures 300 and 350 illustrates seven programming voltage distributions 320A-320G for memory cells programmed to encode corresponding logic levels via corresponding write levels (which can be assumed to be at the midpoint of the programming distribution). The programming distributions 320A to 320G are similar to those described above regarding... Figure 2The programming distributions described are 220A to 220N. Each memory cell has eight states, including an erase state corresponding to a voltage below the first voltage distribution 320A, and seven logic level states corresponding to the seven voltage distributions 320A to 320G.
[0059] The voltage distribution from 320A to 320G illustrates the range (e.g., a normal distribution of the threshold voltage) of the threshold voltages used to program memory cells at corresponding write levels (e.g., programming voltages). The above refers to... Figure 2 As described, in order to distinguish adjacent program distributions (corresponding to two different logic levels), a read threshold voltage level (shown by a vertical dashed line) is defined such that any measured voltage below the read threshold level is associated with one of the program distributions in a pair of adjacent program distributions, while any measured voltage greater than or equal to the read threshold level is associated with the other program distribution in the pair of adjacent distributions.
[0060] Each voltage distribution 320A-320G corresponds to a logic level. The read threshold voltage levels are labeled Va-Vh. Any measured voltage below Va is associated with an erase state. For example, a measured voltage is associated with an erase state or one of the seven programming states P1-P7, depending on the relationship between the measured voltage and a threshold or threshold pair, as shown in Table 1 below.
[0061] Lower threshold Upper limit threshold state none Va erase Va Vb P1 Vb Vc P2 Vc Vd P3 Vd Ve P4 Ve Vf P5 Vf Vg P6 Vg none P7
[0062] Table 1
[0063] As shown in Table 300, at TAP=0, the threshold voltage levels have values Va=-0.8, Vb=0.3, Vc=1.3, Vd=1.9, Ve=2.7, Vf=3.7, and Vg=4.5 volts. The distributed voltage can be calculated based on one or more of the voltage distributions 320A-320G. For example, the distributed voltage may correspond to a position on the voltage axis of a characteristic such as the peak value 330 of the seventh distribution 320G. The distributed voltage can be calculated as a function of the seventh distribution 320G, such as the median, mean, modulus, or other function of the distribution. In the example of Table 300, the distributed voltage is shown as Vmedian 340, which is calculated as the median of the seventh distribution 320G at TAP=0 and has a value of 4.9 volts.
[0064] As shown in Table 350, at TAP=T, the threshold voltage levels have values of Va=-0.8, Vb=0.3, Vc=1.2, Vd=1.8, Ve=2.4, Vf=3.3, and Vg=4.2 volts. The peak value of the seventh distribution 320G at TAP=T is shown as peak value 360. In the example of Table 350, the distribution voltage is shown as Vmedian 370, which is calculated as the median of the seventh distribution 320G at TAP=T and has a value of 4.7 volts.
[0065] While specific characteristics of a particular voltage distribution, such as the median of the seventh voltage distribution, have been described above, any suitable characteristic of any voltage distribution can be used to determine the distributed voltage. For example, the mean of the sixth voltage distribution 320F can be used as the distributed voltage. As another example, the distributed voltage can be calculated as the 90th percentile of the seventh voltage distribution, which corresponds to the lower right side of the distribution. In another example, the distributed voltage can be calculated as the mean (e.g., average) of the 25th and 75th percentiles of the seventh voltage distribution. In yet another example, the distributed voltage can be calculated as the mean of the means of the sixth and seventh voltage distributions. In a particular embodiment, a higher-numbered distribution is used to calculate the distributed voltage because higher-numbered distributions move faster over time than lower-numbered distributions, and therefore carry a stronger signal of the TVS. However, in other embodiments, one or more lower-numbered distributions can be used to calculate the distributed voltage. For example, the distributed voltage can be calculated as the mean of the means of the first distribution 320A and the seventh distribution 320G.
[0066] Figure 4A An example of a read level manager 402 according to some embodiments of the present disclosure is depicted. The read level manager 402 may correspond to... Figure 1 The memory subsystem controller 115 shown in the diagram has a read level manager component 113. The read level manager 402 may include a voltage mapping table 406, which may be stored in the local memory 119 of the memory subsystem controller 115 or other suitable memory (e.g., the memory of the host system 120). The voltage mapping table 406 may store a mapping between distributed voltages and read level sets. For each distributed voltage associated with a read level set, the voltage mapping table 406 may include a mapping containing the distributed voltage V. M and read level set RL1 M -RLN M The line. In Figure 4A In the example, voltage mapping table 406 contains three entries for distributed voltages, 4.9, 4.7 and 4.3, as shown in Table 2 below.
[0067] Characteristic voltage Read level 1 Read level 2 Read level 3 Read level 4 Read level 5 Read level 6 Read level 7 4.9 -0.8 0.3 1.3 1.9 2.7 3.6 4.5 4.7 -0.8 0.3 1.2 1.8 2.4 3.3 4.2 4.3 -0.9 0.2 1.1 1.7 2.5 3.0 4.0
[0068] Table 2
[0069] The instance read levels for distributed voltages of 4.9V and 4.7V in voltage mapping table 406 correspond to... Figure 3 The threshold voltages associated with Vmedian = 4.9V and Vmedian = 4.7V are specified. While voltage map 406 is described as containing read levels that can be used in read operations, voltage map 406 may alternatively or additionally contain read level offsets that can be added to the base read levels to determine the read levels to be used in read operations. Voltage map 406 may be generated by a voltage map generator (not shown), for example, using an empirical process. The empirical process may, for example, perform read operations on memory cells 432 of memory device 130 using a range of distributed voltages and analyze the results received from memory cells 432 to determine the read levels of the range of distributed voltages, as described below. In one embodiment, empirical data may be generated during the verification testing of one or more memory devices (e.g., NAND memory devices) and appropriately averaged and reduced to represent the expected voltage map. In another embodiment, empirical data may be generated during the manufacturing process of the memory device (e.g., NAND) to include a large total number of dies, utilizing a similar data reduction process to represent the dies in a single voltage map. In another embodiment, empirical data may be collected and streamlined into voltage mapping tables during the manufacturing process of a storage device (e.g., an SSD) to represent dies within a group of storage devices or a single storage device. In yet another embodiment, empirical data may be generated for each die within a storage device during the storage device manufacturing process, and a separate voltage mapping table may be used for each die within a storage device.
[0070] The read level manager 402 may also include a data read component 410, which can receive read requests, determine appropriate read levels, and read data from one or more memory devices (e.g., memory device 130) using the determined read levels. The data read component 410 may include a read request receiver 412, a distributed voltage determiner 413, a read level determiner 420, and a data reader 426. The read request receiver 412 may receive data read requests from the memory subsystem controller 115, other components of the memory subsystem 110, or from the host 120. The data read request may specify a block, for example, as a block ID.
[0071] The distributed voltage determiner 413 determines the distributed parameter values, such as distributed voltage, of the block specified in the read request. For example, to determine the distributed voltage of a group of memory cells 432 specified in or associated with the read request, the distributed voltage determiner 413 may send a voltage measurement request to the voltage measurement component 438 (arrow 415). The voltage measurement request may contain an identifier or address that identifies the memory cell 432 whose voltage is to be measured. The voltage measurement component 438 may measure the distributed voltage of the memory cell 432 specified in or associated with the read request (arrow 444). The voltage measurement component 438 may measure the distributed voltage by, for example, performing a read operation on the group of memory cells containing the specified memory cell 432, as described below. The voltage measurement component 438 may receive the measured distributed voltage from the memory cell 432 (arrow 446). The voltage measurement component 438 may then send the distributed voltage to the distributed voltage determiner 413 (arrow 417).
[0072] The read level determiner 420 can send a query for a specified distributed voltage to the voltage map table 406 (arrow 422). If the voltage map table 406 contains a mapping from the specified distributed voltage to the corresponding read level, the corresponding read level can be provided to the read level determiner 420 (arrow 424).
[0073] If voltage map 406 does not contain a mapping from a specified distributed voltage to a read level, read level determiner 420 may perform interpolation between the first and second distributed voltages present in voltage map 406 to determine a read level corresponding to the specified distributed voltage based on other read levels present in voltage map 406. In the following description, the specified distributed voltage is referred to as the "target distributed voltage". The difference between the first value and the target distributed voltage can be used to weight the read level voltage associated with the first value relative to the read level value associated with the second value in a weighted average calculation. The first distributed voltage can be identified as the closest distributed voltage less than the target parameter value, such as the maximum value of the distributed voltage less than the target distributed voltage in the voltage map. The second distributed voltage can be identified as the closest distributed voltage greater than the target distributed voltage, such as the minimum value of the distributed voltage greater than the target distributed voltage in the voltage map. Therefore, interpolation can be performed between the read level value associated with the first value and the read level value associated with the second value to determine the read level value associated with the target distributed voltage.
[0074] The difference between the target distributed voltage and the nearest distributed voltages in the voltage mapping table that are less than and greater than the target distributed voltage can be used to interpolate each read level value of the target distributed voltage as a weighted average of the corresponding read level values of the nearest distributed voltages that are less than and greater than the target distributed voltage. The weight corresponding to each read level value of the nearest distributed voltage less than the target distributed voltage can be proportional to the difference between the nearest distributed voltage less than the target distributed voltage and the target distributed voltage. Similarly, the weight corresponding to each read level value of the nearest distributed voltage greater than the target distributed voltage can be proportional to the difference between the nearest distributed voltage greater than the target distributed voltage and the target distributed voltage. The read level determiner 420 can determine each read level value of the target distributed voltage as a weighted average of the corresponding read level values associated with the nearest distributed voltages greater than and less than the target distributed voltage.
[0075] For example, if the target distributed voltage is 4.8V, and the first and second values are 4.7V and 4.9V respectively, then the target distributed voltage of 4.8V is at half the difference between the first and second values. Accordingly, the determined read level value can be calculated as a weighted average, where the read level value associated with the first value has a weight of 0.5 and the read level value associated with the second value also has a weight of 0.5. The distributed voltage and the associated determined read level values can be stored in a voltage map table, so subsequent read requests for the same target distributed voltage can retrieve the read level value without interpolation.
[0076] As an example, the following shows the read level generated by interpolation for a target distributed voltage of 4.8V that is not in the voltage map. The target voltage 4.8V is between a first voltage of 4.7V and a second voltage of 4.9V, both of which are in the voltage map before interpolation. The result of the interpolation, i.e., the row for the target voltage 4.8V, is shown in Table 3 below. The read level determiner 420 that performs the interpolation stores the target distributed voltage associated with the read level generated by the interpolation in the voltage map 406. Because the target distributed voltage 4.8V is half the difference between the upper entry (4.9V) and the lower entry (4.8V), both the upper and lower entries have a weight of 0.5. The controller can interpolate between the upper and lower entries by calculating each read level value as a weighted average, ReadLevelAbove*0.5 + ReadLevelBelow*0.5. Therefore, the interpolated read levels for a distributed voltage of 4.8V are -0.8, 0.3, 1.2, 1.8, 2.4, 3.3, and 4.2 volts, as shown in Table 3.
[0077] Characteristic voltage Read voltage 1 Read voltage 2 Read voltage 3 Read voltage 4 Read voltage 5 Read voltage 6 Read voltage 7 4.9 -0.8 0.3 1.3 1.9 2.7 3.6 4.5 4.8 -0.8 0.3 1.25 1.85 2.55 3.45 4.35 4.7 -0.8 0.3 1.2 1.8 2.4 3.3 4.2
[0078] Table 3
[0079] In a particular embodiment, if the read level value in voltage map 406 is a read level offset rather than a read level, the read level determiner 420 may add the read level offset to the base read level to determine the read level to be used in the read operation. If interpolation is performed on the read level offset, the base read level may be associated with the same distribution as the interpolated read level value to generate a total read level value. The memory system controller may then use the total read level value to perform the read operation.
[0080] Data reader 426 can read data from a block using a read level from read level determiner 420. Data reader 426 can apply a read level to one or more memory cells 432 of memory device 130 (arrow 428) and read data from memory cells 432 (arrow 434). Data reader 426 can then provide the data to other components of memory subsystem controller 115 or host 120.
[0081] Alternatively or additionally, voltage measurement component 438 can measure the distributed voltage by performing a sufficient number of read operations using a threshold voltage within a certain range to measure the voltage distribution of the memory cells and calculating the median (or other function) of the measured voltage distribution. For example, the distributed voltage can be measured at the memory cell identified by the voltage measurement request (arrow 415). Voltage measurement component 438 can determine the distributed voltage by, for example, identifying characteristics of the distribution (e.g., peaks, which may be the location of the distribution with the highest ratio) and determining the voltage corresponding to the identified location of the characteristics. Therefore, the value of the measured distributed voltage can be the voltage corresponding to the portion of the distribution with the highest ratio. The distributed voltage can be understood as representing the position of the distribution along the voltage axis.
[0082] In a particular embodiment, to generate voltage map 406, a trial-and-error technique can be used to identify read level values from memory cells that generate desired results, such as low error rate, high accuracy, or other desired results for each of a selected range of distributed voltage values. For each selected distributed voltage, the corresponding read level value generating the desired result can be stored in the voltage map table in association with the selected distributed voltage. As an example, one or more selected ranges of distributed voltages can be used to evaluate read error counts or other performance criteria during the operation or simulation of similar memory cells. For each distributed voltage in the selected range, a desired set of read level values corresponding to the voltage distribution of the memory cell being operated or simulated can be identified by operating or simulating the memory cell for the set of read level values within the range of read level values. The distributed voltages corresponding to the identified set of desired read level values can be stored in the voltage map table in association with the identified set of desired read level values.
[0083] Because the voltage distribution shifts towards lower voltages over time, and the relationship between the measured distribution voltage and the read level can be determined, for example, by measuring the number of memory cells, the voltage-read level relationship can be used to map the distribution voltage, which can be represented as a voltage, to read level values for a specific distribution. Furthermore, because the shift of each distribution in a multi-level cell is correlated, the voltage relationship can be used to map the distribution voltage to a set of read level values corresponding to the voltage distribution of the multi-level memory cells, such as seven read level values in an eight-level architecture (where one level corresponds to an erase state). The voltage relationship can be represented, for example, as a mapping, such as voltage mapping table 406, which maps each distribution voltage, which can be represented as a voltage, to a set of read level values. The set of read level values may contain the read level value for each of the voltage distributions of the memory cells. Each read level value in the set may, for example, be a read level value that can be added to a base, or a read level offset that can be added to a base read level value. Furthermore, in some embodiments, the read level or read level offset on table 406 may be determined based on a programmed erase cycle.
[0084] As described above, upon receiving a request to read data from a memory cell, the memory subsystem controller 115 can determine a read level value for the memory cell based on the distributed voltage. The memory subsystem controller can measure the distributed voltage at the memory cell. The previously determined distributed voltage can be a distributed voltage measured at the memory cell or another memory cell. The memory subsystem controller can then look up the read level value associated with the measured or previously determined distributed voltage in voltage mapping table 406 and use the read level value to read data from the memory cell.
[0085] The number or range of distributed voltage values for generating entries in voltage map 406 can be determined based on several factors, such as characteristics of the memory device, including the resolution of the measured distributed voltage values (e.g., distributed voltage resolution), the suitability of the entries for interpolation, the minimum and maximum values of the distributed voltage, and the amount of memory (e.g., local memory 119) or other storage space available for storing voltage map 406.
[0086] In a particular embodiment, voltage map 406 may contain an entry for every possible value of the distributed voltage. If the number of possible values is relatively small, for example, if the resolution of the distributed voltage is coarse enough that the memory available for storing voltage map 406 is sufficient to store an entry for every possible value of the distributed voltage, then a voltage map generator (not shown) may include an entry for every possible value of the distributed voltage in the map. For example, if the distributed voltage is measured as a voltage represented by a digital audio converter (DAC) unit, the number of possible distributed voltages may be relatively small. If sufficient storage space is available, voltage map 406 may contain an entry for every possible DAC value (e.g., for each possible DAC value, an entry mapping the DAC value to a corresponding read level value). When the memory subsystem controller 115 performs a read operation on a block, the controller 115 may use voltage map 406 to identify the read level value corresponding to the block (e.g., a block, superblock, or other unit) by measuring the distributed voltage of the group of memory cells in which the data of the block is stored, and identifying the read level value associated with the distributed voltage in the voltage map. Because the voltage map 406 in this example contains an entry for every possible distributed voltage, and each measured value of the distributed voltage is one of the possible values, the memory subsystem controller 115 can identify the entry in the voltage map 406 that specifies the read level value for each block to be read.
[0087] Alternatively, the voltage map generator may select a subset of possible values of the distributed voltage and generate a voltage map 406 containing entries for each value in the subset, and may use interpolation to determine the read level of voltages not present in the map, as described above.
[0088] Figure 4B An example of a read level manager 403 according to some embodiments of the present disclosure is depicted. The read level manager 403 may correspond to... Figure 1 The memory subsystem controller 115 shown in the image has a read level manager component 113. The read level manager 403 may contain a block metadata table 404 and a voltage mapping table 406. Tables 404 and 406 may be stored in the local memory 119 of the memory subsystem controller 115 or other suitable memory (e.g., the memory of the host system 120). The block metadata table 404 may store the mapping between blocks and distributed voltages. For each block associated with a distributed voltage, the block metadata table 404 may contain a block identifier (ID) "N" containing the block and the associated distributed voltage V. N The line. In Figure 4BIn this example, block metadata table 404 contains an entry mapping block ID "0" to distributed voltage 4.3, indicating that distributed voltage 4.3 has been determined for block ID "0". Block metadata table 404 also contains entries mapping block ID "1" to distributed voltage 4.9, and entries mapping block ID "2" to distributed voltage 4.7. Block metadata table 404 may be generated by calibration component 440 and / or data read component 410. Entries may be removed from block metadata table 404 by data write component 450, as described below.
[0089] In a particular embodiment, the distributed voltage and the associated determined read level value may be stored in block metadata table 404 in association with the block, so that subsequent read requests for the same value of block ID or distributed voltage can retrieve the read level value. The determined distributed voltage and read level values may be stored in block metadata table 404, provided, for example, there is sufficient memory or other storage device available to store those values for each in the block. In another embodiment, each of the distributed voltage and associated read level values may be stored in block metadata table 404 instead of voltage mapping table 406, in which case voltage mapping table 406 is unnecessary. Voltage mapping table 406 may store a mapping between distributed voltage and read level sets. Voltage mapping table 406 is discussed above regarding... Figure 4A Further description.
[0090] The level manager 403 may also include a data reading component 410, a calibration component 440, and a data writing component 450. (As mentioned above...) Figure 4A As described, data read component 410 can receive read requests, determine appropriate read levels, and read data from one or more memory devices (e.g., memory device 130) using the determined read levels. Data read component 410 may include read request receiver 412, distributed voltage determiner 414, read level determiner 420, and data reader 426. Read request receiver 412 may receive data read requests from memory subsystem controller 115, other components of memory subsystem 110, or from host 120. Data read requests may specify blocks, for example, as block IDs.
[0091] The distributed voltage determiner 414 is similar to the one mentioned above. Figure 4AThe distributed voltage determiner 413 is described above. The distributed voltage determiner 414 can determine the distributed parameter value, such as the distributed voltage, of the block specified in the read request. For example, the distributed voltage determiner 414 can query the block metadata table 404 to obtain the distributed voltage with the block ID specified in the read request (arrow 416). If the block metadata table 404 contains the specified block ID, for example, if there is an entry in the metadata table 404 that maps the specified block ID to the distributed voltage, then the distributed voltage determiner 414 can provide the corresponding distributed voltage to the read level determiner 420 (arrow 418), thereby determining the distributed voltage as described above. Figure 4A The described read level.
[0092] If the block metadata table 404 does not contain a specified block ID, the distributed voltage determiner 414 can measure the distributed voltage of the block specified in the read request and store the measured distributed voltage in association with the block ID in the block metadata table 404. The distributed voltage determiner 414 can measure the distributed voltage relative to the voltage measurement component 438 of the calibration component 440 as described below.
[0093] Alternatively, if the block metadata table 404 does not contain a specified block ID, the data read component 410 may use a default read level or pass the read request to another component of the memory subsystem controller 115, which may perform the read operation. While the parameter value is voltage in the examples described herein, the parameter value can be any suitable data state metric. As used herein, “data state metric” refers to a quantity measured or inferred from the state of data stored on the memory device. Specifically, a data state metric may reflect the state of time-voltage shifts, the degree of read interference, and / or other measurable functions of data state. A data state metric may be a function of a set of component state metrics (e.g., a weighted sum).
[0094] If the block metadata table 404 contains a specified block ID, then as described above, the distributed voltage determiner 414 can receive the distributed voltage associated with the block ID from the block metadata table 404 (arrow 418). The read level determiner 420 can send a query for the specified distributed voltage to the voltage mapping table 406 (arrow 422). If the voltage mapping table 406 contains a mapping from the specified distributed voltage to the corresponding read level, then the corresponding read level can be provided to the read level determiner 420 (arrow 424).
[0095] If voltage mapping table 406 does not contain a mapping from the specified target distributed voltage to the read level, then read level determiner 420 can perform interpolation, as described above regarding... Figure 4AAs described above. The read level determiner 420, which performs interpolation, can store the target distributed voltage in association with the block ID of the block that generated its read level in the block metadata table 404. The read level determiner 420 can also store the target distributed voltage in association with the read level generated by interpolation in the voltage mapping table 406, as described above. Figure 4A As described.
[0096] Data reader 426 can read data from a block using a read level from read level determiner 420. Data reader 426 can apply a read level to one or more memory cells 432 of memory device 130 (arrow 428) and read data from memory cells 432 (arrow 434). Data reader 426 can then provide the data to other components of memory subsystem controller 115 or host 120.
[0097] The calibration component 440 can generate or update the block metadata table 404 separately from or at a different time than the read operation performed by the data read component 410. For example, the calibration component 440 can perform the calibration operation to generate or update the block metadata table 404 by measuring the distributed voltage of one or more groups of memory cells 432 of the data stored in the block for each block, and storing the measured distributed voltage in the block metadata table 404 in association with the corresponding block ID. In this way, the block metadata table 404 can be generated and updated without delaying the read operation performed by the data read component 410. The calibration component 440 can perform the calibration operation at periodic times or at other times as part of a calibration scan.
[0098] The memory subsystem controller 115 may periodically perform a calibration process to measure the distributed voltage of each memory cell (e.g., block, block group, or other memory cell). The calibration process associates each memory cell with a distributed voltage determined for that memory cell. As part of the calibration process, the memory subsystem controller may measure the distributed voltage. For example, during the calibration process, the memory subsystem controller may measure the distributed voltage at a specific time and again at a subsequent time (e.g., at periodic intervals) or after a threshold time period following the next write operation associated with the memory cell. The calibration process may also delete entries that are no longer needed from the block metadata table 404, for example, because the block has been written to since the last update of the block metadata table entry. The calibration process may be performed as part of a calibration scan. Alternatively or additionally, the memory subsystem controller may delete or request the deletion of the block metadata table entry for a particular block after it has been written to (because the write resets the time voltage shift) or erased (because the block is no longer in use) or otherwise becomes unused.
[0099] Calibration component 440 may include voltage measurement component 438, which can determine the distributed voltage of each block (arrow 444) by performing one or more measurement operations on one or more groups of memory units 432 where data of the blocks are stored, for example, similar to Figure 4A The voltage measurement component 438. The measurement operation to determine the distributed voltage of the block can, for example, measure at least a threshold number of voltages using a range of read levels. The voltage measurement component 438 can identify voltages corresponding to characteristics based on the measured voltages. The measured voltages in the memory unit 432 can be a digital representation of the voltages displayed by the memory unit 432. For example, an analog-to-digital converter (ADC) such as a successive approximation ADC can be used by the voltage measurement component 438 to perform the measurement.
[0100] Alternatively or additionally, the measured distribution voltage can be determined by performing a sufficient number of read operations using a threshold voltage range to measure the voltage distribution of the memory cells and calculating the median (or other function) of the measured voltage distribution. For example, the distribution voltage can be measured at a group of memory cells 432, which is a portion of the data in the memory block. The memory subsystem controller can determine the distribution voltage by, for example, identifying a characteristic of the distribution, such as a peak, which may be the location of the distribution with the highest ratio; and determining the voltage corresponding to the identified location of the characteristic. Therefore, the value of the measured distribution voltage may be the voltage corresponding to the portion of the distribution with the highest ratio. The distribution voltage can be understood as representing the location of the distribution along a voltage axis. Parameter values can be stored in block metadata table 404 in association with the block, so that subsequent read requests for the block can access the parameter values more efficiently (e.g., without performing measurement operations on the memory cells). The block metadata table can be stored in the local memory 119 of the memory subsystem.
[0101] The calibration component 440 may receive the distributed voltage measured from the memory unit 432 (arrow 446) and store the measured distributed voltage in the block metadata table 404 in association with the block ID of the block (arrow 448). The calibration component 440 may, for example, repeatedly perform a calibration operation at time intervals, such that the distributed voltage associated with the block ID in the block metadata table is updated over time to reflect the change in distributed voltage according to the time voltage shift.
[0102] Data writing component 450 can handle requests to write data to a block. Because writing data to a block involves relocating valid block data to another block (e.g., via garbage collection or folding) and then erasing the block, writing data to a block resets the read threshold of the block's memory cells by an amount that has shifted back to 0 volts or at least close to 0 volts. Therefore, the distributed voltage stored in the block metadata table 404 can be reset accordingly, for example, by deleting the block's entry from the block metadata table 404, or by changing the distributed voltage associated with the block in the block metadata table 404 to the initial distributed voltage corresponding to an initial time when very little or no time voltage shift has occurred (e.g., TAP=0, as...). Figure 3 (As shown in Figure 300). Accordingly, the write request receiver 452 of the data writing component 450 receives each request to write data to the block, and the block metadata table updater 454 resets the entry corresponding to the block in the block metadata table 454. For example, the metadata table updater 454 may delete the block entry from the metadata table 404, or change the distributed voltage associated with the block in the metadata table 404 to the initial distributed voltage described above. The metadata table updater 454 may send a delete or update operation to the block metadata table 404 (arrow 456). The delete or update operation may include resetting or deleting the block ID from the block metadata table 404. The data writer 458 may write data to the block after or in parallel with the metadata table 404 update operation. Subsequently, the calibration component 440 may update the distributed voltage associated with the block in the metadata table 404 to a time-varying parameter value, thereby mitigating the effect of time voltage shift on the read operation.
[0103] As described above, upon receiving a request to read data from a memory cell associated with a block or block group, the memory subsystem controller 115 may determine the read level value of the memory cell based on the distributed voltage. The memory subsystem controller may measure the distributed voltage at the memory cell or retrieve a previously determined distributed voltage. The previously determined distributed voltage may be a distributed voltage measured at the memory cell or at another memory cell associated with the block or block group. The previously determined distributed voltage may be retrieved from the block metadata table 404 or other data structures that associate the previously determined data state with the block or block group. The memory subsystem controller may then look up the read level value associated with the measured or previously determined distributed voltage in a voltage map table and use the read level value to read data from the memory cell.
[0104] Figure 4C An example of reading level manager 461, which can be used to determine voltage distribution parameters using a block family according to some embodiments of this disclosure, is described. Figure 4CThe read level manager 461 can store associations on a per-block-family basis, allowing the storage of associations between each block family and its corresponding distributed voltage. The corresponding distributed voltage can be used for any block within a block family. Therefore, the read level manager 461 can determine the read level of a block by determining which block family it belongs to and then using the stored associations to determine the distributed voltage associated with that block family. The read level manager 461 can use a voltage mapping table 406 to map the determined distributed voltage to the read level.
[0105] A block family can represent a set of blocks whose data state metrics are expected to show similar or related changes over time. For example, a particular block family can represent blocks with block IDs in the range of 0-99. Therefore, the distributed voltages of blocks in a particular block family may be the same or similar, and the stored distributed voltages can represent the distributed voltages of blocks in the block family. "Block family" herein should refer to a set of memory cells that may be discontinuous (which may reside in one or more complete and / or partial blocks, referred to herein as "partitions"), which have been programmed within a specified time window and a defined temperature window and are therefore expected to show similar or related changes in their respective data state metrics. Block families can be created at any granularity, containing only all codewords, all pages, all superpages, or all superblocks, or any combination thereof. Block families can be generated when writing data based on criteria such as time and temperature. As an example, blocks written within a time window and / or temperature range can be grouped into the same block family. In some implementations, the underlying read level may be stored in the metadata of the memory device.
[0106] Reading level manager 461 can correspond to Figure 1 The memory subsystem controller 115 shown includes a read level manager component 113. The read level manager 461 may contain a metadata table 463, which stores associations between blocks and block families, and also stores associations between block families and distributed voltages (or other voltage distribution parameters). When reading a block, the read level manager 461 can use the metadata table 463 to determine which block family corresponds to the specific block to be read and further determine which distributed voltage corresponds to the determined block family. The read level manager 461 can use a voltage mapping table 406 to map the determined distributed voltages to read levels.
[0107] Metadata table 463 may contain block metadata table 464 and block family metadata table 466. Block metadata table 464 may store the association between blocks and block families, and block family metadata table 466 may store the association between block families and distributed voltage (or other voltage distribution parameters). Tables 464, 466, and 406 may be stored in the local memory 119 of the memory subsystem controller 115 or other suitable memory (e.g., the memory of the host system 120).
[0108] For each block set associated with a block family, the block metadata table 464 may contain rows (also referred to herein as “entries”) that map the block set to an associated block family identifier (block family ID). The block set may be specified as, for example, a range represented by a lower bound block ID value and an upper bound block ID value, such as 0-49, specifying 50 blocks with block IDs 0 to 49. Figure 4C In this example, the block metadata table 464 contains entries mapping block IDs 0-49 to block family ID 0, indicating that blocks with block IDs 0-49 are in the block family with block family ID 0. For example, the block metadata table 464 also contains entries mapping block IDs 50-59 to block family ID 5, and entries mapping block IDs 800-899 to block family ID 63. The block metadata table 464 may be generated by the calibration component 441 and / or the data reading component 411, or other components that manage block families. When a block family is created or deleted, the block metadata table 464 may be updated, for example, by adding or removing entries corresponding to the block family being created or deleted. However, when updating the distributed voltage of a block family, it is not necessary to update the block metadata table 464, because the distributed voltage is not stored in the block metadata table 464.
[0109] For each block family associated with the distributed voltage, the block family metadata table 466 may contain the block family ID and the associated distributed voltage V. N The block family metadata table 466 contains entries mapping block family ID "0" to distribution voltage 4.3, indicating that the distribution voltage 4.3 of block family 0 (e.g., at least one of the blocks associated with block family 0 via block metadata table 464) has been determined. Block family metadata table 466 also contains entries mapping block family ID "5" to distribution voltage 4.7 and entries mapping block family ID "63" to distribution voltage 4.9. For example, block family metadata table 466 can be generated by calibration component 441 and / or data read component 411. As described below, entries can be removed from block family metadata table 466 by data write component 451.
[0110] In some embodiments, the determined read level value may be stored in a block family metadata table 466 in association with the corresponding block family ID, so that subsequent read requests for the same value or distributed voltage for the block family ID can retrieve the read level value. The read level value may be stored in the block family metadata table 466, provided, for example, that there is sufficient memory or other storage device available to store those values for each in the block family. In another embodiment, each of the distributed voltage and associated read level value may be stored in the block family metadata table 466 instead of the voltage mapping table 406, in which case the voltage mapping table 406 is unnecessary. The voltage mapping table 406 may store a mapping between distributed voltages and sets of read levels. (The above refers to...) Figure 4A Voltage mapping table 406 is described further.
[0111] The level manager 461 may also include a data reading component 411, a calibration component 441, and a data writing component 451. (As mentioned above...) Figure 4A As described in data read component 410, data read component 411 can receive read requests, determine a suitable read level, and use the determined read level to read data from one or more memory devices, such as memory device 130. Data read component 411 may include read request receiver 412, distributed voltage determiner 471, read level determiner 420, and data reader 426. Read request receiver 412 may receive data read requests from memory subsystem controller 115 or other components of memory subsystem 110, or from host 120. Data read requests may specify blocks as, for example, block IDs.
[0112] The distributed voltage determiner 471 determines the distributed voltage of the block specified in the read request. The distributed voltage determiner 471 is similar to the one described above. Figure 4B The described distributed voltage determiner 414 uses a block metadata table 464 and a block family metadata table 466 to determine the distributed voltage. For example, the distributed voltage determiner 471 may query the block metadata table 464 for the block family ID associated with the block ID specified in the read request (arrow 416), such that the distributed voltage determiner 471 can retrieve the block family ID from the metadata table 464 (arrow 467). The distributed voltage determiner 471 may then query the block family metadata table 466 for the distributed voltage associated with the block family ID retrieved from the metadata table 464 (arrow 468). If the block family metadata table 466 contains the specified block family ID, for example, if there is an entry in the block family metadata table 466 that should map the specified block family ID to the distributed voltage, then the distributed voltage determiner 471 can retrieve the distributed voltage from the block family metadata table 466 (arrow 418). If the distributed voltage determiner 471 successfully retrieves the distributed voltage from the block family metadata table 466, then the distributed voltage determiner 471 can provide the retrieved distributed voltage to the read level determiner 420, the distributed voltage being determined as per [the relevant information]. Figure 4A The described read level.
[0113] If the block family metadata table 466 does not contain an entry that specifies the block family ID mapped to the distributed voltage, then the distributed voltage determiner 471 can measure the distributed voltage of the block specified in the read request and store the measured distributed voltage in the block family metadata table 466 in association with the block family ID associated with the block via the block metadata table 464. The distributed voltage determiner 471 can measure the distributed voltage as described below with respect to the voltage measurement component 438 of the calibration component 440.
[0114] Alternatively, if the block family metadata table 466 does not contain an entry that specifies the block family ID mapped to the distributed voltage, then the data read component 411 may use the default read level or forward the read request to another component of the memory subsystem controller 115, which may perform the read operation. While the parameter value is voltage in the examples described herein, the parameter value can be any suitable data state metric. As used herein, “data state metric” refers to a quantity measured or inferred from the state of data stored on the memory device. Specifically, a data state metric may reflect the state of time-voltage shifts, the degree of read interference, and / or other measurable functions of data state. A data state metric may be a function of a set of component state metrics (e.g., a weighted sum).
[0115] If the block family metadata table 466 contains entries that specify a block family ID mapped to a distributed voltage, then, as described above, the distributed voltage determiner 471 can receive the distributed voltage associated with the block family ID from the block family metadata table 466 (arrow 418). The read level determiner 420 can send a query specifying a distributed voltage to the voltage mapping table 406 (arrow 422). If the voltage mapping table 406 contains a mapping from a specified distributed voltage to a corresponding read level, then the corresponding read level can be provided to the read level determiner 420 (arrow 424).
[0116] If voltage mapping table 406 does not contain a mapping from the specified target distributed voltage to the read level, then read level determiner 420 can perform interpolation, as described above regarding... Figure 4A As described above. The read level determiner 420, which performs interpolation, can store the target distributed voltage in association with the block ID of the block to which the generated read level corresponds in the block metadata table 404. The read level determiner 420 can also store the target distributed voltage in association with the interpolated read level in the voltage mapping table 406, as described above regarding... Figure 4A As described.
[0117] Data reader 426 can read data from a block using a read level from read level determiner 420. Data reader 426 can apply a read level to one or more memory cells 432 of memory device 130 (arrow 428) and read data from memory cells 432 (arrow 434). Data reader 426 can then provide the data to other components of memory subsystem controller 115 or host 120.
[0118] The calibration component 441 may generate or update the block metadata table 463 separately from or at different times than the read operation performed by the data read component 411. For example, the calibration component 441 may perform a calibration operation that generates or updates the distributed voltage of a specific block family in the block family metadata table 466 by: measuring the distributed voltage of one or more groups of memory cells 432 storing data for one or more blocks in the specific block family for one or more blocks in the specific block family; determining the distributed voltage of the specific block family based on the measured distributed voltage; and storing the determined distributed voltage in the block family metadata table 466 in association with the block family ID corresponding to the specific block family.
[0119] The calibration process associates each block family with a distributed voltage determined for that block family by storing associated entries in the block family metadata table 466. As part of the calibration process, the memory subsystem controller 115 can measure the distributed voltage. For example, during calibration, the memory subsystem controller 115 can measure the distributed voltage at a specific time and again at subsequent times, such as at periodic intervals, or after a threshold time period following the next write operation associated with a memory cell. The calibration process can also remove entries that are no longer needed from the block family metadata table 466, for example, if each block in the block family has been written to since the most recent update of the block family metadata table entry. The calibration process can be performed as part of a calibration scan.
[0120] As part of the calibration scan, calibration component 441 can perform the calibration process periodically or at other times. Calibration component 441 may include voltage measurement component 438, which determines the distributed voltage of each block, as described above. Figure 4B The voltage measurement component 438 is described. For each block to be measured, the calibration component 441 can receive the measured distributed voltage (arrow 446) from the memory unit 432.
[0121] For example, calibration component 441 can determine the distributed voltage of a particular block family by calculating the average distributed voltage of the group of memory cells 432 for each block of that particular block family. The number of blocks for which calibration component 441 measures the distributed voltage can be, for example, at least a threshold number or a percentage of the total number of blocks in the block family, such as 50% of the blocks in a block family of 25 blocks or 50% of the blocks in a block family of 50 blocks. In this way, the block family metadata table 466 can be generated and updated without delaying the read operations performed by data read component 411.
[0122] Calibration component 441 may store the determined distributed voltage in association with the block ID of a specific block family in block family metadata table 466 (arrow 448). Calibration component 411 may determine the distributed voltage of each block family, for example, each block family having entries in block metadata table 464. For example, calibration component 441 may determine the distributed voltage of different block families in each calibration scan, or determine the distributed voltage of a specific subset of block families in each calibration scan. Alternatively or additionally, the distributed voltage of a specific block may be determined by measuring the voltage distribution of a group of memory cells using a sufficient number of read operations with a range of threshold voltages, and calculating the median (or other function) of the measured voltage distribution, as described above regarding... Figure 4B As described.
[0123] The calibration component 441 may, for example, repeatedly perform a calibration operation at time intervals, such that the distributed voltage associated with the block ID in the block family metadata table is updated over time to reflect changes in the distributed voltage according to the time voltage shift. The time interval may be determined based on the logarithmic linearity of the time voltage shift, for example, by more frequent calibrations performed by the calibration component 441 for higher distributed voltage values (e.g., higher values may have fewer TVS) and by less frequent calibrations performed by the calibration component 441 for lower distributed voltage values.
[0124] Data writing component 451 can handle requests to write data to blocks. Write request receiver 452 of data writing component 451 can receive each request to write data to a block. Since writing data to a block involves relocating valid block data to another block (e.g., via garbage collection or folding) and then erasing said block, writing data to a block resets the shift amount of the read threshold of the block's memory cells back to 0 volts, or at least close to 0 volts. Therefore, the distributed voltage stored in block family metadata table 466 can be reset in response to data being written to a block in the block family. For example, if data is written to every block in the block family, or to a threshold number of blocks in the block family, then the entry for the block family in block family metadata table 466 can be reset. Block family metadata table updater 455 of data writing component 451 can update the entry by deleting the entry from block family metadata table 466 or, alternatively, by setting the distribution value of the entry to an initial time corresponding to when no or almost no time voltage shift occurs (e.g., TAP=0, as...). Figure 3 The initial voltage (shown in Figure 300) is used to reset the entries of the block family.
[0125] To delete a block entry from the block family metadata table 466, the block family metadata table updater 455 may send a deletion operation to the block family metadata table 466 specifying the entry to be deleted (e.g., specifying the block family ID, distributed voltage, or both) (arrow 456). Alternatively, to set the distributed voltage of an entry to an initial voltage, the block family metadata table updater 455 may send an update operation to the block family metadata table 466 specifying the entry to be updated (e.g., specifying the block family ID) and the updated value of the distributed voltage stored in the entry (arrow 456). If, for example, there are no existing blocks in the block family that have undergone time voltage shifting (e.g., because the newness of each block in the block family is less than a threshold), then a deletion or update operation may be sent. After (or in parallel with) the deletion or update operation of the block family metadata table updater 455, the data writer 458 may write data to the block specified by the write data request received by the write request receiver 452. Therefore, the distributed voltage in the block family metadata table 466 may change over time. As described above, the updated distributed voltage can be determined by sampling the distributed voltage of one or more blocks in the block family at time intervals, thereby determining the distributed voltage that changes over time and mitigating the effect of time voltage shift in read operations.
[0126] As described above, upon receiving a read data request from a memory cell associated with a block or block group, the memory subsystem controller 115 can immediately determine the read level value of the memory cell based on the distributed voltage. The memory subsystem controller 115 can measure the distributed voltage at the memory cell or retrieve a previously determined distributed voltage. The previously determined distributed voltage can be a distributed voltage previously measured at the memory cell or at other memory cells associated with the block or block family. The previously determined distributed voltage can be retrieved from the block family metadata table 466 or other data structures that associate a previously determined data state with the block's block family. The memory subsystem controller can then look up the read level value associated with the measured or previously determined distributed voltage in the voltage mapping table 406 and use the read level value to read data from the memory cell.
[0127] Figure 4D An example read level manager 481 is depicted according to some embodiments of the present disclosure, which uses a block identifier set to determine voltage distribution parameters. The read level manager 481 can generate and use mappings between block identifier sets and corresponding distributed voltages. These mappings can be stored in a block metadata table 484. Each mapping, referred to herein as an "entry," maps a block identifier set (e.g., identifiers in the range 0-49) to a corresponding distributed voltage, such as 4.3 volts ("V").
[0128] To determine the read level of a specific block, the read level manager 481 can search the block metadata table 484 for entries with a range of block identifiers containing the specific block. If the block metadata table 484 contains entries with a set of block identifiers containing the specific block, then the read level manager 481 can determine the read level of the specific block by searching the voltage distribution specified by the entries in the voltage mapping table 406. The block identifier set may represent a set of blocks whose data state metrics are expected to show similar or related changes over time. For example, the range 0-99 may represent 100 blocks with block IDs from 0 to 99. The set may be specified as one or more potentially non-contiguous ranges of block identifiers. For example, identifiers 0-99 and 100-199 may be included in the block identifier set. The blocks in the set may have been programmed within a specified time window and / or a specified temperature window, and therefore are expected to show similar or related changes in their respective data state metrics.
[0129] Reading level manager 481 can correspond to Figure 1 The memory subsystem controller 115 shown includes a read level manager component 113. When reading a block, the read level manager 481 can use a block metadata table 484 to identify the range of block IDs corresponding to the specific block to be read. The read level manager 481 can then identify the read level set using the distributed voltages corresponding to the identified block ID range, for example, by using a voltage mapping table 406. Tables 484 and 406 may be stored in the local memory 119 of the memory subsystem controller 115 or other suitable memory (e.g., the memory of the host system 120).
[0130] For each block identifier set associated with the distributed voltage, the block metadata table 484 may contain the block identifier set (e.g., as one or more range IDs). X -ID Y ) and associated distributed voltage V N The line. In Figure 4D In this example, the block metadata table 464 contains entries mapping block IDs 0-49 to a distributed voltage of 4.3V, indicating that blocks with block IDs 0 to 49 are associated with a distributed voltage of 4.3V. The block metadata table 464 also contains entries mapping block IDs 50-59 to 4.7V and entries mapping block IDs 800-899 to 4.9V. For example, the block metadata table 464 may be generated by calibration component 440 and / or data reading component 413, or other components that manage block families. When a distributed voltage is determined, the block metadata table 464 may be updated, for example, by updating the distributed voltage associated with the block identifier set in response to the determined updated value of the distributed voltage; this update may be performed by calibration component 443.
[0131] In some embodiments, the determined read level value may be stored in block metadata table 484 in association with the corresponding distributed voltage entry, so that subsequent read requests for the same value of the block family ID or the distributed voltage can retrieve the read level value. The read level value may be stored in block metadata table 484, provided, for example, that there is sufficient memory or other storage device available to store those values for each of the block sets in table 484. In another embodiment, each of the distributed voltage and associated read level value may be stored in block metadata table 484 instead of voltage mapping table 406, in which case voltage mapping table 406 is unnecessary. Voltage mapping table 406 may store the mapping between distributed voltages and sets of read levels. (The above refers to...) Figure 4A Voltage mapping table 406 is described further.
[0132] The level manager 481 may also include a data reading component 413, a calibration component 443, and a data writing component 453. (As mentioned above...) Figure 4A As described in data read component 410, data read component 413 can receive read requests, determine a suitable read level, and use the determined read level to read data from one or more memory devices, such as memory device 130. Data read component 413 may include read request receiver 412, distributed voltage determiner 473, read level determiner 420, and data reader 426. Read request receiver 412 may receive data read requests from memory subsystem controller 115 or other components of memory subsystem 110, or from host 120. Data read requests may specify blocks as, for example, block IDs.
[0133] The distributed voltage determiner 473 determines the distributed voltage of the block specified in the read request. The distributed voltage determiner 473 is similar to the one described above. Figure 4B The described distributed voltage determiner 414 uses a block metadata table 484 to determine the distributed voltage of a block. For example, the distributed voltage determiner 473 can query the block metadata table 484 for the block ID specified in the read request (arrow 416). If the block metadata table 484 contains a set of block IDs containing the specified block ID, for example, if there is an entry in the block metadata table 484 that maps the specified block ID to the corresponding distributed voltage, then the distributed voltage determiner 473 can retrieve the corresponding distributed voltage from the block metadata table 464 (arrow 418). If the distributed voltage determiner 473 successfully retrieves the distributed voltage from the block metadata table 484, then the distributed voltage determiner 473 can provide the retrieved distributed voltage to the read level determiner 420, which can determine the distributed voltage as described above. Figure 4A The described read level.
[0134] If the block metadata table 484 does not contain an entry that should map the specified block ID to the distributed voltage, then the distributed voltage determiner 473 can measure the distributed voltage of the block ID specified in the read request and store the measured distributed voltage in association with the block set containing the specified block ID in the block metadata table 484. If the block metadata table 484 does not contain a block set containing the specified block ID, then the distributed voltage determiner 473 can create a block set containing a block identifier (or update an existing block set to contain a block identifier) and store the block set in association with the distributed voltage in the block metadata table 484. The distributed voltage determiner 473 can measure the distributed voltage as described below with respect to the voltage measurement component 438 of the calibration component 443.
[0135] Alternatively, if the block metadata table 484 does not contain an entry that specifies the block family ID to be mapped to a distributed voltage, then the data reading component 413 may use the default read level or forward the read request to another component of the memory subsystem controller 115, which may perform the read operation. Although in the example described herein, the parameter value associated with the block identifier set in the block metadata table 484 is voltage, the parameter value can be any suitable data state metric.
[0136] If the block metadata table 484 contains entries that specify a block family ID mapped to a distributed voltage, then, as described above, the distributed voltage determiner 473 can receive the distributed voltage associated with the block family ID from the block family metadata table 484 (arrow 418). The read level determiner 420 can send a query for a specified distributed voltage to the voltage mapping table 406 (arrow 422). If the voltage mapping table 406 contains a mapping from a specified distributed voltage to a corresponding read level, then the corresponding read level can be provided to the read level determiner 420 (arrow 424).
[0137] If voltage mapping table 406 does not contain a mapping from the specified target distributed voltage to the read level, then read level determiner 420 can perform interpolation, as described above regarding... Figure 4A As described above. The read level determiner 420, which performs interpolation, can store the target distributed voltage in association with the block ID of the block to which the generated read level corresponds in the block metadata table 404. The read level determiner 420 can also store the target distributed voltage in association with the interpolated read level in the voltage mapping table 406, as described above regarding... Figure 4A As described.
[0138] Data reader 426 can read data from a block using a read level from read level determiner 420. Data reader 426 can apply a read level to one or more memory cells 432 of memory device 130 (arrow 428) and read data from memory cells 432 (arrow 434). Data reader 426 can then provide the data to other components of memory subsystem controller 115 or host 120.
[0139] The calibration component 443 may generate or update the block metadata table 484 separately from or at different times than the read operation performed by the data read component 413. For example, the calibration component 443 may perform a calibration operation that generates or updates the distribution voltage of a specific block set (e.g., block IDs 0-49) in the block metadata table 484 by: measuring the distribution voltage of one or more groups of memory cells 432 storing data for one or more blocks in the specific block set; determining the distribution voltage of the specific block set based on the measured distribution voltage; and storing the determined distribution voltage in the block metadata table 484 in association with a set of block identifiers corresponding to the specific block set.
[0140] As part of the calibration scan, calibration component 443 can perform calibration operations periodically or at other times. Calibration component 443 may include voltage measurement component 438, which determines the distributed voltage of each block, as described above. Figure 4B The voltage measurement component 438 is described. For each block to be measured, the calibration component 440 can receive the measured distributed voltage (arrow 446) from the memory unit 432.
[0141] For example, calibration component 443 can determine the distributed voltage of a particular block set by calculating the average distributed voltage of the group of memory cells 432 for each block of the block set. The number of blocks for which calibration component 443 measures the distributed voltage can be, for example, at least a threshold number or a percentage of the total number of blocks in the block set, such as 25 blocks or 50% of the blocks in a set of 50 blocks. In this way, the block metadata table 484 can be generated and updated without delaying the read operations performed by data read component 413.
[0142] The calibration component 443 may store the determined distributed voltage in association with the block ID set containing the block in the block metadata table 484 (arrow 448). The calibration component 443 may determine the distributed voltage for each block set, for example, each block set having entries in the block metadata table 484. For example, the calibration component 443 may determine the distributed voltage for different block sets in each calibration scan, or determine the distributed voltage for a specific block set in each calibration scan. Alternatively or additionally, the distributed voltage of a specific block may be determined by measuring the voltage distribution of the memory cells using a sufficient number of read operations with a range of threshold voltages, and calculating the median (or other function) of the measured voltage distribution, as described above regarding... Figure 4B As described.
[0143] The calibration component 443 may, for example, repeatedly perform the calibration operation at time intervals, such that the distributed voltage associated with the block set in the block metadata table 484 is updated over time to reflect the change in distributed voltage according to the voltage shift over time.
[0144] Data writing component 453 can handle requests to write data to blocks. Since writing data to a block involves relocating valid block data to another block (e.g., via garbage collection or folding) and then erasing said block, writing data to a block resets the shift amount of the read threshold of the block's memory cells back to 0 volts, or at least close to 0 volts. Therefore, the distributed voltage stored in block metadata table 484 can be reset in response to writing data to blocks in the block set. For example, if data is written to every block in the block set, or to a threshold number of blocks in the block set, then the entries in block metadata table 484 can be reset. The block metadata table updater 457 of data writing component 453 can reset the entries by deleting them from the block metadata table 484 or, alternatively, by setting the distribution value of the entries to an initial time corresponding to when no or almost no time voltage shift occurs (e.g., TAP=0, as...). Figure 3 The initial voltage (shown in Figure 300) is used to reset the entries in the set.
[0145] To delete an entry from the block set in the block metadata table 484, the block family metadata table updater 457 may send a deletion operation to the block metadata table 484 specifying the entry to be deleted (e.g., specifying the block range of the entry, the distributed voltage, or both) (arrow 456). Alternatively, to set the distributed value of an entry to the initial voltage, the block metadata table updater 457 may send an update operation to the block metadata table 484 specifying the entry to be updated (e.g., specifying the block range of the entry) and the updated value of the distributed voltage stored in the entry (arrow 456). If, for example, there are no existing blocks in the block set that have undergone time voltage shift (e.g., because the newness of each block in the set is less than a threshold), then a deletion or update operation for the block set may be sent. After (or in parallel with) the deletion or update operation of the block metadata table updater 457, the data writer 458 may write data to the block specified by the write data request received by the write request receiver 452. Thus, the distributed voltage in the block metadata table 484 may change over time. As described above, the updated distributed voltage can be determined by sampling the distributed voltage of one or more blocks in a set at time intervals, thereby determining the distributed voltage that changes over time and mitigating the effect of time voltage shift in read operations.
[0146] Figure 5A This is a flowchart of an example method 500 for determining a read level based on the distributed voltage of a memory cell and reading data using the determined read level, according to aspects of this disclosure. Method 500 can be executed by processing logic, which may include hardware (e.g., processing device, circuit system, dedicated logic, programmable logic, microcode, device hardware, integrated circuit, etc.), software (e.g., instructions that run or execute on the processing device), or a combination thereof. In some embodiments, method 500 is performed by… Figure 1 The read level manager component 113 executes the process. Although shown in a specific order or sequence, the order of the processes may be modified unless otherwise specified. Therefore, it should be understood that the illustrated embodiments are merely examples, and the illustrated processes may be performed in different orders, and some processes may be performed in parallel. In addition, one or more processes may be omitted in various embodiments. Therefore, not all processes are required in every embodiment. Other process flows are also possible.
[0147] At operation 510, the processing device may receive a request to read data from a memory cell of a memory device coupled to the processing device. At operation 512, the processing device may determine a voltage distribution parameter value associated with a memory cell of the memory device. At operation 514, the processing device may determine a set of read levels associated with the voltage distribution parameter value, wherein each read level in the determined set of read levels corresponds to a corresponding voltage distribution of the memory cell. At operation 516, the processing device may use the determined set of read levels to read data from the memory cell of the memory device.
[0148] Figure 5B This is a flowchart of an example method 501 for determining a read level based on the distributed voltage of a block and reading data using the determined read level, according to aspects of this disclosure. Method 501 can be executed by processing logic, which may include hardware (e.g., processing device, circuit system, dedicated logic, programmable logic, microcode, device hardware, integrated circuit, etc.), software (e.g., instructions that run or execute on the processing device), or a combination thereof. In some embodiments, method 501 is performed by… Figure 1 The read level manager component 113 executes the process. Although shown in a specific order or sequence, the order of the processes may be modified unless otherwise specified. Therefore, it should be understood that the illustrated embodiments are merely examples, and the illustrated processes may be performed in different orders, and some processes may be performed in parallel. In addition, one or more processes may be omitted in various embodiments. Therefore, not all processes are required in every embodiment. Other process flows are also possible.
[0149] At operation 520, the processing device may receive a request to read data from a block of a memory device coupled to the processing device. At operation 522, the processing device may determine voltage distribution parameter values associated with the block of the memory device, wherein determining the voltage distribution parameter values associated with the block of the memory device includes identifying voltage distribution parameter values in a block metadata table, wherein the block metadata table includes a plurality of records, each of which maps a value of a block identifier to a value of a voltage distribution parameter. At operation 524, the processing device may determine a set of read levels associated with the voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell of the memory device, wherein at least a portion of the block is stored in the at least one memory cell. At operation 526, the processing device may read data from the block of the memory device using the determined set of read levels.
[0150] Figure 5CThis is a flowchart of an example method 502 for determining a read level of a block based on the distributed voltage of a block family containing blocks, and reading data using the determined read level, according to aspects of this disclosure. Method 502 can be executed by processing logic, which may include hardware (e.g., processing device, circuit system, dedicated logic, programmable logic, microcode, device hardware, integrated circuit, etc.), software (e.g., instructions that run or execute on the processing device), or a combination thereof. In some embodiments, method 502 is performed by… Figure 1 The read level manager component 113 executes the process. Although shown in a specific order or sequence, the order of the processes may be modified unless otherwise specified. Therefore, it should be understood that the illustrated embodiments are merely examples, and the illustrated processes may be performed in different orders, and some processes may be performed in parallel. In addition, one or more processes may be omitted in various embodiments. Therefore, not all processes are required in every embodiment. Other process flows are also possible.
[0151] At operation 530, the processing device may receive a request to read data from a block of a memory device coupled to the processing device. At operation 532, the processing device may use a first data structure that maps block identifiers to corresponding block family identifiers to determine the block family associated with the block of the memory device. The first data structure that maps block identifiers to corresponding block family identifiers may be, for example... Figure 4C The block metadata table 464 may contain multiple records, each mapping one or more values of a block identifier to a value of a block family identifier. A first data structure can be used to determine the block family associated with a block of the memory device by identifying the block identifier value corresponding to the block in the block metadata table 464. The block metadata table can associate block identifier values with block family identifier values, and the determined block family can correspond to the block family identifier value. As another example, the first data structure can map a range of block identifiers to corresponding distributed voltages, as described above regarding... Figure 4D The block metadata table 484 describes this.
[0152] At operation 534, the processing device may use a second data structure that maps block family identifiers to corresponding voltage distribution parameter values to determine the voltage distribution parameter values associated with the block family. The second data structure may map block family identifiers to corresponding voltage distribution parameter values and may be, for example... Figure 4C Block family metadata table 466. Block family metadata table 466 may contain multiple records, each of which maps the value of a block family identifier to the value of a voltage distribution parameter. The voltage distribution parameter value may be, for example, a voltage value contained in a specific voltage distribution of a memory cell, and determining the voltage distribution parameter value includes determining the median, mean, or mode of the identified voltage distribution.
[0153] The voltage distribution parameter value associated with a block family can be determined by identifying the block family identifier value corresponding to the block family in the block family metadata table 466. The voltage distribution parameter value may correspond to the block family identifier value in the block metadata table.
[0154] If the block family metadata table 466 does not contain an association between the block family identifier value and the corresponding voltage distribution parameter value, then at operation 532, the processing device can identify the specific voltage distribution of the memory cell by sampling the memory cell at one or more voltage levels and determining the voltage distribution parameter value based on the specific voltage distribution of at least one memory cell. The processing device can then store the voltage distribution parameter value in association with the block family identifier value in the block family metadata table 466.
[0155] At operation 536, the processing device may determine a set of read levels associated with voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell included in a block of the memory device. At operation 538, the processing device may use the determined set of read levels to read data from the block of the memory device.
[0156] At one or more additional operations (not shown), the processing device may perform multiple calibration scan repetitions. Each calibration scan repetition may include identifying at least one second block of the memory device that satisfies one or more calibration criteria, and performing a calibration operation on each identified second block that satisfies the calibration criteria. The calibration operation may include determining a second voltage distribution parameter value based on the second block of the memory device, determining a second block family identifier associated with the second block of the memory device using a first data structure that maps block identifiers to corresponding block family identifiers, and storing the determined second voltage distribution parameter value associated with the second block family identifier in a second data structure. The second block of the memory device that satisfies the calibration criteria may be, for example, a block for which at least a threshold amount has increased since the previous calibration operation was performed on at least one block after programming.
[0157] Figure 5D This is a flowchart of an example method 503 for determining a read level based on the distributed voltage of a block and reading data using the determined read level, according to aspects of this disclosure. Method 503 can be executed by processing logic, which may include hardware (e.g., processing device, circuit system, dedicated logic, programmable logic, microcode, device hardware, integrated circuit, etc.), software (e.g., instructions that run or execute on the processing device), or a combination thereof. In some embodiments, method 503 is performed by… Figure 1The read level manager component 113 executes the process. Although shown in a specific order or sequence, the order of the processes may be modified unless otherwise specified. Therefore, it should be understood that the illustrated embodiments are merely examples, and the illustrated processes may be performed in different orders, and some processes may be performed in parallel. In addition, one or more processes may be omitted in various embodiments. Therefore, not all processes are required in every embodiment. Other process flows are also possible.
[0158] At operation 540, the processing device may receive a read data request from a block of memory coupled to the processing device. At operation 542, the processing device may use a data structure that maps one or more block identifier sets to corresponding voltage distribution parameter values to determine the voltage distribution parameter values associated with the memory block. The data structure that maps one or more block identifier sets to corresponding voltage distribution parameter values may be, for example... Figure 4D A block metadata table 484. The block metadata table 484 may contain multiple records, each mapping a set of block identifiers to a corresponding voltage distribution parameter value. A data structure can be used to determine the voltage distribution parameter value associated with a block of memory by identifying the set of block identifiers containing the block identifiers of the memory blocks in the block metadata table, where the identified set of block identifiers corresponds to the voltage distribution parameter value associated with the memory block. Each block identifier set may be specified as a range of block identifiers, which includes a first block identifier and a second block identifier.
[0159] At operation 544, the processing device may determine a set of read levels associated with voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell included in a block of the memory device. At operation 538, the processing device may use the determined set of read levels to read data from the block of the memory device.
[0160] Figure 6 This is a flowchart of an example method 600 for performing a distributed voltage calibration scan according to aspects of this disclosure to determine the distributed voltage of a block and store the distributed voltage in a block metadata table. Method 600 can be executed by processing logic, which may include hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, device hardware, integrated circuits, etc.), software (e.g., instructions that run or execute on the processing device), or a combination thereof. In some embodiments, method 600 is performed by… Figure 1 The read level manager component 113 executes the process. Although shown in a specific order or sequence, the order of the processes may be modified unless otherwise specified. Therefore, it should be understood that the illustrated embodiments are merely examples, and the illustrated processes may be performed in different orders, and some processes may be performed in parallel. In addition, one or more processes may be omitted in various embodiments. Therefore, not all processes are required in every embodiment. Other process flows are also possible.
[0161] At operation 610, the processing device can determine the distribution voltage based on blocks of the memory device by measuring at least a threshold number of voltages and identifying voltages corresponding to characteristics of the distribution. The characteristics of the distribution can be, for example, the peak value of the distribution. The distribution voltage can be determined as a function or characteristic of the distribution, such as the mean, median, modulus, or other characteristics of the distribution. At operation 620, the processing device can store the voltages corresponding to the characteristics in association with block identifiers of blocks of the memory device in a block metadata table.
[0162] At operation 630, the processing device may determine the time-to-program (TSP) of a block of the memory device. The determined time is referred to in the following description of operation 640 as a variable called “TSP” with an associated time unit. The time unit may be, for example, seconds. At operation 640, the processing device may schedule subsequent calibration of the block (i.e., subsequent execution of method 600 starting at operation 610) at a subsequent time corresponding to an increase of X% of the block's TSP relative to the current time. The current time may be, for example, the time at which operation 640 is executed. For example, the subsequent time may correspond to a 50% increase in the block's TSP; in this case, the subsequent time may be determined as the future current time + 0.50 * TSP, or 0.50 * TSP time units (e.g., seconds). The value X may be any desired numerical percentage.
[0163] Figure 7 This describes an instance machine of computer system 700, within which a set of instructions is executable to cause the machine to perform any or more of the methods discussed herein. In some embodiments, computer system 700 may correspond to a host system (e.g., Figure 1 The host system 120 includes, is coupled to, or utilizes a memory subsystem (e.g., Figure 1 The memory subsystem 110) or can be used to perform controller operations (e.g., execute the operating system to perform operations corresponding to...). Figure 1 (The operation of the read level manager component 113). In alternative embodiments, the machine may be connected (e.g., networked) to other machines in a LAN, intranet, extranet, and / or the Internet. The machine may operate as a peer machine in a peer-to-peer (or distributed) network environment or as a server or client machine in a cloud computing infrastructure or environment, operating at the capacity of a server or client machine in a client-server network environment.
[0164] The machine may be a personal computer (PC), tablet PC, set-top box (STB), personal digital assistant (PDA), cellular telephone, network appliance, server, network router, switch, or bridge, or any machine capable of executing (sequentially or otherwise) a set of instructions specifying actions to be taken by the machine. Furthermore, although a single machine is described, the term "machine" should also be understood to include any set of machines that, individually or collectively, execute one or more sets of instructions to perform any one or more of the methods discussed herein.
[0165] The example computer system 700 includes a processing device 702, a main memory 704 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or RDRAM), a static memory 708 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage system 718, which communicate with each other via a bus 730.
[0166] Processing device 702 represents one or more general-purpose processing devices, such as microprocessors, central processing units, etc. More specifically, the processing device may be a Complex Instruction Set Computing (CISC) microprocessor, a Reduced Instruction Set Computing (RISC) microprocessor, a Very Long Instruction Word (VLIW) microprocessor, or a processor implementing other instruction sets, or a combination of instruction sets. Processing device 702 may also be one or more special-purpose processing devices, such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), digital signal processors (DSPs), network processors, or the like. Processing device 702 is configured to execute instructions 726 for performing the operations and steps discussed herein. Computer system 700 may additionally include a network interface device 712 for communication on network 720.
[0167] The data storage system 718 may include a machine-readable storage medium 724 (also referred to as a computer-readable medium) on which one or more sets of instructions 726 or software embodying any or more of the methods or functions described herein are stored. The instructions 726 may also reside wholly or at least partially within main memory 704 and / or processing device 702 during execution by computer system 700, the main memory 704 and processing device 702 also constituting machine-readable storage media. The machine-readable storage medium 724, the data storage system 718, and / or main memory 704 may correspond to... Figure 1 The memory subsystem 110.
[0168] In one embodiment, instruction 726 includes implementing a component corresponding to a read level manager (e.g., Figure 1The machine-readable storage medium 724 is shown as a single medium in the exemplary embodiment, but the term "machine-readable storage medium" should be considered to include a single medium or multiple media storing one or more sets of instructions. The term "machine-readable storage medium" should also be considered to include any medium capable of storing or encoding a set of instructions executable by a machine and causing the machine to perform any one or more of the methods of this disclosure. The term "machine-readable storage medium" should therefore be considered to include, but is not limited to, solid-state memory, optical media, and magnetic media.
[0169] Some parts of the previously described algorithms and symbolic representations of operations on data bits within computer memory have been presented. These algorithmic descriptions and representations are the means by which those skilled in the art of data processing most effectively communicate the essence of their work to others skilled in the art. In this paper, and generally in general, algorithms are conceived as self-consistent sequences of operations that produce desired results. An operation is an operation that requires physical manipulation of a physical quantity. Usually (but not always), these quantities take the form of electrical or magnetic signals that can be stored, combined, compared, and otherwise manipulated. It has been shown that it is sometimes convenient to refer to these signals as bits, values, elements, symbols, characters, items, numbers, etc., primarily for common use.
[0170] However, it should be remembered that all these and similar terms will be associated with appropriate physical quantities and are merely convenient notations for application to those quantities. This disclosure can refer to the actions and processes of a computer system or similar electronic computing device that manipulate and transform data represented as physical (electronic) quantities in the registers and memories of a computer system into other data similarly represented as physical quantities in the computer system's memory or registers or other such information storage systems.
[0171] This disclosure also relates to apparatus for performing the operations described herein. Such apparatus may be specifically constructed for the desired purpose, or may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in a computer. This computer program may be stored in a computer-readable storage medium, such as, but not limited to, any type of disk, including floppy disks, optical disks, CD-ROMs and magneto-optical disks, read-only memory (ROM), random access memory (RAM), EPROM, EEPROM, magnetic cards or optical cards, or any type of media suitable for storing electronic instructions, each connected to a computer system bus.
[0172] The algorithms and displays presented herein are not inherently related to any particular computer or other device. Various general-purpose systems can be used with the programs taught herein, or it may prove convenient to construct more specialized devices to perform the methods described herein. The structures of various such systems will be presented as illustrated in the description below. Furthermore, this disclosure is described without reference to any particular programming language. It should be understood that the teachings of this disclosure as described herein can be implemented using various programming languages.
[0173] This disclosure may be provided as a computer program product or software, which may include machine-readable media having instructions stored thereon for programming a computer system (or other electronic device) to perform processes according to this disclosure. Machine-readable media includes any means for storing information in a machine-readable (e.g., computer-readable) form. In some embodiments, machine-readable (e.g., computer-readable) media includes machine-readable (e.g., computer-readable) storage media, such as read-only memory (“ROM”), random access memory (“RAM”), disk storage media, optical storage media, flash memory components, etc.
[0174] In the foregoing description, embodiments of this disclosure have been described with reference to specific example embodiments thereof. It will be apparent that various modifications may be made to this disclosure without departing from the broader spirit and scope of the embodiments set forth in the appended claims. Therefore, the description and drawings should be viewed in an illustrative rather than restrictive sense.
Claims
1. A method for a memory device, comprising: The processing device receives a request to read data from a block of the memory device coupled to the processing device; The block family associated with the block of the memory device is determined using a first data structure that maps block identifiers to corresponding block family identifiers; The voltage distribution parameter values associated with the block family are determined using a second data structure that maps block family identifiers to corresponding voltage distribution parameter values; Determine a set of read levels associated with the voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell included in the block of the memory device; and Data is read from the block of the memory device using the determined set of read levels.
2. The method of claim 1, wherein the first data structure mapping block identifiers to corresponding block family identifiers includes a block metadata table, wherein the block metadata table includes a plurality of records, each record mapping one or more block identifiers to block family identifiers, and wherein determining the block family associated with the block of the memory device using the first data structure further includes: The block identifier of the memory device is identified in the block metadata table, wherein the block metadata table associates the block identifier with a block family identifier, and the identified block family corresponds to the block family identifier.
3. The method of claim 1, wherein the second data structure mapping a block family identifier to a corresponding voltage distribution parameter value includes a block family metadata table, wherein the block family metadata table includes a plurality of records, each record mapping a value of a block family identifier to a value of a voltage distribution parameter, and determining the voltage distribution parameter value associated with the block family using the second data structure includes: Identify the block family identifier value corresponding to the block family in the block family metadata table, wherein the voltage distribution parameter value corresponds to the block family identifier value in the block family metadata table.
4. The method of claim 3, wherein determining the voltage distribution parameter value associated with the block family using the second data structure further comprises: Determine whether the block family metadata table contains an association between the block family identifier value and the corresponding voltage distribution parameter value; and In response to determining that the block family metadata table does not contain an association between the block family identifier value and the corresponding voltage distribution parameter value: A specific voltage distribution of the at least one memory cell is identified by sampling the at least one memory cell at one or more voltage levels. The voltage distribution parameter value is determined based on the specific voltage distribution of the at least one memory cell, and The voltage distribution parameter value is stored in the block family metadata table in association with the block family identifier value.
5. The method of claim 4, wherein the voltage distribution parameter value includes voltage values contained in the specific voltage distribution of the memory cell, and determining the voltage distribution parameter value includes determining the median, mean, or mode of the specific voltage distribution.
6. The method of claim 1, wherein at least a portion of the block of the memory device is stored in the at least one memory cell.
7. The method of claim 1, wherein determining the set of readout levels associated with the voltage distribution parameter value comprises: The set of read levels is determined using a voltage mapping table, wherein the voltage mapping table includes multiple records, each of which maps the value of a voltage distribution parameter to a set of read level values.
8. The method of claim 7, wherein determining the set of read levels using a voltage mapping table comprises: Determine whether the voltage mapping table contains the voltage distribution parameter value; and In response to determining that the voltage mapping table contains the voltage distribution parameter values, the set of read levels is retrieved from the voltage mapping table. The voltage mapping table associates the voltage distribution parameter values with the set of read levels.
9. The method of claim 1, further comprising performing a plurality of calibration scan repetitions, wherein each calibration scan repetition comprises: Identify at least one second block of the memory device that satisfies one or more calibration criteria; Perform a calibration operation on each of the identified second blocks that satisfy the calibration criteria, wherein performing the calibration operation includes: The second voltage distribution parameter value is determined based on the second block of the memory device; The first data structure, which maps block identifiers to corresponding block family identifiers, is used to determine a second block family identifier associated with the second block of the memory device; and The determined second voltage distribution parameter value is stored in the second data structure in association with the second block identifier.
10. The method of claim 9, wherein the at least one second block of the memory device satisfying one or more calibration criteria comprises at least one block in which the post-programming time has increased by at least a threshold amount since the previous calibration operation was performed on the at least one block.
11. The method of claim 1, wherein reading data from the block using the determined set of read levels comprises: Measure the voltage of the at least one memory cell; and Identifying the logic level corresponding to the measured voltage, wherein identifying the logic level includes comparing the measured voltage with one or more of the read levels. The data read from the block includes the identified logic level.
12. The method of claim 1, wherein the read level includes a plurality of read level offsets, and reading data from the block using the determined set of read levels includes: Multiple adjusted read levels are determined, wherein each adjusted read level is based on the sum of a base read level and a read level offset corresponding to the base read level. The data is read from the block using the adjusted read level.
13. A memory system comprising: Memory; and A processing device communicatively coupled to the memory, the processing device performing operations including: Receive a data read request from a block of the memory; The voltage distribution parameter values associated with the block of the memory are determined using a data structure that maps one or more block identifier sets to corresponding voltage distribution parameter values; Determine a set of read levels associated with the voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell in at least a portion of the block in which the memory is stored; and Data is read from the block of the memory using the determined set of read levels.
14. The memory system of claim 13, wherein the data structure mapping block identifiers to corresponding voltage distribution parameter values includes a block metadata table, wherein the block metadata table includes a plurality of records, each record mapping a set of block identifiers to corresponding voltage distribution parameter values, and wherein using the data structure to determine the voltage distribution parameter value associated with the block of the memory includes: The block metadata table identifies a set of block identifiers containing the block of the memory, wherein the identified set of block identifiers corresponds to the voltage distribution parameter value associated with the block of the memory.
15. The memory system of claim 14, wherein determining the voltage distribution parameter value associated with the block of the memory using a data structure that maps one or more block identifier sets to corresponding voltage distribution parameter values comprises: It is determined that the block metadata table does not contain an association between the block identifier set containing the block identifier and the voltage distribution parameter value; A specific voltage distribution of the at least one memory cell is identified by sampling the at least one memory cell at one or more voltage levels. The voltage distribution parameter value is determined based on the specific voltage distribution of the at least one memory cell, and The voltage distribution parameter value is stored in the block metadata table in association with the block identifier set containing the block identifier.
16. The memory system of claim 15, wherein the voltage distribution parameter value includes voltage values contained in the particular voltage distribution of the memory cell, and determining the voltage distribution parameter value includes determining the median, mean, or mode of the particular voltage distribution.
17. The memory system of claim 13, wherein determining the set of read levels associated with the voltage distribution parameter values comprises: The set of read levels is determined using a voltage mapping table, wherein the voltage mapping table includes multiple records, each of which maps the value of a voltage distribution parameter to a set of read level values.
18. A non-transitory machine-readable storage medium for storing instructions, said instructions causing a processing device to perform operations including: Receive a request to read data from a block of a memory device coupled to the processing device; The block family associated with the block of the memory device is determined using a first data structure that maps block identifiers to corresponding block family identifiers; The voltage distribution parameter values associated with the block family are determined using a second data structure that maps block family identifiers to corresponding voltage distribution parameter values; Determine a set of read levels associated with the voltage distribution parameter values, wherein each read level in the set of read levels corresponds to a corresponding voltage distribution of at least one memory cell included in the block of the memory device; and Data is read from the block of the memory device using the determined set of read levels.
19. The non-transitory machine-readable storage medium of claim 18, wherein the first data structure mapping block identifiers to corresponding block family identifiers includes a block metadata table, wherein the block metadata table includes a plurality of records, each record mapping one or more block identifiers to block family identifiers, and wherein determining the block family associated with the block of the memory device using the first data structure further includes: The block identifier of the memory device is identified in the block metadata table, wherein the block metadata table associates the block identifier with a block family identifier, and the identified block family corresponds to the block family identifier.
20. The non-transitory machine-readable storage medium of claim 18, wherein the second data structure mapping block family identifiers to corresponding voltage distribution parameter values includes a block family metadata table, wherein the block family metadata table includes a plurality of records, each record mapping a value of a block family identifier to a value of a voltage distribution parameter, and determining the voltage distribution parameter value associated with the block family using the second data structure includes: Identify the block family identifier value corresponding to the block family in the block family metadata table, wherein the voltage distribution parameter value corresponds to the block family identifier value in the block family metadata table.