WO2016160164A1 - Improving storage cache performance by using compressibility of the data as a criteria for cache insertion - Google Patents
Improving storage cache performance by using compressibility of the data as a criteria for cache insertion Download PDFInfo
- Publication number
- WO2016160164A1 WO2016160164A1 PCT/US2016/018517 US2016018517W WO2016160164A1 WO 2016160164 A1 WO2016160164 A1 WO 2016160164A1 US 2016018517 W US2016018517 W US 2016018517W WO 2016160164 A1 WO2016160164 A1 WO 2016160164A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory
- data
- cache lines
- cache
- compressibility
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Definitions
- the present disclosure generally relates to the field of electronics. More particularly, some embodiments generally relate to improving storage cache performance by using compressibility of the data as a criteria for cache insertion or allocation.
- data stored in a cache can be accessed many times faster than the same data stored in other types of memory.
- size of a cache media is increased, the likelihood that data is found in the cache increases (e.g., resulting in a better hit rate).
- growing the size of the cache adds to overall system costs.
- FIGs. 1 and 4-6 illustrate block diagrams of embodiments of computing systems, which may be utilized to implement various embodiments discussed herein.
- Fig. 2 illustrates a block diagram of various components of a solid state drive, according to an embodiment.
- Figs. 3A1, 3A2, 3B1, 3B2, and C illustrate flow diagrams of methods according some embodiments. DETAILED DESCRIPTION
- SSDs Solid State Drives
- the hit rate of the cache will grow as the size of the cache media grows. Therefore, some cache implementations using SSDs may use hardware compression in the SSD to compress data so that more data fits into the cache, resulting in an improved cache hit rate.
- some embodiments relate to improving storage cache performance by using compressibility of the data as a criteria for cache insertion or allocation.
- a decision is made whether a piece of data should be cached (or evicted from the cache).
- This decision (also referred to herein as "cache insertion” or “cache allocation”) is aimed at ensuring that the data being cached is likely to be accessed in the (e.g., relatively near) future and that the limited space in the cache media is only used for frequently accessed data.
- cache insertion or "cache allocation”
- cache allocation is aimed at ensuring that the data being cached is likely to be accessed in the (e.g., relatively near) future and that the limited space in the cache media is only used for frequently accessed data.
- whether some piece of data is cached (or evicted from the cache) can be a critical decision in cache utilization efficiency.
- one embodiment improves the cache hit rate of storage caches that utilize data compressing non-volatile memory (e.g., SSDs) by giving preference to data (e.g., in a cache line or other granularity of cache storage media) that has higher compressibility as a factor in cache policy decisions (or when data is cached or evicted from the cache).
- data compressing non-volatile memory e.g., SSDs
- Part of the optimization includes a feature in the compression process where the host logic/software is explicitly given information regarding the compressibility of each Input/Output (IO) data, e.g., as it is written (or prior to writing the data) to the cache media. Therefore, cache policy logic/software in the host (or a server) can explicitly know the compressibility of each cache line of data, even though the actual compression is performed by hardware in the non-volatile memory device (e.g., SSD) itself. The cache policy logic/software then can give preference to data that is more compressible; thus, increasing the overall compressibility of the data in the cache.
- IO Input/Output
- the cache can hold more cache lines than it would have if compressibility was not used as a factor, and therefore, all other factors being equal, the hit rate of the cache will improve.
- compressibility of the data in a cache line is used to augment traditional factors (sequentiality, process ID, size, file type to name a few) used to decide whether or not to move storage data into the cache or remove storage data from the cache.
- SSDs e.g., including NAND and/or NOR type of memory cells
- embodiments are not limited to SSDs and non-volatile memory of any type (in a format other than SSD but still usable for storage) may be used.
- the storage media can be any type of storage media including, for example, one or more of: nanowire memory, Ferro-electric transistor random access memory (FeTRAM), magnetoresistive random access memory (MRAM), flash memory, Spin Torque Transfer Random Access Memory (STTRAM), Resistive Random Access Memory, byte addressable 3-Dimensional Cross Point Memory, PCM (Phase Change Memory), etc.
- FeTRAM Ferro-electric transistor random access memory
- MRAM magnetoresistive random access memory
- STTRAM Spin Torque Transfer Random Access Memory
- PCM Phase Change Memory
- RAM Random Access Memory
- DRAM Dynamic RAM
- volatile memory capable of retaining data during power failure or power disruption (e.g., backed by battery or capacitance) may be used for the storage cache.
- Fig. 1 illustrates a block diagram of a computing system 100, according to an embodiment.
- the system 100 may include one or more processors 102-1 through 102-N (generally referred to herein as "processors 102" or “processor 102").
- the processors 102 may communicate via an interconnection or bus 104.
- Each processor may include various components some of which are only discussed with reference to processor 102-1 for clarity. Accordingly, each of the remaining processors 102-2 through 102-N may include the same or similar components discussed with reference to the processor 102-1.
- the processor 102-1 may include one or more processor cores 106-1 through 106-M (referred to herein as “cores 106," or more generally as “core 106"), a processor cache 108 (which may be a shared cache or a private cache in various embodiments), and/or a router 110.
- the processor cores 106 may be implemented on a single integrated circuit (IC) chip.
- the chip may include one or more shared and/or private caches (such as processor cache 108), buses or interconnections (such as a bus or interconnection 112), logic 120, memory controllers (such as those discussed with reference to Figs. 4-6), or other components.
- the router 110 may be used to communicate between various components of the processor 102-1 and/or system 100.
- the processor 102-1 may include more than one router 110.
- the multitude of routers 110 may be in communication to enable data routing between various components inside or outside of the processor 102-1.
- the processor cache 108 may store data (e.g., including instructions) that are utilized by one or more components of the processor 102-1, such as the cores 106.
- the processor cache 108 may locally cache data stored in a memory 114 for faster access by the components of the processor 102.
- the memory 114 may be in communication with the processors 102 via the interconnection 104.
- the processor cache 108 (that may be shared) may have various levels, for example, the processor cache 108 may be a mid-level cache and/or a last-level cache (LLC).
- each of the cores 106 may include a level 1 (LI) processor cache (116-1) (generally referred to herein as "LI processor cache 116").
- LI level 1
- Various components of the processor 102-1 may communicate with the processor cache 108 directly, through a bus (e.g., the bus 112), and/or a memory controller or hub.
- memory 114 may be coupled to other components of system 100 through a memory controller 120.
- Memory 114 includes volatile memory and may be interchangeably referred to as main memory. Even though the memory controller 120 is shown to be coupled between the interconnection 104 and the memory 114, the memory controller 120 may be located elsewhere in system 100. For example, memory controller 120 or portions of it may be provided within one of the processors 102 in some embodiments.
- System 100 also includes Non-Volatile (NV) storage (or Non-Volatile Memory (NVM)) device such as an SSD 130 coupled to the interconnect 104 via SSD controller logic 125.
- NV Non-Volatile
- NVM Non-Volatile Memory
- logic 125 may control access by various components of system 100 to the SSD 130.
- logic 125 is shown to be directly coupled to the interconnection 104 in Fig.
- logic 125 can alternatively communicate via a storage bus/interconnect (such as the SATA (Serial Advanced Technology Attachment) bus, Peripheral Component Interconnect (PCI) (or PCI express (PCIe) interface), etc.) with one or more other components of system 100 (for example where the storage bus is coupled to interconnect 104 via some other logic like a bus bridge, chipset (such as discussed with reference to Figs. 2 and 4-6), etc.). Additionally, logic 125 may be incorporated into memory controller logic (such as those discussed with reference to Figs. 4-6) or provided on a same Integrated Circuit (IC) device in various embodiments (e.g., on the same IC device as the SSD 130 or in the same enclosure as the SSD 130).
- a storage bus/interconnect such as the SATA (Serial Advanced Technology Attachment) bus, Peripheral Component Interconnect (PCI) (or PCI express (PCIe) interface), etc.
- PCIe Peripheral Component Interconnect
- PCIe
- system 100 also includes a backing store 180 which may be a storage device that is relatively slower than a storage cache (such as SSD 130).
- backing store 180 may include a hard disk drive, such as disk drive 428 of Fig. 4, data storage 548 of Fig. 5, or more generally any other storage device that is slower than the storage cache.
- the storage cache e.g., SSD 130 or another storage device discussed herein, such as NVM or non-NVM device with power backup
- logic 125 and/or SSD 130 may be coupled to one or more sensors (not shown) to receive information (e.g., in the form of one or more bits or signals) to indicate the status of or values detected by the one or more sensors.
- sensors may be provided proximate to components of system 100 (or other computing systems discussed herein such as those discussed with reference to other figures including 4-6, for example), including the cores 106, interconnections 104 or 112, components outside of the processor 102, SSD 130, SSD bus, SATA bus, logic 125, etc., to sense variations in various factors affecting power/thermal behavior of the system/platform, such as temperature, operating frequency, operating voltage, power consumption, and/or inter-core communication activity, etc.
- system 100 may include cache logic 160, which can be located in various locations in system 100 (such as those locations shown, including coupled to interconnect 104, inside processor 102, etc.). As discussed herein, logic 160 improves storage cache performance by using compressibility of the data as a criteria for cache insertion.
- Fig. 2 illustrates a block diagram of various components of an SSD, according to an embodiment.
- Logic 160 may be located in various locations in system 100 of Fig. 1 as discussed, as well as inside SSD controller logic 125. While SSD controller logic 125 may facilitate communication between the SSD 130 and other system components via an interface 250 (e.g., SATA, SAS, PCIe, etc.), a controller logic 282 facilitates communication between logic 125 and components inside the SSD 130 (or communication between components inside the SSD 130). As shown in Fig.
- controller logic 282 includes one or more processor cores or processors 284 and memory controller logic 286, and is coupled to Random Access Memory (RAM) 288, firmware storage 290, and one or more memory modules or dies 292-1 to 292 -n (which may include NAND flash, NOR flash, or other types of non-volatile memory).
- Memory modules 292-1 to 292-n are coupled to the memory controller logic 286 via one or more memory channels or busses.
- processors 284 and/or controller 282 may compress/decompress (or otherwise cause compression/decompression) of data written to or read from memory modules 292-1 to 292 -n.
- a hybrid drive may be used instead of the SSD 130 (where a plurality of memory modules/media 292-1 to 292 -n is present such as a hard disk drive, flash memory, or other types of non-volatile memory discussed herein).
- logic 160 may be present in the same enclosure as the hybrid drive.
- Figs. 3A1 to C illustrate flow diagrams of methods according to some embodiments. More particularly, Fig. 3A1 and 3A2 illustrate methods to address two types of read misses. Figs. 3B1 and 3B2 illustrate methods to address two types of write misses. Fig. 3C illustrates a method to provide free space in a storage cache, according to an embodiment. The methods shown in Figs. 3A1 to C are intended to improve storage cache performance by using compressibility of the data as a criteria for cache allocation, according to some embodiments. In some embodiments, one or more components (such as logic 160) of Figs. 1-2 and/or 4-6 perform one or more operations of Figs. 3A1-C.
- a read miss generally refers to an indication that some requested data is absent from a storage cache (e.g., SSD 130 or other storage cache such as those discussed herein)
- the requested data is obtained from a backing store (e.g., backing store 180).
- the read request is satisfied (i.e., the requested data is provided to the requesting agent).
- the requested data is stored in one or more free cache lines of the storage cache.
- compression information regarding data written at operation 306 is received.
- the compression information may include an indication of how compressible the data is (or alternatively, the size of the compressed version of data versus uncompressed version of the data). Using this compression information as one factor, operation 310 determines whether to keep the data in the one or more cache entries/lines of the storage cache. Thus, compressibility of the data (per compression information of operation 308) in a cache line is used to augment traditional factors (sequentiality, process ID, request size, and/or file type to name a few) used to decide whether to keep the data in the storage cache at operation 312 or remove the data from the storage cache at operation 314.
- method of Fig. 3A2 deals with a different type of read miss than the method of Fig. 3A1 in that the method of Fig. 3A2 does not write the data to free cache line(s) as is done at operation 306 of Fig. 3A1. Instead, the method of Fig. 3A2 determines whether to store the requested data in the storage cache at operation 320. This decision uses the compressibility of the data of operation 308 as one factor to determine whether to store the data in the one or more cache entries/lines of the storage cache.
- compressibility of the data (per compression information of operation 308) in a cache line is used to augment traditional factors (sequentiality, process ID, request size, and/or file type to name a few) used to decide whether to write the data in the storage cache at operation 322.
- a write miss generally refers to an indication that the write data is absent from the storage cache.
- the data is written to the storage cache.
- compression information regarding data written at operation 332 is received.
- the compression information may include an indication of how compressible the data is (or alternatively, the size of the compressed version of data versus uncompressed version of the data). Using this compression information as one factor, operation 336 determines whether to keep the data in the one or more cache entries/lines of the storage cache.
- compressibility of the data (per compression information of operation 308) in a cache line is used to augment traditional factors (sequentiality, process ID, request size, and/or file type to name a few) used to decide whether to keep the data in the storage cache at operation 338 or remove the data from the storage cache at operation 339.
- method of Fig. 3B2 deals with a different type of write miss than the method of Fig. 3B1 in that the method of Fig. 3B2 does not write the data to free cache line(s) as is done at operation 332 of Fig. 3B1. Instead, the method of Fig. 3B2 determines whether to store the data in the storage cache at operation 346. This decision uses the compressibility of the data of operation 338 as one factor to determine whether to store the data in the one or more cache entries/lines of the storage cache.
- compressibility of the data (per compression information of operation 346) in a cache line is used to augment traditional factors (sequentiality, process ID, request size, and/or file type to name a few) used to decide whether to write data in the storage cache at operation 348.
- Fig. 3C illustrates a flow diagram of a method to evict or deallocate one or more cache lines from a storage cache, according to an embodiment.
- the method of Fig. 3C is used to perform the operations 314 and/or 339 discussed with reference to Figs. 3A1 and 3B1, respectively.
- deletion/deallocation/eviction from a storage cache usually happens after operations associated with satisfying a read miss or a write miss (such as those discussed with reference to Figs. 3A1 to 3B2).
- the cache eviction operation generally occurs if some cache "fullness” or “free space” threshold is reached, or otherwise if it is determined that some data stored in the storage cache is no longer needed to be cached as in operations 314 and/or 339.
- operation 352 receives compression information regarding the one or more cache lines to be evicted as one factor to determine whether to evict the cache line(s) at operation 354.
- the selection operation at 354 is based on compressibility of the data (per compression information of operation 352) that augments traditional factors (sequentiality, process ID, request size, and/or file type to name a few) used to decide whether to delete the selected line(s) from the storage cache at operation 358.
- the insertion decision would be yes/no for the data currently being read or written.
- the deletion would be made based on factors like LRU (Least Recently Used) plus compressibility information and would be in response to the need for space, and in this case, logic would search for the "Best" cache line to delete.
- the data may be cached in a dedicated cache (not shown) and/or in NVM (such as memory cells 292, SSD 130, etc.).
- the methods of Figs. 3A1-3C may be performed in response to a read or a write operation directed at a backing store (such as the backing store 180, the disk drive 428 of Fig. 4, data storage 548 of Fig.
- the SSD 130 used as a storage cache including, for example, a slower SSD or NVM
- periodical schedule e.g., in response to expiration of a timer.
- the periodical schedule may be used for deallocation from cache and not usually not for the decision to insert/allocate in the cache.
- an embodiment improves the effectiveness of storage caches by using the compressibility of the data in a "line" of the cache to be a factor in the algorithms/policies deciding when to insert/allocate/retain a line in the cache and when to delete/evict a line from the cache. Preference can be given to cache lines that are more compressible; thus, increasing the number of lines the cache holds. Hence, the hit rate, and the overall performance of the storage subsystem will improve. In some embodiments, there is an assumption that there is either no correlation or positive correlation between compressibility and the likelihood of the data being needed in the near future.
- NVM e.g., SSD 130 and/or logic 160
- NVM when queried, NVM (e.g., SSD 130 and/or logic 160) returns a size that grows/shrinks in proportion to the aggregate compressibility of all the data on the media.
- the size grows, additional cache lines can be added to the cache.
- the size shrinks lines are removed from the cache.
- some embodiments provide an improved implementation because by using the compressibility of an individual cache line as a criteria, preference can be given to more compressible cache lines as a factor in cache insertion/retention and/or deletion policies, and thus the overall compressibility of the aggregate data can be improved, resulting in more cache lines being stored.
- host caching policies may know the size of the compressed cache line for their placement algorithm/logic (e.g., logic 160). This information may be the same as cache line compressibility discussed with reference to Figs. 3A1-3C.
- some embodiments can be used in storage caches to improve performance, so this improvement is directly marketable. Alternatively, it can be used as a way to use a smaller and/or lower cost NVM/SSD to achieve similar performance as a larger, more expensive cache.
- Fig. 4 illustrates a block diagram of a computing system 400 in accordance with an embodiment.
- the computing system 400 may include one or more central processing unit(s) (CPUs) 402 or processors that communicate via an interconnection network (or bus) 404.
- the processors 402 may include a general purpose processor, a network processor (that processes data communicated over a computer network 403), an application processor (such as those used in cell phones, smart phones, etc.), or other types of a processor (including a reduced instruction set computer (RISC) processor or a complex instruction set computer (CISC)).
- RISC reduced instruction set computer
- CISC complex instruction set computer
- Various types of computer networks 403 may be utilized including wired (e.g., Ethernet, Gigabit, Fiber, etc.) or wireless networks (such as cellular, 3G (Third-Generation Cell-Phone Technology or 3rd Generation Wireless Format (UWCC)), 4G, Low Power Embedded (LPE), etc.).
- the processors 402 may have a single or multiple core design.
- the processors 402 with a multiple core design may integrate different types of processor cores on the same integrated circuit (IC) die.
- the processors 402 with a multiple core design may be implemented as symmetrical or asymmetrical multiprocessors.
- one or more of the processors 402 may be the same or similar to the processors 102 of Fig. 1.
- one or more of the processors 402 may include one or more of the cores 106 and/or processor cache 108.
- the operations discussed with reference to Figs. 1-3C may be performed by one or more components of the system 400.
- a chipset 406 may also communicate with the interconnection network 404.
- the chipset 406 may include a graphics and memory control hub (GMCH) 408.
- the GMCH 408 may include a memory controller 410 (which may be the same or similar to the memory controller 120 of Fig. 1 in an embodiment) that communicates with the memory 114.
- the memory 114 may store data, including sequences of instructions that are executed by the CPU 402, or any other device included in the computing system 400.
- system 400 includes logic 125, SSD 130, and/or logic 160 (which may be coupled to system 400 via bus 422 as illustrated, via other interconnects such as 404, where logic 125 is incorporated into chipset 406, etc. in various embodiments).
- the memory 114 may include one or more volatile storage (or memory) devices such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of storage devices.
- RAM random access memory
- DRAM dynamic RAM
- SDRAM synchronous DRAM
- SRAM static RAM
- Nonvolatile memory may also be utilized such as a hard disk drive, flash, etc., including any NVM discussed herein.
- Additional devices may communicate via the interconnection network 404, such as multiple CPUs and/or multiple system memories.
- the GMCH 408 may also include a graphics interface 414 that communicates with a graphics accelerator 416.
- the graphics interface 414 may communicate with the graphics accelerator 416 via an accelerated graphics port (AGP) or Peripheral Component Interconnect (PCI) (or PCI express (PCIe) interface).
- AGP accelerated graphics port
- PCI Peripheral Component Interconnect
- PCIe PCI express
- a display 417 may communicate with the graphics interface 414 through, for example, a signal converter that translates a digital representation of an image stored in a storage device such as video memory or system memory into display signals that are interpreted and displayed by the display.
- the display signals produced by the display device may pass through various control devices before being interpreted by and subsequently displayed on the display 417.
- a hub interface 418 may allow the GMCH 408 and an input/output control hub (ICH) 420 to communicate.
- the ICH 420 may provide an interface to I/O devices that communicate with the computing system 400.
- the ICH 420 may communicate with a bus 422 through a peripheral bridge (or controller) 424, such as a peripheral component interconnect (PCI) bridge, a universal serial bus (USB) controller, or other types of peripheral bridges or controllers.
- the bridge 424 may provide a data path between the CPU 402 and peripheral devices. Other types of topologies may be utilized.
- multiple buses may communicate with the ICH 420, e.g., through multiple bridges or controllers.
- peripherals in communication with the ICH 420 may include, in various embodiments, integrated drive electronics (IDE) or small computer system interface (SCSI) hard drive(s), USB port(s), a keyboard, a mouse, parallel port(s), serial port(s), floppy disk drive(s), digital output support (e.g., digital video interface (DVI)), or other devices.
- IDE integrated drive electronics
- SCSI small computer system interface
- hard drive e.g., USB port(s), a keyboard, a mouse, parallel port(s), serial port(s), floppy disk drive(s), digital output support (e.g., digital video interface (DVI)), or other devices.
- DVI digital video interface
- the bus 422 may communicate with an audio device 426, one or more disk drive(s) 428, and a network interface device 430 (which is in communication with the computer network 403, e.g., via a wired or wireless interface).
- the network interface device 430 may be coupled to an antenna 431 to wirelessly (e.g., via an Institute of Electrical and Electronics Engineers (IEEE) 802.11 interface (including IEEE 802.11a/b/g/n/ac, etc.), cellular interface, 3G, 4G, LPE, etc.) communicate with the network 403.
- IEEE Institute of Electrical and Electronics Engineers
- 802.11 interface including IEEE 802.11a/b/g/n/ac, etc.
- cellular interface 3G, 4G, LPE, etc.
- Other devices may communicate via the bus 422.
- various components (such as the network interface device 430) may communicate with the GMCH 408 in some embodiments.
- the processor 402 and the GMCH 408 may be combined to form a single
- nonvolatile memory may include one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), electrically EPROM (EEPROM), a disk drive (e.g., 428), a floppy disk, a compact disk ROM (CD-ROM), a digital versatile disk (DVD), flash memory, a magneto-optical disk, or other types of nonvolatile machine-readable media that are capable of storing electronic data (e.g., including instructions).
- ROM read-only memory
- PROM programmable ROM
- EPROM erasable PROM
- EEPROM electrically EPROM
- a disk drive e.g., 428
- CD-ROM compact disk ROM
- DVD digital versatile disk
- flash memory e.g., a magneto-optical disk, or other types of nonvolatile machine-readable media that are capable of storing electronic data (e.g., including instructions).
- Fig. 5 illustrates a computing system 500 that is arranged in a point-to-point (PtP) configuration, according to an embodiment.
- Fig. 5 shows a system where processors, memory, and input/output devices are interconnected by a number of point-to-point interfaces. The operations discussed with reference to Figs. 1-4 may be performed by one or more components of the system 500.
- the system 500 may include several processors, of which only two, processors 502 and 504 are shown for clarity.
- the processors 502 and 504 may each include a local memory controller hub (MCH) 506 and 508 to enable communication with memories 510 and 512.
- MCH memory controller hub
- the memories 510 and/or 512 may store various data such as those discussed with reference to the memory 114 of Figs. 1 and/or 4.
- MCH 506 and 508 may include the memory controller 120 in some embodiments.
- system 500 includes logic 125, SSD 130, and/or logic 160 (which may be coupled to system 500 via bus 540/544 such as illustrated, via other point-to-point connections to the processor(s) 502/504 or chipset 520, where logic 125 is incorporated into chipset 520, etc. in various embodiments).
- the processors 502 and 504 may be one of the processors 402 discussed with reference to Fig. 4.
- the processors 502 and 504 may exchange data via a point-to-point (PtP) interface 514 using PtP interface circuits 516 and 518, respectively.
- the processors 502 and 504 may each exchange data with a chipset 520 via individual PtP interfaces 522 and 524 using point-to-point interface circuits 526, 528, 530, and 532.
- the chipset 520 may further exchange data with a high-performance graphics circuit 534 via a high-performance graphics interface 536, e.g., using a PtP interface circuit 537.
- the graphics interface 536 may be coupled to a display device (e.g., display 417) in some embodiments.
- one or more of the cores 106 and/or processor cache 108 of Fig. 1 may be located within the processors 502 and 504 (not shown). Other embodiments, however, may exist in other circuits, logic units, or devices within the system 500 of Fig. 5. Furthermore, other embodiments may be distributed throughout several circuits, logic units, or devices illustrated in Fig. 5.
- the chipset 520 may communicate with a bus 540 using a PtP interface circuit 541.
- 540 may have one or more devices that communicate with it, such as a bus bridge 542 and I/O devices 543.
- the bus bridge 542 may communicate with other devices such as a keyboard/mouse 545, communication devices 546 (such as modems, network interface devices, or other communication devices that may communicate with the computer network 403, as discussed with reference to network interface device 430 for example, including via antenna 431), audio I/O device, and/or a data storage device 548.
- the data storage device 548 may store code 549 that may be executed by the processors 502 and/or 504.
- SOC 602 includes one or more Central Processing Unit (CPU) cores 620, one or more Graphics Processor Unit (GPU) cores 630, an Input/Output (I/O) interface 640, and a memory controller 642.
- CPU Central Processing Unit
- GPU Graphics Processor Unit
- I/O Input/Output
- memory controller 642 Various components of the SOC package 602 may be coupled to an interconnect or bus such as discussed herein with reference to the other figures.
- the SOC package 602 may include more or less components, such as those discussed herein with reference to the other figures.
- each component of the SOC package 620 may include one or more other components, e.g., as discussed with reference to the other figures herein.
- SOC package 602 (and its components) is provided on one or more Integrated Circuit (IC) die, e.g., which are packaged onto a single semiconductor device.
- IC Integrated Circuit
- SOC package 602 is coupled to a memory 660 (which may be similar to or the same as memory discussed herein with reference to the other figures) via the memory controller 642.
- the memory 660 (or a portion of it) can be integrated on the SOC package 602.
- the I/O interface 640 may be coupled to one or more I/O devices 670, e.g., via an interconnect and/or bus such as discussed herein with reference to other figures.
- I/O device(s) 670 may include one or more of a keyboard, a mouse, a touchpad, a display, an image/video capture device (such as a camera or camcorder/video recorder), a touch screen, a speaker, or the like.
- SOC package 602 may include/integrate the logic 125 in an embodiment. Alternatively, the logic 125 may be provided outside of the SOC package 602 (i.e., as a discrete logic).
- Example 1 includes an apparatus comprising: memory to store one or more cache lines corresponding to a compressed version of data in response to a determination that the data is compressible; and logic to determine whether the one or more cache lines are to be retained or inserted in the memory based at least in part on an indication of compressibility of the data.
- Example 2 includes the apparatus of example 1, wherein the one or more cache lines are to be stored in the memory prior to the determination of whether the one or more cache lines are to be retained in the memory.
- Example 3 includes the apparatus of example 1, wherein the one or more cache lines are to be stored in the memory after the determination of whether the one or more cache lines are to be retained in the memory.
- Example 4 includes the apparatus of example 1, comprising logic to determine whether to remove the one or more cache lines.
- Example 5 includes the apparatus of example 1, comprising logic to determine whether to remove the one or more cache lines based at least in part on the indication of compressibility of the data.
- Example 6 includes the apparatus of example 1, wherein the compressibility of the data is to be determined based at least in part on a size of an uncompressed version of the data and a size of the compressed version of the data.
- Example 7 includes the apparatus of example 1, wherein the memory is to include non-volatile memory comprising one of: nanowire memory, Ferro-electric transistor random access memory (FeTRAM), magnetoresistive random access memory (MRAM), flash memory, Spin Torque Transfer Random Access Memory (STTRAM), Resistive Random Access Memory, Phase Change Memory (PCM), NAND, 3-Dimensional NAND, and byte addressable 3-Dimensional Cross Point Memory.
- Example 8 includes the apparatus of example 1, wherein an SSD is to comprise the memory and the logic.
- Example 9 includes the apparatus of example 1, wherein the memory is to store uncompressed data.
- Example 10 includes a method comprising: storing one or more cache lines, corresponding to a compressed version of data, in memory in response to a determination that the data is compressible; and determining whether the one or more cache lines are to be retained or inserted in the memory based at least in part on an indication of compressibility of the data.
- Example 11 includes the method of example 10, further comprising storing the one or more cache lines in the memory prior to the determination of whether the one or more cache lines are to be retained in the memory.
- Example 12 includes the method of example 10, further comprising storing the one or more cache lines in the memory after the determination of whether the one or more cache lines are to be retained in the memory.
- Example 13 includes the method of example 10, further comprising determining whether to remove the one or more cache lines.
- Example 14 includes the method of example 10, further comprising determining whether to remove the one or more cache lines based at least in part on the indication of compressibility of the data.
- Example 15 includes the method of example 10, further comprising determining the compressibility of the data based at least on a size of an uncompressed version of the data and a size of the compressed version of the data.
- Example 16 includes the method of example 9, further comprising storing uncompressed data in the memory.
- Example 17 includes the method of example 10, wherein the memory includes nonvolatile memory comprising one of: nanowire memory, Ferro-electric transistor random access memory (FeTRAM), magnetoresistive random access memory (MRAM), flash memory, Spin Torque Transfer Random Access Memory (STTRAM), Resistive Random Access Memory, Phase Change Memory (PCM), NAND, 3-Dimensional NAND, and byte addressable 3-Dimensional Cross Point Memory.
- nonvolatile memory comprising one of: nanowire memory, Ferro-electric transistor random access memory (FeTRAM), magnetoresistive random access memory (MRAM), flash memory, Spin Torque Transfer Random Access Memory (STTRAM), Resistive Random Access Memory, Phase Change Memory (PCM), NAND, 3-Dimensional NAND, and byte addressable 3-Dimensional Cross Point Memory.
- Example 18 includes a system comprising: memory; and at least one processor core to access the memory; the memory to store one or more cache lines corresponding to a compressed version of data in response to a determination that the data is compressible; logic to determine whether the one or more cache lines are to be retained or inserted in the memory at least in part based on an indication of compressibility of the data.
- Example 19 includes the system of example 18, wherein the one or more cache lines are to be stored in the memory prior to the determination of whether the one or more cache lines are to be retained in the memory.
- Example 20 includes the system of example 18, wherein the one or more cache lines are to be stored in the memory after the determination of whether the one or more cache lines are to be retained in the memory.
- Example 21 includes the system of example 18, comprising logic to determine whether to remove the one or more cache lines based at least in part on the indication of compressibility of the data.
- Example 22 includes the system of example 18, wherein the compressibility of the data is to be determined based at least in part on a size of an uncompressed version of the data and a size of the compressed version of the data.
- Example 23 includes the system of example 18, wherein the memory is to store uncompressed data.
- Example 24 includes the system of example 18, wherein the memory is to include non-volatile memory comprising one of: nanowire memory, Ferro-electric transistor random access memory (FeTRAM), magnetoresistive random access memory (MRAM), flash memory, Spin Torque Transfer Random Access Memory (STTRAM), Resistive Random Access Memory, Phase Change Memory (PCM), NAND, 3-Dimensional NAND, and byte addressable 3- Dimensional Cross Point Memory.
- Example 25 includes the system of example 18, wherein an SSD is to comprise the memory and the logic.
- Example 26 includes a computer-readable medium comprising one or more instructions that when executed on a processor configure the processor to perform one or more operations to: store one or more cache lines, corresponding to a compressed version of data, in memory in response to a determination that the data is compressible; and determine whether the one or more cache lines are to be retained or inserted in the memory based at least in part on an indication of compressibility of the data.
- Example 27 includes the computer-readable medium of example 26, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to store the one or more cache lines in the memory prior to the determination of whether the one or more cache lines are to be retained in the memory.
- Example 28 includes the computer-readable medium of example 26, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to store the one or more cache lines in the memory after the determination of whether the one or more cache lines are to be retained in the memory.
- Example 29 includes an apparatus comprising means to perform a method as set forth in any preceding example.
- Example 30 comprises machine-readable storage including machine-readable instructions, when executed, to implement a method or realize an apparatus as set forth in any preceding example.
- the operations discussed herein, e.g., with reference to Figs. 1-6 may be implemented as hardware (e.g., circuitry), software, firmware, microcode, or combinations thereof, which may be provided as a computer program product, e.g., including a tangible (e.g., non-transitory) machine-readable or computer-readable medium having stored thereon instructions (or software procedures) used to program a computer to perform a process discussed herein.
- the term "logic” may include, by way of example, software, hardware, or combinations of software and hardware.
- the machine-readable medium may include a storage device such as those discussed with respect to Figs. 1-6.
- tangible computer-readable media may be downloaded as a computer program product, wherein the program may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals (such as in a carrier wave or other propagation medium) via a communication link (e.g., a bus, a modem, or a network connection).
- a remote computer e.g., a server
- a requesting computer e.g., a client
- data signals such as in a carrier wave or other propagation medium
- a communication link e.g., a bus, a modem, or a network connection
- Coupled may mean that two or more elements are in direct physical or electrical contact.
- Coupled may mean that two or more elements are in direct physical or electrical contact.
- coupled may also mean that two or more elements may not be in direct contact with each other, but may still cooperate or interact with each other.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
Claims
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201680018928.XA CN107430554B (en) | 2015-03-27 | 2016-02-18 | Improving storage cache performance by using compressibility of data as a criterion for cache insertion |
| KR1020247006590A KR20240033123A (en) | 2015-03-27 | 2016-02-18 | Improving storage cache performance by using compressibility of the data as a criteria for cache insertion |
| KR1020177023488A KR20170129701A (en) | 2015-03-27 | 2016-02-18 | Improved storage cache performance by using the compression rate of the data as the basis for cache insertion |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/672,093 US20160283390A1 (en) | 2015-03-27 | 2015-03-27 | Storage cache performance by using compressibility of the data as a criteria for cache insertion |
| US14/672,093 | 2015-03-27 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2016160164A1 true WO2016160164A1 (en) | 2016-10-06 |
Family
ID=56975877
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2016/018517 Ceased WO2016160164A1 (en) | 2015-03-27 | 2016-02-18 | Improving storage cache performance by using compressibility of the data as a criteria for cache insertion |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20160283390A1 (en) |
| KR (2) | KR20170129701A (en) |
| CN (1) | CN107430554B (en) |
| WO (1) | WO2016160164A1 (en) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
| US10061514B2 (en) | 2015-04-15 | 2018-08-28 | Formulus Black Corporation | Method and apparatus for dense hyper IO digital retention |
| KR20190040614A (en) * | 2017-10-11 | 2019-04-19 | 에스케이하이닉스 주식회사 | Memory system and operation method for the same |
| US10572186B2 (en) | 2017-12-18 | 2020-02-25 | Formulus Black Corporation | Random access memory (RAM)-based computer systems, devices, and methods |
| US10776268B2 (en) | 2018-04-19 | 2020-09-15 | Western Digital Technologies, Inc. | Priority addresses for storage cache management |
| CN109032970A (en) * | 2018-06-16 | 2018-12-18 | 温州职业技术学院 | A kind of method for dynamically caching based on lru algorithm |
| CN111104052B (en) * | 2018-10-26 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer readable storage medium for storing data |
| US10838727B2 (en) * | 2018-12-14 | 2020-11-17 | Advanced Micro Devices, Inc. | Device and method for cache utilization aware data compression |
| WO2020142431A1 (en) | 2019-01-02 | 2020-07-09 | Formulus Black Corporation | Systems and methods for memory failure prevention, management, and mitigation |
| KR102175094B1 (en) | 2020-06-04 | 2020-11-05 | 최훈권 | High efficiency data storage system through data redundancy elimination based on parallel processing compression |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050071566A1 (en) * | 2003-09-30 | 2005-03-31 | Ali-Reza Adl-Tabatabai | Mechanism to increase data compression in a cache |
| US20060047916A1 (en) * | 2004-08-31 | 2006-03-02 | Zhiwei Ying | Compressing data in a cache memory |
| US20090150611A1 (en) * | 2007-12-10 | 2009-06-11 | Microsoft Corporation | Management of external memory functioning as virtual cache |
| US20120210066A1 (en) * | 2011-02-15 | 2012-08-16 | Fusion-Io, Inc. | Systems and methods for a file-level cache |
| WO2013038632A1 (en) * | 2011-09-16 | 2013-03-21 | Nec Corporation | Storage system |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020014406A1 (en) * | 1998-05-21 | 2002-02-07 | Hiroshi Takashima | Aluminum target material for sputtering and method for producing same |
| US6324621B2 (en) * | 1998-06-10 | 2001-11-27 | International Business Machines Corporation | Data caching with a partially compressed cache |
| JP3969009B2 (en) * | 2001-03-29 | 2007-08-29 | 株式会社日立製作所 | Hardware prefetch system |
| US7143238B2 (en) * | 2003-09-30 | 2006-11-28 | Intel Corporation | Mechanism to compress data in a cache |
| KR100829570B1 (en) * | 2006-10-20 | 2008-05-14 | 삼성전자주식회사 | Thin-film transistors for cross-point memory and manufacturing method thereof |
| US8001278B2 (en) * | 2007-09-28 | 2011-08-16 | Intel Corporation | Network packet payload compression |
| CN101640794A (en) * | 2008-07-31 | 2010-02-03 | 鸿富锦精密工业(深圳)有限公司 | Image data compression system and method thereof |
| US20130265305A1 (en) * | 2012-04-04 | 2013-10-10 | Jon N. Hasselgren | Compressed Depth Cache |
| CN103685179B (en) * | 2012-09-12 | 2017-09-12 | 中国移动通信集团公司 | A kind of content compression method, apparatus and system |
| CN103838766B (en) * | 2012-11-26 | 2018-04-06 | 深圳市腾讯计算机系统有限公司 | Antiaircraft caching method and device |
| CN103902467B (en) * | 2012-12-26 | 2017-02-22 | 华为技术有限公司 | Compressed memory access control method, device and system |
| US9582426B2 (en) * | 2013-08-20 | 2017-02-28 | International Business Machines Corporation | Hardware managed compressed cache |
| CN103744627A (en) * | 2014-01-26 | 2014-04-23 | 武汉英泰斯特电子技术有限公司 | Method and system for compressing and storing data collected in real time |
| CN103942342B (en) * | 2014-05-12 | 2017-02-01 | 中国人民大学 | Memory database OLTP and OLAP concurrency query optimization method |
-
2015
- 2015-03-27 US US14/672,093 patent/US20160283390A1/en not_active Abandoned
-
2016
- 2016-02-18 KR KR1020177023488A patent/KR20170129701A/en not_active Ceased
- 2016-02-18 CN CN201680018928.XA patent/CN107430554B/en active Active
- 2016-02-18 KR KR1020247006590A patent/KR20240033123A/en not_active Ceased
- 2016-02-18 WO PCT/US2016/018517 patent/WO2016160164A1/en not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050071566A1 (en) * | 2003-09-30 | 2005-03-31 | Ali-Reza Adl-Tabatabai | Mechanism to increase data compression in a cache |
| US20060047916A1 (en) * | 2004-08-31 | 2006-03-02 | Zhiwei Ying | Compressing data in a cache memory |
| US20090150611A1 (en) * | 2007-12-10 | 2009-06-11 | Microsoft Corporation | Management of external memory functioning as virtual cache |
| US20120210066A1 (en) * | 2011-02-15 | 2012-08-16 | Fusion-Io, Inc. | Systems and methods for a file-level cache |
| WO2013038632A1 (en) * | 2011-09-16 | 2013-03-21 | Nec Corporation | Storage system |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20240033123A (en) | 2024-03-12 |
| CN107430554B (en) | 2022-08-16 |
| US20160283390A1 (en) | 2016-09-29 |
| CN107430554A (en) | 2017-12-01 |
| KR20170129701A (en) | 2017-11-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20160283390A1 (en) | Storage cache performance by using compressibility of the data as a criteria for cache insertion | |
| US11169583B2 (en) | Methods and apparatus for mitigating temperature increases in a solid state device (SSD) | |
| US9740437B2 (en) | Mechanism to adapt garbage collection resource allocation in a solid state drive | |
| US10008250B2 (en) | Single level cell write buffering for multiple level cell non-volatile memory | |
| CN108351813B (en) | Method and apparatus for enabling individual non-volatile memory express (NVMe) input/output (IO) queues on different network addresses of NVMe controller | |
| TWI643125B (en) | Multi-processor system and cache sharing method | |
| US10754785B2 (en) | Checkpointing for DRAM-less SSD | |
| US20160092120A1 (en) | Storage device health diagnosis | |
| CN106462410B (en) | Apparatus and method for accelerating boot time zeroing of memory | |
| CN103999057B (en) | Metadata Management and Support for Phase Change Memory (PCMS) with Switches | |
| US20120102273A1 (en) | Memory agent to access memory blade as part of the cache coherency domain | |
| KR20130031046A (en) | Flash memory device and data manage method thererof | |
| CN106575262B (en) | The method and apparatus of supplement write-in cache command for bandwidth reduction | |
| CN106663059B (en) | Power-aware filling | |
| CN117255986A (en) | Dynamic program hang deactivation for random write solid-state drive workloads | |
| EP4325367B1 (en) | Method and device for data caching | |
| US10503654B2 (en) | Selective caching of erasure coded fragments in a distributed storage system | |
| US12541458B2 (en) | Operating method of storage controller, storage device, and operating method of storage device | |
| US12541318B2 (en) | Method and device for accessing data in host memory | |
| CN104123243A (en) | Data caching system and method | |
| EP4517538A1 (en) | Method and device for accessing data in host memory | |
| US20260104824A1 (en) | Method And Device For Reducing Write Amplification Of Storage Apparatus | |
| CN115729860A (en) | Processing system, processing method and electronic device | |
| TW201348963A (en) | Accelerator for external storage device and method thereof |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16773647 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 20177023488 Country of ref document: KR Kind code of ref document: A |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 16773647 Country of ref document: EP Kind code of ref document: A1 |
|
| WWR | Wipo information: refused in national office |
Ref document number: 1020247006590 Country of ref document: KR |