數(shù)據(jù)壓縮算法:對于程序員來說,這項(xiàng)新技術(shù)特別實(shí)用
注:【 圖片來源:MIT CSAIL 所有者:MIT CSAIL 】
數(shù)據(jù)壓縮技術(shù)之一,就是通過消除冗余來釋放存儲容量,提高計(jì)算速度,或是帶來其他好處。
但是,在目前的計(jì)算機(jī)系統(tǒng)中,訪問主存的成本很大。因此,在存儲器中使用數(shù)據(jù)壓縮技術(shù)有助于減少提取數(shù)據(jù)的頻率和數(shù)量,提高設(shè)備的性能。
一般來說,現(xiàn)代設(shè)備以固定大小的塊(chunk)來進(jìn)行管理和傳輸數(shù)據(jù),傳統(tǒng)的壓縮技術(shù)必須在這些塊上運(yùn)行。然而,軟件存儲數(shù)據(jù)并不使用固定大小的塊,而是使用對象(object),這種數(shù)據(jù)結(jié)構(gòu)可以容納各種類型的數(shù)據(jù),它的規(guī)模的也可大可小。
因此,傳統(tǒng)的數(shù)據(jù)壓縮技術(shù)很難處理對象。
首次亮相本周ACM國際編程語言和操作系統(tǒng)架構(gòu)支持會議上發(fā)表的一篇論文中,MIT的研究人員描述了第一種“跨存儲層次壓縮對象”的技術(shù)。這種技術(shù)可以降低內(nèi)存使用率,同時也可以提高性能和效率。
研究人員用改進(jìn)后的Java虛擬機(jī)做了實(shí)驗(yàn),結(jié)果表明,與傳統(tǒng)壓縮方法相比,這種新技術(shù)可以多壓縮兩倍的數(shù)據(jù),還減少了一半的內(nèi)存使用率。
CSAIL的研究生Po-An Tsai是這篇論文的第一作者,她表示,“我們試圖提出一種新的存儲層次結(jié)構(gòu),能夠進(jìn)行對象壓縮,因?yàn)榇蟛糠脂F(xiàn)代編程語言都是以對象的形式管理數(shù)據(jù)的?!?/p>
合著者Daniel Sanchez是計(jì)算機(jī)科學(xué)和電子工程專業(yè)的教授,同時也是CSAIL的研究員,他補(bǔ)充道,“所有計(jì)算機(jī)系統(tǒng)都將從這項(xiàng)新技術(shù)中受益,程序的運(yùn)行將變得更快,因?yàn)椴辉偈苤朴趦?nèi)存帶寬?!?/p>
由于Java、Python和Go這些現(xiàn)代編程語言以對象的形式管理數(shù)據(jù),所以對于程序員來說,這項(xiàng)新技術(shù)特別實(shí)用。在不久的將來,我們就會看到設(shè)備擁有更快的速度,或者能在同一時間運(yùn)行更多應(yīng)用程序。
存在局限傳統(tǒng)的結(jié)構(gòu)以塊的形式將數(shù)據(jù)存儲到緩存存儲器(Cache)中,最近受訪的塊會上升到這里(上圖黃色層),雖然這里空間小,但訪問速度快。而舊塊則會下降,最終回到主存(上圖藍(lán)色層)中。
雖然這種數(shù)據(jù)之間的調(diào)動十分靈活,但成本也不低。
在數(shù)據(jù)調(diào)動的過程中,如果目標(biāo)數(shù)據(jù)不再Cache中,Cache就要訪問主存,并大范圍搜索數(shù)據(jù)的地址。入下圖所示,Cache訪問主存并返回的時間大約是100~300個周期。耗時太長,存在局限性。
推陳出新Sanchez發(fā)現(xiàn)了傳統(tǒng)模式的局限性,他思考著,“既然現(xiàn)代編程語言中數(shù)據(jù)管理的單位是對象,那我們?yōu)槭裁床唤ㄒ粋€處理對象的存儲層次結(jié)構(gòu)呢?”
于是,研究人員在之前的傳統(tǒng)存儲層次結(jié)構(gòu)上進(jìn)行改進(jìn),便于直接處理對象。
1.Hotpad/pad
在去年10月發(fā)表的一篇論文中,研究人員詳細(xì)介紹了一個名為Hotpad的系統(tǒng),可以用來存儲對象。由于這個系統(tǒng)的各個層次之間關(guān)系緊密,也可稱為pad。
這整個結(jié)構(gòu)基于一個芯片存儲器,效率高且不需要進(jìn)行復(fù)雜的搜索,因?yàn)槌绦蚩梢灾苯右谜麄€pad所有對象的位置。新分配的,或最近引用的對象,以及它們指向的對象,都停留在速度最快的層次,以便快速訪問。
當(dāng)這個層被填滿時,系統(tǒng)就會開始“篩查”。篩查的過程會保留最近引用的對象,但較舊的對象會被下放到較慢的層,除此之外,系統(tǒng)還會刪除不再有用的對象,以釋放空間。隨后,每個對象的指針都會更新,指向新對象的位置。通過這種方式,程序訪問對象的成本比通過緩存層來搜索要低得多。
2.Zippad
研究人員還設(shè)計(jì)了一種名為Zippad的技術(shù),利用Hotpad系統(tǒng)來壓縮對象。當(dāng)對象第一次在較快的層次啟動時,它們會被解壓,但當(dāng)它們被下放時又會被壓縮。另一方面,跨級別的所有對象都指向那些壓縮的對象,這使得它們很容易恢復(fù)到更快的級別,并且比傳統(tǒng)技術(shù)下存儲得更緊湊。
3.基礎(chǔ)對象
與以前的技術(shù)相比,這種新技術(shù)還提供了更多的壓縮機(jī)會,因?yàn)橐郧暗募夹g(shù)僅限于在固定大小的塊中查找冗余。首先,該算法會選取幾個具有代表性的對象作為基礎(chǔ)對象。然后,只要有新對象加入,算法就會對比基礎(chǔ)對象和新對象,然后把它們的之間不同的數(shù)據(jù)存儲起來。
卡耐基梅隆大學(xué)電子和計(jì)算機(jī)工程助教Brandon Lucia十分贊賞這個新技術(shù),因?yàn)樗镁幊陶Z言的特性,更好地進(jìn)行壓縮工作。他說:“這項(xiàng)工作的有趣之處在于,它利用對象的抽象性讓內(nèi)存壓縮更有效,從而使系統(tǒng)更快、更高效,具有新的計(jì)算機(jī)體系結(jié)構(gòu)特性?!?/p>
注:本文編譯自 MIT CSAIL,部分內(nèi)容來自網(wǎng)絡(luò),由整合
版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。