Base-Delta-Immediate Compression: Practical Data Compression Mechanism for On-Chip Caches.
International Conference on Parallel Architectures and Compilation Techniques, Minneapolis, USA, September 2012
Abstract
Cache compression is a promising technique to increase on-chip cache capacity and to decrease on-chip and off-chip bandwidth usage. Unfortunately, directly applying well-known compression algorithms (usually implemented in software) leads to high hardware complexity and unacceptable decompression/compression latencies, which in turn can negatively affect performance. Hence, there is a need for a simple yet efficient compression technique that can effectively compress common in-cache data patterns, and has minimal effect on cache access latency. In this paper, we introduce a new compression algorithm called Base-Delta-Immediate compression, a practical technique for compressing data in on-chip caches. The key idea is that, for many cache lines, the values within the cache line have a low dynamic range – i.e., the differences between values stored within the cache line are small. As a result, a cache line can be represented using a base value and an array of differences whose combined size is much smaller than the original cache line (we call this the base+delta encoding). Moreover, many cache lines intersperse such base+delta values with small values – our Base-Delta-Immediate technique efficiently incorporates such immediate values into its encoding. Compared to prior cache compression approaches, our studies show that Base-Delta-Immediate strikes a sweet-spot in the tradeoff between compression ratio, decompression/compression latencies, and hardware complexity. Our results show that Base-Delta-Immediate compression improves performance for both single-core (8.1% improvement) and multi-core workloads (9.5% / 11.2% improvement for two/four cores). For many applications, Base-Delta-Immediate compression provides the performance benefit of doubling the cache size of the baseline system, effectively increasing average cache capacity by 1.53X.
Manuscript

Bibtex
