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