Shared Dictionary Cache Compression for Better Data Locality
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing cache systems face challenges in balancing cache capacity, access latency, and power consumption, with traditional cache compression techniques failing to effectively exploit data value locality for improved compressibility.
Innovation Solution
Implementing a flexible dictionary sharing mechanism in set-associative caches, where cache lines are mapped to the best-suited dictionary among multiple candidates based on data value locality, using an offset field to adjust the set mapping and storing dictionaries in an array for shared use across cache lines.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If traditional cache compression techniques are used, then cache capacity is reduced, but data value locality is not effectively exploited leading to lower compressibility
Solution Approach 1:
Multiple dictionaries are merged into a shared resource pool that can be flexibly allocated across different cache sets. Instead of each set having its own dedicated dictionary, the system combines multiple dictionaries into a shared array that can serve multiple cache lines, thereby improving compressibility through better data value locality exploitation while reducing overall cache capacity consumption.
Solution Approach 2:
The dictionary allocation is made dynamic through an offset field mechanism that allows cache lines to be flexibly mapped to different dictionaries based on data characteristics. The offset field enables runtime adjustment of dictionary selection, allowing the system to adapt to different data patterns and maximize compressibility without fixed static assignments.
2Quantity of substance
If larger caches are used to gain more capacity, then cache capacity increases, but access latency increases and power consumption increases
Solution Approach 1:
Redundant data is extracted from the cache through compression, removing unnecessary copies while retaining essential information. By extracting and eliminating redundant data representations, the system reduces the effective cache size needed to store the same amount of useful data, thereby reducing access latency and power consumption without sacrificing capacity for useful data.
Solution Approach 2:
The system changes the representation parameter of cached data by applying compression transformations. Data is stored in a compressed form with higher information density, allowing the same physical cache capacity to effectively hold more useful data, thereby reducing the need for larger cache structures and their associated latency and power costs.
3Device complexity
If dictionaries are allocated only to specific sets, then set mapping is simplified, but data redundancy across cache lines cannot be exploited
Solution Approach 1:
Dictionaries are given universal functionality by making them shareable across multiple cache sets. Instead of being restricted to single-set usage, dictionaries in the shared array can serve multiple cache lines from different sets, enabling the system to exploit data redundancy across broader ranges of cache lines while maintaining relatively simple set mapping through the offset field mechanism.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
Systems, apparatuses, and methods for implementing flexible dictionary sharing techniques for caches are disclosed. A set-associative cache includes a dictionary for each data array set. When a cache line is to be allocated in the cache, a cache controller determines to which set a base index of the cache line address maps. Then, a selector unit determines which dictionary of a group of dictionaries stored by those sets neighboring this set would achieve the most compression for the cache line. This dictionary is then selected to compress the cache line. An offset is added to the base index of the cache line to generate a full index in order to map the cache line to the set corresponding to this chosen dictionary. The compressed cache line is stored in this set with the chosen dictionary, and the offset is stored in the corresponding tag array entry.