JP7089333B2 - 仮想マシンの動的アドレス変換のためのコンピュータ実装方法、システム、およびコンピュータ・プログラム - Google Patents

仮想マシンの動的アドレス変換のためのコンピュータ実装方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP7089333B2
JP7089333B2 JP2020528157A JP2020528157A JP7089333B2 JP 7089333 B2 JP7089333 B2 JP 7089333B2 JP 2020528157 A JP2020528157 A JP 2020528157A JP 2020528157 A JP2020528157 A JP 2020528157A JP 7089333 B2 JP7089333 B2 JP 7089333B2
Authority
JP
Japan
Prior art keywords
memory
translation table
guest
address translation
host
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.)
Active
Application number
JP2020528157A
Other languages
English (en)
Other versions
JP2021504804A5 (ja
JP2021504804A (ja
Inventor
ヤン、ルイ
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021504804A publication Critical patent/JP2021504804A/ja
Publication of JP2021504804A5 publication Critical patent/JP2021504804A5/ja
Application granted granted Critical
Publication of JP7089333B2 publication Critical patent/JP7089333B2/ja
Active 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]
    • 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
    • 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
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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
    • 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/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

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

Description

本開示の実施形態は一般的に、コンピュータ技術に関し、詳細には、仮想マシンの動的アドレス変換に関する。
コンピュータ・システム、特に企業規模のサーバにおいては、仮想マシン技術が広く用いられている。このようなシステムにおいては、ホスト・オペレーション・システムにおけるアプリケーションまたはホスト・オペレーション・システム自体と考えられるハイパーバイザの管理の下、複数の仮想マシン(すなわち、ゲスト・オペレーション/オペレーティング・システム)が同じハードウェア構造において独立かつ同時に動作し得る。
仮想マシンのアプリケーションがシステム・メモリのある部分へのアクセスを要求した場合は、ゲスト論理メモリ・アドレスからホスト物理メモリ・アドレスへの動的アドレス変換が求められる。
本開示の実施形態の第1の態様は、動的アドレス変換のための方法を提供する。方法は、シャドー動的アドレス変換テーブル(shadow dynamic address translation table)を構築するリクエストに応答して、メモリ空間からメモリ部を取得することを含み、メモリ空間が、少なくとも1つのゲスト・オペレーション・システム(guest operation system)に対して配分され、シャドー動的アドレス変換テーブルが、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む。方法は、シャドー動的アドレス変換テーブルを構築することと、シャドー動的アドレス変換テーブルをメモリ部に格納することと、をさらに含む。
本開示の実施形態の第2の態様は、動的アドレス変換のためのコンピュータ・システムを提供する。このコンピュータ・システムは、少なくとも1つのプロセッサと、動的アドレス変換のための補助コントローラ(assist controller)と、少なくとも1つのプロセッサおよび補助コントローラに結合されたメモリと、を備える。一組のコンピュータ・プログラム命令がメモリに格納され、少なくとも1つのプロセッサおよび補助コントローラにより実行されて、ある方法を実行する。方法は、少なくとも1つのプロセッサにより、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することを含み、メモリ空間が、少なくとも1つのゲスト・オペレーション・システムに対して配分され、シャドー動的アドレス変換テーブルが、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む。方法は、補助コントローラにより、シャドー動的アドレス変換テーブルを構築することと、補助コントローラにより、シャドー動的アドレス変換テーブルをメモリ部に格納することと、をさらに含む。
本開示の実施形態の第3の態様は、動的アドレス変換のためのコンピュータ・プログラム製品を提供する。このコンピュータ製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を備える。コンピュータ可読記憶媒体は、一時的信号それ自体ではない。プログラム命令は、補助コントローラによる実行によって、ある方法を実行可能である。方法は、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することを含み、メモリ空間が、少なくとも1つのゲスト・オペレーション・システムに対して配分され、シャドー動的アドレス変換テーブルが、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む。方法は、シャドー動的アドレス変換テーブルを構築することと、シャドー動的アドレス変換テーブルをメモリ部に格納することと、をさらに含む。
添付の図面における本開示のいくつかの実施形態のより詳細な説明によって、本開示の上記および他の目的、特徴、および利点がより明らかとなる。本開示の実施形態において、同じ参照記号は一般的に、同じ構成要素を表す。
本開示の実施形態の実現に適用し得る例示的なコンピュータ・システムを示したブロック図である。 本開示の一実施形態に係る、図1のようなコンピュータ・システムにおいて実行可能な仮想マシン・システムの基本構造を示したブロック図である。 本開示の一実施形態に係る、仮想マシンのアプリケーションがハードウェア・プラットフォームの物理メモリにアクセスする様子を示した例示的な図である。 本開示の一実施形態に係る、仮想マシンの動的アドレス変換のための方法を示したフローチャートである。 本開示の一実施形態に係る、図4のステップS401において配分された複数のメモリ・フレームから成るチェーンを示した図である。 本開示の一実施形態に係る、チェーンからの自由メモリ・フレームの取得を示した図である。 本開示の一実施形態に係る、シャドー動的アドレス変換テーブルを構築するプロセスのフローチャートである。 本開示の一実施形態に係る、シャドー動的アドレス変換テーブルが構築された場合のデータ伝送を示した図である。 本開示の一実施形態に係る、本開示のいくつかの実施形態の実現に適用し得る別の例示的なコンピュータ・システムを示したブロック図である。 本開示の一実施形態に係る、CPUと補助コントローラとの協働を示した図である。
本開示のいくつかの好適な実施形態を示した添付の図面を参照して、これら好適な実施形態をより詳しく説明する。ただし、本開示は、さまざまな様態で実現可能であるため、本明細書に開示の実施形態に限定されるものと解釈すべきではない。
ここで図1を参照して、この図は、本開示の実施形態の実現に適用し得る例示的なコンピュータ・システム/サーバ12を示している。また、図1は、本開示の実施形態の実現に適用し得る通信デバイス等の携帯型電子デバイスの説明例を示すように構成されている。コンピュータ・システム/サーバ12は、例示に過ぎず、本明細書に記載の本開示の実施形態の使用または機能の範囲に関する限定を何ら示唆するものではない。
図1に示すように、コンピュータ・システム/サーバ12は、汎用コンピューティング機器の形態で示している。コンピュータ・システム/サーバ12の構成要素としては、1つまたは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含むさまざまなシステム構成要素をプロセッサ16に結合するバス18が挙げられるが、これらに限定されない。
バス18は、任意の複数種類のバス構造のうちの1つまたは複数を表し、多様なバス・アーキテクチャのいずれかを用いたメモリ・バスもしくはメモリ・コントローラ、周辺機器用バス、アクセラレイテッド・グラフィックス・ポート、ならびにプロセッサもしくはローカル・バスが挙げられる。非限定的な一例として、このようなアーキテクチャとしては、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス規格協会(VESA)ローカル・バス、および周辺機器相互接続(PCI)バスが挙げられる。
コンピュータ・システム/サーバ12は通常、多様なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ12によりアクセス可能な任意の利用可能な媒体であってもよく、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体の両者を含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32、あるいはその両方等、揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ12は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含んでいてもよい。非リムーバブル不揮発性磁気媒体(図示しないが、通常は「ハード・ドライブ」と称する)に対する読み書き用として、ストレージ・システム34を設けることも可能であるが、一例に過ぎない。図示はしていないものの、リムーバブル不揮発性磁気ディスク(たとえば、「フロッピー(R)・ディスク」)に対する読み書き用の磁気ディスク・ドライブならびにCD-ROM、DVD-ROM、もしくは他の光学媒体等のリムーバブル不揮発性光ディスクに対する読み書き用の光ディスク・ドライブを設けることも可能である。このような場合は、1つまたは複数のデータ媒体インターフェースによって、それぞれをバス18に接続可能である。以下に別途図示および説明する通り、メモリ28は、本開示の実施形態の機能を実行するように構成された一組(たとえば、少なくとも一組)のプログラム・モジュールを有する少なくとも1つのプログラム製品を含んでいてもよい。
非限定的な一例として、一組(少なくとも一組)のプログラム・モジュール42を有するプログラム/ユーティリティ40のほか、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データがメモリ28に格納されていてもよい。オペレーティング・システム、1つもしく複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組み合わせはそれぞれ、ネットワーキング環境の一実施態様を含んでいてもよい。プログラム・モジュール42は一般的に、本明細書に記載の本開示の実施形態の機能または方法、あるいはその両方を実行する。
また、コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24等の1つもしくは複数の外部デバイス14、ユーザによる当該コンピュータ・システム/サーバ12との相互作用を可能にする1つもしくは複数のデバイス、または当該コンピュータ・システム/サーバ12による1つもしくは複数の他のコンピュータ機器との通信を可能にする任意のデバイス(たとえば、ネットワーク・カード、モデム等)、あるいはその組み合わせと通信するようになっていてもよい。このような通信は、入出力(I/O)インターフェース22を介して発生し得る。さらに、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(たとえば、インターネット)、あるいはその組み合わせ等の1つまたは複数のネットワークと通信可能である。図示のように、ネットワーク・アダプタ20は、バス18を介して、コンピュータ・システム/サーバ12の他の構成要素と通信する。図示はしていないものの、コンピュータ・システム/サーバ12と併せて、他のハードウェアまたはソフトウェア構成要素、あるいはその両方を使用することも可能であることが了解されるものとする。その例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ記録ストレージ・システム等が挙げられるが、これらに限定されない。
図2は、本開示の一実施形態に係る、図1のようなコンピュータ・システムにおいて実行可能な仮想マシン・システムの基本構造を示したブロック図である。図2に示すように、ハイパーバイザ201の管理下において、複数の仮想マシン202、203、204がコンピュータ・システム/サーバ12の同じハードウェア・プラットフォームで独立かつ同時に動作する。
コンピュータ・システム/サーバ12のプロセッサ、メモリ、またはストレージ・ディスク等のハードウェア・リソースが異なる仮想マシンに対して動的または静的に割り当てられていてもよい。通例は、少なくとも特定の動作期間において、仮想マシン202等の仮想マシンに割り当てられたハードウェア・リソースが独立しており、このように割り当てられたハードウェア・リソースに対するアクセスは、仮想マシン203等の他の仮想マシンの影響を受けない。すなわち、仮想マシン202のユーザは、仮想マシン203のユーザの影響を受けない。コンピュータ・システム、特に企業規模のサーバ等の大型コンピュータ・システムにおけるハードウェア・リソースの利用は、大幅に改善され得る。また、異なる権限を仮想マシンそれぞれに割り当てることによって、ユーザのセキュリティ管理を正確に実現可能である。
図3は、本開示の一実施形態に係る、仮想マシンのアプリケーションがハードウェア・プラットフォームの物理メモリにアクセスする様子を示した例示的な図である。図3に示すように、ユーザのアプリケーション301は、ゲスト論理メモリ・アドレス304によって、メモリへのアクセスを要求する。このリクエストに応答して、ゲスト・オペレーション・システム302は、ゲスト論理メモリ・アドレス304をゲスト物理メモリ・アドレス305に変換する。この変換は、ゲスト論理メモリ・アドレスとゲスト物理メモリ・アドレスとの間のマッピングを含むゲスト動的アドレス変換テーブルを探索することにより実現されるようになっていてもよい。ゲスト物理メモリ・アドレス305は、ハイパーバイザ201に送信される。たとえば、ハイパーバイザ201は、ホスト・オペレーション・システムの下で動作する管理アプリケーションであってもよいし、ホスト・オペレーション・システムそれ自体であってもよい。ハイパーバイザ201は、ゲスト物理メモリ・アドレス305に基づいて、ホスト論理メモリ・アドレス306を取得する。たとえば、ゲスト物理メモリ・アドレス305がホスト論理メモリ・アドレス306それ自体であってもよい。すなわち、ゲスト物理メモリ・アドレス305がホスト論理メモリ・アドレス306として直接用いられるようになっていてもよい。ハイパーバイザ201は、ホスト論理メモリ・アドレス306とホスト物理メモリ・アドレス307との間のマッピングを含むホスト動的アドレス変換テーブルを探索して、ホスト論理メモリ・アドレス306をホスト物理メモリ・アドレス307に変換する。ホスト物理メモリ・アドレス307は、コンピュータ・システム/サーバ12のメモリ28中のホスト物理メモリ303へのアクセスに使用可能である。そして、データまたはアクセス結果を含む308、309、および310等のフィードバックがハイパーバイザ201により取得された後、ゲスト・オペレーション・システム302およびユーザのアプリケーション301へと順次戻される。
これらメモリ・アドレスの変換においては、CPUが割り込みを必要とし、ゲスト・オペレーション・システムを動作させるゲスト状態とホスト・オペレーション・システムを動作させるホスト/カーネル状態との間で変化する。CPUの割り込みには、多大な時間を必要とする。さらに、アプリケーションが通例は短時間に複数のリクエストを与えることから、前述のプロセスが繰り返し循環して、CPUの負荷が非常に大きくなる。
大量データの交換を伴うI/O動作において、ユーザのアプリケーションは、DMA(直接メモリ・アクセス)を目的として、I/Oバッファを要求するようにしてもよい。I/Oバッファのゲスト論理メモリ・アドレス304と対応するホスト物理メモリ・アドレス307との間のマッピングを含むシャドー動的アドレス変換テーブルが構築され、DMAコントローラに送られるようになっていてもよい。DMAコントローラは、シャドー動的アドレス変換テーブルを用いてホスト物理メモリに直接アクセスすることにより、中央演算処理装置(CPU)(処理ユニット16のプロセッサであってもよい)を解放するようにしてもよい。
この解決手段の下、ユーザのアプリケーション301は、I/O動作の前にシャドー動的アドレス変換テーブルを構築することをCPUに要求するようにしてもよい。さらに、アクセス対象のシステム・メモリの部分の固定(pin)によって、メモリからハード・ディスクへのスワッピングを回避するようにしてもよい。そして、I/O動作においては、DMAコントローラがホスト物理メモリにアクセスするようにしてもよい。I/O動作の終了後、ユーザのアプリケーション301は、シャドー動的アドレス変換テーブルを破壊/登録抹消することをCPUに要求するようにしてもよい。複数のゲスト論理メモリ・アドレスから複数のホスト物理メモリ・アドレスへの変換は、CPUにより一度で終了となる。このため、I/O動作においては、CPUの割り込みが不要となる。
ただし、ユーザのアプリケーションがシャドー動的アドレス変換テーブルの構築/登録、破壊/登録抹消、または補正/刷新を要求するたびに、CPUは、ゲスト状態からホスト/カーネル状態への切り替えのため、割り込みを受けることになる。これらの状態変化およびその関連する状況では、特にゲスト・オペレーション・システムにおけるユーザのアプリケーションがI/O動作後ごとにシャドー動的アドレス変換テーブルの刷新を頻繁に要求する場合、依然として多くのCPUサイクルが必要となる。
図4は、本開示の一実施形態に係る、仮想マシンの動的アドレス変換のための方法を示したフローチャートである。図4に示すように、ステップS401においては、少なくとも1つのゲスト・オペレーション・システムに対して、メモリ空間が配分される。ステップS402においては、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部が取得される。これは、ホスト状態への切り替えなく行われるようになっていてもよい。シャドー動的アドレス変換テーブルは、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む。ステップS403においては、シャドー動的アドレス変換テーブルが構築される。ステップS404においては、シャドー動的アドレス変換テーブルがメモリ部に格納される。配分されたメモリ空間は、ホスト状態への切り替えなく、シャドー動的アドレス変換テーブルの構築またはアクセスを目的として、補助コントローラ等のCPU以外の任意のプロセッサまたはコントローラのアクセスを受け得る。このため、シャドー動的アドレス変換テーブルの構築またはアクセスのためのCPUの割り込みが不要となり、CPUの負荷がさらに抑えられ得る。
仮想マシンの動的アドレス変換のための方法には、ステップS405をさらに含んでいてもよい。ステップS405においては、シャドー動的アドレス変換テーブルを破壊するリクエストに応答して、シャドー動的アドレス変換テーブルに占有されたメモリ部がメモリ空間に返される。メモリ空間の占有部の変換によって、メモリ空間の使用効率が改善されることになる。
例示的なコンピュータ・システムにおいて、ホスト物理メモリ303は、管理の利便性のためにサイズが固定された多くのメモリ・フレームに分割されている。したがって、本開示の実施形態において、メモリ空間は、複数のメモリ・フレームから成るチェーンを含んでいてもよい。ステップS402において、メモリ空間からメモリ部が取得された場合は、少なくとも1つのメモリ・フレームがチェーンから取得される。複数のメモリ・フレームから成るチェーンは、CPU以外のプロセッサまたはコントローラによるアクセスの利便性を向上させ得る。
図5は、本開示の一実施形態に係る、図4のステップS401において配分された複数のメモリ・フレームから成るチェーンを示した図である。図5に示すように、ステップS401においては、CPUが複数のメモリ・フレームを配分してチェーン50を構築するようにしてもよい。チェーンの初期化サイズは、予め設定されていてもよい。
本開示の実施形態において、チェーン50のヘッド501を指すチェーン・ポインタ601は、CPUプレフィックス・ページ等、ホスト物理メモリ303中の所定の場所に格納されて、アクセスを容易化するようにしてもよい。チェーンの2つの隣り合うメモリ・フレームにおいて、一方のメモリ・フレームは、他方のメモリ・フレームを指すポインタを含む。すなわち、テール504を除くチェーン50の各メモリ・フレームは、ヘッド501のポインタ5011、ミドル502のポインタ5021、およびミドル503のポインタ5031等、チェーン50の次のメモリ・フレームへのポインタを含む。チェーンへのポインタまたはチェーン中のポインタは、チェーンのアクセス速度をさらに増大させるように、アーキテクチャに依存していてもよい。
さらに、CPUは、メモリ・フレーム・テーブル61においてチェーン50の複数のメモリ・フレームをマークすることにより、これらのメモリ・フレームが他の目的で使用されないように予約することも可能である。
図6は、本開示の一実施形態に係る、チェーンからの自由メモリ・フレームの取得を示した図である。図4または図5のステップS402において、補助コントローラは、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、チェーンからメモリ・フレームを取得するようにしてもよい。たとえば、このリクエストは、大量データの交換を伴うI/O動作を必要とするユーザのアプリケーションに由来し得る。図6に示すように、チェーンのメモリ・フレーム501および503間のメモリ・フレーム502が取り出される。ポインタ5021の値は、メモリ・フレーム502より前のメモリ・フレーム501にコピーされるようになっていてもよい。そして、メモリ・フレーム501のポインタ5011は、メモリ・フレーム502の次のメモリ・フレーム503を指すことになる。ヘッド、テールを含むチェーンの如何なるメモリ・フレームが取り出されてもよいことが了解されるものとする。
本開示の一実施形態によれば、所定の基準が満たされた場合に、メモリ空間がさらに配分されるようになっていてもよい。場合によっては、チェーンが空であってもよい。当該状況に応答して、CPUは、メモリ空間をさらに配分するようにしてもよい。すなわち、新たなメモリ・フレームをチェーン50に配分・追加するようにしてもよい。このプロセスは、チェーン50のメモリ・フレームの数が予め設定された値に達するか、または、構築されるシャドー動的アドレス変換テーブルのサイズに適合するまで繰り返されるようになっていてもよい。
補助コントローラは、ステップS402を実行してチェーン50からメモリ・フレームを取得し、チェーン50が空であることが分かったら、新たなメモリ・フレームをチェーン50に配分・追加することをCPUに求めるようにしてもよい。CPUは、当該リクエストの適時な取り扱いのため、割り込みを受けるようになっていてもよい。また、この代替または追加として、CPUは、アイドル動作サイクルにおいて能動的に、チェーン50が空であるかを周期的に確認することにより、割り込みの回数を減らすようにしてもよい。
図7は、本開示の一実施形態に係る、シャドー動的アドレス変換テーブルを構築するプロセスのフローチャートである。図4のステップS403は、補助コントローラにより実行されるようになっていてもよい。図7に示すように、ステップS403は、ステップS701~S707を含んでいてもよい。ステップS701においては、シャドー動的アドレス変換テーブルを構築するリクエストから、変換対象のゲスト論理メモリ・アドレスが取得される。ステップS702においては、ゲスト・オペレーション・システムから、ゲスト論理メモリ・アドレスとゲスト物理メモリ・アドレスとの間のマッピングを含むゲスト動的アドレス変換テーブルが取得される。ステップS703においては、ゲスト論理メモリ・アドレスによるゲスト動的アドレス変換テーブルの探索によって、ゲスト物理メモリ・アドレスを取得する。ステップS704においては、ゲスト物理メモリ・アドレスに基づいて、ホスト論理メモリ・アドレスが取得される。ステップS705においては、ホスト・オペレーション・システムから、ホスト論理メモリ・アドレスとホスト物理メモリ・アドレスとの間のマッピングを含むホスト動的アドレス変換テーブルが取得される。ステップS706においては、ホスト論理メモリ・アドレスによるホスト動的アドレス変換テーブルの探索によって、ホスト物理メモリ・アドレスを取得する。ステップS707においては、ゲスト論理メモリ・アドレスとホスト物理メモリ・アドレスとの間のマッピングがシャドー動的アドレス変換テーブルに保存される。たとえば、ゲスト論理メモリ・アドレスおよびホスト物理メモリ・アドレスがともに、シャドー動的アドレス変換テーブル中の対応位置に保存される。
図8は、本開示の一実施形態に係る、シャドー動的アドレス変換テーブルが構築された場合のデータ伝送を示した図である。図8に示すように、ユーザのアプリケーションからのシャドー動的アドレス変換テーブルを構築するリクエストと併せて、このリクエストが割り当てられたゲスト論理メモリ・アドレス・リスト801も送信される。
ステップS701においては、たとえば、補助コントローラによって、ゲスト論理メモリ・アドレス・リスト801から、変換対象のゲスト論理メモリ・アドレスA1が取得される。図8のリスト801は、プロセスをより明瞭化するために使用される。本開示の別の例示的な実施形態においては、リスト801が省略されてもよい。すべての必要なゲスト論理メモリ・アドレスがゲスト動的アドレス変換テーブル802に格納済みであることから、補助コントローラは、ゲスト動的アドレス変換テーブル802から直接、ゲスト論理メモリ・アドレスを取得する。
ステップS702において、補助コントローラは、ゲスト動的アドレス変換テーブル802を取得する。たとえば、補助コントローラによる取得の利便性のため、ゲスト・オペレーション・システムは、補助コントローラがアクセス可能なメモリにゲスト動的アドレス変換テーブル802を再保存することも可能であるし、ゲスト動的アドレス変換テーブル802が格納されたメモリの対応するポインタ/アドレスを補助コントローラに送るだけでもよい。
ステップS703において、補助コントローラは、ゲスト動的アドレス変換テーブル802(具体的には、ゲスト論理メモリ・アドレス列8021)を探索して、ゲスト物理メモリ・アドレス列8022から、対応するゲスト物理メモリ・アドレスB2を取得する。図8のゲスト動的アドレス変換テーブル802は、ゲスト論理メモリ・アドレス8021が連続する一方、ゲスト物理メモリ・アドレス8022が動的かつ非連続的に割り当てられる一般的な状況も示している。ゲスト動的アドレス変換テーブル802に示すマッピング関係についても、通例は動的かつ予測不可能であるため、例示である。
ステップS704において、補助コントローラは、ホスト論理メモリ・アドレスB2を取得するが、これは、ゲスト物理メモリ・アドレスB2それ自体である。図8においては、ホスト論理メモリ・アドレスの例示的なリスト803が格納されるようになっていてもよく、ゲスト物理メモリ・アドレス8031は、ホスト論理メモリ・アドレス8032と同じ値である。
ステップS705において、補助コントローラは、ホスト動的アドレス変換テーブル804を取得する。ホスト・オペレーション・システムにより管理されるホスト動的アドレス変換テーブル804の構造は、ゲスト・オペレーション・システムにより管理されるゲスト動的アドレス変換テーブル802の構造に類似する。ホスト論理メモリ・アドレス8041が連続する一方、ホスト物理メモリ・アドレス8042は、非連続的に割り当てられる。
同様に、ホスト・オペレーション・システムは、補助コントローラがアクセス可能なメモリにホスト動的アドレス変換テーブル804を再保存することも可能であるし、ホスト動的アドレス変換テーブル804が格納されたメモリの対応するポインタ/アドレスを補助コントローラに送るだけでもよい。送信の再保存は、ホスト・オペレーション・システムにより前もって完了されていてもよく、このため、ホスト動的アドレス変換テーブル804は、ホスト状態への切り替えなく、補助コントローラにより容易に取得可能である。
ステップS706において、補助コントローラは、ホスト論理メモリ・アドレスB2によるホスト動的アドレス変換テーブル804の探索によって、ホスト物理メモリ・アドレスC5を取得する。
ステップS707において、補助コントローラは、ゲスト論理メモリ・アドレスA1とホスト物理メモリ・アドレスC5をシャドー動的アドレス変換テーブル805に保存する。
最後に、ゲスト論理メモリ・アドレス8051およびホスト物理メモリ・アドレス8052がシャドー動的アドレス変換テーブル805に含まれていてもよい。
さらに、ゲスト論理メモリ・アドレスとゲスト物理メモリ・アドレスとの間のマッピングがシャドー動的アドレス変換テーブル805に保存されるようになっていてもよい。たとえば、ゲスト物理メモリ・アドレスB2がシャドー動的アドレス変換テーブル805に保存されるようになっていてもよい。その結果、対応するゲスト物理メモリ・アドレス8053がシャドー動的アドレス変換テーブル805に含まれるようになっていてもよい。したがって、ゲスト・オペレーション・システムによるゲスト論理メモリ・アドレスとゲスト物理メモリ・アドレスとの間のマッピングの変化が後続し、必要に応じて適時に、シャドー動的アドレス変換テーブル805に反映されるようになっていてもよい。
シャドー動的アドレス変換テーブル805は、図6に示すメモリ・フレーム502等、1つまたは複数のメモリ・フレームに格納されていてもよい。DMAコントローラ等、権限を与えられた任意のデバイスまたはアプリケーションがアクセス可能である。同時に、予期せぬ動作の回避、特に、スワッピング・プロセスにおけるメモリからハード・ディスクへのスワッピングの回避のため、ホスト物理メモリ・アドレス8052に対応するホスト物理メモリの部分が固定されるようにマークされていてもよい。
場合により、ホスト物理メモリ・アドレスC5が無効の場合は、エラーが発生して、プロセスが中断されるようになっていてもよい。補助コントローラが割り込みを生成して、これがCPUにより取り扱われるようになっていてもよい。
図8は例示的な図に過ぎず、A1、B2、C5等の番号はすべて、本実施形態を明瞭化するための例示に過ぎず、本実施形態を何ら限定するものではない。たとえば、ゲスト論理メモリ・アドレスは送信時に変化しないため、0、1、・・・n等のそれぞれのエントリ番号の並び順が維持される限りは、それぞれの値がシャドー動的アドレス変換テーブル805に送信・格納され得ない。さらに、メモリ管理のセキュリティまたは原理、あるいはその両方を考慮すると、C5等の番号もエントリ番号となり得るが、これらは依然として、ハードウェアへの直接アクセスのために変換が必要である。この状況において、C5が有効なエントリ番号である一方、変換アドレスが無効な場合は、エラーが同じく発生して、プロセスが中断されるようになっていてもよい。
さらに、ステップS405においては、シャドー動的アドレス変換テーブル805を破壊するリクエストに応答して(通例、シャドー動的アドレス変換テーブル805の使用後に発生する)、補助コントローラは、シャドー動的アドレス変換テーブルに占有されたメモリ・フレーム502をチェーン50に返す。メモリ・フレーム502は、チェーン50のテール等、任意の位置に追加されるようになっていてもよい。
本開示の実施形態においては、現在固定されているホスト物理メモリのアドレスを含むシャドー動的アドレス変換テーブルを格納するように、複数のメモリ・フレームを含むチェーン50が予め割り当てられている。このため、当該固定されたホスト物理メモリ(DMAのI/Oバッファとして使用されるものを含む)は、メモリの統計解析等、ハードウェア・リソースの管理を容易化するように、一元的に管理されるようになっていてもよい。さらに、ハイパーバイザ201は、統計解析に基づいて、仮想マシンに対するリソース配分戦略を調整するようにしてもよい。
図9は、本開示のいくつかの実施形態の実現に適用し得る別の例示的なコンピュータ・システムを示したブロック図である。図9に示すように、コンピュータ・システム/サーバ12は、補助コントローラ161をさらに備える。プログラム/ユーティリティ40に含まれるプログラム・モジュール42に対応する一組のコンピュータ・プログラム命令がメモリ28に格納され、処理ユニット16のCPU160等のプロセッサおよび補助コントローラ161の少なくとも一方により実行されて、動作を行う。これらの動作においては、プロセッサのうちの少なくとも1つによって、メモリ空間が配分される。シャドー動的アドレス変換テーブルを構築するリクエストに応答して、補助コントローラにより、メモリ空間からメモリ部が取得される。シャドー動的アドレス変換テーブルは、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む。シャドー動的アドレス変換テーブルは、補助コントローラにより構築される。シャドー動的アドレス変換テーブルは、補助コントローラによって、メモリ部に格納される。シャドー動的アドレス変換テーブルを破壊するリクエストに応答して、シャドー動的アドレス変換テーブルに占有されたメモリ部は、補助コントローラによりメモリ空間に返される。簡潔に、プロセッサのうちの上記少なくとも1つは、大きな権限を有するCPU160であってもよく、プログラム命令のほとんどを実行する。CPU160は、コンピュータ・システム/サーバ12において、ホスト・オペレーション・システムおよびゲスト・オペレーション・システムを動作させる。補助コントローラ161は、処理ユニット16のプロセッサであってもなくてもよいが、シャドー動的アドレス変換テーブルを自動的に構築、刷新、および破壊するように作用する。新たなハードウェアが補助コントローラに使用されるようになっていてもよいし、既存のハードウェアが補助コントローラ161として機能するように割り当て・再プログラミングされるようになっていてもよい。
図10は、本開示の一実施形態に係る、CPUと補助コントローラとの協働を示した図である。図10に示すように、補助コントローラ161がなくても、CPU1001は、ホスト・オペレーション・システムを動作させるホスト/カーネル状態1021とゲスト・オペレーション・システムを動作させるゲスト状態1022との間で頻繁に変化する必要がある。たとえば、CPU1001がゲスト・オペレーション・システムを動作させるS4010において、シャドー動的アドレス変換テーブルを構築または刷新するリクエストが受け付けられた場合はいつでも、CPU1001が割り込みを受けることになる。S402が実行され、CPU1001は、ホスト/カーネル状態1021に移行して、シャドー動的アドレス変換テーブルを構築または刷新する。同様に、CPU1001がゲスト・オペレーション・システムを動作させるS4030において、シャドー動的アドレス変換テーブルを破壊するリクエストが受け付けられた場合はいつでも、CPU1001が割り込みを受けて、ホスト/カーネル状態1021に再度移行することになる。状態変化およびその関連する状況切り替えは、特にI/O動作後ごとにゲスト・オペレーション・システムがシャドー動的アドレス変換テーブルを頻繁に刷新することでCPU1001が繰り返し割り込みを受ける場合に、多大な時間を要する。
補助コントローラ161によって、CPU160は、割り込みを受けることなく、S402、S403、S404を通してタスクを継続するようにしてもよい。ほとんどないことではあるが、CPU160は、補助コントローラ161からのリクエストに応答して、S402において空チェーンの割り込み1013を取り扱うようにしてもよいし、S704において無効アドレスの割り込み1014を取り扱うようにしてもよい。補助コントローラ161の動作期間1023は、S402、S403、およびS404を網羅する。すなわち、補助コントローラ161は、コンピュータ・システム/サーバの全体性能が向上し得るように、シャドー動的アドレス変換テーブルを自動的に構築、刷新、破壊することによって、CPUによる割り込みを取り扱う時間コストを抑えるようにしてもよい。
本開示は、任意の考え得る技術的詳細集約レベルのシステム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってもよい。コンピュータ・プログラム製品は、本開示の態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでいてもよい。
コンピュータ可読記憶媒体としては、命令実行装置が使用する命令を保持・格納し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意好適な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去・プログラム可能リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カードまたは命令が記録された溝中の隆起構造等の機械的符号化デバイス、およびこれらの任意好適な組み合わせを含む。本明細書において使用するコンピュータ可読記憶媒体は、無線波等の自由伝搬電磁波、導波路等の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通って伝わる電気信号等の一時的信号それ自体として解釈されないものとする。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの演算/処理装置にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組み合わせ等のネットワークを介して、外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークには、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを含んでいてもよい。各演算/処理装置のネットワーク・アダプタ・カードまたはネットワーク・インターフェースがネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各演算/処理装置内のコンピュータ可読記憶媒体に格納する。
本開示の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用設定データ、またはSmalltalk(R)、C++等のオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語等の1つもしくは複数のプログラミング言語の任意の組み合わせにより記述されたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上ですべてが実行されるようになっていてもよいし、独立型ソフトウェア・パッケージとしてユーザのコンピュータ上で一部が実行されるようになっていてもよいし、ユーザのコンピュータ上で一部が実行されるとともにリモート・コンピュータ上で一部が実行されるようになっていてもよいし、リモート・コンピュータまたはサーバ上ですべてが実行されるようになっていてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)等の任意の種類のネットワークを通じてユーザのコンピュータに接続されていてもよいし、(たとえば、インターネット・サービス・プロバイダによりインターネットを通じて)外部のコンピュータに接続されていてもよい。いくつかの実施形態においては、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)等の電子回路がコンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することにより、電子回路をカスタマイズして本開示の態様を実行するようにしてもよい。
本明細書においては、本開示の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本開示の態様を説明した。フローチャート図またはブロック図、あるいはその両方の各ブロックならびにフローチャート図またはブロック図、あるいはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることが了解される。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令によって、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作を実装する手段が構成されるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを生成するものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他の機器、あるいはその組み合わせに特定の様態で機能するように指示可能なものであってもよい。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置、または他の機器上で実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作を実装するように、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラム可能な装置、または他の機器にロードされ、コンピュータ、他のプログラム可能な装置、または他の機器上で一連の動作ステップを実行させるものであってもよい。
図面中のフローチャートおよびブロック図は、本開示の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様の構成、機能、および動作を示している。この点、フローチャートまたはブロック図の各ブロックは、命令のモジュール、セグメント、または部分を表していてもよく、指定の論理的機能を実装する1つまたは複数の実行可能な命令を含む。いくつかの別の実施態様において、各ブロックに記載の機能は、図面に記載の順序から外れて生じ得る。たとえば、関与する機能に応じて、連続して示す2つのブロックが実際のところ、実質的に同時に実行されるようになっていてもよいし、各ブロックが場合により逆の順序で実行されるようになっていてもよい。また、ブロック図またはフローチャート図、あるいはその両方の各ブロックならびにブロック図またはフローチャート図、あるいはその両方におけるブロックの組み合わせは、指定の機能または動作を実行するか、あるいは専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアに基づくシステムにより実装可能であることに留意する。
本開示の種々実施形態の説明は、例示を目的として提示するものであって、何ら網羅的でもなければ、開示の実施形態への限定を意図したものでもない。上記実施形態の範囲および思想から逸脱することなく、多くの改良および変形が当業者には明らかとなるであろう。本明細書において使用する専門用語は、実施形態の原理、実際の適用、もしくは市場に見られる技術の技術的改良の最良の説明のため、または、本明細書に開示の実施形態の当業他者による理解を可能にするために選定している。

