Temperature anomaly tracking in the storage system's temperature log
By independently storing the temperature log of temperature information in the memory system, the problem of degradation of data retention ability at extreme temperatures is solved, accurate data reading and reliability of temperature information at extreme temperatures is achieved, and normal operation of the memory system is supported.
Patent Information
- Application Number
- CN202210048150.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-01-20
- Filing Date
- 2022-01-17
- Publication Date
- 2025-08-22
- Estimated Expiration
- 2042-01-17
AI Technical Summary
When the memory system writes data at extreme temperatures, the data retention ability decreases, and the reliability of the existing temperature metadata is affected, resulting in inaccurate reading operations and inaccurate copying operations, resulting in inaccurate temperature information.
The memory system uses temperature logs to store temperature information independently of the data, and uses temperature logs to track temperature abnormalities. It uses temperature compensation technology to accurately read data during reading operations, such as storing data in higher-level units and temperature information in lower-level units.
Ensure the accuracy of data reading at extreme temperatures, reduce the impact of temperature information, maintain the reliability of temperature information, and support the normal operation of the memory system.
Smart Images

Figure CN114816899B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This patent application claims priority to U.S. patent application No. 17 / 153,107 of Palmer, filed on January 20, 2021, entitled “TEMPERATURE EXCEPTION TRACKING IN A TEMPERATURELOG FOR A MEMORY SYSTEM,” which is assigned to the present assignee and is expressly incorporated herein by reference in its entirety. Technical Field
[0003] The technical field relates to temperature anomaly tracking in a temperature log of a memory system. Background Art
[0004] Memory devices are widely used to store information in various electronic devices, such as computers, consumer devices, cameras, and digital displays. Information is stored by programming memory cells within the memory device to various states. For example, a binary memory cell can be programmed to one of two supported states, typically corresponding to a logic 1 or a logic 0. In some instances, a single memory cell can support more than two possible states, and the memory cell can store any of these possible states. To access information stored by a memory device, a component can read or sense the state of one or more memory cells within the memory device. To store information, a component can write or program one or more memory cells within the memory device to the corresponding state.
[0005] There are various types of memory devices, including magnetic hard disks, random access memory (RAM), read-only memory (ROM), dynamic RAM (DRAM), synchronous dynamic RAM (SDRAM), ferroelectric RAM (FeRAM), magnetic RAM (MRAM), resistive RAM (RRAM), flash memory, phase change memory (PCM), 3-dimensional cross-point memory (3D cross-point), NOR and NAND memory devices, etc. Memory devices can be volatile or non-volatile. Unless regularly refreshed by an external power source, volatile memory cells (e.g., DRAM cells) can lose their programmed state over time. Non-volatile memory cells (e.g., NAND memory cells) can maintain their programmed state for extended periods of time even in the absence of an external power source. Summary of the Invention
[0006] An apparatus is described. The apparatus includes a memory array and a controller coupled to the memory array and configured to cause the apparatus to: store a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions; receive a command for a memory device to read a partition from the set of partitions; determine, based at least in part on the temperature log, whether temperature data for the partition and associated with the set of temperature ranges indicates that data was written to the partition outside a threshold temperature; and read data from the partition based at least in part on the determination of whether the temperature data for the partition indicates that data was written to the partition outside the threshold temperature.
[0007] An apparatus is described. The apparatus includes a memory array and a controller coupled to the memory array and configured to cause the apparatus to: store a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions; receive a command for a memory device to write data at the memory system; write the data to a partition in the set of partitions corresponding to a location in the memory system based at least in part on the command; determine a current temperature of the memory system at the time the data is written to the partition, the current temperature falling within a temperature range in the set of temperature ranges that is outside a threshold temperature; and write temperature data for the partition corresponding to the current temperature to the temperature log based at least in part on the current temperature falling within the temperature range outside the threshold temperature.
[0008] A non-transitory computer-readable medium storing code is described. The non-transitory computer-readable medium stores code including instructions that, when executed by a processor of an electronic device, cause the electronic device to: store a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions; receive a command for the memory device to read a partition from the set of partitions; determine, based at least in part on the temperature log, whether temperature data for the partition and associated with the set of temperature ranges indicates that data was written to the partition outside a threshold temperature; and read data from the partition based at least in part on the determination of whether the temperature data for the partition indicates that data was written to the partition outside the threshold temperature. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Figure 1 and 2 An example of a system supporting tracking of temperature anomalies in a temperature log of a memory system according to examples as disclosed herein is described.
[0010] Figure 3A and 3B An example of a process flow is described to support tracking of temperature anomalies in a temperature log of a memory system according to examples as disclosed herein.
[0011] Figure 4An example of a storage configuration supporting temperature anomaly tracking in a temperature log of a memory system according to examples as disclosed herein is described.
[0012] Figure 5 A block diagram is shown of a memory system supporting temperature anomaly tracking in a temperature log of the memory system according to examples as disclosed herein.
[0013] Figure 6 and 7 A flowchart illustrating one or more methods of supporting temperature anomaly tracking in a temperature log of a memory system according to examples as disclosed herein is shown. DETAILED DESCRIPTION
[0014] In some memory systems, data storage may be affected by temperature. For example, if data is written to a memory device at an extreme temperature (e.g., outside a threshold temperature, such as above a first threshold temperature or below a second threshold temperature), the data retention capability of the memory device may be significantly reduced due to the extreme temperature. Temperature may be particularly significant for some higher-level NAND (NAND)-based memory storage cells, such as quad-level cells (QLC), where a greater number of levels relies on greater voltage profile accuracy to accurately store data. For example, writing data to a NAND cell may involve setting multiple voltage profiles within the cell, and reading data from the NAND cell may involve accurately detecting multiple voltage profiles to determine the corresponding data. However, if data is written to the cell based on the current temperature of the cell, such voltage profiles may shift or spread. Therefore, if data is written to the cell at a second temperature outside of a "nominal" temperature threshold (e.g., where the nominal temperature threshold may include a range of temperatures where the effect of temperature on data retention is not significant), the memory system may not be able to successfully read data from the cell at one temperature. If the system is able to determine that the temperature at which the data was written was outside of a "nominal" temperature threshold, the system can compensate for the effects of temperature and successfully read the data. Some systems may determine and store temperature metadata (e.g., an indication of temperature, error correction power, or both) with the data during a write operation for accurate reading of the data. However, such temperature metadata may be similarly affected by temperatures outside of the "nominal" temperature threshold, thereby reducing the reliability of such temperature metadata. Furthermore, some operations (e.g., copyback operations or other NAND operations) may not update the metadata, such that the temperature metadata may not accurately track the temperature information of the data after the operation (e.g., if the data is overwritten or otherwise changed and the temperature metadata is unchanged). Consequently, such systems may not accurately store temperature information to be used for temperature compensation when performing, for example, a read operation.
[0015] As described herein, a memory system may implement one or more techniques to support tracking of temperature anomalies in a temperature log. By storing temperature information in a temperature log separate from the data corresponding to the temperature information, the memory system may mitigate the effects of extreme temperatures on the temperature information and maintain accurate temperature information when performing operations on the data (e.g., copyback operations or other NAND operations). For example, a memory system may store data in relatively higher-level cells (e.g., triple-level cells (TLC), QLC) while storing corresponding temperature information in relatively lower-level cells (e.g., single-level cells (SLC)) that are relatively less sensitive to temperature-based effects. Thus, temperature information may be successfully read from the temperature log to determine temperature compensation for reading corresponding data from the memory device.
[0016] A memory device may store a temperature log and, for example, a set of temperature ranges of interest. The memory system or memory device may detect temperature readings when performing a write operation. If the memory system or memory device determines that the temperature at which data was written to the memory device exits one temperature range and enters another temperature range (e.g., crosses a temperature threshold), the memory system may generate a new log entry for the temperature log, indicating the new temperature range and the location in the memory device where the data was written, as well as other information. Additionally or alternatively, if the memory device switches from writing to a first virtual block to writing to a second virtual block, as well as other conditions, the memory system may generate a new log entry. To perform a read operation, the memory system may identify virtual pages of the memory device to be read and may search the temperature log for temperature information corresponding to these virtual pages or generate a set of binary trees or other data structures to support searching the temperature log. If the temperature information indicates that data was written to the memory device at a temperature outside the temperature threshold (e.g., outside the nominal temperature range), the memory device may apply temperature compensation corresponding to the temperature information to accurately read the data from the memory device.
[0017] First, in the reference Figure 1 and 2 Features of the present disclosure are described in the context of the systems and devices described. Figure 3A 、 3B The features of the present disclosure are described in the context of the process flows and storage configurations described in and 4. References to references Figures 5 to 7 The described device diagram and flow chart for temperature anomaly tracking in a temperature log of a memory system further illustrate and describe these and other features of the present disclosure.
[0018] Figure 1An example of a system 100 that supports tracking of temperature anomalies in a temperature log of a memory system according to examples as disclosed herein is illustrated. The system 100 includes a host system 105 coupled to a memory system 110.
[0019] The memory system 110 may be or include any device or collection of devices, wherein the device or collection of devices includes at least one memory array. For example, the memory system 110 may be or include a universal flash storage (UFS) device, an embedded multimedia controller (eMMC) device, a flash device, a universal serial bus (USB) flash device, a secure digital (SD) card, a solid-state drive (SSD), a hard disk drive (HDD), a dual in-line memory module (DIMM), a small outline DIMM (SO-DIMM), or a non-volatile DIMM (NVDIMM), among other possibilities.
[0020] System 100 may be included in a computing device such as a desktop computer, a laptop computer, a network server, a mobile device, a vehicle (e.g., an airplane, drone, train, car, or other transportation vehicle), an Internet of Things (IoT)-enabled device, an embedded computer (e.g., an embedded computer included in a vehicle, industrial equipment, or a networked business device), or any other computing device that includes a memory and a processing device.
[0021] The system 100 may include a host system 105 that may be coupled to a memory system 110. In some instances, this coupling may include an interface with a host system controller 106, which may be an instance of a control component configured to cause the host system 105 to perform various operations according to the examples as described herein. The host system 105 may include one or more devices, and in some cases may include a processor chipset and a software stack executed by the processor chipset. For example, the host system 105 may include an application configured to communicate with the memory system 110 or a device therein. The processor chipset may include one or more cores, one or more caches (e.g., memory local to or included in the host system 105), a memory controller (e.g., an NVDIMM controller), and a storage protocol controller (e.g., a Peripheral Component Interconnect Express (PCIe) controller, a Serial Advanced Technology Attachment (SATA) controller). The host system 105 may use the memory system 110, for example, to write data to and read data from the memory system 110. Although in Figure 1 One memory system 110 is shown in FIG. 1 , but the host system 105 can be coupled to any number of memory systems 110 .
[0022] The host system 105 can be coupled to the memory system 110 via at least one physical host interface. In some cases, the host system 105 and the memory system 110 can be configured to communicate via the physical host interface (e.g., to exchange or otherwise communicate control, address, data, and other signals between the memory system 110 and the host system 105) using an associated protocol. Examples of physical host interfaces can include, but are not limited to, a SATA interface, a UFS interface, an eMMC interface, a PCIe interface, a USB interface, a Fibre Channel interface, a Small Computer System Interface (SCSI), a Serial Attached SCSI (SAS), a Double Data Rate (DDR) interface, a DIMM interface (e.g., a DDR-capable DIMM socket interface), an Open NAND Flash Interface (ONFI), and a Low Power Double Data Rate (LPDDR) interface. In some examples, one or more of these interfaces can be included in or otherwise supported between the host system controller 106 of the host system 105 and the memory system controller 115 of the memory system 110. In some examples, host system 105 may be coupled to memory system 110 via a respective physical host interface for each memory device 130 included in memory system 110, or via a respective physical host interface for each type of memory device 130 included in memory system 110 (e.g., host system controller 106 may be coupled to memory system controller 115).
[0023] The memory system 110 may include a memory system controller 115 and one or more memory devices 130. The memory devices 130 may include one or more memory arrays of any type of memory cells (e.g., non-volatile memory cells, volatile memory cells, or any combination thereof). Figure 1 , two memory devices 130-a and 130-b are shown in the example of , but memory system 110 may include any number of memory devices 130. Furthermore, if memory system 110 includes more than one memory device 130, different memory devices 130 within memory system 110 may include the same or different types of memory cells.
[0024] The memory system controller 115 can be coupled to and communicate with the host system 105 (e.g., via a physical host interface) and can be an example of a control component configured to cause the memory system 110 to perform various operations according to the examples described herein. The memory system controller 115 can also be coupled to and communicate with the memory devices 130 to perform operations, which can generally be referred to as access operations, at the memory devices 130, such as reading data, writing data, erasing data, or refreshing data, as well as other such operations. In some cases, the memory system controller 115 can receive commands from the host system 105 and communicate with one or more memory devices 130 to execute these commands (e.g., at a memory array within the one or more memory devices 130). For example, the memory system controller 115 can receive commands or operations from the host system 105 and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to the memory devices 130. In some cases, the memory system controller 115 can exchange data with the host system 105 and with one or more memory devices 130 (e.g., in response to or otherwise in conjunction with commands from the host system 105). For example, the memory system controller 115 can convert responses associated with the memory devices 130 (e.g., data packets or other signals) into corresponding signals for the host system 105.
[0025] The memory system controller 115 may be configured for other operations associated with the memory device 130. For example, the memory system controller 115 may perform or manage operations such as wear leveling operations, garbage collection operations, error control operations such as error detection operations or error correction operations, encryption operations, cache operations, media management operations, background refresh, health monitoring, and address translation between logical addresses (e.g., logical block addresses (LBAs)) associated with commands from the host system 105 and physical addresses (e.g., physical block addresses) associated with memory cells within the memory device 130.
[0026] The memory system controller 115 may include hardware, such as one or more integrated circuits or discrete components, buffer memory, or any combination thereof. The hardware may include circuitry having dedicated (e.g., hard-coded) logic to perform the operations attributed herein to the memory system controller 115. The memory system controller 115 may be or include a microcontroller, dedicated logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a digital signal processor (DSP)), or any other suitable processor or processing circuitry.
[0027] The memory system controller 115 may also include local memory 120. In some cases, the local memory 120 may include read-only memory (ROM) or other memory that may store operating code (e.g., executable instructions) that may be executed by the memory system controller 115 to perform the functions attributed herein to the memory system controller 115. In some cases, the local memory 120 may additionally or alternatively include static random access memory (SRAM) or other memory that may be used by the memory system controller 115, for example, for internal storage or operations related to the functions attributed herein to the memory system controller 115.
[0028] Memory device 130 may include one or more arrays of non-volatile memory cells. For example, memory device 130 may include NAND (e.g., NAND flash) memory, ROM, phase change memory (PCM), select memory, other chalcogenide-based memory, ferroelectric random access memory (RAM) (FeRAM), magnetic RAM (MRAM), NOR (e.g., NOR flash) memory, spin transfer torque (STT)-MRAM, conductive bridging RAM (CBRAM), resistive random access memory (RRAM), oxide-based RRAM (OxRAM), electrically erasable programmable ROM (EEPROM), or any combination thereof. Additionally or alternatively, memory device 130 may include one or more arrays of volatile memory cells. For example, memory device 130 may include RAM memory cells, such as dynamic RAM (DRAM) memory cells and synchronous DRAM (SDRAM) memory cells.
[0029] In some examples, the memory devices 130 may include (e.g., on the same die or within the same package) a local controller 135 that may perform operations on one or more memory cells of the respective memory devices 130. The local controller 135 may operate in conjunction with the memory system controller 115 or may perform one or more functions attributed herein to the memory system controller 115. For example, Figure 1 As illustrated in FIG, memory device 130 - a may include a local controller 135 - a, and memory device 130 - b may include a local controller 135 - b.
[0030] In some cases, memory device 130 may be or include a NAND device (e.g., a NAND flash device). Memory device 130 may be or include a memory die 160. For example, in some cases, memory device 130 may be a package that includes one or more die 160. In some examples, die 160 may be a piece of electronic-grade semiconductor cut from a wafer (e.g., a silicon die cut from a silicon wafer). Each die 160 may include one or more planes 165, and each plane 165 may include a corresponding set of blocks 170, where each block 170 may include a corresponding set of pages 175, and each page 175 may include a set of memory cells.
[0031] In some examples, memory device 130 may use or operate based on virtual blocks and virtual pages. A virtual block may correspond to one block 170 for each plane 165 and each NAND die 160. Each virtual block may include multiple virtual pages. In some cases, multiple virtual pages may correspond to physical pages 175 (e.g., four virtual pages per physical page 175). In some examples, a virtual block may include tens of thousands of virtual pages (e.g., depending on the size of memory device 130). Memory device 130 may perform read and write operations based on virtual blocks and virtual pages. In some examples, one or more virtual pages, virtual blocks, pages 175, blocks 170, or memory device 130 may be referred to as a "partition" or "subset" of memory system 110.
[0032] In some cases, the NAND memory device 130 may include memory cells configured to store one bit of information each, which may be referred to as SLC. Additionally or alternatively, the NAND memory device 130 may include memory cells configured to store multiple bits of information each, which may be referred to as multi-level cells (MLC) if configured to store two bits of information each, TLC if configured to store three bits of information each, QLC if configured to store four bits of information each, or more generally, multi-level memory cells. Multi-level memory cells may provide greater storage density relative to SLC memory cells, but in some cases may involve narrower read or write margins or greater complexity for supporting circuitry.
[0033] In some cases, a plane 165 may refer to a group of blocks 170, and in some cases, parallel operations may be performed within different planes 165. For example, parallel operations may be performed on memory cells within different blocks 170, as long as the different blocks 170 are in different planes 165. In some cases, performing parallel operations in different planes 165 may be subject to one or more restrictions, such as performing the same operation on memory cells within different pages 175 that have the same page address within their respective planes 165 (e.g., with respect to command decode, page address decode circuitry, or other circuitry shared across planes 165).
[0034] In some cases, block 170 can include memory cells organized into rows (pages 175) and columns (e.g., strings, not shown). For example, memory cells in the same page 175 can share (e.g., be coupled to) a common word line, and memory cells in the same string can share (e.g., be coupled to) a common digit line (which may alternatively be referred to as a bit line).
[0035] For some NAND architectures, memory cells can be read and programmed (e.g., written) at a first level of granularity (e.g., at a page granularity), but can be erased at a second level of granularity (e.g., at a block granularity). That is, a page 175 can be the smallest unit of memory (e.g., a collection of memory cells) that can be independently programmed or read (e.g., simultaneously programmed or read as part of a single program or read operation), and a block 170 can be the smallest unit of memory (e.g., a collection of memory cells) that can be independently erased (e.g., simultaneously erased as part of a single erase operation). Furthermore, in some cases, a NAND memory cell can be erased before it can be rewritten with new data. Thus, for example, in some cases, a used page 175 may not be updated until the entire block 170 containing the page 175 has been erased.
[0036] In some cases, to update some data within a block 170 while preserving other data within the block 170, the memory device 130 may copy the data to be retained to a new block 170 and write the updated data to one or more remaining pages of the new block 170. The memory device 130 (e.g., the local controller 135) or the memory system controller 115 may mark or otherwise indicate the data remaining in the old block 170 as invalid or outdated and may update a logical-to-physical (L2P) mapping table to associate the logical address (e.g., LBA) of the data with the new valid block 170 (rather than the old invalid block 170). In some cases, such copying and remapping may be used rather than erasing and rewriting the entire old block 170, for example due to latency or wear considerations. In some cases, one or more copies of the L2P mapping table may be stored within a memory location of the memory device 130 (e.g., within one or more blocks 170 or planes 165) for use (e.g., reference and update) by the local controller 135 or the memory system controller 115.
[0037] In some cases, an L2P mapping table may be maintained and data may be marked as valid or invalid at a page granularity level, and a page 175 may contain valid data, invalid data, or no data. Invalid data may be data that is outdated because the latest or updated version of the data is stored in a different page 175 of the memory device 130. Invalid data may have been previously programmed to an invalid page 175 but may no longer be associated with a valid logical address, such as a logical address referenced by the host system 105. Valid data may be the latest version of such data stored on the memory device 130. A page 175 that does not contain data may be a page 175 that has never been written to or erased.
[0038] In some cases, the memory system controller 115 or the local controller 135 may perform operations for the memory device 130 (e.g., as part of one or more media management algorithms), such as wear leveling, background flushing, garbage collection, scrubbing, block scanning, health monitoring, or other operations, or any combination thereof. For example, within the memory device 130, a block 170 may have some pages 175 containing valid data and some pages 175 containing invalid data. To avoid waiting for all pages 175 in a block 170 to have invalid data in order to erase and reuse the block 170, an algorithm known as "garbage collection" may be invoked to allow the block 170 to be erased and freed as a free block for subsequent write operations. Garbage collection may refer to a set of media management operations that includes, for example, selecting a block 170 containing both valid and invalid data, selecting a page 175 in the block containing valid data, copying the valid data from the selected page 175 to a new location (e.g., a free page 175 in another block 170), marking the data in the previously selected page 175 as invalid, and erasing the selected block 170. Thus, the number of erased blocks 170 may be increased so that more blocks 170 are available for storing subsequent data (eg, data subsequently received from the host system 105 ).
[0039] The system 100 may include any number of non-transitory computer-readable media that support tracking of temperature anomalies in the temperature log of the memory system. For example, the host system 105, the memory system controller 115, or the memory device 130 may include or otherwise have access to one or more non-transitory computer-readable media that store instructions (e.g., firmware) to perform the functions attributed herein to the host system 105, the memory system controller 115, or the memory device 130. For example, if executed by the host system 105 (e.g., by the host system controller 106), by the memory system controller 115, or by the memory device 130 (e.g., by the local controller 135), such instructions may cause the host system 105, the memory system controller 115, or the memory device 130 to perform one or more associated functions as described herein.
[0040] In some cases, memory system 110 may utilize memory system controller 115 to provide a managed memory system, which may include, for example, one or more memory arrays and related circuitry in combination with a local (e.g., on-die or in-package) controller, such as local controller 135. An example of a managed memory system is a managed NAND (MNAND) system.
[0041] Memory device 130 of memory system 110 may store a temperature log and a set of temperatures of interest (e.g., temperature ranges). For example, memory system 110 or memory device 130 (or both) may detect temperature readings while performing one or more access operations (e.g., write operations). If memory system 110 or memory device 130 determines that the temperature at the time data was written to memory device 130 has, for example, exited one temperature range and entered another, memory system 110 may generate a new log entry for the temperature log, indicating the new temperature range and the location in memory device 130 where the data was written (e.g., the current cursor position), among other information. Additionally or alternatively, memory system 110 may generate a new log entry if memory device 130 switches from writing to a first virtual block to writing to a second virtual block, among other conditions. To perform a read operation, memory system 110 may identify virtual pages of memory device 130 to read from and may search the temperature log for temperature information corresponding to these virtual pages or generate a set of binary trees or other data structures to support searching the temperature log. If the temperature information indicates that data was written to memory device 130 at a temperature outside a temperature threshold (e.g., outside a nominal temperature range), memory device 130 may apply temperature compensation corresponding to the temperature information to allow the data to be accurately read from memory device 130. Such temperature tracking and temperature compensation may be performed by memory system 110, memory device 130, or any combination thereof, and may, in some examples, be transparent to host system 105.
[0042] Although features of the present disclosure are described herein with reference to NAND memory devices 130, it should be understood that features of the present disclosure can be implemented in other memory devices 130 or memory systems 110. For example, one or more features of the present disclosure described herein can be implemented in a non-volatile memory or other memory device 130.
[0043] Figure 2 An example of a system 200 for supporting temperature anomaly tracking in a temperature log of a memory system according to an example disclosed herein is described. The system 200 may be as described in reference Figure 1 The system 200 may include a memory system 210 configured to store data received from a host system 205 and to send data to the host system 205 if requested by the host system 205 using an access command (e.g., a read command or a write command). The system 200 may be implemented as described with reference to Figure 1 Aspects of the described system 100. For example, memory system 210 and host system 205 can be instances of memory system 110 and host system 105, respectively.
[0044] The memory system 210 may include a memory device 240 to store data transferred between the memory system 210 and the host system 205, such as in response to receiving an access command from the host system 205, as described herein. The memory device 240 may include a memory device 240 as described in reference to FIG. Figure 1 For example, memory device 240 may include NAND memory, PCM, select memory, 3-dimensional (3D) cross-point, other chalcogenide-based memory, FERAM, MRAM, NOR (e.g., NOR flash) memory, STT-MRAM, CBRAM, RRAM, or OxRAM.
[0045] The memory system 210 may include a memory controller 230 for controlling the transfer of data directly into and out of the memory devices 240, such as for storing data, retrieving data, and determining memory locations in which data is to be stored and from which data is to be retrieved. The memory controller 230 may communicate with the memory devices 240 directly or via a bus (not shown) using a protocol specific to each type of memory device 240. In some cases, a single memory controller 230 may be used to control multiple memory devices 240 of the same or different types. In some cases, the memory system 210 may include multiple memory controllers 230, such as a different memory controller 230 for each type of memory device 240. In some cases, the memory controller 230 may be implemented as described with reference to FIG. Figure 1 Aspects of the local controller 135 are described.
[0046] The memory system 210 may additionally include an interface 220 for communicating with the host system 205, and a buffer 225 for temporarily storing data being transferred between the host system 205 and the memory device 240. The interface 220, buffer 225, and memory controller 230 may be used to convert data between the host system 205 and the memory device 240 (e.g., as shown by the data path 250), and may be collectively referred to as data path components.
[0047] Using buffer 225 to temporarily store data during transfers allows data to be buffered while commands are being processed, thereby reducing latency between commands and allowing arbitrary data sizes to be associated with commands. This can also allow bursts of commands to be handled, and once the bursts have ceased, the buffered data can be stored or transmitted (or both). Buffer 225 can include relatively fast memory (e.g., some type of volatile memory, such as SRAM or DRAM), or a hardware accelerator, or both, to allow for rapid storage and retrieval of data to and from buffer 225. Buffer 225 can include a data path switching component for bidirectional data transfer between buffer 225 and other components.
[0048] Temporary storage of data within buffer 225 may refer to storage of data in buffer 225 during the execution of an access command. That is, after the access command is completed, the associated data may no longer be maintained in buffer 225 (e.g., it may be overwritten with data from another access command). Furthermore, buffer 225 may be a non-cacheable buffer. That is, the host system 205 may not read data directly from buffer 225. For example, a read command may be added to a queue without requiring an address to be matched against an address already in buffer 225 (e.g., without requiring a cache address match or lookup operation).
[0049] The memory system 210 may further include a memory system controller 215 for executing commands received from the host system 205 and controlling the data path components when moving data. The memory system controller 215 may be a memory system controller 215 such as that described in reference Figure 1 An example of a memory system controller 115 is depicted. Bus 235 may be used for communication between system components.
[0050] In some cases, one or more queues (e.g., command queue 260, buffer queue 265, and store queue 270) may be used to control the processing of access commands and the movement of corresponding data. This may be beneficial, for example, if more than one access command from host system 205 is being processed in parallel by memory system 210. As examples of possible implementations, command queue 260, buffer queue 265, and store queue 270 are depicted at interface 220, memory system controller 215, and storage controller 230, respectively. However, queues, if used, may be located anywhere within memory system 210.
[0051] Data transferred between the host system 205 and the memory device 240 may take a different path within the memory system 210 than non-data information (e.g., commands, status information). For example, system components in the memory system 210 may communicate with each other using the bus 235, while data may be transferred via data path components using the data path 250 rather than the bus 235. The memory system controller 215 may control how and whether data is transferred between the host system 205 and the memory device 240 by communicating with the data path components over the bus 235 (e.g., using a protocol specific to the memory system 210).
[0052] If the host system 205 transmits an access command to the memory system 210, the command may be received by the interface 220, for example, according to a protocol (e.g., the UFS protocol or the eMMC protocol). Thus, the interface 220 may be considered the front end of the memory system 210. After receiving each access command, the interface 220 may communicate the command to the memory system controller 215, for example, via the bus 235. In some cases, each command may be added to the command queue 260 by the interface 220 for communication to the memory system controller 215.
[0053] The memory system controller 215 may determine that an access command has been received based on a communication from the interface 220. In some cases, the memory system controller 215 may determine that an access command has been received by retrieving a command from the command queue 260. After a command has been retrieved from the command queue 260, for example, by the memory system controller 215, the command may be removed from the command queue 260. In some cases, the memory system controller 215 may cause the interface 220 to remove the command from the command queue 260, for example, via the bus 235.
[0054] After determining that an access command has been received, the memory system controller 215 may execute the access command. For a read command, this may mean obtaining data from the memory device 240 and transferring the data to the host system 205. For a write command, this may mean receiving data from the host system 205 and moving the data to the memory device 240.
[0055] In either case, the memory system controller 215 may use the buffer 225 for, among other things, temporary storage of data received from or sent to the host system 205. The buffer 225 may be considered the middleman of the memory system 210. In some cases, buffer address management (e.g., pointers to address locations in the buffer 225) may be performed by hardware (e.g., dedicated circuitry) in the interface 220, the buffer 225, or the memory controller 230.
[0056] To process a write command received from the host system 205, the memory system controller 215 may first determine whether the buffer 225 has sufficient available space to store the data associated with the command. For example, the memory system controller 215 may determine, e.g., via firmware (e.g., controller firmware), the amount of space available within the buffer 225 to store the data associated with the write command.
[0057] In some cases, the buffer queue 265 can be used to control the flow of commands associated with data stored in the buffer 225, including write commands. The buffer queue 265 can include access commands associated with the data currently stored in the buffer 225. In some cases, commands in the command queue 260 can be moved to the buffer queue 265 by the memory system controller 215 and can remain in the buffer queue 265 while the associated data is stored in the buffer 225. In some cases, each command in the buffer queue 265 can be associated with an address at the buffer 225. That is, a pointer can be maintained indicating the location in the buffer 225 where the data associated with each command is stored. Using the buffer queue 265, multiple access commands can be received sequentially from the host system 205, and at least some of the access commands can be processed in parallel.
[0058] If the buffer 225 has sufficient space to store the write data, the memory system controller 215 can cause the interface 220 to transmit an indication of availability to the host system 205 (e.g., a "ready to transfer" indication), for example, according to a protocol (e.g., a UFS protocol or an eMMC protocol). When the interface 220 subsequently receives data associated with a write command from the host system 205, the interface 220 can use the data path 250 to transfer the data to the buffer 225 for temporary storage. In some cases, the interface 220 can obtain the location of the data stored in the buffer 225 from the buffer 225 or the buffer queue 265. The interface 220 can indicate to the memory system controller 215, for example, via the bus 235, whether the data transfer to the buffer 225 has been completed.
[0059] Once the write data has been stored in buffer 225 via interface 220, the data can be transferred from buffer 225 and stored in memory device 240. This can be done using memory controller 230. For example, memory system controller 215 can cause memory controller 230 to retrieve the data from buffer 225 and transfer the data to memory device 240 using data path 250. Memory controller 230 can be considered the back end of memory system 210. Memory controller 230 can indicate to memory system controller 215, for example, via bus 235, that the data transfer to a memory device in memory device 240 has been completed.
[0060] In some cases, storage queue 270 may be used to facilitate the transfer of write data. For example, memory system controller 215 may push a write command from buffer queue 265 (e.g., via bus 235) to storage queue 270 for processing. Storage queue 270 may include an entry for each access command. In some examples, storage queue 270 may additionally include a buffer pointer (e.g., an address) that may indicate the location in buffer 225 where data associated with the command is stored, and a storage pointer (e.g., an address) that may indicate the location in memory device 240 associated with the data. In some cases, storage controller 230 may obtain the location within buffer 225 from which data is to be obtained from buffer 225, buffer queue 265, or storage queue 270. Storage controller 230 may manage the location within memory device 240 where data is stored (e.g., to perform wear leveling, garbage collection, etc.). Entries may be added to storage queue 270, for example, by memory system controller 215. After the transfer of the data is complete, the entry may be removed from the store queue 270 , for example, by the memory controller 230 or the memory system controller 215 .
[0061] To process a read command received from the host system 205, the memory system controller 215 may again first determine whether the buffer 225 has sufficient available space to store the data associated with the command. For example, the memory system controller 215 may determine, e.g., via firmware (e.g., controller firmware), the amount of space available within the buffer 225 to store the data associated with the read command.
[0062] In some cases, the buffer queue 265 can be used to assist in buffer storage of data associated with a read command in a similar manner as discussed above with respect to a write command. For example, if the buffer 225 has sufficient space to store the read data, the memory system controller 215 can cause the memory controller 230 to retrieve the data associated with the read command from the memory device 240 and store the data in the buffer 225 using the data path 250 for temporary storage. Once the data transfer to the buffer 225 has been completed, the memory controller 230 can indicate this to the memory system controller 215, for example, via the bus 235.
[0063] In some cases, storage queue 270 may be used to assist in the transfer of read data. For example, memory system controller 215 may push a read command to storage queue 270 for processing. In some cases, storage controller 230 may obtain the location within memory device 240 from which to retrieve data from buffer 225 or storage queue 270. In some cases, storage controller 230 may obtain the location within buffer 225 where data is stored from buffer queue 265. In some cases, storage controller 230 may obtain the location within buffer 225 where data is stored from storage queue 270. In some cases, memory system controller 215 may move commands processed by storage queue 270 back to command queue 260.
[0064] Once the data has been stored in the buffer 225 by the memory controller 230, the data may be transferred out of the buffer 225 and sent to the host system 205. For example, the memory system controller 215 may cause the interface 220 to retrieve the data from the buffer 225 using the data path 250 and transfer the data to the host system 205, e.g., according to a protocol (e.g., the UFS protocol or the eMMC protocol). For example, the interface 220 may process commands from the command queue 260 and may indicate to the memory system controller 215, e.g., via the bus 235, that the data transfer to the host system 205 is complete.
[0065] The memory system controller 215 may execute the received commands in an order (e.g., a first-in, first-out order according to the order of the command queue 260). For each command, the memory system controller 215 may cause data corresponding to the command to be moved into and out of the buffer 225, as discussed above. The command may remain in the buffer queue 265 while the data is moved into and stored within the buffer 225. If processing of the command is complete (e.g., if data corresponding to an access command has been transferred out of the buffer 225), the command may be removed from the buffer queue 265, for example, by the memory system controller 215. If a command is removed from the buffer queue 265, the address where the data associated with the command was previously stored may be used to store data associated with a new command.
[0066] The memory system controller 215 may be further configured for operations associated with the memory device 240. For example, the memory system controller 215 may perform or manage operations such as wear leveling operations, garbage collection operations, error control operations such as error detection operations or error correction operations, encryption operations, cache operations, media management operations, background refresh, health monitoring, and address translation between logical addresses (e.g., LBAs) associated with commands from the host system 205 and physical addresses (e.g., physical block addresses) associated with memory cells within the memory device 240. That is, the host system 205 may issue a command indicating one or more LBAs, and the memory system controller 215 may identify the one or more physical block addresses indicated by the LBAs. In some cases, one or more consecutive LBAs may correspond to non-consecutive physical block addresses. In some cases, the storage controller 230 may be configured to perform one or more of the above operations in conjunction with or in place of the memory system controller 215. In some cases, the memory system controller 215 may perform the functions of the storage controller 230 and the storage controller 230 may be omitted.
[0067] The memory system 210 may support temperature anomaly tracking at the memory device 240 to support temperature compensation for access operations (e.g., read operations). For example, the memory controller 230, the memory device 240 (or multiple memory devices 240), or both may include corresponding temperature sensors 275. In some cases, the memory controller 230 may include a temperature sensor 275-a, and one or more memory devices 240 may include corresponding temperature sensors 275-b (e.g., at one or more NAND dies, as described in reference to FIG. Figure 1 , as described herein). The temperature sensor 275 may perform a temperature reading of the memory system 210 or a particular memory device 240. In some instances, the temperature sensor 275 may be triggered to perform a temperature reading with each write command. Additionally or alternatively, the temperature sensor 275 may perform a temperature reading periodically or aperiodically (e.g., based on a timer or counter). In some cases, the memory system 210 (e.g., the storage controller 230) may determine multiple temperature readings for a particular timestamp or operation (e.g., a write operation) and may determine a current temperature value based on the multiple temperature readings. For example, both the temperature sensor 275-a and the temperature sensor 275-b may detect temperature readings. The memory system 210 may average the temperature readings, select the “most accurate” temperature reading, select the “worst case” temperature reading (e.g., the temperature reading corresponding to the maximum temperature compensation factor or the highest temperature from the group or the lowest temperature of the group), or perform some other operation to determine the current temperature.
[0068] The memory system 210 may additionally store a set of temperatures, such as a set of temperature ranges (e.g., at the memory system controller 215, the memory controller 230, or one or more memory devices 240). In some examples, if data is written to the NAND memory device 240 when the device temperature is within the set of temperature ranges, the memory system 210 may implement special handling for read operations to account for the temperature at a later time, such as when performing a write operation. The temperature ranges may be based on the NAND characteristics of the memory device 240. For example, different temperature ranges may correspond to different temperature compensation values for reading data from the memory device 240 (e.g., based on one or more aspects of the memory device 240). The temperature ranges and corresponding temperature compensation values may be stored, for example, in a lookup table. In some cases, the memory system 210 may store a set of temperature ranges of equal size. For example, the memory system 210 may store a temperature range spanning five degrees Celsius (°C) between -25°C and 85°C. In some other cases, the memory system 210 may store a "nominal" temperature range and one or more "extreme" temperature ranges of different sizes. The nominal temperature range may correspond to no or minimal temperature compensation for reading data, while each extreme temperature range may correspond to a respective temperature compensation value for reading data. For example, the nominal temperature range may span 0°C to 65°C for memory device 240 in a smartphone, 0°C to 100°C for memory device 240 in a vehicle, or another supported temperature range. The extreme temperature ranges may be more refined, and extreme temperature ranges further from the nominal temperature range may correspond to more significant temperature compensation values. The set of temperature ranges may be predefined for memory system 210 or memory device 240, or may be determined dynamically (e.g., based on one or more determinations or measurements made in real time by one or more components, or based on usage).
[0069] The memory system 210 can use temperature readings and temperature ranges to perform temperature anomaly tracking. For example, the memory system 210 can generate log entries for a temperature log based on the temperature readings. If the memory system 210 is writing data to the memory device 240, the memory system 210, the memory device 240, or the storage controller 230 can determine the current temperature (e.g., the temperature at the time the data was written to the memory device 240). If the current temperature is entering a new temperature range, the memory system 210 can generate a new log entry for the new temperature range (e.g., in the volatile memory of the storage controller 230). Additionally or alternatively, if the storage controller 230 switches to writing data to a different virtual block of the memory device 240, the memory system 210 can generate a new log entry for the different virtual block. The memory system 210 can generate any number of log entries during a write operation or write procedure. The storage controller 230 can periodically or aperiodically copy the log entries to a temperature log in permanent storage (e.g., in the memory device 240). For example, data may be stored in NAND-based QLC, while temperature logs may be stored in NAND-based SLC.
[0070] To read data from memory device 240, memory system 210 may utilize a temperature log to support temperature compensation. For example, memory controller 230 may determine a partition in memory device 240 from which data is to be read. Memory controller 230 may search the temperature log for any temperature information corresponding to the partition. In some cases, memory system 210 may generate one or more data structures (e.g., a binary tree) in memory controller 230 (e.g., in volatile memory) to support efficient searching of the temperature log. If memory controller 230 determines that data was written to a partition at a temperature outside a threshold temperature (e.g., a nominal temperature range), memory controller 230 may identify temperature compensation to apply to the read operation. For example, memory controller 230 may determine the temperature range in which the data was written to the partition and the temperature compensation value corresponding to that temperature range. In some cases, applying temperature compensation may involve adjusting one or more voltage thresholds used to read data from a cell at the MNAND device (e.g., based on the current temperature at the time the data was read and the temperature at the time the data was written). Applying temperature compensation can mitigate the negative effects of temperature on data retention and read accuracy, effectively reducing the bit error rate associated with read operations, among other advantages.
[0071] The techniques described herein can support the separation of temperature indicators from risky data written at extreme temperatures. For example, by storing a temperature log separately from the corresponding data, the temperature log can be stored in a manner or structure that mitigates the negative impact of temperature on data retention (e.g., relative to lower-level units of the corresponding data). Additionally, by storing a single temperature log entry to indicate multiple consecutive virtual pages within a virtual block with data written within a specific temperature range, the memory system 210 can reduce storage overhead for temperature information (e.g., compared to a system that stores temperature metadata for each virtual page or for each virtual page written outside of a nominal temperature range). Furthermore, the techniques described herein can support copyback operations and other NAND-based operations. For example, for a copyback operation, the temperature log can be updated to indicate the updated temperature information for performing the copyback operation to ensure alignment of the temperature information with the corresponding data.
[0072] Figure 3A and 3B An example of a process flow 300 for supporting temperature anomaly tracking in a temperature log of a memory system according to an example disclosed herein is described. For example, Figure 3A An example of a process flow 300-a for supporting a write operation is described. The process flow 300-a may be executed by a memory system, such as referring to Figure 1 and 2 As described herein. For example, a controller coupled to a memory array (e.g., which may be a component of a memory system) may perform one or more of the functions described herein. Alternative examples of the following content may be implemented, in which some steps are performed in a different order than described or not performed at all. In some cases, the steps may include additional features not mentioned below, or other steps may be added.
[0073] At 305, a write command may be received. For example, the memory system may receive a write command from a host system. The write command may indicate that data is to be written to a memory device (e.g., which may include NAND-based memory cells or other types of memory cells, such as FeRAM or DRAM, or both). NAND storage may be programmed in a page-sequential order across one or more grouped blocks. Each grouped block may be referred to as a virtual block (e.g., virtual block 0 may correspond to all planes in the memory device and block 0 on the NAND die). Within a virtual block, each potential storage location of a host logical block addressed by a host LBA may be referred to as a virtual page. Virtual pages may be counted sequentially starting with 0 at the beginning of the virtual block and incrementing in programming order. The next location to be programmed in the virtual block may be referred to as a cursor. In some cases, one or more virtual pages, one or more virtual blocks, or any combination thereof may be referred to as a partition or subset.
[0074] At 310, data may be written to the partition based on the write command. For example, a controller (e.g., a storage controller) may begin storing data in the partition of the memory device at the cursor location. The controller, the memory device, the memory system, or any combination thereof may determine a temperature (e.g., a current temperature) when the data is written to the partition. The temperature reading of the memory device may fall within a temperature range of a predefined set of temperature ranges or relative to one or more temperature thresholds (e.g., one end of a temperature range).
[0075] At 315, the controller may determine whether the temperature at the time the data was written to the partition entered a new temperature range. For example, when the data was written to the previous virtual page, the controller may determine that the memory device was at a first temperature within a first temperature range, and when writing the data to the current virtual page (e.g., the virtual page at the cursor position) at 310, the controller may determine whether the memory device was at a second temperature within a second (i.e., different) temperature range. The controller may manage a temperature log (e.g., a temperature event log) based on the determination.
[0076] At 320, one or more entries in the temperature log may be updated. For example, if the memory device temperature enters a different temperature zone, the controller may generate a new entry identifying the current cursor position (e.g., of one or more corresponding cursors) and the temperature zone. For example, the entry may be associated with a particular virtual block and may indicate the virtual page (e.g., the starting position) at which the temperature entered the different temperature zone. If the memory device temperature leaves the temperature zone, the controller may update the associated entry for that temperature zone (e.g., with a count value equal to the current cursor position minus the starting position, or with the ending position of the cursor if leaving the temperature zone).
[0077] Additionally or alternatively, if a virtual block is closed (e.g., the controller writes to the last virtual page of the virtual block), the controller may complete the entry for the closed virtual block (e.g., set the count or end position value of the entry) and may create a new entry for the new virtual block assigned to the cursor. In some examples, if copyback or garbage collection is performed under extreme temperatures, the controller may update the temperature log entry for the data written during the copyback or garbage collection procedure. If the controller creates or updates the log entry, the controller may write the log entry to the NAND memory device (e.g., an SLC block). For example, the entry may be created and updated at the controller in volatile memory (e.g., a cache) and persisted in the temperature log in the memory device.
[0078] The temperature log may be stored in a lower-level cell than the one or more cells that may store the corresponding data. For example, if the data is stored in QLC, the temperature log may be stored in TLC, MLC, or SLC. If the data is stored in TLC, the temperature log may be stored in MLC or SLC. If the data is stored in MLC, the temperature log may be stored in SLC. In this way, temperature information may be stored in a structure that is more resilient to the negative effects of temperature than the structure storing the data, which may allow for greater accuracy and protection of the temperature information without substantially reducing the ability to store data using higher-level cell technologies.
[0079] At 325, the temperature log may not be updated. For example, if the memory device temperature does not enter a different temperature zone, the controller may avoid updating any entries in the temperature log. By avoiding writing temperature information when the temperature does not enter a different temperature zone, the memory system can reduce the processing overhead, storage overhead, and latency (however, minimal) associated with tracking temperature anomalies. In some cases, the controller may record an entry in the temperature log if the temperature enters and exits a nominal temperature zone. In other cases, the controller may avoid recording temperature information related to the nominal temperature zone.
[0080] In some cases, at 330, a log, such as a binary tree, may be maintained for the temperature log. As just one example of multiple alternatives, a binary tree may support efficient searching of the temperature log. In some examples, the memory system may support different data structures for searching the temperature log. The memory system may generate a binary tree in volatile memory (e.g., in a cache). In some cases, one or more binary trees may be generated dynamically, such as on demand (e.g., based on received read operations). The controller may generate an index on the temperature log in the binary tree, where the binary tree may include records associated with corresponding virtual blocks having at least one record stored in the temperature log. The binary tree may be based on a virtual page start value stored in a temperature log entry for fast searching of temperature log information. In some cases, if the memory system loses power, the binary tree may be lost from memory (e.g., if the binary tree is stored (e.g., cached) in volatile memory). If the memory system regains power, the memory system may reconstruct the tree by reading the temperature log.
[0081] In some cases, at 335, garbage collection can be performed based on the temperature information. For example, a controller (e.g., a storage controller) can perform a garbage collection procedure based on the memory device temperature being within a nominal temperature range (e.g., within a threshold temperature). The controller can scan the temperature log to identify data written at extreme temperatures (e.g., temperatures above or below the nominal temperature range) and rewrite the data to other partitions of the memory device while the memory device is within the nominal temperature range. Based on this garbage collection procedure, the controller can update or delete temperature log entries related to such data previously written at extreme temperatures. In this way, the controller can dynamically (e.g., automatically) reduce the amount of data written to the memory device at extreme temperatures.
[0082] Figure 3B An example of a process flow 300-b supporting a read operation is described. The process flow 300-b may be executed by a memory system, such as referring to Figure 1 、 2 and 3A. For example, a controller coupled to a memory array (e.g., which may be a component of a memory system) may perform one or more of the functions described herein. Alternative examples of the following may be implemented, in which some steps are performed in a different order than described or not performed at all. In some cases, the steps may include additional features not mentioned below, or other steps may be added.
[0083] At 340, a read command may be received. For example, the memory system may receive a read command from a host system. The read command may indicate a read of data from a memory device (e.g., a NAND-based memory storage unit). For example, the read command may indicate a host LBA corresponding to the data.
[0084] At 345, a partition can be identified. For example, a controller (e.g., a storage controller) can convert the host LBA indicated by the read command into a physical address in the memory device (e.g., using an L2P mapping table). The physical address can correspond to a virtual block and a virtual page of the memory device. In some cases, one or more virtual blocks, one or more virtual pages, or a combination thereof to be read can correspond to a partition (e.g., a subset of the memory device).
[0085] At 350, the controller may determine whether data was written to the partition outside of a threshold temperature. For example, the controller may (e.g., as needed) identify or generate a binary tree corresponding to the determined virtual block and search the binary tree for a node corresponding to the partition. The node may indicate the temperature range at which data was written to the partition. In some cases, depending on the amount of data to be read, the partition may correspond to multiple temperature ranges.
[0086] If data is written to a partition at a temperature outside of a temperature threshold, the controller may use temperature compensation to read data from the partition at 355. For example, the temperature log may indicate that the data was written to the partition at a temperature zone that is below a first threshold temperature value (e.g., below a nominal temperature range), above a second threshold temperature value (e.g., above a nominal temperature range), below a threshold temperature range (e.g., a nominal temperature range), above a threshold temperature range (e.g., a nominal temperature range), or any combination thereof. This temperature zone may correspond to a temperature compensation value or function that is used to adjust one or more aspects of the data during a read operation to effectively mitigate the negative impact of temperature on the data during a write operation.
[0087] If data is written to a partition at a temperature within a temperature threshold (e.g., within a nominal temperature range), the controller may read the data from the partition without corresponding temperature compensation at 360. For example, the temperature log may not indicate that the data was written to the temperature zone where the partition is located, or may indicate that the data was written at the nominal temperature. Therefore, the controller may avoid performing a temperature compensation procedure on the data during the read operation.
[0088] Aspects of process flows 300-a and 300-b may be implemented by a controller and other components. Additionally or alternatively, aspects of process flows 300-a and 300-b may be implemented as instructions stored in a memory (e.g., firmware stored in a memory coupled to memory device 240 or storage controller 230). For example, when executed by a controller (e.g., storage controller 230), the instructions may cause the controller to perform the operations of process flows 300-a and 300-b.
[0089] Figure 4 An example of a storage configuration 400 supporting temperature anomaly tracking in a temperature log of a memory system according to an example disclosed herein is described. The storage configuration 400 may be configured as described in reference to Figure 1 、 2, 3A, and 3B, or some combination thereof. For example, entries in temperature log 405 may be generated and updated in volatile memory (e.g., in a cache at a controller such as a storage controller), while temperature log 405 may be persisted in a memory device (e.g., an SLC). Temperature ranges 410 may be defined for a memory system or memory device and may be stored at the memory system or memory device. One or more structures, such as search tree 440, may be generated based on temperature log 405 and may be stored (e.g., permanently) in memory at a memory device, temporarily (e.g., cached) at a controller, or both. In some cases, search tree 440 may be generated dynamically (e.g., on demand), such as when a read command is received for a virtual block that has an entry in temperature log 405 but does not currently have a generated search tree 440.
[0090] Search tree 440 may be an example of a binary search tree. However, it should be understood that the memory system may implement additional or alternative data structures to support efficient searching of temperature log 405. Additionally, although Figure 4 An example of ten temperature ranges 410 is described, but it should be understood that any number and size of temperature ranges 410 may be supported. In some cases, the temperature log 405 and the lookup table for the temperature ranges 410 and the corresponding error correction powers may be stored in permanent storage (e.g., non-volatile memory 430), while the search tree 440 may be stored in volatile memory 435.
[0091] The temperature log 405 can store temperature information for one or more partitions of the memory system in one or more log entries. In some examples, an entry in the temperature log can indicate a virtual block value 415, a starting virtual page value 420, a count 425 (or alternatively, an ending virtual page value), and a temperature range 410. Each temperature range 410 can correspond to a temperature range of interest 410 in a lookup table of temperature ranges 410. For example, the memory system can include temperature ranges R0 410-a, R1 410-b, R2 410-c, R3 410-d, R4 410-e, R5 410-f, R6 410-g, R7 410-h, R8 410-i, and R9 410-j.
[0092] Data may be written to the temperature log 405 sequentially. For example, the controller may write data to virtual block 0 of the memory device starting at virtual page 0 at R3 410-d. The controller may generate a log entry for virtual block 0 with a start virtual page value 420 of 0 and a temperature range 410 of R3 410-d. Subsequently, the temperature of the memory device may exit R3 410-d and enter R4 410-e. This temperature change may occur while the cursor is on virtual page 5922 (e.g., while the controller is writing data to virtual page 5922 of virtual block 0). Therefore, the controller may close the first entry by writing a count 425 of 5922 (or alternatively, an end virtual page value of 5921) and generate a new entry for virtual block 0 with a start virtual page value 420 of 5922 and a temperature range 410 of R4 410-e. If the controller closes a virtual block, the controller may also close the current log entry and generate a new entry. For example, the controller may write data to the last virtual page of virtual block 0 and may close the second entry by writing a count 425 of 2270. The controller may generate a new log entry for the next virtual block to which the cursor moves (e.g., virtual block 1). This new log entry may indicate the same or a different temperature range 410 than the previous log entry for the previous virtual block. Figure 4 As illustrated in , temperature ranges 410 between entries may be increased or decreased, one or more temperature ranges 410 between entries may be omitted, and entries may be incomplete (eg, where the controller is currently writing to a virtual block in temperature range 410).
[0093] The controller may generate one or more search trees 440 corresponding to the temperature log 405. The search tree 440 may include one or more nodes 445 connected by branches 450. In some examples, the search tree 440 may correspond to an entry in the temperature log 405 for a corresponding virtual block value 415. For example, the search tree 440-a corresponds to virtual block 0, and the search tree 440-b corresponds to virtual block 1. In some examples, each node 445 of the search tree 440 may be based on the starting virtual page value 420 for the log entry and may indicate the corresponding temperature range 410 for the entry. A node 445 may include up to two branches 450 (e.g., a left child pointer, a right child pointer, both, or neither). For example, a node 445-a may be connected to a node 445-b via a branch 450-a. Since branch 450-a is a right child pointer, branch 450-a may indicate that node 445-b (e.g., a child node) has a larger starting virtual page value 420 than node 445-a (e.g., a parent node). A left child pointer may indicate that a child node has a smaller starting virtual page value 420 than the parent node.
[0094] The controller can use search tree 440 to quickly search for temperature compensation values (e.g., for a read operation). For example, the controller may receive a read command and determine that the data to be read is stored at virtual page 900 of virtual block 1. The controller may identify search tree 440-b corresponding to virtual block 1. For example, search tree 440-b may be stored in a cache or generated dynamically (e.g., on demand) based on the read command. To perform the search, the controller may examine root node 445-c of search tree 440-b. Since 900 is less than 1815 (i.e., the starting virtual page value 420 of node 445-c) and since node 445-c has a left child pointer (e.g., branch 450-b), the controller may traverse branch 450-b to node 445-d. Since 900 is greater than 593 and node 445-d has a right child pointer, the controller may traverse branch 450-e to node 445-g. Since 900 is less than 1615, but node 445-g does not have a left child pointer, the controller can determine that virtual page 900 corresponds to node 445-d (e.g., greater than 593 but less than 1615). Therefore, the controller can determine that data is written to virtual page 900 under temperature range R5 410-f and can use corresponding temperature compensation to read data from virtual page 900 of virtual block 1. This type of tree traversal procedure can be used to determine the temperature range of any virtual page of virtual block 1 represented by nodes 445-c, 445-d, 445-e, 445-f, 445-g, 445-h, and 445-i and branches 450-b, 450-c, 450-d, 450-e, 450-f, and 450-g.
[0095] Figure 5 A block diagram 500 is shown of a memory system 520 that supports temperature anomaly tracking in a temperature log of a memory system according to an example disclosed herein. The memory system 520 may be a memory system as described in reference to FIG. Figures 1 to 4 Memory system 520 or its various components may be examples of means for performing various aspects of temperature anomaly tracking in a temperature log of a memory system as described herein. For example, memory system 520 may include a storage component 525, a command component 530, a temperature compensation manager 535, a read component 540, a write component 545, a temperature detector 550, a temperature log manager 555, a binary tree manager 560, a garbage collection manager 565, or any combination thereof. Each of these components may communicate with each other directly or indirectly (e.g., via one or more buses, data paths, or both).
[0096] The storage component 525 may be configured as or otherwise support means for storing a set of partitions of the memory system and a temperature log containing a set of temperature ranges associated with the set of partitions. The command component 530 may be configured as or otherwise support means for receiving a command for a memory device to read a partition from the set of partitions. The temperature compensation manager 535 may be configured as or otherwise support means for determining, based at least in part on the temperature log, whether temperature data for a partition and associated with a set of temperature ranges indicates that data was written to the partition outside a threshold temperature. The read component 540 may be configured as or otherwise support means for reading data from a partition based at least in part on determining whether the temperature data for the partition indicates that data was written to the partition outside a threshold temperature.
[0097] In some instances, the command indicates a host LBA from which data is to be read, and the temperature compensation manager 535 may be configured to or otherwise support means for determining a physical address of a partition in the memory system corresponding to the host LBA, the physical address indicating a virtual block and a virtual page of the virtual block of the memory system, wherein determining whether the temperature data for the partition indicates that data is to be written to the partition outside a threshold temperature is based at least in part on determining the physical address of the partition.
[0098] In some examples, the binary tree manager 560 may be configured to or otherwise support means for determining a binary tree corresponding to the virtual block and based at least in part on the temperature log. In some examples, the binary tree manager 560 may be configured to or otherwise support means for searching the binary tree for a node corresponding to the virtual page and indicating a temperature range from a set of temperature ranges, wherein determining whether the temperature data for the partition indicates that data was written to the partition outside of a threshold temperature is based at least in part on the temperature range indicated by the node.
[0099] In some examples, to support reading data from a partition, the temperature compensation manager 535 may be configured as or otherwise support means for performing a temperature compensation procedure on the data based at least in part on determining that temperature data for the partition indicates that the data was written to the partition outside a threshold temperature, the temperature compensation procedure including adjusting one or more aspects of the data based at least in part on a temperature range from a set of temperature ranges within which the data was written at the memory system.
[0100] In some examples, to support reading data from a partition, temperature compensation manager 535 may be configured as or otherwise support means for avoiding performing a temperature compensation procedure on data based at least in part on determining that temperature data for the partition indicates that the data is within a threshold temperature.
[0101] In some examples, the binary tree manager 560 may be configured to or otherwise support means for constructing, for each virtual block of the memory system having data written outside a threshold temperature, a respective binary tree based at least in part on the temperature log, wherein each of the one or more nodes of each respective binary tree indicates a virtual page start index and a temperature range from a set of temperature ranges.
[0102] In some examples, a respective binary tree is constructed in volatile memory for each virtual block having data written outside a threshold temperature, and the binary tree manager 560 may be configured as or otherwise support means for reconstructing the respective binary tree in volatile memory for each virtual block of the memory system having data written outside the threshold temperature based at least in part on the temperature log and restoring power to the memory system after a loss of power to the memory system.
[0103] In some examples, data is written to the partition below a first threshold temperature value, above a second threshold temperature value, below a threshold temperature range, above a threshold temperature range, or any combination thereof.
[0104] In some examples, a memory system includes one or more NAND memory devices.
[0105] In some examples, storage component 525 may be configured as or otherwise support means for storing a set of partitions of a memory system and a temperature log containing a set of temperature ranges associated with the set of partitions. In some examples, command component 530 may be configured as or otherwise support means for receiving a command for a memory device to write data to the memory system. Write component 545 may be configured as or otherwise support means for writing data to a partition in the set of partitions corresponding to a location in the memory system based at least in part on the command. Temperature detector 550 may be configured as or otherwise support means for determining the current temperature of the memory system at the time data is written to the partition, the current temperature falling within a temperature range in the set of temperature ranges that falls outside a threshold temperature. Temperature log manager 555 may be configured as or otherwise support means for writing temperature data for the partition corresponding to the current temperature to a temperature log based at least in part on the current temperature falling within a temperature range that falls outside a threshold temperature.
[0106] In some examples, temperature detector 550 may be configured as or otherwise support means for triggering a temperature reading based at least in part on receiving a command to write data at the memory system, wherein the current temperature is determined based at least in part on the triggered temperature reading.
[0107] In some examples, temperature detector 550 may be configured or otherwise support means for triggering temperature readings based at least in part on a periodicity, wherein the current temperature is determined based at least in part on the triggered temperature readings.
[0108] In some examples, to support writing temperature data for a partition to a temperature log, the temperature log manager 555 may be configured to or otherwise support means for generating a new log entry in the temperature log that corresponds to a temperature range and indicates a virtual block that corresponds to the partition and corresponds to the location at which the current temperature enters the temperature range.
[0109] In some examples, the temperature log manager 555 can be configured to or otherwise support means for determining that the current temperature exits a previous temperature range in the set of temperature ranges. In some examples, the temperature log manager 555 can be configured to or otherwise support means for updating a log entry corresponding to the previous temperature range in the temperature log to indicate the position at which the current temperature exits the previous temperature range.
[0110] In some examples, to support writing data to a partition, the write component 545 may be configured or otherwise support means for writing a first portion of the data to a first virtual block. In some examples, to support writing data to a partition, the write component 545 may be configured or otherwise support means for writing a second portion of the data to a second virtual block. In some examples, the temperature log manager 555 may be configured or otherwise support means for updating a log entry corresponding to the first virtual block in the temperature log to indicate the last virtual page of the first virtual block, and the temperature log manager 555 may be configured or otherwise support means for generating a new log entry in the temperature log corresponding to the second virtual block and indicating the first virtual page of the second virtual block.
[0111] In some examples, command component 530 may be configured to or otherwise support means for receiving an additional command for a memory device to write additional data to the memory system. In some examples, write component 545 may be configured to or otherwise support means for writing the additional data to an additional partition in the set of partitions corresponding to the updated location of the memory system based at least in part on the additional command. In some examples, temperature detector 550 may be configured to or otherwise support means for determining that the current temperature of the update of the memory system when the additional data is written to the additional partition is within a threshold temperature, remains within a temperature range from a set of temperature ranges as the previous current temperature when the previous data was written, or both. In some examples, temperature log manager 555 may be configured to or otherwise support means for avoiding writing to the temperature log based at least in part on determining that the current temperature of the update is within a threshold temperature, remains within a temperature range from a set of temperature ranges as the previous current temperature when the previous data was written, or both.
[0112] In some examples, temperature detector 550 may be configured as or otherwise support means for determining that an updated current temperature of the memory system is within a threshold temperature. In some examples, garbage collection manager 565 may be configured as or otherwise support means for performing a garbage collection procedure for data written to a partition based at least in part on the temperature data for the partition corresponding to a current temperature that is outside a threshold temperature.
[0113] In some examples, the garbage collection manager 565 may be configured to or otherwise support means for rewriting data to the additional partition based at least in part on the garbage collection routine. In some examples, the garbage collection manager 565 may be configured to or otherwise support means for updating temperature data for the partition from the temperature log based at least in part on rewriting the data to the additional partition. In some examples, the garbage collection manager 565 may be configured to or otherwise support means for avoiding writing additional temperature data for the additional partition to the temperature log based at least in part on rewriting the data to the additional partition with an updated current temperature that is within a threshold temperature.
[0114] In some examples, each log entry in the temperature log includes an indication of a respective temperature range in the set of temperature ranges, a virtual block value, a virtual page start index, a virtual page end index, a virtual page count value, or any combination thereof.
[0115] In some examples, the temperature data is stored in a first portion of the memory system that is different from a second portion of the memory system that stores the data.
[0116] In some examples, a first portion of the memory system includes memory cells having a first number of one or more tiers, and a second portion of the memory system includes memory cells having a second number of one or more tiers greater than the first number of one or more tiers.
[0117] In some examples, the memory cells having the first number of one or more tiers include SLC, and the memory cells having the second number of tiers include QLC.
[0118] In some examples, the current temperature enters a temperature range that is below a first threshold temperature value, above a second threshold temperature value, below a threshold temperature range, above a threshold temperature range, or any combination thereof.
[0119] In some examples, a memory system includes one or more NAND memory devices.
[0120] Figure 6 A flowchart illustrating a method 600 for supporting temperature anomaly tracking in a temperature log of a memory system according to an example disclosed herein is shown. The operations of the method 600 may be implemented by a memory system or components thereof as described herein. For example, the operations of the method 600 may be implemented by a memory system or components thereof as described herein. Figures 1 to 5 The memory system described herein performs the functions described herein. In some examples, the memory system may execute a set of instructions to control functional elements of the device to perform the functions described herein. Additionally or alternatively, the memory system may use dedicated hardware to perform aspects of the functions described herein.
[0121] At 605, method 600 may include storing a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions. The operations of 605 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 605 may be described in detail in reference to Figure 5 The storage component 525 performs as described.
[0122] At 610, method 600 may include receiving a command for a memory device to read a partition from a set of partitions. The operations of 610 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 610 may be described by reference to Figure 5 The command component 530 is described as executing.
[0123] At 615, method 600 may include determining, based at least in part on the temperature log, whether temperature data for the partition and associated with the set of temperature ranges indicates that data was written to the partition outside of a threshold temperature. The operations of 615 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 615 may be described by reference to Figure 5 The temperature compensation manager 535 is described as performing.
[0124] At 620, method 600 may include reading data from a partition based at least in part on determining whether the temperature data for the partition indicates that the data is written to the partition outside of a threshold temperature. The operations of 620 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 620 may be described by reference to Figure 5 The described read component 540 performs.
[0125] In some examples, an apparatus as described herein may perform one or more methods, such as method 600. The apparatus may include features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for: storing a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions; receiving a command for a memory device to read a partition from the set of partitions; determining, based at least in part on the temperature log, whether temperature data for the partition and associated with the set of temperature ranges indicates that data is written to the partition outside a threshold temperature; and reading data from the partition based at least in part on determining whether the temperature data for the partition indicates that data is written to the partition outside the threshold temperature.
[0126] In some instances of the method 600 and apparatus described herein, the command indicates a host LBA from which data is to be read, and some instances of the method 600 and apparatus described herein may include other operations, features, circuit systems, logic, means, or instructions for determining a physical address corresponding to the host LBA of a partition in a memory system, the physical address indicating a virtual block and a virtual page of the virtual block of the memory system, wherein determining whether temperature data for the partition indicates writing data to the partition outside a threshold temperature may be based at least in part on determining the physical address of the partition.
[0127] Some examples of the method 600 and apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining a binary tree corresponding to the virtual block and based at least in part on the temperature log, and searching the binary tree for nodes corresponding to the virtual page and indicating a temperature range from a set of temperature ranges, wherein determining whether temperature data for the partition indicates writing data to the partition outside a threshold temperature may be based at least in part on the temperature range indicated by the node.
[0128] In some examples of the method 600 and apparatus described herein, reading data from a partition may include operations, features, circuitry, logic, means, or instructions for performing a temperature compensation routine on the data based at least in part on determining that temperature data for the partition indicates that the data was written to the partition outside a threshold temperature, the temperature compensation routine including adjusting one or more aspects of the data based at least in part on a temperature range in a set of temperature ranges within which the data was written at a memory system.
[0129] In some examples of the method 600 and apparatus described herein, reading data from a partition may include operations, features, circuitry, logic, means, or instructions for avoiding performing a temperature compensation procedure on the data based at least in part on determining that temperature data for the partition indicates that the data is written to the partition within a threshold temperature.
[0130] Some examples of the method 600 and apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for constructing, for each virtual block of the memory system having data written outside a threshold temperature, a respective binary tree based at least in part on the temperature log, wherein each of the one or more nodes of each respective binary tree indicates a virtual page start index and a temperature range from a set of temperature ranges.
[0131] In some examples of the method 600 and apparatus described herein, a respective binary tree may be constructed in volatile memory for each virtual block having data written outside a threshold temperature, and some examples of the method 600 and apparatus described herein may include other operations, features, circuit systems, logic, means, or instructions for reconstructing the respective binary tree in volatile memory for each virtual block of the memory system having data written outside a threshold temperature based at least in part on the temperature log, and restoring power to the memory system after a loss of power to the memory system.
[0132] In some examples of the method 600 and apparatus described herein, data is written to a partition below a first threshold temperature value, above a second threshold temperature value, below a threshold temperature range, above a threshold temperature range, or any combination thereof.
[0133] In some examples of the method 600 and apparatus described herein, a memory system includes one or more NAND memory devices.
[0134] Figure 7 A flowchart illustrating a method 700 for supporting temperature anomaly tracking in a temperature log of a memory system according to an example disclosed herein is shown. The operations of the method 700 may be implemented by a memory system or components thereof as described herein. For example, the operations of the method 700 may be implemented by a memory system or components thereof as described herein. Figures 1 to 5 The memory system described herein performs the functions described herein. In some examples, the memory system may execute a set of instructions to control functional elements of the device to perform the functions described herein. Additionally or alternatively, the memory system may use dedicated hardware to perform aspects of the functions described herein.
[0135] At 705, method 700 may include storing a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions. The operations of 705 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 705 may be described by reference to Figure 5 The storage component 525 performs as described.
[0136] At 710, method 700 may include receiving a command for a memory device to write data at a memory system. The operations of 710 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 710 may be described by reference to Figure 5 The command component 530 is described as executing.
[0137] At 715, method 700 may include writing data to a partition in a set of partitions corresponding to a location of a memory system based at least in part on the command. The operations of 715 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 715 may be described by reference to Figure 5 The write component 545 performs as described.
[0138] At 720, method 700 may include determining a current temperature of the memory system when data is written to the partition, the current temperature falling within a temperature range in a set of temperature ranges that is outside of a threshold temperature. The operations of 720 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 720 may be described by reference to Figure 5 The temperature detector 550 is described as performing.
[0139] At 725, method 700 may include writing temperature data for the partition corresponding to the current temperature to a temperature log based at least in part on the current temperature entering a temperature range outside of a threshold temperature. The operations of 725 may be performed according to examples as disclosed herein. In some examples, aspects of the operations of 725 may be described by reference to Figure 5 The temperature log manager 555 is described as executing.
[0140] In some examples, an apparatus as described herein may perform one or more methods, such as method 700. The apparatus may include features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for: storing a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions; receiving a command for a memory device to write data at the memory system; writing the data to a partition in the set of partitions corresponding to a location of the memory system based at least in part on the command; determining a current temperature of the memory system at the time the data is written to the partition, the current temperature entering a temperature range in the set of temperature ranges that is outside a threshold temperature; and writing temperature data for the partition corresponding to the current temperature to the temperature log based at least in part on the current temperature entering a temperature range that is outside the threshold temperature.
[0141] Some examples of the method 700 and apparatus described herein may further include operations, features, circuit systems, logic, means, or instructions for triggering a temperature reading based at least in part on receiving a command to write data at a memory system, wherein a current temperature may be determined based at least in part on the triggered temperature reading.
[0142] Some examples of the method 700 and apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for triggering a temperature reading based at least in part on a periodicity, wherein a current temperature may be determined based at least in part on the triggered temperature reading.
[0143] In some examples of the method 700 and apparatus described herein, writing temperature data for a partition to a temperature log may include operations, features, circuitry, logic, means, or instructions for generating a new log entry in the temperature log that corresponds to a temperature range and indicates a virtual block that corresponds to the partition and corresponds to a location at which the current temperature enters the temperature range.
[0144] Some examples of the method 700 and apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for determining that a current temperature exits a previous temperature range in a set of temperature ranges, and updating a log entry corresponding to the previous temperature range in a temperature log to indicate the position at which the current temperature exits the previous temperature range.
[0145] In some examples of the methods 700 and apparatus described herein, writing data to a partition may include operations, features, circuitry, logic, means, or instructions for writing a first portion of the data to a first virtual block and a second portion of the data to a second virtual block. Some examples of the methods 700 and apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for updating a log entry corresponding to the first virtual block in a temperature log to indicate a last virtual page of the first virtual block; and generating a new log entry in the temperature log, the new log entry corresponding to the second virtual block and indicating a first virtual page of the second virtual block.
[0146] Some examples of the method 700 and apparatus described herein may further include operations, features, circuitry, logic, means, or instructions for: receiving an additional command for a memory device to write additional data at the memory system; writing the additional data to an additional partition in the set of partitions corresponding to the updated location of the memory system based at least in part on the additional command; determining that a current temperature of the update of the memory system when the additional data is written to the additional partition is within a threshold temperature, remains within a temperature range in the same set of temperature ranges as a previous current temperature when the previous data was written, or both; and avoiding writing to the temperature log based at least in part on determining that the current temperature of the update is within a threshold temperature, remains within a temperature range as a previous current temperature when the previous data was written, or both.
[0147] Some instances of the method 700 and apparatus described herein may further include operations, features, circuitry, logic, components, or instructions for determining that an updated current temperature of the memory system is within a threshold temperature; and performing a garbage collection procedure for data written to the partition based at least in part on the temperature data for the partition corresponding to a current temperature outside the threshold temperature.
[0148] Some instances of the method 700 and apparatus described herein may further include operations, features, circuit systems, logic, components, or instructions for: rewriting data to an additional partition based at least in part on a garbage collection procedure; updating temperature data for a partition from a temperature log based at least in part on rewriting the data to the additional partition; and avoiding writing additional temperature data for the additional partition to the temperature log based at least in part on rewriting the data to the additional partition using an updated current temperature that is within a threshold temperature.
[0149] In some examples of the method 700 and apparatus described herein, each log entry in the temperature log includes an indication of a corresponding temperature range in the set of temperature ranges, a virtual block value, a virtual page start index, a virtual page end index, a virtual page count value, or any combination thereof.
[0150] In some examples of the method 700 and apparatus described herein, temperature data may be stored in a first portion of a memory system that is different from a second portion of the memory system that stores data.
[0151] In some examples of the methods 700 and apparatus described herein, a first portion of a memory system includes memory cells having a first number of one or more tiers, and a second portion of the memory system includes memory cells having a second number of one or more tiers greater than the first number.
[0152] In some examples of the method 700 and apparatus described herein, the memory cells having the first number of one or more levels include SLC, and the memory cells having the second number of levels include QLC.
[0153] In some examples of the methods 700 and apparatus described herein, the current temperature enters a temperature range that may be below a first threshold temperature value, above a second threshold temperature value, below a threshold temperature range, above a threshold temperature range, or any combination thereof.
[0154] In some examples of the method 700 and apparatus described herein, a memory system includes one or more NAND memory devices.
[0155] It should be noted that the methods described above describe possible embodiments, and that the operations and steps may be rearranged or otherwise modified, and that other embodiments are possible. Additionally, portions from two or more of the methods described may be combined.
[0156] The information and signals described herein may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof. Some figures may illustrate a signal as a single signal; however, a signal may represent a bus of signals, where the bus may have various bit widths.
[0157] The terms "if, then," "when," "based on," "based at least in part on," and "in response to" are interchangeable if used to describe a conditional action or process.
[0158] The terms "electronic communication," "conductive contact," "connected," and "coupled" may refer to a relationship between components that supports the flow of electrons between the components. Components are considered to be in electronic communication with each other (or in conductive contact with each other, or connected to each other, or coupled to each other) if any conductive path exists between the components that can support the flow of signals between the components at any time. At any given time, the conductive path between components that are in electronic communication with each other (or in conductive contact with each other, or connected to each other, or coupled to each other) may be an open circuit or a closed circuit based on the operation of the device that includes the connected components. The conductive path between the connected components may be a direct conductive path between the components, or the conductive path between the connected components may be an indirect conductive path that may include an intermediate component, such as a switch, transistor, or other component. In some examples, the flow of signals between the connected components may be interrupted for a period of time, for example, using one or more intermediate components, such as a switch or transistor.
[0159] The term "coupling" refers to the condition of moving from an open-circuit relationship between components, in which signals are currently unable to communicate between the components via the conductive paths, to a closed-circuit relationship between the components in which signals can communicate between the components via the conductive paths. If a component, such as a controller, couples other components together, the component initiates a change that allows signals to flow between the other components via the conductive paths that previously did not permit signal flow.
[0160] The term "isolation" refers to a relationship between components where signals are currently unable to flow between them. Components are isolated from one another if an open circuit exists between them. For example, two components separated by a switch positioned between them are isolated from one another when the switch is open. If a controller isolates two components, it implements a change that prevents signals from flowing between the components using the conductive path that previously allowed signal flow.
[0161] As used herein, the term "layer" or "level" refers to a layer or sheet of a geometric structure (e.g., relative to a substrate). Each layer or level can have three dimensions (e.g., height, width, and depth) and can cover at least a portion of a surface. For example, a layer or level can be a 3D structure in which two dimensions are greater than the third, such as a thin film. A layer or level can contain different elements, components, and / or materials. In some instances, a layer or level can be composed of two or more sub-layers or sub-levels.
[0162] The devices discussed herein, including memory arrays, can be formed on a semiconductor substrate such as silicon, germanium, a silicon-germanium alloy, gallium arsenide, gallium nitride, or the like. In some examples, the substrate is a semiconductor wafer. In some other examples, the substrate can be a silicon-on-insulator (SOI) substrate, such as silicon-on-glass (SOG) or silicon-on-sapphire (SOP), or an epitaxial layer of semiconductor material on another substrate. The conductivity of the substrate or a subregion of the substrate can be controlled by doping using various chemical species including, but not limited to, phosphorus, boron, or arsenic. Doping can be performed during the initial formation or growth of the substrate by ion implantation or by any other doping method.
[0163] The switch components or transistors discussed herein may represent field-effect transistors (FETs) and include three-terminal devices comprising a source, a drain, and a gate. The terminals can be connected to other electronic components via conductive materials (e.g., metals). The source and drain may be conductive and may include heavily doped, e.g., degenerate, semiconductor regions. The source and drain may be separated by a lightly doped semiconductor region or channel. If the channel is n-type (i.e., the majority carriers are electrons), the FET may be referred to as an n-type FET. If the channel is p-type (i.e., the majority carriers are holes), the FET may be referred to as a p-type FET. The channel may be terminated by an insulating gate oxide. The channel conductivity may be controlled by applying a voltage to the gate. For example, applying a positive or negative voltage to an n-type FET or a p-type FET, respectively, may cause the channel to become conductive. If a voltage greater than or equal to the transistor's threshold voltage is applied to the transistor gate, the transistor may be "switched on" or "activated." If a voltage less than the transistor's threshold voltage is applied to the transistor gate, the transistor may be "off" or "deactivated."
[0164] The description set forth herein in conjunction with the accompanying drawings describes example configurations and does not represent all examples that may be implemented or within the scope of the claims. The term "exemplary" as used herein means "serving as an example, instance, or illustration" and is not "preferred" or "superior" to other examples. The detailed description includes specific details to provide an understanding of the described techniques. However, these techniques can be practiced without these specific details. In some cases, well-known structures and devices are shown in block diagram form to avoid obscuring the concepts of the described examples.
[0165] In the drawings, similar components or features may have the same reference label. Furthermore, various components of the same type may be distinguished by following the reference label with a dash and a second label that distinguishes between the similar components. If only the first reference label is used in the specification, the description applies to any of the similar components having the same first reference label, regardless of the second reference label.
[0166] The functions described herein may be implemented in hardware, software executed by a processor, firmware, or any combination thereof. If implemented in software executed by a processor, the functions may be stored as one or more instructions or codes on a computer-readable medium or transmitted via a computer-readable medium. Other examples and implementations are within the scope of this disclosure and the appended claims. For example, due to the nature of software, the functions described above may be implemented using software executed by a processor, hardware, firmware, hardwiring, or any combination thereof. Features implementing the functions may also be physically located at various locations, including being distributed so that portions of the functions are implemented at different physical locations.
[0167] For example, the various illustrative blocks and components described in connection with the disclosure herein may be implemented or performed using a general purpose processor, a DSP, an ASIC, an FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any processor, controller, microcontroller, or state machine. A processor may be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
[0168] As used herein, "or," as used in a list of items (e.g., a list of items followed by a phrase such as "at least one of" or "one or more of"), included in the claims, indicates an inclusive list, such that, for example, a list of at least one of A, B, or C means A or B or C or AB or AC or BC or ABC (i.e., A and B and C). Additionally, as used herein, the phrase "based on" should not be construed as referring to a closed set of conditions. For example, an exemplary step described as "based on condition A" could be based on both condition A and condition B without departing from the scope disclosed herein. In other words, as used herein, the phrase "based on" should be interpreted similarly to the phrase "based, at least in part, on."
[0169] Computer-readable media include both non-transitory computer storage media and communication media that include any media that facilitates transferring a computer program from one place to another. Non-transitory storage media can be any available media that can be accessed by a general-purpose or special-purpose computer. By way of example and not limitation, non-transitory computer-readable media may include RAM, ROM, electrically erasable programmable read-only memory (EEPROM), compact disc (CD) ROM or other optical disc storage devices, magnetic disk storage devices or other magnetic storage devices, or any other non-transitory media that can be used to carry or store desired program code components in the form of instructions or data structures and can be accessed by a general-purpose or special-purpose computer or a general-purpose or special-purpose processor. Also, any connection is appropriately referred to as a computer-readable medium. For example, if software is transmitted from a website, server or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL) or wireless technologies such as infrared, radio and microwaves, then the coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwaves are included in the definition of media. As used herein, disk and disc include CDs, laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs. Disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of computer-readable media.
[0170] The description herein is provided to enable one skilled in the art to make or use the present disclosure. Various modifications to the present disclosure will be apparent to those skilled in the art, and the general principles defined herein may be applied to other variations without departing from the scope of the present disclosure. Therefore, the present disclosure is not limited to the examples and designs described herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
Claims
1. A device comprising: memory arrays; as well as a controller coupled to the memory array and configured to cause the device to: storing a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions; receiving a command for a memory device to read a partition from the set of partitions; determining, based at least in part on the temperature log, whether temperature data for the partition and associated with the set of temperature ranges indicates that data was written to the partition outside of a threshold temperature; as well as The data is read from the partition based at least in part on determining whether the temperature data for the partition indicates that the data was written to the partition outside the threshold temperature.
2. The apparatus of claim 1 , wherein the command indicates a host logical block address from which the data is to be read, and the controller is further configured to cause the apparatus to: determining a physical address of the partition in the memory system corresponding to the host logical block address, the physical address indicating a virtual block of the memory system and a virtual page of the virtual block, wherein determining whether the temperature data for the partition indicates writing the data to the partition outside the threshold temperature is based at least in part on determining the physical address of the partition.
3. The apparatus of claim 2, wherein the controller is further configured to cause the apparatus to: determining a binary tree corresponding to the virtual block and based at least in part on the temperature log; and The binary tree is searched for a node corresponding to the virtual page and indicating a temperature range from the set of temperature ranges, wherein determining whether the temperature data for the partition indicates writing the data to the partition outside the threshold temperature is based at least in part on the temperature range indicated by the node.
4. The device of claim 1 , wherein the controller configured to cause the device to read the data from the partition is further configured to cause the device to: and performing a temperature compensation procedure on the data based at least in part on determining that the temperature data for the partition indicates that the data was written to the partition outside the threshold temperature, the temperature compensation procedure comprising adjusting one or more aspects of the data based at least in part on a temperature range in the set of temperature ranges at which the data was written at the memory system.
5. The device of claim 1 , wherein the controller configured to cause the device to read the data from the partition is further configured to cause the device to: Performing a temperature compensation procedure on the data is avoided based at least in part on determining that the temperature data for the partition indicates that the data is written to the partition within the threshold temperature.
6. The apparatus of claim 1 , wherein the controller is further configured to cause the apparatus to: A respective binary tree is constructed based at least in part on the temperature log for each virtual block of the memory system having data written outside the threshold temperature, wherein each of the one or more nodes of each respective binary tree indicates a virtual page start index and a temperature range from the set of temperature ranges.
7. The apparatus of claim 6 , wherein the respective binary tree is constructed in volatile memory for each virtual block having data written outside the threshold temperature, and the controller is further configured to cause the apparatus to: The respective binary tree is reconstructed in the volatile memory based at least in part on the temperature log for each virtual block of the memory system having data written outside the threshold temperature, and power at the memory system is restored after a loss of power at the memory system.
8. The apparatus of claim 1, wherein the data is written to the partition below a first threshold temperature value, above a second threshold temperature value, below a threshold temperature range, above the threshold temperature range, or any combination thereof.
9. The apparatus of claim 1, wherein the memory system comprises one or more NAND memory devices.
10. A device comprising: memory arrays; as well as a controller coupled to the memory array and configured to cause the device to: storing a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions; receiving a command for a memory device to write data at the memory system; writing the data to a partition in the set of partitions corresponding to a location of the memory system based at least in part on the command; determining a current temperature of the memory system when the data is written to the partition, the current temperature falling within a temperature range in the set of temperature ranges that is outside a threshold temperature; as well as Temperature data for the partition corresponding to the current temperature is written to the temperature log based at least in part on the current temperature entering the temperature range outside of the threshold temperature.
11. The apparatus of claim 10, wherein the controller is further configured to cause the apparatus to: A temperature reading is triggered based at least in part on receiving the command to write the data at the memory system, wherein the current temperature is determined based at least in part on the triggered temperature reading.
12. The apparatus of claim 10, wherein the controller is further configured to cause the apparatus to: A temperature reading is triggered based at least in part on a periodicity, wherein the current temperature is determined based at least in part on the triggered temperature reading.
13. The device of claim 10, wherein the controller configured to cause the device to write the temperature data for the partition to the temperature log is configured to cause the device to: A new log entry is generated in the temperature log that corresponds to the temperature range and indicates a virtual block that corresponds to the partition and corresponds to the location at which the current temperature enters the temperature range.
14. The apparatus of claim 10, wherein the controller is further configured to cause the apparatus to: determining that the current temperature exits a previous temperature range in the set of temperature ranges; and A log entry corresponding to the previous temperature range is updated in the temperature log to indicate the position at which the current temperature exits the previous temperature range.
15. The device of claim 10, wherein the controller configured to cause the device to write the data to the partition is configured to cause the device to: writing a first portion of the data to a first virtual block; and writing a second portion of the data to a second virtual block, the controller being further configured to cause the device to: updating a log entry corresponding to the first virtual block in the temperature log to indicate a last virtual page of the first virtual block; and A new log entry is generated in the temperature log, corresponding to the second virtual block and indicating a first virtual page of the second virtual block.
16. The apparatus of claim 10, wherein the controller is further configured to cause the apparatus to: receiving an additional command for the memory device to write additional data at the memory system; writing the additional data to an additional partition in the set of partitions corresponding to an updated location of the memory system based at least in part on the additional command; determining that an updated current temperature of the memory system when the additional data is written to the additional partition is within the threshold temperature, remains within the same temperature range from the set of temperature ranges as a previous current temperature when previous data was written, or both; and Writing to the temperature log is avoided based at least in part on determining that the updated current temperature is within the threshold temperature, remains in the same temperature range as the previous current temperature when the previous data was written, or both.
17. The apparatus of claim 10, wherein the controller is further configured to cause the apparatus to: determining that an updated current temperature of the memory system is within the threshold temperature; and A garbage collection procedure is performed on the data written to the partition based at least in part on the temperature data for the partition corresponding to the current temperature being outside the threshold temperature.
18. The apparatus of claim 17, wherein the controller is further configured to cause the apparatus to: rewriting the data to an additional partition based at least in part on the garbage collection procedure; updating the temperature data for the partition from the temperature log based at least in part on rewriting the data to the additional partition; and Writing additional temperature data for the additional partition to the temperature log is avoided based at least in part on rewriting the data to the additional partition using the updated current temperature that is within the threshold temperature.
19. The apparatus of claim 10, wherein each log entry in the temperature log comprises an indication of a corresponding temperature range in the set of temperature ranges, a virtual block value, a virtual page start index, a virtual page end index, a virtual page count value, or any combination thereof.
20. The apparatus of claim 10, wherein the temperature data is stored in a first portion of the memory system that is different from a second portion of the memory system that stores the data.
21. The apparatus of claim 20, wherein the first portion of the memory system includes memory cells having a first number of one or more levels, and the second portion of the memory system includes memory cells having a second number of one or more levels greater than the first number of one or more levels.
22. The apparatus of claim 21, wherein the memory cells having the first number of one or more levels comprise single-level cells and the memory cells having the second number of levels comprise four-level cells.
23. The apparatus of claim 10, wherein the current temperature enters the temperature range, the temperature range being below a first threshold temperature value, above a second threshold temperature value, below a threshold temperature range, above the threshold temperature range, or any combination thereof.
24. The apparatus of claim 10, wherein the memory system comprises one or more NAND memory devices.
25. A non-transitory computer-readable medium storing code comprising instructions that, when executed by a processor of an electronic device, cause the electronic device to: storing a set of partitions of a memory system and a temperature log including a set of temperature ranges associated with the set of partitions; receiving a command for a memory device to read a partition from the set of partitions; determining, based at least in part on the temperature log, whether temperature data for the partition and associated with the set of temperature ranges indicates that data was written to the partition outside of a threshold temperature; as well as The data is read from the partition based at least in part on determining whether the temperature data for the partition indicates that the data was written to the partition outside the threshold temperature.
Citation Information
Patent Citations
Temperature variation compensation of memory
CN109074831A
Tracking data temperatures of logical block addresses
US10365854B1