DFPC論文解讀

寫在前面

本文是cache壓縮系列的第九篇,也是目前階段的最後一篇了

背景知識

隨着大量待處理數據的快速增長,

部署大型主存儲器的需求越來越大。然而,作爲主存儲器的傳統DRAM技術在單元可擴展性方面面臨着巨大的挑戰

還有電力泄漏。非易失性存儲器(nvm),例如相變存儲器(PCM)和電阻隨機存取內存(ReRAM),具有構建未來內存的潛力。由於系統具有比DRAM更低的待機功耗和更好的可擴展性等顯著特點。然而,與DRAM相比,nvm在性能上有許多缺點。在實踐中,我們需要仔細處理。
爲了提高NVMs的寫入性能和持久性,現有的方案主要考慮減少寫入單元的數量。

與傳統的基於電荷的存儲器(如DRAM和SRAM)不同,新興的非易失性存儲器使用電阻存儲器存儲數據,電阻存儲器具有更高的密度和可擴展性。因此,NVMs具有廣泛應用於主存的潛力。
由於所有的nvm都是通過改變物理狀態來存儲信息的,所以寫操作比讀操作消耗的時間和能量要長,這就導致了讀寫的不對稱性。此外,寫入操作會損耗NVM單元,特別是在高頻情況下,這導致NVM的持久性受到限制。因此,基於NVM的系統需要在寫操作中減少寫位數。

已有方案

  1. Flip-N-Write(FNW)
    將新舊數據進行比較,以將更改的位數減少至少一半。FNW的效率取決於在每個緩存線中新舊數據之間的差異,這無法利用不同的緩存線。

  2. 頻繁模式壓縮(sFPC)
    減少通過壓縮每個32位字而寫入的位數。具體來說,sFPC在內存控制器中維護一個模式表,該表包含多個常見的字模式,例如全零字模式。如果與表中的任何模式匹配,則緩存線中的每個字都將編碼爲壓縮格式,從而減少寫入的位數。模式表中的字模式是預先設置的,不能修改,稱爲“𝑠𝑡𝑎𝑡𝑖𝑐𝑢𝑡𝑡𝑒𝑟𝑛𝑠”。

動態pattern

現在對於一個32bits的數據,我們進行壓縮,以下"X"表示不可壓縮的4個bits
在這裏插入圖片描述

動態模式可以提高壓縮在各種應用中的適應性。然而,由於數據模式的固定格式,壓縮中數據模式的可伸縮性很低。在我們的觀察中,請求總是一次訪問一個64字節的緩存線,但是FPC只壓縮32位格式的單詞。當一個所有零位的寫請求訪問數據數組時,它將被分成16個字進行壓縮,這將導致3×16=48個寫位才被寫入。爲了進一步減少高效率的位寫入,我們擴展了動態模式的大小。我們改進了傳統的提取算法來檢測更復雜的模式,例如利用緩存線的值局部性的BDI模式。

DFPC核心思想

其思想是從零字符分佈中提取動態模式,同時使用靜態模式和動態模式壓縮更多的數據。該方案在內存控制器中實現。對於常見模式的壓縮,該方案將64字節緩存線劃分爲16個32位字。檢查單詞的內容,以確定是否匹配任何高頻模式。每個數據模式包含8位,表示8個4位字符的狀態(可壓縮或不可壓縮)。對於擴展模式的壓縮,該方案可以選擇合適的匹配算法。爲了支持NVMs中的壓縮,緩存線被修改爲包含標記位。每個字需要2個標記位作爲可壓縮標記和浮動標記,因此32個附加標記位被添加到64字節緩存線中。圖4顯示了使用DFPC的基於NVM的主存系統的體系結構。我們在壓縮架構中增加了一個稱爲採樣引擎的組件,它由一組計數器組成,用於採樣應用程序的零字符分佈和提取動態模式。獲取動態模式後,採樣引擎將這些模式添加到動態模式表中。對於寫訪問,該方案分爲三個階段,即採樣階段、分析階段和雙模式壓縮階段。
在這裏插入圖片描述

採樣階段

採樣階段:動態模式需要足夠數量的單詞通過提取算法獲得。爲了便於在採樣階段進行壓縮操作,在模式表中預先定義了一些靜態模式。在我們的實驗中,我們使用4個靜態模式和3位pre-fix來維護總共8個數據模式。
因此,適當的動態模式的數量應該不超過4個。在寫訪問過程中,如果一個字是可壓縮的,並且與一個模式匹配,則它將與pre fix一起編碼。可壓縮標記設置爲啓用。在通過NVMs的緩存線寫入之前,將每個字的位與現有位進行比較。如果超過一半的位是不同的,則整個字將翻轉(flip),flip標記設置爲啓用。
對於採樣,我們設計了一個採樣引擎來記錄最頻繁的模式。採樣引擎使用兩組計數器。一組用於計算緩存線中零個字符的數目。計數器的數目設置爲128。另一組用於計算擴展模式的縮減位(不包括所有零緩存線)。爲了減少額外的採樣開銷,我們使用一個match操作,它讀取每個字符的值,同時支持採樣操作。因此,採樣引擎中的採樣信息來自壓縮引擎,而不是寫入緩衝區。

分析階段

當採樣量達到採樣粒度𝑁時,通過分析零特徵分佈得到動態模式。在某些應用中,分佈可能非常複雜。因此,我們設計了一種簡單有效的高效模式提取算法。在分析階段,通過提取算法分析計數器(如算法1所示)。首先,檢查計數器是否獲得上限(𝑈𝐵)和下限(𝐿𝐵)。閾值𝑇的值通過使用算法1第5行中的方程計算。

閾值因子(𝑇𝐹)和採樣粒度通過第IV-A節中的實驗驗證預先確定。
在這裏插入圖片描述

動態模式可以通過比較計數器的計數值和閾值來提取。當計數值大於或等於閾值時,模式代碼設置爲“0”,這意味着此字符是可壓縮的。否則,模式代碼設置爲“1”(“X”)。在檢查所有計數器後,該算法提取16個模式。然而,一些提取的模式是重複的或無用的,比如“xxxxxxx”。應去除重複模式和不可壓縮模式。爲了充分利用有限的預加密數目,DFPC根據這些提取的模式和擴展模式的壓縮比來選擇前4個模式。壓縮比由壓縮性和出現頻率決定。最後,剩下的4個動態模式被添加到模式表中。樣式表稍後不會修改。

雙模式壓縮階段

在雙模式壓縮階段,壓縮引擎可以分別從動態模式表和靜態模式表中獲取兩種數據模式。一個詞的內容是基於靜態和動態模式同時壓縮的。然後,壓縮引擎比較兩種數據模式中可壓縮比特的數目,並選擇具有更多可壓縮比特的模式作爲匹配結果來執行壓縮操作。

在讀取訪問期間,可壓縮標記位的狀態確定數據是否被壓縮。flipping標記位的狀態表示flipping數據。解壓引擎對這些標籤進行解析後,可以快速解碼。如果數據被刷新,解壓引擎將首先刷新數據。然後,如果數據被壓縮,解壓引擎將讀取前3位以獲得pre fix,該pre fix在壓縮字和匹配模式之間建立匹配,並找到匹配模式。最後,解壓引擎對壓縮數據進行解碼,並根據模式填充零個字符。

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