Claims (13)

  1. シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することであり、前記メモリ空間が、少なくとも1つのゲスト・オペレーション・システムに対して配分され、前記シャドー動的アドレス変換テーブルが、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む、前記取得することと、
    前記シャドー動的アドレス変換テーブルを構築することと、
    前記シャドー動的アドレス変換テーブルを前記メモリ部に格納することと、
    を含み、
    前記メモリ空間が、複数のメモリ・フレームから成るチェーンを含み、
    前記チェーンの2つの隣り合うメモリ・フレームにおいて、一方のメモリ・フレームが、隣り合うメモリ・フレームを指すポインタを含み、
    前記メモリ空間から前記メモリ部を取得することが、前記複数のメモリ・フレームから成る前記チェーンから少なくとも1つのメモリ・フレームを取得することを含み、
    メモリ・フレーム・テーブルにおいて、前記チェーンの前記複数のメモリ・フレームをマークすることを
    を含むコンピュータ実装方法。
  2. 前記シャドー動的アドレス変換テーブルを破壊するリクエストに応答して、前記シャドー動的アドレス変換テーブルに占有された前記メモリ部を前記メモリ空間に返すことをさらに含む、請求項1に記載のコンピュータ実装方法。
  3. 前記複数のメモリ・フレームから成る前記チェーンのヘッダに前記ポインタを格納することをさらに含む、請求項に記載のコンピュータ実装方法。
  4. シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することであり、前記メモリ空間が、少なくとも1つのゲスト・オペレーション・システムに対して配分され、前記シャドー動的アドレス変換テーブルが、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む、前記取得することと、
    前記シャドー動的アドレス変換テーブルを構築することと、
    前記シャドー動的アドレス変換テーブルを前記メモリ部に格納することと、
    を含み、
    前記シャドー動的アドレス変換テーブルを構築することが、
    前記シャドー動的アドレス変換テーブルを構築する前記リクエストから、変換対象のゲスト論理メモリ・アドレスを取得することと、
    ゲスト・オペレーション・システムから、1つまたは複数のゲスト論理メモリ・アドレスと1つまたは複数のゲスト物理メモリ・アドレスとの間の1つまたは複数のマッピングを含むゲスト動的アドレス変換テーブルを取得することと、
    前記ゲスト論理メモリ・アドレスで前記ゲスト動的アドレス変換テーブルを探索して、ゲスト物理メモリ・アドレスを取得することと、
    前記ゲスト物理メモリ・アドレスに基づいて、ホスト論理メモリ・アドレスを取得することと、
    ホスト・オペレーション・システムから、1つまたは複数のホスト論理メモリ・アドレスと1つまたは複数のホスト物理メモリ・アドレスとの間の1つまたは複数のマッピングを含むホスト動的アドレス変換テーブルを取得することと、
    前記ホスト論理メモリ・アドレスで前記ホスト動的アドレス変換テーブルを探索して、ホスト物理メモリ・アドレスを取得することと、
    前記ゲスト論理メモリ・アドレスと前記ホスト物理メモリ・アドレスとの間のマッピングを前記シャドー動的アドレス変換テーブルに保存することと、
    前記ゲスト論理メモリ・アドレスと前記ゲスト物理メモリ・アドレスとの間のマッピングを前記シャドー動的アドレス変換テーブルに保存することと
    を含む、コンピュータ実装方法。
  5. 前記ホスト物理メモリ・アドレスにより指されたホスト物理メモリの部分を固定することをさらに含む、請求項に記載のコンピュータ実装方法。
  6. 所定の基準が満たされた場合に、付加的なメモリ空間が配分される、請求項1に記載のコンピュータ実装方法。
  7. シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することであり、前記メモリ空間が、少なくとも1つのゲスト・オペレーション・システムに対して配分され、前記シャドー動的アドレス変換テーブルが、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む、前記取得することと、
    前記シャドー動的アドレス変換テーブルを構築することと、
    前記シャドー動的アドレス変換テーブルを前記メモリ部に格納することと、
    の手段を備え実行し、
    前記メモリ空間が、複数のメモリ・フレームから成るチェーンを含み、
    前記チェーンの2つの隣り合うメモリ・フレームにおいて、一方のメモリ・フレームが、隣り合うメモリ・フレームを指すポインタを含み、
    前記メモリ空間から前記メモリ部を取得することが、前記複数のメモリ・フレームから成る前記チェーンから少なくとも1つのメモリ・フレームを取得することを含み、
    メモリ・フレーム・テーブルにおいて、前記チェーンの前記複数のメモリ・フレームをマークすることの手段を備え実行するシステム。
  8. 前記シャドー動的アドレス変換テーブルを破壊するリクエストに応答して、前記シャドー動的アドレス変換テーブルに占有された前記メモリ部を前記メモリ空間に返すことをさらに含む、請求項に記載のシステム。
  9. 前記複数のメモリ・フレームから成る前記チェーンのヘッダに前記ポインタを格納することをさらに含む、請求項に記載のシステム。
  10. シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することであり、前記メモリ空間が、少なくとも1つのゲスト・オペレーション・システムに対して配分され、前記シャドー動的アドレス変換テーブルが、少なくとも1つのゲスト論理メモリ・アドレスと少なくとも1つのホスト物理メモリ・アドレスとの間のマッピングを含む、前記取得することと、
    前記シャドー動的アドレス変換テーブルを構築することと、
    前記シャドー動的アドレス変換テーブルを前記メモリ部に格納することと、
    の手段を備え実行し、
    前記シャドー動的アドレス変換テーブルを構築することが、
    前記シャドー動的アドレス変換テーブルを構築する前記リクエストから、変換対象のゲスト論理メモリ・アドレスを取得することと、
    ゲスト・オペレーション・システムから、1つまたは複数のゲスト論理メモリ・アドレスと1つまたは複数のゲスト物理メモリ・アドレスとの間の1つまたは複数のマッピングを含むゲスト動的アドレス変換テーブルを取得することと、
    前記ゲスト論理メモリ・アドレスで前記ゲスト動的アドレス変換テーブルを探索して、ゲスト物理メモリ・アドレスを取得することと、
    前記ゲスト物理メモリ・アドレスに基づいて、ホスト論理メモリ・アドレスを取得することと、
    ホスト・オペレーション・システムから、1つまたは複数のホスト論理メモリ・アドレスと1つまたは複数のホスト物理メモリ・アドレスとの間の1つまたは複数のマッピングを含むホスト動的アドレス変換テーブルを取得することと、
    前記ホスト論理メモリ・アドレスで前記ホスト動的アドレス変換テーブルを探索して、ホスト物理メモリ・アドレスを取得することと、
    前記ゲスト論理メモリ・アドレスと前記ホスト物理メモリ・アドレスとの間のマッピングを前記シャドー動的アドレス変換テーブルに保存することと、
    前記ゲスト論理メモリ・アドレスと前記ゲスト物理メモリ・アドレスとの間のマッピングを前記シャドー動的アドレス変換テーブルに保存することと、
    を含む、システム。
  11. 前記ホスト物理メモリ・アドレスにより指されたホスト物理メモリの部分を固定することをさらに含む、請求項10に記載のシステム。
  12. 所定の基準が満たされた場合に、付加的なメモリ空間が配分される、請求項に記載のシステム。
  13. コンピュータ・プログラムであって、請求項1ないしのいずれか1項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
