用于壓縮和緊湊虛擬存儲(chǔ)器的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明整體涉及存儲(chǔ)器系統(tǒng)。更具體地,本發(fā)明涉及用于虛擬存儲(chǔ)器系統(tǒng)的壓縮和/或緊湊存儲(chǔ)器。
【背景技術(shù)】
[0002]人們已經(jīng)開發(fā)出虛擬化技術(shù)以為大小超過(guò)存儲(chǔ)器設(shè)備實(shí)際物理容量的存儲(chǔ)空間增強(qiáng)存儲(chǔ)器管理。通常,存儲(chǔ)器虛擬化可基于利用耦接到存儲(chǔ)器設(shè)備的存儲(chǔ)設(shè)備的存儲(chǔ)器交換。由于存儲(chǔ)器對(duì)象和/或10(輸入/輸出)大小不是確定性的,因此可能要在存儲(chǔ)設(shè)備和存儲(chǔ)器設(shè)備之間換入/換出不同大小或頁(yè)數(shù)的未壓縮存儲(chǔ)器。因此,用于為交換存儲(chǔ)器傳輸所存儲(chǔ)的存儲(chǔ)器數(shù)據(jù)的1吞吐量和/或延遲可能會(huì)不利地影響虛擬存儲(chǔ)器系統(tǒng)的性能。
[0003]此外,某些存儲(chǔ)設(shè)備,諸如基于旋轉(zhuǎn)的硬盤的性能可能對(duì)存儲(chǔ)器訪問(wèn)的數(shù)據(jù)局域性具有很強(qiáng)依賴性以減少冗長(zhǎng)的磁盤旋轉(zhuǎn)。然而,在運(yùn)行時(shí)期間數(shù)據(jù)局域性可能得不到保證,因?yàn)橛糜诖鎯?chǔ)器訪問(wèn)的群集特性在不同的數(shù)據(jù)處理任務(wù)中有所不同。因此,通過(guò)在存儲(chǔ)器設(shè)備和存儲(chǔ)設(shè)備之間的頁(yè)入/頁(yè)出進(jìn)行存儲(chǔ)器交換以支持一般的數(shù)據(jù)處理任務(wù)可能會(huì)進(jìn)一步降低存儲(chǔ)器系統(tǒng)的可察覺(jué)性能。
[0004]盡管采用越來(lái)越大大小的實(shí)際物理存儲(chǔ)器的趨勢(shì)往往會(huì)降低設(shè)備間存儲(chǔ)器交換的性能成本,但是可以提供數(shù)據(jù)處理系統(tǒng)中的特定特征增強(qiáng)而沒(méi)有存儲(chǔ)大小的變化。例如,可以基于基本相同量的存儲(chǔ)大小在現(xiàn)有設(shè)備上實(shí)現(xiàn)對(duì)更高屏幕分辨率的支持。然而,僅僅高兩倍的屏幕分辨率就可能對(duì)應(yīng)于窗口緩沖區(qū)大小的四倍增加。因此,如果不對(duì)物理存儲(chǔ)大小的增加進(jìn)行補(bǔ)償,用于實(shí)現(xiàn)更高屏幕分辨率的系統(tǒng)性能可能會(huì)劣化并明顯地變慢。
[0005]因此,虛擬存儲(chǔ)器系統(tǒng)的傳統(tǒng)具體實(shí)施不能支持有限的物理存儲(chǔ)大小所約束的性能要求。
【發(fā)明內(nèi)容】
[0006]存儲(chǔ)器設(shè)備中動(dòng)態(tài)維護(hù)的壓縮存儲(chǔ)器池能夠基于與海量存儲(chǔ)設(shè)備耦接的存儲(chǔ)器設(shè)備為虛擬存儲(chǔ)器提供額外支持層。可以將虛擬存儲(chǔ)器地址分頁(yè)或映射到存儲(chǔ)器設(shè)備的未壓縮部分、壓縮的存儲(chǔ)器池和/或存儲(chǔ)設(shè)備。壓縮的存儲(chǔ)器池可以在存儲(chǔ)器設(shè)備內(nèi)擴(kuò)大和縮小而對(duì)虛擬存儲(chǔ)器沒(méi)有大小限制。
[0007]在一個(gè)實(shí)施例中,可以將存儲(chǔ)頁(yè)面(例如未壓縮存儲(chǔ)器的面積單元)壓縮到壓縮存儲(chǔ)器中的壓縮存儲(chǔ)單元(或壓縮頁(yè)面)中。可以將多個(gè)壓縮存儲(chǔ)單元緊湊化到一起作為壓縮存儲(chǔ)器中固定大小的段??梢栽O(shè)定段的大小以在存儲(chǔ)器設(shè)備和海量存儲(chǔ)設(shè)備之間進(jìn)行有效數(shù)據(jù)傳輸,用于換入/換出壓縮存儲(chǔ)單元的段,以支持虛擬存儲(chǔ)器分頁(yè)器。
[0008]在另一個(gè)實(shí)施例中,存儲(chǔ)器設(shè)備可以包括用于虛擬存儲(chǔ)器的壓縮存儲(chǔ)的動(dòng)態(tài)更新部分。存儲(chǔ)器設(shè)備可以包括與壓縮存儲(chǔ)部分分開的未壓縮存儲(chǔ)部分。虛擬存儲(chǔ)器能夠?qū)⒋鎯?chǔ)器地址映射到壓縮存儲(chǔ)部分。可以將未壓縮存儲(chǔ)部分中分配的存儲(chǔ)區(qū)域壓縮到壓縮存儲(chǔ)部分中。因此,存儲(chǔ)區(qū)域可變?yōu)榭捎糜诖鎯?chǔ)器設(shè)備中所請(qǐng)求的將來(lái)分配(例如在壓縮之后)??梢愿聣嚎s存儲(chǔ)部分以存儲(chǔ)所壓縮的存儲(chǔ)區(qū)域。響應(yīng)于對(duì)訪問(wèn)所壓縮的存儲(chǔ)區(qū)域中的數(shù)據(jù)的請(qǐng)求,可以將所壓縮的存儲(chǔ)區(qū)域解壓縮回存儲(chǔ)器設(shè)備中的未壓縮部分。
[0009]在另一個(gè)實(shí)施例中,提供了一種基于存儲(chǔ)器設(shè)備的虛擬存儲(chǔ)器。可以將存儲(chǔ)器設(shè)備動(dòng)態(tài)劃分為未壓縮存儲(chǔ)部分和壓縮存儲(chǔ)部分,諸如DRAM (易失性存儲(chǔ)器)。未壓縮存儲(chǔ)部分可以存儲(chǔ)經(jīng)由耦接到存儲(chǔ)器設(shè)備的處理器處理的工作數(shù)據(jù)??梢詫⑽磯嚎s存儲(chǔ)部分的一個(gè)或多個(gè)頁(yè)面壓縮到壓縮存儲(chǔ)部分中一個(gè)或多個(gè)不同大小的壓縮存儲(chǔ)單元中。壓縮可以增加未壓縮存儲(chǔ)部分中的可用存儲(chǔ)空間。例如,響應(yīng)于針對(duì)對(duì)壓縮存儲(chǔ)單元中的一個(gè)壓縮存儲(chǔ)單元中的數(shù)據(jù)的訪問(wèn)請(qǐng)求的頁(yè)面錯(cuò)誤,可以將壓縮存儲(chǔ)單元從壓縮存儲(chǔ)部分解壓縮回未壓縮存儲(chǔ)部分??蓪⒉煌笮〉膲嚎s存儲(chǔ)單元中的至少一個(gè)壓縮存儲(chǔ)單元從壓縮存儲(chǔ)部分換出至海量存儲(chǔ)設(shè)備,以增大未壓縮存儲(chǔ)部分中的可用存儲(chǔ)空間。
[0010]在另一個(gè)實(shí)施例中,可以將存儲(chǔ)器設(shè)備的未壓縮部分的一個(gè)或多個(gè)存儲(chǔ)頁(yè)面壓縮到存儲(chǔ)器設(shè)備的壓縮部分中的一個(gè)或多個(gè)不同大小的壓縮存儲(chǔ)單元中??梢詫⒑A看鎯?chǔ)設(shè)備(諸如磁性硬盤驅(qū)動(dòng)器(HDD)或復(fù)合存儲(chǔ)設(shè)備,從文件系統(tǒng)的角度看被作為一個(gè)邏輯卷對(duì)待,包括HDD和閃存存儲(chǔ)器)與存儲(chǔ)器設(shè)備耦接??梢詫⒉煌笮〉膲嚎s存儲(chǔ)單元緊湊化到存儲(chǔ)器設(shè)備的壓縮部分中的段中。響應(yīng)于對(duì)壓縮存儲(chǔ)單元中的一個(gè)壓縮存儲(chǔ)單元的訪問(wèn)請(qǐng)求,可以將一個(gè)壓縮存儲(chǔ)單元從壓縮部分解壓縮到存儲(chǔ)器設(shè)備的未壓縮部分。可以將壓縮存儲(chǔ)單元的該段換出至海量存儲(chǔ)設(shè)備以增大存儲(chǔ)器設(shè)備中的可用存儲(chǔ)空間。
[0011]通過(guò)附圖及以下【具體實(shí)施方式】,本發(fā)明的其他特征將顯而易見(jiàn)。
【附圖說(shuō)明】
[0012]本發(fā)明以舉例的方式進(jìn)行說(shuō)明,而不限于各個(gè)附圖的圖形,在附圖中類似的附圖標(biāo)號(hào)表示類似的元件,并且其中:
[0013]圖1是示出了基于壓縮和/或緊湊存儲(chǔ)器的虛擬存儲(chǔ)器系統(tǒng)的一個(gè)實(shí)施例的框圖;
[0014]圖2是示出了為虛擬存儲(chǔ)器壓縮和解壓縮存儲(chǔ)器的一個(gè)實(shí)施例的流程圖;
[0015]圖3是示出了為虛擬存儲(chǔ)器交換壓縮存儲(chǔ)器頁(yè)的過(guò)程的一個(gè)實(shí)施例的流程圖;
[0016]圖4是示出了為虛擬存儲(chǔ)器交換壓縮存儲(chǔ)器的緊湊段的過(guò)程的一個(gè)實(shí)施例的流程圖;
[0017]圖5示出了數(shù)據(jù)處理系統(tǒng)諸如計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)例,該數(shù)據(jù)處理系統(tǒng)可與本文所述的實(shí)施例一起使用。
【具體實(shí)施方式】
[0018]本文描述了用于壓縮和緊湊虛擬存儲(chǔ)器的方法與裝置。以下說(shuō)明中示出了許多具體細(xì)節(jié),以提供對(duì)本發(fā)明實(shí)施例的全面解釋。然而,對(duì)于本領(lǐng)域的技術(shù)人員顯而易見(jiàn)的是,本發(fā)明的實(shí)施例可在不具有這些具體細(xì)節(jié)的情況下實(shí)施。在其他情況下,未詳細(xì)示出已熟知的部件、結(jié)構(gòu)和技術(shù),以免影響對(duì)此說(shuō)明的理解。
[0019]本說(shuō)明書中提到的“一個(gè)實(shí)施例”或“實(shí)施例”是指,結(jié)合實(shí)施例所描述的特定特征、結(jié)構(gòu)或特性可包括在本發(fā)明的至少一個(gè)實(shí)施例中。在本說(shuō)明書中的各個(gè)位置出現(xiàn)的短語(yǔ)“在一個(gè)實(shí)施例中”不一定都是指同一個(gè)實(shí)施例。
[0020]下圖中示出的過(guò)程通過(guò)處理邏輯執(zhí)行,處理邏輯包括硬件(例如電路、專用邏輯等)、軟件(諸如在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上運(yùn)行的軟件)、或它們兩者的組合。雖然下文根據(jù)某些順序操作來(lái)描述過(guò)程,但應(yīng)當(dāng)理解,所描述的操作中的一些可以不同的順序來(lái)執(zhí)行。此外,一些操作也可以并行地而并非按順序執(zhí)行。
[0021]在一個(gè)實(shí)施例中,可以利用基于日志的數(shù)據(jù)結(jié)構(gòu)(或日志結(jié)構(gòu))動(dòng)態(tài)管理存儲(chǔ)器設(shè)備中的壓縮池(或壓縮存儲(chǔ)單元的池)??梢酝ㄟ^(guò)充填和/或壓縮的方式在壓縮池中放入數(shù)據(jù)以縮小存儲(chǔ)數(shù)據(jù)所需的存儲(chǔ)空間。例如,可以在自包含壓縮存儲(chǔ)器管理系統(tǒng)中自動(dòng)確定何時(shí)在壓縮池和海量存儲(chǔ)設(shè)備(或非易失性存儲(chǔ)設(shè)備)之間交換存儲(chǔ)的數(shù)據(jù),以使虛擬存儲(chǔ)器系統(tǒng)或其他適用存儲(chǔ)器使用模塊與下層的壓縮池隔離。
[0022]例如,可以壓縮存儲(chǔ)器數(shù)據(jù)以減小交換文件的大小,提高存儲(chǔ)器設(shè)備和交換設(shè)備諸如海量存儲(chǔ)設(shè)備之間的數(shù)據(jù)傳輸效率。此外,可以基于有效存儲(chǔ)器壓縮方案將存儲(chǔ)器數(shù)據(jù)壓縮到壓縮池中,使得壓縮/解壓縮成本(例如幾微秒內(nèi))顯著低于(例如幾個(gè)數(shù)量級(jí))與交換設(shè)備之間的常規(guī)磁盤交換速度。在需要時(shí),壓縮池可以在存儲(chǔ)器設(shè)備內(nèi)增大大小,以減少與交換設(shè)備之間所需的交換操作。
[0023]例如,只要有足夠的存儲(chǔ)空間(例如少量的存儲(chǔ)頁(yè)面)來(lái)執(zhí)行存儲(chǔ)器壓縮/解壓縮操作以向壓縮池中移入/從壓縮池移出數(shù)據(jù),壓縮池就可以增大,并與可用物理存儲(chǔ)器以相同的大小工作??梢栽趬嚎s池增大/縮小時(shí),保持工作集匹配不同大小的未壓縮存儲(chǔ)部分。如果工作集(例如為一組用于處理器數(shù)據(jù)操作的實(shí)況任務(wù)分配的存儲(chǔ)器)溢出到壓縮池(或壓縮存儲(chǔ)部分)中,可以從壓縮部分拉出(例如基于某個(gè)預(yù)先確定的速率)存儲(chǔ)頁(yè)面,以在壓縮存儲(chǔ)部分和未壓縮存儲(chǔ)部分(或?qū)?之間進(jìn)行替代,以支持工作集??梢詸z測(cè)對(duì)要分配的額外存儲(chǔ)空間的請(qǐng)求或要求以指示現(xiàn)有的工作集已經(jīng)溢出??梢酝ㄟ^(guò)LRU(最近最少使用)排序策略擴(kuò)展工作集以選擇將哪些存儲(chǔ)頁(yè)面壓縮到壓縮池中。
[0024]在一個(gè)實(shí)施例中,可以在運(yùn)行時(shí)間期間動(dòng)態(tài)選擇多個(gè)壓縮/解壓縮方案或機(jī)制。每種方案都可以基于一個(gè)或多個(gè)壓縮/解壓縮算法??梢曰诖鎯?chǔ)器的創(chuàng)建者(例如,發(fā)起或請(qǐng)求分配的應(yīng)用或過(guò)程)提供的提示或啟示做出選擇,或者可以通過(guò)觀察要針對(duì)特定數(shù)據(jù)模式壓縮的存儲(chǔ)器的每個(gè)頁(yè)面來(lái)確定選擇。在一個(gè)實(shí)施例中,可以將壓縮/解壓縮方案中的一者指定為適用于大部分已分配存儲(chǔ)器(例如,沒(méi)有由對(duì)應(yīng)存儲(chǔ)器創(chuàng)建者提供的任何提示)的默認(rèn)的一種。如果模式匹配機(jī)制在起作用且沒(méi)有得到匹配,這種方案也會(huì)被用作默認(rèn)的一種??赡苁芤嬗?例如看到更有效的壓縮)專用壓縮/解壓縮方案的一種候選方式是為圖形操作(例如通過(guò)GPU)使用而創(chuàng)建的存儲(chǔ)器。
[0025]在一些實(shí)施例中,可以在壓縮池中執(zhí)行緊湊化操作以在壓縮的存儲(chǔ)段中保持日志結(jié)構(gòu)。例如,可以在一個(gè)壓縮存儲(chǔ)段(例如用于輔助緊湊化)內(nèi)和/或跨多個(gè)壓縮存儲(chǔ)段(例如用于主要緊湊化)將壓縮數(shù)據(jù)單元充填在一起。可以在從壓縮存儲(chǔ)器去除壓縮數(shù)據(jù)或向壓縮存儲(chǔ)器中存儲(chǔ)壓縮數(shù)據(jù)時(shí),應(yīng)請(qǐng)求和/或自動(dòng)發(fā)起緊湊化操作。日志結(jié)構(gòu)可允許對(duì)存儲(chǔ)器設(shè)備內(nèi)和/或耦接的存儲(chǔ)設(shè)備之間的壓縮池進(jìn)行有效的輸入/輸出操作(例如讀/寫操作)。