In some embodiments, a device comprises a primary storage device comprising a plurality of primary sub-blocks; a cache memory device comprising a plurality of cache sub-blocks implemented as a cache for the primary storage device; and a controller configured to map at least one portion of one or more primary sub-blocks of the primary storage device stored in the cache to a physical location in the cache memory device using at least one table identifying portions of the primary storage device that are cached in one or more of the cache sub-blocks of the cache memory device, wherein a size of the at least one table is independent of a capacity of the primary storage device.
Other illustrative embodiments include, without limitation, apparatus, systems, methods and computer program products comprising processor-readable storage media.
Illustrative embodiments will be described herein with reference to exemplary storage devices, such as hard disk drives (HDD) and/or solid state drives (SSD) and associated storage media, controllers, and other processing devices. It is to be appreciated, however, that these and other embodiments are not restricted to the particular illustrative system and device configurations shown. Accordingly, the term “hybrid storage device” as used herein is intended to be broadly construed, so as to encompass, for example, any storage device employing the hybrid storage, SSD caching and/or three-level mapping techniques described herein. Numerous other types of storage systems are also encompassed by the term “hybrid storage device” as that term is broadly used herein.
In one or more embodiments, improved hybrid storage techniques are provided that employ a cache memory device, such as an SSD memory, as a cache for a primary storage device, such as an HDD or another SSD. A hybrid controller in at least one embodiment maps sub-blocks of the primary storage device (e.g., an HDD or another SSD) that are stored in the cache to corresponding physical locations in the cache memory device using a three-level map identifying portions of the primary storage device that are cached in sub-blocks of the cache memory device. In some embodiments, a size of the three-level map is independent of a capacity of the primary storage device.
For example, in one or more embodiments, the disclosed hybrid storage system can be implemented as a solid state hybrid drive (SSHD) where the cache memory device is implemented as an SSD memory and the primary storage device is implemented as an HDD. In other exemplary embodiments of the disclosed hybrid storage system, the cache memory device can be implemented as an SSD memory, such as a multi-level cell (MLC) flash memory device or a triple-level cell (TLC) flash memory device, and the primary storage device can be implemented as another SSD memory, such as a quad-level cell (QLC) flash memory device or a TLC flash memory device, or any suitable combination of primary SSD memory and SSD cache.
In at least one embodiment, the three-level map comprises a zero-level map implemented as a content addressable memory (CAM), where an address of each entry identifies one sub-block of the cache memory device and where a content of each entry identifies at least portions of the sub-blocks of the primary storage device that are stored in corresponding sub-blocks of the cache memory device. In addition, a primary storage device-to-cache memory device mapper identifies where a given portion of the primary storage device is stored within one or more sub-blocks of the cache memory device. The primary storage device-to-cache memory device mapper provides an index into a two-level map.
In addition, in some embodiments, improved techniques are provided for recovery and coherence, as well as promotion and demotion of data into, and out of, the SSD cache, respectively.
As discussed hereinafter, the SSD cache 130 can be configured to temporarily store data of the HDD 140. The HDD 140 includes a memory space that corresponds to a number of memory sectors, each sector addressable using a substantially unique host page address (HPA). The sectors of the HDD 140 are directly accessible by the host 110 using the HPAs, and thus the corresponding HPAs of the HDD 140 are referred to herein as host HPAs.
The host 110 sends memory access requests to the hybrid drive controller 200 to read or write data. The memory access requests may specify a host HPA range used for the operation of the memory access request. For example, a memory access request from the host 110 may request that a host HPA range be written to the hybrid storage system 100 and/or a memory access request may request that a host HPA range be read from the hybrid storage system 100. The memory access requests received from the host 110 are managed by the hybrid drive controller 200 to cause data to be written to and/or read from the hybrid storage system 100.
The hybrid drive controller 200 is further coupled via one or more device interfaces 250 to one or more storage devices, such as SSD 130 and HDD 140. According to various embodiments, device interfaces 250 are one or more of: an asynchronous interface; a synchronous interface; a double data rate (DDR) synchronous interface; an ONFI (Open NAND Flash Interface) compatible interface, such as an ONFI 2.2 compatible interface; a Toggle-mode compatible non-volatile memory interface; a non-standard version of any of the preceding interfaces; a custom interface; or any other type of interface used to connect to storage devices.
The 200 may have one or more processing modules 230, such as data processing modules and device management modules, as would be apparent to a person of ordinary skill in the art.
As noted above, in one or more embodiments, the three-level map 300, discussed further below in conjunction with
For additional details regarding suitable implementations of the hybrid drive controller 200, see, for example, U.S. Pat. No. 9,216,633, entitled “Flash Translation Layer With Lower Write Amplification,” and/or United States Published Patent Application No. 2015/0058527, filed Aug. 20, 2013, entitled “Hybrid Memory With Associative Cache,” each assigned to the assignee of the present application and incorporated by reference herein.
As shown in
In some embodiments, a given application will determine the granularity of the SSD/HDD sub-blocks, for example, depending upon Promotion and Demotion time targets without affecting host bandwidth. Based on the granularity, the number of sub-blocks for a SSD cache capacity and HDD capacity will be calculated.
Typically, the various tables (or portions thereof) of the three-level map 300 are stored in on-chip SRAM (Static Random Access Memory) or in a DRAM (Dynamic Random Access Memory) for best performance and lower latency to access the data by the host 110. Since the capacity of the SSD 130 is very small compared with the expected capacity of the HDD 140, the metadata associated with the three-level map 300 can be stored in on-chip SRAM (without a need for external DRAM memory for normal operations).
It is estimated that 2 GB of map metadata is needed for each 1 TB (terabyte) of storage capacity, adding significant cost and power considerations. Among other benefits, the three-level map 300 grows in proportion to the size of the cache (capacity of SSD 130) and is independent of the capacity of the HDD 140. In this manner, the same hybrid drive controller 200 can serve future (expanded) generations of hybrid storage systems.
In one or more embodiments, the exemplary zero-level map 325 is implemented as a content addressable memory (CAM) and comprises an entry for each sub-block of the SSD 130, where each ZLM entry identifies the sub-block (if any) of the HDD 140 that is stored in the corresponding sub-block of the SSD 130. For example, each entry address within the zero-level map 325 will reflect the SSD sub-block number. Thus, the zero-level map 325 address will point to the corresponding sub-block of the SSD 130 and the content of an entry in the zero-level map 325 will specify the corresponding HDD sub-block stored in the entry. The exemplary zero-level map 325 isolates the HPA addressing of the SSD 130 from the HPA of the HDD 140.
Generally, when the host 110 writes to (or reads from) the HDD 140 using a host page address (HPA) identifying a portion of the HDD 140, the identifier of the sub-block that includes the specified HPA is searched in the zero-level map 325 to determine if the HDD sub-block is already cached in the SSD 130 (or stored in the HDD 140). For example, for a 1 TB/1024 GB HDD, and a block size (in zero-level map 325) of 128 MB (0.128 GB), each sub-block in the HDD is equal to HDD Capacity (1 TB)/Blk Size (128 MB).
If the HDD sub-block is not found within the zero-level map 325 (shown in
As shown in
Generally, the FLM 335 and SLM 340 are indexed using a quotient and a remainder, respectively, (not shown in
In some embodiments, a 128 GB capacity SSD cache 130 will need 0.256 GB of total map memory (FLM 335 and SLM 340) plus the zero-level map 325, as described above (for an exemplary rule of thumb of 2 GB of MAP (two-level) for 1 TB of main memory, where FLM can be on chip memory). Storing the tables of the three-level map 300 on silicon is thus feasible and saves the cost of having an external non-volatile memory as well.
The hybrid drive controller 200 optionally operates with multiple modes, where in an “SSD only” storage system 100, the HDD HPA-to-SSD HPA mapping is simply bypassed; and where the hybrid functionality is enabled for a hybrid storage system 100 comprising both SSD and HDD.
For a read operation from the host 110, the three-level map 300 is evaluated to determine where the target data is located (HDD or SSD). Likewise, for a write operation, the three-level map 300 is evaluated to determine where to write the data (e.g., by identifying available sub-blocks).
Demotions
Since the number of sub-blocks within the HDD 140 is typically significantly more than the number of sub-blocks in the SSD Cache 130, in one or more embodiments, the zero-level map 325 will only have entries equal to the number of sub-blocks in the SSD cache 130. As the SSD cache 130 begins to fill, more HDD sub-blocks are allocated inside the SSD cache 130. Beyond a threshold (shown as Demote Threshold 365 in
As the zero-level map 325 is allocated to sub-blocks of the SSD 130, beyond the system-defined Demote Threshold 365, detected at step 370, the zero-level map 325, implemented either in firmware or hardware, will issue an SSDSubBlockFill_Threshold_Hit to the firmware along with the sub-block number of the oldest SSD sub-block from the timestamp table 350. The firmware will use this information to start a demote operation for each identified demoted sub-block to the HDD 140 and thereby free additional sub-blocks in the SSD 130, thereby making the freed sub-block available for new “hot” data coming from the Host 110.
Promotions
As the Host 110 begins to frequently access data that resides within the HDD 140, such data will then need to be promoted to the SSD cache 130. When the entire sub-block is within the HDD 140, the exemplary firmware promotion engine will quickly allocate the SSD sub-block to such data in the zero-level map 325 and then begins the promotion of that data with a granularity offered by one FLM entry (number of entries within SLM). The promotion can begin anywhere in the sub-block, as per host access of the data.
The Data Range within the sub-block can be immediately promoted to the SSD cache 130 without having to completely transfer the sub-block worth of data (128 MB in the present example of
As shown in
One or more embodiments of the disclosure recognize that an entire sub-block of data may not be “hot” within a given sub-block, and promoting the entire sub-block may affect the media endurance of the non-volatile memory because of increased write amplification due to promotions of the entire sub-blocks. In addition, in some applications, the data within a given sub-block may be sparse (e.g., with some logical block address (LBA) ranges written by the Host 110 and some LBA ranges that are not written by the Host 110).
To avoid such drawbacks, the exemplary three-level map 300 of
The exemplary zero-level map variation 400 optionally employs a portion (e.g., 25%) of the zero-level map 420 as a Promote_CAM 425. The entries in the Promote_CAM 425 are used during promotions from the HDD 140 to the SSD cache 130. The Promote_CAM 425 portion of the zero-level map 420 will also have a secondary variable length table 450 with an entry for each sub-block. The secondary table 450 records a starting HPA address and length of the data promoted from the HDD 140 to an SSD sub-block. The table 450 also records the SSD_SubBlk identifier where this data is actually written to the SSD sub-block. In this manner, a sub-block can slowly fill up to its full capacity within the SSD sub cache 130 and once that is done, then the sub-block is freed from the Promote ZLM CAM 425 and moved to primary zero-level map 420, for example, by the firmware.
It may happen that only a few HPAs within a given sub-block ever becomes “hot,” whereas the remaining portions of the given sub-blocks within that space remains cold. In such situations, the same promote CAM sub-block can be used to collect “hot” data from multiple HDD sub-blocks and aggregated into a single SSD sub-block as long as the HPA promoted to one SSD sub-block from different HDD/SSD sub-blocks are non-overlapping, thereby greatly improving the efficiency of the granularity of the zero-level map 420. In addition, related promotion/demotions tradeoffs are improved, while significantly reducing the non-volatile memory (NVM) SSD write amplification. Most of these features can be implemented either in hardware or firmware (FW) and, in one or more embodiments, have full FW overide control when implemented in hardware, full hardware acceleration capability can be available at the same time firmware can come back for any stage to override the hardware behavior.
For additional details regarding suitable implementations of the promotion and/or demotion aspects of hybrid drive controller 200, see, for example, United States Published Patent Application No. 2015/0058527, filed Aug. 20, 2013, entitled “Hybrid Memory With Associative Cache,” assigned to the assignee of the present application and incorporated by reference herein.
Recovery and Coherence
Generally, the three-level map 300 of
For additional details regarding recovery and coherence of the three-level map 300, see, for example, U.S. Pat. No. 9,216,633, entitled “Flash Translation Layer With Lower Write Amplification,” assigned to the assignee of the present application and incorporated by reference herein.
Caching Data Structures for Tracking Data Hotness and/or Coldness
A coldness tracker can be implemented within the condensed zero-level map 325 on a sub-block basis.
It should be understood that the particular hybrid storage arrangements illustrated in
Illustrative embodiments disclosed herein can provide a number of significant advantages relative to conventional arrangements.
For example, one or more embodiments provide significantly reduced write amplification. The disclosed three-level maps 300 provide a translation from, for example, logical block addresses (LBAs) in a logical block address space (such as used by a host) to physical addresses in a non-volatile memory (NVM), such as a solid state disk/drive (SSD) or a hard disk drive (HDD). SSDs using some NVM types such as NAND flash use garbage collection (or recycling) to reclaim free space created when an logical block address (LBA) is over-written with new data (rendering a previous physical location associated with that LBA unused). Garbage collection causes write amplification—a multiplicative factor on the amount of host data written versus the amount of data written to NVM. There are multiple components of write amplification, including a map component of write amplification (termed map write amplification). The map write amplification arises from a need to save the three-level maps 300 in a non-volatile memory and any necessary recycling of the three-level maps 300. In storage devices that reduce the user data, the map write amplification is a larger fraction of the total write amplification, since the data write amplification is decreased.
In some embodiments, improved hybrid storage techniques are provided that employ a cache memory device, such as an SSD, as a cache for another storage device, such as a HDD or another SSD. A hybrid controller in at least one embodiment maps sub-blocks of the HDD storage device that are stored in the SSD cache to corresponding physical locations in the SSD memory device using a three-level map identifying portions of the HDD storage device that are cached in sub-blocks of the SSD memory device. In some embodiments, a size of the three-level map is independent of a capacity of the first storage device. In addition, in some embodiments, improved techniques are provided for recovery and coherence, as well as promotion and demotion of data into, and out of, the SSD cache, respectively.
It is to be appreciated that the particular advantages described above and elsewhere herein are associated with particular illustrative embodiments and need not be present in other embodiments. Also, the particular types of hybrid storage features and functionality as illustrated in the drawings and described above are exemplary only, and numerous other arrangements may be used in other embodiments.
As mentioned previously, at least portions of the disclosed hybrid storage system may be implemented using one or more processing platforms. A given such processing platform comprises at least one processing device comprising a processor coupled to a memory. The processor and memory in some embodiments comprise respective processor and memory elements of a virtual machine or container provided using one or more underlying physical machines. The term “processing device” as used herein is intended to be broadly construed so as to encompass a wide variety of different arrangements of physical processors, memories and other device components as well as virtual instances of such components. For example, a “processing device” in some embodiments can comprise or be executed across one or more virtual processors. Processing devices can therefore be physical or virtual and can be executed across one or more physical or virtual processors. It should also be noted that a given virtual device can be mapped to a portion of a physical one.
Some illustrative embodiments of a processing platform that may be used to implement at least a portion of an information processing system comprises cloud infrastructure including virtual machines. The cloud infrastructure further comprises sets of applications running on respective ones of the virtual machines. These and other types of cloud infrastructure can be used to provide what is also referred to herein as a multi-tenant environment. One or more system components such as hybrid drive controller 200, or portions thereof, are illustratively implemented for use by tenants of such a multi-tenant environment.
The disclosed hybrid storage arrangements may be implemented using one or more processing platforms. One or more of the processing modules or other components may therefore each run on a computer, storage device or other processing platform element. A given such element may be viewed as an example of what is more generally referred to herein as a “processing device.” An exemplary processing platform comprises at least a portion of the given system and includes at least one processing device comprising a processor coupled to a memory. The processor may comprise a microprocessor, a microcontroller, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other type of processing circuitry, as well as portions or combinations of such circuitry elements. The memory may comprise random access memory (RAM), read only memory (ROM) or other types of memory, in any combination. The memory and other memories disclosed herein should be viewed as illustrative examples of what are more generally referred to as “processor-readable storage media” storing executable program code of one or more software programs. The exemplary processing device may also comprise network interface circuitry, which is used to interface the processing device with a network and other system components, and may comprise conventional transceivers.
Articles of manufacture comprising such processor-readable storage media are considered illustrative embodiments. A given such article of manufacture may comprise, for example, a storage array, a storage disk or an integrated circuit containing RAM, ROM or other electronic memory, or any of a wide variety of other types of computer program products. The term “article of manufacture” as used herein should be understood to exclude transitory, propagating signals. Numerous other types of computer program products comprising processor-readable storage media can be used.
It should therefore be understood that in other embodiments different arrangements of additional or alternative elements may be used. At least a subset of these elements may be collectively implemented on a common processing platform, or each such element may be implemented on a separate processing platform.
Also, numerous other arrangements of computers, servers, storage devices or other components are possible in the hybrid storage system. Such components can communicate with other elements of the hybrid storage system over any type of network or other communication media.
As indicated previously, components of an information processing system as disclosed herein can be implemented at least in part in the form of one or more software programs stored in memory and executed by a processor of a processing device. For example, at least portions of the functionality of the three-level mapping process of
It should again be emphasized that the above-described embodiments are presented for purposes of illustration only. Many variations and other alternative embodiments may be used. For example, the disclosed techniques are applicable to a wide variety of other types of information processing systems and hybrid storage systems. Also, the particular configurations of system and device elements and associated processing operations illustratively shown in the drawings can be varied in other embodiments. Moreover, the various assumptions made above in the course of describing the illustrative embodiments should also be viewed as exemplary rather than as requirements or limitations of the disclosure. Numerous other alternative embodiments within the scope of the appended claims will be readily apparent to those skilled in the art.
Number | Name | Date | Kind |
---|---|---|---|
7710425 | Baldwin | May 2010 | B1 |
9037820 | Ratn | May 2015 | B2 |
9507731 | Zheng | Nov 2016 | B1 |
20100211731 | Mittendorff et al. | Aug 2010 | A1 |
20110055458 | Kuehne | Mar 2011 | A1 |
20110231593 | Yasufuku | Sep 2011 | A1 |
20120239853 | Moshayedi | Sep 2012 | A1 |
20130054872 | Thomas, III | Feb 2013 | A1 |
20130054882 | Ryu | Feb 2013 | A1 |
20130111116 | Inada | May 2013 | A1 |
20130145102 | Wang | Jun 2013 | A1 |
20140013043 | Yano | Jan 2014 | A1 |
20140047170 | Cohen | Feb 2014 | A1 |
20140095827 | Wei | Apr 2014 | A1 |
20140258588 | Tomlin | Sep 2014 | A1 |
20140325117 | Canepa | Oct 2014 | A1 |
20140351523 | Samanta | Nov 2014 | A1 |
20140379988 | Lyakhovitskiy | Dec 2014 | A1 |
20150058527 | Venkata | Feb 2015 | A1 |
20150074328 | Baryudin | Mar 2015 | A1 |
20150121012 | Smith | Apr 2015 | A1 |
20160232103 | Schmisseur | Aug 2016 | A1 |
20160259571 | Kumasawa | Sep 2016 | A1 |
20160342509 | Kotte | Nov 2016 | A1 |
20170004002 | Nakamura | Jan 2017 | A1 |
20170139642 | Tan | May 2017 | A1 |
20170235681 | Kaburaki | Aug 2017 | A1 |
20180089266 | Vujic | Mar 2018 | A1 |
Number | Date | Country | |
---|---|---|---|
20180349040 A1 | Dec 2018 | US |