JP2006252554A - 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム - Google Patents

仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム Download PDF

Info

Publication number
JP2006252554A
JP2006252554A JP2006063129A JP2006063129A JP2006252554A JP 2006252554 A JP2006252554 A JP 2006252554A JP 2006063129 A JP2006063129 A JP 2006063129A JP 2006063129 A JP2006063129 A JP 2006063129A JP 2006252554 A JP2006252554 A JP 2006252554A
Authority
JP
Japan
Prior art keywords
virtual machine
page
access
physical address
dma
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2006063129A
Other languages
English (en)
Other versions
JP4237190B2 (ja
JP2006252554A5 (ja
Inventor
Eric Traut
トラウト エリック
Mattew D Hendel
ディ.ヘンデル マシュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006252554A publication Critical patent/JP2006252554A/ja
Publication of JP2006252554A5 publication Critical patent/JP2006252554A5/ja
Application granted granted Critical
Publication of JP4237190B2 publication Critical patent/JP4237190B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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]
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Abstract

【課題】複数の仮想マシンが存在する環境内において、仮想マシン間でページを共有する方法を提供すること。
【解決手段】まず、第2の仮想マシンとのページ共有のために第1の仮想マシンの一時ゲスト物理アドレスレンジが割り振られる。一時レンジは、第1の仮想マシンのゲスト物理アドレス空間内にある。第2の仮想マシンから、第1の仮想マシンが利用可能なページに対するDMA要求などのアクセス要求が受信される。ページに対する保留アクセスの参照カウントがインクリメントされて保留アクセスが示され、ページは一時ゲスト物理アドレスレンジ内にマッピングされる。ページがアクセスされ、参照カウントはデクリメントされる。次いで、参照カウントがゼロである場合、一時ゲスト物理アドレスレンジ内のマッピングが削除される。
【選択図】図1

Description

本発明は、コンピュータプログラミングの分野に関する。より詳細には、本発明は、仮想マシン環境内で、第2の仮想マシンが第1の仮想マシンが利用可能なホストリソースにアクセスすることに関する。
仮想コンピューティングは、それぞれが独自のオペレーティングシステムを有する複数の仮想マシンがホストコンピュータ上で稼動できるようにする。ホストコンピュータは、仮想マシンプログラムの命令をホストコンピュータが実行できるようにするバーチャライザプログラムを有し、仮想マシンプログラムは、ホストコンピュータと異なるCPUモデルを有することがある。また、ホストコンピュータのバーチャライザプログラムは、仮想マシンによる使用のために、ホストマシンのハードウェアリソースを仮想化することもできる。CPU、メモリ、I/Oおよびディスクスペースなどのハードウェアリソースを要求している仮想マシンは、ホストコンピュータに対してゲストと呼ばれる。
仮想マシンでは、ゲストコンピュータシステムは、特定の1つのハードウェアアーキテクチャの動作についての純粋なソフトウェア表現としてのみ、ホストコンピュータシステム内に存在する。バーチャライザ、エミュレータ(emulator)、仮想マシンおよびプロセッサエミュレーションの各用語は、当業者に周知であって理解されている1つまたはいくつかの手法を使用して、あるコンピュータシステム全体のハードウェアアーキテクチャを模倣する、あるいはエミュレートする能力を表すために同義的に使用されることがある。ホストコンピュータのオペレーティングシステムソフトウェアおよびハードウェアアーキテクチャ上で実行されるバーチャライザプログラムは、ゲストコンピュータシステム全体の動作を模倣する。
バーチャライザプログラムは、ホストマシンのハードウェアアーキテクチャと、エミュレートされたゲスト仮想マシン環境内で走るソフトウェア(たとえば、オペレーティングシステム、アプリケーションなど)から送信される命令との間のインターチェンジとして働く。仮想マシン環境の一実施形態では、エミュレートされた環境は、仮想マシンモニタ(VMM)を含むことができる。VMMは、ホストハードウェアのすぐ上を走るソフトウェア層であり、おそらくはホストのオペレーティングシステムと並行して走るとともにこれと連動して動作し、VMMが仮想化しているハードウェアと同じインターフェースを公開することによってホストマシンの全てのリソース(および一部の仮想リソース)を仮想化することができる。この仮想化は、バーチャライザ(およびホストコンピュータシステム自体)がその上を走る複数のオペレーティングシステム層から気付かれないようにすることを可能にする。仮想マシン環境では、複数の仮想マシンが、ホストマシンのハードウェアリソースに対して性能要件を課す。ある仮想マシンを他の仮想マシンおよびホストから隔てておくことが望ましい。ある仮想マシンの障害が他の仮想マシンに影響を及ぼすことがないように、ある仮想マシンを他の仮想マシンから分離または隔離することは、エラーや障害を隔離する上で有用である。
一方、一部の構成では、ある仮想マシンから、第2の仮想マシンが利用可能なホストリソースにアクセスできるようにすることが望ましい。図1に、仮想コンピュータシステム100を示す。システム100は、第1の仮想マシン110、第2の仮想マシン115、およびホストコンピュータシステム105に常駐している仮想化ソフトウェア120を含む。仮想化ソフトウェアは、たとえば仮想マシンアドレスをホストシステムアドレスから区別することにより、仮想マシン間の制御された隔離の維持を助ける。第1の仮想マシン110は、データベース145にアクセスするためのドライバ150を有するオペレーティングシステム130上で走る複数の仮想マシンアプリケーション125を含むソフトウェアプログラムである。第2の仮想マシン115は、仮想ドライバ155を有するオペレーティングシステム140上で走る複数の仮想マシンアプリケーション135を含むソフトウェアプログラムである。ホストコンピュータシステム105は、仮想マシン110または115のいずれかに割り振ることができる、入出力チャネル、メモリ、プロセッサおよびソフトウェアなどのホストリソースを有する。図1の具体例では、ホストリソースは、データベース145にアクセスしているI/Oチャネル165である。図1の構成は、第2の仮想マシン115が、仮想化ソフトウェア120を通して仮想ドライバ155を使用し、そしてデータベース145へのI/Oパス165に接続されたドライバ150と通信することによって、データベース145にアクセスすることができることを示している。
仮想マシン環境では、ゲストにメモリなどのホストシステムリソースが割り振られる。ゲスト仮想マシンのアプリケーションが、ゲストのために、メモリにアクセスするための仮想アドレスを生成する。この仮想アドレスは、当該ゲストに関連する物理アドレスに変換される。しかし、仮想マシン環境内の各仮想マシンは、物理アドレス空間についてそれぞれ別個の観念を保持している。仮想マシンの視点からすると、それ自体の物理アドレス空間は、物理アドレスゼロまたは他の任意のページ位置合わせされた(page−aligned)物理アドレスから開始しているように見える場合があり、物理アドレス空間は、ホストシステムの様々な仮想マシン内のメモリの割振りを記録する仮想化ソフトウェアがサポートする限りの広さの領域に及ぶ可能性がある。一般に、各仮想マシンに個別の物理アドレス空間を提供するために、シャドウページテーブル(shadow page table)が仮想化ソフトウェアの一部として使用される。
ゲスト物理アドレス空間、すなわちGPA空間とは、仮想マシンの物理アドレス空間のことである。したがって、ゲスト物理アドレスすなわちGPAは、GPA空間内のアドレスを指す。ゲスト物理アドレス空間の使用は、ゲスト仮想マシンをサポートするための挿入、削除およびクエリの各操作をサポートする。ゲスト仮想アドレスすなわちGVAは、特定の仮想マシンにプライベートな仮想アドレスである。通常、ゲスト仮想アドレス(GVA)は、ゲスト物理アドレス(GPA)に変換される。しかし、GPAを使用してホスト物理メモリにアクセスすることはできない。したがって、GPAはホストまたはシステム物理アドレス(SPA)に変換される。アドレス変換のオーバーヘッドを軽減するために、バーチャライザプログラムは、GVAをSPAにマップするシャドウページテーブルを維持する。バーチャライザはまた、GPAからSPAへのマッピングを記憶する内部データ構造も維持する。図2は、ゲスト物理ページからシステム物理ページへの例示的なマッピングを示す。単一のゲスト物理アドレスにマップできる複数のゲスト物理アドレスが存在しうることに留意されたい。たとえば、ゲスト物理アドレス空間ページフレーム番号PFN 202およびPFN 203は、システム物理ページ番号PFN 102にマップする。
仮想マシンの動作およびゲスト物理アドレス空間の管理は、いくつかの興味深い問題を提示しうる。たとえば、ゲスト物理アドレス空間のある領域が削除されると、ゲスト物理アドレス空間の削除されたセクション内の領域にマップするゲスト仮想アドレスをパージ(purge)する必要がある。このパージの結果、GPAの削除されたセクション内の領域に対する未処理のマッピングのいずれも無効化される。したがって、GPAのあるセクションが削除された場合、削除対象の領域内のGPAを使用して構築された仮想アドレスがあれば、それを無効化する必要がある。ある例示的アーキテクチャでは、GVAからSPAへのマッピングが維持され、それゆえにこれらのGVAからSPAへのマッピングを削除しなければならない場所が2つ存在しうる。仮想−物理マッピングを維持している2つのエリアとは、シャドウページテーブル内と、ハードウェア変換索引バッファ(TLB)の2箇所である。仮想化の正当性を維持し、仮想マシン間のセキュリティに対する侵害を防止するには、これらの各キャッシュをパージしなければならない。図3に、GVAからSPAへのマッピングを示す。複数のゲスト仮想アドレスが、同じシステム物理アドレスページにマップできることに留意されたい。たとえば、ゲスト仮想アドレスVA C000:1000およびVA C000:2000は、システム物理ページ番号PFN 102にマップしている。このようなマッピングは、ゲスト仮想アドレスのシステムアドレスへの変換をスピードアップするのに有用なシャドウページテーブルに顕著である。
残念なことに、シャドウページテーブルのデータ構造はGVAからSPAへのマッピングを維持するので、図3に示すシャドウページテーブルをクエリすることによって特定のGPAにマップする全てのGVAをクエリすることは不可能である。しかし、図2に示すGPAからSPAのマッピングも維持されている。特定のGPAを使用して作成された全てのゲスト仮想アドレスを判断する技法の1つは、特定のGPAにマップする全てのSPAについてGPAからSPAへのマッピング(図2)をクエリし、次いでGVAからSPAへのマッピング(図3のシャドウページテーブル)からSPAにマップする全てのエントリを削除することである。残念ながら、この方法は、各ステップがそれぞれGPAからSPAへのマッピングおよびGVAからSPAへのマッピングに対する線形探索を行うものであるため、非常に時間がかかる場合がある。代わりに、GPAからGVAへの逆マッピングを維持し、それによってこの状況を明示的に扱うことができる。残念ながら、後者の手法は大量の追加メモリを消費する。
コンピュータシステム内の物理デバイスは仮想アドレスではなくて物理アドレスを使用してシステムメモリをアドレスすることが、問題をさらに複雑なものにしている。したがって、物理デバイスが直接メモリアクセス(DMA)操作を実行するように設定されている場合、シャドウページテーブル(SPT)および変換索引バッファ(TLB)から仮想−物理マッピングをパージしても、物理デバイスによるシステムメモリに対する物理的なアクセスを防ぐことはできない。DMA操作は、DMAコントローラハードウェアおよびソフトウェアが存在する仮想マシン環境で実行することができる。
ゲスト物理アドレス空間を削除するとき、その空間が現在DMA操作に関与してないことを確認することが重要である。未処理のDMAトランザクションの継続中に、一般には4Kバイト以上であるゲストアドレス空間ページの削除を防ぐ1つの技法は、そのページがDMA操作に使われているかどうかを明示する単一のフラグを各ページ毎に維持することである。残念なことに、異なる物理デバイスが同一の物理アドレス空間にマップされている可能性があり、したがって同じアドレス空間が、おそらくは保留中となっている、2つの異なるDMA操作に関与している可能性がある。したがって、単一のフラグは、両方のDMAトランザクションがいつ完了したかを知るための情報としては不十分である。より高度なメカニズムが望まれる。
保留中の複数のDMA操作に関して、考えられる解決方法の1つは、システム物理メモリの特定領域へのDMA要求を防ぐメカニズムを提供することである。一般に、オペレーティングシステムが、DMAトランザクション中に起こるような非CPUエージェントを介した特定のページの読み書きの可否を、制御できるようにするテーブルが提供される。テーブルは、物理メモリの各ページ毎に、DMA操作を介してそのページが読み書きできるかどうかを示す1つまたは複数のフラグを有する。このテーブルは、DMA排他ベクタ(DEV)と呼ばれる。DMA排他ベクタメカニズムを使用しながらも、GPAテーブルからパージまたは改変すべき物理アドレス空間をターゲットとする複数のDMAトランザクションの問題を回避することが望ましい。
したがって、仮想マシン間で、DMAおよび他のI/O操作など、物理アドレスに対していくらかのアクセスができるようにしながら、ゲストからホストへの物理アドレスに使用される参照テーブルからの物理アドレス空間のパージまたは改変を可能にする方法およびシステムが必要である。本発明は、前述の必要性に対応し、本明細書に記載される追加の利点を提供する形でこれらの必要性を解決するものである。
本発明の一態様は、仮想マシン間のアクセスを可能にする方法およびシステムを含む。その中で、ある仮想マシンが他の仮想マシンに割り振られたリソースに対してアクセスを要求する。本発明の一実施形態は、第1の仮想マシンのゲスト物理アドレス内の一時レンジを使用して、2つの仮想マシン間でDMAアクセスなどのアクセスを行うための要求を受け取ることを含む。アクセスされたページは、一時アドレス空間内にマップされ、参照カウンタを使用して保留アクセスの数が記録される。アクセスが完了した後、参照カウンタがデクリメントされる。マッピングは、参照カウントがゼロであって関心対象のページへの保留中となっている追加アクセスはないことを示している場合、破棄することができる。一実施形態では、本発明は、ゲスト物理アドレス位置を更新することが望まれ、依然としてアクセス要求の対象となっている所望のページに対応するアドレスを改変あるいはパージする必要がある場合に、仮想マシン環境で使用する方法として有用である。改変すべきページへの参照は、一時ゲスト物理アドレス位置、変換索引バッファまたはシャドウページテーブルに見出すことができる。
前述の要約、および例示的実施形態についての以下の詳細な説明は、添付の図面と併せて参照することにより、より理解される。本発明の実施形態を説明するために、図面には例示的な構成が示されているが、本発明は開示された特定の方法および手段に限定されない。
本発明の例示的実施形態
本発明の一態様では、GPA空間の過渡領域または一時領域が作成され、ゲスト物理アドレス空間の高速削除または改変を考慮に入れるためにGPA空間のどのセクションがゲスト物理アドレスをゲスト仮想アドレスにマップする追加のデータ構造を必要としているかが判断される。この特徴は、仮想マシン環境内でのパーティション間または仮想マシン間のI/Oトランザクションをサポートするのに必要なGPA空間の高速挿入および削除を行う上で有用である。一例として、仮想マシン間のDMAトランザクションのサポートは、一時GPA空間を使用することで促進される。一実施形態では、GPA空間の過渡領域または一時領域は、ゲストまたは仮想化ソフトウェアにより、GPA空間内の、ゲストマシンのオペレーティングシステムによって通常のアプリケーション操作に割り振られている空間の外に存在する空間として定義される。通常のゲストオペレーティングシステムによる使用の外というこの配置により、ゲストオペレーティングシステムまたはゲストアプリケーションがゲスト仮想マシンの通常の動作時に誤って過渡領域または一時領域を利用してしまうという問題が回避される。
ゲスト物理アドレスの過渡領域または一時領域の導入は、GPA改変またはパージの際、一部のアドレス領域を速やかに削除しなければならない一方、他のアドレスの領域は仮想マシンのライフタイムを通じてめったに変化しないという観測に基づいている。したがって、個別で一時的なSPAからGVAへの逆マッピングテーブルが実装された場合、そのテーブルは頻繁に使用されず、無駄にメモリリソースを消費することになる。その結果、本発明の一態様によれば、改変すべき特定のGVAを識別するためのSPAからGVAへのマッピングは、過渡領域上でのみ維持される。GPAからSPAへのマッピングにおいて非過渡領域が改変されると、GVAからSPAへのマッピングからのGVAの低速なパージが実行される。
本発明の一態様では、ゲスト物理アドレス空間の過渡としてマーキングされた部分について、GPAによるGVAの速やかな特定を可能にする追加のGPAからGVAへのマッピングが維持される。図4に、GPAからGVAへのマッピングの一例を示す。単一のGPAにマップすることができる複数のGVAが潜在的に存在することに留意されたい。たとえば、図4で、GPA100はGVA 8000:0000、8000:1000、8000:2000および8000:3000にマップできる。
本発明の別の態様では、特定されたページをDMA操作などのI/Oトランザクションのために「ロック」することができる。ゲスト物理アドレスレンジをパージし、これらのアドレスに対応する参照を削除することが望ましくなった場合、そのぺージが処理中もしくは保留中のI/Oまたは他のDMAトランザクションに関与しているときには改変が実行されないことが好ましい。本発明の一態様によれば、ゲスト物理アドレスに対応する「ロック」状態の維持により、GPA空間のパージまたは改変が保留中となっているとき、I/OアクセスまたはDMAなどの他操作が継続されるようになる。
先に述べたように、単一のぺージがI/OまたはDMAトランザクションなど、複数の保留中の操作に関与している場合がある。改変中の領域の一部に対して未処理のDMA要求があるときは、GPAからSPAへのマッピングに対する改変を禁止することが好ましい。本発明の一態様では、参照カウンタを使用して、所与のページに対して保留中のI/OまたはDMAなどの他のトランザクションの数が集計される。一実装では、未処理のトランザクションの参照カウントを使用して、未処理のI/OまたはDMA操作などの他のトランザクションを有するページが関与するゲスト物理アドレス空間への改変の許可または不許可を行う。参照カウントの使用により、未処理のトランザクションが継続している間のゲスト物理アドレス空間の改変の回避、および単一のページに対して複数の未処理のDMA要求があり得る場合のDMA排他ベクタ内での単一のフラグの維持という、2つの問題が解決される。
参照カウントに関して述べると、GPAからSPAへのマッピングは参照カウントが非ゼロである間は改変されないことが望ましい。さらに、GPAからSPAへのマッピングを改変するための要求を受信した場合に参照カウントが非ゼロであるとき、新しいDMA要求の処理を、ゲスト物理アドレス空間に対する改変要求の処理が終わるまで延期することができる。
特定のページがメモリ内にロックされ、ゲスト物理アドレス空間の改変またはパージの要求があまりにも長時間にわたって抑えられるという状況を避けるために、I/Oトランザクションをブロックし続けることができる。ゲスト物理アドレスがそのような閉鎖状態にあるとき、DMA要求などのトランザクションのためにその領域内のページをロックすることの新たな要求は、失敗に終わるか、あるいはゲスト物理アドレス空間に関する改変が起こった後まで待たされる。この状態は、GPA空間への改変を防止している際のあまりにも長い待機を防ぐ。GPAからSPAへのマッピングに対する改変を保護するために取られる上述の手法は、DMA排他ベクタの保護にも使用される。詳細には、特定のページに対する未処理のDMAトランザクションの数について参照カウントが維持され、カウントがゼロになると、アドレスを改変できるようになる。したがって、参照カウントがゼロになり、ページに対して直ちに保留中である追加のI/Oアクセスがないとき、そのページはDMAを介してアクセスできないものとしてマークされる。
本発明の他の態様では、ゲスト物理アドレス空間の高速クエリおよび改変のために、平衡二分木が使用される。ゲスト物理アドレス空間マッピング内のエントリは、ゲストアプリケーションからの要求に基づいて挿入、削除およびクエリすることができる。ゲスト物理アドレス空間のデータ構造に対する高速挿入、削除およびクエリを実現するには、平衡二分木のデータ構造が好ましい。平衡二分木により、ゲスト物理アドレス空間に対する全ての操作についてO(logn)の最悪の場合におけるパフォーマンスが提供される。
図5に、本発明の態様による例示的な方法500を示す。この方法が実行されるコンピュータ環境は、図1に示されているものと同様の、ホストコンピュータが2つ以上の仮想マシンにリソースを提供する仮想マシン環境であると仮定する。仮想マシンがホストリソースについて要求を行う環境では、ゲスト仮想アドレスはゲスト物理アドレスに変換され、次いでシステム物理アドレスに変換される。変換が実行されると、アドレス変換は仮想マシンの動作をスピードアップするために、シャドウページテーブルおよび変換索引バッファの両方に使用される。しかし、ゲスト物理アドレス空間に対する変更が必要である場合、マップされていないアドレスに対する不要なアクセスを防ぐとともにアドレス空間内のより適切なエリアに再マップするために、シャドウページテーブルおよび変換索引バッファを更新する必要がある。図5の例示的方法500はこの環境で動作し、1つのパーティションまたは仮想マシンから他のパーティションまたは仮想マシンへのアクセスを可能にしながら、アドレス変更および更新メカニズムの一部として使用することができる。
方法500は、仮想マシン間でのページ共有のために第1の仮想マシン内の一時ゲスト物理アドレス空間の割振りが特定されたとき(ステップ510)に開始されるように設定することができる。この過渡空間または一時空間は、好ましくはゲスト物理アドレスレンジ内の、ただしその仮想マシン内のゲスト物理アドレスレンジを使用するアプリケーションが操作するレンジ外に位置する。このような過渡領域は、最初に仮想マシン内の仮想化ソフトウェアによって割り振られることができる。あるいは、過渡領域または一時領域は、ゲストのオペレーティングシステムによって割り振られることができる。ゲスト物理アドレス空間内の一時領域の割振りは、仮想マシンから仮想マシンへのトランザクションの前の任意の時点に実現することができ、トランザクションが望まれる度に実現する必要はないことに留意されたい。
第1の仮想マシンにおいて、第2の仮想マシンから、メモリの入出力アクセスまたは直接メモリアクセスなどの操作を実行するための要求を受け取る(ステップ520)。アクセスは、仮想マシン環境内のホストコンピュータ上の仮想化ソフトウェアを通して経路指定される。その要求に応答して、その要求内のアドレスぺージに関連付けられている参照カウンタがインクリメントされる(ステップ530)。これには、関心対象のページをロックする効果があり、指定されたページを共有する準備を行うことができる。要求されたトランザクションがDMA操作であり、参照カウンタがゼロから1にインクリメントされた場合、DMA操作が可能であることを検証するためにDMA排他ベクタがチェックされる。関心対象のページも、それらが確実に存在し、有効なGPAからSPAへのマッピングであることを確かめるためにチェックされる。
関心対象のページは、次いで、第1の仮想マシンのゲスト物理アドレス空間内の先に定義された一時アドレスレンジ内にマップされる(ステップ540)。第1の仮想マシンのゲスト物理アドレス内にページがマップされた後、意図されるトランザクションを開始することができる(ステップ550)。アクセスがDMA要求である場合、トランザクションの開始は、DMA転送の確立および管理のために、第2の仮想マシンから第1の仮想マシンへの読み書き命令などの命令、ビデオ色など特定のタイプのデータのためのトランザクションなどのパラメータ、ならびに特定のソースおよび宛先アドレスの送信を含む。
第2の仮想マシンと第1の仮想マシンとの間でデータが交換された後、トランザクションが完了する(ステップ560)。トランザクションがDMA操作である場合、第1の仮想マシンは第2の仮想マシンに対してデータが転送されたことを信号で伝える。完了時、第2の仮想マシンは仮想化ソフトウェアに対し、トランザクションに関与しているページをロック解除および非共有化するよう指示を送る。ステップ530でインクリメントされた参照カウンタはデクリメントされる(ステップ570)。トランザクションがDMA操作であり、参照カウントが1からゼロになる場合、DMA排他ベクタは追加のDMAトランザクションを認めないように設定することができる。本発明の一態様では、この働きによって、システムはDMAトランザクションの完了後に関心対象のページが関与するゲスト物理アドレスレンジを改変またはパージできるようになる。
参照カウンタがデクリメントされた後、保留トランザクションがまだ残っている場合は、それらのトランザクションを実行することができる。実行され、参照カウンタがゼロになると、システムは要求に従って関心対象のページまたはマッピングを自由に改変することができる。マッピングは、参照カウンタがゼロにデクリメントされた後、必要に応じて改変することができる(ステップ580)。この再マッピング機会により、システムは改変されるべきシャドウページテーブルおよびトランザクション変換索引テーブルを更新し、それによってゲスト物理アドレス空間内の変更に対応するために変更すべきアドレスに関連するマッピングを変更またはパージできるようになる。
例示的コンピューティングデバイス
図6および以下の説明は、本発明の諸実施形態を実施することができる適切なコンピューティング環境の概要を提供することを意図している。以下では汎用コンピュータについて記載されているが、これは1つの単一プロセッサの例に過ぎず、複数のプロセッサによる本発明の諸実施形態は、たとえばネットワーク/バスの相互運用性および対話を有するクライアントのような、他のコンピューティングデバイスで実施することができる。したがって、本発明の諸実施形態は、たとえば、電気器具内に配置されたオブジェクトのようなクライアントデバイスが単にネットワーク/バスへのインターフェースの役目を果たすネットワーク環境、または他のコンピューティングデバイスおよびオブジェクトなど、非常に少ない、または最小限のクライアントリソースしか関与しないネットワークホストサービス(networked hosted service)の環境内で実施することができる。本質的に、どんな場所であっても、データの記憶または検索ができさえすれば、動作に望ましい、または適した環境となる。
必須ではないが、本発明の実施形態は、デバイスまたはオブジェクト用のサービスの開発者が使用するために、オペレーティングシステムを介して実施することもでき、および/またはアプリケーションソフトウェア内に含むこともできる。ソフトウェアは、クライアントワークステーション、サーバまたは他のデバイスなどの、1つまたは複数のコンピュータによって実行される、プログラムモジュールなどの、コンピュータ実行可能命令という一般的な文脈で説明することができる。一般に、プログラムモジュールとしては、特定のタスクの実行または特定の抽象データ型の実施を行う、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがある。一般的に、プログラムモジュールの機能は、様々な実施形態において要望通りに組み合わせることができ、または分散させることができる。さらに、当業者は、本発明の様々な実施形態が他のコンピュータ構成で実行できることを理解するであろう。使用に適した他の周知のコンピューティングシステム、環境および/または構成としては、これらに制限されないが、パーソナルコンピュータ(PC)、現金自動預入支払機、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、プログラム可能な家庭用電化製品、ネットワークPC、電気器具、照明器具、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどがある。また、本発明の諸実施形態は、タスクが通信ネットワーク/バスまたは他のデータ伝送媒体でリンクされたリモート処理装置によって実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのいずれのコンピュータ記憶媒体にも置くことができ、クライアントノードは逆にサーバノードとして働くこともできる。
したがって、図6は、本発明の実施形態を実施することができる、適切なコンピューティングシステム環境600の例を示す。しかし、先に明記したように、コンピューティングシステム環境600は、適切なコンピューティング環境の一例に過ぎず、本発明の一実施形態の使用範囲または機能に関するいかなる限定も示唆するものではない。また、コンピューティング環境600は、例示的動作環境600中で示されるコンポーネントの1つまたはそれらの組合せに依存するか、またはそれらを必要としていると解釈されるべきでもない。
図6を参照すると、本発明の一実施形態を実施するための例示的システムは、コンピュータシステム610の形をとる汎用コンピューティングデバイスを含む。コンピュータシステム610のコンポーネントは、これらに制限されないが、処理装置620、システムメモリ630、およびシステムメモリを含むシステムの様々なコンポーネントを処理装置620に結合するシステムバス621を含むことができる。システムバス621は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用したローカルバスを含む、いくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、これらのアーキテクチャに、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニン(Mezzanine)バスとも呼ばれるPCI(Peripheral Component Interconnect)バスを含めることができる。
コンピュータシステム610は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータシステム610がアクセスできる利用可能などんな媒体でもよく、揮発性および不揮発性の媒体、リムーバブルおよび非リムーバブルの媒体を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体としては、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなど、情報の記憶に用いられる任意の方法または技術で実施される揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体がある。コンピュータ記憶媒体としては、例として、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)、フラッシュメモリまたは他のメモリ技術、CDROM(Compact Disk ROM)、CDRW(CD−rewritable)、DVD(digital versatile disk)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶装置、または所望の情報を記憶し、コンピュータシステム610がアクセスできる他の任意の媒体がある。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波や他の搬送機構などの変調データ信号の形で具体化し、それには任意の情報送達媒体が含まれる。「変調データ信号」という用語は、その1つまたは複数の特徴が、信号に含まれる情報を符号化するように設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響、RF、赤外線およびその他の無線媒体を含む。上記の任意の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
システムメモリ630は、たとえばROM631やRAM632などの揮発性および/または不揮発性のメモリの形をとるコンピュータ記憶媒体を含む。一般に、たとえば起動の際にコンピュータシステム610内の要素間での情報の転送を助ける基本ルーチンを含む基本入出力システム(BIOS)633は、ROM631に格納されている。RAM632は、一般に、直ちに処理装置620からアクセス可能であり、および/または処理装置620が操作を加えているデータおよび/またはプログラムモジュールを含む。限定ではなく例として、図6はオペレーティングシステム634、アプリケーションプログラム635、他のプログラムモジュール636、およびプログラムデータ637を示す。
コンピュータシステム610は、他の揮発性および/または不揮発性の媒体、リムーバブルおよび/または非リムーバブルのコンピュータ記憶媒体を含むこともできる。あくまで一例として、図6は、非リムーバブルで不揮発性の磁気媒体を読み書きするハードディスクドライブ641、リムーバブルで不揮発性の磁気ディスク652を読み書きする磁気ディスクドライブ651、およびCDROM、CDRW、DVDや他の光媒体などのリムーバブルで不揮発性の光ディスク656を読み書きする光ディスクドライブ655を示す。この例示的動作環境で使用できる他の揮発性および/または不揮発性の媒体、リムーバブルおよび/または非リムーバブルのコンピュータ記憶媒体としては、限定ではないが、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがある。ハードディスクドライブ641は、一般にインターフェース640などの非リムーバブルメモリインターフェースを介してシステムバス621に接続されており、磁気ディスクドライブ651および光ディスクドライブ655は、一般にインターフェース650などのリムーバブルメモリインターフェースを介してシステムバス621に接続されている。
上に説明し、図6に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータシステム610用のコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを記憶する。たとえば、図6では、ハードディスクドライブ641は、オペレーティングシステム644、アプリケーションプログラム645、他のプログラムモジュール646、およびプログラムデータ647を記憶しているものとして示してある。これらのコンポーネントは、オペレーティングシステム634、アプリケーションプログラム635、他のプログラムモジュール636、およびプログラムデータ637と同じでもよく、異なっていてもよいことに留意されたい。ここでは、オペレーティングシステム644、アプリケーションプログラム645、他のプログラムモジュール646、およびプログラムデータ647が少なくとも異なるコピーであることを示すために別の参照番号を付けた。ユーザは、キーボード662および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス661などの入力装置を介して、コンピュータシステム610に命令および情報を入力することができる。他の入力装置(図示せず)としては、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバス621に結合されているユーザ入力インターフェース660を介して処理装置620に接続されることが多いが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB)など他のインターフェースおよびバス構造によって接続することもできる。モニタ691または他のタイプの表示装置も、立ち代ってビデオメモリ(図示せず)と通信しうるビデオインターフェース690などのインターフェースを介してシステムバス621に接続されている。コンピュータシステムは、モニタ691以外に、出力周辺インターフェース695を介して接続することができるスピーカ697やプリンタ696などの他の周辺出力装置も含むことができる。
コンピュータシステム610は、リモートコンピュータ680など1つまたは複数のリモートコンピュータへの論理接続を使用したネットワーク環境または分散環境で動作することもできる。リモートコンピュータ680は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードでよく、図6ではメモリ記憶装置681しか図示されていないが、一般にはコンピュータシステム610に関連して説明した上述の多くのまたは全ての要素を含む。図6に示された論理接続は、ローカルエリアネットワーク(LAN)671およびワイドエリアネットワーク(WAN)673を含むが、他のネットワークおよび/またはバスを含むこともできる。これらのネットワーク環境は、オフィス、事業体規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的となっている。
LANネットワーク環境で使用する場合、コンピュータシステム610はネットワークインターフェースまたはアダプタ670を介してLAN671に接続される。WANネットワーク環境で使用する場合、コンピュータシステム610は、一般にインターネットなどのWAN673上での通信を確立するためのモデム672または他の手段を含む。モデム672は、内部モデムでも外部モデムでもよく、ユーザ入力インターフェース660または他の適切な機構を介してシステムバス621に接続することができる。ネットワーク環境では、コンピュータシステム610に関連して図示されたプログラムモジュールあるいはその一部を、リモートメモリ記憶装置に記憶することができる。限定ではなく例として、図6ではリモートアプリケーションプログラム685がメモリ装置681上にあるものとして示してある。図示されたネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立するための他の手段を使用することもできることが理解されるだろう。
パーソナルコンピューティングおよびインターネットの収束を鑑みて、様々な分散コンピューティングフレームワークがこれまで開発され、現在も開発されている。個人にも法人ユーザにも同様に、アプリケーションおよびコンピューティングデバイスのためのシームレスに相互運用できるウェブ対応型インターフェースが提供されており、それによってコンピュータ活動はますますウェブブラウザ志向またはネットワーク志向の強いものとなっている。
たとえば、マイクロソフト社から入手可能なMICROSOFT(登録商標)の.NET(商標)プラットフォームは、サーバ、ウェブベースのデータストレージなどのビルディングブロックサービス(building−block service)、およびダウンロード可能なデバイスソフトウェアを含む。本明細書中、例示的な実施形態がコンピューティングデバイスに常駐しているソフトウェアと関連して説明されているが、本発明の一実施形態の1つまたは複数の部分は、その操作が.NET(商標)の全ての言語およびサービス、ならびに他の分散コンピューティングフレームワークで実行、サポート、またはそれらを介してアクセスできるように、オペレーティングシステム、アプリケーションプログラミングインターフェース(API)、または、コプロセッサ(coprocessor)、ディスプレイ装置および要求オブジェクトのいずれかの間に介在する「仲介者」オブジェクトを介して実施することもできる。
先に述べたように、本発明の例示的な実施形態を様々なコンピューティングデバイスおよびネットワークアーキテクチャに関連して説明したが、基礎となる概念は、埋め込みシステムのためにソフトウェアプログラムプロファイラを実装することが望ましいような任意のコンピューティングデバイスまたはシステムに適用することができる。したがって、本発明の実施形態に関連して説明された方法およびシステムは、様々なアプリケーションおよびデバイスに適用することができる。本明細書では、様々な選択を代表するものとして例示的なプログラミング言語、名称および具体例が選択されているが、これらの言語、名称および具体例は限定を意図するものではない。本発明の実施形態によって実現されるシステムおよび方法と同等、同様あるいは等価のシステムおよび方法を実現するオブジェクトコードを提供する多くの方法があることは、当業者なら理解できるだろう。
本明細書に記載した様々な技術は、ハードウェアまたはソフトウェアに関連して、あるいは適切な場合には、両者の組合せで実施することができる。したがって、本発明の方法および装置、またはそのいくつかの態様または部分は、フロッピー(登録商標)ディスク、CD−ROM、ハードドライブ、または他の任意の機械可読記録媒体などの有形媒体に具体化され、それがコンピュータなどの機械にロードされて実行されるときその機械が本発明を実施するための装置となる、プログラムコード(すなわち、命令)の形をとることができる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、コンピューティングデバイスは、一般にプロセッサ、プロセッサ可読の記録媒体(揮発性および不揮発性のメモリおよび/または記憶要素を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。好ましくは、たとえばデータ処理APIなどの使用を介して本発明の一実施形態の信号処理サービスを利用しうる1つまたは複数のプログラムが、コンピュータと通信可能となるように、高水準の手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実装される。しかし、望まれるなら、この(1つまたは複数の)プログラムは、アセンブリ言語または機械語で実装することができる。いずれの場合も、言語はコンパイラ型でもインタープリタ型言語でもよく、ハードウェア実装と組み合わせることができる。
本発明を様々な図に示した好ましい実施形態に関して説明したが、本発明から逸脱することなく、本発明の同様の機能を実行するために他の類似の実施形態を使用してよく、あるいは説明した実施形態に改変または追加を行ってもよいことが理解されるだろう。さらに、特に無線ネットワーク接続された装置の数が増え続けていることから、携帯デバイス用オペレーティングシステムや他のアプリケーション固有のオペレーティングシステムを含む様々なコンピュータプラットフォームが企図されていることが強調されるべきである。それゆえ、本発明はどの単一の実施形態にも限定されるべきではなく、添付の特許請求の範囲と一致した広さおよび範囲の中で解釈すべきである。
本発明の態様を実現することができる例示的な仮想マシン環境を示す図である。 仮想マシンでのゲスト物理アドレスからシステム物理アドレスへのマッピングを示す図である。 仮想マシンでのゲスト仮想アドレスからシステム物理アドレスへのマッピングを示す図である。 仮想マシンでのゲスト仮想アドレスからゲスト物理アドレスへのマッピングを示す図である。 本発明の態様を組み込んだ方法の流れ図である。 本発明の態様を実施することができる例示的コンピューティング環境を示すブロック図である。
符号の説明
105 ホストシステム
120 仮想化ソフトウェア
125 仮想マシン1のアプリケーション
130 オペレーティングシステム1
135 仮想マシン2のアプリケーション
140 オペレーティングシステム2
145 データベース
150 ドライバ
155 仮想ドライバ
600 コンピューティング環境
620 処理装置
621 システムバス
630 システムメモリ
634 オペレーティングシステム
635 アプリケーションプログラム
636 その他のプログラムモジュール
637 プログラムデータ
640 非リムーバブル不揮発性メモリインターフェース
644 オペレーティングシステム
645 アプリケーションプログラム
646 その他のプログラムモジュール
647 プログラムデータ
650 リムーバブル不揮発性メモリインターフェース
660 ユーザ入力インターフェース
661 マウス
662 キーボード
670 ネットワークインターフェース
671 ローカルエリアネットワーク
672 モデム
673 ワイドエリアネットワーク
680 リモートコンピュータ
685 リモートアプリケーションプログラム
690 ビデオインターフェース
691 モニタ
695 出力周辺インターフェース
696 プリンタ
697 スピーカ

Claims (20)

  1. ホストコンピュータからのリソースを使用して動作する仮想マシン間でページを共有する方法であって、
    仮想マシン間でページを共有するために第1の仮想マシンの一時ゲスト物理アドレスレンジを割り振るステップと、
    前記ホストコンピュータ上の仮想化ソフトウェアが、前記第1の仮想マシンによって利用可能なページへのアクセス要求を第2の仮想マシンから受信するステップと、
    前記ページに対する保留アクセスの数を示す参照カウントをインクリメントするステップと、
    前記ページを前記第1の仮想マシンの前記一時ゲスト物理アドレスレンジの一部分にマップするステップと、
    前記第1の仮想マシンによって利用可能な前記ページを、前記第2の仮想マシンがアクセスできるようにするステップと、
    前記第2の仮想マシンによるページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知するステップと、
    前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップと、
    前記参照カウントがゼロである場合に前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除するステップと
    を含むことを特徴とする方法。
  2. 前記第1の仮想マシンによって利用可能なページへのアクセス要求を第2の仮想マシンから受信するステップは、第1の仮想マシンにマップされているページをアクセスするための直接メモリアクセス(DMA)要求を第2の仮想マシンから受信するステップを含むことを特徴とする請求項1に記載の方法。
  3. 前記ページに対する保留アクセスの参照カウントをインクリメントするステップは、DMA転送の参照カウントをインクリメントするステップを含み、前記ページに関するゲスト物理アドレスからホスト物理アドレスへのマッピングが有効であり、DMA排他ベクタが前記ページへのアクセスを認めることを検証するステップをさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記第1の仮想マシンによって利用可能な前記ページを、前記第2の仮想マシンがアクセスできるようにするステップは、前記第2の仮想マシンと、ホスト物理アドレスのあるレンジとの間でDMA転送をセットアップするステップを含むことを特徴とする請求項1に記載の方法。
  5. 前記第2の仮想マシンによる前記ページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知するステップは、DMA操作が完了したという表示をホストハードウェアから受信し、完了メッセージを前記第1の仮想マシンから前記第2の仮想マシンに送信するステップを含み、前記第2の仮想マシンは前記仮想化ソフトウェアに完了したことを通知することを特徴とする請求項1に記載の方法。
  6. 前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップは、前記参照カウントがゼロにデクリメントされた場合に前記ページに対する後続のDMA操作を除外するDMA排他ベクタを設定するステップを含むことを特徴とする請求項1に記載の方法。
  7. 前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除するステップは、1つまたは複数のシャドウページテーブルおよび変換索引テーブルから前記ページのエントリをアンマップするステップをさらに含むことを特徴とする請求項1に記載の方法。
  8. 仮想マシン間でページを共有するためのコンピュータシステムであって、
    複数の仮想マシンが利用可能なハードウェアリソースを有するホストコンピュータと、
    前記ホストコンピュータと、前記複数の仮想マシンの任意のものとの間のインターフェースを備える仮想化ソフトウェアと、
    少なくとも1つのページリソースにアクセスを有する第1の仮想マシン、および第2の仮想マシンと、
    仮想マシン間でページを共有するための、前記第1の仮想マシンの一時ゲスト物理アドレスレンジと、
    メモリにアクセスできるホストプロセッサと
    を備え、前記メモリは、実行されたときに、
    前記仮想化ソフトウェアが、前記第1の仮想マシンによって利用可能なページへのアクセス要求を第2の仮想マシンから受信するステップと、
    前記ページに対する保留アクセスの数を示す参照カウントをインクリメントするステップと、
    前記ページを前記一時ゲスト物理アドレスレンジの一部分にマップするステップと、
    前記第1の仮想マシンによって利用可能な前記ページを、前記第2の仮想マシンがアクセスできるようにするステップと、
    アクセス完了を前記仮想化ソフトウェアに通知するステップと、
    前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップと、
    前記参照カウントがゼロである場合に前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除するステップと
    を含む方法を実行することを特徴とするシステム。
  9. 変換索引バッファおよびシャドウページテーブルのうちの少なくとも1つをさらに備え、前記変換索引バッファおよび前記シャドウページテーブルのうちの前記少なくとも1つが、前記ページのマッピングを削除する前記方法ステップの結果、更新されることを特徴とする請求項8に記載のシステム。
  10. 前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除する前記方法ステップは、1つまたは複数の前記シャドウページテーブルおよび前記変換索引バッファから前記ページのエントリをアンマップするステップをさらに含むことを特徴とする請求項9に記載のシステム。
  11. DMAコントローラをさらに備え、前記第1の仮想マシンによって利用可能な前記ページを前記第2の仮想マシンがアクセスできるようにする前記方法ステップは、前記第2の仮想マシンと、ホスト物理アドレスのあるレンジとの間で情報を転送するように前記DMAコントローラをセットアップするステップを含むことを特徴とする請求項8に記載のシステム。
  12. 参照カウンタをさらに備え、前記ページに対する保留アクセスの参照カウントをインクリメントする前記ステップは、保留中のDMA転送を表示するために前記参照カウンタをインクリメントするステップを含み、前記ページについてのゲスト物理アドレスからホスト物理アドレスへのマッピングが有効であり、DMA排他ベクタが前記ページへのアクセスを認めることを検証するステップをさらに含むことを特徴とする請求項11に記載のシステム。
  13. 前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップは、前記参照カウントがゼロにデクリメントされた場合に前記ページに対する前記DMAコントローラの操作を除外するためのDMA排他ベクタを設定するステップを含むことを特徴とする請求項12に記載のシステム。
  14. 前記第2の仮想マシンによる前記ページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知する前記方法ステップは、前記情報の転送が完了したという表示を前記DMAコントローラから受信し、完了メッセージを前記第1の仮想マシンから前記第2の仮想マシンに送信するステップを含み、前記第2の仮想マシンが前記仮想化ソフトウェアに完了したことを通知することを特徴とする請求項11に記載のシステム。
  15. ホストコンピュータからのリソースを使用して動作する仮想マシン間でページを共有する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記方法は、
    仮想マシン間でページを共有するために第1の仮想マシンの一時ゲスト物理アドレスレンジを割り振るステップと、
    前記ホストコンピュータ上の仮想化ソフトウェアが、前記第1の仮想マシンによって利用可能なページへのアクセス要求を第2の仮想マシンから受信するステップと、
    前記ページに対する保留アクセスの参照カウントをインクリメントし、前記参照カウントは前記ページに対する他のアクセスをロックアウトするように働くステップと、
    前記ページを前記第1の仮想マシンの前記一時ゲスト物理アドレスレンジの一部分にマップするステップと、
    前記第1の仮想マシンによって利用可能な前記ページを、前記第2の仮想マシンがアクセスできるようにするステップと、
    前記第2の仮想マシンによる前記ページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知するステップと、
    前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップと、
    前記参照カウントがゼロである場合に前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除するステップと
    を含む方法であることを特徴とするコンピュータ可読媒体。
  16. 第2の仮想マシンから、前記第1の仮想マシンによって利用可能なページへのアクセス要求を受信する前記ステップは、前記第1の仮想マシンにマップされている前記ページをアクセスするための直接メモリアクセス(DMA)要求を前記第2の仮想マシンから受信するステップを含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  17. 前記ページに対する保留アクセスの参照カウントをインクリメントする前記ステップは、DMA転送の参照カウントをインクリメントするステップを含み、前記ページに関するゲスト物理アドレスからホスト物理アドレスへのマッピングが有効であり、DMA排他ベクタが前記ページへのアクセスを認めることを検証するステップをさらに含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  18. 前記第1の仮想マシンによって利用可能な前記ページを、前記第2の仮想マシンがアクセスできるようにする前記ステップは、前記第2の仮想マシンと、ホスト物理アドレスのあるレンジとの間でDMA転送をセットアップするステップを含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  19. 前記第2の仮想マシンによるページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知する前記ステップは、DMA操作が完了したという表示をホストハードウェアから受信し、完了メッセージを前記第1の仮想マシンから前記第2の仮想マシンに送信するステップを含み、前記第2の仮想マシンが前記仮想化ソフトウェアに完了したことを通知することを特徴とする請求項15に記載のコンピュータ可読媒体。
  20. 前記ページに対する保留アクセスの前記参照カウントをデクリメントする前記ステップは、前記参照カウントがゼロにデクリメントされた場合に前記ページに対する後続のDMA操作を除外するDMA排他ベクタを設定するステップを含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
JP2006063129A 2005-03-08 2006-03-08 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム Expired - Fee Related JP4237190B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/075,219 US7334076B2 (en) 2005-03-08 2005-03-08 Method and system for a guest physical address virtualization in a virtual machine environment

Publications (3)

Publication Number Publication Date
JP2006252554A true JP2006252554A (ja) 2006-09-21
JP2006252554A5 JP2006252554A5 (ja) 2008-11-20
JP4237190B2 JP4237190B2 (ja) 2009-03-11

Family

ID=36579174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006063129A Expired - Fee Related JP4237190B2 (ja) 2005-03-08 2006-03-08 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム

Country Status (13)

Country Link
US (1) US7334076B2 (ja)
EP (1) EP1701268B1 (ja)
JP (1) JP4237190B2 (ja)
KR (1) KR20060099404A (ja)
CN (1) CN100578471C (ja)
AT (1) ATE521036T1 (ja)
AU (1) AU2006200312A1 (ja)
BR (1) BRPI0600347A (ja)
CA (1) CA2535484A1 (ja)
MX (1) MXPA06001608A (ja)
RU (1) RU2393534C2 (ja)
TW (1) TW200634551A (ja)
ZA (1) ZA200601080B (ja)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010503115A (ja) * 2006-09-22 2010-01-28 インテル コーポレイション 仮想マシン環境におけるゲスト間での情報の共有
JP2010257049A (ja) * 2009-04-22 2010-11-11 Fujitsu Ltd 仮想化プログラム、仮想化処理方法及び装置
JP2011526035A (ja) * 2008-06-26 2011-09-29 マイクロソフト コーポレーション 仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター
US8261267B2 (en) 2008-07-28 2012-09-04 Fujitsu Limited Virtual machine monitor having mapping data generator for mapping virtual page of the virtual memory to a physical memory
JP2012520533A (ja) * 2009-03-31 2012-09-06 インテル・コーポレーション オン・ダイ・システム・ファブリック・ブロックの制御
US8275948B2 (en) 2007-03-09 2012-09-25 Nec Corporation Memory sharing system
JP2013065101A (ja) * 2011-09-15 2013-04-11 Canon Inc 情報処理装置、通信方法およびプログラム
JP2014529130A (ja) * 2011-08-30 2014-10-30 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 仮想トラステッドランタイムbiosとの通信
JP2014531084A (ja) * 2011-10-21 2014-11-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 基本入出力システム(bios)の機能にアクセスするウェブベースのインターフェース
JP2014531083A (ja) * 2011-10-21 2014-11-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 特権ドメインでの基本入出力システム(bios)機能の提供
US8924624B2 (en) 2010-12-17 2014-12-30 Fujitsu Limited Information processing device
US9235435B2 (en) 2008-06-26 2016-01-12 Microsoft Technology Licensing, Llc Direct memory access filter for virtualized operating systems
US9632557B2 (en) 2011-09-30 2017-04-25 Intel Corporation Active state power management (ASPM) to reduce power consumption by PCI express components
US10303501B2 (en) 2011-08-30 2019-05-28 Hewlett-Packard Development Company, L.P. Virtual high privilege mode for a system management request
US10802729B2 (en) 2015-06-16 2020-10-13 Arm Limited Apparatus and method for sharing pages including enforcing ownership rights independently of privilege level
US10838877B2 (en) 2015-06-16 2020-11-17 Arm Limited Protected exception handling
US10936504B2 (en) 2015-06-16 2021-03-02 Arm Limited Apparatus and method for address translation and control of whether an access request is rejected based on an ownership table indicating an owner process for a block of physical addresses
US11314658B2 (en) 2015-06-16 2022-04-26 Arm Limited Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2864398A1 (fr) * 2003-12-23 2005-06-24 France Telecom Terminal de telecommunication a deux espaces d'execution
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US7774514B2 (en) * 2005-05-16 2010-08-10 Infortrend Technology, Inc. Method of transmitting data between storage virtualization controllers and storage virtualization controller designed to implement the method
US7467292B2 (en) * 2005-05-19 2008-12-16 Dell Products L.P. Method and system for migrating information between information handling systems
US7370137B2 (en) * 2005-06-06 2008-05-06 Intel Corporation Inter-domain data mover for a memory-to-memory copy engine
US20060288130A1 (en) * 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US8423747B2 (en) * 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
US7426627B2 (en) * 2006-03-10 2008-09-16 Microsoft Corporation Selective address translation for a resource such as a hardware device
US20070220217A1 (en) * 2006-03-17 2007-09-20 Udaya Shankara Communication Between Virtual Machines
US7636831B1 (en) * 2006-03-31 2009-12-22 Vmware, Inc. Optimization of reverse mappings for immutable guest physical pages of virtual memories in a virtualized computer system
DE102006032832A1 (de) * 2006-07-14 2008-01-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
US7657659B1 (en) * 2006-11-30 2010-02-02 Vmware, Inc. Partial copying of data to transmit buffer for virtual network device
US7685401B2 (en) * 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system
CN101636722B (zh) * 2007-03-20 2013-01-30 李尚奎 可移动的虚拟机映像
US7984483B2 (en) 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US8078827B2 (en) * 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
EP2189902A1 (en) * 2007-09-12 2010-05-26 Mitsubishi Electric Corporation Information processor
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US8117418B1 (en) * 2007-11-16 2012-02-14 Tilera Corporation Method and system for managing virtual addresses of a plurality of processes corresponding to an application
US9418220B1 (en) * 2008-01-28 2016-08-16 Hewlett Packard Enterprise Development Lp Controlling access to memory using a controller that performs cryptographic functions
US8104083B1 (en) * 2008-03-31 2012-01-24 Symantec Corporation Virtual machine file system content protection system and method
US8028113B2 (en) * 2008-08-15 2011-09-27 International Business Machines Corporation Methods and systems for deadlock-free allocation of memory
US9450960B1 (en) 2008-11-05 2016-09-20 Symantec Corporation Virtual machine file system restriction system and method
US8301863B2 (en) * 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US8135937B2 (en) 2008-11-17 2012-03-13 International Business Machines Corporation Logical partition memory
US10255463B2 (en) * 2008-11-17 2019-04-09 International Business Machines Corporation Secure computer architecture
CN101800730B (zh) * 2009-02-09 2013-02-27 国际商业机器公司 安全增强的虚拟机通信方法和虚拟机系统
KR101144346B1 (ko) * 2009-02-20 2012-05-11 에스케이플래닛 주식회사 자바 애플리케이션 관리 방법 및 이를 실현시키기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체
CN101819564B (zh) * 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US9535767B2 (en) 2009-03-26 2017-01-03 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture
US9529636B2 (en) 2009-03-26 2016-12-27 Microsoft Technology Licensing, Llc System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine
US8458368B2 (en) * 2009-05-26 2013-06-04 Oracle America, Inc. System and method for discovering and protecting shared allocated resources in a shared virtualized I/O device
US8521919B2 (en) * 2009-06-30 2013-08-27 International Business Machines Corporation Direct memory access in a computing environment
US8270405B2 (en) * 2009-06-30 2012-09-18 Intel Corporation Multicast support on a switch for PCIe endpoint devices
US8799879B2 (en) * 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
KR101145144B1 (ko) * 2010-11-23 2012-05-14 한국과학기술정보연구원 가상머신 스케줄링 방법 및 시스템
US9606936B2 (en) * 2010-12-16 2017-03-28 Advanced Micro Devices, Inc. Generalized control registers
US8755283B2 (en) 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
US8612550B2 (en) 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity
US9792136B2 (en) * 2011-04-28 2017-10-17 Microsoft Technology Licensing, Llc Hardware assisted inter hypervisor partition data transfers
KR101303079B1 (ko) * 2011-05-04 2013-09-03 한국과학기술원 멀티-코어 기반의 가상화 환경에서 캐쉬 일관성을 제어하는 장치 및 방법
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US8656137B2 (en) * 2011-09-01 2014-02-18 Qualcomm Incorporated Computer system with processor local coherency for virtualized input/output
US9146785B2 (en) 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
US9817733B2 (en) 2011-10-05 2017-11-14 International Business Machines Corporation Resource recovery for checkpoint-based high-availability in a virtualized environment
CN103136059A (zh) * 2011-11-24 2013-06-05 中兴通讯股份有限公司 一种内存区间相互隔离的程序之间的通讯方法及处理单元
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US8805990B2 (en) * 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9246998B2 (en) 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US9841927B2 (en) * 2013-09-23 2017-12-12 Red Hat Israel, Ltd Remote direct memory access with copy-on-write support
CN104408222B (zh) * 2014-10-13 2017-05-24 中国电子科技集团公司第十研究所 实时分布式仿真平台可重构方法
US9619401B2 (en) * 2015-02-20 2017-04-11 Wisconsin Alumni Research Foundation Efficient memory management system for computers supporting virtual machines
US20160246715A1 (en) * 2015-02-23 2016-08-25 Advanced Micro Devices, Inc. Memory module with volatile and non-volatile storage arrays
WO2016161605A1 (zh) 2015-04-09 2016-10-13 华为技术有限公司 基于网络功能虚拟化的故障处理方法和装置
US10521354B2 (en) * 2015-06-17 2019-12-31 Intel Corporation Computing apparatus and method with persistent memory
US10152612B2 (en) * 2015-09-25 2018-12-11 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
CN108139982B (zh) 2016-05-31 2022-04-08 安华高科技股份有限公司 多信道输入/输出虚拟化
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10891237B2 (en) 2016-09-26 2021-01-12 Intel Corporation Apparatus and method for mediate pass through and shared memory page merge
US10180854B2 (en) * 2016-09-28 2019-01-15 Intel Corporation Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine
US11086632B2 (en) * 2017-02-10 2021-08-10 Alibaba Group Holding Limited Method and apparatus for providing accelerated access to a memory system
US10394585B2 (en) * 2017-03-07 2019-08-27 Microsoft Technology Licensing, Llc Managing guest partition access to physical devices
US10733112B2 (en) * 2017-06-16 2020-08-04 Alibaba Group Holding Limited Method and apparatus for hardware virtualization
US10733096B2 (en) 2017-11-22 2020-08-04 Samsung Electronics Co., Ltd. System and method for frame buffer
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US11321249B2 (en) * 2018-03-26 2022-05-03 Samsung Electronics Co., Ltd. Mechanism to autonomously manage SSDS in an array
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10833949B2 (en) * 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
US10769076B2 (en) 2018-11-21 2020-09-08 Nvidia Corporation Distributed address translation in a multi-node interconnect fabric
KR20200093168A (ko) * 2019-01-28 2020-08-05 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
CN110456994B (zh) * 2019-07-19 2023-03-10 南京芯驰半导体科技有限公司 一种远程显示系统及方法
US11520530B2 (en) 2019-09-24 2022-12-06 Amazon Technologies, Inc. Peripheral device for configuring compute instances at client-selected servers
US11064017B2 (en) 2019-09-24 2021-07-13 Amazon Technologies, Inc. Peripheral device enabling virtualized computing service extensions
US11569997B1 (en) 2020-03-09 2023-01-31 Amazon Technologies, Inc. Security mechanisms for data plane extensions of provider network services
CN113577757A (zh) * 2021-08-02 2021-11-02 西安万像电子科技有限公司 一种游戏数据的处理方法、电子设备及存储介质
CN113613182B (zh) * 2021-08-10 2023-03-21 中国平安财产保险股份有限公司 短信发送方法、计算机设备及可读存储介质
CN114201444B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置
CN114218153B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742450A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6738977B1 (en) * 2000-05-31 2004-05-18 International Business Machines Corporation Class sharing between multiple virtual machines
GB2369694B (en) * 2000-11-29 2002-10-16 Sun Microsystems Inc Efficient memory modification tracking
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US7603551B2 (en) * 2003-04-18 2009-10-13 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7181744B2 (en) * 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010503115A (ja) * 2006-09-22 2010-01-28 インテル コーポレイション 仮想マシン環境におけるゲスト間での情報の共有
US8275948B2 (en) 2007-03-09 2012-09-25 Nec Corporation Memory sharing system
JP2012185849A (ja) * 2008-06-26 2012-09-27 Microsoft Corp 仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター
US9235435B2 (en) 2008-06-26 2016-01-12 Microsoft Technology Licensing, Llc Direct memory access filter for virtualized operating systems
JP2011526035A (ja) * 2008-06-26 2011-09-29 マイクロソフト コーポレーション 仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター
US8261267B2 (en) 2008-07-28 2012-09-04 Fujitsu Limited Virtual machine monitor having mapping data generator for mapping virtual page of the virtual memory to a physical memory
JP2014112387A (ja) * 2009-03-31 2014-06-19 Intel Corp オン・ダイ・システム・ファブリック・ブロックの制御
US8819388B2 (en) 2009-03-31 2014-08-26 Intel Corporation Control of on-die system fabric blocks
JP2012520533A (ja) * 2009-03-31 2012-09-06 インテル・コーポレーション オン・ダイ・システム・ファブリック・ブロックの制御
JP2010257049A (ja) * 2009-04-22 2010-11-11 Fujitsu Ltd 仮想化プログラム、仮想化処理方法及び装置
US8924624B2 (en) 2010-12-17 2014-12-30 Fujitsu Limited Information processing device
US10303501B2 (en) 2011-08-30 2019-05-28 Hewlett-Packard Development Company, L.P. Virtual high privilege mode for a system management request
US9275230B2 (en) 2011-08-30 2016-03-01 Hewlett-Packard Development Company, L.P. Communication with a virtual trusted runtime BIOS
JP2014529130A (ja) * 2011-08-30 2014-10-30 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 仮想トラステッドランタイムbiosとの通信
US9542197B2 (en) 2011-08-30 2017-01-10 Hewlett-Packard Development Company, L.P. Router and a virtual trusted runtime BIOS
US9535710B2 (en) 2011-08-30 2017-01-03 Hewlett-Packard Development Company, L.P. Communication with a virtual trusted runtime BIOS
US9201839B2 (en) 2011-09-15 2015-12-01 Canon Kabushiki Kaisha Information processing apparatus, communication method and storage medium
US9462091B2 (en) 2011-09-15 2016-10-04 Canon Kabushiki Kaisha Information processing apparatus, communication method and storage medium
JP2013065101A (ja) * 2011-09-15 2013-04-11 Canon Inc 情報処理装置、通信方法およびプログラム
US9632557B2 (en) 2011-09-30 2017-04-25 Intel Corporation Active state power management (ASPM) to reduce power consumption by PCI express components
US9448810B2 (en) 2011-10-21 2016-09-20 Hewlett-Packard Development Company, L.P. Web-based interface to access a function of a basic input/output system
JP2014531083A (ja) * 2011-10-21 2014-11-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 特権ドメインでの基本入出力システム(bios)機能の提供
JP2014531084A (ja) * 2011-10-21 2014-11-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 基本入出力システム(bios)の機能にアクセスするウェブベースのインターフェース
US9753742B2 (en) 2011-10-21 2017-09-05 Hewlett-Packard Development Company, L.P. Web-based interface to access a function of a basic input/output system
US9753738B2 (en) 2011-10-21 2017-09-05 Hewlett-Packard Development Company, L.P. Providing a function of a basic input/output system (BIOS) in a privileged domain
US10802729B2 (en) 2015-06-16 2020-10-13 Arm Limited Apparatus and method for sharing pages including enforcing ownership rights independently of privilege level
US10838877B2 (en) 2015-06-16 2020-11-17 Arm Limited Protected exception handling
US10936504B2 (en) 2015-06-16 2021-03-02 Arm Limited Apparatus and method for address translation and control of whether an access request is rejected based on an ownership table indicating an owner process for a block of physical addresses
US11314658B2 (en) 2015-06-16 2022-04-26 Arm Limited Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory

Also Published As

Publication number Publication date
US7334076B2 (en) 2008-02-19
CA2535484A1 (en) 2006-09-08
MXPA06001608A (es) 2006-09-20
CN100578471C (zh) 2010-01-06
JP4237190B2 (ja) 2009-03-11
EP1701268B1 (en) 2011-08-17
AU2006200312A1 (en) 2006-09-28
US20060206658A1 (en) 2006-09-14
TW200634551A (en) 2006-10-01
RU2393534C2 (ru) 2010-06-27
EP1701268A3 (en) 2006-10-11
CN1831790A (zh) 2006-09-13
EP1701268A2 (en) 2006-09-13
BRPI0600347A (pt) 2006-10-31
ZA200601080B (en) 2008-04-30
ATE521036T1 (de) 2011-09-15
RU2006103559A (ru) 2007-08-20
KR20060099404A (ko) 2006-09-19

Similar Documents

Publication Publication Date Title
JP4237190B2 (ja) 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム
US7814287B2 (en) Using writeable page tables for memory address translation in a hypervisor environment
EP3491520B1 (en) Controlling access to pages in a memory in a computing device
US7475183B2 (en) Large page optimizations in a virtual machine environment
US8954697B2 (en) Access to shared memory segments by multiple application processes
JP5038907B2 (ja) 仮想マシン環境のアドレス変換をサポートするための方法と装置
US7490191B2 (en) Sharing information between guests in a virtual machine environment
US7428626B2 (en) Method and system for a second level address translation in a virtual machine environment
US8661181B2 (en) Memory protection unit in a virtual processing environment
US8954959B2 (en) Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US9218302B2 (en) Page table management
US10169244B2 (en) Controlling access to pages in a memory in a computing device
US8631170B2 (en) Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU
US20140108701A1 (en) Memory protection unit in a virtual processing environment
US9740625B2 (en) Selectable address translation mechanisms within a partition
US10365825B2 (en) Invalidation of shared memory in a virtual environment
US20120110575A1 (en) Secure partitioning with shared input/output
US20220318040A1 (en) System and method for providing page migration
US20120110297A1 (en) Secure partitioning with shared input/output
US20230029331A1 (en) Dynamically allocatable physically addressed metadata storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081003

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081003

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20081003

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20081028

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081125

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081217

R150 Certificate of patent or registration of utility model

Ref document number: 4237190

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111226

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111226

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131226

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees