TW201432456A - 用於壓縮的及密集的虛擬記憶體之方法及裝置 - Google Patents

用於壓縮的及密集的虛擬記憶體之方法及裝置 Download PDF

Info

Publication number
TW201432456A
TW201432456A TW102145429A TW102145429A TW201432456A TW 201432456 A TW201432456 A TW 201432456A TW 102145429 A TW102145429 A TW 102145429A TW 102145429 A TW102145429 A TW 102145429A TW 201432456 A TW201432456 A TW 201432456A
Authority
TW
Taiwan
Prior art keywords
memory
compressed
uncompressed
region
cells
Prior art date
Application number
TW102145429A
Other languages
English (en)
Other versions
TWI494764B (zh
Inventor
Joseph Sokol
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of TW201432456A publication Critical patent/TW201432456A/zh
Application granted granted Critical
Publication of TWI494764B publication Critical patent/TWI494764B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本發明描述一種用於一記憶體器件之方法及裝置,該記憶體器件包括用於一虛擬記憶體之壓縮的記憶體之一動態更新部分。該記憶體器件可包括與記憶體之壓縮的部分分開之一記憶體之未壓縮部分。該虛擬記憶體可能能夠將一記憶體位址映射至該記憶體之壓縮的部分。配置於該記憶體之未壓縮部分中之一記憶體區域可經壓縮至該記憶體之壓縮的部分中。結果,該記憶體區域可變得可用於(例如,在經壓縮之後)該記憶體器件中所請求之未來配置。該記憶體之壓縮的部分可經更新以儲存該壓縮的記憶體區域。該壓縮的記憶體區域可回應於存取該壓縮的記憶體區域中之資料而經解壓縮回至該記憶體器件中之該未壓縮部分。

Description

用於壓縮的及密集的虛擬記憶體之方法及裝置
本發明大體係關於記憶體系統。更特定言之,本發明係關於用於虛擬記憶體系統之壓縮的及/或密集的記憶體。
已開發虛擬化技術來增強對於具有超過記憶體器件之實際實體容量之大小的記憶體空間之記憶體管理。通常,記憶體虛擬化可基於使用耦接至記憶體器件之儲存器件的記憶體交換。由於記憶體物件及/或IO(輸入/輸出)大小不具決定性,所以可在儲存器與記憶體器件之間換入/換出未經壓縮之不同記憶體大小或頁面。結果,IO輸送量及/或用於傳送所儲存之用於交換記憶體之記憶體資料的延時可負面地影響虛擬記憶體系統之效能。
另外,某些儲存器件(諸如,基於自旋之硬碟)之效能對於記憶體存取而言可具有對資料局域性之強依賴性以減少長久之磁碟自旋。然而,在執行時間期間可能不保證資料局域性,因為記憶體存取之聚類特性在不同資料處理任務中會變化。因此,藉由在記憶體器件與儲存器件之間入頁面/出頁面以支援一般資料處理任務的記憶體交換可進一步使記憶體系統之感知效能降級。
雖然採用實際實體記憶體之愈來愈大之大小的趨勢傾向於減輕器件間記憶體交換中之效能成本,但在無記憶體大小改變的情況下, 可提供資料處理系統中之某些特徵增強。舉例而言,對較高螢幕解析度之支援可基於實質上相同量之記憶體大小而被強加於現有器件。然而,僅高2倍之螢幕解析度可對應於視窗緩衝器大小之4倍增加。結果,在無實體記憶體大小之補償增加的情況下,針對較高螢幕解析度之系統效能可降級且變得顯然更緩慢。
因此,虛擬記憶體系統之傳統實施不能夠支援受有限實體記憶體大小約束的效能要求。
動態地維持於記憶體器件中之壓縮的記憶體集區可提供用於虛擬記憶體(基於與大容量儲存器件耦接之記憶體器件)之一額外支援層。虛擬記憶體位址可被分頁或映射至記憶體器件之未壓縮部分、壓縮的記憶體集區及/或儲存器件中。壓縮的記憶體集區可在無針對虛擬記憶體之大小限制的情況下在記憶體器件內增長及縮小。
在一項實施例中,記憶體頁面(例如,未壓縮的記憶體之區域單元)可被壓縮至壓縮的記憶體中之壓縮的記憶體單元(或壓縮頁)中。多個壓縮的記憶體單元可經一起密集化為壓縮的記憶體中之大小固定區段。該區段可經定大小以用於在記憶體器件與大容量儲存器件之間的有效率的資料傳送,以用於換入/換出壓縮的記憶體單元之區段以支援虛擬記憶體分頁器。
在另一實施例中,記憶體器件可包括用於虛擬記憶體之壓縮的記憶體之一動態更新部分。該記憶體器件可包括與記憶體之壓縮的部分分開之一記憶體之未壓縮部分。虛擬記憶體可給能夠將記憶體位址映射至記憶體之壓縮的部分。配置於記憶體之未壓縮部分中的一記憶體區域可經壓縮至記憶體之壓縮的部分中。結果,該記憶體區域可變得可用於(例如,在經壓縮之後)記憶體器件中所請求之未來配置。記憶體之壓縮的部分可經更新以儲存該壓縮的記憶體區域。該壓縮的記 憶體區域可回應於存取壓縮的記憶體區域中之資料而被解壓縮回至記憶體器件中之未壓縮部分。
在另一實施例中,提供一基於記憶體器件之虛擬記憶體。該記憶體器件可經動態地分割成記憶體之未壓縮部分及記憶體之壓縮的部分,諸如,DRAM(揮發性記憶體)。記憶體之未壓縮部分可儲存經由耦接至記憶體器件之處理器所處理的工作資料。記憶體之未壓縮部分之一或多個頁面可經壓縮至記憶體之壓縮的部分中之一或多個不同大小之壓縮的記憶體單元中。壓縮可增大記憶體之未壓縮部分中之可用記憶體空間。壓縮的記憶體單元可(例如)回應於對於該等壓縮的記憶體單元中之一者中之資料的存取請求的頁面錯誤而自記憶體之壓縮的部分解壓縮回至記憶體之未壓縮部分。該等不同大小之壓縮的記憶體單元中之至少一者可自記憶體之壓縮的部分換出至大容量儲存器件以增大記憶體之未壓縮部分中之可用記憶體空間。
在另一實施例中,記憶體器件之未壓縮部分之一或多個記憶體頁面可被壓縮至記憶體器件之壓縮的部分中之一或多個不同大小之壓縮的記憶體單元中。大容量儲存器件(諸如,磁碟機(HDD)或複合式儲存器件,該複合式儲存器件自檔案系統之觀點而被作為包括HDD及快閃記憶體之一邏輯磁碟區對待)可與記憶體器件耦接。不同大小之壓縮的記憶體單元可經密集化至記憶體器件之壓縮的部分中之一區段中。該一個壓縮的記憶體單元可回應於對該等壓縮的記憶體單元中之一者的存取請求而自壓縮一部分解壓縮至記憶體器件之未壓縮部分。壓縮的記憶體單元之區段可經換出至大容量儲存器件以增大記憶體器件中之可用記憶體空間。
本發明之其他特徵將自隨附圖式及自以下詳細描述而顯而易見。
100‧‧‧系統
101‧‧‧操作環境
103‧‧‧虛擬記憶體管理模組
105‧‧‧分頁器層模組
107‧‧‧壓縮的記憶體管理模組
109‧‧‧密集化模組
111‧‧‧壓縮器/解壓縮器模組
113‧‧‧交換模組
115‧‧‧記憶體使用管理模組
117‧‧‧壓縮的記憶體(或壓縮集區)
119‧‧‧介面模組
121‧‧‧大容量儲存器件
123‧‧‧應用程式
200‧‧‧處理程序
300‧‧‧處理程序
400‧‧‧處理程序
500‧‧‧電腦系統
503‧‧‧匯流排
505‧‧‧微處理器
507‧‧‧唯讀記憶體(ROM)
509‧‧‧揮發性RAM
511‧‧‧非揮發性記憶體/大容量儲存器
513‧‧‧顯示控制器及顯示器件
515‧‧‧輸入/輸出器件
517‧‧‧輸入/輸出控制器
在隨附圖式之諸圖中藉由實例且非限制地說明本發明,其中相同參考指示類似元件,且其中:圖1為說明基於壓縮的及/或密集的記憶體之虛擬記憶體系統之一項實施例的方塊圖;圖2為說明壓縮及解壓縮用於虛擬記憶體之記憶體之一項實施例的流程圖;圖3為說明交換用於虛擬記憶體之壓縮的記憶體頁面之處理程序之一項實施例的流程圖;圖4為說明交換用於虛擬記憶體之壓縮的記憶體之密集的區段之處理程序之一項實施例的流程圖;圖5說明可結合本文中所描述之實施例而使用之資料處理系統(諸如電腦系統)之一項實例。
本文中描述用於壓縮的及密集的虛擬記憶體之方法及裝置。在以下描述中,闡述眾多特定細節以提供對本發明之實施例之透徹解釋。然而,熟習此項技術者應顯而易見,可在無此等特定細節的情況下實踐本發明之實施例。在其他個例中,尚未詳細展示熟知之組件、結構及技術以便不混淆對此描述之理解。
說明書中對「一項實施例」或「一實施例」的提及意謂結合該實施例所描述之一特定特徵、結構或特性可包括於本發明之至少一項實施例中。片語「在一項實施例中」在說明書中各處的出現未必皆指同一實施例。
在以下諸圖中所描繪之處理程序係藉由包含硬體(例如,電路、專用邏輯等)、軟體(諸如,在通用電腦系統或專用機器上執行)或兩者之組合的處理邏輯來執行。雖然下文依照一些順序操作來描述處理程序,但應瞭解,可以不同次序來執行所描述之操作中之一些操作。此 外,可並行地而非順序地執行一些操作。
在一項實施例中,可使用基於日誌之資料結構(或日誌結構)來動態地管理記憶體器件中之壓縮集區(或壓縮的記憶體單元之集區)。資料可以封裝及/或壓縮之方式而被置於壓縮集區中以縮小所需之用於儲存資料的記憶體空間。可在自含式壓縮的記憶體管理系統中自動地判定何時將在壓縮集區與大容量儲存器件(或非揮發性儲存器件)之間交換所儲存之資料,(例如)以使虛擬記憶體系統或其他適用之記憶體使用模組與基本之壓縮集區隔離。
記憶體資料可經壓縮以減小交換檔案大小,(例如)以為了記憶體器件與交換器件(諸如,大容量儲存器件)之間的資料傳送效率。另外,記憶體資料可基於有效率的記憶體壓縮方案(其中壓縮/解壓縮成本(例如,若干微秒)顯著地小於(例如,若干數量級)習知磁碟與交換器件之交換速度)而被壓縮至壓縮集區中。當需要減少所需之交換器件的交換操作時,壓縮集區之大小可在記憶體器件內增長。
舉例而言,只要存在被留下用來執行記憶體壓縮/解壓縮操作以將資料移入/移出壓縮集區之足夠記憶體空間(例如,少量記憶體頁面),壓縮集區便可增長及工作而與可用實體記憶體大小一樣大。可維持一工作集以在壓縮集區增長/縮小時配合於具有不同大小的記憶體之未壓縮部分中。若工作集(例如,經配置用於處理器資料操作之一組現場任務的記憶體)溢漏至壓縮集區(或記憶體之壓縮的部分)中,則可自壓縮的部分拉動記憶體頁面(例如,基於某一預定速率)以在記憶體之壓縮的部分(或層)與未壓縮部分(或層)之間替換,以支援工作集。可偵測對配置額外記憶體空間之請求或要求以指示現有工作集已外溢。可經由LRU(最近很少使用)排序策略來擴展工作集以選擇哪些記憶體頁面將被壓縮至壓縮集區中。
在一項實施例中,可在執行時間期間動態地選擇多個壓縮/解壓 縮方案或機制。每一方案可基於一或多個壓縮/解壓縮演算法。可基於由記憶體之建立者(例如,起始或請求配置之應用程式或處理程序)所提供的暗示或啟發來做出該選擇,或可藉由觀察將要針對一特定資料型樣而壓縮之每一記憶體頁面來判定該選擇。在一項實施例中,可將壓縮/解壓縮方案中之一者指派為適用於大部分所配置之記憶體的預設方案(例如,在無由對應之記憶體建立者所提供之任何暗示的情況下)。此方案在型樣匹配機制起作用且不做匹配的情況下將亦被用作預設方案。可受益(例如,經歷更有效率的壓縮)於專門之壓縮/解壓縮方案的一個候選者為經建立以供圖形操作(例如,經由GPU)使用之記憶體。
在一些實施例中,可在壓縮集區中執行密集化操作以維持壓縮的記憶體區段中之日誌結構。舉例而言,可將壓縮的資料單元一起封裝於一個壓縮記憶體區段(例如,用於較少密集化)內及/或跨越多個壓縮的記憶體區段封裝(例如,用於較多密集化)。可在自壓縮的記憶體移除壓縮的資料或將壓縮的資料儲存至壓縮的記憶體中時應要求及/或自動地起始密集化操作。日誌結構可允許對在記憶體器件內及/或在耦接之儲存器件之間的壓縮集區的有效率之輸入/輸出操作(例如,讀取/寫入操作)。
根據一項實施例,當自壓縮集區拉出壓縮的資料時,可產生孔(亦即,先前由壓縮的資料佔據之空的記憶體空間)。結果,若不移除此等孔,則壓縮集區之記憶體使用的效率可變得愈來愈小。可執行較少密集化操作以將壓縮的資料在壓縮集區中之記憶體區段(例如,日誌結構)內移動,以減少記憶體區段中之孔的數目。在一項實施例中,可執行較少密集化操作以允許記憶體器件中之記憶體頁面的額外配置。較少密集化操作可花費無關重要之處理資源以造成資料處理延時之顯著改良。
在一項實施例中,除較少密集化操作之外,亦可執行較多密集化操作以在壓縮集區之不同記憶體區段當中移動壓縮的資料(例如,當需要將壓縮的資料換出至交換器件時)。壓縮集區中所需之記憶體區段的數目可由於較多密集化操作而減少。可緊縮(或減少)壓縮集區之記憶體區段中的未用記憶體空間,(例如)以允許將大塊壓縮的記憶體頁面寫出至交換器件。結果,可最大化可用IO頻寬(例如,在記憶體器件與交換器件之間)。另外,可最小化交換器件(諸如,SSD器件)之損耗量。
在一項實施例中,基於一密集化模型來執行密集化操作,該密集化模型判定何時執行較少密集化操作、較多密集化操作或其他適用之資料移動操作以維持壓縮集區中之有效率的記憶體儲存使用。可執行較少密集化操作以在一個記憶體區段內拖動壓縮的資料,以增大或釋放可用記憶體空間。可執行較多密集化操作以在多個記憶體區段當中移動壓縮的資料,(例如)以確保將以完整大小將記憶體區段自壓縮集區換出至交換器件。若記憶體區段實質上無孔或具有大於(例如)一預定臨限值(例如,99%)之記憶體使用率,則該記憶體區段可呈完整大小。
因此,當(例如)基於大小相同(諸如,256KB、512KB、1024KB或其他合適之大小)之資料塊(例如,壓縮區段)來執行自壓縮集區寫入至交換檔案(例如,在交換器件中)的IO操作時,可維持日誌結構化之資料(或模型)。在一項實施例中,在用於記憶體交換之IO操作期間所傳送的資料塊可根據與交換器件之IO介面(例如,匹配IO匯流排緩衝器大小)而對應於壓縮記憶體頁面之集合以改良IO效能。因此,可基於所傳送之資料之壓縮及用於交換器件之匹配傳送資料塊大小來改良壓縮集區與交換器件間之IO操作中的效率或輸送量。
在一項實施例中,壓縮集區中之日誌結構化之資料可包括記憶 體區段之有序清單。可將新近壓縮的資料記錄於有序區段清單之頭區段(或記錄頭)中。可執行對於虛擬記憶體系統之工作集分析以基於壓縮集區中之有序區段清單來判定換出壓縮集區之哪一部分。舉例而言,一區段被定位於有序清單中而與頭區段離得愈遠,則儲存於該區段中之壓縮的資料對於工作集而言愈有可能不再具有利害關係(或立即需求)。結果,可選擇尾區段(或距記錄頭之遠端)以換出至交換器件。可基於密集的記憶體區段而自壓縮集區將壓縮的資料自交換器件帶入/帶出至交換器件。
可識別執行記憶體交換操作之需求,(例如)以對壓縮集區之大小加上一上限。壓縮集區之大小(或形狀)可基於執行時間記憶體存取型樣而動態地改變。在一項實施例中,可基於成本(例如,功率消耗成本)模型來動態地監控(或估計)密集化/壓縮/解壓縮操作對記憶體交換操作的處理成本以判定何時執行交換操作。
舉例而言,壓縮、解壓縮及/或密集化操作之速率可對應於功率(或處理資源消耗)以指示記憶體器件中之壓縮集區(或壓縮層、壓縮部分)的狀況。若此速率超出某一臨限值,則可執行或觸發交換操作以使壓縮的資料自壓縮集區出頁面至交換器件。在一項實施例中,與交換操作中之資料IO交易相比較,壓縮/解壓縮及/或密集化操作可招致一小部分之處理成本。可在出現使壓縮的資料出頁面至交換器件的需求之前評估功率成本函數以允許壓縮集區增長。成本函數可取決於(例如)壓縮集區之形狀、由密集化/壓縮/解壓縮操作所引起之處理延時的已組態容限或維持記憶體器件中之工作集的其他適用因素。
記憶體器件中之壓縮集區可允許藉由減少至/自交換器件之資料分頁(例如,交換操作)之所需數目來達成省電。舉例而言,當資料經壓縮時,需要較少數目個資料分頁或檔案分頁。另外,可藉由經由基於日誌之結構載運壓縮的資料之密集的區段來改良每一資料分頁或交 換操作中之效率或有效性。
在一些實施例中,可對應於儲存於每一區段中之壓縮的資料之使用年限對壓縮集區中之基於日誌結構之記憶體區段的清單排序。壓縮的資料之使用年限可指示資料自工作集而被壓縮或經存取以用於工作集的早晚程度。交換操作可寫出工作集中已過時效之記憶體區段(例如,有序區段清單之尾部分)。結果,經選擇以被換出壓縮集區而至交換器件(例如,磁碟)之壓縮的資料可儲存於暫時尚未使用之密集的記憶體區段中。可執行交換操作以(例如)為工作集之增長留出空間或適應工作集之增長。同時,可避免或以顯著省電來減少為達成維護目的(例如,檔案或資料備份/同步)之自記憶體器件至交換器件或磁碟器件的週期性資料寫入。
壓縮集區可提供用於對於系統休眠及/或喚醒之快速操作的機制。舉例而言,可將記憶體器件之壓縮的部分及未壓縮部分分開地備份(或儲存)於系統之非揮發性儲存器件(例如,磁碟)中以進入休眠(或睡眠)狀態。壓縮的部分(或壓縮集區)可經由密集的記憶體區段而傳送(或推送)至非揮發性儲存器件。記憶體之未壓縮部分(例如,包括當前工作集)可經壓縮至附接有特殊標記之壓縮集區中以作為密集的記憶體區段而傳送至非揮發性儲存器件。舉例而言,可暫停應用程式作為壓縮的/密集的記憶體區段進入至壓縮集區中。
在系統喚醒期間,可自非揮發性儲存器件擷取(或拉回)對應於記憶體器件之未壓縮部分的經專門標記之壓縮的記憶體區段以使記憶體器件填充有先前工作集(或熱門工作集)。舉例而言,可使暫停之應用程式自經專門標記之壓縮的記憶體區段解除暫停或恢復回至記憶體器件之未壓縮部分。代替擷取與正恢復之應用程式相關聯之任意記憶體頁面(例如,先前儲存於記憶體之壓縮的部分或未壓縮部分中)的做法,可在擷取先前儲存於壓縮集區中之彼等記憶體頁面之前藉由用於 應用程式之先前儲存於記憶體之未壓縮部分中的有價值資訊來預加熱(或預加溫以為了加速之喚醒)系統。
圖1為說明基於壓縮的及/或密集的記憶體之虛擬記憶體系統之一項實施例的方塊圖。舉例而言,系統100可包括在資料處理器件(諸如,行動器件、桌上型電腦或伺服器等)之記憶體器件中代管的操作環境101。記憶體器件可包含(例如)用於支援處理器件中之至少一個處理器之資料處理的隨機存取記憶體(RAM)。壓縮的記憶體(或壓縮集區)117可在記憶體器件內加以動態地分割(或維持)。結果,記憶體器件中用於支援操作環境101之操作的可用記憶體空間(其可基於記憶體器件之未壓縮部分)可小於由記憶體器件所提供之總記憶體空間。在某些實施例中,多個處理器(諸如,CPU、GPU或其他適用之處理單元)可並行存取壓縮的記憶體117。
在一項實施例中,虛擬記憶體管理模組103可虛擬化各種形式之電腦資料儲存器(諸如,RAM及大容量儲存器件121),以允許在操作環境101中執行之程式或處理程序(諸如,應用程式123)存取記憶體位址(或虛擬記憶體位址),如同僅存在一種記憶體(即,虛擬記憶體,其可表現得像RAM中之可直接定址型讀取/寫入記憶體)。舉例而言,虛擬記憶體管理模組103可維持(多個)虛擬記憶體位址(或一虛擬記憶體位址)與實際實體資料儲存位置(諸如,RAM(或記憶體器件)內之實體記憶體頁面及大容量儲存器件121中之儲存參考)之間的映射。
虛擬記憶體管理模組103可經由分頁器層模組105而將資料移入至記憶體器件(例如,RAM)中或移出記憶體器件(例如,RAM)。舉例而言,可回應於(例如)來自應用程式之記憶體配置請求及/或其他資料處理要求而將資料(例如,大容量儲存器件121中之磁碟檔案不支援之匿名資料或廢資料)換出記憶體器件中之實體記憶體頁面以釋放實體記憶體頁面中之記憶體空間。可使可自大容量儲存器件121中之磁碟 檔案利用的乾淨資料(或記憶體資料)自記憶體器件出頁面(或淨化)以增大可用記憶體空間。當應用程式(諸如,應用程式123)終止時,經配置用於該應用程式之記憶體空間(例如,堆疊、堆積等)可變得可用於未來配置。
在一項實施例中,虛擬記憶體管理模組103可將記憶體換入/換出請求發送至分頁器層模組105以管理記憶體器件之未壓縮部分內的虛擬記憶體位址。分頁器層模組105可與大容量儲存器件121及/或壓縮的記憶體管理模組107介面連接以將記憶體頁面移動至記憶體器件之未壓縮部分/自記憶體器件之未壓縮部分移動記憶體頁面。結果,虛擬記憶體管理模組103可在不區分(或不知曉)虛擬記憶體位址是否對應於壓縮的記憶體117或大容量儲存器件121內之記憶體位置的情況下映射在記憶體器件之未壓縮部分外的該虛擬記憶體位址。換言之,虛擬記憶體管理模組103可忽略壓縮的記憶體117之存在。
分頁器層模組105可基於執行記憶體分頁操作之多個同時執行緒(或輸入/輸出執行緒)。舉例而言,分頁器層模組105可包括一檔案分頁器以管理儲存來自大容量儲存器件121之磁碟檔案之乾淨資料的未壓縮的記憶體頁面。分頁器層模組105可包括記憶體分頁器(例如,作為一或多個執行緒),該記憶體分頁器與壓縮的記憶體管理模組107介面連接以經由壓縮的記憶體117而將未壓縮的記憶體頁面移動至記憶體器件之未壓縮部分/自記憶體器件之未壓縮部分移動未壓縮的記憶體頁面。
在一項實施例中,壓縮的記憶體117可包括一或多個日誌結構(例如,基於具有頭及尾之陣列或佇列)以儲存壓縮的記憶體單元。每一日誌結構可包括具有經配置用於儲存壓縮的記憶體單元之緩衝器的一或多個區段。每一區段可具有普通大小(例如,256KB、512KB、1024KB或其他適用大小),其具有記憶體槽以儲存壓縮的記憶體單元 (或壓縮頁)之有序清單。每一壓縮單元可能可(例如)經由壓縮器/解壓縮器模組111而自記憶體器件之未壓縮部分中的記憶體頁面壓縮至日誌結構之頭。在一些實施例中,可經由壓縮的記憶體管理模組107來同時及/或獨立地經由分開之執行緒更新或操作每一日誌結構。
壓縮的記憶體單元可儲存於日誌結構之一個區段中之記憶體槽(或位置)中。壓縮器模組111可將新近壓縮之記憶體頁面記錄或儲存至日誌結構之頭槽且將下一槽(緊靠當前頭槽)更新作為日誌結構之頭槽以用於未來壓縮。當當前區段(或日誌結構中之頭區段)變得滿(或實質上滿)時,壓縮的記憶體管理模組107可建立(或自記憶體器件之未壓縮部分配置)一或多個新區段。可針對壓縮的記憶體117而(例如)基於識別日誌結構、在所識別日誌結構內之區段及在儲存壓縮的記憶體單元之所識別區段內之記憶體槽的識別符而維持記憶體頁面與日誌結構中之其對應的壓縮的記憶體單元之間的映射。
在一項實施例中,壓縮器/解壓縮器模組111可管理壓縮的記憶體117中之日誌結構。每一日誌結構可與可指向當前區段(例如,日誌結構中之區段陣列中的頭區段)中之頭槽的一記錄頭相關聯。多個執行緒可與壓縮器/解壓縮器模組111相關聯以同時使用分開之日誌結構來執行記憶體壓縮/解壓縮操作。壓縮器/解壓縮器模組111可根據儲存待壓縮(例如,如經由分頁器層模組105所排程)之記憶體頁面的請求佇列來執行壓縮操作。記憶體頁面在經壓縮時可能需要將實體記憶體大小之不到一個頁面儲存於日誌結構中之區段內的記憶體槽中。
在一項實施例中,當較多記憶體頁面經壓縮至壓縮的記憶體117中時,在對應的日誌結構之頭部後的記憶體槽可經填滿。替代地,當所儲存之壓縮的記憶體單元經釋放時,對應的日誌結構中之區段中的一些區段或槽可變空或可用於配置。舉例而言,當應用程式或處理程序終止時,可移除經維持用於該應用程式之物件或結構且可釋放該應 用程式所擁有之實體記憶體頁面或壓縮的記憶體單元以供未來使用(亦即,可用於配置)。替代地,區段可由於經換出、解壓縮或密集化而變空。
壓縮器/解壓縮器模組111可(例如)回應於虛擬記憶體管理模組103中所遭遇之頁面錯誤而將壓縮的記憶體單元拉出或解壓縮出壓縮的記憶體117而至記憶體器件之未壓縮部分。壓縮器/解壓縮器模組111可(例如)經由分開之執行緒對壓縮的記憶體117之不同區段同時執行壓縮及解壓縮操作。
壓縮的記憶體管理模組107可包括交換模組113以經由介面模組119而在壓縮的記憶體117與大容量儲存器件121之間移動壓縮的記憶體單元之區段。舉例而言,可將壓縮的記憶體單元之區段換出壓縮的記憶體117以為容納新近壓縮之記憶體頁面留出空間,及/或儲存記憶體器件之狀態以用於未來在系統休眠過程等期間恢復。替代地,可由於虛擬記憶體管理模組103中所遭遇之頁面錯誤而將壓縮的記憶體單元之區段換入至壓縮的記憶體117中以存取壓縮的記憶體單元之區段中之一或多者中的資料。
在一項實施例中,可針對交換模組113而執行一或多個執行緒。交換執行緒可根據所指派之排程或回應於請求而喚醒。舉例而言,分頁器層模組105可發佈請求來解決頁面錯誤。記憶體使用管理模組115可發送請求以維持記憶體器件中之足夠可用記憶體空間。根據一項實施例,交換執行緒可喚醒以檢查記憶體器件之當前狀態,以判定壓縮的記憶體單元之多少區段將換出壓縮的記憶體117。交換執行緒可選擇很少使用(例如,過時效或陳舊)之區段,在需要的情況下密集化該區段(例如,經由密集化模組109),及將所選區段轉遞至大容量儲存器件121。可獨立於經由壓縮器/解壓縮器模組111進行之壓縮/解壓縮操作及/或與之同時來執行經由交換模組113進行之交換操作。
密集化模組109可對壓縮的記憶體117執行密集化操作以減少記憶體分段及/或增加記憶體交換效率。舉例而言,密集化模組109可執行較少密集化操作以在不變更壓縮的記憶體單元當中之排序關係的情況下使壓縮的記憶體單元在日誌結構之一區段內滑動(或移動),以鞏固留在其間之空記憶體槽。替代地或視情況,密集化模組109可執行較多密集化操作以跨越不同區段移動壓縮的記憶體單元,以填滿及/或騰空某些區段。
在一項實施例中,交換模組113可請求密集化模組109將區段密集化(例如,最小化或減少空槽)以為了更好之交換效能。舉例而言,記憶體器件與交換器件之間的介面可基於用於資料傳送之固定大小資料緩衝器。匹配資料緩衝器大小的經緊密封裝之區段可最大化傳送效率(例如,每單位時間或時脈循環所傳送之資料量)。
記憶體使用管理模組115可判定何時將壓縮的記憶體單元或頁面自壓縮的記憶體117推出或換出至大容量儲存器件121。記憶體使用管理模組可監控記憶體器件之使用狀態以提供用於交換模組113起始交換操作的觸發(或將請求發送至交換模組113以起始交換操作)。使用狀態可包括:功率使用、記憶體效能(例如,讀取/寫入速度)、記憶體使用率、記憶體器件中之壓縮分割區/未壓縮分割區的比率、壓縮的記憶體117之大小、記憶體頁面之工作集之大小或其他適用之執行時間量度,等。
圖2為說明壓縮及解壓縮用於虛擬記憶體之記憶體之一項實施例的流程圖。舉例而言,可由圖1之系統100之一些組件來執行處理程序200。在區塊201處,處理程序200之處理邏輯可動態地更新用於支援一或多個處理器之虛擬記憶體的記憶體器件中之記憶體之壓縮的部分。記憶體器件可包括與記憶體之壓縮的部分分開之記憶體之未壓縮部分。虛擬記憶體中之記憶體位址可映射至記憶體之壓縮部分或未壓 縮部分。
在一項實施例中,可藉由自記憶體之未壓縮部分所配置之額外記憶體來更新記憶體之壓縮的部分。配置於記憶體之未壓縮部分中之記憶體區域可經壓縮至記憶體之壓縮的部分中以允許該記憶體區域可用於在記憶體器件之記憶體之未壓縮部分中的未來配置。經更新之記憶體之壓縮的部分可能能夠儲存壓縮的記憶體區域。供配置於記憶體之未壓縮部分中之可用記憶體的大小可由於記憶體區域之壓縮而增大。
根據一項實施例,壓縮的記憶體區域可(例如)回應於接收到存取壓縮的記憶體區域中之資料的請求而經解壓縮回至記憶體器件中之未壓縮部分。處理程序200之處理邏輯可判定所請求之資料當前是否可用於記憶體之未壓縮部分中。若所請求之資料當前不可用於記憶體之未壓縮部分中,則該請求可造成頁面錯誤事件以觸發關於記憶體之壓縮的部分之更新(例如,不壓縮該壓縮的記憶體區段)。
記憶體之壓縮的部分可儲存於多個(或至少一個)壓縮的記憶體單元中。每一壓縮的記憶體單元可對應於自記憶體之未壓縮部分壓縮的分開之記憶體區域。分開之壓縮的記憶體單元可並未連續地(例如,基於記憶體器件內之實體配置)儲存於記憶體之壓縮的部分中。在一項實施例中,記憶體之壓縮的部分可經密集化以使此等分開之壓縮的記憶體單元經連續地儲存於記憶體之壓縮的部分中。
在記憶體器件之未壓縮部分中,記憶體區域可對應於固定大小之記憶體單元,諸如,記憶體之頁面。壓縮的記憶體單元之大小可取決於(例如)經壓縮至壓縮的記憶體單元中之原始資料的量或壓縮性質而變化。在一項實施例中,壓縮的記憶體區域可對應於記憶體之壓縮的部分中之一特定壓縮的記憶體單元。
在一項實施例中,一特定壓縮的記憶體單元可儲存於記憶體之 壓縮的部分中之鄰近壓縮的記憶體單元間。當自記憶體之壓縮的部分移除該特定壓縮的記憶體單元時,該等鄰近之記憶體單元可經移動以連續地相互緊靠地儲存(例如,經由密集化操作)。可經由(例如)解壓縮操作、交換操作或其他適用之記憶體管理操作而自記憶體之壓縮的部分移除該特定壓縮的記憶體單元。
在一些實施例中,記憶體之壓縮的部分可包括記憶體槽之多個集區。每一壓縮的記憶體單元可儲存於一或多個連續(根據實體記憶體配置)記憶體槽中。每一集區可對應於壓縮的記憶體單元之分開的分割區。在一項實施例中,每一集區可與一分開之執行緒(例如,屬於在使用該記憶體之系統中執行的處理程序)相關聯。可針對每一集區而經由其相關聯之執行緒來分開地且非同步地執行對記憶體之壓縮的部分之密集化操作。
記憶體器件可與一分開之儲存器件(諸如,硬碟、快閃記憶體或其他適用之非揮發性儲存器件)耦接。壓縮的記憶體單元中之一或多者可自記憶體之壓縮的部分而被換出至分開之儲存器件(例如,以更新記憶體之壓縮的部分)。結果,記憶體之壓縮的部分之大小可減小以增大記憶體之未壓縮部分之大小。替代地,若用於壓縮的記憶體區域之壓縮的記憶體單元中的資料在記憶體之壓縮的部分中當前不可用(當請求時),則該等壓縮的記憶體單元可自分開之儲存器件交換至記憶體之壓縮的部分。
處理程序200之處理邏輯可經由具有資料傳送緩衝器之介面(諸如,具有某一位元大小之匯流排緩衝器)而在儲存器件(例如,交換器件)與記憶體器件之間交換壓縮的記憶體單元。在一項實施例中,處理程序200之處理邏輯可將記憶體之壓縮的部分密集化以允許資料傳送緩衝器有效率地一起載運多個壓縮的記憶體單元(例如,在每一硬體資料異動中具有實質上滿容量)。
在一項實施例中,記憶體區域可對應於記憶體器件中之記憶體頁面。記憶體之未壓縮部分可包括記憶體頁面之工作集以支援當前有效之資料處理程序。記憶體頁面之工作集可(例如)回應於臨時暫停系統操作之休眠請求而經壓縮至記憶體之壓縮的部分中之一系列壓縮的記憶體單元中。該系列壓縮的記憶體單元可接著經換出至與記憶體器件耦接之儲存器件以供未來使用。
處理程序200之處理邏輯可選擇將至少一個壓縮的記憶體單元換出記憶體之壓縮的部分。該選擇可基於壓縮的記憶體單元之使用性質。該等使用性質可指示何時存取資料以用於壓縮的記憶體單元。舉例而言,該等使用性質可包括與壓縮的記憶體單元相關聯之時間戳或其他中繼資料,其用以指示壓縮的記憶體單元經存取、建立、壓縮、換入或使用等之時間。
在一項實施例中,處理程序200之處理邏輯可換出最不可能被用於或請求用於工作集(諸如,經由LRU策略)之壓縮的記憶體單元。處理程序200之處理邏輯可基於相關聯之使用性質來啟發式地判定壓縮的記憶體單元將在近期被存取的可能性。在一項實施例中,壓縮的記憶體單元可按次序線性地儲存於記憶體之壓縮的部分中。該次序可對應於與壓縮的記憶體單元相關聯之使用性質(例如,存取時間戳)。
記憶體之壓縮的部分可包括一或多個記憶體區段。每一記憶體區段可對應於壓縮的記憶體單元中之一或多者之陣列。處理程序200之處理邏輯可在一特定記憶體區段內移動或滑動一或多個壓縮的記憶體單元以用於執行密集化操作,以允許多個壓縮的記憶體單元儲存於該特定記憶體區段內之鄰接之記憶體空間中。
在一項實施例中,每一記憶體區段可具有記憶體容量及/或使用率。使用率可指示已使用多少記憶體容量來儲存對應之壓縮的記憶體單元陣列。處理程序200之處理邏輯可執行密集化操作以跨越記憶體 區段移動壓縮的記憶體單元中之一或多者,以增加記憶體區段中之至少一者的使用率。舉例而言,為60%滿之記憶體區段可在密集化操作之後變為99%滿。
圖3為說明交換用於虛擬記憶體之壓縮的記憶體頁面之處理程序之一項實施例的流程圖。舉例而言,可由圖1之系統100之一些組件來執行處理程序300。在區塊301處,處理程序300之處理邏輯可提供基於記憶體器件之虛擬記憶體。處理程序300之處理邏輯可將記憶體器件動態地分割成記憶體之未壓縮部分(或層)及記憶體之壓縮的部分(或層)。記憶體空間之工作集可儲存於記憶體之未壓縮部分中,該工作集用以藉由耦接至記憶體器件之一或多個處理器來執行資料處理任務。
在區塊303處,處理程序300之處理邏輯可將記憶體之未壓縮部分之一或多個記憶體頁面壓縮至記憶體之壓縮的部分中之一或多個不同大小之壓縮的記憶體單元中。壓縮可增大記憶體之未壓縮部分中之可用記憶體空間。
在區塊305處,處理程序300之處理邏輯可(例如)回應於由於對壓縮的記憶體單元中之一特定者中之資料之存取請求的頁面錯誤而將該特定壓縮的記憶體單元自記憶體之壓縮的部分解壓縮至記憶體之未壓縮部分。
在區塊307處,處理程序300之處理邏輯可將至少一個不同大小之壓縮的記憶體單元自記憶體之壓縮的部分換出至大容量儲存器件以增大記憶體之未壓縮部分中之可用記憶體空間,(例如)以適應對記憶體之未壓縮部分中之工作集的額外配置要求。
圖4為說明交換用於虛擬記憶體之壓縮的記憶體之密集的區段之處理程序之一項實施例的流程圖。舉例而言,可由圖1之系統100之一些組件來執行處理程序400。在區塊401處,處理程序400之處理邏輯 可將記憶體器件之未壓縮部分之一或多個記憶體頁面壓縮至記憶體器件之壓縮部分中的一或多個不同大小之壓縮的記憶體單元中。記憶體器件可與大容量儲存器件耦接。
在區塊403處,處理程序400之處理邏輯可將不同大小之壓縮的記憶體單元密集化至記憶體器件之壓縮部分中的區段或其他適用之日誌結構資料中。
回應於接收到對壓縮的記憶體單元中之一者中之壓縮的資料之存取請求,在區塊405處,處理程序400之處理邏輯可將一或多個壓縮的記憶體單元(例如)自壓縮的部分中之區段解壓縮至記憶體器件之未壓縮部分。
在區塊407處,處理程序400之處理邏輯可將壓縮的記憶體單元之區段換出至大容量儲存器件以增加記憶體器件中之可用記憶體空間。
圖5展示資料處理系統(諸如,電腦系統)之一項實例,該資料處理系統可供本發明之一項實施例使用。舉例而言,可將圖1之系統1實施為圖5中所示之系統之一部分。應注意,雖然圖5說明電腦系統之各種組件,但其並不意欲表示互連該等組件之任何特定架構或方式,因為此等細節與本發明無密切關係。亦應瞭解,具有更少組件或可能更多組件之網路電腦及其他資料處理系統亦可供本發明使用。
如圖5中所示,電腦系統500(其為資料處理系統之一種形式)包括匯流排503,該匯流排503耦接至微處理器505、ROM(唯讀記憶體)507及揮發性RAM 509及非揮發性記憶體511。微處理器505可自記憶體507、509、511擷取指令並執行該等指令以執行上文所描述之操作。匯流排503將此等各種組件互連在一起且亦將此等組件505、507、509及511互連至顯示控制器及顯示器件513且互連至諸如輸入/輸出(I/O)器件之周邊器件,該等I/O器件可為滑鼠、鍵盤、數據機、 網路介面、印表機及此項技術中熟知之其他器件。通常,輸入/輸出器件515經由輸入/輸出控制器517而耦接至系統。揮發性RAM(隨機存取記憶體)509通常實施為不斷地需要電力以便再新或維持記憶體中之資料的動態RAM(DRAM)。
大容量儲存器511通常為磁性硬碟機或磁性光碟機或光碟機或DVD RAM或快閃記憶體或甚至在自系統移除電力之後仍維持資料(例如,大量資料)的其他類型之記憶體系統。通常,大容量儲存器511將亦為隨機存取記憶體(雖然此並非為必需的)。雖然圖5將大容量儲存器511展示為直接耦接至資料處理系統中之組件之其餘部分的本端器件,但應瞭解,本發明可利用距系統遠之非揮發性記憶體,諸如,經由網路介面(諸如,數據機或乙太網路介面或無線網路連接介面)而耦接至資料處理系統之網路儲存器件。匯流排503可包括經由如此項技術中熟知之各種橋接器、控制器及/或配接器而彼此連接之一或多個匯流排。
可藉由諸如專用邏輯電路之邏輯電路或藉由微控制器或執行程式碼指令之其他形式之處理核心來實施上文所描述之內容之部分。因此,可藉由程式碼(諸如,機器可執行指令,該等機器可執行指令使執行此等指令之機器執行某些功能)來執行由上文之論述所教示的處理程序。在此上下文中,「機器」可為:將中間形式(或「抽象」)指令轉換為處理器特定指令(例如,抽象執行環境,諸如「虛擬機器」(例如,Java虛擬機器)、解譯程式、公用語言執行時間、高階語言虛擬機器等)的機器;及/或安置於經設計以執行指令之半導體晶片(例如,藉由電晶體所實施之「邏輯電路」)上的電子電路(諸如,通用處理器及/或專用處理器)。由上文之論述所教示之處理程序亦可在不執行程式碼的情況下由(在機器之替代例中或與機器相組合)經設計以執行該等處理程序(或其一部分)之電子電路來執行。
製造物件可用以儲存程式碼。儲存程式碼之製造物件可體現為(但不限於)一或多個記憶體(例如,一或多個快閃記憶體、隨機存取記憶體(靜態、動態或其他))、光碟、CD-ROM、DVD ROM、EPROM、EEPROM、磁卡或光卡或適合於儲存電子指令之其他類型之機器可讀媒體。程式碼亦可藉由體現於傳播媒體中之資料信號而自遠端電腦(例如,伺服器)下載至請求電腦(例如,用戶端)(例如,經由通信鏈路(例如,網路連接))。
依據對電腦記憶體內之資料位元進行之操作的演算法及符號表示而呈現了前述詳細描述。此等演算法描述及表示為熟習此項技術者在資料處理技術中使用以向其他熟習此項技術者最有效率地傳達其工作之要點的手段。在此且大體而言設想演算法為導致一所要的結果之操作之自相一致序列。該等操作為需要物理量之實體操縱的操作。通常(但未必),此等量呈能夠儲存、傳送、組合、比較及以其他方式操縱的電信號或磁信號之形式。已證明將此等信號稱作位元、值、元素、符號、字元、項、數字或類似者時常(主要為了普通用途之原因)為便利的。
然而,應記住,所有此等及類似術語應與適當物理量相關聯且僅為應用於此等量之便利標記。除非另有如自以上討論中顯而易見之明確聲明,否則應瞭解,在整篇描述中,利用諸如「處理」或「運算」或「計算」或「判定」或「顯示」或類似者之術語的論述指電腦系統或類似電子運算器件之動作及過程,該電腦系統或類似電子運算器件操縱表示為電腦系統之暫存器及記憶體內之物理(電子)量且將其變換為類似地表示為電腦系統記憶體或暫存器或其他此種資訊儲存、傳輸或顯示器件內之物理量的其他資料。
本發明亦係關於一種用於執行本文中所描述之操作的裝置。此裝置可經特殊建構以用於達成所需目的,或其可包含藉由儲存於電腦 中之電腦程式而被選擇性地啟動或重組態之通用電腦。此電腦程式可儲存於電腦可讀儲存媒體中,諸如(但不限於),任一類型之碟片,包括軟性磁碟、光碟、CD-ROM及磁光碟、唯讀記憶體(ROM)、RAM、EPROM、EEPROM、磁卡或光卡或適合於儲存電子指令的任一類型之媒體,且該等媒體中之每一者耦接至一電腦系統匯流排。
本文中所呈現之處理程序及顯示器並不固有地與任何特定電腦或其他裝置相關聯。各種通用系統可供根據本文中之教示的程式使用,或其可證明便於建構較專用裝置來執行所描述之操作。用於多種此等系統之所需結構將自以下描述而為明顯的。另外,並未參考任何特定程式設計語言來描述本發明。應瞭解,多種程式設計語言可用以實施如本文中所描述的本發明之教示。
以上論述僅僅描述本發明之一些例示性實施例。熟習此項技術者將容易自此論述、隨附圖式及申請專利範圍認識到,可在不脫離本發明之精神及範疇的情況下進行各種修改。
200‧‧‧處理程序

Claims (22)

  1. 一種機器可讀非暫時性儲存媒體,其具有儲存於其中之指令,該等指令在由一電腦執行時使該電腦執行包含以下之一方法:動態地更新用於一虛擬記憶體之一記憶體器件中的一記憶體之壓縮的部分,該記憶體器件包括與該記憶體之壓縮的部分分開之一記憶體之未壓縮部分,該虛擬記憶體能夠將一記憶體位址映射至該記憶體之壓縮的部分;將配置於該記憶體之未壓縮部分中之一記憶體區域壓縮至該記憶體之壓縮的部分中,其中該記憶體區域變得可用於該記憶體器件中之未來配置,其中該更新之壓縮的部分能夠儲存該壓縮的記憶體區域;及回應於存取該壓縮的記憶體區域中之資料的一請求,將該壓縮的記憶體區域解壓縮回至該記憶體器件中之該未壓縮部分。
  2. 如請求項1之媒體,其中該請求引起一頁面錯誤,該頁面錯誤指示該資料不可用於該記憶體之未壓縮部分中。
  3. 如請求項1之媒體,其中該更新包含:將來自該記憶體之未壓縮部分之額外記憶體配置用於該記憶體之壓縮的部分,其中供配置於該記憶體之未壓縮部分中的可用記憶體之大小由於該記憶體區域之該壓縮而增大。
  4. 如請求項1之媒體,其中該記憶體之壓縮的部分儲存複數個壓縮的記憶體單元,每一壓縮的記憶體單元對應於自該記憶體之未壓縮部分而壓縮之一分開的記憶體區域,其中該等壓縮的記憶體單元中之至少兩者未連續地儲存於該記憶體之壓縮的部分中,進一步包含:將該記憶體之壓縮的部分密集化,其中該密集化使該等壓縮的記憶體單元中之該至少兩者連續地儲存於該記憶體之壓縮的部分中。
  5. 如請求項4之媒體,其中該壓縮的記憶體區域對應於該記憶體之壓縮的部分中之一特定壓縮的記憶體單元,其中該特定壓縮的記憶體單元儲存於該至少兩個壓縮的記憶體單元中間,其中該解壓縮自該記憶體之壓縮的部分移除該特定壓縮的記憶體單元以允許該等壓縮的記憶體單元中之該至少兩者得以連續地儲存。
  6. 如請求項4之媒體,其中該記憶體器件與一分開之儲存器件耦接,其中該更新包含:將該等壓縮的記憶體單元中之一或多者自該記憶體之壓縮的部分換出至該分開之儲存器件,其中該換出引起該記憶體之壓縮的部分之大小的一減小以增大該記憶體之未壓縮部分之大小。
  7. 如請求項6之媒體,其進一步包含:判定針對該請求之該壓縮的記憶體區域之該資料當前是否可用於該記憶體之壓縮的部分中,其中若該壓縮的記憶體區域之該資料當前可用於該記憶體之壓縮的部分中,則該壓縮的記憶體區域經解壓縮。
  8. 如請求項7之媒體,其另外包含:若該壓縮之記憶體區域之該資料當前不可用於該記憶體之壓縮的部分中,則將該壓縮的記憶體區域自該分開之儲存器件換入至該記憶體之壓縮的部分。
  9. 如請求項6之媒體,其中該等壓縮的記憶體單元中之該一或多者中之一特定者儲存於該至少兩個壓縮的記憶體單元中間,其中該換出自該記憶體之壓縮的部分移除該特定壓縮的記憶體單元以允許該等壓縮的記憶體單元中之該至少兩者得以連續地儲存。
  10. 如請求項6之媒體,其中該換出包含:選擇該等壓縮的記憶體單元中之該一或多者用於該交換且其 中該選擇係基於與該等壓縮的記憶體單元相關聯之使用性質。
  11. 如請求項10之媒體,其中該記憶體區域對應於該記憶體器件中之一固定大小之一記憶體單元,其中該等壓縮的記憶體單元具有不同大小,且其中該等壓縮的記憶體單元以一次序線性地儲存於該記憶體之壓縮的部分中。
  12. 如請求項11之媒體,其中該等使用性質對應於與該等壓縮的記憶體單元相關聯之該線性次序。
  13. 如請求項12之媒體,其中使用性質指示存取資料以用於該等壓縮的記憶體單元之時間,且其中根據用於該選擇之該線性次序,最近很少使用所選之該等壓縮的記憶體單元中之該一或多者。
  14. 如請求項11之媒體,其中該記憶體器件經由具有一資料傳送緩衝器之一介面與該分開之儲存器件耦接,其中該交換係基於經由該資料傳送緩衝器在該介面上之資料傳送,且其中該密集化允許該資料傳送緩衝器一起載運複數個該等壓縮的記憶體單元。
  15. 如請求項11之媒體,其中該記憶體之壓縮的部分包括一或多個記憶體區段,每一記憶體區段對應於該等壓縮的記憶體單元中之一或多者之一陣列,該等記憶體區段中之一者之一特定陣列包括兩個或兩個以上壓縮的記憶體單元,該密集化包含:在該特定記憶體區段內移動該等壓縮的記憶體單元中之至少一者使得該兩個或兩個以上壓縮的記憶體單元儲存於該特定記憶體區段內之鄰接記憶體空間中。
  16. 如請求項15之媒體,其中每一記憶體區段具有一記憶體容量,每一記憶體區段具有一使用率,該使用率指示該記憶體容量有多少已被用以儲存壓縮的記憶體單元之對應的陣列,該密集化進一步包含:跨越該等記憶體區段移動該等壓縮的記憶體單元中之一或多者,其中該等記憶體區段中之至少一者之對應的使用率由於該 等壓縮的記憶體單元中之該一或多者之該移動而增加。
  17. 如請求項4之媒體,其中該記憶體之壓縮的部分包括記憶體槽之多個集區,每一壓縮的記憶體單元儲存於該記憶體槽中之一或多個連續者中,每一集區對應於該等壓縮的記憶體單元之一分開的分割區,每一集區與一單獨執行緒相關聯且其中該密集化係針對每一集區而經由相關聯之執行緒分開地且非同步地執行。
  18. 如請求項6之媒體,其中該記憶體區域對應於該記憶體器件中之一記憶體頁面,其中該記憶體之未壓縮部分包括記憶體頁面之一工作集以支援當前作用中資料處理程序,其進一步包含:回應於一休眠請求,將記憶體頁面之該工作集壓縮至該記憶體之壓縮的部分中之一系列壓縮的記憶體單元;及將該系列壓縮的記憶體單元換出至該儲存器件。
  19. 一種機器可讀非暫時性儲存媒體,其具有儲存於其中之指令,該等指令在由一電腦執行時使該電腦執行包含以下之一方法:提供基於一記憶體器件之一虛擬記憶體,該記憶體器件動態地分割成一記憶體之未壓縮部分及一記憶體之壓縮的部分,該記憶體之未壓縮部分儲存經由耦接至該記憶體器件之一處理器而處理的工作資料;將該記憶體之未壓縮部分之一或多個記憶體頁面壓縮至該記憶體之壓縮的部分中之一或多個不同大小之壓縮的記憶體單元中,其中該壓縮增大該記憶體之未壓縮部分中之可用記憶體空間;回應於對該等壓縮的記憶體單元中之一者中之資料之一存取請求的一頁面錯誤,將該一個壓縮的記憶體單元自該記憶體之壓縮的部分解壓縮至該記憶未壓縮部分;及將該等不同大小之壓縮的記憶體單元中之至少一者自該記憶體之壓縮的部分換出至大容量儲存器件,其中該換出增大該記 憶體之未壓縮部分中之可用記憶體空間。
  20. 一種機器可讀非暫時性儲存媒體,其具有儲存於其中之指令,該等指令在由一電腦執行時使該電腦執行包含以下之方法:將一記憶體器件之一未壓縮部分之一或多個記憶體頁面壓縮至該記憶體器件之一壓縮部分中的一或多個不同大小之壓縮的記憶體單元中,該記憶體器件與一大容量儲存器件耦接;將該等不同大小之壓縮的記憶體單元密集化至該記憶體器件之該壓縮部分中之一區段中;回應於對該等壓縮的記憶體單元中之一者的存取請求,將該一個壓縮的記憶體單元自該壓縮的部分解壓縮至該記憶體器件之該未壓縮部分;及將該等壓縮的記憶體單元之該區段換出至該大容量儲存器件以增大該記憶體器件中之可用記憶體空間。
  21. 一種電腦實施方法,其包含:動態地更新一記憶體器件中之一記憶體之壓縮的部分,該記憶體器件包括一記憶體之未壓縮部分,該記憶體之未壓縮部分能夠支援用於至少一個處理器之資料處理;將配置於該記憶體之未壓縮部分中之一記憶體區域壓縮至該記憶體之壓縮的部分中,其中該記憶體區域變得可用於該記憶體器件中之未來配置,其中該更新之壓縮部分能夠儲存該壓縮的記憶體區域;及回應於存取該壓縮的記憶體區域中之資料的一請求,將該壓縮的記憶體區域解壓縮回至該記憶體器件中之該未壓縮部分。
  22. 一種電腦系統,其包含:包括可執行指令之一記憶體,該記憶體動態地分割成一壓縮的部分及一未壓縮部分;一大容量儲存器件;一處理器,其耦接至該記憶體及該大容量儲存器件,該處理 器用以執行來自該記憶體之該等可執行指令,該處理器經組態以:將配置於該記憶體之未壓縮部分中之一記憶體區域壓縮至該記憶體之壓縮的部分中,其中該記憶體區域變得可用於該記憶體器件中之未來配置,其中該更新之壓縮部分能夠儲存該壓縮的記憶體區域;及回應於存取該壓縮的記憶體區域中之資料的一請求,將該壓縮的記憶體區域解壓縮回至該記憶體器件中之該未壓縮部分;及回應於偵測到該記憶體器件中之一高記憶體使用,將該壓縮的記憶體區域換出至該儲存器件以增大該記憶體器件中之可用記憶體空間。
TW102145429A 2012-12-28 2013-12-10 用於壓縮的及密集的虛擬記憶體之方法及裝置 TWI494764B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/730,211 US10565099B2 (en) 2012-12-28 2012-12-28 Methods and apparatus for compressed and compacted virtual memory

Publications (2)

Publication Number Publication Date
TW201432456A true TW201432456A (zh) 2014-08-16
TWI494764B TWI494764B (zh) 2015-08-01

Family

ID=49765689

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102145429A TWI494764B (zh) 2012-12-28 2013-12-10 用於壓縮的及密集的虛擬記憶體之方法及裝置

Country Status (6)

Country Link
US (2) US10565099B2 (zh)
KR (1) KR101739213B1 (zh)
CN (1) CN105027093B (zh)
DE (1) DE112013006298T5 (zh)
TW (1) TWI494764B (zh)
WO (1) WO2014105323A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI656443B (zh) * 2016-02-23 2019-04-11 谷歌有限責任公司 用於管理硬體協助資料壓縮之記憶體片段儲存之方法及裝置
TWI829394B (zh) * 2022-10-17 2024-01-11 大陸商星宸科技股份有限公司 電子裝置及其操作方法

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory
US9575982B1 (en) * 2013-04-29 2017-02-21 Amazon Technologies, Inc. Size targeted database I/O compression
US10102148B2 (en) * 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
TWI493446B (zh) * 2013-09-23 2015-07-21 Mstar Semiconductor Inc 記憶體管理方法及記憶體管理裝置
US9652373B2 (en) * 2013-12-16 2017-05-16 International Business Machines Corporation Adaptive statistics for a linear address space
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
US9940167B2 (en) * 2014-05-20 2018-04-10 Red Hat Israel, Ltd. Identifying memory devices for swapping virtual machine memory pages
US10459886B2 (en) 2014-08-06 2019-10-29 Quest Software Inc. Client-side deduplication with local chunk caching
US9917894B2 (en) 2014-08-06 2018-03-13 Quest Software Inc. Accelerating transfer protocols
US9990352B2 (en) * 2014-08-06 2018-06-05 Quest Software Inc. Chunk compression in a deduplication aware client environment
US9984093B2 (en) 2014-08-06 2018-05-29 Quest Software Inc. Technique selection in a deduplication aware client environment
KR20160070512A (ko) * 2014-12-10 2016-06-20 삼성전자주식회사 반도체 장치 및 그 동작 방법
US9354812B1 (en) * 2015-02-12 2016-05-31 Qualcomm Incorporated Dynamic memory utilization in a system on a chip
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US9892053B2 (en) * 2015-03-24 2018-02-13 Intel Corporation Compaction for memory hierarchies
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US9720617B2 (en) * 2015-06-02 2017-08-01 Apple Inc. System and method for compaction of compressed and uncompressed virtual memory
KR101727508B1 (ko) 2015-07-28 2017-04-18 서울과학기술대학교 산학협력단 하둡 기반 하드웨어 압축 고속화 장치 및 방법
US10606501B2 (en) 2015-12-04 2020-03-31 International Business Machines Corporation Management of paging in compressed storage
US10942844B2 (en) 2016-06-10 2021-03-09 Apple Inc. Reserved memory in memory management system
US20170371797A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Pre-fetch mechanism for compressed memory lines in a processor-based system
US10635337B2 (en) 2016-06-27 2020-04-28 Intel Corporation Dynamic configuration of compressed virtual memory
US10496292B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10649889B2 (en) 2017-06-04 2020-05-12 Apple Inc. Method and apparatus for managing kernel memory of data processing systems
US10331558B2 (en) 2017-07-28 2019-06-25 Apple Inc. Systems and methods for performing memory compression
CN107391708B (zh) * 2017-07-28 2020-09-22 苏州浪潮智能科技有限公司 一种存储系统中性能统计文件存储的方法及装置
US10558364B2 (en) 2017-10-16 2020-02-11 Alteryx, Inc. Memory allocation in a data analytics system
JP6608468B2 (ja) * 2018-01-26 2019-11-20 株式会社日立製作所 ストレージ装置及びその制御方法
CN112585589A (zh) 2018-08-09 2021-03-30 华为技术有限公司 将压缩数据块和未压缩数据块压紧的设备及方法
SE543649C2 (en) * 2018-11-14 2021-05-18 Zeropoint Tech Ab Managing free space in a compressed memory system
US11048419B2 (en) * 2019-01-30 2021-06-29 EMC IP Holding Company LLC Adaptively over-allocating storage space for compressed data
EP3994582A4 (en) * 2019-07-02 2023-01-18 Microsoft Technology Licensing, LLC HARDWARE MEMORY COMPRESSION
CN113138941A (zh) 2020-01-20 2021-07-20 华为技术有限公司 内存交换的方法、装置
US11372547B2 (en) 2020-02-13 2022-06-28 International Business Machines Corporation Compression of aging data during compaction
CN113590500A (zh) * 2020-04-30 2021-11-02 华为技术有限公司 一种内存管理方法及终端设备
CN112199303B (zh) * 2020-12-03 2021-03-16 北京紫光青藤微系统有限公司 存储空间碎片化的处理方法和装置
US11995104B2 (en) * 2022-05-27 2024-05-28 Sap Se Linear interval-based dynamic range partitioning

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
AU1447295A (en) * 1993-12-30 1995-08-01 Connectix Corporation Virtual memory management system and method using data compression
JPH07334310A (ja) * 1994-06-06 1995-12-22 Toshiba Corp ディスク装置及び同装置における読み出しデータのバッファ記憶制御方法
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5721823A (en) * 1995-09-29 1998-02-24 Hewlett-Packard Co. Digital layout method suitable for near video on demand system
US6040953A (en) * 1997-03-25 2000-03-21 International Business Machines Corporation Adaptive data recovery method and means tuned to thermal asperities in a cyclic, multitracked magnetic storage subsystem
US6148368A (en) * 1997-07-31 2000-11-14 Lsi Logic Corporation Method for accelerating disk array write operations using segmented cache memory and data logging
JP3444346B2 (ja) * 1999-01-04 2003-09-08 日本電気株式会社 仮想メモリ管理方式
US6341325B2 (en) * 1999-01-12 2002-01-22 International Business Machines Corporation Method and apparatus for addressing main memory contents including a directory structure in a computer system
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6886085B1 (en) * 2000-04-19 2005-04-26 International Business Machines Corporation Method and apparatus for efficient virtual memory management
US6912679B1 (en) * 2000-04-29 2005-06-28 Hewlett-Packard Development Company, L.P. System and method for electrical data link testing
US6883037B2 (en) 2001-03-21 2005-04-19 Microsoft Corporation Fast data decoder that operates with reduced output buffer bounds checking
US6516397B2 (en) * 2001-04-09 2003-02-04 Hewlett-Packard Company Virtual memory system utilizing data compression implemented through a device
US6775751B2 (en) * 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US6968424B1 (en) * 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
US7958289B2 (en) 2002-08-08 2011-06-07 International Business Machines Corporation Method and system for storing memory compressed data onto memory compressed disks
US20040109463A1 (en) * 2002-12-05 2004-06-10 Alcatel Canada Inc. Efficient data transmission method
JP2005157444A (ja) * 2003-11-20 2005-06-16 Toshiba Corp Fifo制御回路
US7302543B2 (en) * 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
US7587572B1 (en) 2004-08-31 2009-09-08 Sun Microsystems, Inc. Method and system for managing process memory configured in resizable uncompressed and compressed regions
KR100706242B1 (ko) * 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
JP5071798B2 (ja) * 2005-03-31 2012-11-14 日本電気株式会社 計算機システム,メモリ管理方法,およびそのプログラム
US7533228B1 (en) 2005-05-27 2009-05-12 Sun Microsystems, Inc. Two-pass sliding compaction
US7412466B1 (en) 2005-05-31 2008-08-12 Sun Microsystems, Inc. Offset-based forward address calculation in a sliding-compaction garbage collector
US20070005911A1 (en) * 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Operating System-Based Memory Compression for Embedded Systems
US8560760B2 (en) * 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
US20080189558A1 (en) * 2007-02-01 2008-08-07 Sun Microsystems, Inc. System and Method for Secure Data Storage
US7895242B2 (en) 2007-10-31 2011-02-22 Microsoft Corporation Compressed storage management
KR101420798B1 (ko) * 2007-11-23 2014-07-17 삼성전자주식회사 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말
JP5211751B2 (ja) * 2008-02-26 2013-06-12 富士通株式会社 計算機、ダンププログラムおよびダンプ方法
US9098625B2 (en) * 2008-02-29 2015-08-04 International Business Machines Corporation Viral trace
US7948502B2 (en) * 2008-05-13 2011-05-24 Mitac International Corp. Method of displaying picture having location data and apparatus thereof
US20090327621A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager
US20100036858A1 (en) * 2008-08-06 2010-02-11 Microsoft Corporation Meta file system - transparently managing storage using multiple file systems
US9253496B2 (en) * 2008-12-12 2016-02-02 Qualcomm Incorporated Intelligent decoded picture buffering
US8145833B1 (en) 2009-10-30 2012-03-27 CSR Technology Holdings Inc. Compression solution for embedded devices and systems
US8458431B2 (en) 2009-11-03 2013-06-04 International Business Machines Corporation Expanding memory size
CN102147768B (zh) * 2010-05-21 2014-03-05 苏州捷泰科信息技术有限公司 存储器、固态缓存系统及缓存数据处理方法
US8484405B2 (en) * 2010-07-13 2013-07-09 Vmware, Inc. Memory compression policies
US9141526B2 (en) * 2010-09-16 2015-09-22 International Business Machines Corporation Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit
US9652568B1 (en) * 2011-11-14 2017-05-16 EMC IP Holding Company LLC Method, apparatus, and computer program product for design and selection of an I/O subsystem of a supercomputer
US8954556B2 (en) * 2011-12-01 2015-02-10 Verizon Patent And Licensing Inc. Utility-based model for caching programs in a content delivery network
CN104094239A (zh) * 2012-01-29 2014-10-08 汤姆逊许可公司 有限随机存取存储器/闪存设备架构的闪存压缩指令缓存方法
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI656443B (zh) * 2016-02-23 2019-04-11 谷歌有限責任公司 用於管理硬體協助資料壓縮之記憶體片段儲存之方法及裝置
US10474385B2 (en) 2016-02-23 2019-11-12 Google Llc Managing memory fragmentation in hardware-assisted data compression
TWI829394B (zh) * 2022-10-17 2024-01-11 大陸商星宸科技股份有限公司 電子裝置及其操作方法

Also Published As

Publication number Publication date
WO2014105323A1 (en) 2014-07-03
KR101739213B1 (ko) 2017-06-08
CN105027093A (zh) 2015-11-04
US20200073791A1 (en) 2020-03-05
US10970203B2 (en) 2021-04-06
US20140189281A1 (en) 2014-07-03
KR20150090211A (ko) 2015-08-05
TWI494764B (zh) 2015-08-01
CN105027093B (zh) 2020-02-21
US10565099B2 (en) 2020-02-18
DE112013006298T5 (de) 2015-09-17

Similar Documents

Publication Publication Date Title
TWI494764B (zh) 用於壓縮的及密集的虛擬記憶體之方法及裝置
Mittal et al. A survey of architectural approaches for data compression in cache and main memory systems
KR101767359B1 (ko) 다이렉트 액세스를 갖는 다중-레벨 메모리
US10282292B2 (en) Cluster-based migration in a multi-level memory hierarchy
CN103019962B (zh) 数据缓存处理方法、装置以及系统
JP4461187B1 (ja) 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
JP4711269B2 (ja) メモリ電力制御方法及びメモリ電力制御プログラム
US10310984B2 (en) Storage apparatus and storage control method
CN111796765B (zh) 优化数据存储系统性能的方法
US10754785B2 (en) Checkpointing for DRAM-less SSD
US9699254B2 (en) Computer system, cache management method, and computer
US11416403B2 (en) Method and apparatus for performing pipeline-based accessing management in storage server with aid of caching metadata with hardware pipeline module during processing object write command
WO2023020136A1 (zh) 存储系统中的数据存储方法及装置
CN111610931A (zh) 数据储存装置以及非挥发式存储器控制方法
JP6254986B2 (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
JP3785127B2 (ja) ディスクアレイ制御装置及びディスクアレイ制御装置におけるデータ書き込み方法
CN114746848B (zh) 用于存储装置的高速缓存架构
JP6007628B2 (ja) キャッシュ制御装置およびキャッシュ制御方法
KR20100131783A (ko) 데이터 저장 장치 및 데이터 액세스 요청 처리 방법
Eldstål-Ahrens et al. FlatPack: Flexible Compaction of Compressed Memory
WO2013108380A1 (ja) セグメント割当管理システム及び方法