Random host reads using independent read commands on multiple planes
Independent read commands on multiple memory die planes address the inefficiencies of conventional multi-plane read commands, enhancing IOPS and bus efficiency in random host read scenarios by dynamically adapting to read patterns.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-08-29
- Publication Date
- 2026-03-05
Smart Images

Figure CN2024115466_05032026_PF_FP_ABST
Abstract
Description
RANDOM HOST READS USING INDEPENDENT READ COMMANDS ON MULTIPLE PLANESTECHNICAL FIELD
[0001] Example embodiments of the disclosure relate generally to memory devices and, more specifically, to random host reads using independent read commands on multiple planes on a memory system, such as 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 example embodiments of the disclosure. The drawings, however, should not be taken to limit the disclosure to the specific example embodiments, but are for explanation and understanding only.
[0004] FIG. 1 is a block diagram illustrating several possible data distributions that can be handled during a random host read scenario by some example embodiments of the present disclosure.
[0005] FIG. 2 is a block diagram illustrating an example computing system that includes a memory sub-system, in accordance with some example embodiments of the present disclosure.
[0006] FIG. 3 and FIG. 4 are flow diagrams of example methods for random host reads using independent read commands on multiple planes on a memory system, in accordance with some example embodiments of the present disclosure.
[0007] FIG. 5 is a diagram illustrating example use of independent read commands in place of multi-plane read commands, in accordance with some example embodiments of the present disclosure.
[0008] FIG. 6 is a diagram illustrating an instruction timeline for using independent read commands in place of multi-plane read commands, in accordance with some example embodiments of the present disclosure.
[0009] FIG. 7 is a block diagram of an example computer system in which example embodiments of the present disclosure may operate.DETAILED DESCRIPTION
[0010] Aspects of the present disclosure are directed to random host reads using independent read commands on multiple planes on a memory system, such as a memory sub-system. 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. 2. 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.
[0011] The host system can send access requests (e.g., write command, read 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. ”
[0012] 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.
[0013] As used herein, a logical memory address can comprise a logical block address (LBA) , which can be provided by a host system to a memory device or a memory sub-system. For example, depending on a physical interface used between a host system and a memory device / memory sub-system, an LBA can comprise a 2-byte or 4-byte number. As used herein, a physical memory address can comprise a memory address on a memory device or a memory sub-system where data (e.g., user data) is stored. For example, the physical memory address can comprise a physical block address (PBA) , which can be a position within an underling non-volatile memory device that can be identified by a 4-byte number or a tuple of numbers (e.g. die ID, block ID, page ID) . As used herein, an address mapping data can comprise logical memory address-to-physical memory address (L2P) data (e.g., L2P mapping or translation table) , which can associate (and therefore facilitate translation or reconstruction of) a logical memory address to a physical memory address of a memory device or a memory sub-system.
[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 management operations. The data that is re-written, for example as initiated by the firmware, is hereinafter referred to as “garbage collection data. ”
[0015] “User data” hereinafter generally refers to host data and garbage collection 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, and are not limited to, system tables (e.g., logical-to-physical memory address mapping table (also referred to herein as a 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 wordlines) , 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] Input / output operations per second (IOPS) of aligned, over-16K random read can be a performance metric for memory sub-systems, such as solid-state drives (SSDs) . To get high IOPS, some memory sub-systems aggregate as many read commands with a same page and different planes, in a same block location, as possible into one multi-plane read command. In certain situations, the number of read commands aggregated in one multi-plane read command cannot obtain a maximum quantity in over-16K aligned random reads and, as a such, a memory sub-system ends up using more multi-plane read commands to finish over-16k random read commands, which can lead to low IOPS.
[0019] In conventional memory sub-systems, a controller of the memory sub-system is configured to select an appropriate command type (e.g., a multi-plane read command or single-plane read command) and send it to a target memory die (e.g., NAND die) of a memory device (e.g., NAND-type memory device) . Subsequently, after waiting for a period of time (e.g., t_READ) , controller sends a status polling command to the target memory die. When the target memory die returns a ready status, the controller can begin data transfer with one or more physical commands for all target planes (e.g., each of the multiple planes of the multi-plane read command, or the single plane of the single-plane read) . Typically, the time taken by one read command is composed of three parts: commands time (e.g., for NAND memory die, this can be very short, such as less than 0.5us) ; busy time (e.g., t_READ or tR for NAND memory die, such as 50us) ; and data transfer time (e.g., for NAND memory die, such as 16us for 16k data transfer) . A multi-plane read command almost share the same busy time (e.g., t_READ) with a single-plane read command (e.g., 16k data size for a single-plane read command can take about 16us on a NAND memory die) .
[0020] To get higher IOPS, conventional memory sub-systems aggregate as many single-plane read commands (with the same page and different planes in the same block location) as one or more multi-plane read commands to decrease average busy time (e.g., t_READ) for each memory die plane. While this approach aims to improve IOPS (by reducing the average read time (e.g., t_READ) for each plane) , in over-16K aligned random read scenarios, the aggregation method of conventional memory sub-systems can still fail to achieve maximum aggregation, which results in lower IOPS.
[0021] In some scenarios, when multiple large host read commands (e.g., 128K host read commands) hit the same memory die, the conventional aggregation approach (of aggregating single-plane read commands to one or more multi-plane read commands) could involve multiple separate multi-plane read commands, each taking its own busy time (e.g., t_READ) period.
[0022] Some such scenarios are shown in FIG. 1, which illustrates several possible data distributions 100 on multiple pages of a single block location on a memory die (e.g., NAND memory die) . In particular, for the first through fifth example data distributions (102, 104, 106, 108, 110) , a conventional memory sub-system could send two multi-plane read commands to a memory die to retrieve 128K of data from pages N and N+1 and, for the sixth example data distribution 112, a conventional memory sub-system could send one multi-plane read commands and two single-plane read commands to a memory die to retrieve 128K of data from pages N, N+1, and N+2. As shown, there are many multi-planes read commands that contain less than six planes: in the example data distribution 102, a multi-plane read command is performed on planes 0 and 2 of page N+1; in the example data distribution 104, a multi-plane read command is performed on planes 1 through 5 on page N and another multi-plane read command is performed on planes 0 through 2 on page N+1; in the example data distribution 106, a multi-plane read command is performed on planes 2 through 5 on page N and another multi-plane read command is performed on planes 0 through 3 on page N+1; in the example data distribution 108, a multi-plane read command is performed on planes 3 through 5 on page N and another multi-plane read command is performed on planes 0 through 4 on page N+1; and in the example data distribution 110, a multi-plane read command is performed on planes 4 and 5 of page N+1. Unfortunately, these multi-plane read commands share the same busy time (e.g., t_READ) with six one-plane read commands. This results in some planes being in idle state during the busy time (e.g., t_READ) of a multi-plane read command with enough aggregated planes.
[0023] Various example embodiments described herein provide numerous deficiencies of conventional memory systems that use multi-plane read commands aggregated from single-plane read commands for memory devices to perform random host reads (as opposed to sequential host reads) on a memory system, such as a memory sub-system. In particular, various example embodiments described herein enhance random host read performance in a memory system, such as a solid-state drive (SSD) , through optimized read command execution using independent read commands. Some example embodiments address the challenge of maximizing IOPS for aligned random host reads (e.g., aligned over-16K random host reads) in memory systems. With the intelligence to sense for host data pattern (e.g., continuous host read data pattern versus random host read data pattern) , some example embodiments dynamically select and use independent read commands, in place of one or more multi-plane read commands, for random host reads, which can assist in higher IOPS where single-plane read commands are aggregated into one or more multi-plane read commands.
[0024] According to various example embodiments, random host reads are performed using independent read commands on multiple planes (e.g., memory die planes) on a memory system. Some embodiments implement a detection mechanism to determine when to use, in place of a multi-plane read command, a plurality of independent read commands (e.g., Independent Word Line (IWL) read commands) in parallel on multiple memory die planes of a memory device to execute one or more host read commands during random host read scenarios. For some embodiments, a memory system determines (e.g., predicts) an expected start memory address (e.g., expected start LBA) for a next host read command and compares it with a received start memory address (e.g., received start LBA) when the next host read command is received at the memory system. If the difference between the expected start memory address and the received start memory address exceeds a certain threshold value, the memory system can consider the received / next host read command as being associated with a non-continuous, random host read workload. The memory system can use a counter to track these random host read occurrences, and once the counter reaches or surpasses a predefined threshold, the memory system can use or start to use, in place of at least one multi-plane read command (e.g., each multi-plane read command) , a plurality of independent read commands in parallel on multiple memory die planes of a memory device to perform one or more host read commands.
[0025] In doing so, an embodiment can use multiple (e.g., six) independent read commands in parallel to different memory die planes, thereby completing, for example, two host read commands within the interval of three busy time (e.g., t_READ) periods or less.
[0026] As used herein, an independent read command can comprise an IWL read command (or IWL snap read) . According to various example embodiments, an IWL read command can refer to a read command capability supported by a memory device (e.g., NAND-type memory device) that allows for independent handling of read operations across different memory die planes (e.g., read commands can be handled independently by each memory die plane) . For example, a memory die of a memory sub-system supporting IWL read commands can handle independent read commands for up to six different memory die planes simultaneously, which can improve parallelism and efficiency in random host read workloads.
[0027] Use of various example embodiments can improve the performance of executing random host reads and can enhance bus efficiency (e.g., on the Open NAND Flash Interface (ONFI) bus between the memory sub-system controller and a NAND memory die) , while facilitating use of multi-plane read commands for non-random host reads (e.g., sequential host reads) when appropriate / beneficial.
[0028] As used herein, a random host read workload (or a random host read) can refer to a pattern of host read commands issued by a host system to a memory system (e.g., memory sub-system) where the memory address (e.g., logical block addresses (LBAs) ) being accessed do not follow a non-contiguous or a predictable sequential pattern. A random host read workload can be characterized by a pattern of host read commands (issued by a host system to a memory system) that is unpredictable (e.g., the next host read command's LBA cannot be accurately predicted based on the previous requests) . A random host read workload can also be referred to herein as a non-continuous host read workload.
[0029] Disclosed herein are some examples of using independent read commands on multiple planes (e.g., memory die planes) on a memory system to perform random host reads, as described herein.
[0030] FIG. 1 is a block diagram illustrating several possible data distributions 100 that can be handled during a random host read scenario by some example embodiments of the present disclosure. As illustrated, the data distributions 100 are on multiple pages of a single block location on a memory die.
[0031] FIG. 2 illustrates an example computing system 200 that includes a memory sub-system 210, in accordance with some example embodiments of the present disclosure. The memory sub-system 210 can include media, such as one or more volatile memory devices (e.g., memory device 240) , one or more non-volatile memory devices (e.g., memory device 230) , or a combination of such.
[0032] A memory sub-system 210 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) .
[0033] The computing system 200 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.
[0034] The computing system 200 can include a host system 220 that is coupled to one or more memory sub-systems 210. In some example embodiments, the host system 220 is coupled to different types of memory sub-systems 210. FIG. 2 illustrates one example of a host system 220 coupled to one memory sub-system 210. 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.
[0035] The host system 220 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 220 uses the memory sub-system 210, for example, to write data to the memory sub-system 210 and read data from the memory sub-system 210.
[0036] The host system 220 can include or be coupled to the memory sub-system 210 so that the host system 220 can read data from or write data to the memory sub-system 210. The host system 220 can be coupled to the memory sub-system 210 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 220 and the memory sub-system 210. The host system 220 can further utilize an NVM Express (NVMe) interface to access the memory devices 230, 240 when the memory sub-system 210 is coupled with the host system 220 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 210 and the host system 220.
[0037] The memory devices 230, 240 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 240) 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) .
[0038] Some examples of non-volatile memory devices (e.g., memory device 230) include a NAND type flash memory and write-in-place memory, such as a three-dimensional (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.
[0039] Each of the memory devices 230, 240 can include one or more arrays of memory cells. One type of memory cell, for example, SLCs, can store one bit per cell. Other types of memory cells, such as MLCs, TLCs, QLCs, and penta-level cells (PLCs) , can store multiple bits per cell. In some example embodiments, each of the memory devices 230, 240 can include one or more arrays of memory cells such as SLCs, MLCs, TLCs, QLCs, or any combination of such. In some example embodiments, 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 230, 240 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. As used herein, a block comprising SLCs can be referred to as a SLC block, a block comprising MLCs can be referred to as an 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.
[0040] 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 230 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) .
[0041] A memory sub-system controller 215 (or controller 215 for simplicity) can communicate with the memory devices 230, 240 to perform operations such as reading data, writing data, or erasing data at the memory devices 230, 240 and other such operations. The memory sub-system controller 215 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 (i.e., hard-coded) logic to perform the operations described herein. The memory sub-system controller 215 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.
[0042] The memory sub-system controller 215 can include a processor (processing device) 217 configured to execute instructions stored in local memory 219. In the illustrated example, the local memory 219 of the memory sub-system controller 215 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 210, including handling communications between the memory sub-system 210 and the host system 220.
[0043] In some example embodiments, the local memory 219 can include memory registers storing memory pointers, fetched data, and so forth. The local memory 219 can also include ROM for storing micro-code. While the example memory sub-system 210 in FIG. 2 has been illustrated as including the memory sub-system controller 215, in another example embodiment of the present disclosure, a memory sub-system 210 does not include a memory sub-system controller 215, 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) .
[0044] In general, the memory sub-system controller 215 can receive commands or operations from the host system 220 and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to the memory device 230 and / or the memory device 240. The memory sub-system controller 215 can be responsible for other operations such as wear leveling operations, garbage collection 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) that are associated with the memory devices 230, 240. The memory sub-system controller 215 can further include host interface circuitry to communicate with the host system 220 via the physical host interface. The host interface circuitry can convert the commands received from the host system 220 into command instructions to access the memory device 230 and / or the memory device 240 as well as convert responses associated with the memory device 230 and / or the memory device 240 into information for the host system 220.
[0045] The memory sub-system 210 can also include additional circuitry or components that are not illustrated. In some example embodiments, the memory sub-system 210 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 215 and decode the address to access the memory devices 230, 240.
[0046] In some example embodiments, the memory device 230 includes local media controller 235 that operates in conjunction with memory sub-system controller 215 to execute operations on one or more memory cells of the memory device 230. An external controller (e.g., memory sub-system controller 215) can externally manage the memory device 230 (e.g., perform media management operations on the memory device 230) . In some example embodiments, a memory device 230 is a managed memory device, which is a raw memory device combined with a local controller (e.g., local media controller 235) for media management within the same memory device package. An example of a managed memory device is a managed NAND (MNAND) device.
[0047] The memory sub-system controller 215 includes a random read detector 213 for using independent reads that enables or facilitates the memory sub-system controller 215 to perform random host reads using independent read commands on multiple planes (e.g., memory die planes) on a memory device (e.g., 230, 240) on the memory sub-system 210 in accordance with various example embodiments described herein. Alternatively, some or all of the random read detector 213 is included by the local media controller 235, thereby enabling the local media controller 235 to enable or facilitate performing random host reads using independent read commands on multiple planes of the memory sub-system 210.
[0048] FIG. 3 and FIG. 4 are flow diagrams of example methods 300, 400 for random host reads using independent read commands on multiple planes on a memory system, in accordance with some example embodiments of the present disclosure. Either method 300 or 400 can be performed by processing logic that can include hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, integrated circuit, etc. ) , software (e.g., instructions run or executed on a processing device) , or a combination thereof. In some example embodiments, either method 300 or 400 is performed by the memory sub-system controller 215 of FIG. 2 based on the random read detector 213. Additionally, or alternatively, for some example embodiments, either method 300 or method 400 is performed, at least in part, by the local media controller 235 of the memory device 230 of FIG. 2. Although shown in a particular sequence or order, unless otherwise specified, the order of the processes can be modified. Thus, the illustrated example embodiments should be understood only as examples, and 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 example embodiments. Thus, not all processes are used in every example embodiment. Other process flows are possible.
[0049] Referring now to method 300 of FIG. 3, at operation 302 a processing device (e.g., the processor 217 of the memory sub-system controller 215) receives a host read command from a host system that is coupled to the memory system (e.g., memory sub-system 210) . To perform the host read command, the processing device would generate and send one or more read commands (or instructions) to one or more memory die (e.g., NAND-type memory die) of a memory device (e.g., 230, 240) . Once a memory die indicates that requested data is ready to be retrieved from the memory die, the processing device can start to transfer the requested data from one or more latches of the memory die.
[0050] At operation 304, the processing device determines whether the host read command (received by the memory system) is associated with a random host read workload based on a (received) start memory address of the host read command. The host read command can comprise the start memory address (e.g., start LBA) , and can comprise a data amount (e.g., number of LBAs) to be read starting from the start memory address. For some example embodiments, operation 304 comprises comparing the received start memory address to an expected start memory address, and determining that the host read command is associated with the random host read workload in response to determining (based on the comparison) that the received start memory address and the expected start memory address are not the same. For some example embodiments, operation 304 comprises comparing the received start memory address to an expected start memory address, and determining that the host read command is not associated with the random host read workload in response to determining (based on the comparison) that the received start memory address and the expected start memory address are the same. Additionally, for some example embodiments, operation 304 comprises determining a difference between the received start memory address and an expected start memory address; determining whether the difference surpasses a threshold value; and determining that the host read command is associated with the random host read workload in response to determining that the difference surpasses the threshold value. Other conditions for determining whether the host read command is associated with a random host read workload can also be possible.
[0051] At decision block 306, in response to the processing device determining that the host read command is associated with the random host read workload, method 300 proceeds to operation 308. Alternatively, at decision block 306, in response to the processing device determining that the host read command is not associated with the random host read workload (e.g., host read command is associated with a non-random host read workload, such as a continuous or sequential host read workload) , method 300 proceeds to operation 322.
[0052] During operation 308, the processing device updates a random read counter. For example, the random read counter can be adjusted up or down (e.g., incremented or decremented) by a predefined value, such as 1. For some example embodiments, the random read counter is used to track how many times in a row host read commands associated with a random host read workload have been received by the memory system.
[0053] After updating the random read counter, at operation 310, the processing device determines whether the random read counter satisfies a condition for using multiple independent read commands in place of one or more multi-plane read commands. For example, the condition can comprise a current value of the random read counter equaling or surpassing a threshold value, which can be set by a user (e.g., administrator) or by a manufacturer of the memory system (e.g., after testing different threshold values) . The threshold value can comprise, for example, a value of 8 or 16 (e.g., meaning the use of independent read commands in place of multi-plane read commands is enabled after a series of 8 or 16 host read commands associated with random reads are received from the host system) . The threshold value can help ensure that the memory system is robust and does not prematurely or unnecessarily use independent read commands in place of multi-plane read commands.
[0054] At decision block 312, in response to the processing device determining that the random read counter satisfies the condition, method 300 proceeds to 314, otherwise method 300 proceeds to operation 318. During operation 314, the processing device resets the random read counter. For various example embodiments, the random read counter is reset to a predefined value or an initialization value of the random reset counter, such as a value of 0. Thereafter, at operation 316, the processing device causes an individual multi-plane read command that is to be executed on a plurality of memory die planes of the memory device, to be replaced by an individual plurality of independent read commands that are executed in parallel on the plurality of memory die planes. In particular, the individual multi-plane read command can be separated into the individual plurality of independent read commands. For some example embodiments, the individual plurality of independent read commands comprises IWL read commands. For some example embodiments, the individual plurality of independent read commands are executed on a single memory die of the memory device. Additionally, for some example embodiments, the plurality of memory die planes comprises a plurality of sequential memory die planes at an individual page location of the memory device. The individual multi-plane read command being replaced can be one associated with performing the host read command received at operation 302, or one associated with performing a previously-received host read command. The individual multi-plane read command can be one generated by aggregating multiple single-plane read commands for reading data from the plurality of memory die planes. For some example embodiments, the individual multi-plane read command is one queued for execution on the memory device but not yet executed on the memory device. Additionally, for some example embodiments, the processing device causes the individual multi-plane read command to be replaced by the individual plurality of independent read commands by setting a flag (e.g., a random read check flag) to a value (e.g., true value) that indicates that all current and subsequent multi-plane read commands that are unexecuted should be replaced by equivalent pluralities of independent read commands. This replacement can continue until the flag is set to another value (e.g., false value) that indicates that all current and subsequent multi-plane read commands that are unexecuted should not be replaced prior to execution. After operation 316, method 300 can return to operation 302 to repeat method 300 for a next host read command received from the host system by the memory system.
[0055] At operation 318, the processing device updates the expected (e.g., predicted) start memory address based on the received start memory address of the host read command (received during operation 302) and the read data amount of the host read command (received during operation 302) . The expected start memory address as updated by operation 318 can be used during subsequent execution of operation 304 to determine whether a next host read command (received during operation 302) is associated with a random host read workload. Subsequently, at operation 320, the processor processing device allows the individual multi-plane read command (e.g., queued for execution on the memory device) to be executed on the plurality of memory die planes. After operation 320, method 300 can return to operation 302 to repeat method 300 for a next host read command received from the host system by the memory system.
[0056] At operation 322, the processing device updates the expected start memory address based on the received start memory address of the host read command (received during operation 302) and the read data amount of the host read command (received during operation 302) . As described herein, the expected start memory address as updated by operation 318 can be used during a subsequent execution of operation 304 to determine whether a next host read command (received during operation 302) is associated with a random host read workload. Thereafter, at operation 324, the processing device resets the random read counter. As described herein, the random read counter can be reset to a predefined value or an initialization value of the random reset counter. After operation 324, method 300 can return to operation 302 to repeat method 300 for a next host read command received from the host system by the memory system.
[0057] Referring now to FIG. 4, method 400 represents an example implementation for detecting a random host read workload and enabling use of multiple independent read commands in place of a multi-plane read command. At operation 402 a processing device (e.g., the processor 217 of the memory sub-system controller 215) accepts a host read command with an LBA start address and an LBA number that indicates the amount of data from the LBA start address to be read. At decision block 404, the processing device determines whether the received host read command is associated with a non-continuous, random host read workload or a continuous, non-random host read workload by determining whether a difference between an expected LBA start address and LBA start address received with the host command surpasses a threshold value (e.g., value of 0) . At decision block 404, in response to determining that the processing device determines that the difference surpasses the threshold value, the host read command is associated with a non-continuous, random host read workload and method 400 proceeds to operation 406. Alternatively, at decision block 404, in response to determining that the processing device determines that the difference does not surpass the threshold value, the host read command is associated with a continuous, non-random host read workload and method 400 proceeds to operation 418.
[0058] At operation 406, the processing device increments a random check counter (e.g., by a value of 1) and, at operation 408, the processing device determines an expected LBA start address for a next host read command, which can eventually be used to determine whether the next host read command is associated with a non-continuous, random host read workload or a continuous, non-random host read workload.
[0059] Subsequently, at decision block 410, the processing device determines whether the random read check counter is larger than a threshold value (e.g., value of 8 or 16) . At decision block 410, in response to the processing device determining that the random read check counter is larger than the threshold value, method 400 proceeds to operation 412, otherwise method 400 proceeds to operation 422.
[0060] At operation 412, the processing device sets the random read check flag to true to indicate that IWL read commands are to be used in place of multi-plane LBA reads. At operation 414, the processing device resets the random reach check counter (e.g., to a value of 0) and, at operation 416, the processing device causes all multi-plane LBA reads to be separated into IWL read commands.
[0061] For operation 418, the processing device resets the random reach check counter (e.g., to a value of 0) . Then, at operation 420, the processing device determines an expected LBA start address for a next host read command, which can eventually be used to determine whether the next host read command is associated with a non-continuous, random host read workload or a continuous, non-random host read workload. Method 400 can then proceed to operation 422.
[0062] During operation 422, the processing device sets the random read check flag to false to indicate that multi-plane LBA reads are to be executed as-is.
[0063] FIG. 5 is a diagram illustrating example use of independent read commands in place of multi-plane read commands, in accordance with some example embodiments of the present disclosure. In particular, FIG. 5 illustrates an example of using parallel IWL read commands 514, 516, 518 for performing two 128k host read commands 502, 504 that hit the same target memory die but different pages. For comparison purposes, FIG. 5 also illustrates an example of using multi-plane LBA read commands 506, 508, 510, 512 for performing two 128k host read commands 502, 504 that hit the same target memory die but different pages.
[0064] As shown, a first 128k host read command 502 is targeted for reading 16k data from page N on planes 0, 1, 2, 3, 4, and 5 and page N+1 on planes 0 and 1, while a second 128k host read command 504 is targeted for reading 16k data from page M on planes 2, 3, 4, and 5 and page M+1 on planes 0, 1, 2, and 3. To perform the two 128k host read commands 502, 504, a memory system: uses a plurality of parallel IWL read commands 514 in place of multi-plane LBA read command 506 to read 16k data from page N on planes 0, 1, 2, 3, 4, and 5; uses a plurality of parallel IWL read commands 516 in place of multi-plane LBA read command 508 to read 16k data from page N+1 on planes 0 and 1 and in place of multi-plane LBA read 510 to read 16k data from page M on planes 2, 3, 4, and 5; and uses a plurality of parallel IWL read commands 518 in place of multi-plane LBA read command 512 to read 16k data from page M+1 on planes 0, 1, 2, and 3. A timeline of IWL read commands 520 illustrates the order in which parallel IWL read commands 514, 516, 518 are executed on a memory die.
[0065] FIG. 6 is a diagram illustrating an instruction timeline 600 for using independent read commands in place of multi-plane read commands, in accordance with some example embodiments of the present disclosure. In particular, the instruction timeline 600 illustrates use of IWL read commands over time to perform a host read command 604 over pages N, N+1 and N+2 of a memory die. The instruction timeline 600 shows how busy time (e.g., t_READ) for performed ITWL read command on page N+2 can be hidden in the interval for data transferring data for page N+1 to a processing device (e.g., of a memory sub-system controller 215) , which can facilitate bus efficiency (e.g., for the ONFI bus between the memory die and the memory sub-system controller 215) .
[0066] FIG. 7 illustrates an example machine in the form of a computer system 700 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 example embodiments, the computer system 700 can correspond to a host system (e.g., the host system 220 of FIG. 2) that includes, is coupled to, or utilizes a memory sub-system (e.g., the memory sub-system 210 of FIG. 2) or can be used to perform the operations described herein. In alternative example embodiments, 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.
[0067] 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.
[0068] The example computer system 700 includes a processing device 702, a main memory 704 (e.g., ROM, flash memory, DRAM such as SDRAM or Rambus DRAM (RDRAM) , etc. ) , a static memory 706 (e.g., flash memory, static random access memory (SRAM) , etc. ) , and a data storage device 710, which communicate with each other via a bus 718.
[0069] The processing device 702 represents one or more general-purpose processing devices such as a microprocessor, a central processing unit, or the like. More particularly, the processing device 702 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 702 can also be one or more special-purpose processing devices such as an application-specific integrated circuit (ASIC) , a field programmable gate array (FPGA) , a digital signal processor (DSP) , a network processor, or the like. The processing device 702 is configured to execute instructions 716 for performing the operations and steps discussed herein. The computer system 700 can further include a network interface device 708 to communicate over a network 712.
[0070] The data storage device 710 can include a machine-readable storage medium 714 (also known as a computer-readable medium) on which is stored one or more sets of instructions 716 or software embodying any one or more of the methodologies or functions described herein. The instructions 716 can also reside, completely or at least partially, within the main memory 704 and / or within the processing device 702 during execution thereof by the computer system 700, the main memory 704 and the processing device 702 also constituting machine-readable storage media. The machine-readable storage medium 714, data storage device 710, and / or main memory 704 can correspond to the memory sub-system 210 of FIG. 2.
[0071] In one example embodiment, the instructions 716 include instructions to implement functionality corresponding to using independent read commands on multiple planes on a memory system to perform random host reads as described herein (e.g., the random read detector 213 of FIG. 2) . While the machine-readable storage medium 714 is shown in an example embodiment 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.
[0072] Described implementations of the subject matter can include one or more features, alone or in combination as illustrated below by way of examples.
[0073] Example 1 is a system comprising: a memory device; and a processing device, operatively coupled to the memory device, configured to perform operations comprising: determining whether a host read command received by the system is associated with a random host read workload based on a start memory address of the host read command; and in response to determining that the host read command is associated with the random host read workload: updating a random read counter; determining whether the random read counter satisfies a condition for using multiple independent read commands in place of one or more multi-plane read commands; and in response to determining that the random read counter satisfies the condition: resetting the random read counter; and causing an individual multi-plane read command that is to be executed on a plurality of memory die planes of the memory device, to be replaced by an individual plurality of independent read commands that are executed in parallel on the plurality of memory die planes.
[0074] In Example 2, the subject matter of Example 1 includes, wherein the operations comprise: in response to determining that the random read counter does not satisfy the condition, allowing the individual multi-plane read command to be executed on the plurality of memory die planes.
[0075] In Example 3, the subject matter of Examples 1–2 includes, wherein the operations comprise: in response to determining that the host read command is not associated with a random host read workload, resetting the random read counter.
[0076] In Example 4, the subject matter of Examples 1–3 includes, wherein the start memory address is a received start memory address, and wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises: comparing the received start memory address to an expected start memory address; and determining that the host read command is associated with the random host read workload in response to determining that the received start memory address and the expected start memory address are not the same.
[0077] In Example 5, the subject matter of Example 4 includes, wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises: determining that the host read command is not associated with the random host read workload in response to determining that the received start memory address and the expected start memory address are the same.
[0078] In Example 6, the subject matter of Examples 4–5 includes, wherein the host read command comprises a read data amount, and wherein the operations comprise: in response to determining that the host read command is not associated with a random host read workload: updating the expected start memory address based on the received start memory address and the read data amount; and resetting the random read counter.
[0079] In Example 7, the subject matter of Examples 4–6 includes, wherein the host read command comprises a read data amount, and wherein the operations comprise: in response to determining that the random read counter does not satisfy the condition: updating the expected start memory address based on the received start memory address and the read data amount; and allowing the individual multi-plane read command to be executed on the plurality of memory die planes.
[0080] In Example 8, the subject matter of Examples 1–7 includes, wherein the start memory address is a received start memory address, and wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises: determining a difference between the received start memory address and an expected start memory address; determining whether the difference surpasses a threshold value; and determining that the host read command is associated with the random host read workload in response to determining that the difference surpasses the threshold value.
[0081] In Example 9, the subject matter of Examples 1–8 includes, wherein the individual plurality of independent read commands comprises independent word line (IWL) read commands.
[0082] In Example 10, the subject matter of Examples 1–9 includes, wherein the individual plurality of independent read commands are executed on a single memory die of the memory device.
[0083] In Example 11, the subject matter of Examples 1–10 includes, wherein the plurality of memory die planes comprises a plurality of sequential memory die planes at an individual page location of the memory device.
[0084] In Example 12, the subject matter of Examples 1–11 includes, wherein the individual multi-plane read command is generated by aggregating multiple single-plane read commands for reading data from the plurality of memory die planes.
[0085] Example 13 is a method to implement any of Examples 1–12.
[0086] Example 14 is at least one machine-readable medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations to implement any of Examples 1–12.
[0087] 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.
[0088] 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.
[0089] 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.
[0090] 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.
[0091] 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 example embodiments, 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.
[0092] In the foregoing specification, example embodiments of the disclosure have been described with reference to specific example embodiments thereof. It will be evident that various modifications can be made thereto without departing from the broader spirit and scope of example embodiments 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:determining whether a host read command received by the system is associated with a random host read workload based on a start memory address of the host read command; andin response to determining that the host read command is associated with the random host read workload:updating a random read counter;determining whether the random read counter satisfies a condition for using multiple independent read commands in place of one or more multi-plane read commands; andin response to determining that the random read counter satisfies the condition:resetting the random read counter; andcausing an individual multi-plane read command that is to be executed on a plurality of memory die planes of the memory device, to be replaced by an individual plurality of independent read commands that are executed in parallel on the plurality of memory die planes.2.The system of claim 1, wherein the operations comprise:in response to determining that the random read counter does not satisfy the condition, allowing the individual multi-plane read command to be executed on the plurality of memory die planes.3.The system of claim 1, wherein the operations comprise:in response to determining that the host read command is not associated with a random host read workload, resetting the random read counter.4.The system of claim 1, wherein the start memory address is a received start memory address, and wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises:comparing the received start memory address to an expected start memory address; anddetermining that the host read command is associated with the random host read workload in response to determining that the received start memory address and the expected start memory address are not the same.5.The system of claim 4, wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises:determining that the host read command is not associated with the random host read workload in response to determining that the received start memory address and the expected start memory address are the same.6.The system of claim 4, wherein the host read command comprises a read data amount, and wherein the operations comprise:in response to determining that the host read command is not associated with a random host read workload:updating the expected start memory address based on the received start memory address and the read data amount; andresetting the random read counter.7.The system of claim 4, wherein the host read command comprises a read data amount, and wherein the operations comprise:in response to determining that the random read counter does not satisfy the condition:updating the expected start memory address based on the received start memory address and the read data amount; andallowing the individual multi-plane read command to be executed on the plurality of memory die planes.8.The system of claim 1, wherein the start memory address is a received start memory address, and wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises:determining a difference between the received start memory address and an expected start memory address;determining whether the difference surpasses a threshold value; anddetermining that the host read command is associated with the random host read workload in response to determining that the difference surpasses the threshold value.9.The system of claim 1, wherein the individual plurality of independent read commands comprises independent word line (IWL) read commands.10.The system of claim 1, wherein the individual plurality of independent read commands are executed on a single memory die of the memory device.11.The system of claim 1, wherein the plurality of memory die planes comprises a plurality of sequential memory die planes at an individual page location of the memory device.12.The system of claim 1, wherein the individual multi-plane read command is generated by aggregating multiple single-plane read commands for reading data from the plurality of memory die planes.13.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:determining whether a host read command received from a host system is associated with a random host read workload based on a start memory address of the host read command; andin response to determining that the host read command is associated with the random host read workload:updating a random read counter;determining whether the random read counter satisfies a condition for using multiple independent read commands in place of one or more multi-plane read commands; andin response to determining that the random read counter satisfies the condition:resetting the random read counter; andcausing an individual multi-plane read command that is to be executed on a plurality of memory die planes of a memory device, to be replaced by an individual plurality of independent read commands that are executed in parallel on the plurality of memory die planes.14.The at least one non-transitory machine-readable storage medium of claim 13, wherein the operations comprise:in response to determining that the random read counter does not satisfy the condition, allowing the individual multi-plane read command to be executed on the plurality of memory die planes.15.The at least one non-transitory machine-readable storage medium of claim 13, wherein the operations comprise:in response to determining that the host read command is not associated with a random host read workload, resetting the random read counter.16.The at least one non-transitory machine-readable storage medium of claim 13, wherein the start memory address is a received start memory address, and wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises:comparing the received start memory address to an expected start memory address; anddetermining that the host read command is associated with the random host read workload in response to determining that the received start memory address and the expected start memory address are not the same.17.The at least one non-transitory machine-readable storage medium of claim 16, wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises:determining that the host read command is not associated with the random host read workload in response to determining that the received start memory address and the expected start memory address are the same.18.The at least one non-transitory machine-readable storage medium of claim 13, wherein the start memory address is a received start memory address, and wherein the determining of whether the host read command is associated with the random host read workload based on the start memory address of the host read command comprises:determining a difference between the received start memory address and an expected start memory address;determining whether the difference surpasses a threshold value; anddetermining that the host read command is associated with the random host read workload in response to determining that the difference surpasses the threshold value.19.The at least one non-transitory machine-readable storage medium of claim 13, wherein the individual plurality of independent read commands comprises independent word line (IWL) read commands.20.A method comprising:determining whether a host read command received from a host system is associated with a random host read workload based on a start memory address of the host read command; andin response to determining that the host read command is associated with the random host read workload:updating a random read counter;determining whether the random read counter satisfies a condition for using multiple independent read commands in place of one or more multi-plane read commands; andin response to determining that the random read counter satisfies the condition:resetting the random read counter; andcausing an individual multi-plane read command that is to be executed on a plurality of memory die planes of a memory device, to be replaced by an individual plurality of independent read commands that are executed in parallel on the plurality of memory die planes.
Citation Information
Patent Citations
Mobile storage random read performance estimation enhancement
CN114902337A
Independent parallel plane access in multi-plane memory device
CN115699180A
Express status operation for storage devices with independent planes and plane groups
US20230229356A1
Splitting sequential read commands
US20240086107A1