Storage device, method of storing data, and non-transitory storage medium
Through the mapping mechanism of service life data and placement data in the storage device, dynamically manage the storage location of data in the cache SSD and data SSD, solving the problem of difficult performance and durability in the prior art, and achieving more efficient data storage and processing.
Patent Information
- Application Number
- CN202411518661.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-07-19
- Filing Date
- 2024-10-29
- Publication Date
- 2025-05-20
AI Technical Summary
When existing storage devices process large amounts of data, performance and durability are difficult to balance, resulting in performance bottlenecks and garbage collection delays when processing write requests.
By introducing the mapping mechanism of life data and placement of data in the storage device, the combination of cache SSD and data SSD can dynamically manage the storage locations of data in different storage units, reducing the need for garbage collection.
Improves overall performance and durability of the storage device, reduces write amplification factors, extends SSD life, and provides a more consistent cache response time.
Smart Images

Figure CN120020696A_ABST
Abstract
Description
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 63 / 601,195 filed on November 20, 2023, U.S. Provisional Patent Application No. 63 / 627,054 filed on January 30, 2024, and U.S. Patent Application No. 18 / 778,907 filed on July 19, 2024, which are incorporated herein by reference for all purposes. Technical Field
[0002] The disclosure relates generally to storage, and more particularly to storing data in a cache system. Background Art
[0003] As storage devices continue to grow in capacity, data management is becoming more important. To support larger capacities, a storage device may include multiple storage devices, some of which may be used as caches (to buffer data being read from or written to other storage devices: other storage devices may be used to store data persistently).
[0004] There remains a need to improve the performance of storage devices. Summary of the invention
[0005] The storage device may include a cache solid state drive (SSD) and a data SSD. The cache SSD may be a high-performance SSD that can be used to buffer data for later storage on the data SSD, which may be a high-capacity, low-endurance SSD.
[0006] According to one disclosed aspect, a storage device includes: an interface for receiving a write request for storing data from an application; a first storage device, used as a cache, the first storage device including a first storage unit associated with first life data; a second storage device, used as a persistent storage device, the second storage device including a second storage unit associated with first placement data; wherein the first storage device is configured to store the data in the first storage unit associated with the first life data based on the second life data; and wherein the second storage device is configured to store the data in the second storage unit associated with the first placement data based at least in part on the first life data.
[0007] According to another aspect of the disclosure, a method for storing data includes: receiving a write request for storing the data from an application at a storage device; identifying a first storage unit in a first storage device to store the data at the storage device based at least in part on first life data, the first storage unit being associated with second life data; storing the data in the first storage unit through the first storage device; identifying a second storage device at the storage device; identifying a second storage unit in a second storage device based at least in part on the second life data at the storage device, the second storage unit being associated with first placement data; and storing the data in the second storage unit through the second storage device.
[0008] According to another aspect of the disclosure, a non-transitory storage medium has instructions stored thereon, which, when executed by a machine, cause: receiving a write request for storing data from an application at a storage device; identifying, at the storage device, a first storage unit in a first storage device to store the data based at least in part on first life data, the first storage unit being associated with second life data; storing the data in the first storage unit via the first storage device; identifying a second storage device at the storage device; identifying, at the storage device, a second storage unit in a second storage device based at least in part on the second life data, the second storage unit being associated with first placement data; and storing the data in the second storage unit via the second storage device. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The drawings described below are examples of how the disclosed embodiments may be implemented and are not intended to limit the disclosed embodiments. The various embodiments disclosed 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 illustration and may not be to scale.
[0010] Figure 1 A machine including a storage device according to the disclosed embodiments is shown.
[0011] Figure 2 Showing the embodiment according to the disclosure Figure 1 Details of the machine.
[0012] Figure 3A Showing the embodiment according to the disclosure Figure 1 How a storage device can use a cache SSD and a data SSD to process a write request.
[0013] Figure 3B Showing the embodiment according to the disclosure Figure 1 How a storage device can use RAID of cache SSDs and data SSDs to handle write requests.
[0014] Figure 4Showing the embodiment according to the disclosure FIG. 3A to FIG. 3B Cache SSD and FIG. 3A to FIG. 3B Details of the data SSD.
[0015] Figure 5 Shows how data according to the disclosed embodiments may be stored in FIG. 3A to FIG. 3B Cache SSD and FIG. 3A to FIG. 3B Details of the data in the SSD.
[0016] Figure 6 Showing the embodiment according to the disclosure FIG. 3A to FIG. 3B The operation of the life expectancy predictor and the FIG. 3A to FIG. 3B The life span data is mapped to FIG. 3A to FIG. 3B The table where the data is placed.
[0017] Figure 7 It is shown that according to the disclosed embodiment, Figure 3B The data is mapped to the virtual placement data used in the SSD RAID Figure 3B The table where the data is placed.
[0018] Fig. 8A Showing the embodiment according to the disclosure Figure 1 The storage device receives and processes FIG. 3A to FIG. 3B Flowchart of an example process for processing a write request for an application.
[0019] Figure 8B Continuing according to the disclosed embodiment Figure 1 The storage device receives and processes FIG. 3A to FIG. 3B Example of a write request process for an application Fig. 8A Flowchart of the process.
[0020] Fig. 9 Showing the embodiment according to the disclosure Figure 1 Storage device usage FIG. 3A to FIG. 3B Flowchart of an example process for a lifespan predictor.
[0021] Fig.10 Showing the embodiment according to the disclosure FIG. 3A to FIG. 3B The cache SSD evicts data to FIG. 3A to FIG. 3B Flowchart of an example process for creating a data SSD.
[0022] Fig.11 Showing the embodiment according to the disclosure Figure 1 The storage device will FIG. 3A to FIG. 3B The life span data is mapped to FIG. 3A to FIG. 3B A flowchart of an example process for placing data.
[0023] Fig.12 Showing the embodiment according to the disclosure Figure 3BThe RAID will Figure 7 The virtual placement data is mapped to Figure 3B A flowchart of an example process for placing data.
[0024] Fig.13 Showing the embodiment according to the disclosure FIG. 3A to FIG. 3B The bloom filter from FIG. 3A to FIG. 3B Flowchart of an example process for clearing old data from a cache SSD. DETAILED DESCRIPTION
[0025] Reference will now be made in detail to the disclosed embodiments, examples of which are shown in the accompanying drawings. In the following detailed description, many specific details are set forth to enable a thorough understanding of the disclosure. However, it should be understood that one of ordinary skill in the art may practice the 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.
[0026] It will 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 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.
[0027] The terms used in the disclosed descriptions herein are only used for the purpose of describing specific embodiments and are not intended to limit disclosure. As used in the disclosed descriptions and the appended claims, unless the context clearly indicates otherwise, the singular form is intended to also include the plural form. 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 relevant listed items. It will also be understood that when used in this specification, the terms "include" and / or "comprising" indicate the presence of stated features, wholes, steps, operations, elements and / or components, but do not exclude the presence or addition of one or more other features, wholes, steps, operations, elements, components and / or their groups. The components and features of the accompanying drawings are not necessarily drawn to scale.
[0028] Solid-state drives (SSDs) with flash memory continue to be seen as the future of storage technology. To support larger and larger data capacities, manufacturers continue to cram more and more data into a single storage device. This push has led to an increase in the number of bits stored in a single cell of flash memory. While flash memory originally stored one bit per cell (single-level cell or SLC), technology has advanced to support two bits per cell (multi-level cell or MLC), three bits per cell (triple-level cell or TLC), and four bits per cell (quad-level cell or QLC), with five bits per cell (penta-level cell or PLC) already being developed and even higher capacities on the horizon.
[0029] But as more bits are stored in a single cell, the time required to access the value in the cell may increase. This fact is a result of how data is stored in cells in flash memory: the voltage in the cell may be compared to two, four, eight, sixteen, thirty-two, or more possible voltage levels to represent different possible values stored in the cell. With more possible voltage levels, the time required to compare the actual voltage to all the different possible voltage levels may increase the time required to access the data. Thus, for example, accessing TLC flash memory may be slower than accessing SLC flash memory even though the number of bits or bytes that can be returned is generally greater in the time required.
[0030] Because applications may be time-sensitive, from the application's perspective, it may be more efficient to read smaller amounts of data over time and return smaller amounts of data faster than to return larger amounts of data more slowly. But from the storage device's perspective, it may be more efficient to use a higher number of bits per cell to store data than to increase the amount of flash memory that stores fewer bits per cell. That is, a TLC SSD that stores, say, 900 gigabytes (GB) of data may be cheaper to manufacture than three SLC SSDs that each store 300GB, or to cram enough SLC flash memory into a single cabinet to provide 900GB of total storage. In fact, given the size constraints of the cabinet, it may not even be possible to provide 900GB of SLC flash memory in a single SSD.
[0031] To support faster overall access times but still take advantage of the greater capacity of higher density SSDs, some storage devices may include two SSDs: a larger, slower SSD for actual storage and a smaller, faster SSD used as a cache. For example, a storage device may include 1 terabyte (TB) of TLC flash and 100GB of SLC flash, with the SLC flash used as a cache / buffer for the TLC flash. When the storage device receives a write, the data may be written to the SLC flash, and may later be evicted from the SLC flash to be more permanently written to the TLC flash. (SLC flash itself is persistent, but using SLC flash as a cache or buffer means that data may not reside in the SLC flash for too long).
[0032] But like other types of flash memory, SLC flash memory may require garbage collection to recover storage capacity that has been invalidated. When garbage collection occurs, other operations may be delayed. Therefore, when garbage collection occurs, SLC flash memory may not be available for reading or writing, resulting in delays in satisfying requests from applications.
[0033] Similarly, TLC flash memory may be subject to garbage collection. As data is deleted, the data in the TLC flash memory may become fragmented, resulting in a delay in the TLC flash media's response to requests.
[0034] The disclosed embodiments address these issues by managing where data is stored. When an application sends a write request, the write request may include life data. The life data may be used to manage where data is stored in the SLC flash media. For example, a life identifier (LTID) may be associated with various blocks, and data received from an application with the LTID may be stored in the flash block associated with the LTID in the SLC flash memory. If the application does not provide life data, a machine learning (ML) algorithm may estimate the life data for the write request so that the data may be stored accordingly. Data may be evicted from the SLC flash media in the order in which the data is written to blocks of various lifespans, thereby helping to avoid the need to perform garbage collection.
[0035] The life data may also be mapped to placement data for the TLC flash memory. When data is evicted from the SLC flash memory, the data may be written to the TLC flash memory using the placement data. The placement data may be, for example, a placement identifier (PLID) used in the Flexible Data Placement (FDP) standard.
[0036] If the TLC flash memory includes a redundant array of independent disks (RAID), the RAID may provide virtual placement data to which the life data may be mapped. The RAID may then map the virtual placement data to placement data across the various flash memories in the RAID to improve performance. In one embodiment, the RAID may include RAID logic for controlling the overall operation of the RAID.
[0037] Figure 1 A machine including a storage device according to a disclosed embodiment is shown. Figure 1 In the example, machine 105 (also referred to as a host or system) may include a processor 110 , a memory 115 , and a storage device 120 .
[0038] Processor 110 may be any type of processor. (For ease of illustration, processor 110 and other components discussed below are shown external to the machine: the disclosed embodiments may include these components within the machine.) Figure 1 A single processor 110 is shown, but the machine 105 may include any number of processors, each of which may be a single-core processor or a multi-core processor, each of which may implement a reduced instruction set computer (RISC) architecture or a complex instruction set computer (CISC) architecture, etc., and may be mixed in any desired combination.
[0039] The processor 110 may be coupled to a memory 115. The memory 115 (which may also be referred to as main memory) may be any kind of memory (such as flash memory, dynamic random access memory (DRAM), static random access memory (SRAM), persistent random access memory, ferroelectric random access memory (FRAM), or non-volatile random access memory (NVRAM) (such as magnetoresistive random access memory (MRAM)), etc.). The memory 115 may also be any desired combination of different types of memory and may be managed by a memory controller 125. The memory 115 may be used to store what may be referred to as "short-term" data: that is, data that is not expected to be stored for an extended period of 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.
[0040] The processor 110 and the memory 115 may also support an operating system under which various applications may run. These applications may issue requests (also referred to as commands) for reading data from the memory 115 or the storage device 120 or writing data to the memory 115 or the storage device 120. The storage device 120 may be accessed using a device driver 130.
[0041] The storage device 120 may be connected to an accelerator ( Figure 1 When the storage device 120 is associated with an accelerator, the combination may be referred to as a computational storage device, a computational storage unit, or a computational device. The storage device 120 and the associated accelerator may be designed and manufactured as a single integrated unit, or the accelerator may be separate from the storage device 120. The phrase "associated with" is intended to encompass both a single integrated unit that includes both the storage device and the accelerator and a storage device that is paired with the accelerator but is not manufactured as a single integrated unit. In other words, when the storage device and the accelerator are physically separate devices but are connected in a manner that enables them to communicate with each other, they may be referred to as "paired."
[0042] Furthermore, the connection between the storage device and the paired accelerator may enable the two devices to communicate, but may not enable one (or both) devices to work with different partners: i.e., the storage device may not be able to communicate with the other accelerator, and / or the accelerator may not be able to communicate with the other storage device. For example, the storage device and the paired accelerator may be serially connected to a fabric (in either order), enabling the accelerator to access information from the storage device in a manner that the other accelerator may not be able to achieve.
[0043] Although Figure 1The generic term "storage" is used, but the disclosed embodiments may include any storage format that may be associated with a computing storage device, examples of which may include hard disk drives and solid-state drives (SSDs). Any reference below to a specific type of storage (such as an "SSD") should be understood to include such other embodiments disclosed.
[0044] The processor 110 and the storage device 120 may be connected to a network ( Figure 1 ). The network may be any network along which information may be passed. Such a network may include a network that may be internal to the machine 105 and may use an interface such as Peripheral Component Interconnect Express (PCIe), Serial AT Attachment (SATA), or Small Computer System Interface (SCSI). Such a network may also include a network that may be external to the machine 105 and may use an interface such as Ethernet, InfiniBand, or Fibre Channel. In addition, such a network may support one or more protocols such as Non-Volatile Memory Express (NVMe), NVMe over a Network (NVMe-oF), Simple Service Discovery Protocol (SSDP), or a cache coherent interconnect protocol such as Compute Express Link® (CXL®) protocol. (Compute Express Link and CXL are registered trademarks of the Compute Express Link Consortium in the United States.) Therefore, such a network may be considered to include both internal and external networking connections, through which commands may be sent directly or indirectly to the storage device 120 (more specifically, to an accelerator associated with the storage device 120, if such an accelerator is included in the machine 105). In disclosed embodiments where such a network supports external networking connections, storage 120 and / or associated accelerators (if included) may be located external to machine 105 , or they may be internal to machine 105 but accessible to a processor located external to machine 105 .
[0045] Figure 2 Showing the embodiment according to the disclosure Figure 1 Details of the machine. Figure 2In the embodiment of the present invention, the machine 105 generally includes one or more processors 110, which may include a memory controller 125 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 120 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 bus 215, to which a user interface 220 and an input / output (I / O) interface port that may be managed using an I / O engine 225, etc. may be attached.
[0046] Figure 3A Showing the embodiment according to the disclosure Figure 1 The storage device 120 may use the cache SSD and the data SSD to process a write request. Figure 3A , applications 305-1 and 305-2 are shown. (Applications 305-1 and 305-2 may be collectively referred to as applications 305.) Application 305-1 is shown as issuing a write request 310-1, and application 305-2 is shown as issuing a write request 310-2. (Write requests 310-1 and 310-2 may be collectively referred to as write request 310.) Storage device 120 may receive write request 310 via interface 315, which may include a method of “connecting storage device 120 to a server”. Figure 1 The processor 110 is connected to a network connection.
[0047] The data received in the write request 310 may initially be stored in the cache SSD 320. The cache SSD 320 (also referred to as a first storage device or a high-performance SSD) may be used as a cache or buffer for the data. Figure 3A Only one cache SSD 320 is shown, but the disclosed embodiments may support any number (one or more) of cache SSDs 320. Data may eventually be written to data SSDs 325-1 and 325-2 (which may be collectively referred to as data SSDs 325). Figure 3ATwo data SSDs 325 are shown, but the disclosed embodiments may include any number (one or more) of data SSDs 325. Data SSDs 325 may also be referred to as second storage devices or high-capacity, low-endurance SSDs. For example, cache SSD 320 may include a relatively small SSD using single-level cell (SLC) flash memory media, while data SSD 325 may include a relatively large SSD using multi-level cell (MLC), triple-level cell (TLC), quad-level cell (QLC), penta-level cell (PLC), or any other flash memory media. Because of the increased bit density in the cells in data SSD 325, data SSD 325 may provide greater storage capacity than cache SSD 320, but may be read or written more slowly than cache SSD 320, and may provide a lower maximum program-erase cycle count than cache SSD 320. Although the above example specifically presents cache SSD 320 as an SLC flash media SSD, the disclosed embodiments may support the use of any type of SSD for cache SSD 320 and / or data SSD 325, although typically the performance and endurance of cache SSD 320 may be higher than the performance and endurance of data SSD 325, and the capacity of data SSD 325 may be greater than the capacity of cache SSD 320.
[0048] Cache SSD 320 may evict data for storage in data SSD 325 at any desired time. For example, cache SSD 320 may evict data when cache SSD 320 begins to exceed a certain percentage (e.g., 80%) of its maximum capacity. Alternatively, cache SSD 320 may evict data when the workload on cache SSD 320 drops below a certain threshold (e.g., below 500 input / output operations per second (IOPS) or bandwidth below 500 megabytes per second (MB / sec)). Alternatively, cache SSD 320 may wait until garbage collection is triggered: data in blocks selected for garbage collection may be evicted so that the data does not need to be programmed to a new location in cache SSD 320. Alternatively, cache SSD 320 may use some eviction policy (such as a least recently used (LRU) or least frequently used (LFU) policy) in which data may be selected for eviction and data may be evicted using any desired schedule. Upon eviction, data may be written to the data SSD 325 .
[0049] As described above, cache SSD 320 and data SSD 325 may be any desired form of SSD. As such, cache SSD 320 and data SSD 325 may be subject to garbage collection to recover used and invalid pages or blocks. Because garbage collection may affect the performance of cache SSD 320 and data SSD 325, the choice of where to store data in cache SSD 320 and data SSD 325 may be related to an attempt to minimize garbage collection. Figure 5 How cache SSD 320 and data SSD 325 may write data is further discussed.
[0050] Note that in the write request 310-1, the application 305-1 may provide an address or data identifier associated with the data, the data itself, and a lifespan identifier (LTID). The address may be, for example, a logical block address (LBA) used by the application 305-1 to identify the data: the cache SSD 320 and the data SSD 325 may map the data identifier to a physical address on the cache SSD 320 and the data SSD 325 where the data is ultimately stored.
[0051] The LTID may be an example of any type of lifespan data that may be used by the storage device 120 to manage where data is written on the cache SSD 320 and the data SSD 325. The application 305-1 may provide lifespan data as part of the write request 310-1 to give the storage device 120 (and therefore the cache SSD 320 and the data SSD 325) a hint as to how long the data in the write request 310-1 will be kept. The cache SSD 320 and the data SSD 325 may use the lifespan data (or other data derived from the lifespan data) to determine where to store the data on the cache SSD 320 and the data SSD 325, which may help minimize the need for garbage collection. In some disclosed embodiments, the lifespan data may be the duration that the data is expected to be retained for the application 305; in other disclosed embodiments, the lifespan data may be an approximation of when (in time) the data is expected to expire. The disclosed embodiments may also use other forms of lifespan data.
[0052] In contrast, a write request 310-2 issued by application 305-2 may provide only an address or data identifier and data: no lifespan data may be provided. In the case where application 305-2 does not provide lifespan data, storage device 120 may include a lifespan predictor 330 for predicting how long the data in write request 310-2 may be retained by application 305-2. Note that since write request 310-1 includes lifespan data, lifespan predictor 330 need not be used to predict the lifespan of the data in write request 310-1: lifespan predictor 330 may be used only for write request 310-2. However, in some disclosed embodiments, lifespan predictor 330 may be used to predict the lifespan of data even in write request 310-1 in which application 305-1 has provided lifespan data. If the lifespan predicted by lifespan predictor 330 is inconsistent with the lifespan data provided by application 305-1, the two may be reconciled in any desired manner. For example, lifespan data from predictor 330 may trump lifespan data provided in write request 310-1. Alternatively, the two lifespan data may be averaged together or otherwise combined using weights to determine the overall lifespan data to be applied. For example, the lifespan data provided in write request 310-1 may be weighted 60%, 70%, or 80%, and the lifespan data calculated by lifespan predictor 330 may be weighted 40%, 30%, or 20% (to favor the prediction of application 305-1 rather than relying entirely on application 305-1). Any desired weight values may be used: the weights shown above are only example weights.
[0053] Ideally, data written to cache SSD 320 may be more permanently stored in data SSD 325 before the data is replaced by new data. However, in some cases, one write request 310 may write some data associated with a particular address or data identifier to cache SSD 320, and before the data is transferred to data SSD 325, a second write request 310 may be received that overwrites the data associated with the particular address or data identifier with new data. Bloom filter 335 may be used in this case.
[0054] Bloom filter 335 may scan the blocks in cache SSD 320 (or more specifically, Bloom filter 335 may check the flash translation layer table of cache SSD 320) to see if cache SSD 320 stores any data associated with the newly received data identifier. If so, since the data has been replaced by new write request 310, Bloom filter 335 may delete the data from cache SSD 320 without evicting the data to data SSD 325.
[0055] Figure 3BShowing the embodiment according to the disclosure Figure 1 The storage device 120 may use RAID of cache SSDs and data SSDs to process write requests. Figure 3B In the example, application 305 and write request 310 are Figure 3A The application 305 and write request 310 in FIG. 1 are the same, and most of the structure of the storage device 120 is also the same. Figure 3A 325 . The difference is that instead of writing data directly to the data SSD 325, the data SSD 325 may be "hidden" behind a redundant array of independent disks (RAID) 340. The RAID 340 may implement any desired level of RAID or erasure coding, spreading the data across the data SSDs 325 according to the level selected. For example, the RAID 340 may implement RAID level 5 (in which case there may be at least three data SSDs 325), where two of the data SSDs 325 have data written to them, and one of the data SSDs 325 has parity data written to it (in RAID 5, the data and parity information may be distributed across all of the data SSDs 325 so that no individual data SSD 325 may be a bottleneck). The use of RAID level 5 is merely an example: any RAID level or other erasure coding level may be selected without limitation.
[0056] RAID 340 may be implemented using circuitry (hardware) designed to support RAID implementations, or RAID 340 may be implemented as software and may run on some kind of processor included in storage device 120. Hardware implementations of RAID tend to be more efficient than software implementations, but both are feasible and may be used in the disclosed embodiments.
[0057] Figure 4 Showing the embodiment according to the disclosure FIG. 3A to FIG. 3B Cache SSD 320 and FIG. 3A to FIG. 3B Details of the data SSD 325. Figure 4 Cache SSD 320 and / or data SSD 325 are shown as using an implementation including SSD 320 and / or 325, but the disclosed embodiments are applicable to any type of storage device that can perform garbage collection or media management as described below.
[0058] SSD 320 and / or 325 may include interface 405 and host interface layer 410. Interface 405 may be used to connect SSD 320 and / or 325 to a host. Figure 1The SSD 320 and / or 325 may include more than one interface 405: for example, one interface may be used for block-based read requests and write requests, and another interface may be used for key-value read requests and write requests. Figure 4 Indicates that interface 405 is SSD 320 and / or 325 with Figure 1 The physical connection between the machines 105 of the present invention may be a physical connection between the machines 105 of the present invention, but the interface 405 may also represent the differences in protocols that can be used across a common physical interface. For example, the SSD 320 and / or 325 may be connected to the machine 105 using a U.2, Enterprise and Data Center Standard Form Factor (EDSFF), or M.2 connector, etc., and the SSD 320 and / or 325 may support block-based requests and key-value requests: processing different types of requests may be performed by different interfaces 405. The SSD 320 and / or 325 may also include a single interface 405, which may include multiple ports, each of which may be considered a separate interface 405, or the SSD 320 and / or 325 may also include a single interface 405 with only a single port, and the interpretation of information received through the interface 405 is left to another element (such as, SSD controller 415).
[0059] Host interface layer 410 may manage interface 405, providing an interface between SSD controller 415 and external connections to SSD 320 and / or 325. If SSD 320 and / or 325 includes more than one interface 405, a single host interface layer 410 may manage all interfaces, SSD 320 and / or 325 may include a host interface layer 410 for each interface, or some combination thereof may be used.
[0060] SSD 320 and / or 325 may also include SSD controller 415 and various flash memory chips 420-1 to 420-8 that may be organized along channels 425-1 to 425-4. Flash memory chips 420-1 to 420-8 may be collectively referred to as flash memory chips 420, and may also be referred to as flash memory chips, memory chips, NAND chips, chips, or dies. Channels 425-1 to 425-4 may be collectively referred to as channels 425. Flash memory chips 420 may collectively represent Figure 3A and Figure 3B The SSD controller 415 may manage the sending of read requests and write requests to the flash chips 420 along the channel 425. The SSD controller 415 may also include a flash controller 430, which may be responsible for issuing commands to the flash chips 420 along the channel 425. In the disclosed embodiments where the SSD 320 and / or 325 uses a technology other than the flash chips 420 to store data, the flash controller 430 may also be more generally referred to as a memory controller 430. Although Figure 4Eight flash die 420 and four channels 425 are shown, but disclosed embodiments may include any number (one or more, without constraint) of channels 425 including any number (one or more, without constraint) of flash die 420 .
[0061] Within each flash memory chip or die, space can be organized into planes. These planes can include multiple erase blocks (also 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 triple-level cell (TLC) flash memory media can include three pages, while a word line for multi-level cell (MLC) flash memory media can include two pages.
[0062] The erase blocks may also be logically grouped together by the SSD controller 415, which may be referred to as a super block. This logical grouping may enable the SSD controller 415 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 SSD 320 and / or 325. Thus, for example, if the SSD 320 and / or 325 includes eight channels, two dies per channel, and four planes per die, then the super block may include 8×2×4=64 erase blocks.
[0063] SSD controller 415 may also include a flash translation layer (FTL) 435 (which may be more generally referred to as a translation layer for storage devices that do not use flash memory). FTL 435 may handle (e.g., Figure 1 The FTL 435 may also be responsible for translating an LBA or other logical ID used by the processor 110 to a physical block address (PBA) or other physical address in which the data is stored in the flash chip 420. The FTL 435 may also be responsible for tracking data as it is relocated from one PBA to another PBA, which may occur when performing garbage collection and / or wear leveling.
[0064] Finally, in some disclosed embodiments, SSD controller 415 may include memory 440 and / or processor 445. Memory 440 may be used as local storage for any processing to be performed by SSD controller 415 (and possibly by processor 445 if processor 445 is included in SSD 320 and / or 325). Processor 445 may be used, for example, to provide the processing described above with reference to Figure 1 The SSD 320 and / or 325 may include memory 440 and / or processor 445 elsewhere in the SSD 320 and / or 325 in addition to the SSD controller 415: Figure 4SSD controller 415 is shown as including memory 440 and processor 445 local to the device as example locations for these elements only.
[0065] Figure 5 Shows how data according to the disclosed embodiments may be stored in FIG. 3A to FIG. 3B Cache SSD320 and FIG. 3A to FIG. 3B The details of the data in SSD 325. Recall that FIG. 3A to FIG. 3B middle, FIG. 3A to FIG. 3B The write request 310 includes lifetime data, or FIG. 3A to FIG. 3B The life predictor 330 may generate FIG. 3A to FIG. 3B Either way, the lifetime data can be used to FIG. 3A to FIG. 3B for any given write request 310.
[0066] like Figure 5 As shown in , cache SSD 320 may include various first-in-first-out (FIFO) units 505-1, 505-2, and 505-3 (which may be collectively referred to as FIFO units 505). FIFO units may also be more generally referred to as storage units, and may be blocks, superblocks, or any other desired subdivisions of data in cache SSD 320. Each FIFO unit 505 may include various pages (such as pages 510-1 to 510-6, which may be collectively referred to as pages 510 and may also be any other desired subdivisions of FIFO units 505). As FIG. 3A to FIG. 3B The data received by the write request 310 may be written to the FIFO unit 505 .
[0067] To write data to the FIFO unit 505, the cache SSD 320 may identify the FIG. 3A to FIG. 3B The lifetime data associated with the write request 310 (again, via FIG. 3A to FIG. 3B The application 305 is included in FIG. 3A to FIG. 3B Write request 310 or through FIG. 3A to FIG. 3B The cache SSD 320 may then determine which FIFO unit 505 stores the data associated with the cache SSD 320. FIG. 3A to FIG. 3B The lifetime data associated with the write request 310 is associated with the data. Note that, for example, FIFO unit 505-1 includes lifetime data (such as LTID) 515: Figure 5 Although not shown in this manner, other FIFO units 505 may also similarly include lifespan data 515 associated therewith. Each FIFO unit 505 may be associated with different lifespan data, so that the cache SSD 320 may be used to manage data with different lifespans. Figure 5FIFO cells 505 are shown as including lifetime data 515 , but disclosed embodiments may include storing such metadata elsewhere: for example, in a table somewhere that maps a particular lifetime data 515 to the FIFO cell 505 currently associated with that lifetime data 515 .
[0068] Once the FIFO unit 505 associated with the data's age data has been identified, an empty page 510 in the FIFO unit 505 may be located. In some disclosed embodiments, data may be written to the pages 510 in the order in which they are received in the FIFO unit 505 ("first in" in the FIFO); in other disclosed embodiments, data may be written to any free page in the FIFO unit 505. Thus, for example, Figure 5 It is shown that pages 510-3, 510-4, and 510-5 currently store data, while page 510-6 is currently empty and free to store data. Therefore, new data can be written to page 510-6 in FIFO unit 505-1.
[0069] Since FIFO cell 505-1 will be full after data is written to page 510-6, a new FIFO cell in cache SSD 320 may be selected and associated with life data 515. In this manner, cache SSD 320 may continue to receive data having the same life data.
[0070] Eventually, it is expected that the data will be evicted from cache SSD 320b to be written to data SSD 325. FIG. 3A to FIG. 3B As discussed above, an eviction policy may be used to determine when such eviction occurs. When a FIFO unit 505 is selected to evict data, the oldest data currently stored in the FIFO unit 505 may be selected for eviction (that is, the data stored in the FIFO unit 505 may be selected for eviction based on its age). Figure 5 , the data in pages 510-1 and 510-2 have previously been evicted from cache SSD 320, and the next data to be evicted may be the data in page 510-3. In some disclosed embodiments, the oldest data in FIFO unit 505 may be selected for eviction ("first-out" in FIFO); in other disclosed embodiments, any data may be selected for eviction from FIFO unit 505. Thus, pages 510-1 and 510-2 reflect that the data stored therein has been evicted, and page 510-3 is currently selected for eviction. Although Figure 5 Eviction is shown to occur one page at a time, but the disclosed embodiments may evict data from the cache SSD 320 in any desired unit: a single page, multiple pages, a single block, multiple blocks, etc.
[0071] Once data is selected for eviction from cache SSD 320, it may be sent to data SSD 325 for writing: Once written to data SSD 325, the data in cache SSD 320 may be safely deleted: The state of page 510-3 may be changed from "data" to "eviction." (Obviously, labels such as "eviction," "data," and "empty" are merely symbolic, and any desired method may be used to reflect which pages 510 are empty, store valid data, or have become invalid).
[0072] The data SSD 325 may also be managed to attempt to minimize garbage collection. In some disclosed embodiments, the data SSD 325 may use a data placement strategy such as flexible data placement (FDP). Figure 5 As shown in , data SSD 325-1 may include various reclaim units 520-1 and 520-2, and data SSD 325-2 may include reclaim unit 520-3. Reclaim units 520-1, 520-2, and 520-3 may be collectively referred to as reclaim units 520, and may also be more generally referred to as storage units, and may be blocks, super blocks, or any other desired subdivisions of data in data SSD 325. Each reclaim unit 520 may include various pages (such as pages 525-1 through 525-3, which may be collectively referred to as pages 525 and may also be any other desired subdivisions of reclaim units 520). As FIG. 3A to FIG. 3B The data received by the write request 310 may be written to the recycling unit 520 .
[0073] The FDP may associate each reclaim unit 520 with placement data, such as a placement identifier (PLID) 530. The placement data 530 may be a way to group related data together. In some disclosed embodiments, the placement data 530 may be used as a way to group data that is expected to expire at approximately the same time together.
[0074] A question may arise as to why the cache SSD 320 uses the lifespan data 515 to organize data while the data SSD 325 uses the placement data 530 to organize data: why can't the lifespan data 515 be used for both? There are at least two reasons for this difference. First, it may happen that the data SSD 325 can support less placement data 530 than the cache SSD 320 can support. For example, some data SSDs 325 may only support eight unique placement data 530. If the data SSD 325 supports less placement data 530 than the cache SSD 320 can support, not every lifespan data 515 can be used with the data SSD 325. Second, by using different forms of data in the cache SSD 320 and the data SSD 325, a more general solution can be supported. Therefore, the cache SSD 320 (or more generally, the data SSD 325) may support fewer placement data 530 than the cache SSD 320. Figure 1 The storage device 120 ) may include a mapping from lifespan data 515 to placement data 530 to support storing data on various SSDs using different types of data.
[0075] exist Figure 5 , the life data 515 may be mapped to the placement data 530. Thus, data from the FIFO unit 505 may be written to the reclaim unit 520 associated with the placement data 530 when it is evicted from the cache SSD 320. For example, data in pages 510-1, 510-2, and 510-3 of the FIFO unit 505-1 may be written to pages 525-1, 525-2, and 525-3 of the reclaim unit 520-1, respectively. In some disclosed embodiments, this mapping from the life data 515 to the placement data 530 may be performed in Figure 1 The storage device 120 is generated when it is first started: the cache SSD 320 and the data SSD 325 can be queried to obtain the life data 515 and the placement data 530 they support, respectively, and the life data 515 can be mapped to the placement data 530 in any desired method. For example, the life data 515 can be mapped to the placement data 530 in a round robin manner, and multiple life data 515 can be mapped to a common placement data 530. In other disclosed embodiments, such a mapping from life data 515 to placement data 530 can be generated on an ad hoc basis as needed: when new life data 515 is encountered, the new life data 515 can be mapped to the selected placement data 530: this selection of the placement data 530 can again be done using any desired method (such as in a round robin manner).
[0076] A question may arise: if data with the same life data 515 is expected to be invalid at approximately the same time, then why do pages 525-1 and 525-2 show that the data has been invalidated. The answer is that the life data 515 may be an approximation or even by FIG. 3A to FIG. 3B The "best guess" of application 305 is taken by the example of FIG. 305. However, an approximation is not a guarantee, and sometimes data may be invalidated sooner than expected, or may be retained longer than expected. In addition, if data is updated with new data associated with the same data identifier, the old data should be invalidated to make room for the new data. For example, it may be that the data previously stored in pages 525-1 and 525-2 was updated but not yet completely invalidated, and pages 525-1 and 525-2 have been invalidated in favor of the newer data. Therefore, garbage collection may still occur on either cache SSD 320 or data SSD 325.
[0077] Note that different FIFO units 505 may cause evicted data to be written to different reclaim units 520, and to different data SSDs 325. For example, while data evicted from FIFO unit 505-1 may be written to reclaim unit 520-1 in data SSD 325-1, data evicted from FIFO unit 505-3 may be written to reclaim unit 520-3 in data SSD 325-2. This result may occur for a number of reasons. First, it may be that different age data 515 is associated not only with a particular placement data 530, but also with a particular data SSD 325. This approach may distribute data across multiple data SSDs 325 to avoid one data SSD 325 having a higher or lower workload than the average workload. Second, when FIG. 3A to FIG. 3B When applications 305 are started, they may identify a particular data SSD 325 as the target for their data. Then, any data written from the application to the cache SSD 320 may be written to the reclaim unit 520 in the data SSD 325 associated with the application when evicted. FIG. 3A to FIG. 3B When the application 305 starts executing, it can establish FIG. 3A to FIG. 3B of the application 305 to the data SSD 325; in other disclosed embodiments, FIG. 3A to FIG. 3B The application starts issuing 305 FIG. 3A to FIG. 3B The write request 310 is executed FIG. 3A to FIG. 3B of the application 305 to the data SSD 325, and may even be FIG. 3A to FIG. 3B occurs on a per-write request 310 basis (where FIG. 3A to FIG. 3B The data of different write requests 310 are potentially written to different data SSDs 325).
[0078] Although Figure 5 The cache SSD 320 is shown as including three FIFO units 505 and six pages 510 per FIFO unit 505, but the disclosed embodiments may include any number (one or more) of FIFO units 505 and any number of pages per FIFO unit 505. For example, a 1TB SSD with four kilobytes (KB) per page and 64 pages per block would include approximately 4,194,304 blocks. Similarly, while Figure 5 Data SSD 325 - 1 is shown as including two Reclamation Units 520 and data SSD 325 - 2 is shown as including one Reclamation Unit and three pages per Reclamation Unit 520 , but data SSD 325 may have any number (one or more) of Reclamation Units 520 and any number of pages per Reclamation Unit 520 .
[0079] Figure 6 Showing the embodiment according to the disclosure FIG. 3A to FIG. 3B The operation of the life predictor 330 and the FIG. 3A to FIG. 3B The life span data is mapped to FIG. 3A to FIG. 3B The table where the data is placed. Figure 6 In the example, a lifespan predictor 330 using, for example, a Seq2Seq model may receive ongoing reads as input. As a result, the lifespan predictor 330 may be able to predict FIG. 3A to FIG. 3B The life predictor 330 may also receive as input the write in progress. As a result, the life predictor 330 may be able to predict the life data 515 of the write, and may also predict future writes that may have similar life data 515. Once predicted by the life predictor 330, a table 605 may be generated, which may store FIG. 3A to FIG. 3B The association or mapping between the data identifier of the write request 310 and the life data 515 is shown in Table 605. For example, Table 605 shows the association between the data identifiers 610-1, 610-2, and 610-3 and the life data 515-1, 515-2, and 515-3, respectively. In one embodiment, the data identifiers 610-1, 610-2, and 610-3 may be collectively referred to as data identifiers 610, and the data identifiers 610 may include block addresses (e.g., logical block addresses). (Of course, if FIG. 3A to FIG. 3B If application 305 provides life data 515, the provided life data 515 can be used in table 605 without calling life predictor 330).
[0080] It may happen that the lifespan predictor 330 (or FIG. 3A to FIG. 3B The application 305 of may provide new lifespan data 515 that has not been seen before. In this case, a mapping using the new lifespan data 515 may be generated when necessary. For example, the table 605 may be updated to support the new lifespan data 515.
[0081] The information in table 605 can also be used to generate table 615, which can represent the association or mapping between life data 515 and placement data 530. Thus, for example, table 615 shows the association between life data 515-1, 515-2, and 515-3 and placement data 530-1, 530-2, and 530-3, respectively. FIG. 3A to FIG. 3B In the disclosed embodiment of placing data 530 on the unique data SSD 325, table 615 may also be supplemented to identify FIG. 3A to FIG. 3B Data SSD 325.
[0082] Although Figure 6 Tables 605 and 615 are each shown as having three associations, but the disclosed embodiments may support any number (one or more) of associations in either table, and each table 605 and 615 may have a different number of associations.
[0083] When using RAID, such as Figure 3B As shown in Figure 3B The individual data SSDs 325 may not be visible outside the RAID. Figure 3B Data distribution of SSD 325, RAID can expose its own placement data to Figure 1 The storage device 120 and the exposed placement data may be Figure 5 The placement data 530 is mapped or associated. Figure 7 This relationship is shown.
[0084] exist Figure 7 In the example, the RAID may construct its own placement data, which may be referred to as virtual placement data (eg, VPLID) to compare it with the placement data provided by the Figure 3B The data SSD 325 uses the placement data 530 to separate. Figure 1 The storage device 120 can Figure 5 The lifetime data 515 is associated with the virtual placement data exposed by the RAID, and the RAID can associate the virtual placement data with Figure 3B The data SSD 325 is associated with the placement data 530. Thus, for example, in Table 705, virtual placement data 710-1, 710-2, and 710-3 (collectively referred to as virtual placement data 710) are shown: virtual placement data 710-1, 710-2, and 710-3 are associated with placement data 530-1, 530-2, and 530-3, respectively.
[0085] Although Figure 7Table 705 is shown as having three associations, but the disclosed embodiments may support any number (one or more) of associations in table 705 .
[0086] FIG. 8A to FIG. 8B The invention is shown in accordance with the disclosed embodiment. Figure 1 The storage device 120 from FIG. 3A to FIG. 3B Application reception and processing FIG. 3A to FIG. 3B A flowchart of an example process for writing a request 310. Fig. 8A In block 805, the storage device 120 may obtain FIG. 3A to FIG. 3B Application 305 received FIG. 3A to FIG. 3B At block 810, the storage device 120 may identify FIG. 3A to FIG. 3B The storage device 120 can also identify the cache SSD 320 to store data. FIG. 3A to FIG. 3B The storage device 120 may be based on the FIFO unit 505 in the cache SSD 320. FIG. 3A to FIG. 3B The lifetime data 515 of the data in the write request 310 is used to identify the FIFO unit 505. At block 815, FIG. 3A to FIG. 3B The cache SSD 320 may store data in the FIFO unit 505 .
[0087] At block 820, storage device 120 may identify FIG. 3A to FIG. 3B Data SSD 325. Note that implicitly, in block 810, there is only one FIG. 3A to FIG. 3B The cache SSD 320 does not need to be identified FIG. 3A to FIG. 3B cache SSD 320; however, in the case of including more than one FIG. 3A to FIG. 3B In the disclosed embodiment of the cache SSD 320, before block 810, the storage device 120 may also identify FIG. 3A to FIG. 3B Cache SSD 320.
[0088] In box 825 ( Figure 8B ), the storage device 120 can identify FIG. 3A to FIG. 3B The storage device 120 may identify the recycling unit 520 based on the lifespan data 515. Finally, at block 830, FIG. 3A to FIG. 3B The data SSD 325 may store the data in the recycling unit 520 .
[0089] Fig. 9 Showing the embodiment according to the disclosure Figure 1 The storage device 120 uses FIG. 3A to FIG. 3B A flowchart of an example process of the life predictor 330 of FIG. Fig. 9 In block 905, the lifespan predictor 330 may receive information (such as, FIG. 3A to FIG. 3B 310), and can use this information to generate FIG. 3A to FIG. 3B The lifespan data 515 of the data in the write request 310 .
[0090] Fig.10 Showing the embodiment according to the disclosure FIG. 3A to FIG. 3B The cache SSD 320 evicts data to FIG. 3A to FIG. 3B A flow chart of an example process for storing data in SSD 325. Fig.10 In block 1005, FIG. 3A to FIG. 3B The cache SSD 320 can be used after data has been written FIG. 3A to FIG. 3B The data SSD 325 then evicts the data from the FIFO unit 505 .
[0091] Fig.11 Showing the embodiment according to the disclosure Figure 1 The storage device 120 will Figure 5 The life span data 515 is mapped to Figure 5 A flowchart of an example process for placing data 530. Fig.11 In block 1105, the storage device 120 (eg, mapping circuitry in the storage device 120) may generate a table 615 for mapping the lifetime data 515 to the placement data 530. Then, in block 1110, the storage device 120 may use the table 615 to map the lifetime data 515 to the placement data 530. FIG. 3A to FIG. 3B The lifetime data 515 of the data to be written in the write request 310 is mapped to the placement data 530 .
[0092] Fig.12 Showing the embodiment according to the disclosure Figure 3B The RAID will Figure 7 The virtual placement data 710 is mapped to Figure 5 A flowchart of an example process for placing data 530. Fig.12 In block 1205, FIG. 3A to FIG. 3B The RAID 340 may generate a table 705 for converting FIG. 3A to FIG. 3B The RAID 340 exposes virtual placement data 710 mapped to the FIG. 3A to FIG. 3B The data SSD 325 uses the placement data 530. At block 1210, the RAID may be identified. At block 1215, FIG. 3A to FIG. 3B The RAID 340 may recognize the virtual placement data 710 provided by the storage device 120, and at block 1220, FIG. 3A to FIG. 3B RAID 340 may use table 705 to map virtual placement data 710 to placement data 530. In one embodiment, FIG. 3A to FIG. 3BThe RAID logic in the RAID 340 may include a mapping logic, and the mapping logic may map the first virtual placement data to the first placement data and the third placement data, and may map the second virtual placement data to the second placement data and the fourth placement data.
[0093] Fig.13 Showing the embodiment according to the disclosure FIG. 3A to FIG. 3B The bloom filter 335 from FIG. 3A to FIG. 3B A flowchart of an example process of clearing old data from the cache SSD 320 is shown. Fig.13 In block 1305, FIG. 3A to FIG. 3B The bloom filter 335 can identify FIG. 3A to FIG. 3B In block 1310, FIG. 3A to FIG. 3B The Bloom filter 335 can determine FIG. 3A to FIG. 3B Whether the other FIFO unit 505 in the cache SSD 320 stores data associated with the data identifier 610. If so, then at block 1315, FIG. 3A to FIG. 3B The Bloom filter 335 can be FIG. 3A to FIG. 3B The cache SSD 320 sends a request to delete the data from the FIFO unit 505. Note that if FIG. 3A to FIG. 3B If a plurality of data associated with the data identifier 610 is stored in the cache SSD 320 , blocks 1310 to 1315 may be repeated more than once.
[0094] exist FIG. 8A to FIG. 13 In the figure, some embodiments of the disclosure are shown. However, those skilled in the art will recognize that other embodiments of the disclosure are also possible by changing the order of the blocks, by omitting blocks, or by including links not shown in the figures. All these variations of the flow charts are considered to be embodiments of the disclosure, whether explicitly described or not.
[0095] The disclosed embodiments may include a cache SSD and a data SSD. The cache SSD may be used to temporarily store data to obtain higher performance, and the data may be later transferred to the data SSD for storage in a larger capacity storage device. The cache SSD may store data using lifespan data provided by an application or generated by a machine learning model, which may reduce the need for garbage collection on the cache SSD. The data SSD may store data using placement data that may be based on the lifespan data, which may also reduce the need for garbage collection on the data SSD. By reducing the need for garbage collection on the cache SSD and the data SSD, a technical advantage of higher efficiency may be achieved.
[0096] SSD cache can be implemented using high-performance SSDs to improve the performance and life of high-capacity, low-endurance SSDs. However, there may be performance issues and life issues. The eviction / flush mechanism can lead to fragmented flash blocks. Frequent garbage collection activities can degrade cache performance.
[0097] The disclosed embodiments can solve such problems by placing data with similar lifespan storage units (which can be sequential storage units) using the Flexible Data Placement (FDP) standard. If the application does not provide a lifespan identifier (LTID), a machine learning model (such as a Seq2Seq model) can be used to predict the lifespan ID of the data.
[0098] The oldest data in a storage unit may be evicted from the SSD cache first and flushed to a reclaim unit in a low-endurance SSD for storage. A reclaim unit may be associated with a placement identifier (PLID) that may be mapped from a LTID.
[0099] The disclosed embodiments may have the advantages of reduced write amplification factor (WAF) and increased sustained cache performance. The disclosed embodiments may extend the life of both cache SSDs and data SSDs, and may provide consistent cache response times.
[0100] In order to reduce the WAF of data placement using application-provided or predicted data lifespan, a machine learning model (such as a Seq2Seq model) can be trained using the application read (or write) sequence. Then, if the application does not provide the LTID, the machine learning model can be used to predict the LTID.
[0101] The Bloom filter can be used to check if the same block address (but with a different LTID) exists in another storage unit in the SSD cache. If so, the existing data can be deleted from the SSD cache (more current data in the current write request will replace the old data).
[0102] The SSD cache may be divided into various storage units, which may be assigned different LTIDs. In addition, there may be a mapping from each LTID used by the SSD cache to a PLID used by the data SSD, which may implement FDP. This mapping may be stored as cache metadata. Note that multiple different LTIDs used by the cache SSD may be mapped to a given PLID used by the data SSD.
[0103] Data may be flushed from the storage cells to the data SSD. The oldest data may be evicted first from a particular storage cell in the cache SSD.
[0104] The machine learning model can utilize a read Seq2Seq model that can predict the read address, and the probability is predicted by the Seq2Seq model. The model can be trained using the read sequence of each application. Although Seq2Seq models are typically used for prefetching, they can be applied to other purposes. Seq2Seq models include long short-term memory models (LSTM) or attention-based models. The addresses in the short read sequence of the application can have a high degree of similarity in their lifetime. Therefore, when the write address is input to the trained Seq2Seq model, the probability can be interpreted as the lifetime, and the output address can be interpreted as other addresses with similar lifetimes.
[0105] Lifetime tracking can search for the LTID of the write block address of the application. The LTID of the first hit can be used. The Seq2Seq model can predict similar life addresses for addresses that missed, and the life table can be searched again. If the address still misses, the Seq2Seq model can create a new LTID.
[0106] LTIDs can be mapped to limited PLIDs. For example, an SSD may have 8 PLIDs. PLIDs can be assigned to LTIDs in a round-robin manner.
[0107] The data may be placed in a storage unit in the cache SSD associated with the LTID assigned to the write request. The data may be flushed from the cache SSD to the data SSD using the PLID associated with the LTID. The oldest data (first in) may be evicted and a Trim request may be issued to the data SSD. In this manner, data blocks may be invalidated without fragmentation in the storage units on the data SSD.
[0108] Redundant Array of Independent Disks (RAID) implementations protect against data loss due to drive failure (redundancy) and spread data across multiple drives (accelerate data access). Implementing RAID using solid-state drives (SSDs) can improve the performance and life of the SSDs in the RAID: by spreading data across multiple SSDs, an array of SSDs can return data faster than a single SSD, and the amount of data written to any single SSD can be reduced, thereby extending its life.
[0109] However, because the SSD may not support in-situ overwriting of data, when the data is updated, the original data is written (updated) to a new location on the SSD, and the original data is invalidated. Such repeated writing of data may occur even if the data is not updated. For example, if the data is in an erase block selected for erasure, the remaining valid data in the erase block may be copied to a new erase block so that the original erase block can be erased. This process can be described as garbage collection.
[0110] The repeated writing of data can be described as a write amplification factor (WAF), and it is desirable to keep the WAF as low as possible (ideally, 1, which indicates that the data is only written once before being invalidated by the host).
[0111] A RAID of SSDs can be used as a cache. However, the eviction mechanism can result in partially invalid erase blocks in the cache. As erase blocks become partially invalid, garbage collection can increase to keep the blocks available for new data. This increased garbage collection can cause RAID performance to degrade: the SSD performing garbage collection can delay the return of data requested by the host. This increased garbage collection can also increase WAF.
[0112] The disclosed embodiments enable applications to provide life hints to SSD caches. RAID can then place data with the same life in common blocks to remove scattered invalid pages. The disclosed embodiments can provide high sustained cache performance, low WAF in all RAID member SSDs, and extended SSD life.
[0113] The disclosed embodiments may convert the lifespan into a data placement instruction (DPD) and place the data in a cache shard according to the DPD. The RAID may then split the data into data portions based on the DPD. Each SSD may then place the data portion in a flash block assigned to the DPD. The cache shard may evict data in a first-in, first-out (FIFO) order.
[0114] The disclosed embodiments can reduce SSD WAF by utilizing application-specified data lifespan in a cabinet cache that can use flexible data placement techniques. The cache can be partitioned according to placement directives (PDs) that represent application data lifespans.
[0115] The Bloom filter can check to see if the same logical block address (LBA) exists in other slices (of different ages). If so, the existing LBA can be removed.
[0116] Shards can write flush units (FUs) to SSDs using a FIFO policy. Cached data can be reordered within a FU using a Least Recently Used (LRU) policy.
[0117] A Reclaim Group (RG) may include multiple SSDs (or data from multiple SSDs) to select a RAID aggregate Reclaim Unit (RU) size that is appropriate for the FU size in the enclosure cache.
[0118] The RAID may use the PD to write data to members of the RAID. Cache metadata (eg, log records) may be assigned individual placement IDs.
[0119] The disclosed embodiments may achieve low WAF, high sustained cache performance, and extended SSD lifespan across all RAID members.
[0120] The following discussion is intended to provide a brief, general description of one or more suitable machines in which specific aspects of the disclosure may be implemented. One or more machines may be controlled at least in part by input from conventional input devices (such as keyboards, mice, 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 machines, virtual machines, or devices that operate together in a communicatively coupled manner. Exemplary machines include computing devices (such as personal computers, workstations, servers, portable computers, handheld devices, phones, tablet computers, etc.) and transportation devices (such as private or public transportation (e.g., cars, trains, taxis, etc.)).
[0121] 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 combination). The machines may be interconnected by way of a physical network and / or a 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, Bluetooth®, optical, infrared, cable, laser, etc.).
[0122] Embodiments of the present disclosure may be described by reference to 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 memory 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 devices, tapes, flash memory, memory sticks, digital video disks, biometric storage devices, etc. The associated data may be transmitted in the form of packets, serial data, parallel data, propagation signals, etc., in a transmission environment including a physical network and / or a logical network, and may be used in a compressed format or an encrypted format. The associated data may be used in a distributed environment and stored locally and / or remotely for machine access.
[0123] The disclosed embodiments may include a tangible, non-transitory machine-readable medium including instructions executable by one or more processors, including instructions for performing elements of the disclosure as described herein.
[0124] The various operations of the methods described above may be performed by any suitable means capable of performing the operations (such as various hardware and / or (one or more) software components, circuits and / or (one or more) 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 processor or a multi-core processor or a system including a processor).
[0125] The blocks or steps of the methods or algorithms and functions described in conjunction with the embodiments disclosed herein may be implemented directly in hardware, in software modules executed by a processor, or in a combination of the two. If implemented in software, the functions may be stored on or transmitted through a tangible, non-transitory computer-readable medium as one or more instructions or codes. The software module may reside in a random access memory (RAM), flash memory, read-only memory (ROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), registers, hard disk, removable disk, CD ROM, or any other form of storage medium known in the art.
[0126] Having described and illustrated the principles of the disclosure with reference to the illustrated embodiments, it will be appreciated that the illustrated embodiments may be modified in arrangement and detail without departing from such principles, and may be combined in any desired manner. Also, although the foregoing discussion has focused on specific embodiments, other configurations are contemplated. Specifically, even though expressions such as "according to the disclosed embodiments" are used herein, these phrases are intended to relate to embodiment possibilities in general, and are not intended to limit the disclosure to specific embodiment configurations. As used herein, these terms may relate to the same or different embodiments that may be combined into other embodiments.
[0127] The foregoing illustrative embodiments should not be construed as limiting the disclosure thereof. Although several embodiments have been described, it will be readily appreciated by those skilled in the art that many modifications may be made to those 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.
[0128] The disclosed embodiments may extend to, but are not limited to, the following statements: Statement 1. The disclosed embodiments include a storage device, comprising: An interface for receiving a write request for storing data from an application; a first storage device, used as a cache, the first storage device comprising a first storage unit associated with the first life data and a second storage unit associated with the second life data; a second storage device, used as a persistent storage device, the second storage device comprising a third storage unit associated with the first placement data and a fourth storage unit associated with the second placement data; wherein the first storage device is configured to store the data in a first storage unit associated with the first life data based on the third life data; and The second storage device is configured to store the data in a third storage unit associated with the first placement data based at least in part on the third life data.
[0129] Statement 2. A disclosed embodiment includes a storage device according to statement 1, wherein: The first storage device includes a first solid state drive (SSD); and The second storage device includes a second SSD.
[0130] Statement 3. A disclosed embodiment includes a storage device according to statement 2, wherein: The first SSD comprises a first high-performance SSD; and The second SSD includes a high-capacity, low-endurance SSD.
[0131] Statement 4. The disclosed embodiment includes the storage device according to statement 1, further comprising: a cabinet, the cabinet including the interface, the first storage device and the second storage device.
[0132] Statement 5. A disclosed embodiment includes a storage device according to statement 1, wherein: The first life data includes a first life identifier (LTID); The second life data includes the second LTID; The third lifetime data includes a third LTID; and The third LTID corresponds to the first LTID.
[0133] Statement 6. A disclosed embodiment includes the storage device of statement 1, wherein the write request includes third lifespan data.
[0134] Statement 7. The disclosed embodiment includes the storage device according to statement 1, further comprising: a life predictor for generating third life data.
[0135] Statement 8. A disclosed embodiment includes the storage device of statement 7, wherein the life predictor includes a machine learning circuit for generating the third life data.
[0136] Statement 9. The disclosed embodiments include a storage device according to statement 8, wherein the machine learning circuit implements a Seq2Seq model.
[0137] Statement 10. A disclosed embodiment includes the storage device of statement 7, wherein: The storage device also includes a processor; and The lifespan predictor includes machine learning software running on the processor.
[0138] Statement 11. The disclosed embodiment includes a storage device according to statement 10, wherein the machine learning software implements a Seq2Seq model.
[0139] Statement 12. A disclosed embodiment includes the storage device of statement 7, wherein the write request does not include third lifespan data.
[0140] Statement 13. A disclosed embodiment includes a storage device according to statement 1, wherein: The first storage device is configured to evict the data from the first storage unit; and The second storage device is configured to store the data in a third storage unit based at least in part on the first storage device evicting the data from the first storage unit.
[0141] Statement 14. A disclosed embodiment includes the storage device of statement 13, wherein the first storage device is configured to evict the data from the first storage unit based at least in part on an age of the data in the first storage unit.
[0142] Statement 15. A disclosed embodiment includes the storage device of statement 14, wherein the first storage device is configured to evict the data from the first storage unit based at least in part on the data being the oldest data in the first storage unit.
[0143] Statement 16. The disclosed embodiment includes the storage device according to statement 1, further comprising: a mapping circuit for mapping the first life data to the first placement data.
[0144] Statement 17. A disclosed embodiment includes the memory device of statement 16, wherein the mapping circuit includes a table for mapping the first life data to the first placement data.
[0145] Statement 18. A disclosed embodiment includes the storage device of statement 17, wherein the storage device is configured to generate the table upon startup of the storage device.
[0146] Statement 19. A disclosed embodiment includes a storage device according to statement 1, wherein: The second storage device implements the Flexible Data Placement (FDP) standard; The first placement data comprises a first placement identifier (PLID); and The second placement data includes a second PLID.
[0147] Statement 20. A disclosed embodiment includes a storage device according to statement 19, wherein: The third storage unit includes a first recovery unit; and The fourth storage unit includes a second recovery unit.
[0148] Statement 21. A disclosed embodiment includes the storage device of statement 1, further comprising: Redundant Array of Independent Disks (RAID) logic; and The third storage device, The RAID logic stores the data on the second storage device and the third storage device.
[0149] Statement 22. A disclosed embodiment includes the storage device of statement 21, wherein the RAID logic includes a RAID circuit.
[0150] Statement 23. A disclosed embodiment includes the storage device of statement 21, wherein the RAID logic comprises: Processor; and Software that implements the RAID logic that runs on the processor.
[0151] Statement 24. A disclosed embodiment includes a storage device according to statement 21, wherein: The third storage device includes a fifth storage unit associated with the third placement data and a sixth storage unit associated with the fourth placement data; The RAID logic includes mapping logic for mapping the first virtual placement data to the first placement data and the third placement data and for mapping the second virtual placement data to the second placement data and the fourth placement data; and The RAID logic is configured to expose the first virtual placement data and the second virtual placement data to the storage device.
[0152] Statement 25. A disclosed embodiment includes the memory device of statement 24, wherein the mapping logic includes a mapping circuit.
[0153] Statement 26. A disclosed embodiment includes the memory device of statement 25, wherein the mapping circuit includes a table for mapping the first virtual placement data to the first placement data and the third placement data and for mapping the second virtual placement data to the second placement data and the fourth placement data.
[0154] Statement 27. A disclosed embodiment includes the storage device of statement 26, wherein the RAID logic is configured to generate the table at boot time.
[0155] Statement 28. A disclosed embodiment includes the storage device of statement 24, wherein the mapping logic comprises: Processor; and Software that implements the mapping logic that runs on the processor.
[0156] Statement 29. The disclosed embodiment includes the storage device according to statement 1, further comprising: a Bloom filter.
[0157] Statement 30. A disclosed embodiment includes the storage device of statement 29, wherein the Bloom filter is configured to identify the second data stored in the second storage unit and delete the second data from the second storage unit.
[0158] Statement 31. A disclosed embodiment includes the storage device of statement 30, wherein the Bloom filter is configured to identify the second data stored in the second storage unit and delete the second data from the second storage unit based at least in part on a write request from an application.
[0159] Statement 32. A disclosed embodiment includes a storage device according to statement 30, wherein: The write request includes a data identifier associated with the data; and The Bloom filter is configured to identify the second data based at least in part on associating the second data stored in the second storage unit with the data identifier.
[0160] Statement 33. A disclosed embodiment comprises the storage device of statement 32 wherein the data identifier comprises a logical block address.
[0161] Statement 34. The disclosed embodiments include a method comprising: receiving, at a storage device, a write request from an application to store data; identifying, at the storage device, a first storage unit in the first storage device to store the data based at least in part on the first life data, the first storage unit being associated with the second life data, the first storage device further comprising a second storage unit associated with the third life data; storing the data in a first storage unit by a first storage device; identifying, at the storage device, a second storage device; identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second life data, the third storage unit being associated with the first placement data, the second storage unit further comprising a fourth storage unit associated with the second placement data; and The data is stored in the third storage unit through the second storage device.
[0162] Statement 35. A disclosed embodiment includes the method of statement 34, wherein: The first storage device includes a first solid state drive (SSD); and The second storage device includes a second SSD.
[0163] Statement 36. A disclosed embodiment includes the method of statement 35, wherein: The first SSD includes a first high-performance SSD; and The second SSD includes a high-capacity, low-endurance SSD.
[0164] Statement 37. A disclosed embodiment includes the method of statement 34, wherein: The first life data includes a first life identifier (LTID); The second life data includes the second LTID; The third lifetime data includes a third LTID; and The first LTID corresponds to the third LTID.
[0165] Statement 38. A disclosed embodiment includes the method of statement 34 wherein the write request includes first lifespan data.
[0166] Statement 39. A disclosed embodiment includes the method of statement 34, further comprising: generating the first life data by a life predictor.
[0167] Statement 40. The disclosed embodiment includes the method according to statement 39, wherein the step of generating the first life data by the life predictor includes: generating the first life data by a machine learning model.
[0168] Statement 41. The disclosed embodiment includes the method according to statement 40, wherein the step of generating the first life data through the machine learning model includes: generating the first life data through a Seq2Seq model.
[0169] Statement 42. A disclosed embodiment includes the method of statement 39 wherein the write request does not include the first lifetime data.
[0170] Statement 43. A disclosed embodiment includes the method of statement 34, further comprising: evicting the data from the first storage unit.
[0171] Statement 44. A disclosed embodiment includes the method of statement 43, wherein: The step of identifying, at the storage device, the second storage device comprises: identifying, at the storage device, the second storage device based at least in part on evicting the data from the first storage unit; The step of identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second lifespan data comprises: identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second lifespan data based at least in part on evicting the data from the first storage unit; and The step of storing, by the second storage device, the data in the third storage unit includes storing, by the second storage device, the data in the third storage unit based at least in part on evicting the data from the first storage unit.
[0172] Statement 45. A disclosed embodiment includes the method of statement 43 wherein the step of evicting the data from the first storage unit comprises: evicting the data from the first storage unit based at least in part on the age of the data in the first storage unit.
[0173] Statement 46. The disclosed embodiments include a method according to statement 45, wherein the step of evicting the data from the first storage unit based at least in part on the age of the data in the first storage unit includes: evicting the data from the first storage unit based at least in part on the data being the oldest data in the first storage unit.
[0174] Statement 47. A disclosed embodiment includes the method of statement 34 wherein the step of identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second life data includes mapping the second life data to the first placement data.
[0175] Statement 48. A disclosed embodiment includes the method of statement 47 wherein the step of mapping the second life data to the first placement data comprises: mapping the second life data to the first placement data using a table.
[0176] Statement 49. A disclosed embodiment includes the method of statement 48, further comprising: generating a table that maps the second life data to the first placement data.
[0177] Statement 50. A disclosed embodiment includes the method of statement 49, wherein the step of generating a table mapping the second life data to the first placement data comprises: generating the table mapping the second life data to the first placement data at startup of the storage device.
[0178] Statement 51. A disclosed embodiment includes the method of statement 34, wherein: The second storage device implements the Flexible Data Placement (FDP) standard; The first placement data comprises a first placement identifier (PLID); and The second placement data includes a second PLID.
[0179] Statement 52. A disclosed embodiment includes the method of statement 51, wherein: The third storage unit includes a first recovery unit; and The fourth storage unit includes a second recovery unit.
[0180] Statement 53. A disclosed embodiment includes the method of statement 34, wherein the step of identifying, at the storage device, the second storage device comprises: identifying, at the storage device, a redundant array of independent disks (RAID), the RAID including the second storage device and a third storage device.
[0181] Statement 54. A disclosed embodiment includes the method of statement 53 wherein the third storage device includes a fifth storage unit associated with the third placement data and a sixth storage unit associated with the fourth placement data.
[0182] Statement 55. A disclosed embodiment includes the method of statement 53, wherein the step of identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second lifetime data comprises: identifying, at the storage device, first virtual placement data exposed by the RAID based at least in part on the second lifetime data; and The first virtual placement data exposed by the RAID is mapped to the first placement data by the RAID.
[0183] Statement 56. A disclosed embodiment includes the method of statement 55 wherein the RAID maps the second virtual placement data exposed by the RAID to the second placement data.
[0184] Statement 57. A disclosed embodiment includes the method of statement 56, wherein: The third storage device includes a fifth storage unit associated with the third placement data and a sixth storage unit associated with the fourth placement data; and The RAID maps the first virtual placement data to the first placement data and the third placement data, and maps the second virtual placement data to the second placement data and the fourth placement data.
[0185] Statement 58. The disclosed embodiment includes the method of statement 55, wherein the step of mapping the first virtual placement data exposed by the RAID to the first placement data by the RAID includes: mapping the first virtual placement data exposed by the RAID to the first placement data by a RAID usage table.
[0186] Statement 59. A disclosed embodiment includes the method of statement 58, further comprising: generating a table that maps the first virtual placement data exposed by the RAID to the first placement data.
[0187] Statement 60. The disclosed embodiment includes the method according to statement 59, wherein the step of generating a table mapping the first virtual placement data exposed by the RAID to the first placement data includes: generating the table mapping the first virtual placement data exposed by the RAID to the first placement data at the startup of the storage device.
[0188] Statement 61. A disclosed embodiment includes the method of statement 34, further comprising: identifying, at the storage device, second data in the second storage unit; and The second data is deleted from the second storage unit at the first storage device.
[0189] Statement 62. A disclosed embodiment includes the method of statement 61, wherein: The step of identifying, at the storage device, the second data in the second storage unit includes identifying, at the storage device, the second data in the second storage unit based at least in part on a write request from an application.
[0190] Statement 63. A disclosed embodiment includes the method of statement 61, wherein: The write request includes a data identifier associated with the data; and The step of identifying, at the storage device, the second data in the second storage unit includes identifying, at the storage device, the second data based at least in part on associating the second data in the second storage unit with a data identifier.
[0191] Statement 64. A disclosed embodiment includes the method of statement 63 wherein the data identifier comprises a logical block address.
[0192] Statement 65. The disclosed embodiments include an article comprising a non-transitory storage medium having stored thereon instructions that, when executed by a machine, cause: receiving, at a storage device, a write request from an application to store data; identifying, at the storage device, a first storage unit in the first storage device to store the data based at least in part on the first life data, the first storage unit being associated with the second life data, the first storage device further comprising a second storage unit associated with the third life data; storing the data in a first storage unit by a first storage device; identifying, at the storage device, a second storage device; identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second life data, the third storage unit being associated with the first placement data, the second storage device further comprising a fourth storage unit associated with the second placement data; and The data is stored in the third storage unit through the second storage device.
[0193] Statement 66. A disclosed embodiment includes the article of statement 65, wherein: The first storage device includes a first solid state drive (SSD); and The second storage device includes a second SSD.
[0194] Statement 67. A disclosed embodiment includes the article of statement 66, wherein: The first SSD comprises a first high-performance SSD; and The second SSD includes a high-capacity, low-endurance SSD.
[0195] Statement 68. A disclosed embodiment includes the article of statement 65, wherein: The first life data includes a first life identifier (LTID); The second life data includes the second LTID; The third lifetime data includes a third LTID; and The first LTID corresponds to the third LTID.
[0196] Statement 69. A disclosed embodiment includes the article of statement 65 wherein the write request includes first lifespan data.
[0197] Statement 70. A disclosed embodiment includes the article of statement 65, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by a machine, causing generation of first life data by a life predictor.
[0198] Statement 71. The disclosed embodiment includes an article according to statement 70, wherein the step of generating the first life data through the life predictor includes: generating the first life data through a machine learning model.
[0199] Statement 72. The disclosed embodiment includes an article according to statement 71, wherein the step of generating the first life data through the machine learning model includes: generating the first life data through a Seq2Seq model.
[0200] Statement 73. A disclosed embodiment includes the article of statement 70 wherein the write request does not include the first lifetime data.
[0201] Statement 74. A disclosed embodiment includes the article of statement 65, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by a machine, causing the data to be evicted from the first storage unit.
[0202] Statement 75. A disclosed embodiment includes the article of statement 74, wherein: The step of identifying, at the storage device, the second storage device comprises: identifying, at the storage device, the second storage device based at least in part on evicting the data from the first storage unit; The step of identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second lifespan data comprises: identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second lifespan data based at least in part on evicting the data from the first storage unit; and The step of storing, by the second storage device, the data in the third storage unit includes storing, by the second storage device, the data in the third storage unit based at least in part on evicting the data from the first storage unit.
[0203] Statement 76. A disclosed embodiment includes the article of statement 74, wherein the step of evicting the data from the first storage unit includes: evicting the data from the first storage unit based at least in part on the age of the data in the first storage unit.
[0204] Statement 77. The disclosed embodiment includes an article according to statement 76, wherein the step of evicting the data from the first storage unit based at least in part on the age of the data in the first storage unit includes: evicting the data from the first storage unit based at least in part on the data being the oldest data in the first storage unit.
[0205] Statement 78. A disclosed embodiment includes the article of statement 65, wherein the step of identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second life data includes: mapping the second life data to the first placement data.
[0206] Statement 79. A disclosed embodiment includes the article of statement 78 wherein the step of mapping the second lifespan data to the first placement data comprises: mapping the second lifespan data to the first placement data using a table.
[0207] Statement 80. A disclosed embodiment includes the article of statement 79, the non-transitory storage medium having further instructions stored thereon that, when executed by a machine, cause generation of a table mapping the second life data to the first placement data.
[0208] Statement 81. A disclosed embodiment includes the article of statement 80, wherein the step of generating a table mapping the second life data to the first placement data includes: generating the table mapping the second life data to the first placement data at startup of the storage device.
[0209] Statement 82. A disclosed embodiment includes the article of statement 65, wherein: The second storage device implements the Flexible Data Placement (FDP) standard; The first placement data comprises a first placement identifier (PLID); and The second placement data includes a second PLID.
[0210] Statement 83. A disclosed embodiment includes the article of statement 82, wherein: The third storage unit includes a first recovery unit; and The fourth storage unit includes a second recovery unit.
[0211] Statement 84. A disclosed embodiment includes the article of statement 65, wherein the step of identifying, at the storage device, the second storage device comprises: identifying, at the storage device, a redundant array of independent disks (RAID), the RAID comprising the second storage device and a third storage device.
[0212] Statement 85. A disclosed embodiment includes the article of statement 84 wherein the third storage device includes a fifth storage unit associated with the third placement data and a sixth storage unit associated with the fourth placement data.
[0213] Statement 86. A disclosed embodiment includes the article of statement 84, wherein the step of identifying, at the storage device, a third storage unit in the second storage device based at least in part on the second lifespan data comprises: identifying, at the storage device, first virtual placement data exposed by the RAID based at least in part on the second lifetime data; and The first virtual placement data exposed by the RAID is mapped to the first placement data by the RAID.
[0214] Statement 87. A disclosed embodiment includes the article of statement 86 wherein the RAID maps the second virtual placement data exposed by the RAID to the second placement data.
[0215] Statement 88. A disclosed embodiment includes the article of statement 87, wherein: The third storage device includes a fifth storage unit associated with the third placement data and a sixth storage unit associated with the fourth placement data; and The RAID maps the first virtual placement data to the first placement data and the third placement data, and maps the second virtual placement data to the second placement data and the fourth placement data.
[0216] Statement 89. A disclosed embodiment includes the article of statement 86, wherein the step of mapping the first virtual placement data exposed by the RAID to the first placement data by the RAID comprises: mapping the first virtual placement data exposed by the RAID to the first placement data by a RAID usage table.
[0217] Statement 90. A disclosed embodiment includes the article of claim 89, the non-transitory storage medium having further instructions stored thereon that, when executed by the machine, cause generation of a table that maps first virtual placement data exposed by the RAID to first placement data.
[0218] Statement 91. The disclosed embodiment includes an article according to statement 90, wherein the step of generating a table that maps the first virtual placement data exposed by the RAID to the first placement data includes: generating a table that maps the first virtual placement data exposed by the RAID to the first placement data at the startup of the storage device.
[0219] Statement 92. A disclosed embodiment includes the article of statement 65, the non-transitory storage medium having further instructions stored thereon, the further instructions, when executed by a machine, causing: identifying, at the storage device, second data in the second storage unit; and The second data is deleted from the second storage unit at the first storage device.
[0220] Statement 93. A disclosed embodiment comprises the article of statement 92, further comprising: The step of identifying, at the storage device, the second data in the second storage unit includes identifying, at the storage device, the second data in the second storage unit based at least in part on a write request from an application.
[0221] Statement 94. A disclosed embodiment includes the article of statement 92, wherein: The write request includes a data identifier associated with the data; and The step of identifying, at the storage device, the second data in the second storage unit includes identifying, at the storage device, the second data based at least in part on associating the second data in the second storage unit with a data identifier.
[0222] Statement 95. A disclosed embodiment comprises the article of claim 94 wherein the data identifier comprises a logical block address.
[0223] 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, what is claimed is all such modifications that may fall within the scope and spirit of the appended claims and their equivalents.
Claims
1. A storage device, comprising: An interface for receiving a write request for storing data from an application; a first storage device, used as a cache, the first storage device comprising a first storage unit associated with first lifetime data; a second storage device, used as a persistent storage device, the second storage device comprising a second storage unit associated with the first placement data; wherein the first storage device is configured to store the data in a first storage unit associated with the first life data based on the second life data; and The second storage device is configured to store the data in a second storage unit associated with the first placement data based at least in part on the first lifetime data.
2. The storage device according to claim 1, wherein: The write request includes the second lifetime data.
3. The storage device according to claim 1, further comprising: A lifespan predictor for generating secondary lifespan data.
4. The storage device according to claim 1, further comprising: A mapping circuit is used to map the first life data to the first placement data.
5. The storage device according to claim 1, wherein: The first storage device further includes a third storage unit associated with third life data, and the second storage device further includes a fourth storage unit associated with second placement data.
6. The storage device according to claim 5, further comprising: Redundant Array of Independent Disks logic; as well as The third storage device, The independent disk redundant array logic stores the data in the second storage device and the third storage device.
7. The storage device according to claim 6, wherein: The third storage device includes a fifth storage unit associated with the third placement data and a sixth storage unit associated with the fourth placement data; The redundant array of independent disks logic includes mapping logic for mapping the first virtual placement data to the first placement data and the third placement data, and for mapping the second virtual placement data to the second placement data and the fourth placement data; and The redundant array of independent disks logic is configured to expose the first virtual placement data and the second virtual placement data to the storage device.
8. The storage device according to claim 5, further comprising: The Bloom filter is configured to identify second data stored in the third storage unit based at least in part on a write request from the application and delete the second data from the third storage unit.
9. A method for storing data, comprising: receiving, at a storage device, from an application, a write request for storing the data; identifying, at the storage device, a first storage unit in the first storage device to store the data based at least in part on the first lifetime data, the first storage unit being associated with the second lifetime data; storing the data in a first storage unit by a first storage device; identifying, at the storage device, a second storage device; identifying, at the storage device, a second storage unit in a second storage device based at least in part on the second lifetime data, the second storage unit being associated with the first placement data; as well as The data is stored in the second storage unit by the second storage device.
10. The method according to claim 9, wherein: The write request includes first lifetime data.
11. The method according to claim 9, further comprising: First life data is generated by a life predictor.
12. The method according to claim 9, further comprising: The data is evicted from the first storage unit.
13. The method according to claim 12, wherein: The step of evicting the data from the first storage unit includes evicting the data from the first storage unit based at least in part on an age of the data in the first storage unit.
14. The method according to claim 9, wherein: The step of identifying, at the storage device, a second storage unit in the second storage device based at least in part on the second life data includes mapping the second life data to the first placement data.
15. The method according to claim 9, wherein: The step of identifying the second storage device at the storage device includes identifying a redundant array of independent disks at the storage device, the redundant array of independent disks including the second storage device and a third storage device.
16. The method according to claim 15, wherein: The step of identifying, at the storage device, a second storage unit in a second storage device based at least in part on the second lifetime data comprises: identifying, at the storage device, first virtual placement data exposed by the redundant array of independent disks based at least in part on the second lifetime data; and The first virtual placement data exposed by the redundant array of independent disks is mapped to the first placement data by the redundant array of independent disks.
17. The method according to claim 9, wherein: The first storage device further includes a third storage unit associated with third life data, and the second storage device further includes a fourth storage unit associated with second placement data.
18. The method according to claim 17, wherein: The write request includes a data identifier associated with the data; identifying, at the storage device, the second data based at least in part on associating the second data in the third storage unit with the data identifier; and The second data is deleted from the third storage unit at the first storage device.
19. A non-transitory storage medium having instructions stored thereon that, when executed by a machine, cause: receiving, at a storage device, a write request from an application to store data; identifying, at the storage device, a first storage unit in the first storage device to store the data based at least in part on the first lifetime data, the first storage unit being associated with the second lifetime data; storing the data in a first storage unit by a first storage device; identifying, at the storage device, a second storage device; identifying, at the storage device, a second storage unit in a second storage device based at least in part on the second lifetime data, the second storage unit being associated with the first placement data; and The data is stored in the second storage unit by the second storage device.
20. The non-transitory storage medium of claim 19, wherein: The write request includes a data identifier associated with the data; and The non-transitory storage medium has further instructions stored thereon, which when executed by a machine cause: identifying, at the storage device, the second data based at least in part on associating the second data in the third storage unit of the first storage device with the data identifier; and The second data is deleted from the third storage unit at the first storage device.