USRE49162E1 - Host-controlled garbage collection - Google Patents

Host-controlled garbage collection Download PDF

Info

Publication number
USRE49162E1
USRE49162E1 US16/515,366 US201916515366A USRE49162E US RE49162 E1 USRE49162 E1 US RE49162E1 US 201916515366 A US201916515366 A US 201916515366A US RE49162 E USRE49162 E US RE49162E
Authority
US
United States
Prior art keywords
ssd
volatile solid
command
host
data
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.)
Active
Application number
US16/515,366
Inventor
Sie Pook LAW
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to US16/515,366 priority Critical patent/USRE49162E1/en
Assigned to KIOXIA CORPORATION reassignment KIOXIA CORPORATION CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: TOSHIBA MEMORY CORPORATION
Assigned to TOSHIBA MEMORY CORPORATION reassignment TOSHIBA MEMORY CORPORATION MERGER AND CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: K.K. PANGEA, TOSHIBA MEMORY CORPORATION
Application granted granted Critical
Publication of USRE49162E1 publication Critical patent/USRE49162E1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0028Serial attached SCSI [SAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0032Serial ATA [SATA]

Definitions

  • SSDs solid-state drives
  • a significant drawback of SSDs is the periodic need for garbage collection, a process by which memory blocks in an SSD are made available for storing data. Flash memory cells typically used in an SSD can be written to in units referred to as pages (which are made up of multiple flash memory cells), but can only be erased in larger units referred to as memory blocks (which are made up of multiple pages). Thus, as a host deletes or updates pages of data in a particular memory block, the memory block becomes a partially utilized block that includes a combination of pages of data that are no longer needed by the host and pages of valid data that are still needed by the host.
  • garbage collection is used, in which the pages of valid data are read and copied into a previously erased memory block, along with pages of valid data from other partially utilized blocks.
  • valid data from multiple partially utilized blocks can be consolidated into a single memory block, while the partially utilized blocks can be erased and made available for storing additional data.
  • garbage collection is performed to make memory blocks available in response to a write command, execution of the write command is slowed significantly, since existing data are read and rewritten to flash memory before the new data from the write command can be written.
  • an SSD In a personal computer, an SSD is configured to perform garbage collection as a background operation and thereby can impact SSD performance.
  • high volume write activity is commonplace, and the need for garbage collection in some or all SSDs of a large-scale data storage system can be continuous. Consequently, for an SSD that is part of a large-scale data storage system, garbage collection frequently interferes with write commands issued to that SSD. This significantly reduces the performance of the system and is highly undesirable.
  • SSDs in the array are each configured to initiate generation of additional erased memory blocks when an initiation command is received from a host or when the number of erased memory blocks in the SSD falls below a minimum threshold of erased memory blocks for the SSD. In some embodiments, the minimum threshold value is adjusted by the host.
  • a data storage device comprises a non-volatile solid-state device, and a controller.
  • the controller is configured to initiate a process for generating erased blocks when an initiation command is received from a host and to set a minimum threshold value, wherein the minimum threshold value is received from the host and indicates a number of erased blocks present in the non-volatile solid-state storage device below which the controller begins generating erased blocks in the non-volatile solid-state storage device.
  • a data storage system comprises an array of data storage devices, each data storage device including a non-volatile solid-state storage device and a controller.
  • the controller is configured to initiate a process for generating erased blocks when an initiation command is received from a host and to set a minimum threshold value, wherein the minimum threshold value is received from the host and indicates a number of erased blocks present in the non-volatile solid-state storage device below which the controller begins generating erased blocks in the non-volatile solid-state storage device.
  • a method of storing data in response to a write command from a host comprises the steps of storing data associated with the write command in a first non-volatile solid-state storage device in the array, reporting a number of available memory blocks in a second non-volatile solid-state storage device in the array while storing data associated with the write command in the first non-volatile solid-state storage device, after storing data associated with the write command in the first non-volatile solid-state device, storing data associated with the write command in the second non-volatile solid-state storage device, receiving a command from the host to initiate generation of available memory blocks in the first non-volatile solid-state storage device, and, while storing data associated with the write command in the second non-volatile solid-state storage device, initiating generation of available memory blocks in the first non-volatile solid-state storage device.
  • FIG. 1 illustrates a portion of an enterprise storage system or distributed (cloud) computing system.
  • FIG. 2 illustrates an operational diagram of a solid-state drive (SSD), configured according to one embodiment.
  • SSD solid-state drive
  • FIG. 3 schematically illustrates the various memory blocks in a flash memory device of the SSD in FIG. 2 .
  • FIG. 4 sets forth a flowchart of method steps for storing data in response to a write command from a host, according to one or more embodiments.
  • FIG. 5 sets forth a flowchart of method steps for writing data to a data storage device that includes a pool of non-volatile solid-state devices, according to one or more embodiments.
  • FIG. 1 illustrates a portion 100 of an enterprise storage system or distributed (cloud) computing system.
  • Portion 100 includes a host 110 , a host interface network 120 , and a data storage system 130 .
  • Data storage system 130 includes an array or pool of solid-state drives (SSDs) 140 A- 140 D, and is connected to a host 110 , such as a host computer or cloud computing customer, via host interface network 120 . While data storage system 130 in FIG. 1 only includes four SSDs, in large-scale data storage applications, data storage system 130 may include many more SSDs, for example 50 or more.
  • SSDs solid-state drives
  • host interface network 120 may include any technically feasible system interface, including a serial advanced technology attachment (SATA) bus, a serial attached SCSI (SAS) bus, a non-volatile memory express (NVMe) bus, and the like.
  • SATA serial advanced technology attachment
  • SAS serial attached SCSI
  • NVMe non-volatile memory express
  • each of SSDs 140 A- 140 D may be identical and in other embodiments SSDs 140 A- 140 D may form a heterogeneous array.
  • One embodiment of an SSD that may be implemented as one or more of SSDs 140 A- 140 D is described in conjunction with FIG. 2 .
  • FIG. 2 illustrates an operational diagram of an SSD 140 .
  • SSD 140 includes a drive controller 210 , a random access memory (RAM) 220 , a high-speed data path 230 , and a flash memory device 240 .
  • SSD 140 may be a data storage device included in an array of data storage devices, such as data storage system 130 in FIG. 1 .
  • High-speed data path 230 may be any high-speed bus known in the art, such as a double data rate (DDR) bus, a DDR2 bus, a DDR3 bus, or the like.
  • DDR double data rate
  • Drive controller 210 is configured to control operation of SSD 140 , and is connected to RAM 220 and flash memory device 240 via high-speed data path 230 . Drive controller 210 may also be configured to control interfacing of SSD 140 with host 110 . Some or all of the functionality of drive controller 210 may be implemented as firmware, application-specific integrated circuits, and/or a software application. In some embodiments, drive controller 210 includes a minimum erased block threshold 211 and a maximum erased block threshold 212 . In some embodiments, host 110 includes metadata 111 , which may be a file system map and/or other metadata for data stored by host 110 in data storage system 130 . Metadata 111 indicates which of SSDs 140 A- 140 D host 110 has employed to store each block of data stored in data storage system 130 . For example, metadata 111 may map each logical block address (LBA) that host 110 has stored in system 130 to a particular one of SSDs 140 A- 140 D.
  • LBA logical block address
  • Minimum erased block threshold 211 includes a value that indicates a number of erased memory blocks 243 in flash memory device 240 .
  • drive controller 210 determines that the number of erased memory blocks 243 is less than minimum erased block threshold 211 , drive controller 120 initiates generation of additional available memory blocks in flash memory device 240 , i.e., drive controller 120 performs a garbage collection process to generate additional erased memory blocks 243 .
  • maximum erased block threshold 212 includes a value that indicates a number of erased memory blocks 243 in flash memory device 240 .
  • drive controller 120 determines that the number of erased memory blocks 243 is greater than or equal to maximum erased block threshold 212 , drive controller 120 halts generation of additional available memory blocks in flash memory device 240 .
  • RAM 220 is a volatile solid-state memory device, such as a dynamic RAM (DRAM).
  • DRAM dynamic RAM
  • RAM 220 is configured for use as a data buffer for SSD 140 , temporarily storing data received from host 110 .
  • RAM 220 is configured to store a non-persistent FTL map 221 .
  • Non-persistent FTL map 221 is a data structure that maps logical block addresses (LBAs) stored in SSD 140 to respective physical memory locations (e.g., memory addresses) in flash memory device 240 .
  • LBAs logical block addresses
  • non-persistent FTL map 221 includes the most up-to-date mapping of LBAs stored in SSD 140 to physical memory locations in flash memory device 240 .
  • Latency associated with SSD 140 is reduced because reads from RAM 220 in response to a command from host 110 are generally faster than reads from flash memory device 240 .
  • Lifetime of flash memory device 240 is extended by modifying non-persistent FTL map 221 during normal operation of SSD 140 and only periodically replacing persistent FTL map 244 in flash memory device 240 ; constantly updating persistent FTL map 244 results in significant wear to the memory cells of flash memory device 240 .
  • Flash memory device 240 is a non-volatile solid-state storage medium, such as a NAND flash chip, that can be electrically erased and reprogrammed.
  • SSD 140 is illustrated in FIG. 2 as a single flash memory device 240 , but in some embodiments, SSD 140 may include multiple flash memory devices 240 .
  • Flash memory device 240 is configured to store persistent FTL map 244 , as shown. Similar to non-persistent FTL map 221 stored in RAM 220 , persistent FTL map 244 is a data structure that maps LBAs stored in SSD 140 to respective physical memory locations in flash memory device 240 . Because the contents of persistent FTL map 244 are stored in flash memory device 240 , said contents are persistent after powering down SSD 140 and after power loss to SSD 140 .
  • Flash memory device 240 includes a plurality of memory cells, typically NAND flash memory cells, that are grouped into readable and writable pages, typically 4 to 16 kB each. These pages are organized into memory blocks (typically 128 to 512 pages per block, e.g. totaling 512 kB per block), which are typically the smallest erasable unit in a NAND memory device. Because the individual pages of these memory blocks can only be directly written to when erased, an entire memory block is erased before being re-used to store new data. Thus, when an individual page of data is updated by host 110 , that page of data cannot be overwritten at the same location in flash memory device 240 .
  • memory blocks typically 128 to 512 pages per block, e.g. totaling 512 kB per block
  • flash memory device 240 includes erased memory blocks 243 , partial memory blocks 242 that are partially filled with pages of valid data and partially filled with pages of invalid or obsolete data, and full memory blocks 241 that only include pages of valid data. Examples of full memory blocks 241 , partial memory blocks 242 , and erased memory blocks 243 are described in greater detail below in conjunction with FIG. 3 .
  • persistent FTL map 244 is schematically depicted along with full memory blocks 241 , partial memory blocks 242 , and erased memory blocks 243 in flash memory device 240 .
  • persistent FTL map 244 which generally represents data, is actually stored in pages included in full memory blocks 241 and/or partial memory blocks 242 .
  • FIG. 3 schematically illustrates the various memory blocks in flash memory device 240 of SSD 140 .
  • flash memory device 240 includes full memory blocks 241 , partial memory blocks 242 , and erased memory blocks 243 .
  • Full memory blocks 241 are memory blocks that are completely filled memory blocks, and include only valid pages 251 , which are pages that include valid data stored by host 110 .
  • Full memory blocks 241 represent completely filled with valid pages 251 as a result of either a garbage collection process or of not having any pages included therein updated or deleted by host 110 after being filled with valid data.
  • Partial memory blocks 242 represent memory blocks that include a combination of valid pages 251 and invalid pages 252 , where invalid pages 252 are pages of obsolete or invalid data, such as data that have been deleted or updated by host 110 .
  • partial memory blocks 242 are formed as a result of host 110 updating and deleting data stored in valid pages 251 of a full memory block 241 .
  • Erased memory blocks 243 represent memory blocks that include only erased pages 253 .
  • erased memory blocks 243 also represent memory blocks that include only invalid pages 252 , which can be erased immediately prior to writing data to a particular erased memory block 243 without the read-erase-modify-write process associated with garbage collection.
  • full memory blocks 241 , partial memory blocks 242 , and erased memory blocks 243 are shown physically grouped with like memory blocks in flash memory device 240 .
  • each full memory block 241 , partial memory block 242 , and erased memory block 243 can be located anywhere within flash memory device 240 , and of course is not limited to being disposed adjacent to like memory blocks.
  • flash memory device 240 typically includes many more memory blocks than shown in FIG. 3 , for example hundreds or thousands of memory blocks.
  • Drive controller 210 generally requires a significant portion of the memory blocks of flash memory device 240 (20-30%, for example) to be erased memory blocks 243 during operation to facilitate garbage collection.
  • minimum erased block threshold 211 allows drive controller 210 to initiate garbage collection before drive controller 210 accepts and writes so much data to flash memory device 240 that the garbage collection process operates inefficiently (i.e., too slowly and with too much write amplification).
  • drive controller 210 uses maximum erased block threshold 212 to stop garbage collection operations, so that the number of erased memory blocks 243 in flash memory device 240 does not exceed a target fraction of flash memory device. Otherwise, without additional write and delete commands from host 110 , the garbage collection process will continue until essentially all memory blocks in flash memory are either full memory blocks 241 or erased memory blocks 243 .
  • Such aggressive garbage collection invariably involves performing garbage collection on partial memory blocks 242 that include very few invalid pages 251 , which greatly exaggerates write amplification in flash memory device 240 .
  • maximum erased block threshold 212 allows drive controller 210 to halt garbage collection before the garbage collection process operates in a regime causing too much write amplification.
  • minimum erased block threshold 211 and/or maximum erased block threshold 212 are provided by host 110 to drive controller 210 , either at startup off SSD 140 and/or during operation. In this way, host 110 can control the garbage collection process of SSD 140 based on performance of SSD 140 and/or of data storage system 130 as a whole. For example, when data storage system 130 includes a large number of other SSDs besides SSD 140 , a relatively long time interval may elapse between write commands being sent to SSD 140 . Consequently, a lower minimum erased block threshold 211 can be provided to SSD 140 , since drive controller 210 has more time to perform garbage collection and make space available in flash memory device 240 for the next write command. In such embodiments, minimum erased block threshold 211 may be set below normal over-provisioning values typically associated with operation of flash memory device 140 .
  • Over-provisioning in SSD 140 may be defined as the difference between the physical capacity of flash memory device 240 and the logical capacity presented to host 110 .
  • the additional data storage space provided by over-provisioning helps reduce write amplification, increase endurance of flash memory device 240 , and increase performance of SSD 140 .
  • over-provisioning can be implemented in flash memory device 140 .
  • NAND flash chips include at least about 7% more physical data storage capacity than what is reported to a host. This disparity is simply due to the physical capacity being reported to a host in gigabytes (1 ⁇ 10E9 bytes) even though solid-state storage device are typically assembled in powers of two, and therefore are formed in gibibytes (which are approximately 1.073 10E9 bytes). Thus, a 128 GB SSD with 0% over-provisioning would report 128,000,000,000 bytes available to the host, but would in fact include 7.037% additional memory blocks available for use during garbage collection.
  • over-provisioning may be provided inherently by an SSD manufacturer.
  • an SSD manufacturer might publish a usable size for an SSD having 128 GB of actual capacity as either 100 GB, 120 GB or 128 GB, in which case the over-provisioning for such a drive is 28%, 7% and 0%, respectively. It is noted that such over-provisioning does not generally include the additional 7.37% of capacity available from the difference between the decimal gigabytes and binary gibibytes.
  • over-provisioning may be provided from known free space on the drive, for example on the order of about 25 or 30%, to gain endurance and performance at the expense of reduced capacity of the drive.
  • free space may be identified by the host or operating system associated with an SSD using the TRIM command, which allows the SSD to be aware of memory blocks that are available for use when a host deletes data.
  • some SSDs provide a utility that permit a host to select such additional over-provisioning.
  • minimum erased memory block threshold 211 may be set below some or all of the over-provisioning levels described above.
  • host 110 can estimate the time interval during which write commands are sent to other SSDs, and therefore how much time a particular SSD has to perform garbage collection before again receiving write commands. Consequently, host 110 can reduce the value of minimum erased memory block threshold 211 , when appropriate, to implement over-provisioning as low as the 7% over-provisioning normally provided by the difference between the decimal gigabytes and binary gibibytes, a level of over-provisioning that is nominally referred to as 0% over-provisioning. In this way, when an SSD has sufficient time to generate erased memory blocks before received more write commands, the effective capacity of the SSD is significantly increased.
  • SSD 140 is configured to begin garbage collection in flash memory device 240 when an initiation command is received from host 110 .
  • host 110 can, under some or all circumstances, control when garbage collection in SSD 140 is initiated. In this way, host 110 prevents SSD 140 from initiating garbage collection while host 110 is writing to SSD 140 , which significantly reduces write performance.
  • host 110 sends write commands to SSD 140 A, which include sufficient data to convert most or all of erased memory blocks 243 of SSD 140 A to full memory blocks 241 .
  • host 110 sends a command to SSD 140 B (or any other of SSDs 140 B- 140 D) to stop garbage collection and prepare to receive data, sends write commands to SSD 140 B, and sends a garbage collection initiation command to SSD 140 A, so that SSD 140 A begins garbage collection.
  • the above-described process can then be repeated for SSDs 140 C and 140 D.
  • host 110 controls garbage collection in an SSD of data storage system 130 by halting garbage collection in the SSD shortly before sending write commands to the SSD and by initiating garbage collection in the SSD when no longer sending write commands to the SSD.
  • FIG. 4 sets forth a flowchart of method steps for storing data in response to a write command from a host, according to one or more embodiments.
  • the method steps of FIG. 4 may be performed in a data storage system that includes an array of non-volatile solid-state storage devices similar to SSD 140 .
  • the method steps are described in conjunction with SSD 140 of FIG. 2 , persons skilled in the art will understand the method steps may be performed with other types of data storage systems. While described below as performed by drive controller 210 , control algorithms for the method steps may reside in and/or be performed by a flash manager device for flash memory device 240 or any other suitable control circuit or system associated with SSD 140 .
  • a method 400 begins at step 401 , in which drive controller 210 receives values for minimum erased block threshold 211 and/or maximum erased block threshold 212 from host 110 .
  • step 402 drive controller 210 sets minimum erased block threshold 211 and/or maximum erased block threshold 212 to the values received from host 110 in step 401 .
  • step 401 and step 402 may be performed upon startup or initialization of data storage system 130 . Alternatively or additionally, step 401 and step 402 , may be performed repeatedly, for example at regular intervals or in response to particular events.
  • drive controller 210 receives a system interface command from host 110 that includes a field assigned to enable and disable SSD 140 to receive and respond to an inquiry for a number of erased memory blocks currently available in flash memory device 240 .
  • drive controller 210 receives an inquiry from host 110 for the number of erased memory blocks currently available in flash memory device 240 .
  • the inquiry may be sent as a system interface command to SSD 140 , where the system interface command includes a field assigned to prompt SSD 140 to respond to the inquiry.
  • the inquiry may be implemented as a SATA SMART Read Log command to a special log page, a SAS Log Sense command, or an NVMe Get Log Page command.
  • the system interface command may be modified with a special field for prompting drive controller to reply with the number of erased memory blocks currently available.
  • drive controller sends to host 110 the number of erased memory blocks currently available in flash memory device 240 for storing data, for example using a modified system interface command that includes a field for the number of erased memory blocks.
  • step 405 drive controller 210 receives a write command or a series of write commands from host 110 .
  • step 406 drive controller 210 begins executing the write commands received in step 405 . It is noted that because host 110 is aware of the number of erased memory blocks currently available for storing data in flash memory device 240 , in some embodiments, host 110 limits the quantity of write data sent to SSD 140 in step 406 so that the number of erased memory blocks in flash memory device 240 does not drop below minimum erased block threshold 211 .
  • step 407 which may occur after a predetermined quantity of data from the write commands have been written to flash memory device 240 , drive controller 210 checks whether an initiation command from host 110 has been received. If yes, method 400 proceeds to step 420 . If no, method 400 proceeds to step 408 .
  • step 408 drive controller 210 checks whether the number of erased blocks currently available in flash memory device 240 is less than a notification threshold that is greater than minimum erased block threshold 211 . Thus, drive controller 210 determines if the number of erased blocks currently available in flash memory device 240 is approaching minimum erased block threshold 211 .
  • the notification threshold may be based on the total number of memory blocks in flash memory device 240 (e.g., 1% of the total number of memory blocks), and in other embodiments the notification threshold may be based on minimum erased block threshold 211 . If the number of erased blocks currently available in flash memory device 240 is less than the notification threshold, method 400 proceeds to step 409 . If the number of erased blocks currently available in flash memory device 240 is equal to or greater than the notification threshold, method 400 proceeds to step 406 and continues executing the write command received in step 405 .
  • step 409 drive controller 210 notifies host 110 that minimum erased block threshold 211 is being approached and SSD 140 will soon begin garbage collection to generate additional erased memory blocks in flash memory device 140 .
  • step 410 drive controller 210 checks whether minimum erased block threshold 211 has actually been reached (i.e., is the number of erased memory blocks 243 currently available in flash memory device 240 less than minimum erased block threshold 211 ). If yes, method 400 proceeds to step 420 . If no, method 400 proceeds back to step 406 , and execution of the write command received in step 405 continues.
  • drive controller 210 begins garbage collection operations. In some embodiments, drive controller 210 continues garbage collection until the number of erased blocks in flash memory device 240 is equal to or greater than maximum erased block threshold 212 .
  • FIG. 5 sets forth a flowchart of method steps for writing data to a data storage device that includes a pool of non-volatile solid-state devices, according to one or more embodiments.
  • the method steps of FIG. 5 may be performed in a data storage system that includes an array of non-volatile solid-state storage devices, such as data storage system 130 .
  • data storage system 130 an array of non-volatile solid-state storage devices
  • FIG. 5 sets forth a flowchart of method steps for writing data to a data storage device that includes a pool of non-volatile solid-state devices, according to one or more embodiments.
  • the method steps of FIG. 5 may be performed in a data storage system that includes an array of non-volatile solid-state storage devices, such as data storage system 130 .
  • data storage system 130 an array of non-volatile solid-state storage devices
  • a method 500 begins at step 501 , in which host 110 enables host-controlled garbage collection in some or all of SDDs 140 A- 140 D.
  • host 110 sends a modified system interface command (e.g., a SATA, SAS, or NVMe command) that includes a field assigned to enable each SSD that receives the system interface command to receive and respond to an inquiry from host 110 for the number of available erased memory blocks currently in the SSD.
  • a modified system interface command e.g., a SATA, SAS, or NVMe command
  • host 110 may also send values for minimum erased block threshold 211 and/or maximum erased block threshold 212 , thereby controlling the point at which the SSDs automatically begin garbage collection (based on minimum erased block threshold 211 ) and automatically halt garbage collection (based on maximum erased block threshold 212 ). These values may be communicated to each SSD using any technically feasible approach. For example, in embodiments in which a SATA protocol is used as the system interface, host 110 may use a Set Features command that is modified with special fields, and drive controller 210 may be configured to set minimum erased block threshold 211 and maximum erased block threshold 212 based on the values in such fields.
  • host 110 may use a modified Mode Select command that is modified with special fields
  • host 110 may use a Set Features command that is modified with special fields.
  • step 502 host 110 sends an inquiry to the SSDs of data storage system 130 (i.e., SSDs 140 A- 140 D) for the number of currently erased memory blocks 243 available in each, i.e., how many erased memory block 243 in each SSD can be used to store data before the number of erased memory blocks 243 falls below minimum erased block threshold 211 .
  • minimum erased block threshold 211 may be set significantly lower than conventional over-provisioning levels.
  • step 503 host 110 receives the requested number of erased memory blocks currently in each SSD of data storage system 130 .
  • the number of erased memory blocks so received may be embedded in a modified system interface command from each SSD.
  • host 110 may issue a SATA, SAS, or NVMe command that includes a field requesting a smart log page that includes the number of erased memory blocks currently in each SSD, where information in the SMART log page is updated by drive controller 240 for each SSD. Then, in step 503 , the updated SMART log page received by host 110 .
  • step 504 host 110 selects an SSD (e.g., SSD 140 A) for receiving write commands. Initially, such as at startup of data storage system 130 , host 110 may select the SSD with the greatest number of erased memory blocks available. Subsequently, when method 500 returns to step 504 , host 110 may selects the SSD with the greatest number of erased memory blocks or the next SSD in the series of SSDs 140 A- 140 D (e.g., SSD 140 B).
  • SSD e.g., SSD 140 A
  • step 505 host 110 writes data to the selected SSD, which then stores the write data in erased memory blocks 243 in flash memory device 240 .
  • step 506 host 110 determines whether the selected SSD has reported that the minimum erased block threshold 211 is approaching, i.e., that erased memory blocks 243 in flash memory device 240 are almost exhausted. If yes, method 500 proceeds to step 508 . If no, method 500 proceeds to step 507 .
  • step 507 host 110 determines whether the quantity of data written to the selected SSD is sufficient to fill the number of erased memory blocks 243 that the selected SSD reported in step 504 . If yes, method 500 proceeds to step 508 . If no, method 500 proceeds to step 505 . In some embodiments, host 110 determines the quantity of data written to the selected SSD by monitoring a SMART log maintained by drive controller 210 of the selected SSD.
  • step 508 host 110 sends an inquiry to the next SSD in the pool (e.g., SSD 140 B) for the number of erased memory blocks 243 currently available.
  • host 110 determines the number of erased memory blocks 243 currently available in the next SSD by monitoring a SMART log maintained by drive controller 210 of that SSD.
  • step 509 host 110 receives the requested number of erased memory blocks currently in the next SSD in the pool.
  • the number of erased memory blocks so received may be embedded in a modified system interface command as described above in step 504 .
  • host 110 issues an initiation command to the selected SSD.
  • Any technically feasible approach may be used that is compatible with the particular protocol employed between host 110 and drive controller 210 , including various vendor-specific commands that can facilitate the start of garbage collection in a particular SSD.
  • host 110 may use a SMART Write log to update a flag or value in a special log page, and drive controller 210 may be configured to begin garbage collection upon detecting the updated flag or value in the special log page.
  • host 110 in step 510 host 110 also notifies the next SSD in the pool of SSDs (e.g., SSD 140 B) to halt any ongoing garbage collection operations and prepare to receive write commands.
  • host 110 may notify the next SSD in the pool of SSDs to halt ongoing garbage collection operations prior to step 510 , for example, in step 506 , when host 110 determines that the selected SSD has reported that the minimum erased block threshold 211 is approaching.
  • host 110 may notify the next SSD in the pool of SSDs to halt ongoing garbage collection operations when a specific number of erased memory blocks 243 drops below a predetermined number.
  • host 110 can write data to the SSD sufficient to utilize a portion of the erased memory blocks 243 in the flash memory device 240 of the SSD without reducing the number of erased memory blocks 243 below minimum erased memory block threshold 211 (which triggers garbage collection).
  • host 110 also monitors how many erased memory blocks are available in the next SSD of data storage system 130 (steps 508 and 509 ), host 110 can continue essentially uninterrupted writing to data storage system 130 by sending write commands to the next SSD.
  • host 110 can help tune the performance of data storage system 130 . Specifically, host 110 can dynamically adjust values for minimum erased memory block threshold 211 and maximum erased memory block threshold 212 , based on the performance of each and/or all of SSDs 140 A- 140 D. For example, in some embodiments, host 110 is configured to cycle through SSDs 140 A- 140 D individually, sending write commands to a single SSD until essentially all available erased memory blocks 243 are exhausted, then sending subsequent write commands to the next SSD until essentially all available erased memory blocks 243 are exhausted in that SSD, and so on.
  • host 110 initiates garbage collection operations in the SSD when host 110 stops sending write data to the SSD, and these garbage collection operations continue until host 110 begins writing data to the SSD again or until the maximum erased memory block threshold 212 is met or exceeded.
  • host 110 can adjust the value of maximum erased memory block threshold 212 and/or minimum erased memory block threshold 211 for a particular SSD so that more or fewer erased memory blocks 243 are available when host 110 begins writing to that SSD again. In this way, SSD performance and wear can be optimized for the current rate of data being stored and the number of SSDs in data storage system 130 .

Abstract

In an array of solid-state drives (SSDs), SSDs in the array are each configured to initiate generation of additional erased memory blocks when an initiation command is received from a host or when the number of erased memory blocks in the SSD falls below a minimum threshold of erased memory blocks for the SSD. The minimum threshold value may be adjusted by the host.

Description

CROSS-REFERENCE TO RELATED APPLICATION APPLICATIONS
Notice: More than one reissue application has been filed for the reissue of U.S. Pat. No. 9,910,622 B2. The reissue applications are U.S. patent application Ser. No. 16/515,345, filed on Jul. 18, 2019, and U.S. patent application Ser. No. 16/515,366 (the present Application), filed on Jul. 18, 2019. Both applications are reissue applications of U.S. Pat. No. 9,910,622 B2.
This application is a reissue application of U.S. Pat. No. 9,910,622 B2, issued on Mar. 6, 2018, from U.S. patent application Ser. No. 15/177,144, which is a continuation of U.S. patent application Ser. No. 14/288,208, filed on May 27, 2014 the and issued on Jul. 5, 2016, as U.S. Pat. No. 9,383,926. The entire contents of which the above-identified applications are incorporated herein by reference.
BACKGROUND
In enterprise data storage and distributed computing systems, banks or arrays of data storage devices are commonly employed to facilitate large-scale data storage for a plurality of hosts or users. Because latency is a significant issue in such computing systems, solid-state drives (SSDs) are commonly used as data storage devices, since data can be written to and read from the flash memory cells typically used in an SSD very quickly.
A significant drawback of SSDs is the periodic need for garbage collection, a process by which memory blocks in an SSD are made available for storing data. Flash memory cells typically used in an SSD can be written to in units referred to as pages (which are made up of multiple flash memory cells), but can only be erased in larger units referred to as memory blocks (which are made up of multiple pages). Thus, as a host deletes or updates pages of data in a particular memory block, the memory block becomes a partially utilized block that includes a combination of pages of data that are no longer needed by the host and pages of valid data that are still needed by the host. To make such a partially utilized block available for storing more data, garbage collection is used, in which the pages of valid data are read and copied into a previously erased memory block, along with pages of valid data from other partially utilized blocks. In this way, valid data from multiple partially utilized blocks can be consolidated into a single memory block, while the partially utilized blocks can be erased and made available for storing additional data. However, when garbage collection is performed to make memory blocks available in response to a write command, execution of the write command is slowed significantly, since existing data are read and rewritten to flash memory before the new data from the write command can be written.
In a personal computer, an SSD is configured to perform garbage collection as a background operation and thereby can impact SSD performance. In enterprise and cloud computing systems, high volume write activity is commonplace, and the need for garbage collection in some or all SSDs of a large-scale data storage system can be continuous. Consequently, for an SSD that is part of a large-scale data storage system, garbage collection frequently interferes with write commands issued to that SSD. This significantly reduces the performance of the system and is highly undesirable.
SUMMARY
One or more embodiments provide systems and methods for host-controlled garbage collection for an array of solid-state drives (SSDs). In some embodiments, SSDs in the array are each configured to initiate generation of additional erased memory blocks when an initiation command is received from a host or when the number of erased memory blocks in the SSD falls below a minimum threshold of erased memory blocks for the SSD. In some embodiments, the minimum threshold value is adjusted by the host.
A data storage device, according to embodiments, comprises a non-volatile solid-state device, and a controller. In one embodiment, the controller is configured to initiate a process for generating erased blocks when an initiation command is received from a host and to set a minimum threshold value, wherein the minimum threshold value is received from the host and indicates a number of erased blocks present in the non-volatile solid-state storage device below which the controller begins generating erased blocks in the non-volatile solid-state storage device.
A data storage system, according to embodiments, comprises an array of data storage devices, each data storage device including a non-volatile solid-state storage device and a controller. In one embodiment, the controller is configured to initiate a process for generating erased blocks when an initiation command is received from a host and to set a minimum threshold value, wherein the minimum threshold value is received from the host and indicates a number of erased blocks present in the non-volatile solid-state storage device below which the controller begins generating erased blocks in the non-volatile solid-state storage device.
Further embodiments provide a method of operating a storage device having a non-volatile solid-state device. The method comprises the steps of sending an inquiry to a first non-volatile solid-state device in the pool of non-volatile solid-state devices for a number of erased memory blocks in the first non-volatile solid-state device, receiving from the first non-volatile solid-state device the number of erased memory blocks in the first non-volatile solid-state device, writing to the first non-volatile solid-state device a quantity of data equal to or less than the number of erased memory blocks received from the first non-volatile solid-state device, in response to an acknowledgement that writing the quantity of data to the first non-volatile solid-state device has completed, sending a command to the first non-volatile solid-state device to begin generating erased memory blocks in the first non-volatile solid-state device, and, while writing the quantity of data to the first non-volatile solid-state device, sending an inquiry to a second non-volatile solid-state device in the pool of non-volatile solid-state devices for a number of erased memory blocks in the second non-volatile solid-state device.
In a data storage system that includes an array of non-volatile solid-state storage devices, further embodiments provide a method of storing data in response to a write command from a host. The method comprises the steps of storing data associated with the write command in a first non-volatile solid-state storage device in the array, reporting a number of available memory blocks in a second non-volatile solid-state storage device in the array while storing data associated with the write command in the first non-volatile solid-state storage device, after storing data associated with the write command in the first non-volatile solid-state device, storing data associated with the write command in the second non-volatile solid-state storage device, receiving a command from the host to initiate generation of available memory blocks in the first non-volatile solid-state storage device, and, while storing data associated with the write command in the second non-volatile solid-state storage device, initiating generation of available memory blocks in the first non-volatile solid-state storage device.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a portion of an enterprise storage system or distributed (cloud) computing system.
FIG. 2 illustrates an operational diagram of a solid-state drive (SSD), configured according to one embodiment.
FIG. 3 schematically illustrates the various memory blocks in a flash memory device of the SSD in FIG. 2.
FIG. 4 sets forth a flowchart of method steps for storing data in response to a write command from a host, according to one or more embodiments.
FIG. 5 sets forth a flowchart of method steps for writing data to a data storage device that includes a pool of non-volatile solid-state devices, according to one or more embodiments.
DETAILED DESCRIPTION
FIG. 1 illustrates a portion 100 of an enterprise storage system or distributed (cloud) computing system. Portion 100 includes a host 110, a host interface network 120, and a data storage system 130. Data storage system 130 includes an array or pool of solid-state drives (SSDs) 140A-140D, and is connected to a host 110, such as a host computer or cloud computing customer, via host interface network 120. While data storage system 130 in FIG. 1 only includes four SSDs, in large-scale data storage applications, data storage system 130 may include many more SSDs, for example 50 or more. In some embodiments, host interface network 120 may include any technically feasible system interface, including a serial advanced technology attachment (SATA) bus, a serial attached SCSI (SAS) bus, a non-volatile memory express (NVMe) bus, and the like. In some embodiments, each of SSDs 140A-140D may be identical and in other embodiments SSDs 140A-140D may form a heterogeneous array. One embodiment of an SSD that may be implemented as one or more of SSDs 140A-140D is described in conjunction with FIG. 2.
FIG. 2 illustrates an operational diagram of an SSD 140. As shown, SSD 140 includes a drive controller 210, a random access memory (RAM) 220, a high-speed data path 230, and a flash memory device 240. SSD 140 may be a data storage device included in an array of data storage devices, such as data storage system 130 in FIG. 1. High-speed data path 230 may be any high-speed bus known in the art, such as a double data rate (DDR) bus, a DDR2 bus, a DDR3 bus, or the like.
Drive controller 210 is configured to control operation of SSD 140, and is connected to RAM 220 and flash memory device 240 via high-speed data path 230. Drive controller 210 may also be configured to control interfacing of SSD 140 with host 110. Some or all of the functionality of drive controller 210 may be implemented as firmware, application-specific integrated circuits, and/or a software application. In some embodiments, drive controller 210 includes a minimum erased block threshold 211 and a maximum erased block threshold 212. In some embodiments, host 110 includes metadata 111, which may be a file system map and/or other metadata for data stored by host 110 in data storage system 130. Metadata 111 indicates which of SSDs 140A- 140 D host 110 has employed to store each block of data stored in data storage system 130. For example, metadata 111 may map each logical block address (LBA) that host 110 has stored in system 130 to a particular one of SSDs 140A-140D.
Minimum erased block threshold 211 includes a value that indicates a number of erased memory blocks 243 in flash memory device 240. When drive controller 210 determines that the number of erased memory blocks 243 is less than minimum erased block threshold 211, drive controller 120 initiates generation of additional available memory blocks in flash memory device 240, i.e., drive controller 120 performs a garbage collection process to generate additional erased memory blocks 243. Similarly, maximum erased block threshold 212 includes a value that indicates a number of erased memory blocks 243 in flash memory device 240. When drive controller 120 determines that the number of erased memory blocks 243 is greater than or equal to maximum erased block threshold 212, drive controller 120 halts generation of additional available memory blocks in flash memory device 240.
RAM 220 is a volatile solid-state memory device, such as a dynamic RAM (DRAM). RAM 220 is configured for use as a data buffer for SSD 140, temporarily storing data received from host 110. In addition, RAM 220 is configured to store a non-persistent FTL map 221. Non-persistent FTL map 221 is a data structure that maps logical block addresses (LBAs) stored in SSD 140 to respective physical memory locations (e.g., memory addresses) in flash memory device 240. To reduce latency associated with SSD 140 and to extend the lifetime of flash memory device 240, non-persistent FTL map 221 includes the most up-to-date mapping of LBAs stored in SSD 140 to physical memory locations in flash memory device 240. Latency associated with SSD 140 is reduced because reads from RAM 220 in response to a command from host 110 are generally faster than reads from flash memory device 240. Lifetime of flash memory device 240 is extended by modifying non-persistent FTL map 221 during normal operation of SSD 140 and only periodically replacing persistent FTL map 244 in flash memory device 240; constantly updating persistent FTL map 244 results in significant wear to the memory cells of flash memory device 240.
Flash memory device 240 is a non-volatile solid-state storage medium, such as a NAND flash chip, that can be electrically erased and reprogrammed. For clarity, SSD 140 is illustrated in FIG. 2 as a single flash memory device 240, but in some embodiments, SSD 140 may include multiple flash memory devices 240. Flash memory device 240 is configured to store persistent FTL map 244, as shown. Similar to non-persistent FTL map 221 stored in RAM 220, persistent FTL map 244 is a data structure that maps LBAs stored in SSD 140 to respective physical memory locations in flash memory device 240. Because the contents of persistent FTL map 244 are stored in flash memory device 240, said contents are persistent after powering down SSD 140 and after power loss to SSD 140.
Flash memory device 240 includes a plurality of memory cells, typically NAND flash memory cells, that are grouped into readable and writable pages, typically 4 to 16 kB each. These pages are organized into memory blocks (typically 128 to 512 pages per block, e.g. totaling 512 kB per block), which are typically the smallest erasable unit in a NAND memory device. Because the individual pages of these memory blocks can only be directly written to when erased, an entire memory block is erased before being re-used to store new data. Thus, when an individual page of data is updated by host 110, that page of data cannot be overwritten at the same location in flash memory device 240. Instead, the page of data is written to a different location in flash memory device 240 (typically in a completely different memory block), and non-persistent FTL map 221 is updated accordingly. Consequently, during normal operation flash memory device 240 includes erased memory blocks 243, partial memory blocks 242 that are partially filled with pages of valid data and partially filled with pages of invalid or obsolete data, and full memory blocks 241 that only include pages of valid data. Examples of full memory blocks 241, partial memory blocks 242, and erased memory blocks 243 are described in greater detail below in conjunction with FIG. 3.
In FIG. 2, persistent FTL map 244 is schematically depicted along with full memory blocks 241, partial memory blocks 242, and erased memory blocks 243 in flash memory device 240. In practice persistent FTL map 244, which generally represents data, is actually stored in pages included in full memory blocks 241 and/or partial memory blocks 242.
FIG. 3 schematically illustrates the various memory blocks in flash memory device 240 of SSD 140. As shown, flash memory device 240 includes full memory blocks 241, partial memory blocks 242, and erased memory blocks 243. Full memory blocks 241 are memory blocks that are completely filled memory blocks, and include only valid pages 251, which are pages that include valid data stored by host 110. Full memory blocks 241 represent completely filled with valid pages 251 as a result of either a garbage collection process or of not having any pages included therein updated or deleted by host 110 after being filled with valid data. Partial memory blocks 242 represent memory blocks that include a combination of valid pages 251 and invalid pages 252, where invalid pages 252 are pages of obsolete or invalid data, such as data that have been deleted or updated by host 110. Generally, partial memory blocks 242 are formed as a result of host 110 updating and deleting data stored in valid pages 251 of a full memory block 241. Erased memory blocks 243 represent memory blocks that include only erased pages 253. Alternatively, in some embodiments, erased memory blocks 243 also represent memory blocks that include only invalid pages 252, which can be erased immediately prior to writing data to a particular erased memory block 243 without the read-erase-modify-write process associated with garbage collection.
For conceptual clarity, full memory blocks 241, partial memory blocks 242, and erased memory blocks 243 are shown physically grouped with like memory blocks in flash memory device 240. In reality, each full memory block 241, partial memory block 242, and erased memory block 243 can be located anywhere within flash memory device 240, and of course is not limited to being disposed adjacent to like memory blocks. Furthermore, flash memory device 240 typically includes many more memory blocks than shown in FIG. 3, for example hundreds or thousands of memory blocks. Drive controller 210 generally requires a significant portion of the memory blocks of flash memory device 240 (20-30%, for example) to be erased memory blocks 243 during operation to facilitate garbage collection. This is because the garbage collection process can become very inefficient due to exaggerated write amplification when flash memory device 240 has an inadequate number of erased memory blocks 243 available. Specifically, write amplification increases wear on flash memory device 240 and extends the duration of the garbage collection process. Consequently, in operation, drive controller 210 uses minimum erased block threshold 211 so that garbage collection (i.e., the generation of additional erased memory blocks 243) begins when the number of erased memory blocks 243 in flash memory device 240 is below minimum erased block threshold 211. Thus, minimum erased block threshold 211 allows drive controller 210 to initiate garbage collection before drive controller 210 accepts and writes so much data to flash memory device 240 that the garbage collection process operates inefficiently (i.e., too slowly and with too much write amplification).
Similarly, drive controller 210 uses maximum erased block threshold 212 to stop garbage collection operations, so that the number of erased memory blocks 243 in flash memory device 240 does not exceed a target fraction of flash memory device. Otherwise, without additional write and delete commands from host 110, the garbage collection process will continue until essentially all memory blocks in flash memory are either full memory blocks 241 or erased memory blocks 243. Such aggressive garbage collection invariably involves performing garbage collection on partial memory blocks 242 that include very few invalid pages 251, which greatly exaggerates write amplification in flash memory device 240. Thus, maximum erased block threshold 212 allows drive controller 210 to halt garbage collection before the garbage collection process operates in a regime causing too much write amplification.
In some embodiments, minimum erased block threshold 211 and/or maximum erased block threshold 212 are provided by host 110 to drive controller 210, either at startup off SSD 140 and/or during operation. In this way, host 110 can control the garbage collection process of SSD 140 based on performance of SSD 140 and/or of data storage system 130 as a whole. For example, when data storage system 130 includes a large number of other SSDs besides SSD 140, a relatively long time interval may elapse between write commands being sent to SSD 140. Consequently, a lower minimum erased block threshold 211 can be provided to SSD 140, since drive controller 210 has more time to perform garbage collection and make space available in flash memory device 240 for the next write command. In such embodiments, minimum erased block threshold 211 may be set below normal over-provisioning values typically associated with operation of flash memory device 140.
Over-provisioning in SSD 140 may be defined as the difference between the physical capacity of flash memory device 240 and the logical capacity presented to host 110. During garbage collection and/or wear-leveling in flash memory device 240, the additional data storage space provided by over-provisioning helps reduce write amplification, increase endurance of flash memory device 240, and increase performance of SSD 140. There are several ways in which over-provisioning can be implemented in flash memory device 140.
First, NAND flash chips include at least about 7% more physical data storage capacity than what is reported to a host. This disparity is simply due to the physical capacity being reported to a host in gigabytes (1×10E9 bytes) even though solid-state storage device are typically assembled in powers of two, and therefore are formed in gibibytes (which are approximately 1.073 10E9 bytes). Thus, a 128 GB SSD with 0% over-provisioning would report 128,000,000,000 bytes available to the host, but would in fact include 7.037% additional memory blocks available for use during garbage collection.
Second, over-provisioning may be provided inherently by an SSD manufacturer. For example, an SSD manufacturer might publish a usable size for an SSD having 128 GB of actual capacity as either 100 GB, 120 GB or 128 GB, in which case the over-provisioning for such a drive is 28%, 7% and 0%, respectively. It is noted that such over-provisioning does not generally include the additional 7.37% of capacity available from the difference between the decimal gigabytes and binary gibibytes.
Third, over-provisioning may be provided from known free space on the drive, for example on the order of about 25 or 30%, to gain endurance and performance at the expense of reduced capacity of the drive. For example, such free space may be identified by the host or operating system associated with an SSD using the TRIM command, which allows the SSD to be aware of memory blocks that are available for use when a host deletes data. Alternatively, some SSDs provide a utility that permit a host to select such additional over-provisioning.
As noted, the value of minimum erased memory block threshold 211 may be set below some or all of the over-provisioning levels described above. When host 110 is coupled to an array of SSDs, such as data storage system 130, host 110 can estimate the time interval during which write commands are sent to other SSDs, and therefore how much time a particular SSD has to perform garbage collection before again receiving write commands. Consequently, host 110 can reduce the value of minimum erased memory block threshold 211, when appropriate, to implement over-provisioning as low as the 7% over-provisioning normally provided by the difference between the decimal gigabytes and binary gibibytes, a level of over-provisioning that is nominally referred to as 0% over-provisioning. In this way, when an SSD has sufficient time to generate erased memory blocks before received more write commands, the effective capacity of the SSD is significantly increased.
According to one or more embodiments, SSD 140 is configured to begin garbage collection in flash memory device 240 when an initiation command is received from host 110. Thus, host 110 can, under some or all circumstances, control when garbage collection in SSD 140 is initiated. In this way, host 110 prevents SSD 140 from initiating garbage collection while host 110 is writing to SSD 140, which significantly reduces write performance. For example, in the embodiment illustrated in FIG. 1, host 110 sends write commands to SSD 140A, which include sufficient data to convert most or all of erased memory blocks 243 of SSD 140A to full memory blocks 241. Then, host 110 sends a command to SSD 140B (or any other of SSDs 140B-140D) to stop garbage collection and prepare to receive data, sends write commands to SSD 140B, and sends a garbage collection initiation command to SSD 140A, so that SSD 140A begins garbage collection. The above-described process can then be repeated for SSDs 140C and 140D. Thus, host 110 controls garbage collection in an SSD of data storage system 130 by halting garbage collection in the SSD shortly before sending write commands to the SSD and by initiating garbage collection in the SSD when no longer sending write commands to the SSD.
FIG. 4 sets forth a flowchart of method steps for storing data in response to a write command from a host, according to one or more embodiments. The method steps of FIG. 4 may be performed in a data storage system that includes an array of non-volatile solid-state storage devices similar to SSD 140. Although the method steps are described in conjunction with SSD 140 of FIG. 2, persons skilled in the art will understand the method steps may be performed with other types of data storage systems. While described below as performed by drive controller 210, control algorithms for the method steps may reside in and/or be performed by a flash manager device for flash memory device 240 or any other suitable control circuit or system associated with SSD 140.
As shown, a method 400 begins at step 401, in which drive controller 210 receives values for minimum erased block threshold 211 and/or maximum erased block threshold 212 from host 110. In step 402, drive controller 210 sets minimum erased block threshold 211 and/or maximum erased block threshold 212 to the values received from host 110 in step 401. In some embodiments, step 401 and step 402 may be performed upon startup or initialization of data storage system 130. Alternatively or additionally, step 401 and step 402, may be performed repeatedly, for example at regular intervals or in response to particular events. In some embodiments, prior to step 401, drive controller 210 receives a system interface command from host 110 that includes a field assigned to enable and disable SSD 140 to receive and respond to an inquiry for a number of erased memory blocks currently available in flash memory device 240.
In step 403, drive controller 210 receives an inquiry from host 110 for the number of erased memory blocks currently available in flash memory device 240. The inquiry may be sent as a system interface command to SSD 140, where the system interface command includes a field assigned to prompt SSD 140 to respond to the inquiry. For example, the inquiry may be implemented as a SATA SMART Read Log command to a special log page, a SAS Log Sense command, or an NVMe Get Log Page command. In some embodiments, the system interface command may be modified with a special field for prompting drive controller to reply with the number of erased memory blocks currently available. In step 404, drive controller sends to host 110 the number of erased memory blocks currently available in flash memory device 240 for storing data, for example using a modified system interface command that includes a field for the number of erased memory blocks.
In step 405, drive controller 210 receives a write command or a series of write commands from host 110. In step 406, drive controller 210 begins executing the write commands received in step 405. It is noted that because host 110 is aware of the number of erased memory blocks currently available for storing data in flash memory device 240, in some embodiments, host 110 limits the quantity of write data sent to SSD 140 in step 406 so that the number of erased memory blocks in flash memory device 240 does not drop below minimum erased block threshold 211.
In step 407, which may occur after a predetermined quantity of data from the write commands have been written to flash memory device 240, drive controller 210 checks whether an initiation command from host 110 has been received. If yes, method 400 proceeds to step 420. If no, method 400 proceeds to step 408.
In step 408, drive controller 210 checks whether the number of erased blocks currently available in flash memory device 240 is less than a notification threshold that is greater than minimum erased block threshold 211. Thus, drive controller 210 determines if the number of erased blocks currently available in flash memory device 240 is approaching minimum erased block threshold 211. In some embodiments, the notification threshold may be based on the total number of memory blocks in flash memory device 240 (e.g., 1% of the total number of memory blocks), and in other embodiments the notification threshold may be based on minimum erased block threshold 211. If the number of erased blocks currently available in flash memory device 240 is less than the notification threshold, method 400 proceeds to step 409. If the number of erased blocks currently available in flash memory device 240 is equal to or greater than the notification threshold, method 400 proceeds to step 406 and continues executing the write command received in step 405.
In step 409, drive controller 210 notifies host 110 that minimum erased block threshold 211 is being approached and SSD 140 will soon begin garbage collection to generate additional erased memory blocks in flash memory device 140. In step 410, drive controller 210 checks whether minimum erased block threshold 211 has actually been reached (i.e., is the number of erased memory blocks 243 currently available in flash memory device 240 less than minimum erased block threshold 211). If yes, method 400 proceeds to step 420. If no, method 400 proceeds back to step 406, and execution of the write command received in step 405 continues.
In step 420, drive controller 210 begins garbage collection operations. In some embodiments, drive controller 210 continues garbage collection until the number of erased blocks in flash memory device 240 is equal to or greater than maximum erased block threshold 212.
FIG. 5 sets forth a flowchart of method steps for writing data to a data storage device that includes a pool of non-volatile solid-state devices, according to one or more embodiments. The method steps of FIG. 5 may be performed in a data storage system that includes an array of non-volatile solid-state storage devices, such as data storage system 130. Although the method steps are described in conjunction with data storage system 130 of FIG. 1, persons skilled in the art will understand the method steps may be performed with other types of data storage systems. While described herein as performed by host 110, control algorithms for the method steps may reside in and/or be performed by an operating system or any other suitable control circuit or system associated with data storage system 130.
As shown, a method 500 begins at step 501, in which host 110 enables host-controlled garbage collection in some or all of SDDs 140A-140D. For example, in some embodiments, host 110 sends a modified system interface command (e.g., a SATA, SAS, or NVMe command) that includes a field assigned to enable each SSD that receives the system interface command to receive and respond to an inquiry from host 110 for the number of available erased memory blocks currently in the SSD. In some embodiments, in step 501 host 110 may also send values for minimum erased block threshold 211 and/or maximum erased block threshold 212, thereby controlling the point at which the SSDs automatically begin garbage collection (based on minimum erased block threshold 211) and automatically halt garbage collection (based on maximum erased block threshold 212). These values may be communicated to each SSD using any technically feasible approach. For example, in embodiments in which a SATA protocol is used as the system interface, host 110 may use a Set Features command that is modified with special fields, and drive controller 210 may be configured to set minimum erased block threshold 211 and maximum erased block threshold 212 based on the values in such fields. Similarly, in embodiments in which a SAS protocol is used as the system interface, host 110 may use a modified Mode Select command that is modified with special fields, and in embodiments in which an NVMe protocol is used as the system interface, host 110 may use a Set Features command that is modified with special fields.
In step 502, host 110 sends an inquiry to the SSDs of data storage system 130 (i.e., SSDs 140A-140D) for the number of currently erased memory blocks 243 available in each, i.e., how many erased memory block 243 in each SSD can be used to store data before the number of erased memory blocks 243 falls below minimum erased block threshold 211. It is noted that minimum erased block threshold 211 may be set significantly lower than conventional over-provisioning levels.
In step 503, host 110 receives the requested number of erased memory blocks currently in each SSD of data storage system 130. In some embodiments, the number of erased memory blocks so received may be embedded in a modified system interface command from each SSD. For example, in step 502, host 110 may issue a SATA, SAS, or NVMe command that includes a field requesting a smart log page that includes the number of erased memory blocks currently in each SSD, where information in the SMART log page is updated by drive controller 240 for each SSD. Then, in step 503, the updated SMART log page received by host 110.
In step 504, host 110 selects an SSD (e.g., SSD 140A) for receiving write commands. Initially, such as at startup of data storage system 130, host 110 may select the SSD with the greatest number of erased memory blocks available. Subsequently, when method 500 returns to step 504, host 110 may selects the SSD with the greatest number of erased memory blocks or the next SSD in the series of SSDs 140A-140D (e.g., SSD 140B).
In step 505, host 110 writes data to the selected SSD, which then stores the write data in erased memory blocks 243 in flash memory device 240. In step 506, host 110 determines whether the selected SSD has reported that the minimum erased block threshold 211 is approaching, i.e., that erased memory blocks 243 in flash memory device 240 are almost exhausted. If yes, method 500 proceeds to step 508. If no, method 500 proceeds to step 507.
In step 507, host 110 determines whether the quantity of data written to the selected SSD is sufficient to fill the number of erased memory blocks 243 that the selected SSD reported in step 504. If yes, method 500 proceeds to step 508. If no, method 500 proceeds to step 505. In some embodiments, host 110 determines the quantity of data written to the selected SSD by monitoring a SMART log maintained by drive controller 210 of the selected SSD.
In step 508, host 110 sends an inquiry to the next SSD in the pool (e.g., SSD 140B) for the number of erased memory blocks 243 currently available. In some embodiments, host 110 determines the number of erased memory blocks 243 currently available in the next SSD by monitoring a SMART log maintained by drive controller 210 of that SSD. In step 509, host 110 receives the requested number of erased memory blocks currently in the next SSD in the pool. In some embodiments, the number of erased memory blocks so received may be embedded in a modified system interface command as described above in step 504.
In step 510, host 110 issues an initiation command to the selected SSD. Any technically feasible approach may be used that is compatible with the particular protocol employed between host 110 and drive controller 210, including various vendor-specific commands that can facilitate the start of garbage collection in a particular SSD. For example, in embodiments in which a SATA protocol is used as the system interface, host 110 may use a SMART Write log to update a flag or value in a special log page, and drive controller 210 may be configured to begin garbage collection upon detecting the updated flag or value in the special log page. Alternatively, a modified TRIM command may be issued by host 110 that includes a special flag or other indicator that drive controller 210 is configured to recognize as a signal to begin garbage collection (e.g., LBA and length=0). In embodiments in which a SAS protocol is used as the system interface, host 110 may send a Send Diagnostic command or an Unmap command that includes a special indicator (e.g., LBA and length=0) to initiate garbage collection.
In some embodiments, in step 510 host 110 also notifies the next SSD in the pool of SSDs (e.g., SSD 140B) to halt any ongoing garbage collection operations and prepare to receive write commands. In other embodiments, host 110 may notify the next SSD in the pool of SSDs to halt ongoing garbage collection operations prior to step 510, for example, in step 506, when host 110 determines that the selected SSD has reported that the minimum erased block threshold 211 is approaching. Alternatively, host 110 may notify the next SSD in the pool of SSDs to halt ongoing garbage collection operations when a specific number of erased memory blocks 243 drops below a predetermined number.
Thus, by monitoring how many erased memory blocks are available in an SSD of data storage system 130 before and/or during the execution of a write command to the SSD, host 110 can write data to the SSD sufficient to utilize a portion of the erased memory blocks 243 in the flash memory device 240 of the SSD without reducing the number of erased memory blocks 243 below minimum erased memory block threshold 211 (which triggers garbage collection). In addition, because host 110 also monitors how many erased memory blocks are available in the next SSD of data storage system 130 (steps 508 and 509), host 110 can continue essentially uninterrupted writing to data storage system 130 by sending write commands to the next SSD.
Furthermore, host 110 can help tune the performance of data storage system 130. Specifically, host 110 can dynamically adjust values for minimum erased memory block threshold 211 and maximum erased memory block threshold 212, based on the performance of each and/or all of SSDs 140A-140D. For example, in some embodiments, host 110 is configured to cycle through SSDs 140A-140D individually, sending write commands to a single SSD until essentially all available erased memory blocks 243 are exhausted, then sending subsequent write commands to the next SSD until essentially all available erased memory blocks 243 are exhausted in that SSD, and so on. As described above in step 510, host 110 initiates garbage collection operations in the SSD when host 110 stops sending write data to the SSD, and these garbage collection operations continue until host 110 begins writing data to the SSD again or until the maximum erased memory block threshold 212 is met or exceeded. Depending on the number of SSDs in data storage system 130 and on the average rate of data being written to data storage system 130, host 110 can adjust the value of maximum erased memory block threshold 212 and/or minimum erased memory block threshold 211 for a particular SSD so that more or fewer erased memory blocks 243 are available when host 110 begins writing to that SSD again. In this way, SSD performance and wear can be optimized for the current rate of data being stored and the number of SSDs in data storage system 130.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.

Claims (19)

I claim:
1. A host computing device connectable to a data storage device and including a data storage storing a control algorithm to cause the host computing device to carry out a method of writing data to the data storage device, which includes a pool of non-volatile solid-state devices, the method comprising:
sending an inquiry to a first non-volatile solid-state device in the pool of non-volatile solid-state devices for a number of erased memory blocks in the first non-volatile solid-state device;
after receiving from the first non-volatile solid-state device the number of erased memory blocks in the first non-volatile solid-state device, writing to the first non-volatile solid-state device a quantity of data equal to or less than the number of erased memory blocks received from the first non-volatile solid-state device;
in response to an acknowledgement that writing the quantity of data to the first non-volatile solid-state device has completed, sending a command to the first non-volatile solid-state device to begin generating erased memory blocks in the first non-volatile solid-state device; and
while writing the quantity of data to the first non-volatile solid-state device, sending an inquiry to a second non-volatile solid-state device in the pool of non-volatile solid-state devices for a number of erased memory blocks in the second non-volatile solid-state device.
2. The host computing device of claim 1, wherein the method further comprises:
upon receiving from the first non-volatile solid-state device a notification that a number of erased memory blocks currently present in the first non-volatile solid-state storage device is less than a notification threshold, sending a command to the first non-volatile solid-state device to begin generating erased memory blocks in the first non-volatile solid-state device.
3. The host computing device of claim 2, wherein the notification threshold corresponds to a number of erased memory blocks in the first non-volatile solid-state storage device that is greater than a minimum threshold value of erased memory blocks at which the controller begins generating erased blocks in the first non-volatile solid-state storage device.
4. The host computing device of claim 3, wherein the method further comprises, prior to sending the inquiry to the first non-volatile solid-state device, sending the minimum threshold value to the first non-volatile solid-state device.
5. The host computing device of claim 2, wherein the method further comprises, while writing the quantity of data to the first non-volatile solid-state device, turning into a state for receiving from the second non-volatile solid-state device the number of erased memory blocks in the second non-volatile solid-state device.
6. The host computing device of claim 5, wherein the method further comprises, in response to the acknowledgement that writing the quantity of data to the first non-volatile solid-state device has completed, writing to the second non-volatile solid-state device a quantity of data equal to or less than the number of erased memory blocks received from the second non-volatile solid-state device.
7. The host computing device of claim 1, wherein the method further comprises, prior to sending the inquiry to the first non-volatile solid-state device, enabling the first non-volatile solid-state device to receive and respond to the inquiry.
8. The host computing device of claim 7, wherein enabling the first non-volatile solid-state device to receive and respond to the inquiry comprises sending a system interface command to the first non-volatile solid-state device, the system interface command including a field assigned to enable the first non-volatile solid-state device to receive and respond to the inquiry.
9. The host computing device of claim 8, wherein the system interface command comprises one of a Serial Advanced Technology Attachment (SATA) command, a Serial Attached Small Computer System Interface (SAS) command, or a Non-Volatile Memory Express (NVMe) command.
10. A computing system, comprising:
a host interface being configured to couple with a solid-state storage device;
a host computer coupled with the solid-state storage device via the host interface,
wherein the solid-state storage device includes an array of solid-state drives (SSDs), the array of SSDs including a first SSD and a second SSD, and the host computer is configured to:
issue a first command to at least one SSD to request that the at least one SSD notify the host device of an amount of available area to write data in the at least one SSD, the first command being not issued for carrying out data writing from the host device to the at least one SSD;
identify an SSD that has a greater amount of available area among the array of SSDs, the identified SSD being the first SSD;
issue a second command to the first SSD, the second command being a command with which a first amount of data is to be transmitted to the first SSD; and
before transmitting the first amount of data to the first SSD is completed, issue a third command to the second SSD, the third command being a command to stop a garbage collection in the second SSD.
11. The computing system according to claim 10, wherein the host computer is further configured to:
transmit the first amount of data to the first SSD and issue the third command to the second SSD in parallel.
12. The computing system according to claim 10, wherein the host computer is further configured to:
after issuing the third command to the second SSD, issue a fourth command to the second SSD, the fourth command being a command with which a second amount of data is to be transmitted to the second SSD.
13. The computing system according to claim 10, wherein the host computer is further configured to:
issue a fifth command to the first SSD to request that the first SSD notify the host device of an amount of available area to write data in the first SSD, wherein the fifth command is not issued for carrying out data writing from the host device to the first SSD; and
determine a timing to issue the third command to the second SSD according to the notified amount of available area to write data in the first SSD.
14. The computing system according to claim 10, when identifying an SSD that has a greater amount of available area among the array of SSDs, the host computer is configured to:
identify an SSD that has a greatest amount of erased memory area available among the array of SSDs.
15. The computing system according to claim 10, wherein the host computer is further configured to:
issue a sixth command to the first SSD to set a first threshold value to enable the first SSD to start a garbage collection when the amount of available area to write data in the first SSD becomes less than the first threshold value;
identify a first value as the first threshold value when the array of SSDs includes a first number of SSDs; and
identify a second value as the first threshold value, the second value being less than the first value, when the array of SSDs includes a second number of SSDs, the second number being larger than the first number.
16. The computing system according to claim 15, wherein the host computer is further configured to:
identify the first threshold value as a value less than an over-provisioning capacity of the first SSD.
17. The computing system according to claim 15, wherein the host computer is further configured to:
determine the first threshold value according to an average rate of data being written to the array of SSDs.
18. The computing system according to claim 15, wherein the host computer is further configured to:
issue a seventh command to set a second threshold value so that the first SSD notifies the host device when an amount of available area to write data in the first SSD becomes less than the second threshold value, the second threshold value being larger than the first threshold value.
19. The computing system according to claim 18, wherein the host computer is further configured to:
in response to a notification from the first SSD when the amount of available area to write data in the first SSD becomes less than the second threshold value,
issue an eighth command to the second SSD to suspend a garbage collection in the second SSD.
US16/515,366 2014-05-27 2019-07-18 Host-controlled garbage collection Active USRE49162E1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/515,366 USRE49162E1 (en) 2014-05-27 2019-07-18 Host-controlled garbage collection

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/288,208 US9383926B2 (en) 2014-05-27 2014-05-27 Host-controlled garbage collection
US15/177,144 US9910622B2 (en) 2014-05-27 2016-06-08 Host-controlled garbage collection
US16/515,366 USRE49162E1 (en) 2014-05-27 2019-07-18 Host-controlled garbage collection

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US15/177,144 Reissue US9910622B2 (en) 2014-05-27 2016-06-08 Host-controlled garbage collection

Publications (1)

Publication Number Publication Date
USRE49162E1 true USRE49162E1 (en) 2022-08-09

Family

ID=54701765

Family Applications (5)

Application Number Title Priority Date Filing Date
US14/288,208 Active 2034-12-17 US9383926B2 (en) 2014-05-27 2014-05-27 Host-controlled garbage collection
US15/177,144 Ceased US9910622B2 (en) 2014-05-27 2016-06-08 Host-controlled garbage collection
US15/591,392 Abandoned US20170242791A1 (en) 2014-05-27 2017-05-10 Host-controlled garbage collection
US16/515,345 Active USRE49133E1 (en) 2014-05-27 2019-07-18 Host-controlled garbage collection
US16/515,366 Active USRE49162E1 (en) 2014-05-27 2019-07-18 Host-controlled garbage collection

Family Applications Before (4)

Application Number Title Priority Date Filing Date
US14/288,208 Active 2034-12-17 US9383926B2 (en) 2014-05-27 2014-05-27 Host-controlled garbage collection
US15/177,144 Ceased US9910622B2 (en) 2014-05-27 2016-06-08 Host-controlled garbage collection
US15/591,392 Abandoned US20170242791A1 (en) 2014-05-27 2017-05-10 Host-controlled garbage collection
US16/515,345 Active USRE49133E1 (en) 2014-05-27 2019-07-18 Host-controlled garbage collection

Country Status (1)

Country Link
US (5) US9383926B2 (en)

Families Citing this family (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US10824342B2 (en) 2014-02-28 2020-11-03 Hewlett Packard Enterprise Development Lp Mapping mode shift between mapping modes that provides continuous application access to storage, wherein address range is remapped between said modes during data migration and said address range is also utilized bypass through instructions for direct access
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
JP2016122227A (en) * 2014-12-24 2016-07-07 株式会社東芝 Memory system and information processing system
US20160188233A1 (en) * 2014-12-26 2016-06-30 Mediatek Inc. Method for interrupting cleaning procedure of flash memory
US9940234B2 (en) * 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
WO2016159930A1 (en) 2015-03-27 2016-10-06 Hewlett Packard Enterprise Development Lp File migration to persistent memory
US10684954B2 (en) * 2015-04-02 2020-06-16 Hewlett Packard Enterprise Development Lp Page cache on persistent memory
US9996302B2 (en) 2015-04-03 2018-06-12 Toshiba Memory Corporation Storage device writing data on the basis of stream
US10261725B2 (en) 2015-04-10 2019-04-16 Toshiba Memory Corporation Storage system capable of invalidating data stored in a storage device thereof
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US9659619B2 (en) * 2015-05-21 2017-05-23 Sandisk Technologies Llc System and method for memory integrated circuit chip write abort indication
CN106484331B (en) * 2015-09-29 2019-04-12 华为技术有限公司 A kind of data processing method, device and flash memory device
US20170123700A1 (en) 2015-11-03 2017-05-04 Samsung Electronics Co., Ltd. Io redirection methods with cost estimation
US10254998B2 (en) * 2015-11-03 2019-04-09 Samsung Electronics Co., Ltd. Coordinated garbage collection of flash devices in a distributed storage system
US20170123975A1 (en) * 2015-11-03 2017-05-04 Samsung Electronics Co., Ltd. Centralized distributed systems and methods for managing operations
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
US20170139826A1 (en) * 2015-11-17 2017-05-18 Kabushiki Kaisha Toshiba Memory system, memory control device, and memory control method
US10229049B2 (en) 2015-12-17 2019-03-12 Toshiba Memory Corporation Storage system that performs host-initiated garbage collection
TWI584289B (en) * 2016-01-20 2017-05-21 大心電子(英屬維京群島)股份有限公司 Memory management method, memory storage device and memory control circuit unit
US9946596B2 (en) 2016-01-29 2018-04-17 Toshiba Memory Corporation Global error recovery system
US10101939B2 (en) 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
US10409719B2 (en) * 2016-03-17 2019-09-10 Samsung Electronics Co., Ltd. User configurable passive background operation
TWI610171B (en) * 2016-03-22 2018-01-01 群聯電子股份有限公司 Memory management method, memory storage device and memory control circuit unit
US10108450B2 (en) 2016-04-21 2018-10-23 Samsung Electronics Co., Ltd. Mechanism for SSDs to efficiently manage background activity with notify
US9858003B2 (en) 2016-05-02 2018-01-02 Toshiba Memory Corporation Storage system that reliably stores lower page data
US10678455B2 (en) * 2016-07-03 2020-06-09 Excelero Storage Ltd. System and method for increased efficiency thin provisioning with respect to garbage collection
US20180024751A1 (en) * 2016-07-19 2018-01-25 Western Digital Technologies, Inc. Metadata management on a storage device
KR102588113B1 (en) * 2016-11-07 2023-10-16 삼성전자주식회사 User device including storage device and trim management method thereof
US10740294B2 (en) 2017-01-12 2020-08-11 Pure Storage, Inc. Garbage collection of data blocks in a storage system with direct-mapped storage devices
US10452532B2 (en) 2017-01-12 2019-10-22 Micron Technology, Inc. Directed sanitization of memory
KR20180093152A (en) * 2017-02-09 2018-08-21 에스케이하이닉스 주식회사 Data storage device and operating method thereof
JP6765321B2 (en) * 2017-02-28 2020-10-07 キオクシア株式会社 Memory system and control method
US10353628B2 (en) 2017-04-13 2019-07-16 Samsung Electronics Co., Ltd. Opportunity window hints for background operations in SSD
JP2018181202A (en) * 2017-04-20 2018-11-15 富士通株式会社 Device, method, and program for storage control
KR20180138398A (en) * 2017-06-21 2018-12-31 에스케이하이닉스 주식회사 Memory system and operation method for the same
TWI670600B (en) 2017-09-18 2019-09-01 深圳大心電子科技有限公司 Data backup method, data recovery method and storage controller
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
KR102567140B1 (en) 2017-11-24 2023-08-16 삼성전자주식회사 Method of managing data and storage device performing the same
US10572184B2 (en) * 2018-01-11 2020-02-25 International Business Machines Corporation Garbage collection in data storage systems
CN110058794B (en) * 2018-01-19 2022-11-01 上海宝存信息科技有限公司 Data storage device for dynamically executing garbage recovery and operation method
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10621084B2 (en) * 2018-03-05 2020-04-14 International Business Machines Corporation Efficient garbage collection in the presence of block dependencies
US11379155B2 (en) 2018-05-24 2022-07-05 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US11520696B2 (en) 2018-06-28 2022-12-06 Seagate Technology Llc Segregating map data among different die sets in a non-volatile memory
US10747662B2 (en) 2018-06-29 2020-08-18 Seagate Technology Llc Staggered garbage collection unit (GCU) allocation across dies
US10795604B2 (en) 2018-07-23 2020-10-06 Western Digital Technologies, Inc. Reporting available physical storage space of non-volatile memory array
US10996886B2 (en) * 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
CN109558080B (en) * 2018-11-20 2022-04-22 宁波三星医疗电气股份有限公司 NandFlash data management method of power acquisition equipment
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
KR20200085513A (en) 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 Data Storage Device and Operation Method Thereof, Storage System Having the Same
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
KR20200114009A (en) 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 Memory controller and operating method thereof
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
CN110309078B (en) * 2019-07-02 2021-07-02 北京计算机技术及应用研究所 Host and solid-state disk collaborative garbage recycling method of full flash memory array
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11580016B2 (en) * 2019-08-30 2023-02-14 Micron Technology, Inc. Adjustable garbage collection suspension interval
US11093352B2 (en) * 2019-09-11 2021-08-17 Hewlett Packard Enterprise Development Lp Fault management in NVMe systems
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
JP2022012402A (en) * 2020-07-01 2022-01-17 キヤノン株式会社 Information processing device and control method of information processing device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
KR20220067795A (en) * 2020-11-18 2022-05-25 삼성전자주식회사 Storage device and storage system including the same
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
CN114153381A (en) * 2021-11-03 2022-03-08 尧云科技(西安)有限公司 Method for reducing write-in performance fluctuation of solid state disk
US20240069729A1 (en) * 2022-08-31 2024-02-29 Pure Storage, Inc. Optimizing Data Deletion in a Storage System

Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449625B1 (en) * 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US20060288153A1 (en) * 2005-06-21 2006-12-21 Katsuya Tanaka Storage system using flash memory
US20070030734A1 (en) * 2005-08-03 2007-02-08 Sinclair Alan W Reclaiming Data Storage Capacity in Flash Memories
US7464216B2 (en) * 2006-09-29 2008-12-09 Sandisk Corporation Method for phased garbage collection with state indicators
US20090024787A1 (en) * 2007-07-16 2009-01-22 Samsung Electronics Co., Ltd. Data writing method and apparatus
US20100082890A1 (en) * 2008-09-30 2010-04-01 Jin Gyu Heo Method of managing a solid state drive, associated systems and implementations
US20100287217A1 (en) * 2009-04-08 2010-11-11 Google Inc. Host control of background garbage collection in a data storage device
US7899987B2 (en) 2007-05-15 2011-03-01 Sandisk Il Ltd. File storage in a computer system with diverse storage media
US20110246821A1 (en) * 2010-03-30 2011-10-06 International Business Machines Corporation Reliability scheme using hybrid ssd/hdd replication with log structured management
US20120072639A1 (en) * 2010-09-20 2012-03-22 Seagate Technology Llc Selection of Units for Garbage Collection in Flash Memory
US8375158B2 (en) * 2008-02-29 2013-02-12 Samsung Electronics Co., Ltd. Memory system and block merge method
US20130166822A1 (en) * 2011-12-23 2013-06-27 International Business Machines Corporation Solid-state storage management
US20130268731A1 (en) 2011-10-10 2013-10-10 James A. Boyd Host Controlled Hybrid Storage Device
US20140013032A1 (en) * 2012-07-03 2014-01-09 Research & Business Foundation Sungkyunkwan University Method and apparatus for controlling writing data in storage unit based on nand flash memory
US20140082276A1 (en) * 2012-09-19 2014-03-20 Fujitsu Limited Storage apparatus and method for controlling internal process
US20140101379A1 (en) * 2011-04-26 2014-04-10 Lsi Corporation Variable Over-Provisioning For Non-Volatile Storage
US8751727B2 (en) * 2010-03-17 2014-06-10 Sony Corporation Storage apparatus and storage system
US20140215129A1 (en) * 2013-01-28 2014-07-31 Radian Memory Systems, LLC Cooperative flash memory control
US20140281588A1 (en) * 2013-03-14 2014-09-18 Apple Inc. Generating efficient reads for a system having non-volatile memory
US20140281338A1 (en) * 2013-03-15 2014-09-18 Samsung Semiconductor Co., Ltd. Host-driven garbage collection
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US20150127889A1 (en) * 2012-05-03 2015-05-07 The-Aio Inc. Nonvolatile memory system
US20150186056A1 (en) * 2012-09-07 2015-07-02 Hitachi, Ltd. Storage device system

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449625B1 (en) * 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US20060288153A1 (en) * 2005-06-21 2006-12-21 Katsuya Tanaka Storage system using flash memory
US20070030734A1 (en) * 2005-08-03 2007-02-08 Sinclair Alan W Reclaiming Data Storage Capacity in Flash Memories
US7464216B2 (en) * 2006-09-29 2008-12-09 Sandisk Corporation Method for phased garbage collection with state indicators
US7899987B2 (en) 2007-05-15 2011-03-01 Sandisk Il Ltd. File storage in a computer system with diverse storage media
US20090024787A1 (en) * 2007-07-16 2009-01-22 Samsung Electronics Co., Ltd. Data writing method and apparatus
US8375158B2 (en) * 2008-02-29 2013-02-12 Samsung Electronics Co., Ltd. Memory system and block merge method
US20100082890A1 (en) * 2008-09-30 2010-04-01 Jin Gyu Heo Method of managing a solid state drive, associated systems and implementations
US20100287217A1 (en) * 2009-04-08 2010-11-11 Google Inc. Host control of background garbage collection in a data storage device
US8751727B2 (en) * 2010-03-17 2014-06-10 Sony Corporation Storage apparatus and storage system
US20110246821A1 (en) * 2010-03-30 2011-10-06 International Business Machines Corporation Reliability scheme using hybrid ssd/hdd replication with log structured management
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US20120072639A1 (en) * 2010-09-20 2012-03-22 Seagate Technology Llc Selection of Units for Garbage Collection in Flash Memory
US20140101379A1 (en) * 2011-04-26 2014-04-10 Lsi Corporation Variable Over-Provisioning For Non-Volatile Storage
US20130268731A1 (en) 2011-10-10 2013-10-10 James A. Boyd Host Controlled Hybrid Storage Device
US20130166822A1 (en) * 2011-12-23 2013-06-27 International Business Machines Corporation Solid-state storage management
US20150127889A1 (en) * 2012-05-03 2015-05-07 The-Aio Inc. Nonvolatile memory system
US20140013032A1 (en) * 2012-07-03 2014-01-09 Research & Business Foundation Sungkyunkwan University Method and apparatus for controlling writing data in storage unit based on nand flash memory
US20150186056A1 (en) * 2012-09-07 2015-07-02 Hitachi, Ltd. Storage device system
US20140082276A1 (en) * 2012-09-19 2014-03-20 Fujitsu Limited Storage apparatus and method for controlling internal process
US20140215129A1 (en) * 2013-01-28 2014-07-31 Radian Memory Systems, LLC Cooperative flash memory control
US20140281588A1 (en) * 2013-03-14 2014-09-18 Apple Inc. Generating efficient reads for a system having non-volatile memory
US20140281338A1 (en) * 2013-03-15 2014-09-18 Samsung Semiconductor Co., Ltd. Host-driven garbage collection

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Lee et al., "A Semi-Preemptive Garbage Collector for Solid State Drives," (ISPASS) Apr. 10-12, 2011, IEEE International Symposium, pp. 12-21 (Year: 2011). *

Also Published As

Publication number Publication date
US9910622B2 (en) 2018-03-06
US9383926B2 (en) 2016-07-05
US20160283164A1 (en) 2016-09-29
US20150347025A1 (en) 2015-12-03
US20170242791A1 (en) 2017-08-24
USRE49133E1 (en) 2022-07-12

Similar Documents

Publication Publication Date Title
USRE49162E1 (en) Host-controlled garbage collection
JP6517684B2 (en) Memory system and control method
TWI765289B (en) storage system
JP6517685B2 (en) Memory system and control method
US20150331624A1 (en) Host-controlled flash translation layer snapshot
US10430331B2 (en) Reconstruct drive for dynamic resizing
WO2014102882A1 (en) Storage apparatus and storage control method
KR102094236B1 (en) Storage device and computer system
US20160179403A1 (en) Storage controller, storage device, storage system, and semiconductor storage device
JP2019020788A (en) Memory system and control method
US20150347310A1 (en) Storage Controller and Method for Managing Metadata in a Cache Store
US20140189202A1 (en) Storage apparatus and storage apparatus control method
CN113126907B (en) Asynchronous power loss recovery for memory devices
US10223027B2 (en) Optimized garbage collection for solid-state storage devices
US10621085B2 (en) Storage system and system garbage collection method
US10459803B2 (en) Method for management tables recovery
US20150248922A1 (en) Dividing a storage procedure
US11200178B2 (en) Apparatus and method for transmitting map data in memory system
US11422930B2 (en) Controller, memory system and data processing system
JP2019179455A (en) Storage device and computer system
JP2019169101A (en) Electronic apparatus, computer system, and control method
US20200097396A1 (en) Storage system having non-volatile memory device
WO2016194979A1 (en) Storage system, storage control device, storage control method, and program
JPWO2018142622A1 (en) calculator
KR20210142863A (en) Apparatus and method for increasing operation efficiency in a memory system

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: KIOXIA CORPORATION, JAPAN

Free format text: CHANGE OF NAME;ASSIGNOR:TOSHIBA MEMORY CORPORATION;REEL/FRAME:058952/0556

Effective date: 20191001

AS Assignment

Owner name: TOSHIBA MEMORY CORPORATION, JAPAN

Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:TOSHIBA MEMORY CORPORATION;K.K. PANGEA;REEL/FRAME:059488/0459

Effective date: 20180801