(57)【要約】【課題】仮想マシンの動的アドレス変換のための方法、システム、およびコンピュータ・プログラム製品を提供する。【解決手段】方法は、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することを含み、メモリ空間が、少なくとも１つのゲスト・オペレーション・システムに対して配分され、シャドー動的アドレス変換テーブルが、少なくとも１つのゲスト論理メモリ・アドレスと少なくとも１つのホスト物理メモリ・アドレスとの間のマッピングを含む。方法は、シャドー動的アドレス変換テーブルを構築することと、シャドー動的アドレス変換テーブルをメモリ部に格納することと、をさらに含む。【選択図】図４
2021504804.tif 000002
【特許請求の範囲】
【請求項１】
シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することであり、前記メモリ空間が、少なくとも１つのゲスト・オペレーション・システムに対して配分され、前記シャドー動的アドレス変換テーブルが、少なくとも１つのゲスト論理メモリ・アドレスと少なくとも１つのホスト物理メモリ・アドレスとの間のマッピングを含む、前記取得することと、
前記シャドー動的アドレス変換テーブルを構築することと、
前記シャドー動的アドレス変換テーブルを前記メモリ部に格納することと、
を含むコンピュータ実装方法。
【請求項２】
前記シャドー動的アドレス変換テーブルを破壊するリクエストに応答して、前記シャドー動的アドレス変換テーブルに占有された前記メモリ部を前記メモリ空間に返すことをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記メモリ空間が、複数のメモリ・フレームから成るチェーンを含み、
前記チェーンの２つの隣り合うメモリ・フレームにおいて、一方のメモリ・フレームが、隣り合うメモリ・フレームを指すポインタを含み、
前記メモリ空間から前記メモリ部を取得することが、前記複数のメモリ・フレームから成る前記チェーンから少なくとも１つのメモリ・フレームを取得することを含む、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記複数のメモリ・フレームから成る前記チェーンのヘッダに前記ポインタを格納することをさらに含む、請求項３に記載のコンピュータ実装方法。
【請求項５】
前記シャドー動的アドレス変換テーブルを構築することが、
前記シャドー動的アドレス変換テーブルを構築する前記リクエストから、変換対象のゲスト論理メモリ・アドレスを取得することと、
ゲスト・オペレーション・システムから、１つまたは複数のゲスト論理メモリ・アドレスと１つまたは複数のゲスト物理メモリ・アドレスとの間の１つまたは複数のマッピングを含むゲスト動的アドレス変換テーブルを取得することと、
前記ゲスト論理メモリ・アドレスで前記ゲスト動的アドレス変換テーブルを探索して、ゲスト物理メモリ・アドレスを取得することと、
前記ゲスト物理メモリ・アドレスに基づいて、ホスト論理メモリ・アドレスを取得することと、
ホスト・オペレーション・システムから、１つまたは複数のホスト論理メモリ・アドレスと１つまたは複数のホスト物理メモリ・アドレスとの間の１つまたは複数のマッピングを含むホスト動的アドレス変換テーブルを取得することと、
前記ホスト論理メモリ・アドレスで前記ホスト動的アドレス変換テーブルを探索して、ホスト物理メモリ・アドレスを取得することと、
前記ゲスト論理メモリ・アドレスと前記ホスト物理メモリ・アドレスとの間のマッピングを前記シャドー動的アドレス変換テーブルに保存することと、
を含む、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記ホスト物理メモリ・アドレスにより指されたホスト物理メモリの部分を固定することをさらに含む、請求項５に記載のコンピュータ実装方法。
【請求項７】
前記シャドー動的アドレス変換テーブルを構築することが、前記ゲスト論理メモリ・アドレスと前記ゲスト物理メモリ・アドレスとの間のマッピングを前記シャドー動的アドレス変換テーブルに保存することをさらに含む、請求項５に記載のコンピュータ実装方法。
【請求項８】
所定の基準が満たされた場合に、付加的なメモリ空間が配分される、請求項１に記載のコンピュータ実装方法。
【請求項９】
請求項１ないし８のいずれかに記載の方法のすべてのステップを実行するように構成された手段を備えたシステム。
【請求項１０】
コンピュータ・システム上で実行された場合に、請求項１ないし８のいずれかに記載の方法のすべてのステップを実行する命令を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は一般的に、コンピュータ技術に関し、詳細には、仮想マシンの動的アドレス変換に関する。
【背景技術】
【０００２】
コンピュータ・システム、特に企業規模のサーバにおいては、仮想マシン技術が広く用いられている。このようなシステムにおいては、ホスト・オペレーション・システムにおけるアプリケーションまたはホスト・オペレーション・システム自体と考えられるハイパーバイザの管理の下、複数の仮想マシン（すなわち、ゲスト・オペレーション／オペレーティング・システム）が同じハードウェア構造において独立かつ同時に動作し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
仮想マシンのアプリケーションがシステム・メモリのある部分へのアクセスを要求した場合は、ゲスト論理メモリ・アドレスからホスト物理メモリ・アドレスへの動的アドレス変換が求められる。
【課題を解決するための手段】
【０００４】
本開示の実施形態の第１の態様は、動的アドレス変換のための方法を提供する。方法は、シャドー動的アドレス変換テーブル（shadow dynamic address translation table）を構築するリクエストに応答して、メモリ空間からメモリ部を取得することを含み、メモリ空間が、少なくとも１つのゲスト・オペレーション・システム（guest operation system）に対して配分され、シャドー動的アドレス変換テーブルが、少なくとも１つのゲスト論理メモリ・アドレスと少なくとも１つのホスト物理メモリ・アドレスとの間のマッピングを含む。方法は、シャドー動的アドレス変換テーブルを構築することと、シャドー動的アドレス変換テーブルをメモリ部に格納することと、をさらに含む。
【０００５】
本開示の実施形態の第２の態様は、動的アドレス変換のためのコンピュータ・システムを提供する。このコンピュータ・システムは、少なくとも１つのプロセッサと、動的アドレス変換のための補助コントローラ（assist controller）と、少なくとも１つのプロセッサおよび補助コントローラに結合されたメモリと、を備える。一組のコンピュータ・プログラム命令がメモリに格納され、少なくとも１つのプロセッサおよび補助コントローラにより実行されて、ある方法を実行する。方法は、少なくとも１つのプロセッサにより、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することを含み、メモリ空間が、少なくとも１つのゲスト・オペレーション・システムに対して配分され、シャドー動的アドレス変換テーブルが、少なくとも１つのゲスト論理メモリ・アドレスと少なくとも１つのホスト物理メモリ・アドレスとの間のマッピングを含む。方法は、補助コントローラにより、シャドー動的アドレス変換テーブルを構築することと、補助コントローラにより、シャドー動的アドレス変換テーブルをメモリ部に格納することと、をさらに含む。
【０００６】
本開示の実施形態の第３の態様は、動的アドレス変換のためのコンピュータ・プログラム製品を提供する。このコンピュータ製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を備える。コンピュータ可読記憶媒体は、一時的信号それ自体ではない。プログラム命令は、補助コントローラによる実行によって、ある方法を実行可能である。方法は、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部を取得することを含み、メモリ空間が、少なくとも１つのゲスト・オペレーション・システムに対して配分され、シャドー動的アドレス変換テーブルが、少なくとも１つのゲスト論理メモリ・アドレスと少なくとも１つのホスト物理メモリ・アドレスとの間のマッピングを含む。方法は、シャドー動的アドレス変換テーブルを構築することと、シャドー動的アドレス変換テーブルをメモリ部に格納することと、をさらに含む。
【０００７】
添付の図面における本開示のいくつかの実施形態のより詳細な説明によって、本開示の上記および他の目的、特徴、および利点がより明らかとなる。本開示の実施形態において、同じ参照記号は一般的に、同じ構成要素を表す。
【図面の簡単な説明】
【０００８】
【図１】本開示の実施形態の実現に適用し得る例示的なコンピュータ・システムを示したブロック図である。
【図２】本開示の一実施形態に係る、図１のようなコンピュータ・システムにおいて実行可能な仮想マシン・システムの基本構造を示したブロック図である。
【図３】本開示の一実施形態に係る、仮想マシンのアプリケーションがハードウェア・プラットフォームの物理メモリにアクセスする様子を示した例示的な図である。
【図４】本開示の一実施形態に係る、仮想マシンの動的アドレス変換のための方法を示したフローチャートである。
【図５】本開示の一実施形態に係る、図４のステップＳ４０１において配分された複数のメモリ・フレームから成るチェーンを示した図である。
【図６】本開示の一実施形態に係る、チェーンからの自由メモリ・フレームの取得を示した図である。
【図７】本開示の一実施形態に係る、シャドー動的アドレス変換テーブルを構築するプロセスのフローチャートである。
【図８】本開示の一実施形態に係る、シャドー動的アドレス変換テーブルが構築された場合のデータ伝送を示した図である。
【図９】本開示の一実施形態に係る、本開示のいくつかの実施形態の実現に適用し得る別の例示的なコンピュータ・システムを示したブロック図である。
【図１０】本開示の一実施形態に係る、ＣＰＵと補助コントローラとの協働を示した図である。
【発明を実施するための形態】
【０００９】
本開示のいくつかの好適な実施形態を示した添付の図面を参照して、これら好適な実施形態をより詳しく説明する。ただし、本開示は、さまざまな様態で実現可能であるため、本明細書に開示の実施形態に限定されるものと解釈すべきではない。
【００１０】
ここで図１を参照して、この図は、本開示の実施形態の実現に適用し得る例示的なコンピュータ・システム／サーバ１２を示している。また、図１は、本開示の実施形態の実現に適用し得る通信デバイス等の携帯型電子デバイスの説明例を示すように構成されている。コンピュータ・システム／サーバ１２は、例示に過ぎず、本明細書に記載の本開示の実施形態の使用または機能の範囲に関する限定を何ら示唆するものではない。
【００１１】
図１に示すように、コンピュータ・システム／サーバ１２は、汎用コンピューティング機器の形態で示している。コンピュータ・システム／サーバ１２の構成要素としては、１つまたは複数のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含むさまざまなシステム構成要素をプロセッサ１６に結合するバス１８が挙げられるが、これらに限定されない。
【００１２】
バス１８は、任意の複数種類のバス構造のうちの１つまたは複数を表し、多様なバス・アーキテクチャのいずれかを用いたメモリ・バスもしくはメモリ・コントローラ、周辺機器用バス、アクセラレイテッド・グラフィックス・ポート、ならびにプロセッサもしくはローカル・バスが挙げられる。非限定的な一例として、このようなアーキテクチャとしては、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス規格協会（ＶＥＳＡ）ローカル・バス、および周辺機器相互接続（ＰＣＩ）バスが挙げられる。
【００１３】
コンピュータ・システム／サーバ１２は通常、多様なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ１２によりアクセス可能な任意の利用可能な媒体であってもよく、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体の両者を含む。
【００１４】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２、あるいはその両方等、揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム／サーバ１２は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ・システム記憶媒体をさらに含んでいてもよい。非リムーバブル不揮発性磁気媒体（図示しないが、通常は「ハード・ドライブ」と称する）に対する読み書き用として、ストレージ・システム３４を設けることも可能であるが、一例に過ぎない。図示はしていないものの、リムーバブル不揮発性磁気ディスク（たとえば、「フロッピー（Ｒ）・ディスク」）に対する読み書き用の磁気ディスク・ドライブならびにＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、もしくは他の光学媒体等のリムーバブル不揮発性光ディスクに対する読み書き用の光ディスク・ドライブを設けることも可能である。このような場合は、１つまたは複数のデータ媒体インターフェースによって、それぞれをバス１８に接続可能である。以下に別途図示および説明する通り、メモリ２８は、本開示の実施形態の機能を実行するように構成された一組（たとえば、少なくとも一組）のプログラム・モジュールを有する少なくとも１つのプログラム製品を含んでいてもよい。
【００１５】
非限定的な一例として、一組（少なくとも一組）のプログラム・モジュール４２を有するプログラム／ユーティリティ４０のほか、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データがメモリ２８に格納されていてもよい。オペレーティング・システム、１つもしく複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組み合わせはそれぞれ、ネットワーキング環境の一実施態様を含んでいてもよい。プログラム・モジュール４２は一般的に、本明細書に記載の本開示の実施形態の機能または方法、あるいはその両方を実行する。
【００１６】
また、コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４等の１つもしくは複数の外部デバイス１４、ユーザによる当該コンピュータ・システム／サーバ１２との相互作用を可能にする１つもしくは複数のデバイス、または当該コンピュータ・システム／サーバ１２による１つもしくは複数の他のコンピュータ機器との通信を可能にする任意のデバイス（たとえば、ネットワーク・カード、モデム等）、あるいはその組み合わせと通信するようになっていてもよい。このような通信は、入出力（Ｉ／Ｏ）インターフェース２２を介して発生し得る。さらに、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（たとえば、インターネット）、あるいはその組み合わせ等の１つまたは複数のネットワークと通信可能である。図示のように、ネットワーク・アダプタ２０は、バス１８を介して、コンピュータ・システム／サーバ１２の他の構成要素と通信する。図示はしていないものの、コンピュータ・システム／サーバ１２と併せて、他のハードウェアまたはソフトウェア構成要素、あるいはその両方を使用することも可能であることが了解されるものとする。その例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ記録ストレージ・システム等が挙げられるが、これらに限定されない。
【００１７】
図２は、本開示の一実施形態に係る、図１のようなコンピュータ・システムにおいて実行可能な仮想マシン・システムの基本構造を示したブロック図である。図２に示すように、ハイパーバイザ２０１の管理下において、複数の仮想マシン２０２、２０３、２０４がコンピュータ・システム／サーバ１２の同じハードウェア・プラットフォームで独立かつ同時に動作する。
【００１８】
コンピュータ・システム／サーバ１２のプロセッサ、メモリ、またはストレージ・ディスク等のハードウェア・リソースが異なる仮想マシンに対して動的または静的に割り当てられていてもよい。通例は、少なくとも特定の動作期間において、仮想マシン２０２等の仮想マシンに割り当てられたハードウェア・リソースが独立しており、このように割り当てられたハードウェア・リソースに対するアクセスは、仮想マシン２０３等の他の仮想マシンの影響を受けない。すなわち、仮想マシン２０２のユーザは、仮想マシン２０３のユーザの影響を受けない。コンピュータ・システム、特に企業規模のサーバ等の大型コンピュータ・システムにおけるハードウェア・リソースの利用は、大幅に改善され得る。また、異なる権限を仮想マシンそれぞれに割り当てることによって、ユーザのセキュリティ管理を正確に実現可能である。
【００１９】
図３は、本開示の一実施形態に係る、仮想マシンのアプリケーションがハードウェア・プラットフォームの物理メモリにアクセスする様子を示した例示的な図である。図３に示すように、ユーザのアプリケーション３０１は、ゲスト論理メモリ・アドレス３０４によって、メモリへのアクセスを要求する。このリクエストに応答して、ゲスト・オペレーション・システム３０２は、ゲスト論理メモリ・アドレス３０４をゲスト物理メモリ・アドレス３０５に変換する。この変換は、ゲスト論理メモリ・アドレスとゲスト物理メモリ・アドレスとの間のマッピングを含むゲスト動的アドレス変換テーブルを探索することにより実現されるようになっていてもよい。ゲスト物理メモリ・アドレス３０５は、ハイパーバイザ２０１に送信される。たとえば、ハイパーバイザ２０１は、ホスト・オペレーション・システムの下で動作する管理アプリケーションであってもよいし、ホスト・オペレーション・システムそれ自体であってもよい。ハイパーバイザ２０１は、ゲスト物理メモリ・アドレス３０５に基づいて、ホスト論理メモリ・アドレス３０６を取得する。たとえば、ゲスト物理メモリ・アドレス３０５がホスト論理メモリ・アドレス３０６それ自体であってもよい。すなわち、ゲスト物理メモリ・アドレス３０５がホスト論理メモリ・アドレス３０６として直接用いられるようになっていてもよい。ハイパーバイザ２０１は、ホスト論理メモリ・アドレス３０６とホスト物理メモリ・アドレス３０７との間のマッピングを含むホスト動的アドレス変換テーブルを探索して、ホスト論理メモリ・アドレス３０６をホスト物理メモリ・アドレス３０７に変換する。ホスト物理メモリ・アドレス３０７は、コンピュータ・システム／サーバ１２のメモリ２８中のホスト物理メモリ３０３へのアクセスに使用可能である。そして、データまたはアクセス結果を含む３０８、３０９、および３１０等のフィードバックがハイパーバイザ２０１により取得された後、ゲスト・オペレーション・システム３０２およびユーザのアプリケーション３０１へと順次戻される。
【００２０】
これらメモリ・アドレスの変換においては、ＣＰＵが割り込みを必要とし、ゲスト・オペレーション・システムを動作させるゲスト状態とホスト・オペレーション・システムを動作させるホスト／カーネル状態との間で変化する。ＣＰＵの割り込みには、多大な時間を必要とする。さらに、アプリケーションが通例は短時間に複数のリクエストを与えることから、前述のプロセスが繰り返し循環して、ＣＰＵの負荷が非常に大きくなる。
【００２１】
大量データの交換を伴うＩ／Ｏ動作において、ユーザのアプリケーションは、ＤＭＡ（直接メモリ・アクセス）を目的として、Ｉ／Ｏバッファを要求するようにしてもよい。Ｉ／Ｏバッファのゲスト論理メモリ・アドレス３０４と対応するホスト物理メモリ・アドレス３０７との間のマッピングを含むシャドー動的アドレス変換テーブルが構築され、ＤＭＡコントローラに送られるようになっていてもよい。ＤＭＡコントローラは、シャドー動的アドレス変換テーブルを用いてホスト物理メモリに直接アクセスすることにより、中央演算処理装置（ＣＰＵ）（処理ユニット１６のプロセッサであってもよい）を解放するようにしてもよい。
【００２２】
この解決手段の下、ユーザのアプリケーション３０１は、Ｉ／Ｏ動作の前にシャドー動的アドレス変換テーブルを構築することをＣＰＵに要求するようにしてもよい。さらに、アクセス対象のシステム・メモリの部分の固定（pin）によって、メモリからハード・ディスクへのスワッピングを回避するようにしてもよい。そして、Ｉ／Ｏ動作においては、ＤＭＡコントローラがホスト物理メモリにアクセスするようにしてもよい。Ｉ／Ｏ動作の終了後、ユーザのアプリケーション３０１は、シャドー動的アドレス変換テーブルを破壊／登録抹消することをＣＰＵに要求するようにしてもよい。複数のゲスト論理メモリ・アドレスから複数のホスト物理メモリ・アドレスへの変換は、ＣＰＵにより一度で終了となる。このため、Ｉ／Ｏ動作においては、ＣＰＵの割り込みが不要となる。
【００２３】
ただし、ユーザのアプリケーションがシャドー動的アドレス変換テーブルの構築／登録、破壊／登録抹消、または補正／刷新を要求するたびに、ＣＰＵは、ゲスト状態からホスト／カーネル状態への切り替えのため、割り込みを受けることになる。これらの状態変化およびその関連する状況では、特にゲスト・オペレーション・システムにおけるユーザのアプリケーションがＩ／Ｏ動作後ごとにシャドー動的アドレス変換テーブルの刷新を頻繁に要求する場合、依然として多くのＣＰＵサイクルが必要となる。
【００２４】
図４は、本開示の一実施形態に係る、仮想マシンの動的アドレス変換のための方法を示したフローチャートである。図４に示すように、ステップＳ４０１においては、少なくとも１つのゲスト・オペレーション・システムに対して、メモリ空間が配分される。ステップＳ４０２においては、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、メモリ空間からメモリ部が取得される。これは、ホスト状態への切り替えなく行われるようになっていてもよい。シャドー動的アドレス変換テーブルは、少なくとも１つのゲスト論理メモリ・アドレスと少なくとも１つのホスト物理メモリ・アドレスとの間のマッピングを含む。ステップＳ４０３においては、シャドー動的アドレス変換テーブルが構築される。ステップＳ４０４においては、シャドー動的アドレス変換テーブルがメモリ部に格納される。配分されたメモリ空間は、ホスト状態への切り替えなく、シャドー動的アドレス変換テーブルの構築またはアクセスを目的として、補助コントローラ等のＣＰＵ以外の任意のプロセッサまたはコントローラのアクセスを受け得る。このため、シャドー動的アドレス変換テーブルの構築またはアクセスのためのＣＰＵの割り込みが不要となり、ＣＰＵの負荷がさらに抑えられ得る。
【００２５】
仮想マシンの動的アドレス変換のための方法には、ステップＳ４０５をさらに含んでいてもよい。ステップＳ４０５においては、シャドー動的アドレス変換テーブルを破壊するリクエストに応答して、シャドー動的アドレス変換テーブルに占有されたメモリ部がメモリ空間に返される。メモリ空間の占有部の変換によって、メモリ空間の使用効率が改善されることになる。
【００２６】
例示的なコンピュータ・システムにおいて、ホスト物理メモリ３０３は、管理の利便性のためにサイズが固定された多くのメモリ・フレームに分割されている。したがって、本開示の実施形態において、メモリ空間は、複数のメモリ・フレームから成るチェーンを含んでいてもよい。ステップＳ４０２において、メモリ空間からメモリ部が取得された場合は、少なくとも１つのメモリ・フレームがチェーンから取得される。複数のメモリ・フレームから成るチェーンは、ＣＰＵ以外のプロセッサまたはコントローラによるアクセスの利便性を向上させ得る。
【００２７】
図５は、本開示の一実施形態に係る、図４のステップＳ４０１において配分された複数のメモリ・フレームから成るチェーンを示した図である。図５に示すように、ステップＳ４０１においては、ＣＰＵが複数のメモリ・フレームを配分してチェーン５０を構築するようにしてもよい。チェーンの初期化サイズは、予め設定されていてもよい。
【００２８】
本開示の実施形態において、チェーン５０のヘッド５０１を指すチェーン・ポインタ６０１は、ＣＰＵプレフィックス・ページ等、ホスト物理メモリ３０３中の所定の場所に格納されて、アクセスを容易化するようにしてもよい。チェーンの２つの隣り合うメモリ・フレームにおいて、一方のメモリ・フレームは、他方のメモリ・フレームを指すポインタを含む。すなわち、テール５０４を除くチェーン５０の各メモリ・フレームは、ヘッド５０１のポインタ５０１１、ミドル５０２のポインタ５０２１、およびミドル５０３のポインタ５０３１等、チェーン５０の次のメモリ・フレームへのポインタを含む。チェーンへのポインタまたはチェーン中のポインタは、チェーンのアクセス速度をさらに増大させるように、アーキテクチャに依存していてもよい。
【００２９】
さらに、ＣＰＵは、メモリ・フレーム・テーブル６１においてチェーン５０の複数のメモリ・フレームをマークすることにより、これらのメモリ・フレームが他の目的で使用されないように予約することも可能である。
【００３０】
図６は、本開示の一実施形態に係る、チェーンからの自由メモリ・フレームの取得を示した図である。図４または図５のステップＳ４０２において、補助コントローラは、シャドー動的アドレス変換テーブルを構築するリクエストに応答して、チェーンからメモリ・フレームを取得するようにしてもよい。たとえば、このリクエストは、大量データの交換を伴うＩ／Ｏ動作を必要とするユーザのアプリケーションに由来し得る。図６に示すように、チェーンのメモリ・フレーム５０１および５０３間のメモリ・フレーム５０２が取り出される。ポインタ５０２１の値は、メモリ・フレーム５０２より前のメモリ・フレーム５０１にコピーされるようになっていてもよい。そして、メモリ・フレーム５０１のポインタ５０１１は、メモリ・フレーム５０２の次のメモリ・フレーム５０３を指すことになる。ヘッド、テールを含むチェーンの如何なるメモリ・フレームが取り出されてもよいことが了解されるものとする。
【００３１】
本開示の一実施形態によれば、所定の基準が満たされた場合に、メモリ空間がさらに配分されるようになっていてもよい。場合によっては、チェーンが空であってもよい。当該状況に応答して、ＣＰＵは、メモリ空間をさらに配分するようにしてもよい。すなわち、新たなメモリ・フレームをチェーン５０に配分・追加するようにしてもよい。このプロセスは、チェーン５０のメモリ・フレームの数が予め設定された値に達するか、または、構築されるシャドー動的アドレス変換テーブルのサイズに適合するまで繰り返されるようになっていてもよい。
【００３２】
補助コントローラは、ステップＳ４０２を実行してチェーン５０からメモリ・フレームを取得し、チェーン５０が空であることが分かったら、新たなメモリ・フレームをチェーン５０に配分・追加することをＣＰＵに求めるようにしてもよい。ＣＰＵは、当該リクエストの適時な取り扱いのため、割り込みを受けるようになっていてもよい。また、この代替または追加として、ＣＰＵは、アイドル動作サイクルにおいて能動的に、チェーン５０が空であるかを周期的に確認することにより、割り込みの回数を減らすようにしてもよい。
【００３３】
図７は、本開示の一実施形態に係る、シャドー動的アドレス変換テーブルを構築するプロセスのフローチャートである。図４のステップＳ４０３は、補助コントローラにより実行されるようになっていてもよい。図７に示すように、ステップＳ４０３は、ステップＳ７０１〜Ｓ７０７を含んでいてもよい。ステップＳ７０１においては、シャドー動的アドレス変換テーブルを構築するリクエストから、変換対象のゲスト論理メモリ・アドレスが取得される。ステップＳ７０２においては、ゲスト・オペレーション・システムから、ゲスト論理メモリ・アドレスとゲスト物理メモリ・アドレスとの間のマッピングを含むゲスト動的アドレス変換テーブルが取得される。ステップＳ７０３においては、ゲスト論理メモリ・アドレスによるゲスト動的アドレス変換テーブルの探索によって、ゲスト物理メモリ・アドレスを取得する。ステップＳ７０４においては、ゲスト物理メモリ・アドレスに基づいて、ホスト論理メモリ・アドレスが取得される。ステップＳ７０５においては、ホスト・オペレーション・システムから、ホスト論理メモリ・アドレスとホスト物理メモリ・アドレスとの間のマッピングを含むホスト動的アドレス変換テーブルが取得される。ステップＳ７０６においては、ホスト論理メモリ・アドレスによるホスト動的アドレス変換テーブルの探索によって、ホスト物理メモリ・アドレスを取得する。ステップＳ７０７においては、ゲスト論理メモリ・アドレスとホスト物理メモリ・アドレスとの間のマッピングがシャドー動的アドレス変換テーブルに保存される。たとえば、ゲスト論理メモリ・アドレスおよびホスト物理メモリ・アドレスがともに、シャドー動的アドレス変換テーブル中の対応位置に保存される。
【００３４】
図８は、本開示の一実施形態に係る、シャドー動的アドレス変換テーブルが構築された場合のデータ伝送を示した図である。図８に示すように、ユーザのアプリケーションからのシャドー動的アドレス変換テーブルを構築するリクエストと併せて、このリクエストが割り当てられたゲスト論理メモリ・アドレス・リスト８０１も送信される。
【００３５】
ステップＳ７０１においては、たとえば、補助コントローラによって、ゲスト論理メモリ・アドレス・リスト８０１から、変換対象のゲスト論理メモリ・アドレスＡ１が取得される。図８のリスト８０１は、プロセスをより明瞭化するために使用される。本開示の別の例示的な実施形態においては、リスト８０１が省略されてもよい。すべての必要なゲスト論理メモリ・アドレスがゲスト動的アドレス変換テーブル８０２に格納済みであることから、補助コントローラは、ゲスト動的アドレス変換テーブル８０２から直接、ゲスト論理メモリ・アドレスを取得する。
【００３６】
ステップＳ７０２において、補助コントローラは、ゲスト動的アドレス変換テーブル８０２を取得する。たとえば、補助コントローラによる取得の利便性のため、ゲスト・オペレーション・システムは、補助コントローラがアクセス可能なメモリにゲスト動的アドレス変換テーブル８０２を再保存することも可能であるし、ゲスト動的アドレス変換テーブル８０２が格納されたメモリの対応するポインタ／アドレスを補助コントローラに送るだけでもよい。
【００３７】
ステップＳ７０３において、補助コントローラは、ゲスト動的アドレス変換テーブル８０２（具体的には、ゲスト論理メモリ・アドレス列８０２１）を探索して、ゲスト物理メモリ・アドレス列８０２２から、対応するゲスト物理メモリ・アドレスＢ２を取得する。図８のゲスト動的アドレス変換テーブル８０２は、ゲスト論理メモリ・アドレス８０２１が連続する一方、ゲスト物理メモリ・アドレス８０２２が動的かつ非連続的に割り当てられる一般的な状況も示している。ゲスト動的アドレス変換テーブル８０２に示すマッピング関係についても、通例は動的かつ予測不可能であるため、例示である。
【００３８】
ステップＳ７０４において、補助コントローラは、ホスト論理メモリ・アドレスＢ２を取得するが、これは、ゲスト物理メモリ・アドレスＢ２それ自体である。図８においては、ホスト論理メモリ・アドレスの例示的なリスト８０３が格納されるようになっていてもよく、ゲスト物理メモリ・アドレス８０３１は、ホスト論理メモリ・アドレス８０３２と同じ値である。
【００３９】
ステップＳ７０５において、補助コントローラは、ホスト動的アドレス変換テーブル８０４を取得する。ホスト・オペレーション・システムにより管理されるホスト動的アドレス変換テーブル８０４の構造は、ゲスト・オペレーション・システムにより管理されるゲスト動的アドレス変換テーブル８０２の構造に類似する。ホスト論理メモリ・アドレス８０４１が連続する一方、ホスト物理メモリ・アドレス８０４２は、非連続的に割り当てられる。
【００４０】
同様に、ホスト・オペレーション・システムは、補助コントローラがアクセス可能なメモリにホスト動的アドレス変換テーブル８０４を再保存することも可能であるし、ホスト動的アドレス変換テーブル８０４が格納されたメモリの対応するポインタ／アドレスを補助コントローラに送るだけでもよい。送信の再保存は、ホスト・オペレーション・システムにより前もって完了されていてもよく、このため、ホスト動的アドレス変換テーブル８０４は、ホスト状態への切り替えなく、補助コントローラにより容易に取得可能である。
【００４１】
ステップＳ７０６において、補助コントローラは、ホスト論理メモリ・アドレスＢ２によるホスト動的アドレス変換テーブル８０４の探索によって、ホスト物理メモリ・アドレスＣ５を取得する。
【００４２】
ステップＳ７０７において、補助コントローラは、ゲスト論理メモリ・アドレスＡ１とホスト物理メモリ・アドレスＣ５をシャドー動的アドレス変換テーブル８０５に保存する。
【００４３】
最後に、ゲスト論理メモリ・アドレス８０５１およびホスト物理メモリ・アドレス８０５２がシャドー動的アドレス変換テーブル８０５に含まれていてもよい。
【００４４】
さらに、ゲスト論理メモリ・アドレスとゲスト物理メモリ・アドレスとの間のマッピングがシャドー動的アドレス変換テーブル８０５に保存されるようになっていてもよい。たとえば、ゲスト物理メモリ・アドレスＢ２がシャドー動的アドレス変換テーブル８０５に保存されるようになっていてもよい。その結果、対応するゲスト物理メモリ・アドレス８０５３がシャドー動的アドレス変換テーブル８０５に含まれるようになっていてもよい。したがって、ゲスト・オペレーション・システムによるゲスト論理メモリ・アドレスとゲスト物理メモリ・アドレスとの間のマッピングの変化が後続し、必要に応じて適時に、シャドー動的アドレス変換テーブル８０５に反映されるようになっていてもよい。
【００４５】
シャドー動的アドレス変換テーブル８０５は、図６に示すメモリ・フレーム５０２等、１つまたは複数のメモリ・フレームに格納されていてもよい。ＤＭＡコントローラ等、権限を与えられた任意のデバイスまたはアプリケーションがアクセス可能である。同時に、予期せぬ動作の回避、特に、スワッピング・プロセスにおけるメモリからハード・ディスクへのスワッピングの回避のため、ホスト物理メモリ・アドレス８０５２に対応するホスト物理メモリの部分が固定されるようにマークされていてもよい。
【００４６】
場合により、ホスト物理メモリ・アドレスＣ５が無効の場合は、エラーが発生して、プロセスが中断されるようになっていてもよい。補助コントローラが割り込みを生成して、これがＣＰＵにより取り扱われるようになっていてもよい。
【００４７】
図８は例示的な図に過ぎず、Ａ１、Ｂ２、Ｃ５等の番号はすべて、本実施形態を明瞭化するための例示に過ぎず、本実施形態を何ら限定するものではない。たとえば、ゲスト論理メモリ・アドレスは送信時に変化しないため、０、１、・・・ｎ等のそれぞれのエントリ番号の並び順が維持される限りは、それぞれの値がシャドー動的アドレス変換テーブル８０５に送信・格納され得ない。さらに、メモリ管理のセキュリティまたは原理、あるいはその両方を考慮すると、Ｃ５等の番号もエントリ番号となり得るが、これらは依然として、ハードウェアへの直接アクセスのために変換が必要である。この状況において、Ｃ５が有効なエントリ番号である一方、変換アドレスが無効な場合は、エラーが同じく発生して、プロセスが中断されるようになっていてもよい。
【００４８】
さらに、ステップＳ４０５においては、シャドー動的アドレス変換テーブル８０５を破壊するリクエストに応答して（通例、シャドー動的アドレス変換テーブル８０５の使用後に発生する）、補助コントローラは、シャドー動的アドレス変換テーブルに占有されたメモリ・フレーム５０２をチェーン５０に返す。メモリ・フレーム５０２は、チェーン５０のテール等、任意の位置に追加されるようになっていてもよい。
【００４９】
本開示の実施形態においては、現在固定されているホスト物理メモリのアドレスを含むシャドー動的アドレス変換テーブルを格納するように、複数のメモリ・フレームを含むチェーン５０が予め割り当てられている。このため、当該固定されたホスト物理メモリ（ＤＭＡのＩ／Ｏバッファとして使用されるものを含む）は、メモリの統計解析等、ハードウェア・リソースの管理を容易化するように、一元的に管理されるようになっていてもよい。さらに、ハイパーバイザ２０１は、統計解析に基づいて、仮想マシンに対するリソース配分戦略を調整するようにしてもよい。
【００５０】
図９は、本開示のいくつかの実施形態の実現に適用し得る別の例示的なコンピュータ・システムを示したブロック図である。図９に示すように、コンピュータ・システム／サーバ１２は、補助コントローラ１６１をさらに備える。プログラム／ユーティリティ４０に含まれるプログラム・モジュール４２に対応する一組のコンピュータ・プログラム命令がメモリ２８に格納され、処理ユニット１６のＣＰＵ１６０等のプロセッサおよび補助コントローラ１６１の少なくとも一方により実行されて、動作を行う。これらの動作においては、プロセッサのうちの少なくとも１つによって、メモリ空間が配分される。シャドー動的アドレス変換テーブルを構築するリクエストに応答して、補助コントローラにより、メモリ空間からメモリ部が取得される。シャドー動的アドレス変換テーブルは、少なくとも１つのゲスト論理メモリ・アドレスと少なくとも１つのホスト物理メモリ・アドレスとの間のマッピングを含む。シャドー動的アドレス変換テーブルは、補助コントローラにより構築される。シャドー動的アドレス変換テーブルは、補助コントローラによって、メモリ部に格納される。シャドー動的アドレス変換テーブルを破壊するリクエストに応答して、シャドー動的アドレス変換テーブルに占有されたメモリ部は、補助コントローラによりメモリ空間に返される。簡潔に、プロセッサのうちの上記少なくとも１つは、大きな権限を有するＣＰＵ１６０であってもよく、プログラム命令のほとんどを実行する。ＣＰＵ１６０は、コンピュータ・システム／サーバ１２において、ホスト・オペレーション・システムおよびゲスト・オペレーション・システムを動作させる。補助コントローラ１６１は、処理ユニット１６のプロセッサであってもなくてもよいが、シャドー動的アドレス変換テーブルを自動的に構築、刷新、および破壊するように作用する。新たなハードウェアが補助コントローラに使用されるようになっていてもよいし、既存のハードウェアが補助コントローラ１６１として機能するように割り当て・再プログラミングされるようになっていてもよい。
【００５１】
図１０は、本開示の一実施形態に係る、ＣＰＵと補助コントローラとの協働を示した図である。図１０に示すように、補助コントローラ１６１がなくても、ＣＰＵ１００１は、ホスト・オペレーション・システムを動作させるホスト／カーネル状態１０２１とゲスト・オペレーション・システムを動作させるゲスト状態１０２２との間で頻繁に変化する必要がある。たとえば、ＣＰＵ１００１がゲスト・オペレーション・システムを動作させるＳ４０１０において、シャドー動的アドレス変換テーブルを構築または刷新するリクエストが受け付けられた場合はいつでも、ＣＰＵ１００１が割り込みを受けることになる。Ｓ４０２が実行され、ＣＰＵ１００１は、ホスト／カーネル状態１０２１に移行して、シャドー動的アドレス変換テーブルを構築または刷新する。同様に、ＣＰＵ１００１がゲスト・オペレーション・システムを動作させるＳ４０３０において、シャドー動的アドレス変換テーブルを破壊するリクエストが受け付けられた場合はいつでも、ＣＰＵ１００１が割り込みを受けて、ホスト／カーネル状態１０２１に再度移行することになる。状態変化およびその関連する状況切り替えは、特にＩ／Ｏ動作後ごとにゲスト・オペレーション・システムがシャドー動的アドレス変換テーブルを頻繁に刷新することでＣＰＵ１００１が繰り返し割り込みを受ける場合に、多大な時間を要する。
【００５２】
補助コントローラ１６１によって、ＣＰＵ１６０は、割り込みを受けることなく、Ｓ４０２、Ｓ４０３、Ｓ４０４を通してタスクを継続するようにしてもよい。ほとんどないことではあるが、ＣＰＵ１６０は、補助コントローラ１６１からのリクエストに応答して、Ｓ４０２において空チェーンの割り込み１０１３を取り扱うようにしてもよいし、Ｓ７０４において無効アドレスの割り込み１０１４を取り扱うようにしてもよい。補助コントローラ１６１の動作期間１０２３は、Ｓ４０２、Ｓ４０３、およびＳ４０４を網羅する。すなわち、補助コントローラ１６１は、コンピュータ・システム／サーバの全体性能が向上し得るように、シャドー動的アドレス変換テーブルを自動的に構築、刷新、破壊することによって、ＣＰＵによる割り込みを取り扱う時間コストを抑えるようにしてもよい。
【００５３】
本開示は、任意の考え得る技術的詳細集約レベルのシステム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってもよい。コンピュータ・プログラム製品は、本開示の態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでいてもよい。
【００５４】
コンピュータ可読記憶媒体としては、命令実行装置が使用する命令を保持・格納し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意好適な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリー・メモリ（ＲＯＭ）、消去・プログラム可能リード・オンリー・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯型コンパクト・ディスク・リード・オンリー・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチ・カードまたは命令が記録された溝中の隆起構造等の機械的符号化デバイス、およびこれらの任意好適な組み合わせを含む。本明細書において使用するコンピュータ可読記憶媒体は、無線波等の自由伝搬電磁波、導波路等の伝送媒体を伝搬する電磁波（たとえば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通って伝わる電気信号等の一時的信号それ自体として解釈されないものとする。
【００５５】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの演算／処理装置にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組み合わせ等のネットワークを介して、外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークには、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを含んでいてもよい。各演算／処理装置のネットワーク・アダプタ・カードまたはネットワーク・インターフェースがネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各演算／処理装置内のコンピュータ可読記憶媒体に格納する。
【００５６】
本開示の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用設定データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語等の１つもしくは複数のプログラミング言語の任意の組み合わせにより記述されたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上ですべてが実行されるようになっていてもよいし、独立型ソフトウェア・パッケージとしてユーザのコンピュータ上で一部が実行されるようになっていてもよいし、ユーザのコンピュータ上で一部が実行されるとともにリモート・コンピュータ上で一部が実行されるようになっていてもよいし、リモート・コンピュータまたはサーバ上ですべてが実行されるようになっていてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）等の任意の種類のネットワークを通じてユーザのコンピュータに接続されていてもよいし、（たとえば、インターネット・サービス・プロバイダによりインターネットを通じて）外部のコンピュータに接続されていてもよい。いくつかの実施形態においては、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）等の電子回路がコンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することにより、電子回路をカスタマイズして本開示の態様を実行するようにしてもよい。
【００５７】
本明細書においては、本開示の実施形態に係る方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本開示の態様を説明した。フローチャート図またはブロック図、あるいはその両方の各ブロックならびにフローチャート図またはブロック図、あるいはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることが了解される。
【００５８】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令によって、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに指定の機能／動作を実装する手段が構成されるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを生成するものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに指定の機能／動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他の機器、あるいはその組み合わせに特定の様態で機能するように指示可能なものであってもよい。
【００５９】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置、または他の機器上で実行される命令が、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに指定の機能／動作を実装するように、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラム可能な装置、または他の機器にロードされ、コンピュータ、他のプログラム可能な装置、または他の機器上で一連の動作ステップを実行させるものであってもよい。
【００６０】
図面中のフローチャートおよびブロック図は、本開示の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様の構成、機能、および動作を示している。この点、フローチャートまたはブロック図の各ブロックは、命令のモジュール、セグメント、または部分を表していてもよく、指定の論理的機能を実装する１つまたは複数の実行可能な命令を含む。いくつかの別の実施態様において、各ブロックに記載の機能は、図面に記載の順序から外れて生じ得る。たとえば、関与する機能に応じて、連続して示す２つのブロックが実際のところ、実質的に同時に実行されるようになっていてもよいし、各ブロックが場合により逆の順序で実行されるようになっていてもよい。また、ブロック図またはフローチャート図、あるいはその両方の各ブロックならびにブロック図またはフローチャート図、あるいはその両方におけるブロックの組み合わせは、指定の機能または動作を実行するか、あるいは専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアに基づくシステムにより実装可能であることに留意する。
【００６１】
本開示の種々実施形態の説明は、例示を目的として提示するものであって、何ら網羅的でもなければ、開示の実施形態への限定を意図したものでもない。上記実施形態の範囲および思想から逸脱することなく、多くの改良および変形が当業者には明らかとなるであろう。本明細書において使用する専門用語は、実施形態の原理、実際の適用、もしくは市場に見られる技術の技術的改良の最良の説明のため、または、本明細書に開示の実施形態の当業他者による理解を可能にするために選定している。
【図１】
2021504804.tif 000003
【図２】
2021504804.tif 000004
【図３】
2021504804.tif 000005
【図４】
2021504804.tif 000006
【図５】
2021504804.tif 000007
【図６】
2021504804.tif 000008
【図７】
2021504804.tif 000009
【図８】
2021504804.tif 000010
【図９】
2021504804.tif 000011
【図１０】
2021504804.tif 000012
【国際調査報告】
2021504804.tif 000013
2021504804.tif 000014