US20220050772A1 - Data block switching at a memory sub-system - Google Patents
Data block switching at a memory sub-system Download PDFInfo
- Publication number
- US20220050772A1 US20220050772A1 US17/512,557 US202117512557A US2022050772A1 US 20220050772 A1 US20220050772 A1 US 20220050772A1 US 202117512557 A US202117512557 A US 202117512557A US 2022050772 A1 US2022050772 A1 US 2022050772A1
- Authority
- US
- United States
- Prior art keywords
- memory
- data block
- blocks
- data
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 230000015654 memory Effects 0.000 title claims abstract description 255
- 238000012545 processing Methods 0.000 claims description 46
- 238000000034 method Methods 0.000 claims description 37
- 230000008569 process Effects 0.000 description 16
- 238000003491 array Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5643—Multilevel memory comprising cache storage devices
Definitions
- the present disclosure generally relates to a memory sub-system, and more specifically, relates to data block switching at a memory sub-system.
- 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.
- a host system can utilize a memory sub-system to store data at the memory devices and to retrieve data from the memory devices.
- FIG. 1 illustrates an example computing system that includes a memory sub-system in accordance with embodiments of the present disclosure.
- FIG. 2 illustrates a flow diagram of an example method to perform data block switching for writing host data at an example memory device, in accordance with some embodiments of the present disclosure.
- FIG. 3A illustrates an example memory device associated with a first write mode and a second write mode, in accordance with some embodiments of the present disclosure.
- FIG. 3B illustrates switching from writing host data to a first open block associated with a first write mode to a second available data block associated with a second write mode of an example memory device, in accordance with some embodiments of the present disclosure.
- FIG. 3C illustrates writing host data to a second available data block in the second write mode of an example memory device, in accordance with some embodiments of the present disclosure.
- FIG. 4 illustrates a flow diagram of an example method to perform data block switching for garbage collection, in accordance with some embodiments of the present disclosure.
- FIG. 5A illustrates an example memory device for performing a garbage collection operation, in accordance with some embodiments of the present disclosure.
- FIG. 5B illustrates performing data block switching for a garbage collection operation for an example memory device, in accordance with some embodiments of the present disclosure.
- FIG. 5C illustrates performing a garbage collection operation for an example memory device, in accordance with some embodiments of the present disclosure.
- FIG. 6 is a block diagram of an example computer system in which implementations of the present disclosure can operate.
- 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 .
- 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 provide data to be stored at the memory sub-system and can request data to be retrieved from the memory sub-system.
- a memory device can be a non-volatile memory device.
- a non-volatile memory device is a package of one or more dice. Each die can consist of one or more planes. Planes can be groups into logic units (LUNs). For some types of non-volatile memory devices (e.g., NAND devices), each plane consists of a set of physical blocks. Each block consists of a set of pages. Each page consists of a set of memory cells (“cells”). A cell is an electronic circuit that stores information.
- a data block hereinafter refers to a unit of the memory device used to store data and can include a group of memory cells, a word line group, a word line, or individual memory cells.
- Data operations can be performed by the memory sub-system.
- the data operations can be host-initiated operations.
- the host system can initiate a data operation (e.g., write, read, erase, etc.) on a memory sub-system.
- 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 and to read data from the 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.”
- 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.
- LBA logical block address
- the logical address information can be part of metadata for the host data.
- Metadata can also include error handling data (e.g., 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), etc.
- a memory sub-system can perform various operations with respect to one or more memory devices included in the memory sub-system. For example, read operations, program (i.e., write) operations, and erase operations can be performed at one or more memory devices.
- Memory devices can include one or more data blocks, which can include one or more arrays of memory cells such as single level cells (SLCs) that are each used to store a single bit of data or memory cells that each store multiple bits of data, such as multi-level cells (MLCs), triple-level cells (TLCs), or quad-level cells (QLCs) (collectively referred to herein as XLCs).
- SLCs single level cells
- MLCs multi-level cells
- TLCs triple-level cells
- QLCs quad-level cells
- Each memory cell type can have a different data density, which corresponds to an amount of data (e.g., bits of data) that can be stored per memory cell.
- a memory device can be configured to include one or more data blocks with SLCs (referred to as SLC data blocks) and one or more data blocks with XLCs (referred to as XLC data blocks).
- the memory device can also be configured such that a first portion of the memory device is provisioned as a cache while a second portion of the memory device is provisioned as a user space.
- the cache can include one or more SLC memory units (e.g., blocks) and the user space can include one or more XLC memory units.
- a memory unit can include a group of memory cells, a word line group, a word line, or individual memory cells.
- a memory unit can include one or more blocks.
- the cache can also be provisioned to include one or more XLC memory units so that the cache includes both SLC memory units and XLC memory units.
- the XLC memory units of the cache can be re-configured as user space memory units.
- a host cursor can be used to manage the performance of the write operation.
- a cursor can manage the execution of a memory operation by determining where, when, and in what sequence to write host data to memory devices.
- a cursor can be a pointer to an available data block of the memory device.
- the host cursor can indicate an available data block (also referred to as an open block or an open data block) of the memory device that is available to store incoming host data.
- the available data block can be an empty data block where all memory cells of the data block are available to store host data, or a partially empty data block where data is written to one or more memory cells of the data block while one or more other memory cells of the data block are available to store host data.
- a single host cursor can be used to manage the performance of write operations.
- the cache can include one or more available data blocks and the host cursor can indicate an available data block of the cache to store incoming host data, in SLC mode or in XLC mode.
- the host cursor can indicate an available data block of the user space to store incoming host data in XLC mode. Subsequent incoming host data can be written to available user space data blocks, as indicated by the host cursor, until the user space does not include an available data block.
- an idle time period can occur where incoming host data is not received to be stored at the memory sub-system.
- no cache data blocks are available for incoming host data and one or more user space data blocks are available for incoming host data at the initiation of the idle time period.
- the host cursor can indicate a user space data block as an available data block.
- the available user space data block indicated by the host cursor can be a partially empty data block.
- a media management operation such as a garbage collection operation, can be performed at the memory sub-system during the idle time period to make one or more data blocks of the cache and/or the user space available for subsequent incoming host data.
- incoming host data can be received to be stored at the memory sub-system.
- incoming host data can be stored at the partially available data block in XLC mode instead of a newly available cache data block in SLC mode.
- Conventional memory sub-systems do not provide a mechanism for host data to be written to available cache data blocks in SLC mode if a user space data block is not closed (i.e., is available). As a result, incoming host data is written to the available user space data block in XLC mode to close the available user space data block even though one or more cache data blocks are available. A data block can be considered to be closed when data is written to each memory cell of the data block.
- a significant reduction in write performance results since instead of writing host data to the available cache data block in SLC mode, host data is written to the available user space data block in XLC mode to close the user space data block, and the XLC mode latency is larger than the SLC mode latency.
- aspects of the present disclosure address the above and other deficiencies by providing a first available data block, indicated by a first host cursor, and a second available data block, indicated by a second host cursor.
- a second host cursor to indicate the second available data block
- the first host cursor and the second host cursor can serve as a record of available data blocks in both the cache and the user space of the memory sub-system.
- the memory sub-system can identify and select an available data block to write incoming host data to reduce write operation latency.
- Advantages of the present disclosure include, but are not limited to, an improved performance of the memory sub-system as the overall write operation latency can be reduced.
- host data can be written to a cache data block in SLC mode rather than a user space data block in XLC mode, even though the user space data block has not been closed (i.e., contains one or more available XLCs).
- a second host cursor to indicate a second available data block
- a write operation can be successfully performed in less time than if only one available data block was indicated by a first host cursor.
- the overall write latency of the memory sub-system can be decreased.
- the decreasing of the write latency can result in the memory sub-system being capable of satisfying Quality of Service (QoS) requirements that specify various operating requirements when performing the write operations at the memory sub-system.
- QoS Quality of Service
- FIG. 1 illustrates an example computing system 100 that includes a memory sub-system 110 in accordance with some embodiments of the present disclosure.
- 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.
- a memory sub-system 110 can be a storage device, a memory module, or a hybrid of a storage device and memory module.
- a storage device include a solid-state drive (SSD), a flash drive, a universal serial bus (USB) flash drive, an embedded Multi-Media Controller (eMMC) drive, a Universal Flash Storage (UFS) drive, a secure digital (SD) card, and a hard disk drive (HDD).
- SSD solid-state drive
- USB universal serial bus
- eMMC embedded Multi-Media Controller
- UFS Universal Flash Storage
- SD secure digital
- HDD hard disk drive
- 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).
- 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.
- 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.
- vehicle e.g., airplane, drone, train, automobile, or other conveyance
- IoT Internet of Things
- embedded computer e.g., one included in a vehicle, industrial equipment, or a networked commercial device
- the computing system 100 can include a host system 120 that is coupled to one or more memory sub-systems 110 .
- the host system 120 is coupled to different types of memory sub-system 110 .
- FIG. 1 illustrates one example of a host system 120 coupled to one memory sub-system 110 .
- “coupled to” or “coupled with” generally refers to a connection between devices, which can be an indirect communicative connection or direct communicative connection (e.g., without intervening devices), whether wired or wireless, including connections such as electrical, optical, magnetic, etc.
- 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., PCIe controller, 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 .
- the host system 120 can be coupled to the memory sub-system 110 via a physical host interface.
- a physical host interface include, but are not limited to, a serial advanced technology attachment (SATA) interface, a peripheral component interconnect express (PCIe) interface, universal serial bus (USB) interface, Fibre Channel, Serial Attached SCSI (SAS), a double data rate (DDR) memory bus, Small Computer System Interface (SCSI), a dual in-line memory module (DIMM) interface (e.g., DIMM socket interface that supports Double Data Rate (DDR)), Open NAND Flash Interface (ONFI), Double Data Rate (DDR), Low Power Double Data Rate (LPDDR), or any other interface.
- SATA serial advanced technology attachment
- PCIe peripheral component interconnect express
- USB universal serial bus
- SAS Serial Attached SCSI
- DDR double data rate
- SCSI Small Computer System Interface
- DIMM dual in-line memory module
- DIMM DIMM socket interface that supports Double Data Rate (DDR)
- OFI Open NAND Flash Interface
- 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 components (e.g., memory devices 130 ) when the memory sub-system 110 is coupled with the host system 120 by the PCIe interface.
- NVMe NVM Express
- 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 .
- FIG. 1 illustrates a memory sub-system 110 as an example.
- the host system 120 can access multiple memory sub-systems via a same communication connection, multiple separate communication connections, and/or a combination of communication connections.
- 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
- RAM random access memory
- DRAM dynamic random access memory
- SDRAM synchronous dynamic random access memory
- non-volatile memory devices include negative-and (NAND) type flash memory and write-in-place memory, such as a three-dimensional cross-point (“3D cross-point”) memory device, which is a cross-point array of non-volatile memory cells.
- NAND negative-and
- 3D cross-point three-dimensional cross-point
- 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.
- 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 NAND (2D NAND) and three-dimensional NAND (3D NAND).
- Each of the memory devices 130 can include one or more arrays of memory cells.
- One type of memory cell for example, single level cells (SLC) can store one bit per cell.
- Other types of memory cells such as multi-level cells (MLCs), triple level cells (TLCs), and quad-level cells (QLCs), can store multiple bits per cell.
- each of the memory devices 130 can include one or more arrays of memory cells such as SLCs, MLCs, TLCs, QLCs, or any combination of such.
- 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 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.
- non-volatile memory devices such as 3D cross-point array of non-volatile memory cells and NAND type flash memory (e.g., 2D NAND, 3D NAND)
- 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).
- ROM read-only memory
- PCM phase change memory
- FeTRAM ferroelectric transistor random-access memory
- FeRAM ferroelectric random access memory
- MRAM magneto random access memory
- a memory sub-system controller 115 (or controller 115 for simplicity) can communicate with the memory devices 130 to perform operations such as reading data, writing data, or erasing data at the memory devices 130 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 a digital circuitry with dedicated (i.e., 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.
- FPGA field programmable gate array
- ASIC application specific integrated circuit
- the memory sub-system controller 115 can include a processor 117 (e.g., processing device) configured to execute instructions stored in local memory 119 .
- 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 .
- the local memory 119 can include memory registers storing memory pointers, fetched data, etc.
- the local memory 119 can also include read-only memory (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 embodiment of the present disclosure, 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).
- external control e.g., provided by an external host, or by a processor or controller separate from the memory sub-system.
- 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 devices 130 .
- the memory sub-system controller 115 can be responsible for other operations such as wear leveling operations, garbage collection operations, error detection and error-correcting code (ECC) operations, encryption operations, caching operations, and address translations between a logical address (e.g., logical block address (LBA), namespace) and a physical address (e.g., physical block address) that are associated with the memory devices 130 .
- 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 into command instructions to access the memory devices 130 as well as convert responses associated with the memory devices 130 into information for the host system 120 .
- the memory sub-system 110 can also include additional circuitry or components that are not illustrated.
- 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 .
- a cache or buffer e.g., DRAM
- address circuitry e.g., a row decoder and a column decoder
- the memory devices 130 include 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 devices 130 .
- An external controller e.g., memory sub-system controller 115
- a memory device 130 is a managed memory device, which is a raw memory device combined with a local controller (e.g., local controller 135 ) for media management within the same memory device package.
- An example of a managed memory device is a managed NAND (MNAND) device.
- MNAND managed NAND
- the memory subsystem 110 includes a cursor component 113 that can be used to maintain two or more host cursors of the memory sub-system 110 .
- the controller 115 includes at least a portion of the cursor component 113 .
- the controller 115 can include a processor 117 (processing device) configured to execute instructions stored in local memory 119 for performing operations described herein.
- the cursor component 113 is part of the host system 120 , an application, or an operating system.
- the cursor component 113 can maintain two or more host cursors that each indicate an available data block of the memory subsystem for host data to be written to.
- a first host cursor can identify an available data block of a first portion of the memory sub-system, where the first portion corresponds to a first write mode.
- a second host cursor can identify an available data block of a second portion of the memory sub-system, where the second portion corresponds to a second write mode.
- the first write mode can correspond to a first number of bits per memory cell of the memory subsystem
- the second write mode can correspond to a second number of bits per memory cell of the memory subsystem. In some implementations, the first number of bits per memory cell is larger than the second number of bits per memory cell.
- the second number of bits is larger than the first number of bits.
- the cursor component can determine to write host data at the data block associated with the first host cursor or a data block associated with the second host cursor. Further details with regards to the operations of the cursor component 113 are described herein.
- FIG. 2 is a flow diagram of an example method 200 to perform data block switching for writing host data at an example memory device, in accordance with some embodiments of the present disclosure.
- the method 200 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.
- the method 200 is performed by the cursor component 113 of FIG. 1 . Although shown in a particular sequence or order, unless otherwise specified, the order of the processes can be modified.
- the processing device receives host data to be written to a memory sub-system.
- the memory sub-system can include one or more memory devices, where each memory device can include one or more data blocks.
- Each data block can include one or more arrays of memory cells, such SLCs or XLCs.
- Each memory cell type can have a different data density, which corresponds to an amount of data (e.g., bits of data) that can be stored per memory cell.
- the memory sub-system can be configured such that one or more portions of the memory sub-system are used in various modes. For example, a first portion of the memory sub-system can be used as a cache and second portion of the memory sub-system can be exposed as user space.
- the cache can be a portion of the memory sub-system where host data is temporarily stored prior to being moved for long-term storage at the user space.
- data written to one or more blocks of the cache can be written in SLC mode.
- data written to one or more blocks of user space can be written in XLC mode. If no cache blocks are available to store incoming host data in SLC mode, host data can be written to user space in XLC mode, rather than data being first written at the cache in SLC mode and then rewritten at the user space in XLC mode.
- the processing device writes a first portion of the host data to a first available data block of the memory sub-system, where the first available data block is associated with a first write mode.
- the first available data block can be an empty data block (i.e., all memory cells of the data block are available for host data) or a partially empty data block (i.e., data is written to one or more memory cells of the data block and one or more other memory cells of the data block are available for host data).
- the first available data block can be included in the first portion of the memory sub-system (i.e., the user space), where the first portion corresponds to at least the first write mode.
- the first write mode can correspond to programming the first number of bits per memory cell of the first available data block.
- the first available data block can include one or more QLCs.
- the first write mode can be a QLC write mode.
- the first open block can be identified as an available data block by a first host cursor.
- the processing device receives an indication that a second available data block of the memory sub-system is available for host data, where the second available data block is associated with a second write mode.
- the second available data block can be included in the second portion of the memory sub-system (i.e., the cache), where the second portion corresponds to at least the second write mode.
- the second write mode can correspond to a second number of bits per memory cell of the second available data block.
- the second available data block can include one or more SLCs.
- the second write mode can be an SLC write mode.
- the second available data block can be identified as an available data block by a second host cursor.
- the indication that a second available data block is available can be transmitted to the processing device as a result of a garbage collection operation being completed on one or more data blocks of the second portion of the memory sub-system.
- the processing device determines to write a second portion of the host data to the second available data block based on the received indication.
- the first available data block can be available for the second portion of the host data (i.e., can contain one or more XLCs).
- the processing device can determine to write the second portion of the host data to the second available data block before the first available data block is closed. For example, data can be written to the second available data block before data is written to all memory cells of the first available data.
- the processing device can determine to write the second portion of the host data to the second available data block because the second available data block is associated with a smaller number of bits per memory cell than the first available data block and, as a result, a write operation latency associated with writing the second portion of the host data to the second available data block is less than a write operation latency associated with writing the second portion of the host data to the first available data block.
- the processing device in response to determining to write the second portion of the host data to the second available data block, writes the second portion of the host data to the second available data block in the second write mode prior to closing the first open block in the first write mode.
- the second portion of the host data can be written to the second available data block prior to host data being written to each memory cell of the first open block.
- FIG. 3A illustrates an example memory device 300 , in accordance with some embodiments of the present disclosure.
- the memory device 300 can include a first portion 310 and a second portion 320 .
- the first portion 310 and the second portion 320 can be portions of a single memory device 300 .
- the first portion 310 can be a first memory device and the second portion 320 can be a second memory device of the memory sub-system.
- the first portion 310 and the second portion 320 can each include at least one data block.
- Each data block can include one or more arrays of memory cells, such as SLCs or XLCs.
- a data block can be at least one of a closed data block 330 or an available data block (i.e., empty data block 340 or partially empty data block 350 ).
- a closed data block 330 can be a data block where all memory cells are filled with at least one of host data or garbage collection data.
- the host data can be data received from a host system (e.g., host system 120 of FIG. 1 ) to be written to memory device 300 .
- the garbage collection data can include data that previously was written to a data block of memory device 300 and has been moved to another data block during a garbage collection process.
- the closed data block 330 can be completely filled with data, and therefore is not available for data to be written to.
- an available data block can include at least one memory cell that is available to store new host data.
- the one or more data blocks of the first portion 310 can be associated with a first write mode.
- the first write mode can correspond to a first number of bits per memory cell of each data block.
- the first write mode can correspond to two or more bits per memory cell (i.e., XLCs).
- the one or more data blocks of the second portion 320 can be associated with a second write mode.
- the second write mode can correspond to a second number of bits per memory cell of each data block.
- the second write mode can correspond to one bit per memory cell (i.e., SLCs).
- the first number of bits per memory cell of the first write mode can be larger than the second number of bits per memory cell of the second write mode.
- the first portion 310 can correspond to a first host cursor 360
- second portion 320 can correspond to a second host cursor 370
- the first host cursor 360 can indicate a data block of the first portion 310 that is available to write incoming host data
- the second host cursor 370 can indicate a data block of the second portion 320 that is available to write incoming host data.
- FIG. 3B illustrates switching from writing host data to a first available data block 380 associated with a first write mode to a second available data block 390 associated with a second write mode of an example memory device 300 , in accordance with some embodiments of the present disclosure.
- Host data can be received by memory device 300 from a host system, where the host data is to be written to a first available data block 380 of memory device 300 .
- the memory cells of the first available data block 380 can be filled with host data, such that the first available data block 380 becomes closed. If the first available data block 380 becomes closed, the first host cursor 360 can be updated to indicate another available data block of the first write mode portion for which to write host data.
- An indication can be received that a second available data block 390 of memory device 300 is available for storing host data.
- the second available data block 390 can be an available data block of the second portion 320 .
- the processing device can determine whether to write a second portion of the host data to the first available data block 380 of memory device 300 , indicated by the first host cursor 360 , or the second available data block 390 of memory device 300 , indicated by the second host cursor 370 .
- the first available data block 380 indicated by the first host cursor 360 can be a partially empty data block.
- the processing device can determine to write the second portion of the host data to the second available data block 390 before closing the first available data block 380 .
- the processing device can determine to write the second portion of the host data to the second available data block 390 because the second available data block 390 is associated with a smaller number of bits per memory cell than the first available data block 380 and, as a result, a write operation latency associated with writing the second portion of the host data to the second available data block 390 is less than a write operation latency associated with writing the second portion of host data to the first available data block 380 .
- FIG. 3C illustrates writing host data to the second available data block 390 in a second write mode of an example memory device 300 , in accordance with some embodiments of the present disclosure.
- the processing device can determine to write a second portion of host data to the second available data block 390 in the second write mode.
- the second portion of host data can be written to the second available data block 390 .
- the second available data block 390 can be indicated by the second host cursor 370 .
- the memory cells of the second available data block 390 can be filled with host data, such that the second available data block 390 becomes closed.
- the second host cursor 370 can be updated to indicate another available data block of the second portion 320 for which to write host data.
- Host data can be written to available data blocks of the second portion 320 until all data blocks of the second portion 320 are closed, or no incoming host data is received.
- FIG. 4 is a flow diagram of an example method 400 to perform data block switching for garbage collection, in accordance with some embodiments of the present disclosure.
- the method 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.
- the method 400 is performed by the cursor component 113 of FIG. 1 .
- the order of the processes can be modified.
- the illustrated 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 embodiments. Thus, not all processes are required in every embodiment. Other process flows are possible.
- the processing device receives an indication to perform a garbage collection operation for a data block of a memory device.
- the memory device can include one or more data blocks, where each data block includes one or more arrays of memory cells, such as SLCs or XLCs.
- the memory device can be configured such that one or more portions are reserved for various purposes.
- a first portion of the memory device can be provisioned as a cache, where one or more cache data blocks are configured to be written in SLC mode.
- a second portion of the memory device can be configured as user space, where one or more user space data blocks are configured to be written in XLC mode.
- the garbage collection operation can include identifying data blocks in the first portion of the memory device that contain unneeded data and clear the data blocks to maintain optimal write speeds.
- the garbage collection operation can further include writing needed data to a data block of the second portion of the memory device and removing the written data from the first portion.
- the processing device identifies a first available data block of the memory device that corresponds to a host cursor and a second available data block of the memory device that corresponds to a garbage collection cursor.
- the host cursor can indicate an available data block of the memory device that contains memory cells that are available for host data to be written to.
- the garbage collection cursor can indicate an available data block of the memory device that is reserved for storing garbage collection data (i.e., data that has been written and removed from a block previously subject to a garbage collection operation).
- the processing device determines whether to write data of the data block subject to the garbage collection operation to the first available data block or the second available data block based on a condition of the first available data block.
- the condition of the first available data block can be whether the first available data block is a partially empty data block.
- the processing device can determine to write data from the data block subject to the garbage collection operation to the partially empty first available data block to close the first available data block, rather than writing data of the data block to the second available data block.
- the processing device stores data of the data block to the first available data block to close the first available data block.
- the processing device can determine to write the data to the first available data block based on a memory policy in favor of closing a partially empty block before writing to a different available data block. Once the first available data block is closed, data can no longer be written to the first available data block, as all memory cells of the first available data block are filled.
- the processing device can determine to write data from other data blocks subject to the garbage collection operation to the second available data block of the memory device that corresponds to the garbage collection cursor.
- FIG. 5A illustrates an example memory device 500 for performing a garbage collection operation, in accordance with some embodiments of the present disclosure.
- the memory device 500 can include a first portion 510 and a second portion 520 .
- the first portion 510 and the second portion 520 can be portions of a single memory device 500 .
- the first portion 510 can be a first memory device and the second portion 520 can be a second memory device.
- the first portion 510 and the second portion 520 can each include at least one data block. Each data block can include one or more arrays of memory cells including at least one of SLCs or XLCs. One or more data blocks of the first portion 510 can be associated with a first write mode. The first write mode can correspond to a first number of bits per memory cell of each data block. In some embodiments, the first write mode can correspond to one or more bits per memory cell (i.e., SLCs). One or more data blocks of the second portion 520 can be associated with a second write mode. In some embodiments, the second write mode can correspond to a second number of bits per memory cell of each data block.
- the first portion 510 and the second portion 520 can correspond to a host cursor 530 .
- the host cursor 530 can indicate an available data block of the first portion 510 or the second portion 520 for which incoming host data is to be stored.
- the first portion 510 and the second portion 520 may further correspond with a garbage collection cursor 570 .
- the garbage collection cursor 570 can indicate an available data block of the memory device 500 that is reserved for storing garbage collection data.
- a request can be received to perform a garbage collection operation on a data block of memory device 500 .
- a first data block 580 can be selected for garbage collection.
- First data block 580 can include a closed data block of first portion 510 and/or second portion 520 .
- the first data block 580 can be selected based on an amount of unneeded host data (i.e., invalid data) of the first data block 580 .
- the first data block 580 can be selected for garbage collection to remove unneeded data from the first data block 580 to allow for subsequent host data to be stored.
- a first garbage collection block and a second garbage collection block can be identified.
- the first garbage collection block can be second data block 560 indicated by the host cursor 530
- the second garbage collection block can be any available data block indicated by the garbage collection cursor 570 . It can be determined whether to write the garbage collection data of the first data block 580 to the available data block 560 or the available data block indicated by the garbage collection cursor 570 based on a condition of the available data block 560 . In some examples, the condition of the available data block 560 can be whether the available data block 560 is a partially empty data block.
- the processing device can determine to write garbage collection data of the first data block 580 to the partially empty second available data block 560 to close the second data block 560 , rather than writing the garbage collection data of the first data block 580 to the data block indicated by the garbage collection cursor 570 .
- FIG. 5B illustrates performing a garbage collection operation for an example memory device, in accordance with some embodiments of the present disclosure.
- the processing device can determine to write garbage collection data of the first data block 580 to the partially empty second data block 560 to close the second data block 560 , rather than writing the garbage collection data to the available block indicated by the garbage collection cursor 570 .
- the garbage collection data of the first data block 580 i.e., the needed data
- the garbage collection data of the first data block 580 can be written to the second data block 560 such to fill the second data block 560 .
- the unneeded, and needed, data written to the first data block 580 can be removed from the first data block 580 .
- the host cursor 530 can be updated to indicate another available data block of the second portion 520 of the memory device 500 .
- FIG. 5C illustrates performing a garbage collection operation for an example memory device, in accordance with some embodiments of the present disclosure.
- a third data block 590 can be selected for garbage collection.
- An available data block indicated by the host cursor 530 , and an available data block indicated by the garbage collection cursor 570 can be identified as candidate data blocks to store the garbage collection data of the third data block 590 .
- the processing device can determine whether to write the garbage collection data of the third data block 590 to the available data block indicated by the host cursor 530 or the garbage collection cursor 570 based on a condition of the available data block indicated by the host cursor 530 .
- the condition can be whether the available data block indicated by the host cursor 530 is a partially empty block Responsive to determining that the available data block indicated by the host cursor 530 is not a partially empty block (i.e., is an empty block), the processing device can determine to write the garbage collection data of the third data block 590 to the available data block indicated by the garbage collection cursor 570 . In other or similar examples, the condition can further be whether the host cursor 530 indicates a block in the second portion 520 .
- the processing device can determine to write the garbage collection data of the third data block 590 to the available data block indicated by the garbage collection cursor 570 .
- the garbage collection data of the third data block 590 can be written to the available data block indicated by the garbage collection cursor 570 .
- the unneeded data, and the needed, written data, of the third data block 590 can be removed from the third data block 590 .
- FIG. 6 illustrates an example machine of a computer system 600 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, can be executed.
- 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 of a controller (e.g., to execute an operating system to perform operations corresponding to the cursor component 113 of FIG. 1 ).
- a host system e.g., the host system 120 of FIG. 1
- a memory sub-system e.g., the memory sub-system 110 of FIG. 1
- a controller e.g., to execute an operating system to perform operations corresponding to the cursor component 113 of FIG. 1 .
- the machine can be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and/or the Internet.
- the machine can operation in the capacity of a server or a client machine in 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.
- 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.
- PC personal computer
- PDA Personal Digital Assistant
- STB set-top box
- STB set-top box
- a cellular telephone a web appliance
- server a server
- network router a network router
- 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.
- 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.
- the example computer system 600 includes a processing device 602 , a main memory 604 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 606 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage system 618 , which communicate with each other via a bus 630 .
- main memory 604 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- RDRAM Rambus DRAM
- static memory 606 e.g., flash memory, static random access memory (SRAM), etc.
- SRAM static random access memory
- 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 can be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 602 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), network processor, or the like. The processing device 602 is configured to execute instructions 626 for performing the operations and steps discussed herein.
- the computer system 600 can further include a network interface drive 608 to communicate over the network 620 .
- the data storage system 618 can include a machine-readable storage medium 624 (also known as a computer-readable medium) on which is stored one or more sets of instructions 626 or software embodying any one or more of the methodologies or functions described herein.
- the instructions 626 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 624 , data storage system 618 , and/or main memory 604 can correspond to the memory sub-system 110 of FIG. 1 .
- the instructions 626 include instructions to implement functionality corresponding to a cursor component (e.g., the cursor component 113 of FIG. 1 ).
- a cursor component e.g., the cursor component 113 of FIG. 1
- the machine-readable storage medium 624 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.
- 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.
- 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, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- the present disclosure can be provided as a computer program product, or software, that can include a 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.
- a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory components, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
Description
- The present Application is a Continuation of U.S. patent application Ser. No. 16/725,792, filed on Dec. 23, 2019, entitled “DATA BLOCK SWITCHING AT A MEMORY SUB-SYSTEM,” which is incorporated herein by reference in its entirety for all purposes.
- The present disclosure generally relates to a memory sub-system, and more specifically, relates to data block switching at a memory sub-system.
- 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.
- The present disclosure will be understood more fully from the detailed description given below and from the accompanying drawings of various implementations of the disclosure.
-
FIG. 1 illustrates an example computing system that includes a memory sub-system in accordance with embodiments of the present disclosure. -
FIG. 2 illustrates a flow diagram of an example method to perform data block switching for writing host data at an example memory device, in accordance with some embodiments of the present disclosure. -
FIG. 3A illustrates an example memory device associated with a first write mode and a second write mode, in accordance with some embodiments of the present disclosure. -
FIG. 3B illustrates switching from writing host data to a first open block associated with a first write mode to a second available data block associated with a second write mode of an example memory device, in accordance with some embodiments of the present disclosure. -
FIG. 3C illustrates writing host data to a second available data block in the second write mode of an example memory device, in accordance with some embodiments of the present disclosure. -
FIG. 4 illustrates a flow diagram of an example method to perform data block switching for garbage collection, in accordance with some embodiments of the present disclosure. -
FIG. 5A illustrates an example memory device for performing a garbage collection operation, in accordance with some embodiments of the present disclosure. -
FIG. 5B illustrates performing data block switching for a garbage collection operation for an example memory device, in accordance with some embodiments of the present disclosure. -
FIG. 5C illustrates performing a garbage collection operation for an example memory device, in accordance with some embodiments of the present disclosure. -
FIG. 6 is a block diagram of an example computer system in which implementations of the present disclosure can operate. - Aspects of the present disclosure are directed to data block switching at 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. 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 provide data to be stored at the memory sub-system and can request data to be retrieved from the memory sub-system. - A memory device can be a non-volatile memory device. A non-volatile memory device is a package of one or more dice. Each die can consist of one or more planes. Planes can be groups into logic units (LUNs). For some types of non-volatile memory devices (e.g., NAND devices), each plane consists of a set of physical blocks. Each block consists of a set of pages. Each page consists of a set of memory cells (“cells”). A cell is an electronic circuit that stores information. A data block hereinafter refers to a unit of the memory device used to store data and can include a group of memory cells, a word line group, a word line, or individual memory cells.
- Data operations can be performed by the memory sub-system. The data operations can be host-initiated operations. For example, the host system can initiate a data operation (e.g., write, read, erase, etc.) on a memory sub-system. 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 and to read data from the 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.” 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. 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., 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), etc.
- A memory sub-system can perform various operations with respect to one or more memory devices included in the memory sub-system. For example, read operations, program (i.e., write) operations, and erase operations can be performed at one or more memory devices. Memory devices can include one or more data blocks, which can include one or more arrays of memory cells such as single level cells (SLCs) that are each used to store a single bit of data or memory cells that each store multiple bits of data, such as multi-level cells (MLCs), triple-level cells (TLCs), or quad-level cells (QLCs) (collectively referred to herein as XLCs). Each memory cell type can have a different data density, which corresponds to an amount of data (e.g., bits of data) that can be stored per memory cell.
- A memory device can be configured to include one or more data blocks with SLCs (referred to as SLC data blocks) and one or more data blocks with XLCs (referred to as XLC data blocks). The memory device can also be configured such that a first portion of the memory device is provisioned as a cache while a second portion of the memory device is provisioned as a user space. In some conventional memory sub-systems, the cache can include one or more SLC memory units (e.g., blocks) and the user space can include one or more XLC memory units. A memory unit can include a group of memory cells, a word line group, a word line, or individual memory cells. For example, a memory unit can include one or more blocks. The cache can also be provisioned to include one or more XLC memory units so that the cache includes both SLC memory units and XLC memory units. In response to a determination that additional user space is to be provisioned at the memory device, the XLC memory units of the cache can be re-configured as user space memory units.
- A host cursor can be used to manage the performance of the write operation. A cursor can manage the execution of a memory operation by determining where, when, and in what sequence to write host data to memory devices. In some examples, a cursor can be a pointer to an available data block of the memory device. The host cursor can indicate an available data block (also referred to as an open block or an open data block) of the memory device that is available to store incoming host data. In some examples, the available data block can be an empty data block where all memory cells of the data block are available to store host data, or a partially empty data block where data is written to one or more memory cells of the data block while one or more other memory cells of the data block are available to store host data. In conventional memory sub-systems, a single host cursor can be used to manage the performance of write operations. The cache can include one or more available data blocks and the host cursor can indicate an available data block of the cache to store incoming host data, in SLC mode or in XLC mode. In response to determining that the cache does not include an available data block, the host cursor can indicate an available data block of the user space to store incoming host data in XLC mode. Subsequent incoming host data can be written to available user space data blocks, as indicated by the host cursor, until the user space does not include an available data block.
- During operation of the memory sub-system, an idle time period can occur where incoming host data is not received to be stored at the memory sub-system. In some instances, no cache data blocks are available for incoming host data and one or more user space data blocks are available for incoming host data at the initiation of the idle time period. As such, at the initiation of the idle time period, the host cursor can indicate a user space data block as an available data block. The available user space data block indicated by the host cursor can be a partially empty data block. A media management operation, such as a garbage collection operation, can be performed at the memory sub-system during the idle time period to make one or more data blocks of the cache and/or the user space available for subsequent incoming host data. After the idle time period is complete, incoming host data can be received to be stored at the memory sub-system. In response to the host cursor, at the initiation of the idle time period, indicating a partially available data block as an available user data block, incoming host data can be stored at the partially available data block in XLC mode instead of a newly available cache data block in SLC mode.
- Conventional memory sub-systems do not provide a mechanism for host data to be written to available cache data blocks in SLC mode if a user space data block is not closed (i.e., is available). As a result, incoming host data is written to the available user space data block in XLC mode to close the available user space data block even though one or more cache data blocks are available. A data block can be considered to be closed when data is written to each memory cell of the data block. A significant reduction in write performance results since instead of writing host data to the available cache data block in SLC mode, host data is written to the available user space data block in XLC mode to close the user space data block, and the XLC mode latency is larger than the SLC mode latency.
- Aspects of the present disclosure address the above and other deficiencies by providing a first available data block, indicated by a first host cursor, and a second available data block, indicated by a second host cursor. By providing a second host cursor to indicate the second available data block, a mechanism is provided for host data to be written to the cache in SLC mode even though a user space data block, opened in XLC mode, is not closed. The first host cursor and the second host cursor can serve as a record of available data blocks in both the cache and the user space of the memory sub-system. Using the first host cursor and the second host cursor, the memory sub-system can identify and select an available data block to write incoming host data to reduce write operation latency.
- Advantages of the present disclosure include, but are not limited to, an improved performance of the memory sub-system as the overall write operation latency can be reduced. For example, host data can be written to a cache data block in SLC mode rather than a user space data block in XLC mode, even though the user space data block has not been closed (i.e., contains one or more available XLCs). Thus, by providing at least a second host cursor to indicate a second available data block, a write operation can be successfully performed in less time than if only one available data block was indicated by a first host cursor. As such, since the write operation can be performed in less time, the overall write latency of the memory sub-system can be decreased. The decreasing of the write latency can result in the memory sub-system being capable of satisfying Quality of Service (QoS) requirements that specify various operating requirements when performing the write operations at the memory sub-system.
-
FIG. 1 illustrates anexample computing system 100 that includes amemory sub-system 110 in accordance with some embodiments of the present disclosure. Thememory 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. - 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, an embedded Multi-Media Controller (eMMC) drive, a Universal Flash Storage (UFS) drive, a secure digital (SD) card, 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). - 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. - The
computing system 100 can include ahost system 120 that is coupled to one ormore memory sub-systems 110. In some embodiments, thehost system 120 is coupled to different types ofmemory sub-system 110.FIG. 1 illustrates one example of ahost system 120 coupled to onememory sub-system 110. As used herein, “coupled to” or “coupled with” generally refers to a connection between devices, which can be an indirect communicative connection or direct communicative connection (e.g., without intervening devices), whether wired or wireless, including connections such as electrical, optical, magnetic, etc. - 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., PCIe controller, SATA controller). Thehost system 120 uses thememory sub-system 110, for example, to write data to thememory sub-system 110 and read data from thememory sub-system 110. - The
host system 120 can be coupled to thememory 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, universal serial bus (USB) interface, Fibre Channel, Serial Attached SCSI (SAS), a double data rate (DDR) memory bus, Small Computer System Interface (SCSI), a dual in-line memory module (DIMM) interface (e.g., DIMM socket interface that supports Double Data Rate (DDR)), Open NAND Flash Interface (ONFI), Double Data Rate (DDR), Low Power Double Data Rate (LPDDR), or any other interface. The physical host interface can be used to transmit data between thehost system 120 and thememory sub-system 110. Thehost system 120 can further utilize an NVM Express (NVMe) interface to access components (e.g., memory devices 130) when thememory sub-system 110 is coupled with thehost system 120 by the PCIe interface. The physical host interface can provide an interface for passing control, address, data, and other signals between thememory sub-system 110 and thehost system 120.FIG. 1 illustrates amemory sub-system 110 as an example. In general, thehost system 120 can access multiple memory sub-systems via a same communication connection, multiple separate communication connections, and/or a combination of communication connections. - The
memory devices - Some examples of non-volatile memory devices (e.g., memory device 130) include negative-and (NAND) type flash memory and write-in-place memory, such as a three-dimensional cross-point (“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 NAND (2D NAND) and three-dimensional NAND (3D NAND).
- Each of the
memory devices 130 can include one or more arrays of memory cells. One type of memory cell, for example, single level cells (SLC) can store one bit per cell. Other types of memory cells, such as multi-level cells (MLCs), triple level cells (TLCs), and quad-level cells (QLCs), can store multiple bits per cell. In some embodiments, each of thememory devices 130 can include one or more arrays of memory cells such as SLCs, MLCs, TLCs, QLCs, or any combination of such. In some 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 thememory devices 130 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. - Although non-volatile memory devices such as 3D cross-point array of non-volatile memory cells and NAND type flash memory (e.g., 2D NAND, 3D NAND) 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). - A memory sub-system controller 115 (or
controller 115 for simplicity) can communicate with thememory devices 130 to perform operations such as reading data, writing data, or erasing data at thememory devices 130 and other such operations. Thememory 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 a digital circuitry with dedicated (i.e., hard-coded) logic to perform the operations described herein. Thememory 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. - The
memory sub-system controller 115 can include a processor 117 (e.g., processing device) configured to execute instructions stored inlocal memory 119. In the illustrated example, thelocal memory 119 of thememory 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 thememory sub-system 110, including handling communications between thememory sub-system 110 and thehost system 120. - In some embodiments, the
local memory 119 can include memory registers storing memory pointers, fetched data, etc. Thelocal memory 119 can also include read-only memory (ROM) for storing micro-code. While theexample memory sub-system 110 inFIG. 1 has been illustrated as including thememory sub-system controller 115, in another embodiment of the present disclosure, amemory sub-system 110 does not include amemory 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). - In general, the
memory sub-system controller 115 can receive commands or operations from thehost system 120 and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to thememory devices 130. Thememory sub-system controller 115 can be responsible for other operations such as wear leveling operations, garbage collection operations, error detection and error-correcting code (ECC) operations, encryption operations, caching operations, and address translations between a logical address (e.g., logical block address (LBA), namespace) and a physical address (e.g., physical block address) that are associated with thememory devices 130. Thememory sub-system controller 115 can further include host interface circuitry to communicate with thehost system 120 via the physical host interface. The host interface circuitry can convert the commands received from the host system into command instructions to access thememory devices 130 as well as convert responses associated with thememory devices 130 into information for thehost system 120. - The
memory sub-system 110 can also include additional circuitry or components that are not illustrated. In some embodiments, thememory 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 thememory sub-system controller 115 and decode the address to access thememory devices 130. - In some embodiments, the
memory devices 130 includelocal media controllers 135 that operate in conjunction withmemory sub-system controller 115 to execute operations on one or more memory cells of thememory devices 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 embodiments, amemory device 130 is a managed memory device, which is a raw memory device combined with a local controller (e.g., local controller 135) for media management within the same memory device package. An example of a managed memory device is a managed NAND (MNAND) device. - The
memory subsystem 110 includes acursor component 113 that can be used to maintain two or more host cursors of thememory sub-system 110. In some embodiments, thecontroller 115 includes at least a portion of thecursor component 113. For example, thecontroller 115 can include a processor 117 (processing device) configured to execute instructions stored inlocal memory 119 for performing operations described herein. In some embodiments, thecursor component 113 is part of thehost system 120, an application, or an operating system. - The
cursor component 113 can maintain two or more host cursors that each indicate an available data block of the memory subsystem for host data to be written to. A first host cursor can identify an available data block of a first portion of the memory sub-system, where the first portion corresponds to a first write mode. A second host cursor can identify an available data block of a second portion of the memory sub-system, where the second portion corresponds to a second write mode. The first write mode can correspond to a first number of bits per memory cell of the memory subsystem, and the second write mode can correspond to a second number of bits per memory cell of the memory subsystem. In some implementations, the first number of bits per memory cell is larger than the second number of bits per memory cell. In other implementations, the second number of bits is larger than the first number of bits. Based on an availability of a data block of the first portion of the memory sub-system, the cursor component can determine to write host data at the data block associated with the first host cursor or a data block associated with the second host cursor. Further details with regards to the operations of thecursor component 113 are described herein. -
FIG. 2 is a flow diagram of anexample method 200 to perform data block switching for writing host data at an example memory device, in accordance with some embodiments of the present disclosure. Themethod 200 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 embodiments, themethod 200 is performed by thecursor component 113 ofFIG. 1 . Although shown in a particular sequence or order, unless otherwise specified, the order of the processes can be modified. Thus, the illustrated 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 embodiments. Thus, not all processes are required in every embodiments. Other process flows are possible. - At
operation 210, the processing device receives host data to be written to a memory sub-system. The memory sub-system can include one or more memory devices, where each memory device can include one or more data blocks. Each data block can include one or more arrays of memory cells, such SLCs or XLCs. Each memory cell type can have a different data density, which corresponds to an amount of data (e.g., bits of data) that can be stored per memory cell. - The memory sub-system can be configured such that one or more portions of the memory sub-system are used in various modes. For example, a first portion of the memory sub-system can be used as a cache and second portion of the memory sub-system can be exposed as user space. The cache can be a portion of the memory sub-system where host data is temporarily stored prior to being moved for long-term storage at the user space. In some embodiments, data written to one or more blocks of the cache can be written in SLC mode. In other or similar embodiments, data written to one or more blocks of user space can be written in XLC mode. If no cache blocks are available to store incoming host data in SLC mode, host data can be written to user space in XLC mode, rather than data being first written at the cache in SLC mode and then rewritten at the user space in XLC mode.
- At
operation 220, the processing device writes a first portion of the host data to a first available data block of the memory sub-system, where the first available data block is associated with a first write mode. The first available data block can be an empty data block (i.e., all memory cells of the data block are available for host data) or a partially empty data block (i.e., data is written to one or more memory cells of the data block and one or more other memory cells of the data block are available for host data). In some examples, the first available data block can be included in the first portion of the memory sub-system (i.e., the user space), where the first portion corresponds to at least the first write mode. The first write mode can correspond to programming the first number of bits per memory cell of the first available data block. For example, the first available data block can include one or more QLCs. As a result, the first write mode can be a QLC write mode. The first open block can be identified as an available data block by a first host cursor. - At
operation 230, the processing device receives an indication that a second available data block of the memory sub-system is available for host data, where the second available data block is associated with a second write mode. In some examples, the second available data block can be included in the second portion of the memory sub-system (i.e., the cache), where the second portion corresponds to at least the second write mode. The second write mode can correspond to a second number of bits per memory cell of the second available data block. For example, the second available data block can include one or more SLCs. As a result, the second write mode can be an SLC write mode. The second available data block can be identified as an available data block by a second host cursor. - The indication that a second available data block is available can be transmitted to the processing device as a result of a garbage collection operation being completed on one or more data blocks of the second portion of the memory sub-system.
- At
operation 240, the processing device determines to write a second portion of the host data to the second available data block based on the received indication. In some examples, when the indication is received, the first available data block can be available for the second portion of the host data (i.e., can contain one or more XLCs). The processing device can determine to write the second portion of the host data to the second available data block before the first available data block is closed. For example, data can be written to the second available data block before data is written to all memory cells of the first available data. The processing device can determine to write the second portion of the host data to the second available data block because the second available data block is associated with a smaller number of bits per memory cell than the first available data block and, as a result, a write operation latency associated with writing the second portion of the host data to the second available data block is less than a write operation latency associated with writing the second portion of the host data to the first available data block. - At
operation 250, the processing device, in response to determining to write the second portion of the host data to the second available data block, writes the second portion of the host data to the second available data block in the second write mode prior to closing the first open block in the first write mode. For example, the second portion of the host data can be written to the second available data block prior to host data being written to each memory cell of the first open block. -
FIG. 3A illustrates anexample memory device 300, in accordance with some embodiments of the present disclosure. In some embodiments, thememory device 300 can include afirst portion 310 and asecond portion 320. Thefirst portion 310 and thesecond portion 320 can be portions of asingle memory device 300. In other embodiments, thefirst portion 310 can be a first memory device and thesecond portion 320 can be a second memory device of the memory sub-system. - The
first portion 310 and thesecond portion 320 can each include at least one data block. Each data block can include one or more arrays of memory cells, such as SLCs or XLCs. In some embodiments, a data block can be at least one of aclosed data block 330 or an available data block (i.e., empty data block 340 or partially empty data block 350). Aclosed data block 330 can be a data block where all memory cells are filled with at least one of host data or garbage collection data. The host data can be data received from a host system (e.g.,host system 120 ofFIG. 1 ) to be written tomemory device 300. The garbage collection data can include data that previously was written to a data block ofmemory device 300 and has been moved to another data block during a garbage collection process. The closed data block 330 can be completely filled with data, and therefore is not available for data to be written to. As discussed previously, an available data block can include at least one memory cell that is available to store new host data. - The one or more data blocks of the
first portion 310 can be associated with a first write mode. The first write mode can correspond to a first number of bits per memory cell of each data block. In some embodiments, the first write mode can correspond to two or more bits per memory cell (i.e., XLCs). The one or more data blocks of thesecond portion 320 can be associated with a second write mode. The second write mode can correspond to a second number of bits per memory cell of each data block. In some embodiments, the second write mode can correspond to one bit per memory cell (i.e., SLCs). In some embodiments, the first number of bits per memory cell of the first write mode can be larger than the second number of bits per memory cell of the second write mode. - The
first portion 310 can correspond to afirst host cursor 360, andsecond portion 320 can correspond to asecond host cursor 370. Thefirst host cursor 360 can indicate a data block of thefirst portion 310 that is available to write incoming host data, while thesecond host cursor 370 can indicate a data block of thesecond portion 320 that is available to write incoming host data. -
FIG. 3B illustrates switching from writing host data to a first available data block 380 associated with a first write mode to a second available data block 390 associated with a second write mode of anexample memory device 300, in accordance with some embodiments of the present disclosure. Host data can be received bymemory device 300 from a host system, where the host data is to be written to a first available data block 380 ofmemory device 300. As host data is written to the first available data block 380, the memory cells of the first available data block 380 can be filled with host data, such that the first available data block 380 becomes closed. If the first available data block 380 becomes closed, thefirst host cursor 360 can be updated to indicate another available data block of the first write mode portion for which to write host data. - An indication can be received that a second available data block 390 of
memory device 300 is available for storing host data. In some embodiments, the second available data block 390 can be an available data block of thesecond portion 320. Based on the received indication, the processing device can determine whether to write a second portion of the host data to the first available data block 380 ofmemory device 300, indicated by thefirst host cursor 360, or the second available data block 390 ofmemory device 300, indicated by thesecond host cursor 370. In some examples, the first available data block 380 indicated by thefirst host cursor 360 can be a partially empty data block. Instead of writing the second portion of the host data to the partially empty first available data block 380, the processing device can determine to write the second portion of the host data to the second available data block 390 before closing the first available data block 380. The processing device can determine to write the second portion of the host data to the second available data block 390 because the second available data block 390 is associated with a smaller number of bits per memory cell than the first available data block 380 and, as a result, a write operation latency associated with writing the second portion of the host data to the second available data block 390 is less than a write operation latency associated with writing the second portion of host data to the first available data block 380. -
FIG. 3C illustrates writing host data to the second available data block 390 in a second write mode of anexample memory device 300, in accordance with some embodiments of the present disclosure. The processing device can determine to write a second portion of host data to the second available data block 390 in the second write mode. - Responsive to determining to write the second portion of host data to the second available data block 390, the second portion of host data can be written to the second available data block 390. The second available data block 390 can be indicated by the
second host cursor 370. As host data is written to the second available data block 390, the memory cells of the second available data block 390 can be filled with host data, such that the second available data block 390 becomes closed. If the second available data block 390 becomes closed, thesecond host cursor 370 can be updated to indicate another available data block of thesecond portion 320 for which to write host data. Host data can be written to available data blocks of thesecond portion 320 until all data blocks of thesecond portion 320 are closed, or no incoming host data is received. -
FIG. 4 is a flow diagram of anexample method 400 to perform data block switching for garbage collection, in accordance with some embodiments of the present disclosure. Themethod 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 embodiments, themethod 400 is performed by thecursor component 113 ofFIG. 1 . Although shown in a particular sequence or order, unless otherwise specified, the order of the processes can be modified. Thus, the illustrated 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 embodiments. Thus, not all processes are required in every embodiment. Other process flows are possible. - At
operation 410, the processing device receives an indication to perform a garbage collection operation for a data block of a memory device. The memory device can include one or more data blocks, where each data block includes one or more arrays of memory cells, such as SLCs or XLCs. In some examples, the memory device can be configured such that one or more portions are reserved for various purposes. A first portion of the memory device can be provisioned as a cache, where one or more cache data blocks are configured to be written in SLC mode. A second portion of the memory device can be configured as user space, where one or more user space data blocks are configured to be written in XLC mode. - The garbage collection operation can include identifying data blocks in the first portion of the memory device that contain unneeded data and clear the data blocks to maintain optimal write speeds. The garbage collection operation can further include writing needed data to a data block of the second portion of the memory device and removing the written data from the first portion.
- At
operation 420, the processing device identifies a first available data block of the memory device that corresponds to a host cursor and a second available data block of the memory device that corresponds to a garbage collection cursor. The host cursor can indicate an available data block of the memory device that contains memory cells that are available for host data to be written to. The garbage collection cursor can indicate an available data block of the memory device that is reserved for storing garbage collection data (i.e., data that has been written and removed from a block previously subject to a garbage collection operation). - At
operation 430, the processing device determines whether to write data of the data block subject to the garbage collection operation to the first available data block or the second available data block based on a condition of the first available data block. In some examples, the condition of the first available data block can be whether the first available data block is a partially empty data block. The processing device can determine to write data from the data block subject to the garbage collection operation to the partially empty first available data block to close the first available data block, rather than writing data of the data block to the second available data block. - At
operation 440, in response to determining to write the data of the data block to the first available data block, the processing device stores data of the data block to the first available data block to close the first available data block. The processing device can determine to write the data to the first available data block based on a memory policy in favor of closing a partially empty block before writing to a different available data block. Once the first available data block is closed, data can no longer be written to the first available data block, as all memory cells of the first available data block are filled. The processing device can determine to write data from other data blocks subject to the garbage collection operation to the second available data block of the memory device that corresponds to the garbage collection cursor. -
FIG. 5A illustrates anexample memory device 500 for performing a garbage collection operation, in accordance with some embodiments of the present disclosure. In some embodiments, thememory device 500 can include afirst portion 510 and asecond portion 520. Thefirst portion 510 and thesecond portion 520 can be portions of asingle memory device 500. In other embodiments, thefirst portion 510 can be a first memory device and thesecond portion 520 can be a second memory device. - The
first portion 510 and thesecond portion 520 can each include at least one data block. Each data block can include one or more arrays of memory cells including at least one of SLCs or XLCs. One or more data blocks of thefirst portion 510 can be associated with a first write mode. The first write mode can correspond to a first number of bits per memory cell of each data block. In some embodiments, the first write mode can correspond to one or more bits per memory cell (i.e., SLCs). One or more data blocks of thesecond portion 520 can be associated with a second write mode. In some embodiments, the second write mode can correspond to a second number of bits per memory cell of each data block. - The
first portion 510 and thesecond portion 520 can correspond to ahost cursor 530. Thehost cursor 530 can indicate an available data block of thefirst portion 510 or thesecond portion 520 for which incoming host data is to be stored. Thefirst portion 510 and thesecond portion 520 may further correspond with agarbage collection cursor 570. Thegarbage collection cursor 570 can indicate an available data block of thememory device 500 that is reserved for storing garbage collection data. - A request can be received to perform a garbage collection operation on a data block of
memory device 500. Afirst data block 580 can be selected for garbage collection. First data block 580 can include a closed data block offirst portion 510 and/orsecond portion 520. In some examples, the first data block 580 can be selected based on an amount of unneeded host data (i.e., invalid data) of thefirst data block 580. The first data block 580 can be selected for garbage collection to remove unneeded data from the first data block 580 to allow for subsequent host data to be stored. - Responsive to receiving a request to perform the garbage collection operation and selecting the
first data block 580, a first garbage collection block and a second garbage collection block can be identified. The first garbage collection block can be second data block 560 indicated by thehost cursor 530, and the second garbage collection block can be any available data block indicated by thegarbage collection cursor 570. It can be determined whether to write the garbage collection data of the first data block 580 to the available data block 560 or the available data block indicated by thegarbage collection cursor 570 based on a condition of the available data block 560. In some examples, the condition of the available data block 560 can be whether the available data block 560 is a partially empty data block. The processing device can determine to write garbage collection data of the first data block 580 to the partially empty second available data block 560 to close thesecond data block 560, rather than writing the garbage collection data of the first data block 580 to the data block indicated by thegarbage collection cursor 570. -
FIG. 5B illustrates performing a garbage collection operation for an example memory device, in accordance with some embodiments of the present disclosure. As discussed above, the processing device can determine to write garbage collection data of the first data block 580 to the partially empty second data block 560 to close thesecond data block 560, rather than writing the garbage collection data to the available block indicated by thegarbage collection cursor 570. Responsive to determining to write the garbage collection data to thesecond data block 560, the garbage collection data of the first data block 580 (i.e., the needed data), can be written to the second data block 560 such to fill thesecond data block 560. The unneeded, and needed, data written to the first data block 580 can be removed from thefirst data block 580. Responsive to closing thesecond data block 560, thehost cursor 530 can be updated to indicate another available data block of thesecond portion 520 of thememory device 500. -
FIG. 5C illustrates performing a garbage collection operation for an example memory device, in accordance with some embodiments of the present disclosure. In some examples, athird data block 590 can be selected for garbage collection. An available data block indicated by thehost cursor 530, and an available data block indicated by thegarbage collection cursor 570, can be identified as candidate data blocks to store the garbage collection data of thethird data block 590. The processing device can determine whether to write the garbage collection data of the third data block 590 to the available data block indicated by thehost cursor 530 or thegarbage collection cursor 570 based on a condition of the available data block indicated by thehost cursor 530. In some examples, the condition can be whether the available data block indicated by thehost cursor 530 is a partially empty block Responsive to determining that the available data block indicated by thehost cursor 530 is not a partially empty block (i.e., is an empty block), the processing device can determine to write the garbage collection data of the third data block 590 to the available data block indicated by thegarbage collection cursor 570. In other or similar examples, the condition can further be whether thehost cursor 530 indicates a block in thesecond portion 520. Responsive to further determining that thehost cursor 530 does not indicate a block in thesecond portion 520, (i.e., indicates a block in the cache to be written in SLC mode), the processing device can determine to write the garbage collection data of the third data block 590 to the available data block indicated by thegarbage collection cursor 570. - Responsive to determining to write the garbage collection data to the available data block indicated by the
garbage collection cursor 570, the garbage collection data of the third data block 590 can be written to the available data block indicated by thegarbage collection cursor 570. The unneeded data, and the needed, written data, of the third data block 590 can be removed from thethird data block 590. -
FIG. 6 illustrates an example machine of acomputer system 600 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, can be executed. In some embodiments, thecomputer system 600 can correspond to a host system (e.g., thehost system 120 ofFIG. 1 ) that includes, is coupled to, or utilizes a memory sub-system (e.g., thememory sub-system 110 ofFIG. 1 ) or can be used to perform the operations of a controller (e.g., to execute an operating system to perform operations corresponding to thecursor component 113 ofFIG. 1 ). In alternative embodiments, the machine can be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and/or the Internet. The machine can operation in the capacity of a server or a client machine in 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. - 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.
- The
example computer system 600 includes aprocessing device 602, a main memory 604 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 606 (e.g., flash memory, static random access memory (SRAM), etc.), and adata storage system 618, which communicate with each other via abus 630. -
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 can be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or processors implementing a combination of instruction sets.Processing device 602 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), network processor, or the like. Theprocessing device 602 is configured to executeinstructions 626 for performing the operations and steps discussed herein. Thecomputer system 600 can further include anetwork interface drive 608 to communicate over thenetwork 620. - The
data storage system 618 can include a machine-readable storage medium 624 (also known as a computer-readable medium) on which is stored one or more sets ofinstructions 626 or software embodying any one or more of the methodologies or functions described herein. Theinstructions 626 can also reside, completely or at least partially, within themain memory 604 and/or within theprocessing device 602 during execution thereof by thecomputer system 600, themain memory 604 and theprocessing device 602 also constituting machine-readable storage media. The machine-readable storage medium 624,data storage system 618, and/ormain memory 604 can correspond to thememory sub-system 110 ofFIG. 1 . - In one embodiment, the
instructions 626 include instructions to implement functionality corresponding to a cursor component (e.g., thecursor component 113 ofFIG. 1 ). While the machine-readable storage medium 624 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. - 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 general, 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.
- 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.
- 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, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- The algorithms and displays presented herein are not inherently related to any particular computer or 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.
- The present disclosure can be provided as a computer program product, or software, that can include a 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 embodiments, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory components, etc.
- In the foregoing specification, 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 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 (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/512,557 US20220050772A1 (en) | 2019-12-23 | 2021-10-27 | Data block switching at a memory sub-system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/725,792 US11188459B2 (en) | 2019-12-23 | 2019-12-23 | Data block switching at a memory sub-system |
US17/512,557 US20220050772A1 (en) | 2019-12-23 | 2021-10-27 | Data block switching at a memory sub-system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/725,792 Continuation US11188459B2 (en) | 2019-12-23 | 2019-12-23 | Data block switching at a memory sub-system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20220050772A1 true US20220050772A1 (en) | 2022-02-17 |
Family
ID=76437252
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/725,792 Active 2040-01-27 US11188459B2 (en) | 2019-12-23 | 2019-12-23 | Data block switching at a memory sub-system |
US17/512,557 Abandoned US20220050772A1 (en) | 2019-12-23 | 2021-10-27 | Data block switching at a memory sub-system |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/725,792 Active 2040-01-27 US11188459B2 (en) | 2019-12-23 | 2019-12-23 | Data block switching at a memory sub-system |
Country Status (2)
Country | Link |
---|---|
US (2) | US11188459B2 (en) |
CN (1) | CN113093990B (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11188459B2 (en) * | 2019-12-23 | 2021-11-30 | Micron Technology, Inc. | Data block switching at a memory sub-system |
US11803444B1 (en) | 2022-06-15 | 2023-10-31 | Micron Technology, Inc. | Cooperative memory subsystem data recovery |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124787A1 (en) * | 2011-09-09 | 2013-05-16 | Ocz Technology Group Inc. | Nand flash-based storage device and methods of using |
US20150161034A1 (en) * | 2013-12-09 | 2015-06-11 | International Business Machines Corporation | Recording dwell time in a non-volatile memory system |
US11188459B2 (en) * | 2019-12-23 | 2021-11-30 | Micron Technology, Inc. | Data block switching at a memory sub-system |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8537613B2 (en) * | 2011-03-31 | 2013-09-17 | Sandisk Technologies Inc. | Multi-layer memory system |
US9747202B1 (en) * | 2013-03-14 | 2017-08-29 | Sandisk Technologies Llc | Storage module and method for identifying hot and cold data |
JP6443794B2 (en) * | 2013-08-16 | 2018-12-26 | エルエスアイ コーポレーション | Translation layer partitioned between host and controller |
US9727249B1 (en) * | 2014-02-06 | 2017-08-08 | SK Hynix Inc. | Selection of an open block in solid state storage systems with multiple open blocks |
US9778863B2 (en) * | 2014-09-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for folding partial blocks into multi-level cell memory blocks |
US9697134B2 (en) * | 2015-06-10 | 2017-07-04 | Micron Technology, Inc. | Memory having a static cache and a dynamic cache |
US10359933B2 (en) * | 2016-09-19 | 2019-07-23 | Micron Technology, Inc. | Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods |
JP2018120439A (en) * | 2017-01-25 | 2018-08-02 | 東芝メモリ株式会社 | Memory system and control method |
US10452282B2 (en) * | 2017-04-07 | 2019-10-22 | Micron Technology, Inc. | Memory management |
US10223259B1 (en) * | 2017-08-31 | 2019-03-05 | Micron Technology, Inc. | Memory device with dynamic storage mode control |
JP7030463B2 (en) * | 2017-09-22 | 2022-03-07 | キオクシア株式会社 | Memory system |
-
2019
- 2019-12-23 US US16/725,792 patent/US11188459B2/en active Active
-
2020
- 2020-12-22 CN CN202011528569.7A patent/CN113093990B/en active Active
-
2021
- 2021-10-27 US US17/512,557 patent/US20220050772A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124787A1 (en) * | 2011-09-09 | 2013-05-16 | Ocz Technology Group Inc. | Nand flash-based storage device and methods of using |
US20150161034A1 (en) * | 2013-12-09 | 2015-06-11 | International Business Machines Corporation | Recording dwell time in a non-volatile memory system |
US11188459B2 (en) * | 2019-12-23 | 2021-11-30 | Micron Technology, Inc. | Data block switching at a memory sub-system |
Non-Patent Citations (1)
Title |
---|
Kang et al. "A Superblock-based Flash Translation Layer for NAND Flash Memory." Oct. 2006. ACM. EMSOFT '06. Pp 161-170 * |
Also Published As
Publication number | Publication date |
---|---|
US11188459B2 (en) | 2021-11-30 |
US20210191852A1 (en) | 2021-06-24 |
CN113093990B (en) | 2024-05-14 |
CN113093990A (en) | 2021-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11640262B2 (en) | Implementing variable number of bits per cell on storage devices | |
US11693768B2 (en) | Power loss data protection in a memory sub-system | |
US20240160349A1 (en) | Virtual management unit scheme for two-pass programming in a memory sub-system | |
US20240062820A1 (en) | Tracking operations performed at a memory device | |
US20230161509A1 (en) | Dynamic selection of cores for processing responses | |
US11899948B2 (en) | Performance control for a memory sub-system | |
US20220050772A1 (en) | Data block switching at a memory sub-system | |
US11263142B1 (en) | Servicing memory high priority read requests | |
US20240281372A1 (en) | Separate cores for media management of a memory sub-system | |
US11169920B2 (en) | Cache operations in a hybrid dual in-line memory module | |
US20230195350A1 (en) | Resequencing data programmed to multiple level memory cells at a memory sub-system | |
WO2022027578A1 (en) | Memory overlay using host memory buffer | |
US11934676B2 (en) | Memory command aggregation to improve sequential memory command performance | |
US12001340B2 (en) | Full multi-plane operation enablement | |
US20240231695A1 (en) | Managing retention latency for memory devices of vehicle systems | |
US11670376B2 (en) | Erasing partially-programmed memory unit | |
US11791000B2 (en) | Valid translation unit count-based memory management | |
US11868642B2 (en) | Managing trim commands in a memory sub-system | |
US11693597B2 (en) | Managing package switching based on switching parameters | |
US20230266897A1 (en) | Dynamic zone group configuration at a memory sub-system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MUCHHERLA, KISHORE KUMAR;FEELEY, PETER;RATNAM, SAMPATH K.;AND OTHERS;SIGNING DATES FROM 20201012 TO 20201208;REEL/FRAME:057939/0093 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |