TW201812588A - 分配連續物理記憶體空間到裝置的方法及系統 - Google Patents

分配連續物理記憶體空間到裝置的方法及系統 Download PDF

Info

Publication number
TW201812588A
TW201812588A TW106109422A TW106109422A TW201812588A TW 201812588 A TW201812588 A TW 201812588A TW 106109422 A TW106109422 A TW 106109422A TW 106109422 A TW106109422 A TW 106109422A TW 201812588 A TW201812588 A TW 201812588A
Authority
TW
Taiwan
Prior art keywords
memory
virtualized
physical memory
frames
contiguous
Prior art date
Application number
TW106109422A
Other languages
English (en)
Inventor
龔景富
邱昇譽
Original Assignee
聯發科技股份有限公司
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 聯發科技股份有限公司 filed Critical 聯發科技股份有限公司
Publication of TW201812588A publication Critical patent/TW201812588A/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

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

Abstract

一種分配連續物理記憶體空間到裝置的方,包含:將物理記憶體的一給定區域標記爲可移置(migratable)的;從一操作系統內核(kernel)接收分配記憶體給該裝置的一請求以指示在一虛擬化記憶中的一可用虛擬化頁面的一第一集合;確定將要分配給該裝置的該物理記憶體中的一連續訊框的集合,該連續訊框的集合被映射到一虛擬化頁面的一第二集合;藉由一管理程式禁能(disable)該可用虛擬化頁面的該第一集合和該虛擬化頁面的該第二集合的映射;以及在禁能該映射後,將該連續訊框的集合中的一個或多個被佔用的訊框移置出該給定區域,以允許將該連續訊框的集合分配給該裝置。

Description

分配連續物理記憶體空間到裝置的方法及系統
本發明所揭露之實施例有關於一種運算系統(computing system)中的記憶體分配(memory allocation)。
現代電腦系統通常使用記憶管理單元(memory management unit,MMU)來將虛擬地址轉換爲用於中央處理單元(CPU)的物理地址。當應用程式請求連續範圍的虛擬記憶(virtual memory)時,MMU可以將虛擬地址的範圍映射到可以配置的分散的物理記憶地址。現代的電腦系統一般包含需要在裝置地址空間(device address space)中用以操作的連續範圍記憶的多個裝置。例如,相機需要用以操作的記憶緩衝區。一些系統使用分散收集器(scatter-gatherer)或輸入輸出記憶管理單元(input-output MMU,IOMMU)來收集碎片物理記憶塊,使其成爲裝置地址空間的連續記憶塊。因此,在裝置地址空間中的大的記憶區域可供分配,而不需要在物理記憶中是連續的。
嵌入式系統的各種裝置幷不支持分散收集器以及IOMMU。因此,這些裝置需要連續的物理記憶塊來供操作。這樣的裝置的例子包含,但不限于,相機、硬件視頻解碼器和編碼器等。這些裝置中的一些需要具有大的連續物理記憶的緩衝區。例如,全高清(full high-definition)訊框的大小超過2百萬像素,這需要超過6 MB的記憶來存儲。由于記憶碎片,在系統執行一段時間後,這樣大塊的連續物理記憶塊是非常不可能可供使用的。
一些嵌入式裝置對緩衝區有額外的要求,例如,它們只能採用分配在特定位置或記憶組(memory bank)的緩衝區來操作(如果系統有一個以上的記憶組),或採用對齊到特定記憶邊界的緩衝區來操作。這額外增加了操作系統中的記憶分配算法的複雜性。
一些操作系統爲應用程式或驅動程式提供記憶分配函數,以獲得連續物理記憶區域(contiguous physical memory region)。例如,Linux®連續記憶分配器(Contiguous Memory Allocator,CMA),在操作系統內核中運行,以允許連續物理記憶塊的分配。
CMA的問題是可擴展性。多個內核子系統或多個虛擬化環境(例如,虛擬機)可以同時在系統中運行。當藉由CMA的API要求物理連續記憶區域時,CMA開始將在這個區域內的所有佔用的記憶頁移置至其他空閑存儲空間。然而,一些記憶頁面可能被鎖定或被其他程式使用,以及CMA在執行頁面移置過程時需要維護和跟踪頁面狀態。因此,在不同的子系統或虛擬機之間的高度的頁面同步可能是必要的。由于這樣一個藉由CMA執行的複雜的同步機制,當所要求的記憶區域大小增長時,CMA分配時間變得越來越低效以及不穩定。因此,CMA可能有時不能滿足某些應用的延遲要求,如視頻播放。
有鑒于此,本發明提供一種分配連續物理記憶空間到裝置的方法及系統,以解決上述問題。
依據本發明一實施方式,提供一種分配連續物理記憶空間到裝置的方法,包含:將一物理記憶的一給定區域標記爲可移置的;從一操作系統內核接收分配記憶給一裝置的一請求,該請求指示在一虛擬化記憶中的一可用虛擬化頁面的第一集合;確定將要分配給該裝置的該物理記憶中的連續訊框的一集合,該連續訊框的該集合被映射到一虛擬化頁面的第二集合;藉由一管理程式禁能該可用虛擬化頁面的第一集合和該虛擬化頁面的第二集合的一映射;以及在禁能該映射後,將該連續訊框的該集合中的一個或多個被佔用的訊框移置出該給定區域,以允許將該連續訊框的該集合分配給該裝置。
依據本發明另一實施方式,提供一種分配連續物理記憶空間到裝置的系統,包含:一個或多個處理器,承載由一管理程式管理的一個或多個虛擬機;一物理記憶;以及一個或多個裝置,耦接至該一個或多個處理器和該物理記憶;其中,該管理程式執行以下步驟:將該物理記憶的一給定區域標記爲可移置的;從一操作系統內核接收分配記憶給該裝置的一請求,該請求指示在虛擬化記憶中的一可用虛擬化頁面的第一集合;確定將要分配給該裝置的該物理記憶中的連續訊框的一集合,該連續訊框的集合被映射到一虛擬化頁面的第二集合;禁能該可用虛擬化頁面的第一集合和該虛擬化頁面的第二集合的映射;以及在禁能該映射後,將該連續訊框的該集合中的一個或多個被佔用的訊框移置出該給定區域,以允許將該連續訊框的該集合分配給該裝置。
對于已經閱讀後續由各附圖及內容所顯示的較佳實施方式的本領域的技術人員來說,本發明的各目的是明顯的。
現在,將詳細說明本發明的優選實施方式,在附圖中示出了這些實施方式的示例。雖然將結合這些優選實施方式描述本發明,但是應當理解的是,這些實施方式不旨在將本發明限于這些實施方式。相反,本發明旨在覆蓋可以包含在由所附權利要求書限定的本發明的精神和範圍內的替代形式、修改形式和等價形式。另外,在以下對本發明的具體描述中,提出多個具體的細節以提供對本發明的完整理解。然而,本領域的技術人員容易理解,沒有這些具體的細節,也可以實踐本發明。另外,沒有詳細描述已知的方法、過程、元件和電路,從而不會不必要地掩蓋本發明的各個方面。
術語“記憶”和“系統記憶”,除非另有特定說明,是指具有物理地址(PA)空間的一物理記憶。術語“虛擬化記憶(virtualized memory)”是指虛擬機(virtual machines,VMs)操作于其中的一地址空間(即,中間物理地址(intermediate physical address,IPA)空間)。術語“虛擬記憶(virtual memory)”是指程式(processes)(例如,應用程式)操作于其中的地址空間(例如,虛擬地址(virtual address,VA)空間)。另外,術語“映射”,除非另有特定說明,是指數據結構的使用,如頁面表(page table),以將一個地址空間的記憶塊與另一個地址空間相關。
本發明的實施例提供了一種記憶分配機制,其利用記憶虛擬化(memory virtualization)和兩個階段的地址轉換(address translation)。即使當請求較大的記憶大小時,分配也可很快速幷且穩定。在一實施例中,管理程式(hypervisor),也稱爲虛擬機監視器,執行來自記憶的可移置區域(migratable zone)的物理記憶的連續區域的分配。如果在連續區域中的一個或多個訊框被佔用(即,此前已經被分配),管理程式將這些被佔用的訊框移置出可移置區域,以使該連續區域可分配。如此一來,客戶操作系統(例如,VMs的操作系統)避免了在不同內核子系統間的複雜的頁面同步任務。
第1圖爲依據本發明一實施例的操作在虛擬化環境中的系統100。系統100包含一個或多個處理器110(例如,一中央處理單元(CPU)),其藉由一互連(interconnect)130耦接至一系統記憶170(例如,一動態隨機存取記憶體(DRAM)或其他易失性或非易失性隨機存取記憶體)。該系統100還包含一個或多個裝置150(也被稱爲“物理裝置”)。裝置150的例子包含,但不限于:音頻/視頻裝置、網絡接口裝置、打印機、圖形模組、攝像機、視頻解碼器、加密引擎等。在一個實施例中,該裝置150藉由一直接記憶體存取(direct memory access,DMA)引擎140耦接至該互連130。應當理解的是,爲了簡潔起見,此處省略了許多其他的系統元件。
在一個實施例中,系統100可以是一移動電腦和/或通訊裝置(例如,智慧型手機、平板電腦、筆記本電腦等)的一部分。在另一個實施例中,系統100可以是一服務器電腦的一部分。
系統100運行多個軟件模組,其中的一個例子如一虛綫橢圓160中所示的。在一個實施例中,處理器110中的一個或多個可承載(host)多個虛擬機111。每個虛擬機111運行一個客戶操作系統(OS)112;不同的虛擬機111可運行相同或不同的客戶操作系統112。客戶操作系統112也被稱爲操作系統內核。處理器110還承載一管理程式180,該管理程式180模擬該虛擬機111的底層硬件(underlying hardware)以及管理系統資源。管理程式180也可稱爲虛擬機監視器(virtual machine monitor,VMM)。在一個實施例中,管理程式180可以是在系統100上運行的主機操作系統的一部分。
在一個實施例中,直接記憶體存取引擎140爲裝置150執行直接記憶體存取事務(DMA transactions)。在一個實施例中,可分配系統記憶170的一地址範圍給每個裝置150,其指定作爲該裝置150的一DMA緩衝區的一記憶區域,以直接與給定的虛擬機111傳送數據。該DMA緩衝區包含在物理地址空間中的一連續記憶區域,其中還包含一個或多個固定大小的記憶塊(例如,每塊4K字節)。
第2圖爲依據本發明一實施例的兩階段地址轉換(two-stage address translation)的示意圖。第一階段地址轉換是在虛擬地址(virtual address,VA)空間和中間物理地址(Intermediate Physical Address,IPA)空間之間。請參照第1圖,在第1圖的虛擬機111上運行的每個程式都被分配了一個稱爲VA空間的私有地址空間。VA空間被劃分成小的塊,每個塊被稱爲頁面(page)。IPA空間也被劃分成小的塊,每個塊被稱爲IPA頁面(IPA page)。每個虛擬機111分配一組IPA頁面以作爲虛擬化記憶(virtualized memory)。依據客戶操作系統112的第一頁面表210,客戶操作系統112執行程式的VA空間和IPA空間之間的地址轉換,其中程式在客戶操作系統112上運行。第一頁面表210,也被稱爲第一級頁面表,具有多個條目,其中每個條目描述一頁面和一對應的IPA頁面之間的映射。在一個實施例中,在第一頁面表210中的一個或多個條目可以設置爲“不映射(no_map)”,這意味著任何程式都不能存取對應的頁面。在一個實施例中,客戶操作系統112可以爲不同的程式使用不同的第一頁面表210,以獨立(isolate)這些程式之間的記憶空間。
第二階段地址轉換延伸了不同的虛擬機之間的記憶獨立。依據第二頁面表220,第二階段地址轉換是在IPA空間和物理地址(physical address,PA)空間之間。第二頁面表220,也被稱爲第二級頁面表,由管理程式180管理。在一個實施例中,在第二頁面表220中的一個或多個條目可以被設置爲“不映射,”這意味著管理程式180禁止虛擬機存取IPA頁面中的一些。藉由將不同的虛擬機IPA頁面映射到PA空間的不同訊框,管理程式180實施不同虛擬機之間的記憶獨立。在一個實施例中,IPA空間和PA空間之間的地址映射是相同的映射(identical mapping);即,IPA頁面的數目與訊框的數目相同。在另一個實施例中,IPA空間和PA空間之間的地址映射是在IPA空間中的相鄰頁面映射到在PA空間中的相鄰頁面。在另一個實施例中,IPA空間和PA空間之間的地址映射是按照預定的一對一映射函數來進行的。雖然在下面的實施例中之描述和展示了相同的映射,應當理解的是,IPA空間和PA空間之間的映射幷不限于此。
第2圖的實施例展示了可移置區域250,其爲物理記憶的一連續部分,其中所有的訊框可以被移置到物理記憶的其他部分。移置是指將訊框的內容複製到記憶體中的其他部分、幷更新對該訊框的所有引用的過程。當該訊框的內容被移置後,舊的訊框被釋放以供再利用。第2圖的實施例表明,PA空間中的可移置區域250映射到IPA空間中的連續可移置區域252。在另一個實施例中,如果使用IPA空間和PA空間之間的另一種映射函數,則IPA空間中的對應的可移置區域252不需要是連續的。
第2圖也說明瞭兩級映射的一個例子,其中VA空間中的三個被佔用的頁面230映射到IPA空間中的可移置區域252(如IPA頁面 231),以及,由于相同的映射,也映射到PA空間中的可移置區域250(如訊框251)。當第1圖的裝置150中之一請求物理記憶的連續區域的分配時,管理程式180可以識別可移置區域250中的連續記憶260。假設除了三個訊框251,在連續記憶260中的所有訊框均爲空閑的,可供分配。在管理程式180可以分配連續記憶260之前,管理程式180將訊框251移置至PA空間的另一部分,例如,訊框253。然後,連續記憶260可被分配給提出請求的裝置150。
第3圖爲依據本發明一實施例的系統100的初始化程式的示意圖。請再參照第1圖所示的系統100,在系統初始化時管理程式180在客戶操作系統112之前啓動。管理程式180確定分配多少訊框給客戶操作系統112;例如,N訊框。在步驟31中,管理程式180爲客戶操作系統112初始化相同映射的第二頁面表320,以將IPA空間的地址映射到PA空間。這個IPA空間稱爲虛擬化記憶,客戶操作系統112使用幷管理該IPA空間。
在客戶操作系統112啓動後,在步驟32中,客戶操作系統112中的DMA記憶分配服務器(DMA Memory Allocation Service,DMAS)310將虛擬化記憶中的一區域標記(mark)爲可移置的,幷通知管理程式180中的頁面移置服務器(Page Migration Service,PMS)330可移置區域的位置;例如,藉由傳遞可移置區域的IPA地址。在步驟33中,PMS 330將物理記憶中對應的區域標記爲可移置區域352,其將被作爲物理記憶池,以供分配連續物理記憶(在第3圖中顯示爲虛綫矩形)。可移置區域352不是由DMAS 310保留的(reserved);在客戶操作系統112上的其他服務器和應用程式也可以使用可移置區域352。在系統初始化完成後,裝置驅動程式可以從DMAS 310請求連續物理記憶區域以作爲DMA緩衝區。
在第3圖所示的實施例中,可移置區域352的位置是依據客戶操作系統112發來的資訊來確定的。在另一個實施例中,管理程式180或其他系統軟件(如引導裝載程式(bootloader))可以産生資訊,這樣一來,可移置區域352的位置也可以確定。
第4圖爲依據本發明一實施例的連續物理記憶區域的分配過程的示意圖。在該實施例中,連續物理記憶區域用作爲DMA緩衝區;應當理解的是,連續物理記憶區域可以用於不同的目的,而不限于DMA緩衝區。在步驟41中,裝置驅動程式(Device Driver,DRV)440請求DMAS 310分配連續記憶區域以作爲DMA緩衝區,幷等待響應。該請求指定了DMA緩衝區的大小(例如,三個頁面)。在步驟42中,DMAS 310發送請求到客戶操作系統112中的記憶分配器(Memory Allocator,MEMS)450,以分配虛擬化記憶中的可用頁面。MEMS 450從其記憶池(例如,P1、P70和PN)中分配請求數量的可用頁面。在步驟43中,MEMS 450將分配的頁面回報(return)給DMAS 310。在步驟44中,DMAS 310將分配的頁面放置(place)到頁面列表(page list)中,幷發送一移置請求至管理程式180中的PMS 330,該移置請求具有請求的DMA緩衝區大小和頁面列表作爲參數(argument)。然後DMAS 310等待響應。
在步驟45中,PMS 330從其物理記憶池352選擇連續目標記憶區域(如,FN-2、FN-1和FN),這足以滿足請求的DMA緩衝區大小。PMS 330將來自DMAS 310的頁面列表放置到目標列表(destination list)中,幷將在目標記憶區域中的所有訊框增加到源列表(source list)中。在第4圖的實施例中,在每個列表的初始值是:源列表= [ FN-2,FN-1,FN ],目標列表= [ F1,F70,FN ],和不移置(no_migration)列表= [ ]。
PMS 330執行步驟45的子步驟451以準備頁面移置。在子步驟451中,藉由設置對應的條目至不映射以將第二頁面表320更新爲第二頁面表421,PMS 330移除源列表、目標列表和不移置列表中所有訊框的所有IPA至PA映射。此外,對于源列表和目標列表中的每一訊框,PMS 330從源列表和目標列表中移除訊框,然後將該移除的訊框添加到不移置列表。
在上述操作之後,源列表變爲[ FN-2,FN-1 ],目的列表變爲[ F1,F70 ]以及不移置列表變爲[ FN ]。客戶操作系統112被禁止存取源列表、目標列表和不移置列表中的訊框;更具體地說,任何存取這些訊框都會導致“頁面錯誤”幷將異常告知管理程式180。在頁面移置完成之前,PMS 330藉由禁用第二頁面表421中的這些訊框的映射,來凍結這些訊框的存取。在一個實施例中,藉由設置頁面表中的訊框條目至不映射或其他禁用映射指標,訊框的映射可以被禁能。PMS 330保持源列表、目標列表和不移置列表供後續使用,因爲當DMA緩衝區被釋放後會使用這些列表。
此時PMS 330已準備好執行頁面移置。在步驟46中,PMS 330將源列表中的訊框的內容複製到目標列表中對應的訊框(例如,複製FN-2到F1,以及複製FN-1 到F70)。移置完成之後,F1具有FN-2的內容,以及F70具有FN-1內容。
步驟46包含子步驟461,在該步驟中,PMS 330將第二頁面表421更新爲第二頁面表422,如此一來,目表列表中的訊框(例如,F1與F70)映射到源列表中的對應訊框的IPA頁面(例如,FN-2和FN-1)。該映射允許客戶操作系統 112藉由虛擬化記憶重新存取這些訊框(例如,F1與F70)。值得注意的是,在移置之後,虛擬化記憶的布局是不變的;因此,客戶操作系統112是不知道訊框的移置的。
在步驟47中,目標記憶區域現在可以使用;PMS 330標記分配的區域。PMS 330將源列表、目標列表、不移置列表和目標記憶區域打包(pack)到數據結構,幷將數據結構填加(append)到分配的記憶列表(allocated memory list)。最後,PMS 330將目標記憶區域的物理地址返回到DMAS 310。在步驟48中,DMAS 310將DMA緩衝區物理地址轉發給DRV 440。在步驟49中,在DRV 440接收到DMA緩衝區物理地址後,DRV 440可以使用該緩衝區作爲與硬件裝置的通訊信道(例如,藉由DMA引擎140)。
第5圖爲依據本發明一實施例的第4圖中分配的DMA緩衝區的釋放過程的示意圖。在步驟51中,DRV 440發送DMA緩衝區物理地址至DMAS 310。在步驟52中,DMAS 310將DMA緩衝區物理地址轉發給PMS 330。PMS 330在分配的記憶列表中搜索地址,幷在步驟53中確定(identify)目標記憶區域作爲匹配的請求地址。然後,PMS 330提取目標記憶區域的源列表、目標列表和不移置列表。在子步驟531中,PMS 330移除從第二頁面表422到源列表、目標列表和不移置列表的訊框的映射,獲取第二頁面表421。在步驟54中,PMS 330將目標列表的訊框的內容複製到源列表,幷且在步驟55中,基于源列表目標列表和不移置列表中的訊框,重新構建IPA空間和PA空間之間的映射,以恢復第二頁面表320。
在步驟56中,PMS 330向DMAS 310報告成功(report success),以及在步驟57中,DMAS 310向MEMS 450發送請求,以釋放在虛擬化記憶中的離散的訊框(discrete frame)(例如,P1、P70和PN)。在步驟58中,MEMS 450釋放這些訊框以及向DMAS 310報告成功。在步驟59中,DMAS 310向DRV 440報告成功。
值得注意的是,第4圖和第5圖中的第二頁面表320、421和422,是由管理程式180管理的相同的頁面表數據結構的不同的實例(或快照)。
上面描述了獲取和釋放連續物理記憶區域的過程。在一些實施例中,上述方法可用於安全記憶的按需分配。如今,越來越多的智慧型手機或平板電腦的應用需要在孤立的和安全的環境中執行。例如,數字版權管理(Digital Right Management,DRM)使用存取控制技術來保護高級內容(premium content)不被未授權的用戶存取。在安全環境中執行的應用程式通常有它自己的安全記憶區域,安全記憶區域被保護,幷且系統中的其他應用程式無法存取。
第6圖爲依據本發明一實施例的安全記憶區域和正常記憶區域爲相互獨立的系統600的示意圖。系統600是如第1圖所示的系統100的一個例子。該系統600包含一個或多個處理器610,其中處理器610的每一個均爲第1圖所示的處理器110的一個例子。每個處理器610可以運行在兩個執行環境:正常領域(normal world)和安全領域(secure world)。當處理器610在正常領域中執行程式時,它會發出正常匯流排事務(normal bus transaction)來存取系統記憶670或裝置寄存器。當處理器610在安全領域中執行程式時,它可以發出正常或安全匯流排事務。
處理器610是匯流排主控(bus masters)的一個例子。匯流排主控是一種裝置,它具有發出匯流排事務存取外部記憶體的能力。匯流排主控的例子包含,但不限于,處理器610、加密引擎620和視頻解碼器630。在系統600中,匯流排主控藉由通訊匯流排680進行匯流排事務。在一般情況下,每個匯流排主控提供兩種類型的裝置寄存器:正常寄存器和安全寄存器。正常寄存器可以藉由正常匯流排事務存取,而安全寄存器僅可以藉由安全匯流排事務存取。當匯流排主控從安全寄存器接收到任務時,它開始安全任務,幷可能會發出一系列的安全匯流排事務。該系統600進一步包含記憶體保護單元(Memory Protection Unit,MPU)640,其依據匯流排事務模式和記憶區域過濾表650的配置負責過濾掉非法記憶存取。由于成本的原因,濾波器表條目通常是非常有限的。在一些實施例中,記憶區域過濾表650可能只包含8到16個條目,這意味著它只能描述8到16個連續記憶區域的存取權限。
爲防止未經授權的用戶存取DRM應用的高級內容,系統610在獨立的安全記憶中放置解密視頻流和解碼訊框。隨著高級內容的密度的增加,獨立的安全記憶的大小也增加。對于具有4K視頻流分辨率的超高密度(Ultra High Density,UHD),安全記憶的大小通常大于512MB。爲了提供如此大的獨立的記憶,一個常規方法是在系統啓動時保留一記憶區域,幷藉由記憶區域過濾表650來保護該記憶區域。然而,這樣一個受保護的記憶區域不能被其他應用程式使用,這會導致記憶使用率低。
依據本發明的一個實施例,系統600可以按需分配來自正常記憶區域的連續訊框,幷使用記憶區域過濾表650來保護分配。第7圖爲依據本發明一實施例的基于第4圖所描述的方法的安全記憶區域的分配過程的示意圖。
在步驟701中,正常領域應用程式(Normal World Application,NAP)720開始解碼視頻訊框到獨立的記憶區域。正常領域應用程式720發送一請求到安全記憶分配服務器(Secure Memory Allocation Service,SMAS)730,該請求具有一請求大小(例如,三個訊框)作爲參數。
在步驟702中,SMAS 730發送一請求到DMAS 310,該請求具有一請求大小作爲參數。在步驟703中,SMAS 730經過第4圖的步驟42 ~ 47來分配包含訊框FN-2、 FN-1和FN的一連續記憶區域。該連續記憶區域可以被指定爲DMA緩衝區。
在步驟704中,DMAS 310將該DMA緩衝區的物理地址報告給SMAS 730。在步驟705中,SMAS 730將發送一保護記憶命令至一記憶保護服務器(Memory Protection Service,MPS)740,該保護記憶命令具有DMA緩衝區的物理地址作爲參數。
在步驟706中,MPS 740藉由添加一條目到記憶區域過濾表650和將區域FN-2~FN標記爲只能安全存取,來保護DMA緩衝區。步驟706包含子步驟76,在子步驟76中,MPS 740用0來清除DMA緩衝區,幷通知安全領域的記憶分配器(Memory Allocator in Secure World,SMEMS )750。SMEMS 750然後添加 DMA緩衝區到其記憶池。
在步驟707中,MPS 740向SMAS 730報告成功。在步驟708中,SMAS 730 向NAP 720報告成功。在步驟709中,NAP 720發送一解碼命令到SAP 760,以用於解碼安全視頻訊框。在步驟710中,SAP 760從SMEMS 750分配一安全緩衝區。在步驟711中,SAP 760通知一解碼器引擎770以解碼訊框到DMA緩衝區。
第8圖爲依據本發明一實施例的基于第5圖和第7圖所描述的方法的一安全記憶區域的一釋放過程的示意圖。在步驟801中,NAP 720發送一停止命令到SAP 760,通知SAP 760停止其操作。在步驟802中,SAP 760停止操作幷將該安全記憶區域釋放回SMEMS 750的記憶池。在步驟803中,SAP 760向NAP 720報告成功。在步驟804,NAP 720發送一命令到SMAS 730以釋放該安全記憶區域。在步驟805中,SMAS 730發送一命令到MPS 740以對該安全記憶區域取消獨立(de-isolate)。在步驟806中,MPS 740請求SMEMS 750從其記憶池中移除該安全記憶區域,幷清除在此記憶區域中的安全內容。步驟806還包含子步驟86,在清除安全內容後,子步驟86從記憶區域過濾表650中移除安全記憶區域的條目。在步驟807中,MPS 740向SMAS 730報告成功。在步驟808中,SMAS 730發送一命令到DMAS 310以釋放該DMA緩衝區。
在步驟809中,DMAS 310依據第5圖所示的步驟52 ~ 58釋放DMA緩衝區。在步驟810中,DMAS 310向SMAS 730報告成功。在步驟811中,SMAS 730向NAP 720報告成功。
第9圖爲依據本發明一實施例的分配一連續物理記憶空間給一裝置的方法900的流程圖。方法900可以藉由由一系統承載的一管理程式來執行(例如,第1圖所示的管理程式180),如第1圖所示的系統100或第6圖所示的系統600。方法900從步驟910開始,該管理程式將物理記憶的一給定區域標記爲可移置的。在步驟920中,該管理程式從一操作系統內核接收分配記憶給一裝置的一請求,該請求指示虛擬化記憶中的一可用虛擬化頁面的第一集合。在步驟930中,該管理程式確定該給定區域的連續訊框的一集合,以分配給該裝置,其中該連續訊框的該集合映射到一虛擬化頁面的第二集合。在步驟940中,該管理程式禁能該可用虛擬化頁面的第一集合和該虛擬化頁面的第二集合的映射。在步驟950中,在禁能該映射後,該管理程式將該連續訊框的該集合中的一個或多個被佔用訊框移置出該給定區域,以允許將該連續訊框的該集合分配給該裝置。
第9圖描述的流程圖的操作是參照如第1圖和第6圖所示的示例性實施例。然而,應當理解的是,第9圖的流程圖的操作可以由除本發明的第1圖和第6圖之外的實施例來執行,幷且第1圖和第6圖可以執行不同于第9圖的流程圖所示的操作。第9圖所示的流程圖顯示了本發明的特定實施例進行的特定順序的操作,應當理解的是,這種特定順序是示範性的,而非用於限制本發明(例如,在另一實施例中,可以按不同的順序來執行、合幷某些操作步驟、重疊某些操作等)。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100、600‧‧‧系統
110、610‧‧‧處理器
111‧‧‧虛擬機
112‧‧‧客戶操作系統
130‧‧‧互連
140、460‧‧‧直接記憶體存取引擎
150‧‧‧裝置
160‧‧‧虛綫橢圓
170、670‧‧‧系統記憶
180‧‧‧管理程式
210‧‧‧第一頁面表
220、320、421、422‧‧‧第二頁面表
230‧‧‧被佔用的頁面
231‧‧‧IPA頁面
250‧‧‧可移置頁面
251、253‧‧‧訊框
252、352‧‧‧可移置區域
260‧‧‧連續記憶
310‧‧‧DMAS
330‧‧‧頁面移置服務器
352‧‧‧物理記憶池
440‧‧‧裝置驅動程式
450‧‧‧記憶分配器
620‧‧‧加密引擎
630‧‧‧視頻解碼器
640‧‧‧MPU
650‧‧‧記憶區域過濾表
680‧‧‧通訊匯流排
720‧‧‧NAP
730‧‧‧SMAS
740‧‧‧MPS
750‧‧‧SMEMS
760‧‧‧SAP
770‧‧‧解碼器引擎
900‧‧‧方法
第1圖爲依據本發明一實施例的操作在虛擬化環境中的系統的示意圖。 第2圖爲依據本發明一實施例的兩階段(two-stage)地址轉換的示意圖。 第3圖爲依據本發明一實施例的系統的初始化程式的示意圖。 第4圖爲依據本發明一實施例的連續物理記憶區域的分配過程的示意圖。 第5圖爲依據本發明一實施例的釋放過程的示意圖。 第6圖爲依據本發明一實施例的安全記憶區域(secure memory region)和正常記憶區域(normal memory region)爲相互獨立(isolated)的系統的示意圖。 第7圖爲依據本發明一實施例的安全記憶區域的分配過程的示意圖。 第8圖爲依據本發明一實施例的安全記憶區域的釋放過程的示意圖。 第9圖爲依據本發明一實施例的分配連續物理記憶空間給裝置的方法的流程圖。

Claims (10)

  1. 一種分配連續物理記憶體空間到一裝置的方法,包含: 將物理記憶體的一給定區域標記爲可移置的(migratable); 從一操作系統內核(kernal)接收分配記憶體給該裝置的一請求,該請求指示在一虛擬化記憶中的一可用虛擬化頁面的一第一集合; 確定將要分配給該裝置的該物理記憶中的一連續訊框的一集合,該連續訊框的該集合被映射到一虛擬化頁面的一第二集合; 藉由一管理程式禁能(disable)該可用虛擬化頁面的該第一集合和該虛擬化頁面的該第二集合的映射;以及 在禁能該映射後,將該連續訊框的該集合中的一個或多個被佔用的訊框移置出該給定區域,以允許將該連續訊框的該集合分配給該裝置。
  2. 如申請專利範圍第1項所述之分配連續物理記憶空間到裝置的方法,其中將該物理記憶的該給定區域標記爲可移置的步驟還包含: 接收指示該虛擬化記憶的一連續區域是可移置的一資訊;以及 將該虛擬化記憶的該連續區域映射到該物理記憶的該給定區域。
  3. 如申請專利範圍第1項所述之分配連續物理記憶空間到裝置的方法,還包含: 初始化一頁面表,以將該虛擬化記憶中的每個虛擬化頁面映射至該物理記憶中的一對應訊框,其中該虛擬化記憶中的相鄰的虛擬化頁面映射到該物理記憶中的相鄰的訊框。
  4. 如申請專利範圍第1項所述之分配連續物理記憶空間到裝置的方法,還包含: 依據預定的一映射函數初始化一頁面表,以將映射該虛擬化記憶中的每個虛擬化頁面映射至該物理記憶中的對應訊框。
  5. 如申請專利範圍第1項所述之分配連續物理記憶空間到裝置的方法,其中在移置該一個或多個被佔用的訊框之後,該方法還包含: 將該連續訊框的集合標記爲已分配的;以及 發送指向該連續訊框的集合的一物理地址至該操作系統內核。
  6. 如申請專利範圍第1項所述之分配連續物理記憶空間到裝置的方法,其中所述禁能映射的步驟進一步包含: 在該物理記憶的該給定區域中創建複數個訊框的一源列表,其中該複數個訊框的該源列表匹配該請求指示的一緩衝區大小; 創建對應于該可用虛擬化頁面的該第一集合的複數個的一目標列表;以及 刪除該源列表和該目標列表的至少一個中的該複數個訊框的從該虛擬化記憶至該物理記憶的所有映射。
  7. 如申請專利範圍第6項所述之分配連續物理記憶空間到裝置的方法,其中還包含: 創建複數個訊框的一不移置列表,該複數個訊框包含同時在該源列表和該目標列表中的一個或多個訊框;以及 除了在該不移置列表中的該一個或多個訊框,將該源列表中的每一訊框移置為該目標列表中的訊框。
  8. 如申請專利範圍第1項所述之分配連續物理記憶空間到裝置的方法,其中還包含: 將該連續訊框的該集合標記爲一安全記憶區域。
  9. 如申請專利範圍第8項所述之分配連續物理記憶空間到裝置的方法,其中還包含: 添加一條目到一過濾表,該過濾表標記在該物理記憶中的該安全記憶區域,其中該條目包含指向該連續訊框的該集合的一物理地址。
  10. 一種分配連續物理體記憶空間到裝置的系統,包含: 一個或多個處理器,承載由一管理程式管理的一個或多個虛擬機; 一物理記憶;以及 一個或多個裝置,耦接至該一個或多個處理器和該物理記憶; 其中,該管理程式執行以下步驟: 將該物理記憶體的一給定區域標記爲可移置的(migratable); 從一操作系統內核(kernal)接收分配記憶體給該裝置的一請求,該請求指示在一虛擬化記憶中的一可用虛擬化頁面的一第一集合; 確定將要分配給該裝置的該物理記憶中的連續訊框的一集合,該連續訊框的該集合被映射到一虛擬化頁面的一第二集合; 禁能(disable)該可用虛擬化頁面的該第一集合和該虛擬化頁面的該第二集合的映射;以及 在禁能該映射後,將該連續訊框的該集合中的一個或多個被佔用的訊框移置出該給定區域,以允許將該連續訊框的該集合分配給該裝置。
