Selective address re-translation system
The memory controller's selective address re-translation in SSDs addresses data inconsistency issues by intelligently re-translating logical addresses based on physical address status, enhancing data integrity and reducing resource waste.
Patent Information
- Application Number
- PCT/CN2024/115500
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-08-29
- Publication Date
- 2026-03-05
AI Technical Summary
Modern SSD architectures face challenges with data inconsistency due to complex job scheduling algorithms and parallel execution of operations, leading to issues like 'read hits an empty page' and uncertainty in Redundant Array of Independent NAND (RAIN) recovery, which affect data reconstruction and error correction.
A memory controller that intelligently performs garbage collection, read, and RAIN operations with selective address re-translation, detecting the status of data at a physical address before executing operations and re-translating logical addresses to new physical addresses if necessary to ensure data consistency.
This approach improves memory sub-system operations by reducing resource waste and ensuring data integrity, while minimizing errors and inconsistencies in SSDs.
Smart Images

Figure CN2024115500_05032026_PF_FP_ABST
Abstract
Description
SELECTIVE ADDRESS RE-TRANSLATION SYSTEMTECHNICAL FIELD
[0001] Examples of the disclosure relate generally to memory sub-systems and, more specifically, to performing read operations and garbage collection (GC) operations in a memory sub-system.BACKGROUND
[0002] A memory sub-system can include one or more memory devices that store data. The memory devices can be, for example, non-volatile memory devices and volatile memory devices. In general, a host system can utilize a memory sub-system to store data at the memory devices and to retrieve data from the memory devices.BRIEF DESCRIPTION OF THE DRAWINGS
[0003] The disclosure will be understood more fully from the detailed description given below and from the accompanying drawings of various examples of the disclosure. The drawings, however, should not be taken to limit the disclosure to the specific examples, but are for explanation and understanding only.
[0004] FIG. 1 is a block diagram illustrating an example computing system that includes a memory sub-system, in accordance with some examples.
[0005] FIG. 2 is a block diagram of an address re-translation component, in accordance with some examples.
[0006] FIG. 3 illustrates a diagram of operations performed using the address re-translation component, in accordance with some examples.
[0007] FIG. 4 illustrates a diagram of operations performed using the address re-translation component, in accordance with some examples.
[0008] FIG. 5 is a flow diagram of an example method to perform selective address re-translation, in accordance with some examples.
[0009] FIG. 6 is a block diagram of an example computer system, according to some examples.DETAILED DESCRIPTION
[0010] The present disclosure is directed to a memory sub-system that intelligently performs various operations, such as GC operations, read operations, write operations, and data recovery operations in a way that maintains data consistency and coherency. Specifically, the memory sub-system (memory system) includes a memory controller that can detect the status of data stored at a physical address that is mapped to a requested logical address before executing the requested operations on the data. For example, the memory controller can determine whether the data corresponds to an empty memory block, is in the erased state, or is in the erasing state. Based on the status of the data, the memory controller can selectively re-translate the logical address into a new physical address and then can re-read the data from the re-translated new physical address. This way, if the logical address was mapped to a physical address that is being changed (e.g., because GC operations are performed on the current physical address) , the changed physical address can be used to retrieve the data instead of returning errors. This significantly improves the overall operations of the memory sub-system and reduces waste of resources.
[0011] A memory sub-system can be a storage device, a memory module, or a hybrid of a storage device and memory module. Examples of storage devices and memory modules are described below in conjunction with FIG. 1. In general, a host system can utilize a memory sub-system that includes one or more components, such as memory devices that store data. The host system can send access requests to the memory sub-system, such as to store data at the memory sub-system and to read data from the memory sub-system.
[0012] The host system can send access requests (e.g., write command, read command, erase command) to the memory sub-system, such as to store data on a memory device at the memory sub-system, read data from the memory device on the memory sub-system, or write / read constructs (e.g., such as submission and completion queues) with respect to a memory device on the memory sub-system. The data to be read or written, as specified by a host request, is hereinafter referred to as “host data” or “user data. ”
[0013] A host request can include logical address information (e.g., logical block address (LBA) , namespace) for the host data, which is the location the host system associates with the host data and a particular zone in which to store or access the host data. The logical address information (e.g., LBA, namespace) can be part of metadata for the host data. Metadata can also include error handling data (e.g., error-correcting code (ECC) code word, parity code) , data version (e.g., used to distinguish age of data written) , valid bitmap (which LBAs or logical transfer units contain valid data) , and so forth.
[0014] The memory sub-system can initiate media management operations, such as a write operation, on host data that is stored on a memory device. For example, firmware of the memory sub-system may re-write previously written host data from a location of a memory device to a new location as part of garbage collection (GC) management operations. The data that is re-written, for example as initiated by the firmware, is hereinafter referred to as “GC data. ”
[0015] “User data” hereinafter generally refers to host data and GC data. “System data” hereinafter refers to data that is created and / or maintained by the memory sub-system for performing operations in response to host requests and for media management. Examples of system data include, but are not limited to, system tables (e.g., logical-to-physical memory address mapping table, also referred to herein as a logical-to-physical (L2P) mapping table (referred to as an L2P table) , data from logging, scratch pad data, and so forth) .
[0016] A memory device can be a non-volatile memory device. A non-volatile memory device is a package of one or more die. Each die can be comprised of one or more planes. For some types of non-volatile memory devices (e.g., AND-type devices) , each plane is comprised of a set of physical blocks. For some memory devices, blocks are the smallest area that can be erased. Each block is comprised of a set of pages. Each page is comprised of a set of memory cells, which store bits of data. The memory devices can be raw memory devices (e.g., NAND) , which are managed externally, for example, by an external controller. The memory devices can be managed memory devices (e.g., managed NAND) , which are a raw memory device combined with a local embedded controller for memory management within the same memory device package. The memory device can be divided into one or more zones where each zone is associated with a different set of host data or user data or application.
[0017] Certain memory devices, such as NAND-type memory devices, comprise one or more blocks, (e.g., multiple blocks) , with each of those blocks comprising multiple memory cells. For instance, a memory device can comprise multiple pages (also referred to as word lines (WLs) ) , with each page comprising a subset of memory cells of the memory device. A threshold voltage (VT) of a memory cell (of a block) can be the voltage at which the floating gate (e.g., NAND transistor) , implementing the memory cell, turns on and conducts (e.g., to a bit line coupled to the memory cell) . Generally, writing data to such memory devices involves programming (by way of a program operation) the memory devices at the page level of a block, and erasing data from such memory devices involves erasing the memory devices at the block level (e.g., page level erasure of data is not possible) .
[0018] Solid-state drive (SSD) technology has seen significant advancements to improve performance and bandwidth. To optimize drive bandwidth, SSDs implement separated data paths for various operations, such as host read, host write, folding, erase, FTL (Flash Translation Layer) read, and FTL write. While this architectural change improves the overall performance, it introduces new challenges related to data consistency. One issue that arises from this separated data path design is the "read hits an empty page" problem. This occurs when a host read operation, using a logical address that previously contained valid data, unexpectedly returns an empty page. This inconsistency stems from the parallel execution of host reads, host writes, folding, and erase operations, which can lead to race conditions in certain scenarios. The host read data path typically involves two steps: first, fetching the mapping information that translates the logical address to a physical location, and second, reading the data from the NAND flash memory. However, a time window exists between these two steps during which there is a risk that the block stripe referenced by the mapping information could be erased before the actual read operation occurs.
[0019] This risk is exacerbated by the complex job scheduling algorithms employed in modern SSDs. To enhance performance and Quality of Service (QoS) , requests to the back-end (BE) are often separated into different priority queues. The job scheduler selects tasks to execute based on specialized algorithms that consider job priority and weight, rather than following a simple First-In-First-Out (FIFO) approach. Consequently, jobs are not always executed in the order they arrive, potentially leading to scenarios where an erase command is processed before a preceding read command. In some cases, a high-priority host read command can be pushed into a queue with multiple commands ahead of it, while a low-priority queue is empty, and an erase command that arrives later may still be scheduled before the read command. In some cases, a host read command may fail to fetch data from NAND and may require a soft read retry. In such circumstances, the scheduler may push the read command to the end of the schedule command list. If an erase command for the same block has been queued in the meantime, the read operation may encounter an empty page. Another complexity arises with the implementation of Redundant Array of Independent NAND (RAIN) , a data protection technique used in SSDs. The "read hits an empty page" issue can extend beyond the specifically requested page to affect pages within the same RAIN stripe. When RAIN recovery is triggered, it attempts to fetch all pages within the same stripe from NAND. However, the status of these pages can be uncertain. Some pages may contain valid data, while others might be empty due to a recent erase command. This uncertainty complicates the RAIN recovery process, as it needs to handle a mix of valid, empty, and potentially error-prone pages within a single stripe. The inconsistency between the expected and actual page statuses can lead to challenges in data reconstruction and error correction, further highlighting the intricate balance between performance optimization and data integrity in modern SSD architectures.
[0020] The disclosed techniques address these challenges by providing a memory controller that intelligently performs GC, read, write, and RAIN operations using selective re-translation operations. Specifically, the disclosed memory controller can detect the status of a data stored at a physical address that is mapped to a requested logical address before executing the requested operations on the data. For example, the memory controller can determine whether the data corresponds to an empty memory block, is in the erased state, or is in the erasing state. Based on the status of the data, the memory controller can selectively re-translate the logical address into a new physical address and then can re-read the data from the re-translated new physical address. This way, if the logical address was mapped to a physical address that is being changed (e.g., because GC operations are performed on the current physical address) , the changed physical address can be used to retrieve the data instead of returning errors. This significantly improves the overall operations of the memory sub-system and reduces waste of resources at the cost of issuing an additional address translation request to an address translation component (e.g., an L2P table) .
[0021] In some examples, the techniques described herein relate to a system having a processing device operatively coupled to a memory device. The processing device generates a request to perform a memory operation based on an individual logical address associated with the memory device and translates the individual logical address to a physical address space of the memory to obtain an individual physical address. The processing device, in response to generating the request, obtains status information of data stored in an individual portion of the memory device at the individual physical address and selectively re-translates the individual logical address to the physical address space of the memory based on the status information to complete performing the memory operation.
[0022] The processing device can receive a read command from a host system to read a portion of data associated with the individual logical address and obtain the status information by sending a read request to the memory device for reading a memory block from the individual physical address. The processing device determines that the memory block read from the individual physical address is empty. In some cases, in response to determining that the memory block read from the individual physical address is empty, the processing device re-translates the individual logical address to a new physical address. The processing device can obtain the new physical address that is associated with the individual logical address and determine whether the new physical address is different from the individual physical address.
[0023] In some examples, the processing device, in response to determining that the new physical address is different from the individual physical address, reads the portion of data from the new physical address and provides the portion of data read from the new physical address to the host system to complete performing the memory operation. The processing device, in response to determining that the new physical address matches the individual physical address, performs one or more data recovery operations to recover the portion of data. The processing device can prevent a write command from being performed on the memory block associated with the individual physical address (or associated logical address) before the read command is completed. For example, the processing device can check if the read command has the same logic number / address as the write command and prevent the write command if so. If there is no overlap in the uncompleted read command logic number / address and the write command logic number / address, the write command is allowed to be performed.
[0024] The processing device can perform one or more GC operations on a portion of the memory device corresponding to the individual logical address while the request is being processed. The one or more GC operations can be triggered at a time between when the request to perform the memory operation is generated and when the requested memory operation is completed successfully.
[0025] The processing device can receive a data recovery operation to recover a memory block including a portion of data associated with the individual logical address. The processing device can obtain, as the status information, an indication of whether the memory block is currently being erased or has already been erased. In some cases, the processing device, in response to determining that the memory block is currently being erased or has already been erased, re-translates the individual logical address to a new physical address. In some cases, the data recovery operation can be performed using data stored in the new physical address of the memory device. The processing device, in response to determining that the memory block is in a state other than currently being erased or has already been erased, prevents one or more erase operations (e.g., erase task following transfer of valid data to a new block operations of GC) from being performed on the memory block until the data recovery operation on the memory block is completed. The state can indicate that the memory block includes valid data. The processing device can prevent the memory block from being erased. The processing device can determine that the data recovery operation using the memory block has been completed and in response to determining that the data recovery operation using the memory block has been completed, can allow the memory block to be erased (e.g., allow the erase task to be performed following GC operations where valid data of the victim block is transferred to a new memory block -a target memory block) .
[0026] In some examples, the memory device includes a three-dimensional (3D) NAND device.
[0027] Though various examples are described herein as being implemented with respect to a memory sub-system (e.g., a controller of the memory sub-system) , some or all of the portions of an example can be implemented with respect to a host system, such as a software application or an operating system of the host system.
[0028] FIG. 1 illustrates an example computing system 100 that includes a memory sub-system 110, in accordance with some examples. The memory sub-system 110 can include media, such as one or more volatile memory devices (e.g., memory device 140) , one or more non-volatile memory devices (e.g., memory device 130) , or a combination of such.
[0029] A memory sub-system 110 can be a storage device, a memory module, or a hybrid of a storage device and memory module. Examples of a storage device include a solid-state drive (SSD) , a flash drive, a universal serial bus (USB) flash drive, a secure digital (SD) card, an embedded Multi-Media Controller (eMMC) drive, a Universal Flash Storage (UFS) drive, and a hard disk drive (HDD) . Examples of memory modules include a dual in-line memory module (DIMM) , a small outline DIMM (SO-DIMM) , and various types of non-volatile dual in-line memory module (NVDIMM) .
[0030] The computing system 100 can be a computing device such as a desktop computer, laptop computer, network server, mobile device, a vehicle (e.g., airplane, drone, train, automobile, or other conveyance) , Internet of Things (IoT) enabled device, embedded computer (e.g., one included in a vehicle, industrial equipment, or a networked commercial device) , or such computing device that includes memory and a processing device.
[0031] The computing system 100 can include a host system 120 that is coupled to one or more memory sub-systems 110. In some examples, the host system 120 is coupled to different types of memory sub-systems 110. FIG. 1 illustrates one example of a host system 120 coupled to one memory sub-system 110. As used herein, “coupled to” or “coupled with” generally refers to a connection between components, which can be an indirect communicative connection or direct communicative connection (e.g., without intervening components) , whether wired or wireless, including connections such as electrical, optical, magnetic, and the like.
[0032] The host system 120 can include a processor chipset and a software stack executed by the processor chipset. The processor chipset can include one or more cores, one or more caches, a memory controller (e.g., NVDIMM controller) , and a storage protocol controller (e.g., a peripheral component interconnect express (PCIe) controller, serial advanced technology attachment (SATA) controller) . The host system 120 uses the memory sub-system 110, for example, to write data to the memory sub-system 110 and read data from the memory sub-system 110.
[0033] The host system 120 can include or be coupled to the memory sub-system 110 so that the host system 120 can read data from or write data to the memory sub-system 110. The host system 120 can be coupled to the memory sub-system 110 via a physical host interface. Examples of a physical host interface include, but are not limited to, a serial advanced technology attachment (SATA) interface, a peripheral component interconnect express (PCIe) interface, a compute express link (CXL) interface, a universal serial bus (USB) interface, a Fibre Channel interface, a Serial Attached SCSI (SAS) interface, etc. The physical host interface can be used to transmit data between the host system 120 and the memory sub-system 110. The host system 120 can further utilize an NVM Express (NVMe) interface to access the memory devices 130, 140 when the memory sub-system 110 is coupled with the host system 120 by the PCIe or CXL interface. The physical host interface can provide an interface for passing control, address, data, and other signals between the memory sub-system 110 and the host system 120.
[0034] The memory devices 130, 140 can include any combination of the different types of non-volatile memory devices and / or volatile memory devices. The volatile memory devices (e.g., memory device 140) can be, but are not limited to, random access memory (RAM) , such as dynamic random access memory (DRAM) and synchronous dynamic random access memory (SDRAM) .
[0035] Some examples of non-volatile memory devices (e.g., memory device 130) include a NAND type flash memory and write-in-place memory, such as a 3D cross-point memory device, which is a cross-point array of non-volatile memory cells. A cross-point array of non-volatile memory can perform bit storage based on a change of bulk resistance, in conjunction with a stackable cross-gridded data access array. Additionally, in contrast to many flash-based memories, cross-point non-volatile memory can perform a write in-place operation, where a non-volatile memory cell can be programmed without the non-volatile memory cell being previously erased. NAND type flash memory includes, for example, two-dimensional (2D) NAND and 3D NAND.
[0036] Each of the memory devices 130, 140 can include one or more arrays of memory cells. One type of memory cell, for example, single level cells (SLCs) , can store one bit per cell. Other types of memory cells, such as multi-level cells (MLCs) , tri-level cells (TLCs) , quad-level cells (QLCs) , and penta-level cells (PLCs) , can store multiple bits per cell. In some examples, each of the memory devices 130, 140 can include one or more arrays of memory cells such as SLCs, MLCs, TLCs, QLCs, or any combination of such. In some examples, a particular memory device can include an SLC portion, and an MLC portion, a TLC portion, or a QLC portion of memory cells. The memory cells of the memory devices 130, 140 can be grouped as pages that can refer to a logical unit of the memory device used to store data. With some types of memory (e.g., NAND) , pages can be grouped to form blocks or BSs. As used herein, a block comprising SLCs can be referred to as a SLC block, a block comprising MLCs can be referred to as a MLC block, a block comprising TLCs can be referred to as a TLC block, and a block comprising QLCs can be referred to as a QLC block.
[0037] Although non-volatile memory components such as NAND type flash memory (e.g., 2D NAND, 3D NAND) and 3D cross-point array of non-volatile memory cells are described, the memory device 130 can be based on any other type of non-volatile memory, such as read-only memory (ROM) , phase change memory (PCM) , self-selecting memory, other chalcogenide-based memories, ferroelectric transistor random-access memory (FeTRAM) , ferroelectric random access memory (FeRAM) , magneto random access memory (MRAM) , Spin Transfer Torque (STT) -MRAM, conductive bridging RAM (CBRAM) , resistive random access memory (RRAM) , oxide-based RRAM (OxRAM) , negative-or (NOR) flash memory, and electrically erasable programmable read-only memory (EEPROM) .
[0038] A memory sub-system controller 115 (or controller 115 for simplicity) can communicate with the memory devices 130, 140 to perform operations such as reading data, writing data, or erasing data (e.g., performing GC operations) at the memory devices 130, 140 and other such operations. The memory sub-system controller 115 can include hardware such as one or more integrated circuits and / or discrete components, a buffer memory, or a combination thereof. The hardware can include digital circuitry with dedicated (e.g., hard-coded) logic to perform the operations described herein. The memory sub-system controller 115 can be a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA) , an application specific integrated circuit (ASIC) , etc. ) , or other suitable processor.
[0039] The memory sub-system controller 115 can include a processor (processing device) 117 configured to execute instructions stored in local memory 119. In the illustrated example, the local memory 119 of the memory sub-system controller 115 includes an embedded memory configured to store instructions for performing various processes, operations, logic flows, and routines that control operation of the memory sub-system 110, including handling communications between the memory sub-system 110 and the host system 120.
[0040] In some examples, the local memory 119 can include memory registers storing memory pointers, fetched data, and so forth. The local memory 119 can also include ROM for storing micro-code. While the example memory sub-system 110 in FIG. 1 has been illustrated as including the memory sub-system controller 115, in another example, a memory sub-system 110 does not include a memory sub-system controller 115, and can instead rely upon external control (e.g., provided by an external host, or by a processor or controller separate from the memory sub-system) .
[0041] In general, the memory sub-system controller 115 can receive commands or operations from the host system 120 and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to the memory device 130 and / or the memory device 140. The memory sub-system controller 115 can be responsible for other operations such as wear leveling operations, GC operations, error detection and ECC operations, encryption operations, caching operations, and address translations between a logical address (e.g., LBA, namespace) and a physical memory address (e.g., physical block address in a physical address space of the memory device 130 or memory device 140) that are associated with the memory devices 130, 140. The memory sub-system controller 115 can further include host interface circuitry to communicate with the host system 120 via the physical host interface. The host interface circuitry can convert the commands received from the host system 120 into command instructions to access the memory device 130 and / or the memory device 140 as well as convert responses associated with the memory device 130 and / or the memory device 140 into information for the host system 120.
[0042] The memory sub-system 110 can also include additional circuitry or components that are not illustrated. In some examples, the memory sub-system 110 can include a cache or buffer (e.g., DRAM) and address circuitry (e.g., a row decoder and a column decoder) that can receive an address from the memory sub-system controller 115 and decode the address to access the memory devices 130, 140.
[0043] In some examples, the memory device 130 includes local media controllers 135 that operate in conjunction with memory sub-system controller 115 to execute operations on one or more memory cells of the memory device 130. An external controller (e.g., memory sub-system controller 115) can externally manage the memory device 130 (e.g., perform media management operations on the memory device 130) . In some examples, a memory device 130 is a managed memory device, which is a raw memory device combined with a local controller (e.g., local media controller 135) for media management within the same memory device package. An example of a managed memory device is a managed NAND (MNAND) device. Any operation discussed as being performed by the memory sub-system controller 115 can be similarly performed by the local media controllers 135 and vice versa.
[0044] The memory sub-system controller 115 includes an address re-translation component 113 that enables or facilitates the memory sub-system controller 115 to dynamically perform various operations, such as read, write, erase, and / or GC operations efficiently. Specifically, the address re-translation component 113 can generate a request to perform a memory operation based on an individual logical address associated with a memory device 130 and translate the individual logical address to a physical address space of the memory device 130 to obtain an individual physical address. The memory sub-system controller 115, in response to generating the request, obtains status information of data stored in an individual portion of the memory device 130 at the individual physical address and selectively re-translates the individual logical address to the physical address space of the memory device 130 based on the status information to complete performing the memory operation. Any discussion with respect to the memory device 130 can similarly be applied to the memory device 140.
[0045] FIG. 2 is a block diagram of an address re-translation component 113, in accordance with some examples. The address re-translation component 113 can include a request generation component 202, a logical to physical mapping component 204, and / or a status detection component 206. The request generation component 202 can receive a request from a host system 120 to perform a read operation or read command on a portion of data stored in one or more memory blocks or BSs. The request generation component 202 can obtain a logical address from the command received from the host system 120. The request generation component 202 can communicate with the logical to physical mapping component 204 to obtain an individual physical address that maps or is associated with the logical address received in the command.
[0046] The logical to physical mapping component 204 can maintain a look-up table that maps different logical addresses to the corresponding physical addresses of memory blocks stored on the memory device 130. The logical to physical mapping component 204 can provide the individual physical address to the request generation component 202. In some cases, the memory sub-system controller 115 can initiate GC operations (including selection of the memory block for transfer of data to a new memory block and / or erasing the memory block following transfer of the data to the new memory block (referred to as the erase task) ) on the memory block corresponding to the logical address after or before the physical address provided by the logical to physical mapping component 204 to the request generation component 202 is accessed to retrieve data. Namely, the GC operations can be performed asynchronously from the request to read the logical address. In order to prevent data consistency and coherency issues, discussed above, the request generation component 202 can communicate with the status detection component 206 to obtain status information prior to completing the operation or command received from the host system 120.
[0047] For example, the request generation component 202 can communicate the individual physical address to the status detection component 206. The status detection component 206 can read the memory block from the memory device 130 corresponding to the individual physical address. The status detection component 206 can determine whether the memory block that is read is an empty block (e.g., because the asynchronously performed GC operation has been completed, which erased the block) . In such cases, the status detection component 206 returns the empty status to the request generation component 202. In response, the request generation component 202 communicates with the logical to physical mapping component 204 to re-translate the same logical address.
[0048] The logical to physical mapping component 204 can again retrieve a new physical address that is now mapped to the logical address previously received from the request generation component 202. In some cases, the new physical address may be different from the one previously mapped and provided because the GC operations may have completed to transfer the data previously at the physical address to the new physical address. In some cases, the new physical address may be the same as the one previously obtained, which may be indicative of an error or that the GC operations failed to be completed successfully.
[0049] The request generation component 202 receives the new physical address. The request generation component 202 determines whether the new physical address obtained from the logical to physical mapping component 204 is the same or different from the individual physical address previously received from the logical to physical mapping component 204 for the same request to read the data received from the host system 120. Namely, in response to one request to read data from the host system 120, two translation operations for the same logical address can be performed and the two physical addresses corresponding to the two translation operations can be compared to determine whether they are the same or different. The request generation component 202, in response to determining that the physical addresses are different, uses the latest physical address received from the logical to physical mapping component 204 (e.g., the new physical address) to retrieve the memory block from the memory device 130. During this time (or during the time when the read command is received from the host system 120 or during the time when the status received from the status detection component 206 indicates that the memory block is empty) , the memory sub-system controller 115 can block any write commands from being executed or performed on the same individual physical address, the new physical address, and / or the logical address as the one received / associated with the request to read from the host system 120.
[0050] The request generation component 202 can retrieve the memory block from the memory device 130 at the new physical address. The request generation component 202 provides the retrieved memory block or a portion from the retrieved memory block to the host system 120. The memory sub-system controller 115 then completes (marks completed) the request to read the data stored at the logical address received from the host system 120. The memory sub-system controller 115 can then (following the completion of the read operation) allow any write operations to be performed on the individual physical address, the new physical address, and / or the logical address previously received in the request to read from the host system 120. While the read operation to the same logic number as the write operation is pending completion, the write operation is blocked or prevented.
[0051] In some cases, the request generation component 202 determines that the two physical addresses obtained at different times are the same. In such cases, the request generation component 202 can initiate data recovery (error correction) operations, such as RAIN data recovery operations on the data stored in the memory block at the physical address. After performing the data recovery operations, the request generation component 202 provides the corrected memory block or a portion from the retrieved memory block to the host system 120. The memory sub-system controller 115 can then complete (marks completed) the request to read the data stored at the logical address received from the host system 120.
[0052] In some examples, the request generation component 202 can initiate RAIN (or other data recovery operations) operations on a memory block that is read from the memory device 130. The RAIN operations can be initiated before or after determining a status of the memory block as being in the erased state, erasing state, or other state (e.g., valid data state) . In such cases, the request generation component 202 can obtain a logical address for the RAIN operation. The request generation component 202 can then obtain a status of the memory block to determine whether the memory block is erased or is being erased by communicating with the status detection component 206. The request generation component 202 can then selectively re-translate the logical address to a new physical address based on the status of the memory block.
[0053] For example, the request generation component 202 can determine that the memory block is in the erased state or is in the being erased state or status. In such cases, the request generation component 202 can communicate with the logical to physical mapping component 204 to re-translate the logical address to the new physical address. The request generation component 202 can receive the new physical address and can issue a read command to the memory device 130 to read data from the new physical address. The request generation component 202 can then perform the RAIN operations on the data stored in the memory block associated with the new physical address.
[0054] In some cases, the request generation component 202 can determine that the memory block is in a different state (e.g., contains valid data) than being in the erased state or the being erased state or status. In such cases, the request generation component 202 can communicate with the memory sub-system controller 115 to prevent erase operations (corresponding to an erase task performed following GC operations on the memory block) from being performed on the memory block, such as to prevent the memory block associated with the individual physical address from being erased. The request generation component 202 may allow still the memory block to be selected as a victim block to transfer the data stored in the memory block to a new block but can prevent the subsequent erase task from erasing the memory block that was selected as the victim block. The request generation component 202 can then process the memory block to complete performing RAIN operations on the memory block. Once the RAIN operations are completed, the request generation component 202 communicates with the memory sub-system controller 115 to enable or allow the erase task operations to be performed on the memory block.
[0055] FIG. 3 illustrates a diagram 300 of operations performed using the address re-translation component 113, in accordance with some examples. Specifically, the address re-translation component 113 may receive a host read command 314 (e.g., generate a host read task corresponding to reading data from a logical address) . In response, the address re-translation component 113 performs operation 302 where the physical address mapped to the logical address is retrieved by the logical to physical mapping component 204. The logical to physical mapping component 204 returns the individual physical address mapped to the logical address at operation 304, such as to the request generation component 202.
[0056] The request generation component 202 can then send a request to the local media controllers 135 (e.g., the back-end controller) to read the data stored at the individual physical address. The local media controllers 135 can generate a response 306 that indicates the memory block is empty, such as by providing an empty error status. The request generation component 202 can, in response to determining that the memory block is in the empty status, perform operation 308 to obtain a new physical address for the same logical address from the logical to physical mapping component 204. The logical to physical mapping component 204 can provide a response operation 310 including a new physical address mapped to the same logical address.
[0057] The request generation component 202 can perform operations 312 to selectively read data from the new physical address or perform data recovery operations based on the new physical address. Namely, the request generation component 202 can determine whether the new physical address is the same or different from the previously received physical address (e.g., the individual physical address) . In response to determining that the physical addresses are different, the request generation component 202 issues a request to the memory device 130 to read the memory block associated with the new physical address. The request generation component 202 can then return the memory block or a portion of the memory block to the host system 120 to compete the host read command 314. If the physical addresses are the same, the request generation component 202 performs data recovery operations to correct data stored in the previously read memory block (e.g., the memory block retrieved in response to the initial translation operation for the individual physical address) .
[0058] FIG. 4 illustrates a diagram 402 of operations performed using the address re-translation component 113, in accordance with some examples. Specifically, the address re-translation component 113 may generate a request to perform RAIN operations on a memory block associated with a logical address as a data recovery command 404 (e.g., a RAIN recovery task) . This can be performed when a memory block is determined to be in need of data recovery for any of a variety of reasons. For example, this can take place when the request generation component 202 receives a message 408 from the memory device 130 indicating that a data read failed and data needs to be recovered.
[0059] In response, the address re-translation component 113 performs operation 410 where the state of the memory block with the errors is retrieved or determined. The address re-translation component 113 (e.g., the request generation component 202 or any other component of the address re-translation component 113) can perform operations 412 to determine whether the state (or status) indicates that the memory block is erased or is being erased. If so, the address re-translation component 113 can communicate with the logical to physical mapping component 204 to re-translate the logical address associated with the data recovery command 404. The address re-translation component 113 receives the new physical address in response to the re-translated logical address and issues a command to the memory device 130 to read the data at the new physical address. The address re-translation component 113 then performs the RAIN operations on the newly read data from the new physical address.
[0060] In some cases, the address re-translation component 113 determines that the state of the memory block previously read from the memory device 130 is in a valid state or some other state that is not empty, erased, or being erased. In such cases, the address re-translation component 113 communicates with the GC operations 406 (e.g., erase task operations of the memory sub-system controller 115) to prevent having the memory block or individual physical address from being selected for erasure (e.g., following being selected as a victim block) . The address re-translation component 113 can then perform RAIN operations on the memory block to complete the data recovery command 404. Once the data recovery command 404 is completed, the address re-translation component 113 communicates with the GC operations 406 to enable GC operations to be performed on the memory block or individual physical address, such as to enable or allow the memory block to be erased.
[0061] FIG. 5 is a flow diagram of an example method 500 (or process) to perform operations, in accordance with some examples. Method 500 can be performed by processing logic that can include hardware (e.g., a processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, an integrated circuit, etc. ) , software (e.g., instructions run or executed on a processing device) , or a combination thereof. In some examples, the method 500 is performed by the memory sub-system controller 115 or subcomponents of the memory sub-system controller 115 of FIG. 1. In these examples, the method 500 can be performed, at least in part, by the address re-translation component 113. Although the processes are shown in a particular sequence or order, unless otherwise specified, the order of the processes can be modified. Thus, the illustrated examples should be understood only as examples; the illustrated processes can be performed in a different order, and some processes can be performed in parallel. Additionally, one or more processes can be omitted in various examples. Thus, not all processes are required in every example. Other process flows are possible.
[0062] Referring now to FIG. 5, the method 500 begins at operation 502, with the address re-translation component 113 of a memory sub-system 110 (e.g., memory device 140) generating a request to perform a memory operation based on an individual logical address associated with a memory device 130. The address re-translation component 113, in response to generating the request, translates the individual logical address to a physical address space of the memory device 130 to obtain an individual physical address at operation 504. Then, at operation 506, the address re-translation component 113 in response to generating the request, obtains status information of data stored in an individual portion of the memory device 130 at the individual physical address and, at operation 508, selectively re-translates the individual logical address to the physical address space of the memory device 130 based on the status information to complete performing the memory operation.
[0063] FIG. 6 illustrates an example machine in the form of a computer system 600 within which a set of instructions can be executed for causing the machine to perform any one or more of the methodologies discussed herein. In some examples, the computer system 600 can correspond to a host system (e.g., the host system 120 of FIG. 1) that includes, is coupled to, or utilizes a memory sub-system (e.g., the memory sub-system 110 of FIG. 1) or can be used to perform the operations described herein. In alternative examples, the machine can be connected (e.g., networked) to other machines in a local area network (LAN) , an intranet, an extranet, and / or the Internet. The machine can operate in the capacity of a server or a client machine in a client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment.
[0064] The machine can be a personal computer (PC) , a tablet PC, a set-top box (STB) , a Personal Digital Assistant (PDA) , a cellular telephone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
[0065] The example computer system 600 includes a processing device 602, a main memory 604 (e.g., ROM, flash memory, DRAM such as SDRAM or Rambus DRAM (RDRAM) , etc. ) , a static memory 606 (e.g., flash memory, static random access memory (SRAM) , etc. ) , and a data storage device 610, which communicate with each other via a bus 618.
[0066] The processing device 602 represents one or more general-purpose processing devices such as a microprocessor, a central processing unit, or the like. More particularly, the processing device 602 can be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing other instruction sets, or processors implementing a combination of instruction sets. The processing device 602 can also be one or more special-purpose processing devices such as an ASIC, a FPGA, a digital signal processor (DSP) , a network processor, or the like. The processing device 602 is configured to execute instructions 616 for performing the operations and steps discussed herein. The computer system 600 can further include a network interface device 608 to communicate over a network 612.
[0067] The data storage device 610 can include a machine-readable storage medium 614 (also known as a computer-readable medium) on which is stored one or more sets of instructions 616 or software embodying any one or more of the methodologies or functions described herein. The instructions 616 can also reside, completely or at least partially, within the main memory 604 and / or within the processing device 602 during execution thereof by the computer system 600, the main memory 604 and the processing device 602 also constituting machine-readable storage media. The machine-readable storage medium 614, data storage device 610, and / or main memory 604 can correspond to the memory sub-system 110 of FIG. 1.
[0068] In one example, the instructions 616 include instructions to implement functionality corresponding to providing block failure protection for a zone memory sub-system as described herein (e.g., the address re-translation component 113 of FIG. 1) . While the machine-readable storage medium 614 is shown in an example to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media that store the one or more sets of instructions. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
[0069] Described implementations of the subject matter can include one or more features, alone or in combination as illustrated below by way of examples.
[0070] Example 1. A system comprising: a memory device; and a processing device, operatively coupled to the memory device, configured to perform operations comprising: generating a request to perform a memory operation based on an individual logical address associated with the memory device; translating the individual logical address to a physical address space of the memory to obtain an individual physical address; in response to generating the request, obtaining status information of data stored in an individual portion of the memory device at the individual physical address; and selectively re-translating the individual logical address to the physical address space of the memory based on the status information to complete performing the memory operation.
[0071] Example 2. The system of Example 1, the operations comprising: receiving a read command from a host system to read a portion of data associated with the individual logical address; obtaining the status information by sending a read request to the memory device for reading a memory block from the individual physical address; and determining that the memory block read from the individual physical address is empty.
[0072] Example 3. The system of Example 2, the operations comprising: in response to determining that the memory block read from the individual physical address is empty, re-translating the individual logical address to a new physical address.
[0073] Example 4. The system of Example 3, the operations comprising: obtaining the new physical address that is associated with the individual logical address; and determining whether the new physical address is different from the individual physical address.
[0074] Example 5. The system of Example 4, the operations comprising: in response to determining that the new physical address is different from the individual physical address, reading the portion of data from the new physical address; and providing the portion of data read from the new physical address to the host system to complete performing the memory operation.
[0075] Example 6. The system of any one of Examples 4-5, the operations comprising: in response to determining that the new physical address matches the individual physical address, performing one or more data recovery operations to recover the portion of data.
[0076] Example 7. The system of any one of Examples 2-6, the operations comprising: preventing a write command from being performed on the memory block before the read command is completed.
[0077] Example 8. The system of any one of Examples 1-7, the operations comprising: performing one or more garbage collection (GC) operations on a portion of the memory device corresponding to the individual logical address while the request is being processed.
[0078] Example 9. The system of Example 8, wherein the one or more GC operations are triggered at a time between when the request to perform the memory operation is generated and when the requested memory operation is completed successfully.
[0079] Example 10. The system of any one of Examples 1-9, the operations comprising: receiving a data recovery operation to recover a memory block comprising a portion of data associated with the individual logical address; and obtaining, as the status information, an indication of whether the memory block is currently being erased or has already been erased.
[0080] Example 11. The system of Example 10, the operations comprising: in response to determining that the memory block is currently being erased or has already been erased, re-translating the individual logical address to a new physical address; and performing the data recovery operation using data stored in the new physical address of the memory device.
[0081] Example 12. The system of any one of Examples 10-11, the operations comprising: in response to determining that the memory block is in a state other than currently being erased or has already been erased, preventing an erase operation following GC operations from being performed on a memory block; and receiving a data recovery operation to recover the memory block comprising a portion of data associated with the individual logical address, the erase operation being prevented until the data recovery operation on the memory block is completed.
[0082] Example 13. The system of Example 12, wherein the state indicates that the memory block comprises valid data.
[0083] Example 14. The system of any one of Examples 12-13, the operations comprising: preventing the memory block from being erased; determining that the data recovery operation using the memory block has been completed; and in response to determining that the data recovery operation using the memory block has been completed, allowing the memory block to be erased.
[0084] Example 15. The system of any one of Examples 1-14, wherein the memory device comprises a three-dimensional (3D) NAND device.
[0085] Example 16. At least one non-transitory machine-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations comprising: generating a request to perform a memory operation based on an individual logical address associated with a memory device; translating the individual logical address to a physical address space of the memory to obtain an individual physical address; in response to generating the request, obtaining status information of data stored in an individual portion of the memory device at the individual physical address; and selectively re-translating the individual logical address to the physical address space of the memory based on the status information to complete performing the memory operation.
[0086] Example 17. The at least one non-transitory machine-readable storage medium of Example 16, the operations comprising: receiving a read command from a host system to read a portion of data associated with the individual logical address; obtaining the status information by sending a read request to the memory device for reading a memory block from the individual physical address; and determining that the memory block read from the individual physical address is empty.
[0087] Example 18. The at least one non-transitory machine-readable storage medium of Example 17, the operations comprising: in response to determining that the memory block read from the individual physical address is empty, re-translating the individual logical address to a new physical address.
[0088] Example 19. The at least one non-transitory machine-readable storage medium of Example 18, the operations comprising: obtaining the new physical address that is associated with the individual logical address; and determining whether the new physical address is different from the individual physical address.
[0089] Example 20. A method comprising: generating a request to perform a memory operation based on an individual logical address associated with a memory device; translating the individual logical address to a physical address space of the memory to obtain an individual physical address; in response to generating the request, obtaining status information of data stored in an individual portion of the memory device at the individual physical address; and selectively re-translating the individual logical address to the physical address space of the memory based on the status information to complete performing the memory operation.
[0090] Some portions of the preceding detailed descriptions have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
[0091] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. The present disclosure can refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage systems.
[0092] The present disclosure also relates to an apparatus for performing the operations herein. This apparatus can be specially constructed for the intended purposes, or it can include a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program can be stored in a computer-readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
[0093] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems can be used with programs in accordance with the teachings herein, or it can prove convenient to construct a more specialized apparatus to perform the method. The structure for a variety of these systems will appear as set forth in the description below. In addition, the present disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages can be used to implement the teachings of the disclosure as described herein.
[0094] The present disclosure can be provided as a computer program product, or software, that can include a machine-readable medium (such as a non-transitory machine-readable medium) having stored thereon instructions, which can be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer) . In some examples, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a ROM, RAM, magnetic disk storage media, optical storage media, flash memory components, and so forth. A machine-readable storage medium can be non-transitory (in other words, not having any transitory signals) in that it does not embody a propagating signal. However, labeling a machine-readable storage medium “non-transitory” should not be construed to mean that the machine-readable storage medium is incapable of movement; the machine-readable storage medium should be considered as being transportable from one physical location to another.
[0095] In the foregoing specification, examples of the disclosure have been described with reference to specific examples thereof. It will be evident that various modifications can be made thereto without departing from the broader scope of examples of the disclosure as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
Claims
1.A system comprising:a memory device; anda processing device, operatively coupled to the memory device, configured to perform operations comprising:generating a request to perform a memory operation based on an individual logical address associated with the memory device;translating the individual logical address to a physical address space of the memory device to obtain an individual physical address;in response to generating the request, obtaining status information of data stored in an individual portion of the memory device at the individual physical address; andselectively re-translating the individual logical address to the physical address space of the memory device based on the status information to complete performing the memory operation.2.The system of claim 1, the operations comprising:receiving a read command from a host system to read a portion of data associated with the individual logical address;obtaining the status information by sending a read request to the memory device for reading a memory block from the individual physical address; anddetermining that the memory block read from the individual physical address is empty.3.The system of claim 2, the operations comprising:in response to determining that the memory block read from the individual physical address is empty, re-translating the individual logical address to a new physical address.4.The system of claim 3, the operations comprising:obtaining the new physical address that is associated with the individual logical address; anddetermining whether the new physical address is different from the individual physical address.5.The system of claim 4, the operations comprising:in response to determining that the new physical address is different from the individual physical address, reading the portion of data from the new physical address; andproviding the portion of data read from the new physical address to the host system to complete performing the memory operation.6.The system of claim 4, the operations comprising:in response to determining that the new physical address matches the individual physical address, performing one or more data recovery operations to recover the portion of data.7.The system of claim 2, the operations comprising:preventing a write command from being performed on the memory block before the read command is completed.8.The system of claim 1, the operations comprising:performing one or more garbage collection (GC) operations on a portion of the memory device corresponding to the individual logical address while the request is being processed.9.The system of claim 8, wherein the one or more GC operations are triggered at a time between when the request to perform the memory operation is generated and when the requested memory operation is completed successfully.10.The system of claim 1, the operations comprising:obtaining, as the status information, an indication of whether a memory block is currently being erased or has already been erased.11.The system of claim 10, the operations comprising:in response to determining that the memory block is currently being erased or has already been erased, re-translating the individual logical address to a new physical address;receiving a data recovery operation to recover the memory block comprising a portion of data associated with the individual logical address; andperforming the data recovery operation using data stored in the new physical address of the memory device.12.The system of claim 10, the operations comprising:in response to determining that the memory block is in a state other than currently being erased or has already been erased, preventing an erase operation following garbage collection (GC) operations from being performed on a memory block; andreceiving a data recovery operation to recover the memory block comprising a portion of data associated with the individual logical address, the erase operation being prevented until the data recovery operation on the memory block is completed.13.The system of claim 12, wherein the state indicates that the memory block comprises valid data.14.The system of claim 12, the operations comprising:preventing the memory block from being erased;determining that the data recovery operation using the memory block has been completed; andin response to determining that the data recovery operation using the memory block has been completed, allowing the memory block to be erased.15.The system of claim 1, wherein the memory device comprises a three-dimensional (3D) NAND device.16.At least one non-transitory machine-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations comprising:generating a request to perform a memory operation based on an individual logical address associated with a memory device;translating the individual logical address to a physical address space of the memory device to obtain an individual physical address;in response to generating the request, obtaining status information of data stored in an individual portion of the memory device at the individual physical address; andselectively re-translating the individual logical address to the physical address space of the memory device based on the status information to complete performing the memory operation.17.The at least one non-transitory machine-readable storage medium of claim 16, the operations comprising:receiving a read command from a host system to read a portion of data associated with the individual logical address;obtaining the status information by sending a read request to the memory device for reading a memory block from the individual physical address; anddetermining that the memory block read from the individual physical address is empty.18.The at least one non-transitory machine-readable storage medium of claim 17, the operations comprising:in response to determining that the memory block read from the individual physical address is empty, re-translating the individual logical address to a new physical address.19.The at least one non-transitory machine-readable storage medium of claim 18, the operations comprising:obtaining the new physical address that is associated with the individual logical address; anddetermining whether the new physical address is different from the individual physical address.20.A method comprising:generating a request to perform a memory operation based on an individual logical address associated with a memory device;translating the individual logical address to a physical address space of the memory device to obtain an individual physical address;in response to generating the request, obtaining status information of data stored in an individual portion of the memory device at the individual physical address; andselectively re-translating the individual logical address to the physical address space of the memory device based on the status information to complete performing the memory operation.
Citation Information
Patent Citations
Addressing method and module applied to on-chip control system and on-chip control system
CN111400202A
Software and hardware implementation method for completing efficient garbage collection of solid state disk at host end based on deep learning
CN116185300A
Memory devices, systems, and methods for updating firmware with single memory device
US20190179625A1
Memory system and method for operating the same
US20200320012A1
Storage device, storage system, and method of operating the storage system
US20220083515A1