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容量、降低片內和片外帶寬利用率的技術。不幸的是,直接應用衆所周知的壓縮算法(通常在軟件中實現)會導致高硬件複雜性和不可接受的解壓縮/壓縮特性,進而會對性能產生負面影響。因此,需要一種簡單而高效的壓縮技術,能夠有效地壓縮緩存中常見的數據模式,並且對緩存訪問延遲的影響最小。

緩存壓縮是在緩存填充後(在提供關鍵字之後)在後臺進行的,
而緩存解壓縮是在緩存命中的關鍵路徑上進行的,其中最小化延遲對性能極其重要。
事實上,由於一級緩存命中時間是最重要的,因此在本研究中,我們只考慮二級緩存的壓縮

三個核心目標

同時解決壓縮比小、硬件複雜度高、解壓縮延遲大的問題。

數據壓縮的幾種模式

實際應用程序訪問的數據中存在大量冗餘。有多種模式導致了這種冗餘。我們在下面總結了這些模式中最常見的一些:

  1. 零模式
    零是應用數據中最常見的值。原因是多方面的。例如,零最常用於初始化數據、表示空指針或假布爾值以及表示稀疏矩陣(密集形式)。
  2. 重複模式
    一個大的連續內存區域可能包含一個重複多次的值[23]。這種模式廣泛存在於對大數組使用公共初始值的應用程序中,或者在相鄰像素的大量數目具有相同顏色的多媒體應用程序中
  3. 窄模式
    一句話就是習慣性把count設成double/long類型結果上限就是10,浪費極大
    窄值是使用大數據類型存儲的小值:例如,作爲四字節整數存儲的一個字節值。由於過度配置或數據對齊,應用程序數據中通常會出現窄值。程序員通常會在最壞的情況下預測各種數據結構中的數據類型,即使大多數值可能適合較小的數據類型。例如,存儲計數器表需要設置數據類型以容納計數器的最大可能值。然而,可能的情況是最大可能的計數器值需要4個字節,而一個字節可能足以存儲大多數計數器值。
  4. 其他模式
    還有一些其他常見的數據模式不屬於上述三類中的任何一類:指向同一內存區域中不同位置的指針表、低顏色梯度變化的圖像,等。

下圖給出了上述問題方案的一些對比
在這裏插入圖片描述

核心思想

關鍵思想是,對於許多緩存線,緩存線中的值具有較低的動態範圍,即,緩存線中存儲的值之間的差異很小。因此,可以使用一個基值和一個差異數組來表示緩存線,這些差異數組的組合大小遠小於原始緩存線(我們稱之爲基+增量編碼)
於我們研究的工作負載,最好的選擇是有兩個基,其中一個基總是零。

使用這兩個基值(零和其他值),我們的方案可以有效地壓縮包含兩個分離率動態範圍的混合緩存線:一個以從緩存線的實際內容中選擇的任意值(例如指針值)爲中心,另一個接近於零(例如小整數值)。

對比的對象

  1. 頻繁值壓縮(FVC)
  2. 頻繁模式壓縮(FPC)

今天數據庫那個賊累,先寫到這裏,明天繼續原理分析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章