TW106109422A 2016-09-12 2017-03-22 分配連續物理記憶體空間到裝置的方法及系統 TW201812588A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/262,710 US10019288B2 (en) 2016-09-12 2016-09-12 Fast and stable mechanism for allocating contiguous memory
US15/262,710 2016-09-12

Publications (1)

Publication Number Publication Date
TW201812588A true TW201812588A (zh) 2018-04-01

Family

ID=61560775

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106109422A TW201812588A (zh) 2016-09-12 2017-03-22 分配連續物理記憶體空間到裝置的方法及系統

Country Status (3)

Country Link
US (1) US10019288B2 (zh)
CN (1) CN107818054B (zh)
TW (1) TW201812588A (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9396011B2 (en) * 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
CN107818014B (zh) * 2017-10-11 2020-06-09 晶晨半导体(上海)股份有限公司 一种内存分配方法以及多核并发的内存分配方法
US10664300B2 (en) * 2017-12-01 2020-05-26 Red Hat, Inc. Resetting persistent balloon memory for fragmentation reduction
CN111222140B (zh) * 2018-11-26 2022-04-26 中国电信股份有限公司 安全内存分配方法和装置
US11640311B2 (en) * 2019-08-27 2023-05-02 EMC IP Holding Company LLC Providing non-volatile storage for permanent data to virtual machines
CN111444016B (zh) * 2020-03-25 2023-10-13 瑞芯微电子股份有限公司 一种内存分配方法和装置
CN112783648B (zh) * 2021-01-18 2023-03-14 上海壁仞智能科技有限公司 基于内存区域的内存分配方法和设备以及访问方法和设备
CN115714879A (zh) * 2022-11-17 2023-02-24 展讯通信(上海)有限公司 数据解码方法、装置、设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804729B2 (en) * 2002-09-30 2004-10-12 International Business Machines Corporation Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel
US8493835B2 (en) * 2008-03-26 2013-07-23 Qualcomm, Incorporated Method and apparatus for mapping virtual resources to physical resources in a wireless communication system
CN101398768B (zh) * 2008-10-28 2011-06-15 北京航空航天大学 一种分布式虚拟机监视器系统的构建方法
CN101561769B (zh) * 2009-05-25 2013-02-13 北京航空航天大学 一种基于多核平台虚拟机的进程迁移跟踪方法
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
CN102122268B (zh) * 2010-01-07 2013-01-23 华为技术有限公司 一种虚拟机内存分配访问方法、装置和系统
US9355031B2 (en) * 2011-04-21 2016-05-31 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses
CN102521054B (zh) * 2011-12-15 2013-07-17 中国人民解放军国防科学技术大学 一种sun4v架构下的虚拟机DMA资源分配方法
US9396056B2 (en) 2014-03-15 2016-07-19 Intel Corporation Conditional memory fault assist suppression
TWI533202B (zh) 2014-12-10 2016-05-11 晨星半導體股份有限公司 嵌入式裝置及其記憶體管理方法
CN104636186B (zh) * 2015-01-27 2018-02-13 华为技术有限公司 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备

Also Published As

Publication number Publication date
US10019288B2 (en) 2018-07-10
US20180074863A1 (en) 2018-03-15
CN107818054B (zh) 2021-07-02
CN107818054A (zh) 2018-03-20

Similar Documents

Publication Publication Date Title
CN107818054B (zh) 分配连续物理内存空间到设备的方法及系统
US8392628B2 (en) Sharing memory spaces for access by hardware and software in a virtual machine environment
EP3491520B1 (en) Controlling access to pages in a memory in a computing device
US9032181B2 (en) Shortcut input/output in virtual machine systems
US9336035B2 (en) Method and system for VM-granular I/O caching
US9183035B2 (en) Virtual machine migration with swap pages
JP5038907B2 (ja) 仮想マシン環境のアドレス変換をサポートするための方法と装置
US8583875B1 (en) Efficient readable ballooning of guest memory by backing balloon pages with a shared page
US10169244B2 (en) Controlling access to pages in a memory in a computing device
US20170357592A1 (en) Enhanced-security page sharing in a virtualized computer system
US10310986B1 (en) Memory management unit for shared memory allocation
Peleg et al. Utilizing the {IOMMU} scalably
JP7387873B2 (ja) ネットワーク化された入出力メモリ管理ユニット
US20170277632A1 (en) Virtual computer system control method and virtual computer system
JP2008021252A (ja) 計算機システム及びアドレス割当方法
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
US9772776B2 (en) Per-memory group swap device
US11656982B2 (en) Just-in-time virtual per-VM swap space
WO2023155694A1 (zh) 内存换页方法、系统及存储介质
JP2004355124A (ja) 直接アドレス指定共用圧縮メモリ・システム
US20220382577A1 (en) Hardware Virtual Machine for Controlling Access to Physical Memory Space
US20220179677A1 (en) Memory protection for virtual machines
US20230027307A1 (en) Hypervisor-assisted transient cache for virtual machines
US20210049030A1 (en) Graphics processing unit profiling tool virtualization
AU2010249649B2 (en) Shortcut input/output in virtual machine systems