(57)【特許請求の範囲】
【請求項１】
ホストＯＳによって制御されるホスト環境とは仮想アドレスと物理アドレスの対応付けが異なるゲスト環境における仮想アドレスを、前記ホスト環境における物理アドレスに変換するアドレス変換部と、
前記ゲスト環境における仮想アドレスを前記ゲスト環境における物理アドレスに変換する際に得られるページの属性が、前記ホスト環境には存在しないゲスト環境固有の属性である場合に、該ゲスト環境固有の属性を反映させた例外処理を行う例外処理部と、
を備えるエミュレーション装置。
【請求項２】
前記例外処理部は、前記ページの属性が、前記ゲスト環境固有の属性のうち特定の属性である場合に、前記ゲスト環境で動作するプログラム毎に用意される仮想アドレス空間の識別子毎に、前記ゲスト環境における仮想アドレスを前記ホスト環境における物理アドレスに変換する変換表を保持し、前記仮想アドレス空間の識別子が変更されたときに前記変換表を切り替えることを特徴とする、
請求項１記載のエミュレーション装置。
【請求項３】
コンピュータに、
ホストＯＳによって制御されるホスト環境とは仮想アドレスと物理アドレスの対応付けが異なるゲスト環境における仮想アドレスを、前記ホスト環境における物理アドレスに変換させ、
前記ゲスト環境で動作するプログラムが扱うページの属性が、前記ホスト環境には存在しないゲスト環境固有の属性である場合に、該ゲスト環境固有の属性を反映させた例外処理を行わせることを特徴とする、
エミュレーションプログラム。
【請求項４】
前記例外処理は、前記ページの属性が、前記ゲスト環境固有の属性のうち特定の属性である場合に、前記ゲスト環境で動作するプログラム毎に用意される仮想アドレス空間の識別子毎に、前記ゲスト環境における仮想アドレスを前記ホスト環境における物理アドレスに変換する変換表を保持し、前記仮想アドレス空間の識別子が変更されたときに前記変換表を切り替える処理であることを特徴とする、
請求項３記載のエミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレーション装置、及びエミュレーションプログラムに関し、特に、プロセッサのエミュレーションを行うエミュレーション装置、及びエミュレーションプログラムに関する。
【背景技術】
【０００２】
従来、特定の環境向けに開発されたソフトウェアを、異なる環境上で動作させるために、エミュレータと称されるソフトウェアを実行させ、その上で特定の環境向けに開発されたソフトウェアを動作させる技術が知られている。係る技術は、エミュレーションと称されている。
【０００３】
一般的なプロセッサはＭＭＵ（Memory  Management  Unit）を内蔵しており、MMUは変換表を用いてホストＯＳが認識する仮想アドレスを物理アドレスに変換する。そして、エミュレータのうちプロセッサのＭＭＵのエミュレーションを行うものは、ゲストＯＳが認識する物理アドレスを、ホストＯＳが認識する仮想アドレスに変換する。これによって、ゲストＯＳ上で動作するゲストプログラムが、ゲストＯＳ、エミュレータ、ＭＭＵを介してメモリにアクセスすることができる。
【０００４】
これに関連し、マルチモードアーキテクチャコンピュータシステムにおいて第１のモードと第２のモードの間で一時的プロセッサモードコンテキスト切り替えを実行するための方法が知られている。この方法は、コンピュータシステムのＭＭＵを無効し、モード制御レジスタを変更してコンテキストビットを第１のモードから第２のモードに設定し、第２のモードに関する新たなページテーブルを読み込み、ＭＭＵを再アクチベートするものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−０１８８１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般的なプロセッサにおいて実行されるエミュレーションは、複数回の変換を行うことによって、処理時間が遅延する場合がある。
【０００７】
また、上記従来の方法は、ｘ８６−６４アーキテクチャに関するロングモード、そのレガシーモード、或いは３２ビットｖ８６モードコードといった同一又は類似したアーキテクチャに基づくモードを切り替えて実行することを前提としている。このため、異なる環境向けに開発されたソフトウェアを高速に動作させることができない場合がある。
【０００８】
一つの側面では、本発明は、異なる環境向けに開発されたソフトウェアを高速に動作させることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様は、
ホストＯＳによって制御されるホスト環境とは仮想アドレスと物理アドレスの対応付けが異なるゲスト環境における仮想アドレスを、前記ホスト環境における物理アドレスに変換するアドレス変換部と、
前記ゲスト環境における仮想アドレスを前記ゲスト環境における物理アドレスに変換する際に得られるページの属性が、前記ホスト環境には存在しないゲスト環境固有の属性である場合に、該ゲスト環境固有の属性を反映させた例外処理を行う例外処理部と、
を備えるエミュレーション装置である。
【発明の効果】
【００１０】
一実施態様によれば、異なる環境向けに開発されたソフトウェアを高速に動作させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施例に係るエミュレーション装置１のハードウェア構成例である。
【図２】本発明の第１実施例に係るエミュレーション装置１のソフトウェア構成図である。
【図３】ゲストＯＳ６０が有する変換表６２の構造を概念的に示す図である。
【図４】ＭＭＵ３２が参照する変換表４２の構造を概念的に示す図である。
【図５】エミュレータ５０が有する変換表５２の一例である。
【図６】ＭＭＵエミュレータ部４４により実行されるＰＴＥ追加処理の流れを示すフローチャートの一例である。
【図７】変換表の位置対応表の一例である。
【図８】ＭＭＵエミュレータ部４４により実行される処理の流れを示すフローチャートの一例である。
【図９】ゲスト環境であるＡＲＭアーキテクチャと、ホスト環境であるＩｎｔｅｌアーキテクチャで共通するページ属性の一覧である。
【図１０】本発明の第２実施例に係るエミュレーション装置２のソフトウェア構成図である。
【図１１】本発明の第３実施例に係るエミュレーション装置３のソフトウェア構成図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００１３】
＜第１実施例＞
以下、図面を参照し、本発明の第１実施例に係るエミュレーション装置、及びエミュレーションプログラムについて説明する。
【００１４】
［ハードウェア構成］
図１は、本発明の第１実施例に係るエミュレーション装置１のハードウェア構成例である。エミュレーション装置１は、例えば、ＣＰＵ（Central  Processing  Unit）１０と、ドライブ装置１２と、補助記憶装置１６と、メモリ装置１８と、インターフェース装置２０と、入力装置２２と、表示装置２４と、を備える。これらの構成要素は、バスやシリアル回線等を介して接続されている。
【００１５】
ＣＰＵ１０は、例えば、プログラムカウンタや命令デコーダ、各種演算器、ＬＳＵ（Load  Store  Unit）、汎用レジスタ等を有する演算処理装置としてのプロセッサである。
【００１６】
ドライブ装置１２は、記憶媒体１４からプログラムやデータを読み込み可能な装置である。プログラムを記録した記憶媒体１４がドライブ装置１２に装着されると、プログラムが記憶媒体１４からドライブ装置１２を介して補助記憶装置１６にインストールされる。記憶媒体１４は、例えば、ＣＤ（Compact  Disc）、ＤＶＤ（Digital  Versatile  Disc）、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型の記憶媒体である。また、補助記憶装置１６は、例えば、ＨＤＤ（Hard  Disk  Drive）やフラッシュメモリである。
【００１７】
プログラムのインストールは、上記のように記憶媒体１４を用いる他、インターフェース装置２０がネットワークを介して他のコンピュータよりダウンロードし、補助記憶装置１６にインストールすることによって行うこともできる。ネットワークは、インターネット、ＬＡＮ（Local  Area  Network）、無線ネットワーク等である。また、プログラムは、エミュレーション装置１の出荷時に、予め補助記憶装置１６やＲＯＭ（Read  Only  Memory）等に格納されていてもよい。
【００１８】
このようにしてインストール又は予め格納されたプログラムをＣＰＵ１０が実行することにより、図１に示す態様の情報処理装置が、本実施例のエミュレーション装置１として機能することができる。
【００１９】
メモリ装置１８は、例えば、ＲＡＭ（Random  Access  Memory）やＥＥＰＲＯＭ（Electrically  Erasable  and  Programmable  Read  Only  Memory）である。インターフェース装置２０は、上記ネットワークとの接続等を制御する。
【００２０】
入力装置２２は、例えば、キーボード、マウス、ボタン、タッチパッド、タッチパネル、マイク等である。また、表示装置２４は、例えば、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）等の表示装置である。エミュレーション装置１は、表示装置２４の他、プリンタ、スピーカ等の他の種類の出力装置を備えてもよい。
【００２１】
［ソフトウェア構成］
図２は、本発明の第１実施例に係るエミュレーション装置１のソフトウェア構成図である。図示するように、エミュレーション装置１は、プロセッサ部３０と、ＭＭＵ（Memory  Management  Unit）３２と、ホストＯＳ（オペレーティングシステム）４０と、エミュレータ５０と、ゲストＯＳ６０と、ゲストプログラム７０と、を備える。プロセッサ部３０は、図１に示すハードウェアの一部又は全部である。
【００２２】
ホストＯＳ４０は、ＭＭＵエミュレータ部４４と、例外ハンドラ４６とを有する。また、エミュレータ５０は、デバイスエミュレータ部５４と、命令エミュレータ部５６とを有する。なお、これらの機能ブロックが明確に分離したプログラムによって実現される必要はなく、サブルーチンや関数として他のプログラムによって呼び出されるものであってもよい。
【００２３】
ホストＯＳ４０は、例えばＩｎｔｅｌ（登録商標）社のｘ８６プロセッサに対応するオペレーティングシステムである。
【００２４】
一方、ゲストＯＳ６０は、ＡＲＭ（登録商標）アーキテクチャに基づくオペレーティングシステムであり、ゲストプログラム７０は、ゲストＯＳ６０上で動作可能なプログラムである。すなわち、ゲストプログラム７０は、ゲストＯＳ６０が制御するゲスト環境で動作可能なプログラムである。
【００２５】
エミュレータ５０は、ゲストＯＳ６０が有する変換表６２と、ＭＭＵ３２が参照する変換表４２との間を仲介し、ゲストＯＳ６０が認識する物理アドレスを、ホストＯＳ４０が認識する仮想アドレスに変換する機能を有する。これによって、ホストＯＳ４０によって制御されるホスト環境とは、仮想アドレスと物理アドレスの対応付けが異なるゲスト環境で動作するゲストプログラム７０が、プロセッサ３０のハードウェア資源を利用することができる。
【００２６】
図３は、ゲストＯＳ６０が有する変換表６２の構造を概念的に示す図である。変換表６２は、レジスタ６２Ａと、１段目のアドレス格納部６２Ｂと、２段目のアドレス格納部６２Ｃと、を備える。各アドレス格納部は、例えばメモリ装置１８の専用領域である。レジスタ６２Ａには、１段目のアドレス格納部６２Ｂが格納された領域の先頭アドレスが格納されている。レジスタ６２Ａの内容は、ゲストＯＳ６０によって書き換えられる。ゲストＯＳ６０は、ゲストプログラム７０が切り替わるとレジスタ６２Ａの内容を書き換えることにより、ゲストプログラム７０毎の変換表６２を用意する。
【００２７】
仮想アドレスは、例えば、インデックス１、インデックス２、及びオフセットを含む。ゲストＯＳ６０は、仮想アドレスが与えられると、１段目のアドレス格納部６２Ｂのうち、レジスタ６２Ａが先頭アドレスを示す領域においてインデックス１が示すアドレスに格納されたデータを読み出す。そして、ゲストＯＳ６０は、２段目のアドレス格納部６２Ｃのうち、読み出した値が先頭アドレスを示す領域においてインデックス２が示すアドレスに格納されたデータを読み出す。２段目のアドレス格納部６２Ｃから読み出されるデータは、物理アドレスの先頭と、ページ属性を含むＰＴＥ（Page  Table  Entry）である。ゲストＯＳ６０は、読み出されたＰＴＥのうち物理アドレスの先頭と、仮想アドレスに含まれるオフセットを結合し、物理アドレスとして出力する。
【００２８】
変換表６２、５２、４２には、対応するＴＬＢ（Translate  Lookaside  Buffer）が設定されている。ＴＬＢは、変換表に対して、メモリに対するキャッシュメモリのような機能を有する。すなわち、一度変換を行った仮想アドレスと物理アドレスの組を保持し、ＴＬＢに格納された仮想アドレスについては変換表を用いることなく変換を行わせることにより、高速変換を実現する。
【００２９】
図４は、ＭＭＵ３２が参照する変換表４２の構造を概念的に示す図である。変換表４２は、レジスタ４２Ａと、１段目のアドレス格納部４２Ｂと、２段目のアドレス格納部４２Ｃと、３段目のアドレス格納部４２Ｄを備える。各アドレス格納部は、例えばメモリ装置１８の専用領域である。レジスタ４２Ａには、１段目のアドレス格納部４２Ｂが格納された領域の先頭アドレスが格納されている。
【００３０】
仮想アドレスは、例えば、インデックス１、インデックス２、インデックス３、及びオフセットを含む。ＭＭＵ３２は、仮想アドレスが与えられると、１段目のアドレス格納部４２Ｂのうち、レジスタ４２Ａが先頭アドレスを示す領域においてインデックス１が示すアドレスに格納されたデータを読み出す。そして、ＭＭＵ３２は、２段目のアドレス格納部４２Ｃのうち、読み出した値が先頭アドレスを示す領域においてインデックス２が示すアドレスに格納されたデータを読み出す。同様に、ＭＭＵ３２は、３段目のアドレス格納部４２Ｄのうち、読み出した値が先頭アドレスを示す領域においてインデックス３が示すアドレスに格納されたデータを読み出す。３段目のアドレス格納部４２Ｄから読み出されるデータは、物理アドレスの先頭と、ページ属性を含むＰＴＥである。ＭＭＵ３２は、読み出されたＰＴＥのうち物理アドレスの先頭と、仮想アドレスに含まれるオフセットを結合し、物理アドレスとして出力する。
【００３１】
図５は、エミュレータ５０が有する変換表５２の一例である。エミュレータ５０は、このような変換表を用いて、ゲストＯＳ６０が認識する物理アドレスを、ホストＯＳ４０が認識する仮想アドレスに変換する。また、エミュレータ５０は、アクセスされたアドレス空間がメモリ空間、デバイス空間、或いは図示しない命令空間であるかによって、デバイスエミュレータ部５４、命令エミュレータ部５６を動作させる。
【００３２】
ＭＭＵエミュレータ部４４は、変換表６２、５２、４２を用いて、ゲストＯＳ６０が認識する仮想アドレスと、ホストＯＳ４０が認識する物理アドレスの対応付けを変換表４２の新規部分に登録する。これによって、ゲストＯＳ６０が認識する仮想アドレスからホストＯＳ４０が認識する物理アドレスへの変換が迅速に行われる。以下、対応付けを変換表４２に登録する処理について説明する。
【００３３】
図６は、ＭＭＵエミュレータ部４４により実行されるＰＴＥ追加処理の流れを示すフローチャートの一例である。本フローチャートは、例えば、ゲストプログラム７０が補助記憶装置１６からメモリ装置１８にロードされたとき、変換表６２に新たなＰＴＥが追加されたとき等に実行される。
【００３４】
まず、ＭＭＵエミュレータ部４４は、ＭＭＵエミュレータ部４４は、当該ゲストプログラム７０に対応する変換表６２に格納されたＰＴＥを解析し、仮想アドレス、物理アドレス、ページ属性に分類する（Ｓ１００）。
【００３５】
次に、ＭＭＵエミュレータ部４４は、分類した物理アドレスに基づき、データアクセスがデバイスへのアクセスであるか否かを判定する（Ｓ１０２）。データアクセスがデバイスへのアクセスである場合、ＭＭＵエミュレータ部４４は、Ｓ１００に戻り、次のＰＴＥを解析する。
【００３６】
データアクセスがデバイスへのアクセスでない場合、ＭＭＵエミュレータ部４４は、ＰＴＥに含まれるページ属性が、ゲスト環境に固有の属性であるか否かを判定する（１０４）。ページ属性が、ゲスト環境に固有の属性である場合、ＭＭＵエミュレータ部４４は、ＭＭＵエミュレータ部４４が保持する固有の属性リストに、ページ属性を登録する（Ｓ１０６）。属性については、後述する。
【００３７】
ページ属性が、ゲスト環境に固有の属性でない場合、ＭＭＵエミュレータ部４４は、変換表６２、４２、５２を利用して、ゲストＯＳ６０が認識する仮想アドレスをホストＯＳ４０が認識する物理アドレスに変換する（Ｓ１０８）。
【００３８】
そして、ＭＭＵエミュレータ部４４は、Ｓ１０８において変換したゲストＯＳ６０が認識する仮想アドレスとホストＯＳ４０が認識する物理アドレスとの対応付けを変換表４２に登録する（Ｓ１１０）。
【００３９】
Ｓ１０４〜Ｓ１１０の処理が終了すると、ＭＭＵエミュレータ部４４は、解析を終了するか否かを判定する（Ｓ１１２）。解析を終了しない場合、ＭＭＵエミュレータ部４４は、Ｓ１００に戻り、処理を実行する。
【００４０】
なお、図６のフローチャートとは逆に、ゲストプログラム７０が終了した場合等には、ＭＭＵエミュレータ部４４は、ＰＴＥを変換表４２から削除する処理を行う。この場合、ＭＭＵエミュレータ部４４は、削除するＰＴＥを変換表４２のＰＴＥに変換し、変換表４２から対応するＰＴＥを削除し、更に、変換表４２に対応するＴＬＢから当該ＰＴＥを削除する。
【００４１】
また、ＭＭＵエミュレータ部４４は、ゲストプログラム７０が切り替わった際には、ゲストプログラム７０に対応する新しい変換表４２を用意する。この場合、ＭＭＵエミュレータ部４４は、古い変換表４２に対応するＰＴＥを削除し、新しい変換表６２のアドレスを検索キーにして、変換表の位置対応表を検索する。図７は、変換表の位置対応表の一例である。ＭＭＵエミュレータ部４４は、変換表の位置対応表に新しい変換表６２のアドレスが存在する場合、該当する変換表４２の先頭アドレスから記述された変換表４２を採用して変換を行う。ＭＭＵエミュレータ部４４は、変換表の位置対応表に新しい変換表６２のアドレスが存在しない場合、新しい変換表４２の先頭アドレスを設定する。そして、ＭＭＵエミュレータ部４４は、設定した先頭アドレスから、図６に示す処理によって変換表４２を作成する。
【００４２】
次に、ＭＭＵエミュレータ部４４による、ゲストプログラム７０によるデータアクセスがあった際の処理について説明する。図８は、ＭＭＵエミュレータ部４４により実行される処理の流れを示すフローチャートの一例である。
【００４３】
まず、ＭＭＵエミュレータ部４４は、ゲストプログラム７０によるデータアクセスが発生するまで待機する（Ｓ２００）。
【００４４】
ゲストプログラム７０によるデータアクセスが発生すると、ＭＭＵエミュレータ部４４は、変換表４２を用いて、ゲストＯＳ６０が認識する仮想アドレスをホストＯＳ４０が認識する物理アドレスに変換する（Ｓ２０２）。
【００４５】
次に、ＭＭＵエミュレータ部４４は、変換に失敗したか否か、及びアクセス権限が無いかどうかを判定する（Ｓ２０４、Ｓ２０６）。
【００４６】
Ｓ２０４において変換に失敗したと判定された場合、及びＳ２０６においてアクセス権限が無いと判定された場合は、例外ハンドラ４６が起動する（Ｓ２０８）。なお、ＭＭＵエミュレータ部４４は、変換しようとするページがゲスト環境に固有の属性を有している場合、例えば擬似的な変換失敗信号を出力することによって、例外ハンドラ４６を起動させる。
【００４７】
例外ハンドラ４６は、当該データアクセスがメモリアクセスであるか否かを判定し、データアクセスがメモリアクセスでない場合、デバイスエミュレータ部５４又は命令エミュレータ部５６にエミュレーションを行わせる。また、例外ハンドラ４６は、データアクセスに係るＰＴＥに含まれるページ属性が、ゲスト環境に固有の属性である場合には、当該固有の属性に従ってデータの処理を行う。
【００４８】
以下、ゲスト環境とホスト環境のそれぞれに固有の属性、及び共通する属性について説明する。
【００４９】
図９は、ゲスト環境であるＡＲＭアーキテクチャと、ホスト環境であるＩｎｔｅｌアーキテクチャで共通するページ属性の一覧である。
【００５０】
ＡＲＭアーキテクチャにおける「XN」は「execute-never  bit」を示し、実行するかどうかを制御するビットであることを示している。これに対し、Ｉｎｔｅｌアーキテクチャにおける「XD」は「execute-disable」を示し、実行許可を示している。
【００５１】
また、ＡＲＭアーキテクチャにおける「AP」は「Access  Permission  bits」すなわちアクセスを許可するかどうか制御するビットを示している。これに対し、Ｉｎｔｅｌアーキテクチャにおける「R/W」は「Read/Write」すなわち書き込み許可を示し、「U/S」は「User/Supervisor」すなわちユーザーモードの書き込み許可を示している。
【００５２】
また、ＡＲＭアーキテクチャにおける「AP[0]」は「access  flag」すなわちアクセスしたかどうか記録するビットを示している。これに対し、Ｉｎｔｅｌアーキテクチャにおける「A」は「Accessed」すなわちアクセスしたかどうかの記録を示し、「D」は「Dirty」すなわち変更があったかどうかの記録を示している。
【００５３】
また、ＡＲＭアーキテクチャにおける「TEX,C,B」は「Memory  region  attribute  bits」を示し、キャッシュを制御するビットであることを示している。これに対し、Ｉｎｔｅｌアーキテクチャにおける「PWT」は「Page-level  Write-Through」すなわちライトスルーにするかどうかを示し、「PCD」は「Page-level  Cache  Disable」すなわちキャッシュの有効・無効を示す。また、Ｉｎｔｅｌアーキテクチャにおける「PAT」は「Page-Attribute  Table」すなわちキャッシュを制御するビットを集めた表の有効／無効を示している。
【００５４】
また、ＡＲＭアーキテクチャにおける「S」は「Shareable」すなわち複数のプロセッサで共有するかどうか制御するビットを示している。これに対し、Ｉｎｔｅｌアーキテクチャにおける「G」は「Global」すなわち複数のプロセッサで共有するかどうかを示している。
【００５５】
以上は、ゲスト環境であるＡＲＭアーキテクチャと、ホスト環境であるＩｎｔｅｌアーキテクチャで共通するページ属性の一覧であるが、ゲスト環境であるＡＲＭアーキテクチャに固有の属性も存在する。例えば、ページ属性「nG」は「not  Global」を示す。ＡＲＭアーキテクチャでは、プログラム毎に用意される仮想アドレス空間にＡＳＩＤ（Address  Space  Identifier)を割り当て、ＴＬＢに登録するときに、ＰＴＥとＡＳＩＤの組を登録している。このとき、ＴＬＢに登録されたnG=1のＰＴＥのうち、指定したＡＳＩＤを有するＰＴＥだけが、消去可能なＰＴＥとして扱われる。
【００５６】
例外ハンドラ４６は、ゲスト環境のページ属性「nG」に対応するために、以下のような処理を行う。例外ハンドラ４６は、ＡＳＩＤ毎に変換表４２を用意する。従って、ＡＳＩＤが変更されたとき、例外ハンドラ４６は、変換表４２を切り替える。
【００５７】
そして、例外ハンドラ４６は、変換表４２の変更時には、ＰＴＥのnG属性を調べ、nG=0である場合、すべての変換表４２に変更を反映させ、nG=1の場合、対応するＡＳＩＤの変換表４２に変更を反映させる。なお、係る処理は、ＭＭＵエミュレータ部４４が行ってもよい。
【００５８】
また、例外ハンドラ４６は、この他にも、ゲスト環境に固有の属性である場合、変換に失敗した場合、アクセス権限が無い場合に対して種々の例外処理を行う。例外ハンドラ４６は、例えばｘ８６のページフォルト例外処理にエミュレーション機能を追加した機能部である。
【００５９】
例外ハンドラ４６は、発生アドレスの属するページが固有の属性を持っている場合、上記のように属性に対応したエミュレーション処理を呼び出し、結果をゲスト環境に反映させる。
【００６０】
また、例外ハンドラ４６は、属性に応じたアクセス権限をチェックし、アクセス可能であれば、ホストのページ属性をアクセス可能にして、ゲストに反映させる。一方、例外ハンドラ４６は、アクセス不可であれば、アクセス不可のエラーコードをゲスト環境に反映させる。
【００６１】
以上説明した本実施例のエミュレーション装置、及びエミュレーションプログラムによれば、ゲスト環境に固有の属性を有するデータを例外処理するため、異なる環境向けに開発されたソフトウェアを高速に動作させることができる。
【００６２】
なお、特許請求の範囲における「アドレス変換部」は、例えばＭＭＵエミュレータ部４４に対応し、「例外処理部」は、例えば例外ハンドラ４６に対応する。
【００６３】
以下、第１実施例のエミュレーション装置１からソフトウェア配置を変更した他の実施例について説明する。
【００６４】
＜第２実施例＞
図１０は、本発明の第２実施例に係るエミュレーション装置２のソフトウェア構成図である。第２実施例に係るエミュレーション装置２は、第１実施例と比較すると、ゲストＯＳ６０を省略している。このため、第２実施例に係るエミュレーション装置２は、プロセッサのエミュレーションのみ行うものであり、例えばオープンソースのプロセッサエミュレータであるＱＥＭＵの、ユーザーモードエミュレーションに適用することができる。ユーザーモードエミュレーションでは、あるプロセッサを対象として設計されたプロセスを、他のプロセッサで実行させることができる。
【００６５】
＜第３実施例＞
図１１は、本発明の第３実施例に係るエミュレーション装置３のソフトウェア構成図である。第３実施例に係るエミュレーション装置３は、第１実施例と比較すると、エミュレータ５０がＭＭＵエミュレータ部、例外ハンドラ、デバイスエミュレータ部、命令エミュレータ部を備え、ハイパーバイザーとして機能する。
【００６６】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００６７】
以上の説明に関し、さらに以下の項を開示する。
（付記１）
ホストＯＳによって制御されるホスト環境とは仮想アドレスと物理アドレスの対応付けが異なるゲスト環境における仮想アドレスを、前記ホスト環境における物理アドレスに変換するアドレス変換部と、
前記ゲスト環境における仮想アドレスを前記ゲスト環境における物理アドレスに変換する際に得られるページの属性が、前記ホスト環境には存在しないゲスト環境固有の属性である場合に、該ゲスト環境固有の属性を反映させた例外処理を行う例外処理部と、
を備えるエミュレーション装置。
（付記２）
前記例外処理部は、前記データの属性が、前記ゲスト環境固有の属性のうち特定の属性である場合に、前記ゲスト環境で動作するプログラム毎に用意される仮想アドレス空間の識別子毎に、前記ゲスト環境における仮想アドレスを前記ホスト環境における物理アドレスに変換する変換表を保持し、前記仮想アドレス空間の識別子が変更されたときに前記変換表を切り替えることを特徴とする、
付記１記載のエミュレーション装置。
（付記３）
コンピュータに、
ホストＯＳによって制御されるホスト環境とは仮想アドレスと物理アドレスの対応付けが異なるゲスト環境における仮想アドレスを、前記ホスト環境における物理アドレスに変換させ、
前記ゲスト環境で動作するプログラムが扱うページの属性が、前記ホスト環境には存在しないゲスト環境固有の属性である場合に、該ゲスト環境固有の属性を反映させた例外処理を行わせることを特徴とする、
エミュレーションプログラム。
（付記４）
前記例外処理は、前記データの属性が、前記ゲスト環境固有の属性のうち特定の属性である場合に、前記ゲスト環境で動作するプログラム毎に用意される仮想アドレス空間の識別子毎に、前記ゲスト環境における仮想アドレスを前記ホスト環境における物理アドレスに変換する変換表を保持し、前記仮想アドレス空間の識別子が変更されたときに前記変換表を切り替える処理であることを特徴とする、
付記３記載のエミュレーションプログラム。
【符号の説明】
【００６８】
１、２、３  エミュレーション装置
１０  ＣＰＵ
１２  ドライブ装置
１４  記憶媒体
１６  補助記憶装置
１８  メモリ装置
２０  インターフェース装置
２２  入力装置
２４  表示装置
３０  プロセッサ部
３２  ＭＭＵ
４２、５２、６２  変換表
４０  ホストＯＳ
４４  ＭＭＵエミュレータ部
４６  例外ハンドラ
５０  エミュレータ
５４  デバイスエミュレータ部
５６  命令エミュレータ部
６０  ゲストＯＳ
７０  ゲストプログラム
【図１】
0005862408.tif 000002
【図２】
0005862408.tif 000003
【図３】
0005862408.tif 000004
【図４】
0005862408.tif 000005
【図５】
0005862408.tif 000006
【図６】
0005862408.tif 000007
【図７】
0005862408.tif 000008
【図８】
0005862408.tif 000009
【図９】
0005862408.tif 000010
【図１０】
0005862408.tif 000011
【図１１】
0005862408.tif 000012