JP2020528157A 2017-11-28 2018-11-21 仮想マシンの動的アドレス変換のためのコンピュータ実装方法、システム、およびコンピュータ・プログラム Active JP7089333B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/824,110 2017-11-28
US15/824,110 US10387325B2 (en) 2017-11-28 2017-11-28 Dynamic address translation for a virtual machine
PCT/IB2018/059176 WO2019106491A1 (en) 2017-11-28 2018-11-21 Dynamic address translation for a virtual machine

Publications (3)

Publication Number Publication Date
JP2021504804A JP2021504804A (ja) 2021-02-15
JP2021504804A5 JP2021504804A5 (ja) 2021-03-25
JP7089333B2 true JP7089333B2 (ja) 2022-06-22

Family

ID=66633195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020528157A Active JP7089333B2 (ja) 2017-11-28 2018-11-21 仮想マシンの動的アドレス変換のためのコンピュータ実装方法、システム、およびコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US10387325B2 (ja)
JP (1) JP7089333B2 (ja)
CN (1) CN111183411B (ja)
DE (1) DE112018006068T5 (ja)
GB (1) GB2581113B (ja)
WO (1) WO2019106491A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387325B2 (en) 2017-11-28 2019-08-20 International Business Machines Corporation Dynamic address translation for a virtual machine
US11074195B2 (en) * 2019-06-28 2021-07-27 International Business Machines Corporation Access to dynamic address translation across multiple spaces for operational context subspaces
US11176056B2 (en) 2019-06-28 2021-11-16 International Business Machines Corporation Private space control within a common address space
US10891238B1 (en) 2019-06-28 2021-01-12 International Business Machines Corporation Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context
US11281483B2 (en) 2019-10-16 2022-03-22 International Business Machines Corporation Preserving transient address translation information across a firmware assisted dump procedure

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051900A (ja) 1999-08-17 2001-02-23 Hitachi Ltd 仮想計算機方式の情報処理装置及びプロセッサ
US20080005447A1 (en) 2006-06-30 2008-01-03 Sebastian Schoenberg Dynamic mapping of guest addresses by a virtual machine monitor
CN103793260A (zh) 2013-10-09 2014-05-14 中国电子设备系统工程公司研究所 一种平台虚拟化系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7310721B2 (en) 2003-10-30 2007-12-18 Microsoft Corporation Shadow page tables for address translation control
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US7996628B2 (en) 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8095773B2 (en) * 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8180944B2 (en) * 2009-01-26 2012-05-15 Advanced Micro Devices, Inc. Guest interrupt manager that records interrupts for guests and delivers interrupts to executing guests
US8060722B2 (en) 2009-03-27 2011-11-15 Vmware, Inc. Hardware assistance for shadow page table coherence with guest page mappings
US8799879B2 (en) * 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US9336036B2 (en) 2011-03-31 2016-05-10 Intel Corporation System method for memory virtualization control logic for translating virtual memory in space of guest memory based on translated codes in response to memory failure
US10514938B2 (en) * 2012-12-18 2019-12-24 Dynavisor, Inc. Making direct calls to a native device driver of a hypervisor using dynamic device driver virtualization
CN104239227B (zh) 2013-06-20 2017-06-06 新华三技术有限公司 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法
US9223553B2 (en) * 2013-09-26 2015-12-29 Intel Corporation Methods and apparatus to validate translated guest code in a dynamic binary translator
CN104750623B (zh) 2013-12-31 2017-11-24 华为技术有限公司 一种内存虚拟化的方法及装置
US10387325B2 (en) 2017-11-28 2019-08-20 International Business Machines Corporation Dynamic address translation for a virtual machine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051900A (ja) 1999-08-17 2001-02-23 Hitachi Ltd 仮想計算機方式の情報処理装置及びプロセッサ
US20080005447A1 (en) 2006-06-30 2008-01-03 Sebastian Schoenberg Dynamic mapping of guest addresses by a virtual machine monitor
CN103793260A (zh) 2013-10-09 2014-05-14 中国电子设备系统工程公司研究所 一种平台虚拟化系统

