System and method for host device garbage collection coordination for storage devices

The processor notifies the storage device of garbage collection instructions managed by the host to coordinate the operations of the host and the storage device, and solves the problem of difficult to coordinate the garbage collection of the host and the storage device in the prior art, and realizes more efficient storage device management.

CN119621600APending Publication Date: 2025-03-14SAMSUNG ELECTRONICS CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411236044.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-11-17
Filing Date
2024-09-04
Publication Date
2025-03-14

AI Technical Summary

Technical Problem

When existing storage devices perform garbage collection, it is difficult to coordinate information from the host and storage devices, resulting in inefficiency and increased write amplification factors.

Method used

The storage device is notified by the processor to the host managed garbage collection instructions, coordinate the operations of the host and the storage device, and avoid performing garbage collection on blocks expected to be erased, thereby improving the overall efficiency of the storage device.

Benefits of technology

By coordinating garbage collection operations of the host and storage devices, unnecessary data programming and erasing are reduced, write amplification factors are reduced, and the efficiency of storage devices is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119621600A_ABST
    Figure CN119621600A_ABST
Patent Text Reader

Abstract

A system and method for host device garbage collection coordination for storage devices is disclosed. The system may include a storage device and a processor. A processor may send a write request to a storage device. The write request may include data to be written and a reclaiming unit identifier identifying how the data is to be organized on the storage device. The processor may also send a message to the storage device regarding management of garbage collection of the recovery unit identified by the recovery unit identifier.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates generally to storage devices, and more particularly to host and device coordination. Background Art

[0002] The storage device can use information from the host to manage where data is placed. For example, if the host knows that various data can be expected to expire at about the same time, then all of that data can be placed in the same block. In this way, when the data expires, there should not be any remaining data in the block that may need to be programmed (moved to another location in the storage device) so that the block can be erased. However, the storage device may not know when the block is expected to be erased.

[0003] When performing coordinated garbage collection, coordination between the host and the storage device is still required. Summary of the invention

[0004] The processor may write data to a reclaim unit of the storage device. The processor may notify the storage device that the processor performs host-managed garbage collection on the reclaim unit. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] The drawings described below are examples of how embodiments of the present disclosure may be implemented and are not intended to limit the embodiments of the present disclosure. Various embodiments of the present disclosure may include elements not shown in a particular drawing and / or may omit elements shown in a particular drawing. The drawings are intended to provide illustrations and may not be to scale.

[0006] Figure 1 A machine including a storage device that can support host managed garbage collection according to an embodiment of the present disclosure is shown.

[0007] Figure 2 The embodiment according to the present disclosure is shown Figure 1 Details of the machine.

[0008] Figure 3 The embodiment according to the present disclosure is shown Figure 1 Details of the storage device.

[0009] Figure 4 The embodiment according to the present disclosure is shown Figure 1 A view of storage devices in the storage devices.

[0010] Figure 5 The embodiment according to the present disclosure is shown Figure 3 The garbage collection priority unit is Figure 4 Assign priorities to different recycling units.

[0011] Fig. 6A The embodiment according to the present disclosure is shown Figure 1 processor and Figure 1 Storage devices exchange messages to support host-managed garbage collection.

[0012] Figure 6B FIG. 1 shows further exchange of messages to support host managed garbage collection according to an embodiment of the present disclosure. Figure 1 processor and Figure 1 storage device.

[0013] Figure 7 It is shown that the embodiment of the present disclosure can be identified Figure 4 There are various ways to recycle the unit.

[0014] Figure 8 The implementation according to the embodiment of the present disclosure is shown Figure 4 The recycling unit of the garbage collection Figure 1 storage device.

[0015] Fig. 9 The embodiment according to the present disclosure is shown Figure 1 The processor executes Figure 4 A flow chart of an example process for host-managed garbage collection of a recycling unit.

[0016] Fig.10 The embodiment according to the present disclosure is shown Figure 1 The processor executes Figure 4 A flow chart of an example process for host-managed garbage collection of a recycling unit.

[0017] Fig.11 The embodiment according to the present disclosure is shown Figure 1 The processor from Figure 1 Request allocation of storage devices Figure 4 A flow chart of an example process for a recycling unit.

[0018] Fig.12 The embodiment according to the present disclosure is shown Figure 1 The processor determines Figure 6A-6B A flowchart of an example process for recycling unit identifiers.

[0019] Fig.13 The embodiment according to the present disclosure is shown. Figure 1 Storage devices to Figure 1 Processor notification Figure 1 The storage device is executing Figure 4 A flowchart of an example process for garbage collection of a recycling unit.

[0020] Fig.14 The embodiment according to the present disclosure is shown Figure 1Storage device support Figure 4 A flow chart of an example process for host-managed garbage collection of a recycling unit.

[0021] Fig.15 The embodiment according to the present disclosure is shown Figure 1 Storage device allocation Figure 4 A flow chart of an example process for a recycling unit.

[0022] Fig.16 The embodiment according to the present disclosure is shown Figure 1 The storage device will Figure 6A-6B The recycling unit identifier is sent to Figure 1 A flowchart of an example process for a processor of FIG.

[0023] Fig.17 The embodiment according to the present disclosure is shown Figure 1 The storage device usage log page will Figure 6A-6B The recycling unit identifier is sent to Figure 1 A flowchart of an example process for a processor of FIG.

[0024] Fig.18 The embodiment according to the present disclosure is shown Figure 1 The storage device will Figure 7 The logical address is mapped to Figure 4 A flow chart of an example process for a recycling unit.

[0025] Fig.19 The embodiment according to the present disclosure is shown Figure 1 The storage device is Figure 1 The processor has completed Figure 4 Flowchart of an example process for performing garbage collection after garbage collection on a collection unit of FIG.

[0026] Fig. 20 The embodiment according to the present disclosure is shown Figure 3 The garbage collection priority unit will Figure 5 The priority assigned to Figure 4 A flow chart of an example process for a recycling unit.

[0027] Fig.21 The embodiment according to the present disclosure is shown Figure 1 Storage device selection Figure 4 A flowchart of an example process for garbage collection by a recycling unit.

[0028] Fig. 22 The embodiment according to the present disclosure is shown Figure 1 The storage device is Figure 4 Flowchart of an example process for performing garbage collection on a collection unit of FIG. DETAILED DESCRIPTION

[0029] Reference will now be made in detail to embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. In the following detailed description, many specific details are set forth to enable a thorough understanding of the present disclosure. However, it should be understood that one of ordinary skill in the art may practice the present disclosure without these specific details. In other cases, well-known methods, processes, components, circuits, and networks are not described in detail to avoid unnecessarily obscuring aspects of the embodiments.

[0030] It should be understood that although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element. For example, without departing from the scope of the present disclosure, a first module may be referred to as a second module, and similarly, a second module may be referred to as a first module.

[0031] The terms used in the description of the present disclosure herein are only used for the purpose of describing specific embodiments and are not intended to limit the present disclosure. As used in the description of the present disclosure and the appended claims, the singular forms "one", "an" and "the" are intended to also include plural forms, unless the context clearly states otherwise. It will also be understood that the term "and / or" as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that when used in this specification, the terms "include" and / or "comprise" specify the presence of features, integers, steps, operations, elements and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or their groups. The components and features of the accompanying drawings are not necessarily drawn to scale.

[0032] When a host writes data to a storage device, the host may know or estimate how long the data is expected to survive before expiring. Therefore, the host can ask the storage device to place the data with other data that has a similar lifespan. In this way, it can be expected that all the data in a particular block may expire at about the same time, which means that when a block is selected for erasure (as part of garbage collection), there may not be any data that needs to be garbage collected (moved to another location on the storage device). If there is no data that needs to be subject to garbage collection, the overall efficiency of the storage device can be increased, and the write amplification factor (a factor that reflects the frequency with which data can be read and rewritten in a storage device without being changed) can be minimized.

[0033] For example, the host can implement a file system, a database, or other data management applications. Such applications can group data together in a unit on a storage device. For example, files in a file system can be organized in a public folder, entries in a database can be stored in a table, and the like. The host can invalidate (e.g., delete) such a data group, or can change the data stored in the data group (e.g., overwrite old data with new data). The host can choose to implement garbage collection on such a data group, thereby utilizing its knowledge of how the data is organized and how long the data is expected to remain valid. In order to perform garbage collection, the host can read existing valid data from the data group, store existing valid data in a new data group, and / or deallocate data in the data group. The garbage collection managed by this host can be coordinated with the garbage collection operation of the storage device.

[0034] Embodiments of the present disclosure may attempt to achieve these benefits by coordinating the host and storage device in garbage collection. The host may identify a block or other unit of reclamation and notify the storage device not to perform garbage collection on the block. The storage device may then attempt to avoid performing garbage collection on the block while the host decides whether the block can be deallocated. Once the host deallocates the block, the host may notify the storage device that it may perform garbage collection on the block to move any remaining valid data to a new block. By notifying the storage device that a block may be deallocated, the host may reduce the amount of activity performed by the storage device, which may help reduce the write amplification factor.

[0035] Embodiments of the present disclosure may also involve the host notifying the storage device to accelerate garbage collection on a block or reclamation unit. The host may provide the storage device with a list of logical identifiers that may be deallocated, which may accelerate garbage collection on one or more blocks.

[0036] Figure 1 A machine including a storage device that can support host-managed garbage collection according to an embodiment of the present disclosure is shown. Figure 1 In the present invention, machine 105 (which may also be referred to as a host or system) may include processor 110, memory 115, and storage device 120. Processor 110 may be any type of processor. Processor 110 may also be referred to as a host processor. Although Figure 1 A single processor 110 is shown, but machine 105 may include any number of processors, each of which may be a single-core or multi-core processor, each of which may implement a reduced instruction set computer (RISC) architecture or a complex instruction set computer (CISC) architecture (among other possibilities), and which may be mixed in any desired combination.

[0037] The processor 110 may be coupled to a memory 115. The memory 115 may be any kind of memory, such as a dynamic random access memory (DRAM), a static random access memory (SRAM), a permanent random access memory, a ferroelectric random access memory (FRAM), or a non-volatile random access memory (NVRAM), such as a magnetoresistive random access memory (MRAM), a flash memory, etc. The memory 115 may be a volatile or non-volatile memory as desired. The memory 115 may also be any desired combination of different memory types and may be managed by a memory controller 125. The memory 115 may be used to store data that may be referred to as "short-term": that is, data that is not expected to be stored for a long time. Examples of short-term data may include temporary files, data used locally by an application (which may have been copied from other storage locations), etc.

[0038] The processor 110 and the memory 115 may also support an operating system under which various applications may run. These applications may issue requests (which may also be referred to as commands) to read data from or write data to any of the memories 115 .

[0039] Storage device 120 may be used to store what may be referred to as “long-term” data: that is, data that is intended to be stored for a longer period of time, or that does not need to be stored in memory 115. Storage device 120 may be accessed using device driver 130. Although Figure 1 One storage device 120 is shown, but any number (one or more) of storage devices may be present in machine 105. Storage device 120 may also be used to store data in a persistent or non-volatile manner: that is, in a manner that retains the data even if power is no longer provided to storage device 120. This may be contrasted with, for example, memory 115, which is typically implemented using volatile memory (such as DRAM) that may lose data if power is no longer provided to memory 115.

[0040] Embodiments of the present disclosure may include any desired mechanism for communicating with the storage device 120. For example, the storage device 120 may be connected to one or more buses, such as a Peripheral Component Interconnect Express (PCIe) bus, or the storage device 120 may include an Ethernet interface or some other network interface. Other potential interfaces and / or protocols to the storage device 120 may include Non-Volatile Memory Express (NVMe), NVMe-on-Fabric (NVMe-oF), Remote Direct Memory Access (RDMA), Transmission Control Protocol / Internet Protocol (TCP / IP), Universal Flash Storage (UFS), Embedded Multimedia Card (eMMC), InfiniBand, Serial Attached Small Computer System Interface (SCSI) (SAS), Internet SCSI (iSCSI), Serial AT Attachment (SATA), and cache coherent interconnect protocols such as the Compute Express Link (CXL) protocol, as well as other possibilities.

[0041] Although Figure 1 The generic term "storage device" is used, but embodiments of the present disclosure may include any storage device format that may benefit from the use of a computational storage unit, examples of which may include hard disk drives and solid-state drives (SSDs). Any reference to "SSD" below should be understood to include such other embodiments of the present disclosure.

[0042] Figure 2 The embodiment according to the present disclosure is shown Figure 1 Details of the machine 105. Figure 2 In the present invention, generally, the machine 105 includes one or more processors 110, which may include a memory controller 120 and a clock 205, which may be used to coordinate the operation of the components of the machine. The processor 110 may also be coupled to a memory 115, which may include, by way of example, a random access memory (RAM), a read-only memory (ROM), or other state preservation medium. The processor 110 may also be coupled to a storage device 125 and a network connector 210, which may be, for example, an Ethernet connector or a wireless connector. The processor 110 may also be connected to a user interface 220 and a bus 215 to which input / output (I / O) interface ports may be attached, where components such as an I / O engine 225 may be used to manage the I / O interface ports.

[0043] Figure 3 The embodiment according to the present disclosure is shown Figure 1 Details of the storage device 120. Figure 3 In , the storage device 120 is shown as using an implementation including a solid state drive (SSD) 120, but embodiments of the present disclosure are applicable to any type of storage device that can perform garbage collection or media management, as discussed below.

[0044] SSD 120 may include interface 305. Interface 305 may be used to connect SSD 120 to Figure 1 The SSD 120 may include more than one interface 305: for example, one interface may be used for block-based read and write requests, and another interface may be used for key-value read and write requests. Figure 3 It is recommended that interface 305 is Figure 1 The physical connection between SSD 120 and machine 105 can be represented by an interface 305, but the interface 305 can also represent protocol differences that can be used across a common physical interface. For example, SSD 120 can be connected to machine 105 using a U.2, Enterprise and Data Center Standard Form Factor (EDSFF), or M.2 connector, but can support block-based requests and key-value requests: processing different types of requests can be performed by different interfaces 305. SSD 120 can also include a single interface 305, which can include multiple ports, each of which can be considered a separate interface 305.

[0045] SSD 120 may also include a host interface layer 310, which may manage interface 305. If SSD 120 includes more than one interface 305, a single host interface layer 310 may manage all interfaces, SSD 120 may include a host interface layer 310 for each interface, or some combination thereof may be used.

[0046] The SSD 120 may also include an SSD controller 315 and various flash memory chips 320-1 to 320-8, which may be organized along channels 325-1 to 325-4. The flash memory chips 320-1 to 320-8 may be collectively referred to as flash memory chips 320, and may also be referred to as flash chips 320, memory chips 320, NAND chips 320, or simply chips 320. The flash memory chips 320 may also be referred to as dies. Channels 325-1 to 325-4 may be collectively referred to as channels 325. The SSD controller 315 may manage sending read requests and write requests to the flash memory chips 320 along the channels 325. The controller 315 may also include a flash memory controller 330, which may be responsible for issuing commands to the flash memory chips 320 along the channels 325. In embodiments of the present disclosure where the storage device 120 uses a technology other than the flash memory chips 320 to store data, the flash memory controller 330 may also be more generally referred to as a memory controller 330. Although Figure 3 Eight flash memory chips 320 and four channels 325 are shown, but embodiments of the present disclosure may include any number (one or more, without constraint) of channels 325 including any number (one or more, without constraint) of flash memory chips 320 .

[0047] Within each flash memory chip or die, space can be organized into planes. These planes can include multiple erase blocks (which can also be referred to as blocks), which can be further subdivided into word lines. A word line can include one or more pages. For example, a word line for a triple-level cell (TLC) flash memory medium can include three pages, while a word line for a multi-level cell (MLC) flash memory medium can include two pages.

[0048] The erase blocks may also be logically grouped together by the controller 315, which may be referred to as a super block. This logical grouping may enable the controller 315 to manage the group as one, rather than managing each block individually. For example, a super block may include one or more erase blocks from each plane of each die in the storage device 120. Thus, for example, if the storage device 120 includes eight channels, two dies per channel, and four planes per die, a super block may include 8×2×4=64 erase blocks.

[0049] Figure 4 An abstract view of the storage provided by storage device 120 is presented. Figure 4 In, by Figure 1 The storage provided by the storage device 120 is shown as a contiguous array of pages 405-1 through 405-5, which may be collectively referred to as pages 405. Pages 405 may be organized into blocks 410-1 through 410-6, which may be collectively referred to as blocks 410. For example, block 410-1 is shown as including pages 405-1 through 405-4: blocks 410-2 through 410-6 may similarly include various pages 405. In addition, as discussed above, Figure 3 The controller 315 may organize the blocks 410 into super blocks 415 - 1 and 415 - 2 , which may be collectively referred to as super blocks 415 .

[0050] exist Figure 1 In the storage device 120 of the present invention, a page or a word line may be the smallest unit of data that can be read or written. In some embodiments of the present invention, a page or a word line may be the smallest unit for both reading or writing; in other embodiments of the present invention, a page or a word line may differ as to which is the smallest unit for reading or writing. For example, a page may be the smallest unit to be read, but a word line may be the smallest unit to be written. For example, as discussed above, a word line of a TLC flash memory medium may include three pages. All three pages may be written simultaneously to write a word line: if not enough data is available to fill all three pages, the available data may be buffered until enough data is available to write a word line. However, a single page may be read instead of an entire word line.

