Cache Compression Segmentation for Storage Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Data storage systems face inefficiencies in managing cache compression, particularly in optimizing storage speed and metadata management, leading to fragmented macroblocks and reduced storage capacity.

Innovation Solution

The implementation of a data storage system with multiple IO cache macroblocks, where compressible data is stored in variable-sized blocks and incompressible data in fixed-sized blocks, along with a garbage collection mechanism to defragment macroblocks and metadata compression techniques to optimize memory usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If data storage systems use uniform fixed-sized blocks for all cache data, then memory management is simplified, but storage efficiency decreases due to inability to optimize for compressible data

Engineering Contradiction:
Improvecache management simplicityVSAvoidstorage efficiency
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The cache is segmented into two distinct types of macroblocks: compressed macroblocks for compressible data and non-compressed macroblocks for incompressible data. This segmentation allows each type to be optimized independently, resolving the contradiction between management simplicity and storage efficiency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different parts of the cache (compressed vs. non-compressed macroblocks) have different properties optimized for their specific data types. Compressed macroblocks use variable-sized blocks for compressible data while non-compressed macroblocks use fixed-sized blocks for incompressible data, allowing local optimization without compromising overall system simplicity.

Inventive Principle:
Principle #3Local quality

2Speed

If the cache uses only non-compressed fixed-sized blocks, then write operations are faster, but storage capacity is reduced due to wasted space in compressible data regions

Engineering Contradiction:
Improvewrite operation speedVSAvoidstorage capacity
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The cache is divided into compressed and non-compressed macroblocks, allowing write operations to be optimized differently for each segment. Non-compressed macroblocks maintain fast write speeds for incompressible data, while compressed macroblocks maximize storage capacity for compressible data.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Each macroblock type has localized properties optimized for its data type: non-compressed macroblocks use fixed-sized blocks for speed, while compressed macroblocks use variable-sized blocks for capacity optimization. This local quality approach resolves the speed-capacity tradeoff.

Inventive Principle:
Principle #3Local quality

3Productivity

If the cache is divided into compressed and non-compressed macroblocks, then storage efficiency improves, but device complexity increases due to additional management overhead

Engineering Contradiction:
Improvestorage efficiencyVSAvoidcache management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

While segmentation into compressed and non-compressed macroblocks improves storage efficiency, the patent manages complexity through structured organization with clear separation of concerns. Each macroblock type has standardized management procedures, preventing exponential complexity growth.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Both compressed and non-compressed macroblocks serve the universal function of caching data, with standardized interfaces and management routines. This multi-functionality approach allows the system to handle different data types efficiently while maintaining relatively simple, unified management logic.

Inventive Principle:
Principle #6Universality (Multi-functionality)

4Quantity of substance

If variable-sized compressed blocks are used in compressed macroblocks, then storage capacity increases, but metadata management becomes more complex

Engineering Contradiction:
Improvestorage capacityVSAvoidmetadata management complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

Metadata is segmented and organized specifically for compressed macroblocks, with dedicated data structures that track variable-sized compressed blocks. This specialized metadata management resolves the complexity issue by providing targeted solutions rather than attempting universal management.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The metadata management system has localized optimizations for compressed macroblocks, with specific data structures and algorithms tailored to variable-sized compressed blocks. This local quality approach handles metadata complexity efficiently without affecting the entire cache system.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10635359B2Managing cache compression in data storage systems
Publication Date: 2020.04.28 EMC IP HLDG CO LLC
  • US10635359B2 patent drawing
  • US10635359B2 patent drawing
  • US10635359B2 patent drawing

AI summary

A technique for managing cache in a data storage system is disclosed. Data storage system cache memory is arranged into multiple input/output (IO) cache macroblocks, where a first set of IO cache macroblocks are configured as compressed IO cache macroblocks, each compressed IO cache macroblock storing a plurality of variable sized compressed IO data blocks, and a second set of IO cache macroblocks are configured as non-compressed IO cache macroblocks, each non-compressed IO cache macroblock storing a plurality of fixed sized non-compressed IO data blocks. A write request is receive at the data storage system. If the IO data associated with the write request is determined to be compressible, the IO data is compressed in-line and written to an IO data block in a compressed IO cache macroblock, otherwise non-compressed IO data is written to an IO data block in a non-compressed IO cache macroblock.