BDI压缩 Base-Delta-Immediate Compression: Practical Data Compression for On-Chip Caches 论文解读

写在前面

本篇是CACHE压缩技术的第五篇,解读的论文是

Base-Delta-Immediate Compression: Practical Data Compression for
On-Chip Caches

作者是来自CMU和INTEL的实验室的研究人员

其他Cache压缩、Cache原理的文章链接如下:
FPC压缩论文解读

FLIP-N-WRITE详解

数据压缩学习(一)

数据压缩学习(三)

背景知识

Cache压缩技术是一种很有前途的提高片内Cache容量、降低片内和片外带宽利用率的技术。不幸的是,直接应用众所周知的压缩算法(通常在软件中实现)会导致高硬件复杂性和不可接受的解压缩/压缩特性,进而会对性能产生负面影响。因此,需要一种简单而高效的压缩技术,能够有效地压缩缓存中常见的数据模式,并且对缓存访问延迟的影响最小。

缓存压缩是在缓存填充后(在提供关键字之后)在后台进行的,
而缓存解压缩是在缓存命中的关键路径上进行的,其中最小化延迟对性能极其重要。
事实上,由于一级缓存命中时间是最重要的,因此在本研究中,我们只考虑二级缓存的压缩

扫描二维码关注公众号,回复: 9915150 查看本文章

三个核心目标

同时解决压缩比小、硬件复杂度高、解压缩延迟大的问题。

数据压缩的几种模式

实际应用程序访问的数据中存在大量冗余。有多种模式导致了这种冗余。我们在下面总结了这些模式中最常见的一些:

  1. 零模式
    零是应用数据中最常见的值。原因是多方面的。例如,零最常用于初始化数据、表示空指针或假布尔值以及表示稀疏矩阵(密集形式)。
  2. 重复模式
    一个大的连续内存区域可能包含一个重复多次的值[23]。这种模式广泛存在于对大数组使用公共初始值的应用程序中,或者在相邻像素的大量数目具有相同颜色的多媒体应用程序中
  3. 窄模式
    一句话就是习惯性把count设成double/long类型结果上限就是10,浪费极大
    窄值是使用大数据类型存储的小值:例如,作为四字节整数存储的一个字节值。由于过度配置或数据对齐,应用程序数据中通常会出现窄值。程序员通常会在最坏的情况下预测各种数据结构中的数据类型,即使大多数值可能适合较小的数据类型。例如,存储计数器表需要设置数据类型以容纳计数器的最大可能值。然而,可能的情况是最大可能的计数器值需要4个字节,而一个字节可能足以存储大多数计数器值。
  4. 其他模式
    还有一些其他常见的数据模式不属于上述三类中的任何一类:指向同一内存区域中不同位置的指针表、低颜色梯度变化的图像,等。

下图给出了上述问题方案的一些对比
在这里插入图片描述

核心思想

关键思想是,对于许多缓存线,缓存线中的值具有较低的动态范围,即,缓存线中存储的值之间的差异很小。因此,可以使用一个基值和一个差异数组来表示缓存线,这些差异数组的组合大小远小于原始缓存线(我们称之为基+增量编码)
于我们研究的工作负载,最好的选择是有两个基,其中一个基总是零。

使用这两个基值(零和其他值),我们的方案可以有效地压缩包含两个分离率动态范围的混合缓存线:一个以从缓存线的实际内容中选择的任意值(例如指针值)为中心,另一个接近于零(例如小整数值)。

对比的对象

  1. 频繁值压缩(FVC)
  2. 频繁模式压缩(FPC)

今天数据库那个贼累,先写到这里,明天继续原理分析

发布了107 篇原创文章 · 获赞 415 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43914889/article/details/104916713
今日推荐