Also Published As

Publication number Publication date
GB202008612D0 (en) 2020-07-22
WO2019106491A1 (en) 2019-06-06
GB2581113B (en) 2020-12-23
CN111183411B (zh) 2023-10-13
US20190163643A1 (en) 2019-05-30
DE112018006068T5 (de) 2020-08-13
US10387325B2 (en) 2019-08-20
GB2581113A (en) 2020-08-05
JP2021504804A (ja) 2021-02-15
CN111183411A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
JP7089333B2 (ja) 仮想マシンの動的アドレス変換のためのコンピュータ実装方法、システム、およびコンピュータ・プログラム
US11409465B2 (en) Systems and methods for managing communication between NVMe-SSD storage device(s) and NVMe-of host unit
US9678918B2 (en) Data processing system and data processing method
RU2690751C2 (ru) Программируемые устройства для обработки запросов передачи данных памяти
US9671970B2 (en) Sharing an accelerator context across multiple processes
US20180129609A1 (en) Method to share a coherent accelerator context inside the kernel
KR102321913B1 (ko) 불휘발성 메모리 장치, 및 그것을 포함하는 메모리 시스템
US20190243757A1 (en) Systems and methods for input/output computing resource control
JP2013537658A (ja) 入力/出力アドレスをメモリ・アドレスに変換するための方法、コンピュータ・システム、およびコンピュータ・プログラム
CN102119508B (zh) 将交换机层级结构后面的多功能设备呈现为单功能设备
US10169247B2 (en) Direct memory access between an accelerator and a processor using a coherency adapter
US10310759B2 (en) Use efficiency of platform memory resources through firmware managed I/O translation table paging
JP2019537153A (ja) サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(lpc)メモリの管理方法、アダプタ、プログラム
CN116010296A (zh) 一种处理请求的方法、装置及系统
US10929302B2 (en) MMIO addressing using a translation table
CN112764668A (zh) 扩展gpu存储器的方法、电子设备和计算机程序产品
US10909044B2 (en) Access control device, access control method, and recording medium containing access control program
US20170017579A1 (en) Flexible i/o dma address allocation in virtualized systems
CN118152075A (zh) 轻量级rdma虚拟化方法、系统、装置、电子设备及介质
CN118159951A (zh) 一种处理请求的方法、装置及系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210128

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220222

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20220421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220425

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

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: 20220531

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20220531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220608

R150 Certificate of patent or registration of utility model

Ref document number: 7089333

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150