[0051] The page size can vary as needed: for example, a page can store approximately 2, 4, 8, or 16 kilobytes (KB) of data; other page sizes are also possible. (Note that the page size can be larger than the amount of data stored in it, because a page can also include Figure 3 The controller 315 may be used for error correction code (ECC), protection information (PI) and / or metadata for other purposes

[0052] Depend on Figure 1 The logical block address (LBA) provided by the processor 110 and used to identify data to be read or written may have a size different from the size of the page. Figure 1 The processor 110 can manage LBAs in units of 512 bytes (B) or 4KB of data. LBAs may also be referred to as sectors. If the LBA is 512B, eight sequential LBAs may be combined and managed as 4KB units. Similarly, if the LBA is 4KB, four sequential LBAs may be combined and managed as 16KB units to fill a single page. If a word line includes more than one page, additional pages may be combined to form a word line. Thus, continuing with the earlier example of a word line including three TLC pages, Figure 1 The memory device 120 may accumulate three 16KB pages to be programmed together as a word line. Figure 1 The storage device 120 may buffer sectors until enough data is available to program the word lines.

[0053] If less than a full page is to be written, the excess space in the page can be considered "unused". A wordline can include any number (one or more) of pages 405: for example, each wordline can include a power of 2 (such as two, four, or eight) pages 405, or some other number of pages 405. Blocks 410 can include any number (one or more) of wordlines: for example, blocks 410 can each include a power of 2 (such as 128 or 256) wordlines, or some other number of wordlines. Superblocks 415 can include any number (one or more) of blocks 410: for example, superblocks 415 can each include a power of 2 (such as 128 or 256) blocks 410, or some other number of blocks 410. In some embodiments of the present invention, each block 410 can include the same number of pages 405, and each superblock 415 can include the same number of blocks 410; in other embodiments of the present invention, each block 410 can include a different number of pages 405, and / or each superblock 415 can include a different number of blocks 410.

[0054] In the remainder of this document, any reference to reading or writing a page 405 may be understood to also refer to reading or writing a word line, depending on the implementation and the data cells that may be read or written.

[0055] Although page 405 can be written and read, Figure 3 The SSD 120 may not allow data to be overwritten: that is, existing data may not be replaced "in place" by new data. Instead, when data is to be updated, the new data is written Figure 3 A new page 405 is created on the SSD 120, typically on a new block 410, and the original page is invalidated (marked ready for erasure). Thus, page 405 typically has one of three states: free (ready to be written to), valid (contains valid data), and invalid (no longer contains valid data, but unusable before being erased) (the exact names of these states can vary).

[0056] Furthermore, while pages 405 can be written and read individually, blocks 410 are the basic unit of erasable data (in some embodiments of the present invention, the basic unit of erasable data is superblock 415). That is, pages are not erased individually: all pages in a block (or superblock) are typically erased at the same time. For example, if block 410 includes 256 pages 405, then all 256 pages 405 in block 410 are erased at the same time. This arrangement may result in Figure 3 Some management issues with SSD 120: If a block that still contains some valid data is selected for erasure, that valid data may need to be copied to the Figure 3 In this way, Figure 3 The SSD 120 can ensure that valid data in the block 410 selected for erasure remains in Figure 3 Copy the valid data to somewhere on the SSD 120. Figure 3 This operation of free pages on SSD 120 may be referred to as “programming” valid data.

[0057] Back to Figure 3 , because the units for writing data and erasing data are different ( Figure 4 Page 405 with Figure 4 Block 410 or Figure 4 If SSD 120 waits until a block contains only invalid data before erasing it, SSD 120 may actually run out of available storage space, even though the amount of valid data may be less than the advertised capacity of SSD 120. To avoid this, SSD controller 315 may implement a garbage collection function ( Figure 3). The function of garbage collection can be to identify blocks that contain all or most of all invalid pages and erase these blocks so that valid data can be written to them again. With reference to the three states discussed above - idle, valid, and invalid, garbage collection can be described as the process of moving blocks from an invalid state to an idle state. However, if a block selected for garbage collection includes valid data, the garbage collection logic will erase the valid data (because the erase unit is a block, not a page). To avoid such data loss, the garbage collection logic can read valid data from such a block and program the valid data into other blocks. Once the data has been programmed into the new block (and the table that maps logical block addresses to physical block addresses is updated to reflect the new location of the data), the block can be erased, returning the state of the pages in the block to the idle state.

[0058] Since programming valid data from a block selected for garbage collection may have an impact on other commands - reading data from one block and writing data to another block may temporarily delay the Figure 1 The execution of the request of the processor 110 - SSD 120 may be performed when the SSD 120 is not busy on behalf of Figure 1 That is, SSD 120 can perform garbage collection when the processor 110 of the processor 110 executes the request. Figure 1 The request of processor 110 has minimal impact when performing garbage collection.

[0059] As suggested by the above discussion, in some embodiments of the present invention, garbage collection may involve both programming valid data from blocks selected for erasure into new blocks and erasing the blocks so selected. Such embodiments of the present disclosure work well in situations where requests sent to SSD 120 are intermittent: SSD 120 may use "downtime" to ensure that the number of free pages is maximized.

[0060] But in other embodiments of the present disclosure, SSD 120 may anticipate a "steady state" of incoming requests without significant "downtime." In such embodiments of the present disclosure, garbage collection may be performed when the opportunity arises or when the number of free pages drops below a threshold, and may involve programming only valid data: only when SSD 120 is not busy executing requests from Figure 1 It may not be practical to perform garbage collection at the request of the processor 110. Then, when the SSD 120 Figure 1 When the processor 110 of the SSD 120 receives a write request, the SSD 120 may select a block that has been subject to garbage collection but has not been erased, and may erase the block before writing data to the block. The SSD 120 may be designed to keep a certain number of blocks ready to be written except when erasing is required. For example, when there are less than 100 blocks in total except when erasing is required, the SSD 120 may be configured to keep a certain number of blocks ready to be written to except when erasing is required. Figure 4 When the 256 blocks 410 are ready to be written, SSD 120 may perform garbage collection. Alternatively, the threshold value SSD 120 may use to decide when to perform garbage collection may be based on other than Figure 4 For example, SSD 120 may track Figure 4 How many SuperBlocks 415 are ready to be written (except those that need to be erased), and garbage collection can be performed as needed to ensure that there are at least Figure 4 One to four SuperBlocks 415 are ready for writing (unless they need to be erased).

[0061] This approach (which may be described as "just in time" erasing) can ensure that there are pages ready to be written pending erasures, but reduce the amount of time spent performing garbage collection (by not erasing blocks as part of garbage collection). These other embodiments of the present disclosure blur the line between the "invalid" and "idle" states somewhat, in that a page is almost "idle" pending erasure, but is erased relatively quickly as other garbage collection processes complete. Thus, a page can move from an "invalid" to an "idle" and then to a "valid" state relatively quickly. In such embodiments of the invention, a page can be considered to be in an "idle" state when it is part of a block that is ready to be erased, even if the block has not yet been erased (where the "invalid" state then means that the page no longer contains valid data, but is part of a block that includes at least one page that still contains valid data).

[0062] The SSD 120 may also have a limited number of times each cell can be written before the cell may not be trusted to correctly retain data. This number is typically measured as a count of the number of program / erase cycles that the cell has experienced. Typically, the number of program / erase cycles that a cell can support means that the SSD 120 will remain reliably functional for a reasonable period of time: for an individual user, a user may be more likely to replace the SSD 120 due to insufficient storage capacity rather than because the number of program / erase cycles has been exceeded. But in an enterprise environment where data may be written and erased more frequently, the risk of a cell exceeding its (program / erase) cycle count may be more significant. In some embodiments of the present disclosure, an estimate of the PE count or an estimate of the PE count using historical information (such as temperature, rate of recent PE activity, number of reads to the block, etc.) may be used instead of the actual P / E count of the block.

[0063] To help offset this risk, SSD controller 315 may also include a wear leveling controller ( Figure 310). Wear leveling may involve selecting data blocks to program data with based on the program / erase cycle counts of the blocks. There may also be other reasons that favor the use of particular blocks in the storage device 120. Wear leveling may be performed as part of garbage collection—to select locations where valid data will be programmed—but wear leveling may also be performed independently of garbage collection (to move data around in an attempt to balance block usage even if garbage collection is not performed). By selecting blocks with lower program / erase cycle counts to program new data, the SSD may be able to avoid increasing the program / erase cycle counts of some blocks beyond their reliable operating point. By keeping the wear of each block as close to that of other blocks as possible, the SSD can remain reliable over longer periods of time.

[0064] As mentioned above, garbage collection can involve moving data from Figure 4 A page 405 moved to Figure 4 Another page 405. Although SSD 120 can Figure 1 The processor 110 notifies that data has been received from Figure 4 405 to another page 405, but such information may be unnecessary. Figure 1 The processor 110 may not need to know that any particular data is stored in Figure 4 In contrast, the SSD controller 315 may include a flash translation layer (FTL) 335 (which may be more generally referred to as a translation layer for storage devices that do not use flash storage devices). The FTL 335 may handle LBAs or other logical IDs (such as Figure 1 FTL 335 may also be responsible for translating data from one PBA to another, such as may occur when performing garbage collection and / or wear leveling.

[0065] Because the storage device 120 may perform garbage collection or wear leveling, it may happen that certain data is written to the storage device of the storage device 120. Figure 4 For example, the data may be composed of multiple pages 405. Figure 1The processor 110 writes to the storage device 120 and is then programmed to another location when the block containing the data is subject to garbage collection or as part of wear leveling. This result of how the storage device 120 manages its data may be referred to as a write amplification factor (WAF), and may reflect the fact that the same data may be written multiple times inside the storage device 120. The WAF may only consider the number of times the storage device 120 writes the same data: if the processor 110 updates the data with new data, or if the processor 110 relocates the data from one block to another (e.g., as part of a host garbage collection), then the write triggered by the processor 110 may be considered new data for WAF purposes, and may not be considered to increase the WAF of the original data.

[0066] In an ideal world, the WAF of any data would be 1. That is, the data would be written once according to a command from processor 110, and left alone until invalidated by processor 110, at which time it could be erased. Figure 4 But the real world is not ideal: different data may be invalidated at different times, potentially leaving a gap in the storage device 120. Figure 4 The patchwork of valid data of page 405. In an attempt to optimize the use of storage device 120, garbage collection and wear leveling may result in a WAF greater than 1.

[0067] In order to attempt to reduce WAF without necessarily affecting how storage device 120 can perform garbage collection and wear leveling, storage device 120 may communicate with Figure 1 The processor 110 coordinates its garbage collection activities. For example, Figure 1 The processor 110 may know when certain data will no longer be necessary and the associated storage device may be invalidated / deallocated. For example, Figure 1 The processor 110 may start its garbage collection process for the data object. In this process, Figure 1 The processor 110 may know that it will soon deallocate the range of LBAs on the storage drive 120. However Figure 1 The processor 110 may first read valid data from some valid LBAs. After those reads, Figure 1 The processor 110 may wish to deallocate the entire range of LBAs. The storage device 120 may benefit from knowing Fig.12 The processor 110 intends to deallocate the range of LBAs so that the storage device 120 can avoid the data associated with the LBAs in the range. Figure 4 Any block 410 performs garbage collection. Figure 1By coordinating garbage collection by the processor 110, the storage device 120 may be able to avoid unnecessary data programming, which may reduce WAF and avoid unnecessary increase Figure 4 The program / erase cycle counts of each page 405 are shown.

[0068] To this end, the controller 315 may also include a garbage collection priority unit 340 and a storage device 345. The garbage collection priority unit 340 may determine the priority assigned to the storage device 120. Figure 4 The relative priority of each block 410. In general, the garbage collection priority unit 340 can be based on the relative priority of each block 410. Figure 4 Block 410 added Figure 4 The number of free pages 405 comes from Figure 4 Block 410 (or Figure 4 The controller 315 may then assign relative priorities to blocks based on the relative priorities of the blocks: blocks with higher priorities may be garbage collected before blocks with lower priorities. (Obviously, the priorities assigned to blocks may change as more pages in a block become invalid.)

[0069] But in some cases, Figure 1 The processor 110 may instruct Figure 1 The processor 110 wants to manage garbage collection of blocks. For example, Figure 1 The processor 110 may know that the data in a particular block may be invalidated in the near future. To avoid the storage device 120 selecting the block for garbage collection (which may cause the remaining valid data in the block to be written only to other free pages in the storage device 120 to be deleted soon), Figure 1 The processor 110 may notify the storage device 120 Figure 1 The processor 110 will manage garbage collection for the block. In this case, the garbage collection priority unit 340 may assign an artificially low priority to the block to prevent the block from being selected for garbage collection by the storage device 120. (Note that the storage device 120 may still want to perform garbage collection on the block. For example, if Figure 1If the processor 110 has indicated that it will manage garbage collection for all blocks on the storage device 120, the storage device 120 may still need to perform its own garbage collection to ensure that enough free blocks are available. Figure 1 If the block managed by processor 110 is the only block that will cause the number of free blocks to increase significantly, storage device 120 may still want to select this block for garbage collection. Figure 8 Further discussion Figure 1 How can the processor 110 handle the storage device 120 selection? Figure 1 The garbage collection processor 110 has indicated that it will manage the block for garbage collection.

[0070] Figure 5 The embodiment according to the present disclosure is shown Figure 3 The garbage collection priority unit 340 Figure 4 The recycling units can be subjected to the Figure 1 The storage device 120 can be erased to any desired unit of storage. Figure 4 The recovery unit is discussed further.

[0071] exist Figure 5 , garbage collection priority unit 340 may assign priority 505-1 to block 410-1 and priority 505-2 to block 410-2. In general, priorities 505-1 and 505-2 may be collectively referred to as priority 505. Priority 505-1 may indicate that block 410-1 has a relatively high priority for garbage collection purposes: for example, Figure 4 All or substantially all pages 405 of a block contain invalid data. Priority 505-2 may indicate that block 410-2 has a relatively low priority for garbage collection purposes: for example, Figure 4 Most of page 405 contains blocks of valid data, or Figure 1 The processor 110 has indicated the blocks that it will manage garbage collection.

[0072] Although the above discussion focuses on reducing Figure 1 The processor 110 will manage the priority 505 of the garbage collected block 410, but in some embodiments of the present disclosure, Figure 1 The processor 110 may also request a higher priority for garbage collection of block 410. For example, when Figure 1 When the processor 110 completes the management of the garbage collection of block 410, it may notify Figure 1 The storage device 120 block 410 may consist of Figure 1 The storage device 120 accelerates garbage collection. For example, Figure 1 The processor 110 may send Figure 1The storage device 120 sends a command requesting Figure 1 The storage device 120 deallocates the block 410. Then, even if the block 410 contains valid data, Figure 1 The storage device 120 may also assume Figure 1 The processor 110 knows what it is doing, and Figure 1 The storage device 120 may use in block 410 Figure 4 All pages 405 of are invalidated, and block 410 is immediately (or shortly thereafter) subjected to garbage collection. Figure 1 In the event that the storage device 120 does not immediately subject the block 410 to garbage collection, the garbage collection priority unit 340 may assign a high priority 505 to the block 410 so that the block 410 may be subject to garbage collection soon.

[0073] Since the relative priority of each block 410 subject to garbage collection can change - when Figure 1 The priority of processor 110 is reduced when it is performing host-managed garbage collection, or when Figure 1 The processor 110 has indicated that the block 410 is to be deallocated when the priority is increased - Figure 1 The storage device 120 may want to store information about the block 410 whose garbage collection priority has been adjusted. Return to Figure 3 , the controller 315 may further include a storage device 345. The storage device 345 may be used to store information about the assignment to Figure 4 The priority information of block 410 is specifically used to store the priority information assigned to Figure 4 The priority of block 410, Figure 1 The processor 110 has indicated that it will manage garbage collection, or Figure 1 The processor 110 has indicated that it can be deallocated (and therefore has no valid data to be programmed).

[0074] Although the above discussion focuses on Figure 1 The processor 110 manages Figure 4 410, but in general, the number of blocks in the storage device 120 may be large enough so that Figure 1 It may be inefficient for the processor 110 to manage garbage collection at the block level. Therefore, instead of managing Figure 4 The garbage collection of block 410, Figure 1 The processor 110 and the storage device 120 may use another unit such as Figure 4 Superblock 415: This unit may be more generally referred to as a recycling unit.

[0075] Return to Figure 4 , Figure 4Also shown are reclaim units 420-1 and 420-2, which may be collectively referred to as reclaim units 420. A reclaim unit may be any desired unit of storage that is subject to erasure by storage device 120. Thus, for example, reclaim unit 420 may be a block 410 or a superblock 415. In general, reclaim unit 420 may be any unit that is at least as large as the smallest unit for which garbage collection may be performed. Thus, for example, if Figure 1 If the storage device 120 can be erased at the granularity of block 410, the recycling unit 420 can be a block 410 or a superblock 415, but not a page 405. Or, if Figure 1 If the storage device 120 can be erased at the granularity of the super block 410, the recycling unit can be the super block 415, but not the page 405 or the block 410. Figure 4 In the example shown, it can be assumed that Figure 1 The storage device 120 is erased at the granularity of block 410: This example may continue throughout the remainder of this document.

[0076] In some embodiments of the present disclosure, the recycling unit 420 may overlap with the block 410 or super block 415. That is, the recycling unit 420 may each be a block 410 or a super block 415. In other embodiments of the present disclosure, the recycling unit 420 may be larger than the block 410 or super block 415. Thus, for example, the recycling unit 420-1 is shown as including the block 410-1 and 410-2 (i.e., two blocks). In general, the recycling unit 420 may have a plurality of blocks that can support the recycling of the blocks 410-1 and 410-2. Figure 1 The storage device 120 may be erased of any size.

[0077] In some embodiments, each recycling unit 420 may have the same size. For example, each recycling unit 420 may include two blocks 410. However, in other embodiments of the present disclosure, different recycling units 420 may have different sizes. For example, while recycling unit 420-1 is shown as including two blocks 410-1 and 410-2, recycling unit 420-2 is shown as including four blocks 410-3 to 410-6.

[0078] In an embodiment of the present disclosure that supports a variable-sized recycling unit 420, Figure 1 The processor 110 may provide the storage device 120 with information that may be used to select a recycling unit in which to store data. For example, consider Figure 14. In the case where the processor 110 of FIG. 40 wants to store a plurality of related data, and the total size of the data is assumed to be three megabytes (MB). If each page 405 can store 4KB of data, and each block 410 includes 256 pages 405, each block 410 can store up to 1MB of data. Therefore, three blocks 410 may be required to store all the data. When the first data of the data is received, Figure 1 The storage device 120 may not have any way to know whether to store the data in the recycling unit 420-1 or the recycling unit 420-2. Figure 1 If the storage device 120 starts storing data in the recycling unit 420-1, the recycling unit 420-1 may be full before all the data is received and stored, which means that another recycling unit 420 may be needed to store some data. Figure 1 The processor 110 notifies Figure 1 The total amount of data to be stored in the storage device 120 is 3MB, and Figure 1 The processor 110 will preferably store the data in a single recycling unit 420, then Figure 1 The storage device 120 may select the recycling unit 420-2 instead of the recycling unit 420-1 to store the data because there is enough space in the recycling unit 420-2 for all 3MB. Figure 1 The storage device 120 is selected as Figure 1 , assuming that such a recycling unit 420 is available: if all recycling units 420 of the desired size are used to store data, then Figure 1 storage device 120 may need to select a smaller or larger recycling unit 420 than desired (and Figure 1 The storage device 120 may need to partition data across multiple recycling units 420).

[0079] In some embodiments of the present disclosure, Figure 1 The storage device 120 may support recycling groups, where each recycling unit in one recycling group has one size, and where the recycling units in other recycling groups have other sizes. Such embodiments of the present disclosure may enable Figure 1 The processor 110 is capable of selecting a recycling unit of a particular size by selecting an appropriate recycling group when sending a write command to the drive. Other embodiments of the present disclosure may group recycling units together based on other properties besides the size of the recycling unit. For example, in some embodiments of the present disclosure, recycling units may be grouped based on their durability. For the purposes of this discussion, recycling groups may be called based on the attributes used to organize recycling units: thus, for example, recycling units organized based on durability may be referred to as durability groups.

[0080] The recycling unit 420 can also be dynamically allocated. That is, Figure 1 The processor 110 may request the allocation of the recycling unit 420 instead of having Figure 1 The request to allocate a reclaim unit 420 may include, for example, parameters such as the size of the reclaim unit (which may be defined in terms of bytes, KB, MB, or Gigabytes (GB), or in terms of the number of pages 405, blocks 410, or superblocks 415), and / or whether the reclaim unit 420 should be allocated from a contiguous sequence of pages 405, blocks 410, or superblocks 415, or if the pages 405, blocks 410, blocks 410, or superblocks 415 that make up the reclaim unit 420 may be scattered around the storage device 120 (in embodiments of the present disclosure where sequential read / write times may be faster than random access read / write times, whether the reclaim unit 420 is allocated as a contiguous range of physical addresses may result in performance differences, but may also impose restrictions on the pages 405, blocks 410, or superblocks 415 that are selected to allocate the reclaim unit 420).

[0081] Another parameter that may be attached to the request to allocate a recycling unit 420 may be the assigned recycling unit identifier. Figure 1 The processor 110 may specify a particular recycling unit identifier to be assigned to the recycling unit 420. For the purposes of this discussion, the term recycling unit identifier may be understood to refer to an identifier that identifies a recycling unit. Figure 6A-6B As discussed, the assignment of recycling unit identifiers Figure 1 The processor 110 may cause conflicts in recycling unit identifiers, which may need to be resolved.

[0082] In all of the above discussions, there is an implicit assumption that all flash memory chips 320 are equal. This assumption may generally be reasonable. But in some embodiments of the present disclosure, the flash memory chips 320 may not all be the same. For example, some flash memory chips 320 may store more data than other flash memory chips 320. Or, some flash memory chips 320 may be single-level cell (SLC) flash memory chips, while other flash memory chips 320 may be multi-level cell (MLC), triple-level cell (TLC), or quad-level cell (QLC) flash memory chips. Because different types of storage can provide different latencies and program / erase cycle counts—for example, a TLC flash memory chip may have slower latency than an SLC flash memory chip—there may be advantages or disadvantages to using a particular storage technology. As Figure 1 The processor 110 may provide information about the size of the recycling unit 420 to be used, Figure 1The processor 110 may provide information about what storage technology may be preferred for storing particular data. As with the variable-sized reclamation units 420, the selection of a particular storage technology to store data may depend on the availability of reclamation units 420 in that storage technology, and if the desired storage technology is not available, reclamation units 420 in other storage technologies may be required. In addition to latency or program / erase cycle counts, other attributes that may differ across different storage media may include endurance, performance, retention, error correction code support, etc.

[0083] Each recycling unit 420 may have its own identifier. As discussed below with reference to FIGS. 6-7 , the identifier assigned to a recycling unit 420 may be Figure 1 The processor 110 or Figure 1 Then, Figure 1 The processor 110 may reference the recycling unit 420 using its identifier.

[0084] exist Figure 4 In FIG. 4 , the recycling unit 420 is shown as a continuous range of pages 405. However, in some embodiments of the present disclosure, the recycling unit 420 may not be Figure 1 A continuous range of physical addresses in the storage device of the storage device 120. For example, the recycling unit 420 may include blocks 410-1 and 410-3, but does not include block 410-2 (assuming that Figure 4 The flash memory chips 320 are shown as a continuous range of physical addresses, and the arrangement of the recycling units 420 is assumed to be the same as Figure 4 In this case, reclaim unit 420 may be considered to be a union of multiple individual reclaim units, each of which itself includes a contiguous physical address range.

[0085] Figure 6A-6B The embodiment according to the present disclosure is shown Figure 1 The processor 110 and Figure 1 The storage devices 120 exchange messages to support host-managed garbage collection. Fig. 6A In the example, the processor 110 may send an allocation and recovery unit request 605 to request the storage device 120 to allocate Figure 4 Recycling unit 420. In some embodiments of the present disclosure, processor 110 may include parameters for allocating recycling unit request 605. For example, processor 110 may specify Figure 4 The size 610 of the recycling unit 420 is: that is, Figure 4 How large should the recycling unit 420 be when it is allocated. Note that in some embodiments of the present disclosure, the size 610 may only be Figure 4 The lower limit of the size of the recycling unit 420. For example, assuming Figure 4The size of each page 405 is 4KB, and Figure 4 Each block 410 includes Figure 4 405 of 256 pages. In this case, Figure 4 The size of each block 410 will be 1MB. If the size 610 is specified as, for example, 1.5MB, then Figure 4 The recycling unit 420 will need Figure 4 405 of 384 pages provide the requested size of 610. However, due to Figure 4 The block 410 may be the smallest unit that can be erased on the storage device 120, so Figure 4 The recovery unit 420 may require Figure 4 The two blocks 410 would mean Figure 4 The recovery unit 420 may include Figure 4 512 pages 405 to provide the required size 610. (If Figure 4 The super block 415 is the smallest unit that can be erased on the storage device 120, and is included in Figure 4 The recovery unit 420 Figure 4 The number of page 405s can be even greater)

[0086] In addition, the allocation recovery unit request 605 may include a continuation flag 615. In some embodiments of the present disclosure, Figure 4 The recycling unit 420 can be allocated as Figure 4 Physical address of / page 405 / Figure 4 Block 410 / Figure 4 In other embodiments of the present disclosure, Figure 4 The recycling unit 420 can be allocated across Figure 3 The flash memory chips 320 are scattered Figure 4 Various physical addresses / Page 405 / Figure 4 Block 410 / Figure 4 In an implementation of the storage device 120 where there is a latency difference between sequential access and random access to data, Figure 4 The recycling unit 420 is allocated as Figure 4 A continuous range of physical addresses / pages 405 / Figure 4 Block 410 / Figure 4 The super block 415 is still allocated as Figure 4 Multiple disconnected physical addresses / page 405 / Figure 4 Block 410 / Figure 4 The super block 415 may affect the performance of the storage device 120. However, the identification Figure 4 Physical address of / page 405 / Figure 4 Block 410 / Figure 4The contiguous range of super blocks 415 may limit the storage device 120 to which it can allocate Figure 4 The storage device 120 may need to perform garbage collection on various blocks to establish the location of the recycling unit 420. Figure 4 Physical address of / page 405 / Figure 4 Block 410 / Figure 4 A sufficiently large contiguous range of superblocks 415 to support Figure 4 The continuation flag 615 may specify the allocation of the recycling unit 420 using the allocation recycling unit request 605. Figure 4 of the recovery unit 420, which of these alternatives is preferred.

[0087] Another parameter processor 110 may include a recycling unit identifier ( Fig. 6A That is, the processor 110 may select a memory element to be used to identify the memory element to be allocated by the storage device 120. Figure 4 The processor 110 may select a recycling unit identifier for the recycling unit 420. As discussed below, if the processor 110 selects a recycling unit identifier, there may be a conflict in the recycling unit identifier, which may require a solution. One example solution may be that the storage device 120 returns an error to the processor 110 in response to a command including a conflicting identifier. Another example solution may be that the storage device 120 remaps one of the two identifiers in the conflict. The remapping may optionally be recorded by the processor 110 for later querying.

[0088] Once storage device 120 has been allocated Figure 4 The storage device 120 may send an allocation recovery unit response 620 to the processor 110. The storage device 120 may also assign a recovery unit identifier 625 to the Figure 4 The recycling unit 420 may include a recycling unit identifier 625 with the allocated recycling unit response 620, so that the processor 110 can use the recycling unit identifier 625 to identify the recycling unit in a later message. Figure 4 The processor 110 selects the recycling unit 420 to be used for identification Figure 4 In embodiments of the present disclosure where the reclaim unit identifier 625 of the reclaim unit 420 is allocated, the reclaim unit identifier 625 may be omitted from the allocate reclaim unit response 620 (because the reclaim unit identifier 625 is already known to the processor 110 ).

[0089] In some embodiments of the present disclosure, the storage device 120 may manage Figure 4The allocation of the recycling unit 420 is performed without the processor 110 sending the allocate recycling unit request 605. In such an embodiment of the present disclosure, the allocate recycling unit request 605 and / or the allocate recycling unit response 620 may be omitted, as shown by its representation using dashed lines.

[0090] In some embodiments of the present disclosure, such as embodiments of the present disclosure in which the processor 110 does not send an allocate reclamation unit request 605 or receive an allocate reclamation unit response 620, the processor 110 may send a reclamation unit identifier request 630 to the storage device 120. The reclamation unit identifier request 630 may be a request to identify the reclamation unit identifier. Figure 4 The recycling unit identifier request 630 may be a request for a recycling unit identifier 625 of the recycling unit 420 of the storage device 120, which may be returned as part of the recycling unit identifier response 635. The recycling unit identifier request 630 may take the form of a request for the storage device 120 to Figure 4 The request may be in the form of a new recycling unit identifier 625 assigned to the recycling unit 420 of the processor 110, or it may include a request for a log page from the storage device 120, which log page may include a list of all recycling unit identifiers 625 (current and / or past) that have been written by the processor 110. Note that in some embodiments of the present disclosure, Figure 1 The processor 110 may not request the reclaim unit identifier 625 from the storage device 120, which is why the reclaim unit identifier request 630 and the reclaim unit identifier response 635 are shown with dashed lines.

[0091] At some point, the processor 120 may send a write request 640 to the storage device 120. The write request 640 may be a request to write data 645 to the storage device 120. The write request 640 may include a reclaim unit identifier 625: In some embodiments of the present disclosure, the reclaim unit identifier 625 may be omitted (e.g., when the storage device 120 assigns the data 645 to Figure 4 The write request 640 may also include Fig. 6A Additional information not shown: for example, a logical address associated with the data of processor 110.

[0092] Note that there is a difference between a logical address and a reclaim unit identifier 625: a logical address may be how the processor 110 identifies a particular data, whereas a reclaim unit identifier 625 may identify where the processor 110 wants the data to be stored. Figure 4 The logical address may be used as a recycling unit identifier 625 (see below). Figure 7In an embodiment of the present disclosure discussed further herein, write request 640 may actually include two logical addresses: one used by processor 110 to identify data 645, and one used by storage device 120 to determine where data 645 should be written. Figure 4 Which recovery unit 420 is included in.

[0093] Although Fig. 6A The processor 110 is shown sending only one write request 640 to the storage device 120, but embodiments of the present disclosure may include the processor 110 sending any number (one or more) of write requests 640 to the storage device 120, which may be associated with any number (one or more) of different recycling unit identifiers 625.

[0094] Go to Figure 6B At some point, the processor 110 may send a host garbage collection start message 650 to the storage device 120. The host garbage collection start message 650 may notify the storage device 120 that the processor 110 will manage the collection unit identified by the recycling unit identifier 625. Figure 4 Alternatively, the host garbage collection start message 650 may be understood as a request for the storage device 120 to use the garbage collection unit 420. Figure 4 The garbage collection of other recycling units 420 takes precedence over the garbage collection of the recycling unit identified by the recycling unit identifier 625. Figure 4 In such an embodiment of the present disclosure, the host garbage collection start message 650 may not necessarily indicate that the processor 110 will start the garbage collection in the recycling unit 420 identified by the recycling unit identifier 625. Figure 4 420, although if the processor 110 actually performs garbage collection on the recycling unit 420 identified by the recycling unit identifier 625 Figure 4 420, or if the processor 110 desires to perform garbage collection on the recycling unit 420 identified by the recycling unit identifier 625 Figure 4 A well-behaved host would be expected to send only the host garbage collection start message 650 if the reclaim unit 420 is deallocated relatively quickly.

[0095] Upon receiving the host garbage collection start message 650, the storage device 120 may know not to perform the collection process identified by the reclaim unit identifier 625. Figure 4 The garbage collection of the recycling unit 420, because Figure 1 The processor 110 will manage garbage collection. For example, the storage device 120 can use Figure 3 The garbage collection priority unit 340 is used to Figure 5 The low priority 505 is assigned to the recycling unit identified by the recycling unit identifier 625. Figure 4The recycling unit 420 of the storage device 120 can try and avoid the recycling unit identified by the recycling unit identifier 625. Figure 4 Garbage collection is performed on the recycling unit 420.

[0096] The processor 110 may then issue a request to the storage device 120 for the resource identified by the reclaim unit identifier 625. Figure 4 Request 655 to program or delete (deallocate) a page of the reclamation unit 420 of the Figure 4 To program the data of the recycling unit 420, the processor 110 may issue a read signal associated with the recycling unit identified by the recycling unit identifier 625. Figure 4 Recycling unit 420 Figure 4 A request may be made to write the data associated with the new logical block address to the storage device 120. The data may then be stored in Figure 4 405 in the new page (and potentially stored in Figure 4 420), which can then be deleted Figure 4 The data in the original page 405 of the reclaim unit is removed from the reclaim unit identified by the reclaim unit identifier 625. Figure 4 The recovery unit 420 reads Figure 4 This process of another recycling unit 420 can be described as an overwrite process, because the data is (potentially) not modified when overwriting: overwriting can only allow the recycling unit identified by the recycling unit identifier 625. Figure 4 Similarly, to deallocate the reclaim unit 420 identified by the reclaim unit identifier 625 Figure 4 Recycling unit 420 Figure 4 The processor 110 may issue a request to the storage device 120 for the page 405 identified by the recycling unit identifier 625. Figure 4 Recycling unit 420 Figure 4 The logical address associated with the data in page 405 is deleted. Figure 6B Only one request 655 is shown, but embodiments of the present disclosure may include a processor 110 that issues any number of such requests. The processor 110 may not even issue a request 655: for example, if the processor 110 wants to delete the reclaim unit identified by the reclaim unit identifier 625, Figure 4 If all data in the reclaim unit 425 is not included in the reclaim unit 425, the processor 110 may simply leave all the data in place and send a message to the storage device 120 that the storage device 120 should deallocate the data identified by the reclaim unit identifier 625. Figure 4 A request to the recycling unit 420 (such as the deallocation discussed below) Figure 4420), which may involve deleting the recycling unit identified by the recycling unit identifier 625. Figure 4 All data in the recycling unit 420.

[0097] When the processor 110 has completed managing the Figure 4 When the processor 110 performs garbage collection of the recycling unit 420, the processor 110 may send a host garbage collection end message 660 to the storage device 120. The host garbage collection end message 660 may notify the storage device 120 that the processor 110 has completed the management of the recycling unit identified by the recycling unit identifier 625. Figure 4 The processor 110 may also send a deallocation reclamation unit request 665 to the storage device 120, requesting the storage device 120 to deallocate the reclamation unit identified by the reclamation unit identifier 625. Figure 4 In some embodiments of the present disclosure, the storage device 120 may assume that the processor 110 may continue to use the recycling unit 420 identified by the recycling unit identifier 625. Figure 4 until the processor 110 explicitly requests the recycling unit 420 identified by the recycling unit identifier 625. Figure 4 The recycling unit 420 of the recycle unit 420 is deallocated. However, in other embodiments of the present disclosure, the deallocation recycling unit request 665 may be used by the processor 110 to end its request for the recycling unit 420 identified by the recycling unit identifier 625. Figure 4 In such an embodiment of the present disclosure, the deallocation recovery unit request 665 may be omitted, as shown by the deallocation recovery unit request 665 and the recovery unit identifier 625 with a dashed line. In other embodiments of the present disclosure, the roles of the host garbage collection end message 660 and the deallocation recovery unit request 665 may be interchanged: the processor 110 may send the deallocation recovery unit request 665, which may implicitly indicate that the processor 110 has completed the garbage collection of the recovery unit 420 identified by the recovery unit identifier 625. Figure 4 Host managed garbage collection of recycling unit 420 (in this case, host garbage collection end message 660 can be omitted).

[0098] Regardless of whether processor 110 has (explicitly or implicitly) requested the recycling unit identified by recycling unit identifier 625 Figure 4 The reclaim unit 420 is deallocated, at which point the storage device 120 can be reclaimed in the reclaim unit identifier 625. Figure 4 Garbage collection 670 is performed on the recycling unit 420 .

[0099] If the recovery unit 625 is to be executed Figure 465 (e.g., if the processor 110 explicitly sends the deallocation reclamation unit request 665, or if the deallocation reclamation unit request 665 is implied by the host garbage collection end message 660), the storage device 120 may attempt to deallocate the reclamation unit 420 identified by the reclamation unit identifier 625. In some embodiments of the present disclosure, the storage device 120 may trust the processor 110 and treat the deallocation reclamation unit request 665 as a request to deallocate the reclamation unit 420 identified by the reclamation unit identifier 625. Figure 4 The request of the recycling unit 420 is regardless of the recycling unit identified by the recycling unit identifier 625. Figure 4 Whether there is still valid data in the recycling unit 420. That is, the storage device 120 can interpret the deallocation recycling unit request 665 as deallocating the recycling unit identified by the recycling unit identifier 625. Figure 4 The request to delete the recycling unit 420 identified by the recycling unit identifier 625 Figure 4 The storage device 120 may optionally return an information message notifying the processor 110 of any LBAs containing valid data deallocated by the storage device 120 when executing the deallocate reclaim unit request 665.

[0100] In other embodiments of the present disclosure, the storage device 120 may take a more conservative approach and may request the processor 110 to confirm the recovery unit identified by the recovery unit identifier 625. Figure 4 Any valid data remaining in the recycling unit 420 will be deleted. The storage device 120 can use Figure 3 The flash translation layer 335 determines the logical address of these data to identify what data is stored in the recycling unit identified by the recycling unit identifier 625. Figure 4 The recovery unit 420 is as follows: Figure 7 The storage device 120 may then send a message to the processor 110, thereby providing the processor 110 with a list of logical block addresses of the recycling unit 420 identified by the recycling unit identifier 625 that still store valid data. Once the processor 110 has confirmed that the recycling unit 420 identified by the recycling unit identifier 625 is to be deleted, Figure 4 The storage device 120 can delete all remaining valid data in the recycling unit 420 identified by the recycling unit identifier 625. Figure 4 The remaining data in the recycling unit 420 can then be Figure 4 (Obviously, if the processor 110 instructs the recycling unit 420 identified by the recycling unit identifier 625 to deallocate Figure 4The remaining data in the recycling unit 420 should continue to be stored by the storage device 120, then the storage device 120 should not deallocate the data identified by the recycling unit identifier 625 at this time. Figure 4 The recycling unit 420 enables the processor 110 to move such data to Figure 4 Then, once the recycling unit 420 identified by the recycling unit identifier 625 is Figure 4 If the recycling unit 420 contains only data that can be deleted, the processor 110 can send the deallocation recycling unit request 665 again. Alternatively, the processor 110 can read the recycling unit identified by the recycling unit identifier 625. Figure 4 The remaining valid data in the recycling unit 420 is written into Figure 4 The storage device 120 may again identify the other recycling unit 420 identified by the recycling unit identifier 625 (in effect, performing garbage collection from the processor 110). Figure 4 All remaining valid data in the recycling unit 420 should be deleted, but at this time the processor 110 should be able to confirm that the recycling unit identified by the recycling unit identifier 625 Figure 4 The recycling unit 420 can now be deallocated

[0101] There may even be a situation where the processor 110 may request that the storage device 120 not be present. Figure 4 420 even though the processor 110 itself may not have the intention to perform garbage collection. For example, consider that the processor 110 uses Figure 4 The processor 110 may know that the queue will not be needed soon and may request the storage device 120 to perform a cleanup operation on the storage device 120. Figure 4 The processor 110 may then finish consuming the data in the queue, after which the processor 110 may send a deallocate reclamation unit request 665 to deallocate the data. Figure 4 The recycling unit 420. Note that the remaining data in the consumption queue may not be considered to have been garbage collected: the data is being processed, but the data is not being rewritten to a new recycling unit either.

[0102] As described above, the request 630 and the response 635 may be omitted. In some embodiments of the present disclosure, the storage device 120 may automatically provide the reclaim unit identifier 625 to the processor 110 without involving a request / response pair. For example, in some embodiments of the present disclosure, when the storage device 120 processes the write request 640, the storage device 120 may include the reclaim unit identifier 625 in the response sent to the processor 110 to report that the write request 640 was successfully completed. In other embodiments of the present disclosure, the storage device 120 may send a message to the processor 110 regarding the successful completion of the write request 640. Figure 4 An asynchronous event request (AER) or asynchronous event notification (AEN) for each recycling unit 420 of the processor 110 may include a recycling unit identifier 625, or sufficient information to trigger the processor 110 to query the AER / AEN and thus discover the recycling unit identifier 625 (and possibly other relevant information to initiate debugging) during the query process. When data is first written to a recycling unit 420 (i.e., when a recycling unit 420 that is considered to be part of the recycling unit 420 is received), the AER / AEN may include a recycling unit identifier 625, or sufficient information to trigger the processor 110 to query the AER / AEN and thus discover the recycling unit identifier 625 (and possibly other relevant information to initiate debugging) during the query process. Figure 4 is written), or when data is last written to the reclaim unit 420 (i.e., when the first page 405 of the reclaim unit 420 is considered to be part of the reclaim unit 420). Figure 4 The storage device 120 may send the AER / AEN when the last page 405 is written.

[0103] However, the storage device 120 is only Figure 4 In embodiments of the present disclosure that return AER / AEN when the reclaim unit 420 is full, the question may arise as to how the processor 110 may include the reclaim unit identifier 625 as part of the write request 640. The answer is that in such embodiments of the present disclosure, the write request 640 may not include the reclaim unit identifier 625.

[0104] But this may lead to another problem: if the storage device 120 returns AER / AEN only when the reclaim unit 420 is full, and the storage device 120 may place the data Figure 4 different recycling units 420 (for example, the storage device 120 may store data from different applications in Figure 4 different recovery units 420), how does the processor 110 know what data is in Figure 4 Which recycling unit 420 allows the processor 110 to manage Figure 4 The answer is that the processor 110 can query the storage device 120 for information about the garbage collection associated with the recycling unit identifier 625. Figure 4 In response to such a query, the storage device 120 may return information about which logical addresses (which are known to the processor 110) are stored in the Figure 4 The processor 110 may send a request / query for a log page containing the information.

[0105] As reference below Figure 3 As discussed, the storage device 120 may include Figure 3 The flash translation layer 335. Figure 3 The flash translation layer 335 can convert the logical address provided by the processor 110 into Figure 3 The physical address of the actual storage data 645 on the flash memory chip 320 is associated with the physical address of the actual storage data 645. Figure 7 Further discussion Figure 3 Flash Translation Layer 335; in short, Figure 3 The flash translation layer 335 of the embodiment of the present invention can also associate the logical address provided by the processor 110 with the recycling unit identifier 625, which can enable efficient determination of which logical addresses are stored in the recycling unit identifier 625. Figure 4 in a specific recovery unit 420.

[0106] The storage device 120 assigns the recycling unit identifier 625 to Figure 4 In the embodiment of the present disclosure of the recycling unit 420, the storage device 120 may also support a recycling unit handle. The recycling unit handle may function similarly to a file descriptor in a file system: the recycling unit handle may be Figure 4 The recycling unit handle thus provides a unique identifier for a particular recycling unit 420. Figure 4 An alternative mechanism for recycling unit 420. Note that although recycling unit identifier 625 is Figure 4 Each recovery unit 420 may be unique (ie, Figure 4 Each recycling unit 420 may have a unique recycling unit identifier 625), but the recycling unit handle may be unique to each recycling unit. Figure 4 The specific recovery unit 420 is opened (to support the Figure 4 The recycling unit handle can be reused for access to the recycling unit 420) and closed when the access is completed. In other words, the recycling unit handle can be reused for access to the recycling unit 420. Figure 4 In some embodiments of the present disclosure, the recycling unit handle can be used to access Figure 4 The plurality of recovery units 420 (effectively Figure 4 A collection of reclamation units 420 is considered a "super" reclamation unit, much like a super block comprises multiple blocks).

[0107] When supporting recycling unit handles, the storage device 120 may support several different configurations. The storage device 120 may support any number (one or more) of different configurations, each of which may include a certain number of handles. The processor 110 may select a particular configuration to gain access to a supported number of recycling unit handles in that configuration. Note that the number of recycling unit handles may be less than Figure 4 In some embodiments of the present disclosure, the number of reclaim unit handles associated with a particular configuration of the storage device 120 may be fixed and may not increase: the processor 110 may then have to work with the supported number of reclaim unit handles (and may need to close some reclaim unit handles to access Figure 4 Reclamation unit handles can be shared across namespaces, which can support isolation of Figure 4 The access of each recycling unit 420 is shared among the applications in the embodiments of the present disclosure.

[0108] As noted above and as referenced below Figure 7 For further discussion, Figure 3 The flash translation layer 335 of the embodiment of the present invention may associate the logical address with the reclaim unit identifier 625. Thus, the processor 110 may provide the logical address, and the storage device 120 may be able to use Figure 3 The flash translation layer 335 of the storage device 120 identifies the reclaim unit identifier 625 from the logical address. This fact means that in some embodiments of the present disclosure, the logical address can be used as the reclaim unit identifier 625: given the logical address, the storage device 120 can identify the reclaim unit identifier 625 and can then process the request / command as if the processor 110 had provided the reclaim unit identifier 625.

[0109] In other embodiments of the present disclosure, the processor 110 may select the recycling unit identifier 625. That is, it is not the storage device 120 that selects the recycling unit identifier 625 and assigns the selected recycling unit identifier 625 to the storage device 120. Figure 4 Instead of a reclamation unit 420 , the processor 110 may provide a reclamation unit identifier 625 , and the storage device 120 may simply assign the reclamation unit identifier 625 to the reclamation unit 420 .

[0110] However, this approach may have potential difficulties. For example, suppose that the recycling unit identifier "1" has been used as Figure 4 a recycling unit identifier 625 of a recycling unit 420 of Figure 1The processor 110 of the embodiment selects the reclamation unit identifier “1” for the data it wants to store on the storage device 120. (For example, if the processor 110 is executing multiple applications or virtual machines, each application or virtual machine can independently select the reclamation unit identifier, or if multiple processors 110 are communicating with the storage device 120, such as when the storage device 120 is accessible from Figure 1 This may occur when a portion of the storage system is accessed by another machine 105 over the network.) Because the recycling unit identifier 625 is used to identify Figure 4 Different recovery units 420, so a conflict occurs.

[0111] There are several ways to resolve this conflict. One solution is for the storage device 120 to notify the processor 110 that the reclaim unit identifier 625 selected by the processor 110 is already in use and that the processor 110 should select another reclaim unit identifier 625. Another solution is to assume that the reuse of a reclaim unit identifier 625 means that the processor 110 is no longer interested in the data associated with the earlier reclaim unit identifier 625 and that the storage device 120 may reuse the data associated with the reclaim unit identifier 625. Figure 4 The reclaim unit 420 is invalidated and garbage collected. Yet another solution is for the storage device 120 to somehow add the identifier of the processor 110 (or an application or virtual machine running on the processor 110) to the reclaim unit identifier 625, or for the storage device 120 to select and use a non-conflicting reclaim unit identifier 625 instead of a reclaim unit identifier 625 provided by the processor 110 that conflicts with another reclaim unit identifier 625. Finally, the storage device 120 can return an error to let the processor 110 know that the reclaim unit identifier 625 conflicts with an existing reclaim unit identifier: the processor 110 can then select another reclaim unit identifier 625 and resubmit the request that resulted in the error response.

[0112] All of these solutions offer advantages and disadvantages. Requiring the processor 110 to select a new reclaim unit identifier 625 enables the provided reclaim unit identifier 625 to be used without adding any additional layers to the handling of the reclaim unit identifier 625. But this solution also lets the processor 110 know that there is data stored on the storage device 120 associated with a particular reclaim unit identifier 625: if the processor 110 is attempting to perform any malicious activity, this information may reveal information to the processor 110 that would be better kept away from the processor 110. Requiring the processor 110 to select a new reclaim unit identifier 625 may also add additional time for the storage device 120 to complete the write request 640, which may increase the latency in which the processor 110 is able to execute its instructions.

[0113] Assume that reuse of the recycling unit identifier 625 implies storage in the associated recycling unit identifier 625. Figure 4 The data in the reclaim unit 420 can be safely deleted, any delay on the part of the processor 110 can be avoided, and the recovery of the free page 405 can be accelerated (because the data associated with the reclaim unit identifier 625 is Figure 4 The reclaim unit 420 can now be deallocated). However, if the processor 110 accidentally reuses the reclaim unit identifier 625, the data that the processor 110 wants to retain may be lost. Even worse, if the reclaim unit identifier 625 is reused by Figure 1 If the reclaim unit identifier 625 is used by another processor 110 of another machine 105 or by another virtual machine running on the processor 110, the processor 110 may not even be aware that the reclaim unit identifier 625 is already in use, again resulting in accidental deletion of data that should be retained.

[0114] Adding an identifier of the processor 110 or an application or virtual machine running on the processor 110 to the reclaim unit identifier 625 can avoid the disadvantages of other solutions: the processor 110 may remain unaware that the reclaim unit identifier 625 is already in use, and data may not be accidentally deleted due to the reuse of the reclaim unit identifier 625. However, combining the reclaim unit identifier 625 with some identifier of the processor 110 or an application or virtual machine running on the processor 110 adds an additional layer of operational management: the reclaim unit identifier 625 can be used to identify the reclaim unit identifier 625. Figure 4 Before the reclaim unit 420 of the processor 110 is processed, the reclaim unit identifier 625 may need to be modified to combine it with the other identifier. Therefore, this additional management layer may cause the storage device 120 to require some additional time before processing any particular request from the processor 110.

[0115] Finally, all of the above discussion operates under the assumption that the processor 110 will correctly manage garbage collection of the recycling unit 420: that is, the processor 110 is well behaved. A well behaved processor 110 may start its Figure 4 The host garbage collection start message 650 is sent shortly before the garbage collection of the recycling unit 420, and can be sent after the processor 110 completes its Figure 4 The host garbage collection end message 660 is sent when the garbage collection of the recycling unit 420 of the storage device 120 is started. However, the processor 110 that behaves poorly may not operate in this manner. For example, the processor 110 that behaves poorly may send a write request 640 to the storage device 120 and immediately send a host garbage collection start message 650 to prevent the storage device 120 from performing garbage collection on the storage device 120 identified by the recycling unit identifier 625. Figure 4However, the processor 110 that is not performing well may not intend to perform garbage collection on the recycling unit 420 identified by the recycling unit identifier 625 in the near future. Figure 4 Alternatively, a processor 110 that is behaving badly may generally behave well, but may forget to send or delay sending a host garbage collection end message 660 to notify the storage device 120 that the storage device 120 may now be able to collect garbage from the reclaim unit 420 identified by the reclaim unit identifier 625. Figure 4 In other words, when the processor 110 that is not behaving properly should not perform garbage collection, the processor 110 that is not behaving properly may prevent the storage device 120 from performing garbage collection on the reclaim unit 420 identified by the reclaim unit identifier 625. Figure 4 Garbage collection is performed on the recycling unit 420. Figure 8 Further discussion is how the storage device 120 may handle a processor 110 that is not behaving well.

[0116] Even if processor 110 is behaving well, there may be situations where storage device 120 may select the reclaim unit identified by reclaim unit identifier 625. Figure 4 420 to perform garbage collection, even though the processor 110 may have indicated that the recycling unit identified by the recycling unit identifier 625 Figure 4 The recycling unit 420 of the host is subjected to garbage collection managed by the host and the processor 110 performs well. For example, Figure 4 The number of free pages 405 may be low enough that the storage device 120 may choose to Figure 4 The recycling unit 420 of is used for garbage collection, although the processor 110 has indicated that the recycling unit identified by the recycling unit 625 Figure 4 The recycling unit 420 of the host is subject to host-managed garbage collection. This exception (so called because although the processor 110 indicates that it will manage the recycling unit identified by the recycling unit identifier 625) Figure 4 Garbage collection by the recycling unit 420, but they still occur) may occur even if the processor 110 performs well.

[0117] Figure 7 It is shown that the embodiment of the present disclosure can be identified Figure 4 Various different ways of recycling unit 420. As mentioned above Figure 6A-6B As discussed, Figure 1 The processor 110 may use the recycling unit identifier 625 to identify Figure 4 The recycling unit 420, or use the recycling unit handle 705 to identify Figure 4 The recovery unit 420. Figure 7As shown, the recycling unit handle 705 can be associated with multiple recycling unit identifiers 625, each recycling unit identifier 625 can identify a recycling unit 420, which indicates that the recycling unit handle 705 can be used to identify multiple recycling units 420. (Although Figure 7 The recycling unit handle 705 is shown to be associated with the recycling unit identifier 625, which in turn is associated with the recycling unit 420, but embodiments of the present disclosure may bypass the recycling unit identifier 625 and directly associate the recycling unit handle 705 with the recycling unit 420.

[0118] In addition, as mentioned above, Figure 1 The processor 110 can use the logical address 710 to identify the reclaim unit 420. To support this, the flash translation layer 335 is shown. In the flash translation layer, the logical address 710 can be associated with the physical address 715 and the reclaim unit identifier 625. That is, given a particular logical address 710, it can be determined from the flash translation layer 335 and the reclaim unit identifier 625 where the data is stored. Figure 1 The corresponding physical address 715 on the storage device 120. Therefore, if Figure 1 If the processor 110 of the storage device 120 provides the logical address 710, the storage device 120 can use the logical address 710 to determine the recycling unit identifier 625 from the flash translation layer 335. In other words, the logical address 710 can be used to identify the recycling unit 420 in some way because the logical address 710 can be used to determine the recycling unit identifier 625. For example, Figure 7 The flash translation layer 335 is shown as including three entries 720-1 through 720-3 (which may be collectively referred to as entries 720). Entry 720-1 indicates that data associated with logical address 0x1000 is stored at physical address 0x8000 as part of reclaim unit identifier 1, entry 720-2 indicates that data associated with logical address 0x2000 is stored at physical address 0x6000 as part of reclaim unit identifier 1, and entry 720-3 indicates that data associated with logical address 0x3000 is stored at physical address 0x7000 as part of reclaim unit identifier 2. Entry 720 is merely an example, and any logical address 710 may be associated with any physical address 715 and / or any reclaim unit identifier 625. Furthermore, although Figure 7 The flash translation layer 335 is shown as including three entries 720 , but embodiments of the present invention may support the flash translation layer 335 including any number (zero or more) of entries 720 .

[0119] In some embodiments of the present disclosure, the flash translation layer 335 may use some other method to identify Figure 4The recycling unit 420 instead of the recycling unit identifier 625. For example, the identifier 625 may be used to represent Figure 4 The physical address 715 of the beginning of the physical address range of the recycling unit 420 is substituted for the recycling unit identifier 625. Even in Figure 4 In the case where the recycling units 420 are not continuous, the basic physical address of the recycling unit 420 can also uniquely identify each recycling unit 420.

[0120] In some embodiments of the present disclosure, a regional namespace may be used to manage data stored in Figure 1 Where on the storage device 120 of the present disclosure. In such embodiments of the present disclosure, the region can be considered similar to the recycling unit, and the region namespace logical address 725 can be used to identify the recycling unit 420. In some embodiments of the present disclosure, a key value or object store can be used to manage where the data is stored on the storage device. In such embodiments of the present disclosure, the value or object can be considered similar to the recycling unit, and the key or object identifier can be used to identify the recycling unit.

[0121] Finally, in some embodiments of the present disclosure, instead of providing a logical address 710, Figure 1 The processor 110 may provide a logical address range 730. The logical address range 730 may be a range of logical addresses rather than a single logical address 710. (Of course, in the most general sense, a single logical address 710 may be considered to be a logical address range 730 that includes only one logical address.) Depending on how the logical address range 730 is used, Figure 1 The storage device 120 may respond in various ways. In some cases, Figure 1 The processor 110 may send Figure 1 The storage device 120 provides a logical address range 730 because it identifies a range of logical addresses to be stored in a single recycling unit 420. In this case, the logical address range 730 can be considered to be Figure 1 The storage device 120 can be used to select the recycling unit 420 to store Figure 1 The processor 110 has the data information, and Figure 1 The storage device 120 may store a logical address range 730 (e.g., in Figure 3 345) and associates it with the recycling unit 420. In other cases, Figure 1 The processor 110 may send Figure 1The storage device 120 provides the logical address range 730 as a request to identify which reclaim unit(s) 420 to use to store those logical addresses. The storage device 120 may then use the logical address range 730 to identify which reclaim unit(s) 420 to store data at those logical addresses (using the flash translation layer 335), and may return the reclaim unit(s) identifiers 625 that identify the reclaim unit(s) 420 that store the data associated with the logical addresses in the logical address range 730.

[0122] Embodiments of the present disclosure may use any of the reclaim unit handle 705, the logical address 710, the region start logical address 725, and / or the logical address range 730 in place of the reclaim unit identifier 625. In other words, any discussion of using the reclaim unit identifier 625 may be replaced with any of these alternative identifiers without loss of generality.

[0123] Figure 8 The implementation according to the embodiment of the present disclosure is shown Figure 4 The garbage collection unit 420 is Figure 1 The storage device 120. Figure 8 In the example, it can be assumed that the storage device 120 has selected the recycling unit identified by the recycling unit identifier 625. Figure 4 The recycling unit 420 is used for garbage collection even though the processor 110 may have indicated that the recycling unit identified by the recycling unit identifier 625 Figure 4 The recycling unit 420 of the storage device 120 may be subjected to host-managed garbage collection. For a variety of reasons, the storage device 120 may select the recycling unit identified by the recycling unit identifier 625. Figure 4 The recycling unit 420 is used for garbage collection. For example, processor 110 may be a poorly behaved processor, indicating that it will manage the recycling unit identified by recycling unit identifier 625. Figure 4 Alternatively, the storage device 120 may find that it is very low on free pages 405 and may not perform garbage collection on the reclaim unit 420 identified by the reclaim unit identifier 625 even though the processor 110 is managing the Figure 4 When garbage collection of the recycling unit 420 is performed, it may also be necessary to erase the recycling unit identified by the recycling unit identifier 625. Figure 4 Even if the processor 110 is managing the recycling unit 420 identified by the recycling unit identifier 625 Figure 4 When performing garbage collection on the recycling unit 420, the storage device 120 may also decide to perform garbage collection on the recycling unit 420 identified by the recycling unit identifier 625. Figure 4 Other reasons why the recycling unit 420 performs garbage collection may include media integrity issues. For example, some storage devices may suffer from read disturbance. Figure 4The data in a page 405 may affect the data stored in Figure 4 When the value in the nearby page 405 is read, a read disturbance may occur. Figure 4 A small number of reads of one page 405 may not significantly affect nearby pages (especially if the storage device 120 supports error correction), but as Figure 4 The number of page 405 reads that occurred, Figure 4 The higher the probability that the nearby page 405 may suffer from read disturbance. The typical solution to read disturbance is to Figure 4 The affected page 405 reads data and writes data to Figure 4 in the new page 405 (and invalidate the old page 405 so that when the next Figure 4 When reading data from page 405, the effect of read disturbance is reset). However, due to read disturbance, the solution can be to program the data to Figure 4 The new page 405 may occur Figure 4 Some modifications to the recycling unit 420, which may affect how the processor 110 executes the recycling unit identified by the recycling unit identifier 625 Figure 4 The recycling unit 405 manages the garbage collection by the host.

[0124] The storage device 120 may be triggered to recycle the storage device 120 in the recycle unit identified by the recycle unit identifier 625. Figure 4 Another media integrity issue with performing garbage collection on the recycling unit 405 of the storage device 120 may be the retention timer. While in an ideal situation, one might expect the storage device 120 to store data indefinitely without problems, the real world may not be ideal and there may be an upper limit on how long data can be stored without risk of data corruption. Figure 4 In block 410 of , a retention timer can track how long the data has been stored. The longer the data is stored without being moved, the greater the chance that the data may become corrupted, possibly to the point where error correction may not be possible. Figure 4 When the retention timer of block 410 reaches a predetermined threshold, the storage device 120 may decide that Figure 4 As with read disturbance, if processor 110 is executing a read operation identified by reclaim unit identifier 625, Figure 4 The host manages garbage collection of the recycling unit 405, then programs the data into Figure 4 The new block 410 may affect the processor 110.

[0125] The storage device 120 may be triggered to recycle the storage device 120 in the recycle unit identified by the recycle unit identifier 625. Figure 4Another media integrity issue for performing garbage collection on the recycling unit 405 of the storage device 120 may be to turn on the block timer. In some embodiments, the storage device 120 may maintain Figure 4 The block 410 is open until it is full: that is, until Figure 4 In block 410 Figure 4 All pages 405 have been written with data. Figure 4 Block 410 left open indefinitely may result in the Figure 4 The possibility of data corruption in the data of block 410 is very similar to the retention timer discussed above. Figure 4 When the block 410 of Figure 4 As with read disturbance, if processor 110 is executing a read operation identified by reclaim unit identifier 625, Figure 4 The host manages garbage collection of the recycling unit 405, then programs the data into Figure 4 The new block 410 may affect the processor 110.

[0126] Regardless of what may cause the storage device 120 to decide Figure 4 Block 410 / identified by recycling unit identifier 625 Figure 4 The end result is that the data processor 110 may want to be programmed to Figure 4 The new recycling unit 420 (or just completely removed), may have been moved to Figure 4 The new block 410 / Figure 4 The storage device 120 may have been Figure 4 The fact that the reclaim unit 420 of the storage device 120 moves the data identified by the reclaim unit identifier 625 may affect how the processor 110 can perform host-managed garbage collection. Figure 4 The recycling unit 420 of the embodiment is used for garbage collection, particularly when the processor 110 has indicated that it wants to manage the recycling unit identified by the recycling unit identifier 625. Figure 4 It may be important for the storage device 120 to notify the processor 110 when garbage collection by the recycling unit 420 is performed.

[0127] The storage device 120 may perform the operation identified by the recycling unit identifier 625. Figure 4 The garbage collection of the recycling unit 420 is performed as if the recycling unit 420 identified by the recycling unit identifier 625 Figure 4The recycling unit 420 is not subject to host-managed garbage collection by the processor 110. That is, the storage device 120 can store the garbage collected by the recycling unit identifier 625. Figure 4 The valid data of the recovery unit 420 is programmed into Figure 4 The new recovery unit 420, and when Figure 4 When all valid data in the recycling unit 420 has been programmed, it can be erased Figure 4 The recovery unit 420 Figure 4 However, the storage device 120 may also send a garbage collection message 805 to the processor 110, and may include a recycling unit identifier 625 to notify the processor 110 that the recycling unit identifier 625 identifies any block 410. Figure 4 Which recycling unit 420 is subjected to garbage collection of the storage device 120. Figure 4 As part of performing garbage collection on the new reclaim unit 420, the storage device 120 may record the logical address 710 containing the data programmed into the new reclaim unit 420. The storage device 120 may also record what the original reclaim unit identifier 625 was and what the new reclaim unit identifier 625 is. Figure 4 The same original recovery unit 420 is programmed to Figure 4 In the same new recycling unit 420, such information can be implicitly known. Figure 4 The storage device 120 may program the data of multiple different reclamation units 420, so the storage device 120 may keep the original and new reclamation unit identifiers 625 in a log so that the storage device 120 (and the processor 110) can know Figure 4 Which of the reclamation units 420 (both source and destination) have been affected by garbage collection of the storage device 120.

[0128] An example of such a log page is shown in log page 810. In log page 810, three entries 815-1 to 815-3 (which may be collectively referred to as entries 815) are shown. Each entry 815 shows the logical address 710 of the data being moved, the original reclamation unit identifier 625 where the data was originally stored, and the new reclamation unit identifier 625 where the data has been programmed.

[0129] Log page 810 shows three entries 815. However, embodiments of the present disclosure may include any number (zero or more) of entries 815. Furthermore, storage device 120 need not retain entries 815 indefinitely: once processor 110 has been informed which logical addresses 710 have been subjected to programming and Figure 4The entry 815 may be removed from the log page 810 based on which of the reclaim units 420 have been affected (as identified by the reclaim unit identifier 625). Furthermore, while the log page 810 only shows data programmed from the reclaim unit identifier 1, embodiments of the present disclosure may support storing information about data programmed from multiple reclaim unit identifiers 625. It is also worth noting that the storage device 120 may select which of the reclaim units 420 the data in question may be programmed into. Figure 4 Any other recycling unit 420 of the present disclosure: In some embodiments of the present disclosure, the storage device 120 may eventually recycle the Figure 4 The data of two or more different recovery units 420 are programmed into Figure 4 In the public recycling unit 420.

[0130] Processor 110 may eventually send a log page request 820 to storage device 120. In response, storage device 120 may send a log page response 825, which may include log page 810. Processor 110 may then process the information as it wishes. For example, if processor 110 attempts to delete Figure 4 The recycling unit 420 recovers all the information so that Figure 4 The recycling unit 420 can be deallocated, then the processor 110 can simply send Figure 6B 10 to delete the data at logical address 710 that is subject to programming (because programming of the data does not change the fact that processor 110 is no longer interested in retaining the data). On the other hand, if the data programmed by storage device 120 is data that processor 110 wants to retain and has itself been programmed to Figure 4 The storage device 120 may have saved the processor 110 the time required to program the data into the new recycling unit 420. Figure 6B 655, and processor 110 may simply note to itself that logical address 710 is now stored in reclaim unit 625 instead. Note that since storage device 120 may already be in Figure 4 The recovery unit 420 erases Figure 4 410, so the processor 110 may not need to send a deallocation Figure 4 A request for recycling unit 420.

[0131] exist Figure 8 , implicitly assuming that only when processor 110 is executing the recycling unit identified by recycling unit identifier 625 Figure 4The storage device 120 may send a garbage collection message 805 to the processor 110 only when the host manages garbage collection of the recycling unit 420. Since this situation may be a time when the processor 110 and the storage device 120 are both independently trying to collect garbage on the storage device 120 identified by the recycling unit 625 Figure 4 420 identified by the reclamation unit identifier 625. Figure 4 However, in other embodiments of the present disclosure, the storage device 120 may notify the processor 110 that the storage device 120 is attempting to perform garbage collection on the recycling unit 420 identified by the recycling unit identifier 625. Figure 4 In this way, the processor 110 can be made aware that the storage device 120 is performing garbage collection so that the processor 110 can delay attempting to perform host-managed garbage collection on the recycling unit 420 that is currently undergoing garbage collection by the storage device 120.

[0132] In Figures 6 to Figure 8 In the above discussion, the focus is on Figure 4 of the recovery unit 420. However, as mentioned above, Figure 4 The recovery unit 420 can be connected with Figure 4 For this reason, embodiments of the present disclosure may be used with devices that are not designed to use Figure 4 The recycling unit 420 is used together with the storage device 120, simply by using Figure 4 Box 410 Replacement Figure 4 The recovery unit 420. In other words, Figure 1 The processor 110 may not specifically support Figure 4 The recycling unit 420 performs in the storage device 120 Figure 4 host managed garbage collection of block 410 without any further modification (except for supporting host managed garbage collection). For similar reasons, Figure 9-Figure 22 Middle Pair Figure 4 Any reference to the recycling unit 420 may also be understood as a reference to Figure 4 Frame 410.

[0133] Fig. 9 The embodiment according to the present disclosure is shown Figure 1 The processor 110 executes Figure 4 Flowchart of an example process for host-managed garbage collection of the recycling unit 420. Fig. 9 In block 905, Figure 1 The processor 110 may send Figure 1 The storage device 120 sends Fig. 6A Write request 640. Fig. 6A The write request 640 may include the Fig. 6A Data 645, and instructions Figure 1 The processor 110 wants to Fig. 6A Where is the data 645 written? Fig. 6A The recycling unit identifier 625. Note that block 905 may be performed multiple times—i.e., Figure 1 The processor 110 may Fig. 6A Multiple write requests 640 are sent to Figure 1 storage device 120 —as indicated by dashed line 910.

[0134] At block 915, Figure 1 The processor 110 may send Figure 1 The storage device 120 sends Figure 6B The host garbage collection start message 650 may also include Figure 6B The recycling unit identifier 625. Figure 6B The host garbage collection start message 650 can be sent to Figure 1 120 notifications of storage devices Figure 1 The processor 110 will manage Figure 6B The recycling unit identifier 625 identifies Figure 4 The storage device 120 may then know to de-prioritize garbage collection of the recycling unit 420 .

[0135] Fig.10 The embodiment according to the present disclosure is shown Figure 1 The processor 110 executes Figure 4 Flowchart of an example process for host-managed garbage collection of the recycling unit 420. Fig.10 Can be expressed Fig. 9 Continuation of the flowchart of the example process shown in . At block 1005, Figure 1 The processor 110 may execute Figure 6B The recycling unit identifier 625 identifies Figure 4 The garbage collection unit 420 is used for garbage collection. Figure 1 The processor 110 is composed of Figure 6B The recycling unit identifier 625 identifies Figure 4 Performing garbage collection on the recycling unit 420 may involve Figure 6B Request 655 is sent to Figure 1 The storage device 120 is used to store Figure 6B The recycling unit identifier 625 identifies Figure 4 The recovery unit 420 reads the valid data and writes the valid data to the Figure 6BAnother recycling unit identifier 625 identifies Figure 4 of a new recovery unit 420, and / or from Figure 6B The recycling unit identifier 625 identifies Figure 4 The data is deleted from the recycling unit 420, as shown in block 1010. Block 1010 may be repeated multiple times, depending on the Figure 6B The recycling unit identifier 625 identifies Figure 4 How much data in the recycling unit 420 will be read, written or deleted. It should also be noted that in some embodiments of the present disclosure, Figure 1 The processor 110 may not bother to Figure 1 The storage device 120 sends a delete request to Figure 6B The recycling unit identifier 625 identifies Figure 4 The recycling unit 420 deletes the data, because such deletion can be regarded as deallocation by Figure 6B Recycling unit 625 logo Figure 4 is automatically executed as part of the recovery unit 420.

[0136] Finally, at block 1015, Figure 1 The processor 110 may send Figure 1 The storage device 120 sends Figure 6B The host garbage collection end message 660 is sent to Figure 1 120 notifications of storage devices Figure 1 The processor 110 no longer manages Figure 6B The recycling unit identifier 625 identifies Figure 4 Finally, at block 1020, Figure 1 The processor 110 may send Figure 6B The deallocation recovery unit request 665 requests Figure 1 The storage device 120 may be deallocated by Figure 6B The recycling unit identifier 625 identifies Figure 4 of the recycling unit 420 (and implicitly requesting the deletion of Figure 6B The recycling unit identifier 625 identifies Figure 4 any remaining valid data in the recycling unit 420). In some cases, Figure 1 The processor 110 may choose not to deallocate the Figure 6B The recycling unit identifier 625 identifies Figure 4 Recycling unit 420 : In this case, box 1020 can be omitted, as shown by dashed line 1025 .

[0137] Fig.10 Not shown is Figure 1 The processor 110 confirms that Figure 6B The recycling unit identifier 625 identifies Figure 4 Any remaining valid data in the recycling unit 420 may be deleted. Figure 6A-6B As discussed, Figure 1 The storage device 120 can be used in Figure 4 The recycling unit 420 requests such confirmation before deallocation, in which case, Figure 1 The processor 110 may confirm that Figure 6A-6B The recycling unit identifier 625 identifies Figure 4 Any remaining valid data in the recycling unit 420 may be deleted.

[0138] Fig.11 The embodiment according to the present disclosure is shown Figure 1 The processor 110 from Figure 1 120 requests for storage devices Figure 4 A flowchart of an example process for allocating a recycling unit 420. Fig.11 In block 1105, Figure 1 The processor 110 may send Figure 1 The storage device 120 sends Fig. 6A Allocation recovery unit request 605. Fig. 6A The allocation and recovery unit request 605 may include Figure 4 Recycling unit 420 Fig. 6A of size 610, and / or Fig. 6A The allocation and recovery unit request 605 may include a continuation flag 615 of FIG. 6 indicating that Figure 4 Should the recycling unit 420 be allocated as Figure 3 A continuous range of physical addresses in the flash memory chip 320. At block 1110, Figure 1 The processor 110 may be configured to Figure 1 The storage device 120 receives Fig. 6A The allocation recovery unit response 620 of FIG. 6 may include Fig. 6A The recycling unit identifier 625.

[0139] Fig.12 The embodiment according to the present disclosure is shown Figure 1 The processor 110 determines Fig. 6A of Figure 4 Flowchart of an example process of the identifier recycling unit 420. Fig.12 In block 1205, Figure 1 The processor 110 may send Figure 1 The storage device 120 sends Fig. 6AThe recycling unit identifier request 630 includes a log page of a recycling unit associated with one or more logical addresses. The log page may be similar to Figure 8 The log page 810, but Figure 7 Each logical address 710 lists only one recycling unit identifier (because the log page does not notify Figure 1 The processor 110 data has been Figure 4 A recycling unit 420 moves to Figure 4 At block 1210, Figure 1 The processor 110 may be Figure 1 The storage device 120 receives Figure 8 Log page 810, Figure 1 The processor 110 can determine from the log page 810 that it can be related to Fig. 6A The write request 640 is used together with Fig. 6A The recycling unit identifier 625, such as Fig. 9 As in box 905 of .

[0140] Fig.13 The embodiment according to the present disclosure is shown. Figure 1 The storage device 120 Figure 1 The processor 110 notifies Figure 1 The storage device 120 is executing Figure 4 Flowchart of an example process of garbage collection by the recycling unit 420. Fig.13 In block 1305, Figure 1 The processor 110 may be Figure 1 The storage device 120 receives Figure 8 Garbage collection message 805. Figure 8 The garbage collection message 805 can be sent to Figure 1 The processor 110 notifies Figure 1 The storage device 120 is executing Figure 6A-6B The recycling unit identifier 625 identifies Figure 4 The garbage collection of the recycling unit 420. As mentioned above Figure 8 As discussed, in some embodiments of the present disclosure, Figure 1 The storage device 120 may send Figure 8 The garbage collection message 805 is only about Figure 6A-6B The recycling unit identifier 625 identifies Figure 4 The recovery unit 420, Figure 1 The processor 110 is attempting to perform host-managed garbage collection on the recycling unit 420; in other embodiments of the present disclosure, Figure 1 The storage device 120 may send Figure 8Garbage collection message 805, even about Figure 4 The recovery unit 420, Figure 1 The processor 110 of does not attempt to perform host-managed garbage collection on it. At block 1310, Figure 1 The processor 110 may send Figure 1 The storage device 120 sends Figure 8 Log page request 820, from Figure 1 120 requests for storage devices Figure 8 Log page 810. Finally, at block 1315, Figure 1 The processor 110 may be Figure 1 The storage device 120 receives Figure 8 A log page response 825 may include log page 810, and Figure 1 The processor 110 can learn from the log page response 825 that Figure 6A-6B The recycling unit identifier 625 identifies Figure 4 Where the data in the recycling unit 420 has been relocated.

[0141] Fig.14 The embodiment according to the present disclosure is shown Figure 1 120 storage devices supported Figure 4 Flowchart of an example process for host-managed garbage collection of the recycling unit 420. Fig.14 14, at block 1405, the storage device 120 may receive a write request 640 from the processor 110. The write request 640 may include data 645 to be written to the storage device 120. The write request 640 may also include a reclamation unit identifier 625, which the storage device 120 may use to identify the reclamation unit 420 into which the data 645 may be written. At block 1410, the storage device 120 may write the data 645 to the reclamation unit 420 identified by the reclamation unit identifier 625. To write the data 645 to the reclamation unit 420, the storage device 120 may determine which reclamation unit 420 is identified by the reclamation unit identifier 625. Note that block 1410 may be performed multiple times—i.e., the storage device 120 may receive multiple write requests 640 from the processor 110—as indicated by dashed line 1415.

[0142] Finally, at block 1420, the storage device 120 may receive a host garbage collection start message 650 from the processor 110. The host garbage collection start message 650 may inform the storage device 120 that the processor 110 is performing host managed garbage collection of the reclamation unit 420 identified by the reclamation unit identifier 625. The storage device 120 may then be aware of de-prioritizing garbage collection of the reclamation unit 420.

[0143] Fig.15 The embodiment according to the present disclosure is shown Figure 1 120 storage devices are allocated Figure 4 A flowchart of an example process of the recycling unit 420. Fig.15 In block 1505, Figure 1 The storage device 120 may be obtained from Figure 1 The processor 110 receives Fig. 6A Allocation recovery unit request 605. Fig. 6A The allocation reclamation unit request 605 may include parameters such as the number of reclamation units 420 to be allocated. Fig. 6A Size 610, and / or indication Figure 4 Should the recycling unit 420 be allocated as Figure 3 A continuous range of physical addresses in the flash memory chip 320 Fig. 6A Continuation flag 615. At block 1510, Figure 1 The storage device 120 may be attached to Fig. 6A The allocation and recovery unit requests 605 parameters to allocate Figure 4 Recovery unit 420.

[0144] At block 1515, Figure 1 The storage device 120 can Figure 6A-6B The recycling unit identifier 625 is assigned to Figure 4 Recovery unit 420. Figure 1 The storage device 120 can be selected Figure 6A-6B The recycling unit identifier 625, or Figure 1 The processor 110 may select Figure 6A-6B The recycling unit identifier 625 of the component. Figure 6A-6B Component recycling unit identifier 625, at block 1520, Figure 1 The storage device 120 can be Figure 1 The processor 110 sends the allocation recovery unit response 620 of Figure 6 to report the allocation Figure 4 The result of the recycling unit 420. If Figure 1 120 storage devices selected Figure 6A-6B The recycling unit identifier is 625, then Figure 1 The storage device 120 may include an allocation recovery unit response 620 of FIG. 6 Figure 6A-6B The recycling unit identifier 625.

[0145] Fig.16 The embodiment according to the present disclosure is shown Figure 1 The storage device 120 Figure 1The processor 110 sends Figure 6A-6B A flowchart of an example process for recycling unit identifiers 625. Fig.16 , at block 1605, the storage device 120 may receive a reclaim unit identifier request 630 from the processor 110. At block 1610, the storage device 120 may send a reclaim unit identifier response 635 to the processor 110. The reclaim unit identifier response 635 may include the reclaim unit identifier 625, so that the processor 110 may attach the reclaim unit identifier 625 to the write request 640.

[0146] Fig.17 The embodiment according to the present disclosure is shown Figure 1 The storage device 120 uses the log page to Figure 6A-6B The recycling unit 420 identifier is sent to Figure 1 A flowchart of an example process of the processor 110. Fig.17 , at block 1705, the storage device 120 may receive a reclaim unit identifier request 630 requesting a log page including reclaim units associated with one or more logical addresses. The log page may be similar to the log page 810, but only one reclaim unit identifier is listed per logical address 710 (because the log page does not inform the processor 110 that data has been moved from one reclaim unit 420 to another reclaim unit 420). At block 1710, the storage device 120 may send the log page 810 to the processor 110. The processor 110 may then use the log page 810 to determine a reclaim unit identifier 625 that may be used with the write request 640, as in block 1405.

[0147] Fig.18 The embodiment according to the present disclosure is shown Figure 1 The storage device 120 will Figure 7 The logical address 710 is mapped to Figure 4 A flowchart of an example process of the recycling unit 420. Fig.18 At block 1805, storage device 120 may use flash translation layer 335 to identify an association between logical address 710 and reclamation unit identifier 625. Based on the association and logical address 710, storage device 120 may identify reclamation unit identifier 625, and thereby reclamation unit 420.

[0148] Fig.19 The embodiment according to the present disclosure is shown Figure 1 The storage device 120 is Figure 1 The processor 110 has completed Figure 4 Flowchart of an example process for performing garbage collection after garbage collection on the recycling unit 420 of FIG. Fig.19 , at block 1905, the storage device 120 may receive a host garbage collection end message 660 from the processor 110. The host garbage collection end message 660 may include a reclaim unit identifier 625 so that the storage device 120 knows which reclaim unit 420 (identified by the reclaim unit identifier 625) may now be subject to garbage collection by the storage device 120. At block 1910, the storage device 120 may perform garbage collection on the reclaim unit 420. Performing garbage collection on the storage device may involve reading valid data from the reclaim unit 420 and programming the valid data into a new reclaim unit 420. Once all valid data in the reclaim unit 420 has been programmed into the new reclaim unit 420, performing garbage collection may also include erasing the reclaim unit 420 so that the page 405 of the reclaim unit 420 may be free to store new data. Note that even if a reclaim unit 420 is to be deallocated, as indicated by dashed line 1915, storage device 120 does not have to perform garbage collection (a reclaim unit 420 may be deallocated without performing garbage collection because deallocating a reclaim unit 420 may mean that processor 110 is not interested in keeping any data in reclaim unit 420).

[0149] At block 1920, the storage device 120 may receive a deallocate reclamation unit request 665 from the processor 110. The deallocate reclamation unit request 665 may include a reclamation unit identifier 625, thereby letting the storage device 120 know which reclamation unit 420 (identified by the reclamation unit identifier 625) may be deallocated. Then, at block 1925, the storage device 120 may deallocate the reclamation unit 420.

[0150] Note that in some embodiments of the present disclosure, block 1920 may be omitted, as indicated by dashed line 1930. In such embodiments of the present disclosure, storage device 120 may interpret host garbage collection end message 660 as a request to deallocate reclamation unit 420 identified by reclamation unit 625, and may perform block 1925 without explicitly receiving a deallocate reclamation unit request 665 as shown in block 1920. However, as discussed above, in other embodiments of the present disclosure, storage device 120 may choose not to deallocate reclamation unit 420 without an explicit request from processor 110.

[0151] Note also that in some embodiments of the present disclosure, both blocks 1920 and 1925 may be omitted, as indicated by dashed line 1935. Dashed line 1935 illustrates that in some embodiments of the present disclosure, even after processor 110 sends host garbage collection end message 660 to storage device 120, reclamation unit 420 identified by reclamation unit identifier 625 may continue to be used by processor 110, as indicated by block 1905.

[0152] Fig. 20 The embodiment according to the present disclosure is shown Figure 3 The garbage collection priority unit 340 will Figure 5 The priority 505 is assigned to Figure 4 A flowchart of an example process of the recycling unit 420. Fig. 20 In the example of FIG. 1 , at block 2005, the garbage collection priority unit 340 may assign the priority 505 to the recycling unit 420, and at block 2010, the garbage collection priority unit 340 may store the priority 505 in the storage device 345. Note that the garbage collection priority unit 340 may store the priority 505 in the storage device 345 when the storage device 120 receives the host garbage collection start message 650 or the host garbage collection end message 660. Fig. 20 1905. When the storage device 120 receives the host garbage collection start message 650, as shown in block 1420, the garbage collection priority unit 340 may assign a low priority to the reclaim unit 420 identified by the reclaim unit identifier 625 to try to avoid the storage device 120 selecting the reclaim unit 420 for garbage collection when the processor 110 manages the garbage collection of the reclaim unit 420 identified by the reclaim unit identifier 625. And when the storage device 120 receives the host garbage collection end message 660, as shown in block 1905, the garbage collection priority unit 340 may assign a high priority to the reclaim unit 420 identified by the reclaim unit identifier 625 to try to quickly release the page 405 that has been invalidated during the host-managed garbage collection performed by the processor 110.

[0153] Fig.21 The embodiment according to the present disclosure is shown Figure 1 120 storage devices selected Figure 4 Flowchart of an example process of garbage collection by the recycling unit 420. Fig.21 It may represent a situation where the reclaim unit 420 is currently subject to host-managed garbage collection but the storage device 120 selects the reclaim unit 420 for garbage collection anyway. Fig.21, at block 2105, the storage device 120 may select the reclaim unit 420 for garbage collection. As described above, the storage device 120 may select the reclaim unit 420 for garbage collection even if the processor 110 is managing garbage collection for the reclaim unit 420 due to a media integrity issue or because the storage device is below a threshold number of free pages 405 and requires additional free pages as soon as possible. At block 2110, the storage device 120 may send a garbage collection message 805 to the processor 110, notifying the processor 805 that the storage device 120 has selected the reclaim unit 420 for garbage collection. Finally, at block 1910, the storage device 120 may perform garbage collection on the reclaim unit 420.

[0154] Fig. 22 The embodiment according to the present disclosure is shown Figure 1 The storage device 120 is Figure 4 A flowchart of an example process for performing garbage collection on the recycling unit 420 of FIG. Fig. 22 , at block 2205, the storage device 120 may program the data from the reclaim unit 420 into the new reclaim unit 420. At block 2210, the storage device 120 may store information in the log page 810 about what data (e.g., identified by the logical address 710) has been programmed from the reclaim unit 420 and into which reclaim unit 420 the data has been programmed. Note that in the event that the reclaim unit 420 does not contain any valid data, blocks 2205 and 2210 may be omitted, as indicated by dashed line 2215. (If a reclaim unit 420 does not currently contain any valid data, then the processor 110 is unlikely to attempt to perform host-managed garbage collection of the reclaim unit 420. But even if the processor 110 does not perform host-managed garbage collection of the reclaim unit 420, the processor 110 may still want to know which reclaim unit(s) the data is programmed into, so blocks 2205 and 2210 may still be relevant even when the processor 110 does not perform host-managed garbage collection of the reclaim unit 420. Then, at block 2220, the storage device 120 may erase the reclaim unit 420, thereby returning all pages 405 in the reclaim unit 420 to a free state to be written to again.

[0155] Finally, at block 2225, the storage device 120 may receive a log page request 820 from the processor 110. The log page request 820 may request a log page 810 assembled as described in block 2210. At block 2230, the storage device 120 may send a log page response 825 to the processor 110. The log page response 825 may include the log page 810.

[0156] exist Figure 9-Figure 22In the flowchart, some embodiments of the present disclosure are shown. However, those skilled in the art will recognize that other embodiments of the present disclosure are possible by changing the order of the boxes, by omitting boxes, or by including links not shown in the drawings. All these changes to the flowchart are considered embodiments of the present disclosure, whether explicitly described or not.

[0157] Some embodiments of the present disclosure may include an architecture and method for coordinating garbage collection between a processor and a storage device. By coordinating garbage collection, a processor may choose to manage garbage collection on a reclamation unit. When a processor is managing garbage collection for a reclamation unit, a storage device may attempt to avoid performing garbage collection for the reclamation unit. The processor may have additional information about what will happen to data in a reclamation unit that the storage device may lack. Therefore, the processor may only program valid data that needs to be maintained before notifying the storage device that the reclamation unit may be erased and / or deallocated. A storage device lacking this information may program valid data from a reclamation unit that will be deleted shortly thereafter. By allowing a processor to perform host-managed garbage collection, write amplification of data may be reduced, thereby providing a technical advantage over storage devices that do not support host-managed garbage collection.

[0158] Data placement techniques can manage how data is placed together and how it is deallocated. But data placement techniques do not define a mechanism to coordinate garbage collection (GC) between the host and the device. In a poorly behaved host, the device can perform regular GC as in a regular namespace (CNS). But in a well-behaved host, coordinated GC can have the potential to reduce the write amplification factor (WAF) benefit of FDP in actual workloads because the device can try to perform GC of some logical block addresses (LBAs) just before the host performs GC of the same LBA. Partitioned namespace (ZNS) is another form of data placement that can benefit from embodiments of the present disclosure.

[0159] Embodiments of the present disclosure may include a mechanism for the host (a well-behaved host) to communicate to the device that a GC has been initiated on the RU. The device may then comply with the GC unless a critical capacity threshold is exceeded or if the host does not perform a GC as promised.

[0160] All device actions can be communicated via a specified log page.

[0161] The exception path triggered by the device can occur simultaneously with the normal path of the host. Therefore, the deallocation of LBAs moved by the device is still possible.

[0162] Embodiments of the present disclosure may include methods for identifying LBAs or RUs to suppress drive GC. For example, a new identifier may be provided for each RU. The drive may record the RU_ID, and the host may query the log to identify the current and past RUs that were written.

[0163] The drive may return an asynchronous event request (AER) or asynchronous event notification (AEN) for each RU to the host containing each RU_ID. This information may be provided at the beginning of a write RU or at the end of a fill RU. The host may provide an RU_ID for each write. The host may transition the RU_ID at the transition of each complete RU, and an error protocol may be used for the first / last RU_ID provided by the host. Potentially duplicated RU_IDs provided by the host may be obsolete in the definition of a previous RU_ID.

[0164] As another example, the host may provide an LBA to identify the RU. The drive may then perform a logical-to-physical (L2P) translation of the LBA to the RU.

[0165] The drive can read the super block (SB) metadata information to identify other erase blocks (EBs) in the SB, the LBAs contained in the SB, and the RU identification information. For example, the SB can be defined as one EB per die per plane, but other definitions are also possible, including any desired EB grouping. The drive can generate an LBA list or store RU identification information. Optionally, the drive can return the LBA list to the host. In this way, embodiments of the present invention may also be applicable to conventional storage devices.

[0166] As yet another example, the host may provide a range or list of LBAs. The drive may store a list of LBAs.

[0167] As yet another example, the host may provide one or more zone start LBAs (ZSLBAs) to identify zones that should not be GC'd. Such zones may be "equivalent" to RUs.

[0168] As yet another example, the host may provide a Reclaim Unit Handle (RUH) RUH_ID (or a placement handle identifier converted to a RUH_ID). Using this RUH_ID, the entire persistently isolated RUH or the entire initially isolated RUH pool may be considered "no GC". The drive may use other RUH_IDs that are not included.

[0169] The drive may trigger an emergency data movement due to media integrity issues (read disturb, retention timer, open block timer, etc.).

[0170] As an example of how embodiments of the present disclosure may operate, consider a database system that uses objects to map objects to RUs based on lifetime. When the database reclaims an object, it communicates to the device that a GC has been initiated. The database system may then proceed to deallocate the object. This translates to an RU deallocation. The database system may communicate to the device that a GC has been completed, at which point the physical media in the device may be scheduled for reuse without any intra-device data movement. The host may also tell the drive to emphasize GC on these identifiers.

[0171] The following discussion is intended to provide a brief general description of suitable one or more machines in which certain aspects of the present disclosure may be implemented. One or more machines may be controlled at least in part by input from conventional input devices (such as a keyboard, mouse, etc.) and by instructions received from another machine, interaction with a virtual reality (VR) environment, biometric feedback, or other input signals. As used herein, the term "machine" is intended to broadly cover a single machine, a virtual machine, or a system of communicatively coupled machines, virtual machines, or devices operating together. Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, phones, tablets, etc., and transportation equipment such as private or public transportation, such as cars, trains, cabs, etc.

[0172] One or more machines may include embedded controllers, such as programmable or non-programmable logic devices or arrays, application specific integrated circuits (ASICs), embedded computers, smart cards, etc. One or more machines may utilize one or more connections to one or more remote machines, such as through a network interface, modem, or other communication coupling. The machines may be interconnected through a physical and / or logical network such as an intranet, the Internet, a local area network, a wide area network, etc. Those skilled in the art will appreciate that network communications may utilize a variety of wired and / or wireless short-range or long-range carriers and protocols, including radio frequency (RF), satellite, microwave, Institute of Electrical and Electronics Engineers (IEEE) 802.11, optical, infrared, cable, laser, etc.

[0173] Embodiments of the present disclosure may be described by reference or in conjunction with associated data including functions, procedures, data structures, applications, etc., which, when accessed by a machine, cause the machine to perform a task or define an abstract data type or a low-level hardware context. The associated data may be stored, for example, in volatile and / or non-volatile memory (e.g., RAM, ROM, etc.), or in other storage devices and their associated storage media (including hard disk drives, floppy disks, optical storage, magnetic tapes, flash memory, memory sticks, digital video disks, bio-storage, etc.). The associated data may be transmitted in a transmission environment (including physical and / or logical networks) in the form of packets, serial data, parallel data, propagation signals, etc., and may be used in a compressed or encrypted format. The associated data may be used in a distributed environment and stored locally and / or remotely for machine access.

[0174] Embodiments of the present disclosure may include a tangible, non-transitory machine-readable medium including instructions executable by one or more processors, the instructions including instructions for performing elements of the present disclosure as described herein.

[0175] The various operations of the above methods may be performed by any suitable unit capable of performing the operations, such as various hardware and / or software components, circuits and / or modules. Software may include an ordered list of executable instructions for implementing logical functions, and may be embodied in any "processor-readable medium" for use by or in conjunction with an instruction execution system, device or apparatus (such as a single-core or multi-core processor or a system including a processor).

[0176] The blocks or steps of the methods or algorithms and functions described in conjunction with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. If implemented in software, the functions may be stored on or transmitted by a tangible, non-transitory computer-readable medium. The software module may reside in a random access memory (RAM), a flash memory, a read-only memory (ROM), an electrically programmable ROM (EPROM), an electrically erasable programmable ROM (EEPROM), a register, a hard disk, a removable disk, a CD ROM, or any other form of storage media known in the art.

[0177] The principles of the present disclosure have been described and illustrated with reference to the illustrated embodiments, and it will be appreciated that the illustrated embodiments may be modified in arrangement and detail without departing from these principles, and may be combined in any desired manner. Also, although the foregoing discussion has focused on specific embodiments, other configurations are contemplated. In particular, even though expressions such as "according to embodiments of the present disclosure" and the like are used herein, these phrases are generally intended to reference embodiment possibilities, and are not intended to limit the present disclosure to specific embodiment configurations. As used herein, these terms may refer to the same or different embodiments that may be combined into other embodiments.

[0178] The foregoing illustrative embodiments should not be construed as limiting the disclosure thereof. Although some embodiments have been described, it will be readily appreciated by those skilled in the art that many modifications may be made to these embodiments without substantially departing from the novel teachings and advantages of the present disclosure. Therefore, all such modifications are intended to be included within the scope of the present disclosure as defined in the claims.

[0179] The embodiments of the present disclosure may be extended to the following statements, but are not limited thereto:

[0180] Statement 1. An embodiment of the present disclosure includes a system comprising:

[0181] storage devices; and

[0182] a processor configured to send a write request to a storage device, the write request including data to be written and a reclaim unit identifier identifying how the data is to be organized on the storage device,

[0183] The processor is further configured to send a message to the storage device regarding management of garbage collection of the recycling unit identified by the recycling unit identifier.

[0184] Statement 2. An embodiment of the present disclosure includes the system of statement 1, wherein the message includes a host garbage collection start message.

[0185] Statement 3. An embodiment of the present disclosure includes the system of statement 1, wherein the message notifies the storage device that the processor is responsible for managing garbage collection for the reclaim unit identified by the reclaim unit identifier.

[0186] Statement 4. An embodiment of the present disclosure includes the system of statement 1, wherein the message notifies the storage device to prioritize garbage collection of the second reclamation unit over garbage collection of the reclamation unit identified by the reclamation unit identifier.

[0187] Statement 5. An embodiment of the present disclosure includes the system of statement 1, wherein the processor is further configured to request allocation of a reclaim unit.

[0188] Statement 6. An embodiment of the present disclosure includes the system of statement 1, wherein the storage device is configured to assign a first garbage collection priority to the recycling unit.

[0189] Statement 7. An embodiment of the present disclosure includes a system according to statement 6, wherein:

[0190] The storage device includes a second recovery unit; and

[0191] The storage device includes a garbage collection priority unit for assigning a second garbage collection priority to the second recycling unit, the first garbage collection priority being lower than the second garbage collection priority.

[0192] Statement 8. An embodiment of the present disclosure includes the system of statement 7, wherein the storage device is configured to perform garbage collection of the second reclamation unit based at least in part on the first garbage collection priority and the second garbage collection priority.

[0193] Statement 9. An embodiment of the present disclosure includes the system of statement 7, wherein the storage device includes storage means for the first garbage collection priority and the second garbage collection priority.

[0194] Statement 10. An embodiment of the present disclosure includes a system according to statement 1, wherein:

[0195] The recycling unit comprises a first size; and

[0196] The storage device includes a second reclaim unit, and the second reclaim unit includes a second size.

[0197] Statement 11. An embodiment of the present disclosure includes the system of statement 10, wherein the first size and the second size are different.

[0198] Statement 12. An embodiment of the present disclosure includes the system of statement 10, wherein the first size and the second size are equal.

[0199] Statement 13. An embodiment of the present disclosure includes the system of statement 1, wherein the processor is further configured to send a message to the storage device to notify the storage device to perform garbage collection of the recycling unit.

[0200] Statement 14. An embodiment of the present disclosure includes the system of statement 13, wherein the message includes a host garbage collection end message.

[0201] Statement 15. An embodiment of the present disclosure includes the system of statement 13, wherein the message includes a deallocation request.

[0202] Statement 16. An embodiment of the present disclosure includes the system of statement 13, wherein the processor is further configured to send a deallocation request to the storage device to request the storage device to deallocate the reclamation unit.

[0203] Statement 17. An embodiment of the present disclosure includes the system of statement 13, wherein the processor is further configured to notify the storage device to assign garbage collection priorities to the recycling unit.

[0204] Statement 18. An embodiment of the present disclosure includes the system of statement 13, wherein the processor is further configured to send a message to a storage device to notify the storage device to perform garbage collection of the reclamation unit based at least in part on the processor deallocating the reclamation unit.

[0205] Statement 19. An embodiment of the present disclosure includes the system of statement 13, wherein the processor is further configured to send a message to the storage device to notify the storage device to perform garbage collection of the reclaim unit based at least in part on the processor programming data from the reclaim unit into the second reclaim unit.

[0206] Statement 20. An embodiment of the present disclosure includes a system according to statement 19, wherein the processor is further configured to read the second data from the recycling unit in the storage device, write the second data to the second recycling unit in the storage device, and delete the second data from the recycling unit in the storage device.

[0207] Statement 21. An embodiment of the present disclosure includes a system according to statement 1, wherein the processor is further configured to send a message to a storage device to notify the storage device that the processor manages garbage collection of a reclaim unit based at least in part on a reclaim unit identifier, a reclaim unit handle, a logical address of data, or a logical address range.

[0208] Statement 22. An embodiment of the present disclosure includes a system according to statement 21, wherein:

[0209] The processor is further configured to send a message to the storage device to notify the storage device that the processor manages garbage collection of the reclaim unit based at least in part on the reclaim unit handle; and

[0210] The storage device is configured to identify a reclaim unit based at least in part on the reclaim unit handle.

[0211] Statement 23. An embodiment of the present disclosure includes the system of statement 22, wherein the storage device is further configured to identify the second reclaim unit based at least in part on the reclaim unit handle.

[0212] Statement 24. An embodiment of the present disclosure includes a system according to statement 21, wherein:

[0213] The processor is further configured to send a message to the storage device to notify the storage device that the processor manages garbage collection of the reclamation unit based at least in part on the logical address of the data; and

[0214] The storage device is configured to identify a reclaim unit based at least in part on a logical address of the data.

[0215] Statement 25. An embodiment of the present disclosure includes the system of statement 24, wherein the recycling unit includes a logical address of the data.

[0216] Statement 26. An embodiment of the present disclosure includes a system as described in statement 24, wherein the storage device includes storage means for associating a logical address of the data with a recycling unit.

[0217] Statement 27. Embodiments of the present disclosure include the system of statement 26, wherein the storage device includes a flash translation layer.

[0218] Statement 28. An embodiment of the present disclosure includes the system of statement 24, wherein the logical address of the data comprises a region start logical address.

[0219] Statement 29. An embodiment of the present disclosure includes a system according to statement 21, wherein:

[0220] The processor is further configured to send a message to the storage device to notify the storage device that the processor manages garbage collection of the reclamation unit based at least in part on the logical address range; and

[0221] The storage device is configured to identify a reclamation unit based at least in part on a logical address range.

[0222] Statement 30. An embodiment of the present disclosure includes the system of statement 29, wherein the reclaim unit includes a logical address of data in a logical address range.

[0223] Statement 31. An embodiment of the present disclosure includes the system of statement 30, wherein the storage device is further configured to identify a second reclaim unit based at least in part on the logical address range, the second reclaim unit including a second logical address in the logical address range.

[0224] Statement 32. An embodiment of the present disclosure includes the system of statement 1, wherein the storage device includes a controller for selecting a recycling unit for garbage collection and for sending a garbage collection message to the processor to notify the processor.

[0225] Statement 33. An embodiment of the present disclosure includes the system of statement 32, wherein the storage device includes a log page that identifies the reclaim unit as selected by the storage device for garbage collection.

[0226] Statement 34. An embodiment of the present disclosure includes the system of statement 33, wherein the processor is configured to determine that the storage device has selected a reclamation unit for garbage collection based at least in part on the log page.

[0227] Statement 35. An embodiment of the present disclosure includes the system of statement 32, wherein the controller is configured to select a recycling unit for garbage collection based at least in part on a media integrity issue.

[0228] Statement 36. An embodiment of the present disclosure includes the system of statement 35, wherein the media integrity issue includes a read disturb, a retention timer, or an open timer.

[0229] Statement 37. An embodiment of the present disclosure includes the system of statement 1, wherein the processor is further configured to determine a reclaim unit identifier from a log page written by the storage device.

[0230] Statement 38. An embodiment of the present disclosure includes the system of statement 37, wherein the processor is further configured to send a log page request to the storage device to request the log page.

[0231] Statement 39. An embodiment of the present disclosure includes the system of statement 1, wherein the storage device is further configured to send a reclaim unit identifier response including a reclaim unit identifier to the processor.

[0232] Statement 40. An embodiment of the present disclosure includes the system of statement 39, wherein the processor is further configured to send a reclaim unit identifier request to the storage device to request the reclaim unit identifier from the storage device.

[0233] Statement 41. An embodiment of the disclosure includes the system of statement 39, wherein the processor is further configured to receive a reclaim unit identifier from the storage device in response to a second write request including second data.

[0234] Statement 42. An embodiment of the present disclosure includes the system of statement 41, wherein the storage device is configured to write the second data to the reclaim unit as the first data in the reclaim unit.

[0235] Statement 43. An embodiment of the present disclosure includes the system of statement 41, wherein the storage device is configured to write the second data to the reclaim unit as the last data in the reclaim unit.

[0236] Statement 44. An embodiment of the present disclosure includes a method comprising:

[0237] sending a write request from a processor to a storage device, the write request including data to be written and a reclaim unit identifier identifying how the data is to be organized on the storage device; and

[0238] A message is sent from the processor to the storage device regarding management of garbage collection for a reclamation unit identified by the reclamation unit identifier.

[0239] Statement 45. An embodiment of the present disclosure includes a method according to statement 44, wherein sending a message from a processor to a storage device regarding the management of garbage collection of a recycling unit identified by a recycling unit identifier includes sending a host garbage collection start message from the processor to the storage device regarding the management of garbage collection of the recycling unit identified by the recycling unit identifier.

[0240] Statement 46. An embodiment of the present disclosure includes a method according to statement 44, wherein sending a message from a processor to a storage device regarding the management of garbage collection of a recycling unit identified by a recycling unit identifier includes notifying the storage device that the processor is responsible for managing garbage collection of the recycling unit identified by the recycling unit identifier.

[0241] Statement 47. An embodiment of the present disclosure includes a method according to statement 44, wherein sending a message from a processor to a storage device regarding the management of garbage collection of a recycling unit identified by a recycling unit identifier includes notifying the storage device to prioritize garbage collection of a second recycling unit over garbage collection of the recycling unit identified by the recycling unit identifier.

[0242] Statement 48. An embodiment of the present disclosure includes the method according to statement 44, further comprising:

[0243] sending an allocate reclaim unit request from the processor to the storage device; and

[0244] An allocation reclaim unit response is received at a processor from a storage device.

[0245] Statement 49. An embodiment of the present disclosure includes the method of statement 48, wherein the allocate reclamation unit request includes a size or continuation flag.

[0246] Statement 50. An embodiment of the present disclosure includes the method of statement 48 wherein the allocating reclamation unit response includes a reclamation unit identifier.

[0247] Statement 51. An embodiment of the present disclosure includes the method of statement 44, further comprising sending a second message to the storage device regarding management of garbage collection of the recycling unit.

[0248] Statement 52. An embodiment of the present disclosure includes a method according to statement 51, wherein sending a second message to the storage device regarding management of garbage collection of the recycling unit includes sending a host garbage collection end message to the storage device to notify the storage device that the storage device can manage garbage collection of the recycling unit.

[0249] Statement 53. An embodiment of the present disclosure includes a method according to statement 51, wherein sending a second message to the storage device regarding management of garbage collection of the reclaim unit includes sending a deallocation request to the storage device requesting the storage device to deallocate the reclaim unit identified by the reclaim unit identifier.

[0250] Statement 54. An embodiment of the present disclosure includes the method according to statement 44, further comprising:

[0251] sending a log page request from a processor to a storage device to request a log page, the log page including a reclaim unit identifier; and

[0252] A log page response is received at a processor from a storage device, the log page response including a log page.

[0253] Statement 55. An embodiment of the present disclosure includes a method according to statement 44, wherein the reclaim unit identifier includes a reclaim unit handle, a logical address of the data, or a logical address range.

[0254] Statement 56. An embodiment of the present disclosure includes the method according to statement 55, further comprising:

[0255] sending a reclaim unit identifier request from a processor (110) to a storage device to request a reclaim unit handle, the reclaim unit handle identifying a reclaim unit; and

[0256] A reclaim unit identifier response is received at a processor from the storage device, the reclaim unit identifier response including a reclaim unit handle from the storage device at the processor.

[0257] Statement 57. An embodiment of the present disclosure includes the method of statement 56, wherein the recycling unit handle further identifies a second recycling unit.

[0258] Statement 58. An embodiment of the present disclosure includes the method of statement 55 wherein a logical address of the data identifies a recycling unit.

[0259] Statement 59. An embodiment of the present disclosure includes the method of statement 58 wherein the reclaim unit comprises a logical address of the data.

[0260] Statement 60. An embodiment of the present disclosure includes the method of statement 58, wherein the logical address of the data comprises a region start logical address.

[0261] Statement 61. An embodiment of the present disclosure includes the method of statement 55 wherein a logical address range identifies a reclaim unit.

[0262] Statement 62. An embodiment of the present disclosure includes the method of statement 61 wherein the reclaim unit comprises a logical address of data in a logical address range.

[0263] Statement 63. An embodiment of the present disclosure includes the method of statement 62, wherein the second reclaim unit includes a second logical address in the logical address range.

[0264] Statement 64. An embodiment of the present disclosure includes the method of statement 44, further comprising performing garbage collection of the recycling unit by the processor.

[0265] Statement 65. An embodiment of the present disclosure includes the method of statement 64, wherein performing garbage collection of the reclaim unit by the processor includes sending a delete request from the processor to the storage device to delete data from the reclaim unit.

[0266] Statement 66. An embodiment of the present disclosure includes the method of statement 64, wherein performing, by the processor, garbage collection of the reclaim unit includes sending a read request from the processor to a storage device to read data from the reclaim unit.

[0267] Statement 67. An embodiment of the present disclosure includes the method of statement 66, wherein performing garbage collection of the reclaim unit by the processor further comprises sending a second write request from the processor to the storage device to write data to the second reclaim unit.

[0268] Statement 68. An embodiment of the present disclosure includes the method of statement 66, wherein performing, by the processor, garbage collection of the reclaim unit includes sending, from the processor, a second write request to the second storage device to write data to the second reclaim unit.

[0269] Statement 69. An embodiment of the present disclosure includes the method of statement 44, further comprising receiving, at the processor, a garbage collection message from the storage device, the garbage collection message instructing the storage device to perform garbage collection of the reclamation unit.

[0270] Statement 70. An embodiment of the present disclosure includes the method according to statement 69, further comprising:

[0271] sending a log page request from the processor to the storage device to request a log page, the log page identifying a second reclamation unit identifier of how data is organized on the storage device; and

[0272] A log page response is received at a processor from a storage device, the log page response including a log page.

[0273] Statement 71. An embodiment of the present disclosure includes a method comprising:

[0274] receiving, at a storage device, a write request from a processor, the write request including data to be written and a reclaim unit identifier identifying how the data is to be organized on the storage device;

[0275] writing the data to a reclaim unit identified by the reclaim unit identifier; and

[0276] A message is received at a storage device from a processor regarding management of garbage collection of a reclaim unit identified by a reclaim unit identifier.

[0277] Statement 72. An embodiment of the present disclosure includes a method according to statement 71, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes receiving a host garbage collection start message from the processor at the storage device regarding management of garbage collection of a recycling unit identified by the recycling unit identifier.

[0278] Statement 73. An embodiment of the present disclosure includes a method according to statement 71, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes receiving a message from a processor at the storage device that the processor is responsible for managing garbage collection of a recycling unit identified by the recycling unit identifier.

[0279] Statement 74. An embodiment of the present disclosure includes a method according to statement 71, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes receiving a message at the storage device to prioritize garbage collection of a second recycling unit over garbage collection of the recycling unit identified by the recycling unit identifier.

[0280] Statement 75. An embodiment of the present disclosure includes the method according to statement 71, further comprising:

[0281] receiving, at the storage device, an allocation reclaim unit request from a processor; and

[0282] An allocation reclaim unit response is sent from the storage device to the processor.

[0283] Statement 76. An embodiment of the present disclosure includes the method of statement 75, further comprising allocating reclamation units based at least in part on an allocate reclamation unit request.

[0284] Statement 77. Embodiments of the present disclosure include the method of statement 76, wherein:

[0285] The request to allocate a reclamation unit includes a size or continuation flag; and

[0286] Allocating reclamation units based at least in part on the allocate reclamation unit request includes allocating reclamation units based at least in part on a size or a continuation flag.

[0287] Statement 78. An embodiment of the present disclosure includes the method of statement 76, wherein:

[0288] Allocating a reclamation unit based at least in part on the allocate reclamation unit request includes assigning a reclamation unit identifier to the reclamation unit; and

[0289] The allocate reclamation unit response includes a reclamation unit identifier.

[0290] Statement 79. An embodiment of the present disclosure includes the method of statement 71, wherein receiving, at the storage device, a message from a processor regarding management of garbage collection for a reclaim unit identified by a reclaim unit identifier includes assigning a priority to the reclaim unit.

[0291] Statement 80. An embodiment of the present disclosure includes the method of statement 79, wherein receiving at the storage device a message from a processor regarding management of garbage collection for a reclamation unit identified by a reclamation unit identifier further comprises storing a priority assigned to the reclamation unit in the storage device.

[0292] Statement 81. An embodiment of the present disclosure includes the method of statement 71, further comprising sending a reclaim unit identifier response from the storage device to the processor, the reclaim unit identifier response including the reclaim unit identifier.

[0293] Statement 82. An embodiment of the present disclosure includes the method of statement 81 wherein sending a reclaim unit identifier response from the storage device to the processor includes receiving a reclaim unit identifier request from the processor at the storage device for the reclaim unit identifier.

[0294] Statement 83. An embodiment of the present disclosure includes a method according to statement 81, wherein sending a reclaim unit identifier response from the storage device to the processor includes sending a reclaim unit identifier response from the storage device to the processor based at least in part on receiving a write request from the host at the storage device.

[0295] Statement 84. An embodiment of the present disclosure includes the method of statement 81 wherein sending a reclaim unit identifier response from the storage device to the processor comprises:

[0296] receiving, at the storage device, a second write request from the processor, the second write request including second data to be written; and

[0297] Based at least in part on receiving a second write request from the processor at the storage device, a reclaim unit identifier response is sent from the storage device to the processor.

[0298] Statement 85. An embodiment of the present disclosure includes the method of statement 84, wherein sending a reclaim unit identifier response from the storage device to the processor further comprises writing the second data to the reclaim unit as the first data in the reclaim unit.

[0299] Statement 86. An embodiment of the present disclosure includes the method of statement 84, wherein sending the reclaim unit identifier response from the storage device to the processor further comprises writing the second data to the reclaim unit as last data in the reclaim unit.

[0300] Statement 87. An embodiment of the present disclosure includes the method according to statement 71, further comprising:

[0301] receiving, at a storage device, from a processor, a reclaim unit identifier request for a log page, the log page including a reclaim unit identifier; and

[0302] A reclaim unit identifier response is sent from the storage device to the processor.

[0303] Statement 88. An embodiment of the present disclosure includes a method according to statement 71, wherein the reclaim unit identifier includes a reclaim unit handle, a logical address of the data, or a logical address range.

[0304] Statement 89. An embodiment of the present disclosure includes the method according to statement 88, further comprising:

[0305] receiving, at the storage device, from a processor, a reclaim unit identifier request for a reclaim unit handle; and

[0306] sending a reclaim unit identifier response from the storage device to the processor, the reclaim unit identifier response including a reclaim unit handle,

[0307] Among them, the recycling unit handle identifies the recycling unit.

[0308] Statement 90. An embodiment of the present disclosure includes the method of statement 89, wherein the recycling unit handle further identifies a second recycling unit.

[0309] Statement 91. An embodiment of the present disclosure includes the method of statement 88, wherein:

[0310] The recycling unit identifier includes a logical address; and

[0311] The method also includes identifying the reclaim unit from an association between the logical address and the reclaim unit.

[0312] Statement 92. An embodiment of the present disclosure includes the method of statement 91 wherein the reclaim unit includes a logical address of the data.

[0313] Statement 93. An embodiment of the present disclosure includes a method according to statement 91, wherein the logical address of the data includes a region start logical address.

[0314] Statement 94. An embodiment of the present disclosure includes the method of statement 88, wherein:

[0315] The reclaim unit identifier includes a logical address range; and

[0316] The method also includes identifying the reclaim unit from an association between the logical address range and the reclaim unit.

[0317] Statement 95. An embodiment of the present disclosure includes the method of statement 94 wherein the reclaim unit comprises a logical address of data in a logical address range.

[0318] Statement 96. Embodiments of the present disclosure include the method of statement 95, wherein:

[0319] The second reclaim unit includes a second logical address in the logical address range; and

[0320] The method also includes identifying a second reclamation unit from a second association between the logical address range and the second reclamation unit.

[0321] Statement 97. An embodiment of the present disclosure includes the method of statement 71, further comprising receiving, at the storage device, from the processor, a message regarding management of garbage collection of a reclamation unit identified by the reclamation unit identifier.

[0322] Statement 98. An embodiment of the present disclosure includes a method according to statement 97, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes receiving a host garbage collection end message from the processor at the storage device notifying the storage device that the storage device manages garbage collection of the recycling unit identified by the recycling unit identifier.

[0323] Statement 99. An embodiment of the present disclosure includes the method of statement 97, wherein receiving, at the storage device, a message from a processor regarding management of garbage collection for a reclaim unit identified by a reclaim unit identifier includes assigning a priority to the reclaim unit.

[0324] Statement 100. An embodiment of the present disclosure includes a method according to statement 99, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier further includes storing a priority assigned to the reclamation unit in the storage device.

[0325] Statement 101. An embodiment of the present disclosure includes a method according to statement 97, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier includes performing garbage collection of the reclamation unit by the storage device.

[0326] Statement 102. An embodiment of the present disclosure includes a method according to statement 71, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier includes receiving a deallocation request from the processor at the storage device.

[0327] Statement 103. An embodiment of the present disclosure includes the method of statement 102, wherein receiving, at the storage device, a message from a processor regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier further comprises deallocating, by the storage device, the reclamation unit.

[0328] Statement 104. An embodiment of the present disclosure includes the method according to statement 71, further comprising:

[0329] Selecting, by the storage device, a recycling unit for garbage collection; and

[0330] Garbage collection is performed by the storage device on the recycling unit.

[0331] Statement 105. An embodiment of the present disclosure includes the method of statement 104 wherein selecting, by the storage device, a reclaim unit for garbage collection comprises selecting, by the storage device, a reclaim unit for garbage collection based at least in part on a media integrity issue.

[0332] Statement 106. An embodiment of the present disclosure includes the method of statement 105 wherein the media integrity issue comprises a read disturb, a retention timer, or an open timer.

[0333] Statement 107. An embodiment of the present disclosure includes the method of statement 104, further comprising sending a garbage collection message from the storage device to the processor that a reclaim unit was selected by the storage device for garbage collection.

[0334] Statement 108. An embodiment of the present disclosure includes the method of statement 107, wherein:

[0335] performing, by the storage device, garbage collection on the reclaim unit includes programming, by the storage device, data from the reclaim unit into a second reclaim unit; and

[0336] Sending a garbage collection message from the storage device to the processor that a reclamation unit was selected by the storage device for garbage collection includes writing, by the storage device, a second reclamation unit identifier identifying the second reclamation unit to the log page.

[0337] Statement 109. An embodiment of the present disclosure includes a method according to statement 108, wherein sending a garbage collection message from the storage device to the processor that a reclaim unit was selected by the storage device for garbage collection includes sending a log page response from the storage device to the processor, the log page response including a log page.

[0338] Statement 110. An embodiment of the disclosure includes the method of statement 109 wherein sending a log page response from the storage device to the processor comprises receiving a log page request for a log page from the processor at the storage device.

[0339] Statement 111. Embodiments of the present disclosure include an article of manufacture comprising a non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:

[0340] sending a write request from a processor to a storage device, the write request including data to be written and a reclaim unit identifier identifying how the data is to be organized on the storage device; and

[0341] A message is sent from the processor to the storage device regarding management of garbage collection for a reclamation unit identified by the reclamation unit identifier.

[0342] Statement 112. An embodiment of the present disclosure includes an article according to statement 111, wherein sending a message from a processor to a storage device regarding the management of garbage collection of a recycling unit identified by a recycling unit identifier includes sending a host garbage collection start message from the processor to the storage device regarding the management of garbage collection of the recycling unit identified by the recycling unit identifier.

[0343] Statement 113. An embodiment of the present disclosure includes an article according to statement 111, wherein sending a message from a processor to a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes notifying the storage device that the processor is responsible for managing garbage collection of the recycling unit identified by the recycling unit identifier.

[0344] Statement 114. An embodiment of the present disclosure includes an article according to statement 111, wherein sending a message from a processor to a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes notifying the storage device to prioritize garbage collection of a second recycling unit over garbage collection of the recycling unit identified by the recycling unit identifier.

[0345] Statement 115. Embodiments of the present disclosure include an article of manufacture according to statement 111, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by a machine, causing:

[0346] sending an allocate reclaim unit request from the processor to the storage device; and

[0347] An allocation reclaim unit response is received at a processor from a storage device.

[0348] Statement 116. An embodiment of the present disclosure includes the article of manufacture of statement 115, wherein the allocate reclamation unit request includes a size or continuation flag.

[0349] Statement 117. An embodiment of the present disclosure includes the article of manufacture of statement 115, wherein the allocating recycling unit response includes a recycling unit identifier.

[0350] Statement 118. An embodiment of the present disclosure includes the article of manufacture of statement 111, the non-transitory storage medium having further instructions stored thereon that, when executed by the machine, result in sending a second message to the storage device regarding management of garbage collection of the reclamation unit.

[0351] Statement 119. An embodiment of the present disclosure includes an article of manufacture according to statement 118, wherein sending a second message to the storage device regarding management of garbage collection of the reclaim unit includes sending a host garbage collection end message to the storage device that notifies the storage device that the storage device can manage garbage collection of the reclaim unit.

[0352] Statement 120. An embodiment of the present disclosure includes an article of manufacture according to statement 111, wherein sending a second message to the storage device regarding management of garbage collection of the reclaim unit includes sending a deallocation request to the storage device requesting the storage device to deallocate the reclaim unit identified by the reclaim unit identifier.

[0353] Statement 121. Embodiments of the present disclosure include an article of manufacture according to statement 111, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by a machine, causing:

[0354] sending a log page request from a processor to a storage device to request a log page, the log page including a reclaim unit identifier; and

[0355] A log page response is received at a processor from a storage device, the log page response including a log page.

[0356] Statement 122. An embodiment of the present disclosure includes an article of manufacture as described in statement 111, wherein the reclaim unit identifier includes a reclaim unit handle, a logical address of the data, or a logical address range.

[0357] Statement 123. Embodiments of the present disclosure include an article of manufacture according to statement 122, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by a machine, causing:

[0358] sending a reclaim unit identifier request from a processor (110) to a storage device to request a reclaim unit handle, the reclaim unit handle identifying a reclaim unit; and

[0359] A reclaim unit identifier response is received at a processor from the storage device, the reclaim unit identifier response including a reclaim unit handle from the storage device at the processor.

[0360] Statement 124. An embodiment of the present disclosure includes an article of manufacture as recited in statement 123, wherein the recycling unit handle further identifies a second recycling unit.

[0361] Statement 125. An embodiment of the present disclosure includes an article of manufacture as recited in statement 122, wherein a logical address of the data identifies a recycling unit.

[0362] Statement 126. An embodiment of the present disclosure includes an article of manufacture as defined in statement 125, wherein the reclaim unit includes a logical address of the data.

[0363] Statement 127. An embodiment of the present disclosure includes an article of manufacture according to statement 125, wherein the logical address of the data includes a region start logical address.

[0364] Statement 128. An embodiment of the present disclosure includes the article of manufacture of statement 122, wherein a logical address range identifies a reclamation unit.

[0365] Statement 129. An embodiment of the present disclosure includes an article of manufacture as recited in statement 128, wherein the reclaim unit comprises a logical address of data in a logical address range.

[0366] Statement 130. An embodiment of the present disclosure includes the article of manufacture of statement 129, wherein the second reclaim unit comprises a second logical address in the range of logical addresses.

[0367] Statement 131. Embodiments of the present disclosure include the article of manufacture of statement 111, the non-transitory storage medium having further instructions stored thereon that, when executed by a machine, cause a processor to perform garbage collection of a reclamation unit.

[0368] Statement 132. An embodiment of the present disclosure includes an article of manufacture as described in statement 131, wherein performing garbage collection of the reclaim unit by the processor includes sending a delete request from the processor to the storage device to delete data from the reclaim unit.

[0369] Statement 133. An embodiment of the present disclosure includes an article of manufacture as recited in statement 131, wherein performing, by the processor, garbage collection of the reclamation unit comprises sending, from the processor, a read request to a storage device to read data from the reclamation unit.

[0370] Statement 134. An embodiment of the present disclosure includes an article of manufacture as described in statement 133, wherein performing garbage collection of the reclamation unit by the processor further comprises sending a second write request from the processor to the storage device to write data to the second reclamation unit.

[0371] Statement 135. An embodiment of the present disclosure includes an article of manufacture as described in statement 133, wherein performing garbage collection of the reclamation unit by the processor includes sending a second write request from the processor to the second storage device to write data to the second reclamation unit.

[0372] Statement 136. An embodiment of the present disclosure includes an article according to statement 111, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by the machine, causing a garbage collection message to be received at the processor from the storage device, the garbage collection message instructing the storage device to perform garbage collection of the reclamation unit.

[0373] Statement 137. Embodiments of the present disclosure include an article of manufacture according to statement 136, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by a machine, causing:

[0374] sending a log page request from the processor to the storage device to request a log page, the log page identifying a second reclaim unit identifier that organizes data on the storage device; and

[0375] A log page response is received at a processor from a storage device, the log page response including a log page.

[0376] Statement 138. Embodiments of the present disclosure include an article of manufacture comprising a non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:

[0377] receiving, at a storage device, a write request from a processor, the write request including data to be written and a reclaim unit identifier identifying how the data is to be organized on the storage device;

[0378] writing the data to a reclaim unit identified by the reclaim unit identifier; and

[0379] A message is received at a storage device from a processor regarding management of garbage collection of a reclaim unit identified by a reclaim unit identifier.

[0380] Statement 139. An embodiment of the present disclosure includes an article according to statement 138, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes receiving a host garbage collection start message from the processor at the storage device regarding management of garbage collection of the recycling unit identified by the recycling unit identifier.

[0381] Statement 140. An embodiment of the present disclosure includes an article according to statement 138, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes receiving a message from a processor at the storage device that the processor is responsible for managing garbage collection of a recycling unit identified by the recycling unit identifier.

[0382] Statement 141. An embodiment of the present disclosure includes an article according to statement 138, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes receiving a message at the storage device to prioritize garbage collection of a second recycling unit over garbage collection of the recycling unit identified by the recycling unit identifier.

[0383] Statement 142. Embodiments of the present disclosure include the article of manufacture of statement 138, the non-transitory storage medium having further instructions stored thereon, the further instructions when executed by a machine resulting in:

[0384] receiving, at the storage device, an allocation reclaim unit request from a processor; and

[0385] An allocation reclaim unit response is sent from the storage device to the processor.

[0386] Statement 143. An embodiment of the present disclosure includes the article of manufacture of statement 142, the non-transitory storage medium having further instructions stored thereon that, when executed by a machine, result in allocating a reclamation unit based at least in part on an allocate reclamation unit request.

[0387] Statement 144. Embodiments of the present disclosure include an article according to statement 143, wherein:

[0388] The request to allocate a reclamation unit includes a size or continuation flag; and

[0389] Allocating reclamation units based at least in part on the allocate reclamation unit request includes allocating reclamation units based at least in part on a size or a continuation flag.

[0390] Statement 145. Embodiments of the present disclosure include an article according to statement 143, wherein:

[0391] Allocating a reclamation unit based at least in part on the allocate reclamation unit request includes assigning a reclamation unit identifier to the reclamation unit; and

[0392] The allocate reclamation unit response includes a reclamation unit identifier.

[0393] Statement 146. An embodiment of the present disclosure includes an article of manufacture as recited in statement 138, wherein receiving, at the storage device, a message from a processor regarding management of garbage collection for a reclamation unit identified by a reclamation unit identifier includes assigning a priority to the reclamation unit.

[0394] Statement 147. An embodiment of the present disclosure includes an article of manufacture according to statement 146, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier further includes storing a priority assigned to the reclamation unit in the storage device.

[0395] Statement 148. An embodiment of the present disclosure includes an article of manufacture according to statement 138, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by the machine, causing a reclaim unit identifier response to be sent from the storage device to the processor, the reclaim unit identifier response including the reclaim unit identifier.

[0396] Statement 149. An embodiment of the present disclosure includes an article of manufacture as described in statement 148, wherein sending a reclaim unit identifier response from the storage device to the processor includes receiving a reclaim unit identifier request from the processor at the storage device for the reclaim unit identifier.

[0397] Statement 150. An embodiment of the present disclosure includes an article of manufacture according to statement 148, wherein sending a reclaim unit identifier response from the storage device to the processor includes sending a reclaim unit identifier response from the storage device to the processor based at least in part on receiving a write request from the host at the storage device.

[0398] Statement 151. An embodiment of the present disclosure includes the article of manufacture of statement 148, wherein sending a reclaim unit identifier response from the storage device to the processor comprises:

[0399] receiving, at the storage device, a second write request from the processor, the second write request including second data to be written; and

[0400] Based at least in part on receiving a second write request from the processor at the storage device, a reclaim unit identifier response is sent from the storage device to the processor.

[0401] Statement 152. An embodiment of the present disclosure includes an article of manufacture as described in statement 151, wherein sending a reclaim unit identifier response from the storage device to the processor further comprises writing the second data to the reclaim unit as the first data in the reclaim unit.

[0402] Statement 153. An embodiment of the present disclosure includes the article of manufacture of statement 151, wherein sending a reclaim unit identifier response from the storage device to the processor further comprises writing the second data to the reclaim unit as last data in the reclaim unit.

[0403] Statement 154. Embodiments of the present disclosure include the article of manufacture of statement 138, the non-transitory storage medium having further instructions stored thereon, the further instructions when executed by a machine resulting in:

[0404] receiving, at a storage device, from a processor, a reclaim unit identifier request for a log page, the log page including a reclaim unit identifier; and

[0405] A reclaim unit identifier response is sent from the storage device to the processor.

[0406] Statement 155. An embodiment of the present disclosure includes an article of manufacture as described in statement 138, wherein the reclaim unit identifier includes a reclaim unit handle, a logical address of the data, or a logical address range.

[0407] Statement 156. Embodiments of the present disclosure include an article of manufacture according to statement 155, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by a machine, causing:

[0408] receiving, at the storage device, from a processor, a reclaim unit identifier request for a reclaim unit handle; and

[0409] sending a reclaim unit identifier response from the storage device to the processor, the reclaim unit identifier response including a reclaim unit handle,

[0410] Among them, the recycling unit handle identifies the recycling unit.

[0411] Statement 157. An embodiment of the present disclosure includes an article of manufacture as recited in statement 156, wherein the recycling unit handle further identifies a second recycling unit.

[0412] Statement 158. Embodiments of the present disclosure include an article according to statement 155, wherein:

[0413] The recycling unit identifier includes a logical address; and

[0414] The non-transitory storage medium has further instructions stored thereon that, when executed by a machine, result in identifying a reclamation unit from an association between a logical address and a reclamation unit.

[0415] Statement 159. An embodiment of the present disclosure includes an article of manufacture as defined in statement 158, wherein the reclaim unit includes a logical address of the data.

[0416] Statement 160. An embodiment of the present disclosure includes an article of manufacture as described in statement 158, wherein the logical address of the data includes a region start logical address.

[0417] Statement 161. Embodiments of the present disclosure include an article according to statement 155, wherein:

[0418] The reclaim unit identifier includes a logical address range; and

[0419] The non-transitory storage medium has further instructions stored thereon that, when executed by a machine, result in identifying a reclamation unit from an association between a logical address range and a reclamation unit.

[0420] Statement 162. An embodiment of the present disclosure includes an article of manufacture as recited in statement 161 wherein the reclaim unit comprises a logical address of data in a logical address range.

[0421] Statement 163. Embodiments of the present disclosure include an article according to statement 162, wherein:

[0422] The second reclaim unit includes a second logical address in the logical address range; and

[0423] The non-transitory storage medium has further instructions stored thereon that, when executed by the machine, result in identifying a second reclamation unit from a second association between the logical address range and the second reclamation unit.

[0424] Statement 164. An embodiment of the present disclosure includes an article of manufacture according to statement 138, having further instructions stored thereon, which when executed by a machine result in receiving a message from a processor at a storage device regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier.

[0425] Statement 165. An embodiment of the present disclosure includes a method according to statement 164, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a recycling unit identified by a recycling unit identifier includes receiving a host garbage collection end message from the processor at the storage device notifying the storage device that the storage device manages garbage collection of the recycling unit identified by the recycling unit identifier.

[0426] Statement 166. An embodiment of the present disclosure includes an article of manufacture as described in statement 164, wherein receiving, at the storage device, a message from a processor regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier includes assigning a priority to the reclamation unit.

[0427] Statement 167. An embodiment of the present disclosure includes an article of manufacture according to statement 166, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier further includes storing a priority assigned to the reclamation unit in the storage device.

[0428] Statement 168. An embodiment of the present disclosure includes an article of manufacture as described in statement 164, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier includes performing garbage collection of the reclamation unit by the storage device.

[0429] Statement 169. An embodiment of the present disclosure includes an article of manufacture as described in accordance with statement 138, wherein receiving a message from a processor at a storage device regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier includes receiving a deallocation request from the processor at the storage device.

[0430] Statement 170. An embodiment of the present disclosure includes an article of manufacture as recited in statement 169, wherein receiving, at a storage device, a message from a processor regarding management of garbage collection of a reclamation unit identified by a reclamation unit identifier further comprises deallocating, by the storage device, the reclamation unit.

[0431] Statement 171. Embodiments of the present disclosure include the article of manufacture of statement 138, the non-transitory storage medium having further instructions stored thereon, the further instructions when executed by a machine resulting in:

[0432] Selecting, by the storage device, a recycling unit for garbage collection; and

[0433] Garbage collection is performed by the storage device on the recycling unit.

[0434] Statement 172. An embodiment of the present disclosure includes the article of manufacture of statement 171 wherein selecting, by the storage device, a reclamation unit for garbage collection comprises selecting, by the storage device, a reclamation unit for garbage collection based at least in part on a media integrity issue.

[0435] Statement 173. An embodiment of the present disclosure includes an article of manufacture as recited in statement 172 wherein the media integrity issue comprises a read disturb, a retention timer, or an open timer.

[0436] Statement 174. An embodiment of the present disclosure includes the article of manufacture of statement 171, the non-transitory storage medium having further instructions stored thereon that, when executed by a machine, result in sending a garbage collection message from a storage device to a processor that a reclamation unit was selected by the storage device for garbage collection.

[0437] Statement 175. Embodiments of the present disclosure include an article according to statement 174, wherein:

[0438] performing, by the storage device, garbage collection on the reclaim unit includes programming, by the storage device, data from the reclaim unit into a second reclaim unit; and

[0439] Sending a garbage collection message from the storage device to the processor that a reclamation unit was selected by the storage device for garbage collection includes writing, by the storage device, a second reclamation unit identifier identifying the second reclamation unit to the log page.

[0440] Statement 176. An embodiment of the present disclosure includes an article of manufacture according to statement 175, wherein sending a garbage collection message from the storage device to the processor that a reclaim unit was selected by the storage device for garbage collection includes sending a log page response from the storage device to the processor, the log page response including a log page.

[0441] Statement 177. An embodiment of the disclosure includes the article of manufacture of statement 176 wherein sending a log page response from the storage device to the processor comprises receiving a log page request for a log page from the processor at the storage device.

[0442] Therefore, in view of the various arrangements of the embodiments described herein, this detailed description and accompanying material are intended to be illustrative only and should not be taken as limiting the scope of the disclosure. Therefore, the disclosure claims all such modifications that may fall within the scope and spirit of the appended claims and their equivalents.

Claims

1. A system for garbage collection, comprising: Storage devices; as well as a processor configured to send a write request to the storage device, the write request including data to be written and a reclaim unit identifier identifying how the data is to be organized on the storage device, The processor is further configured to send a message to the storage device regarding management of garbage collection of the recycling unit identified by the recycling unit identifier.

2. The system according to claim 1, wherein: The storage device is configured to assign a first garbage collection priority level to the reclamation unit.

3. The system of claim 2, wherein: The storage device includes a second recovery unit; and The storage device includes a garbage collection priority unit that assigns a second garbage collection priority to the second recycling unit, the first garbage collection priority being lower than the second garbage collection priority.

4. The system of claim 1, wherein: The recycling unit comprises a first size; and The storage device includes a second reclaim unit including a second size, wherein the first size and the second size are different.

5. The system according to claim 1, wherein: The storage device includes a controller that selects the recycling unit to perform garbage collection and sends a garbage collection message to the processor to notify the processor.

6. The system according to claim 5, wherein: The controller is configured to select the recycling unit for garbage collection based at least in part on a media integrity issue.

7. A method for garbage collection, comprising: sending a write request from a processor to a storage device, the write request including data to be written and a reclaim unit identifier identifying how the data is to be organized on the storage device; as well as A message is sent from the processor to the storage device regarding management of garbage collection for a reclamation unit identified by the reclamation unit identifier.

8. The method of claim 7, further comprising sending a second message to the storage device regarding management of garbage collection by the reclamation unit.

9. The method of claim 7, further comprising performing, by the processor, garbage collection of the recycling unit.

10. The method of claim 7, further comprising receiving, at the processor, a garbage collection message from the storage device, the garbage collection message instructing the storage device to perform garbage collection of the reclamation unit.

11. A method for garbage collection, comprising: receiving, at a storage device, from a processor, a write request, the write request comprising data to be written and a reclaim unit identifier identifying how the data is to be organized on the storage device; writing the data to a recycling unit identified by the recycling unit identifier; as well as A message is received from the processor at the storage device regarding management of garbage collection of the reclaim unit identified by the reclaim unit identifier.

12. The method according to claim 11, wherein: Receiving, at the storage device, a message from the processor regarding management of garbage collection for the reclaim unit identified by the reclaim unit identifier includes assigning a priority to the reclaim unit.

13. The method according to claim 11, wherein: The reclaim unit identifier includes a reclaim unit handle that identifies the reclaim unit and a second reclaim unit.

14. The method according to claim 11, wherein: The recycling unit identifier comprises a logical address; and The method also includes identifying the reclaim unit from an association between the logical address and the reclaim unit.

15. The method of claim 11, wherein: The recycling unit identifier includes a logical address range, the logical address range includes a first logical address and a second logical address; The recycling unit includes the logical address in the logical address range; The second recycling unit includes the second logical address in the logical address range; and The method further comprises: identifying the reclaim unit from an association between the logical address range and the reclaim unit; as well as The second reclaim unit is identified from a second association between the logical address range and the second reclaim unit.

16. The method of claim 11, further comprising receiving, at the storage device, a message from the processor regarding management of garbage collection of the reclamation unit identified by the reclamation unit identifier.

17. The method according to claim 16, wherein: Receiving, at the storage device, a message from the processor regarding management of garbage collection of the reclamation unit identified by the reclamation unit identifier includes performing, by the storage device, garbage collection of the reclamation unit.

18. The method according to claim 11, further comprising: The storage device selects the recycling unit to perform garbage collection; as well as Garbage collection is performed by the storage device on the recycling unit.

19. The method of claim 18, further comprising sending a garbage collection message from the storage device to the processor that the reclaim unit is selected by the storage device for garbage collection.

20. The method of claim 19, wherein: performing, by the storage device, garbage collection on the reclaim unit includes programming, by the storage device, the data from the reclaim unit into a second reclaim unit; and Sending a garbage collection message from the storage device to the processor that the reclamation unit was selected by the storage device for garbage collection includes writing, by the storage device, a second reclamation unit identifier identifying the second reclamation unit to a log page.