(57)【特許請求の範囲】
【請求項１】
ターゲット命令をエミュレーションするためのエミュレーション方法であって、
予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを作成しておき、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令を一括して処理できるか否かを、前記命令組み合わせテーブルを索引して判定し、
複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
複数のターゲット命令が一括して処理できない組み合わせの場合は、１つのターゲット命令をエミュレーションするコーディングに分岐して処理するエミュレーション方法。
【請求項２】
ターゲット命令をエミュレーションするためのエミュレーション方法であって、
予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び複数のターゲット命令を特定する情報と該複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報とを関連付けたプロセス分岐テーブルを作成しておき、
前記複数のターゲット命令を特定する情報を読み出し、前記プロセス分岐テーブルを索引して該複数のターゲット命令を特定する情報が登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
該複数のターゲット命令を特定する情報が前記プロセス分岐テーブルに登録されていない場合は、１つのターゲット命令をフェッチしてデコードし、該ターゲット命令をエミュレーションするコーディングに分岐して処理するエミュレーション方法。
【請求項３】
前記複数のターゲット命令を特定する情報を読み出す処理と、前記１つのターゲット命令をフェッチしてデコードする処理とを同時に実行する請求項２記載のエミュレーション方法。
【請求項４】
ターゲット命令をエミュレーションするためのエミュレーション方法であって、
予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び一括して処理した実績のある複数のターゲット命令の組み合わせと、該複数のターゲット命令を一括してエミュレーションするコーディングへの分岐先を示す情報とを関連付けた命令組み合わせ履歴テーブルを作成しておき、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、１つのターゲット命令をエミュレーションするコーディングに分岐して処理するエミュレーション方法。
【請求項５】
予め前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを作成しておき、
デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令が一括して処理できるか否かを判定し、
該複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理する請求項４記載のエミュレーション方法。
【請求項６】
前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理しているとき、または前記１つのターゲット命令をエミュレーションするコーディングに分岐して処理しているとき、
次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理を同時に実行する請求項５記載のエミュレーション方法。
【請求項７】
前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐した処理、または前記１つのターゲット命令をエミュレーションするコーディングに分岐した処理と、
次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理と、
を異なるプロセッサで実行する請求項６記載のエミュレーション方法。
【請求項８】
次に実行する複数のターゲット命令が一括して処理できる場合、該複数のターゲット命令を、使用していない命令コードに書き換える請求項６または７記載のエミュレーション方法。
【請求項９】
ターゲット命令をエミュレーションするコンピュータシステムであって、
予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルが格納されるメモリと、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令を一括して処理できるか否かを、前記命令組み合わせテーブルを索引して判定し、複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、複数のターゲット命令が一括して処理できない組み合わせの場合は、１つのターゲット命令をエミュレーションするコーディングに分岐して処理する処理装置と、
を有するコンピュータシステム。
【請求項１０】
ターゲット命令をエミュレーションするコンピュータシステムであって、
予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び複数のターゲット命令を特定する情報と該複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報とを関連付けたプロセス分岐テーブルが格納されるメモリと、
前記複数のターゲット命令を特定する情報を読み出し、前記プロセス分岐テーブルを索引して該複数のターゲット命令を特定する情報が登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、該複数のターゲット命令を特定する情報が前記プロセス分岐テーブルに登録されていない場合は、１つのターゲット命令をフェッチしてデコードし、該ターゲット命令をエミュレーションするコーディングに分岐して処理する処理装置と、
を有するコンピュータシステム。
【請求項１１】
前記処理装置は、
前記複数のターゲット命令を特定する情報を読み出す処理と、前記１つのターゲット命令をフェッチしてデコードする処理とを同時に実行する請求項１０記載のコンピュータシステム。
【請求項１２】
ターゲット命令をエミュレーションするコンピュータシステムであって、
予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び一括して処理した実績のある複数のターゲット命令の組み合わせと、該複数のターゲット命令を一括してエミュレーションするコーディングへの分岐先を示す情報とを関連付けた命令組み合わせ履歴テーブルが格納されるメモリと、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、１つのターゲット命令をエミュレーションするコーディングに分岐して処理する処理装置と、
を有するコンピュータシステム。
【請求項１３】
前記メモリに、
予め作成された前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルが格納され、
前記処理装置は、
デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令が一括して処理できるか否かを判定し、
該複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理する請求項１２記載のコンピュータシステム。
【請求項１４】
前記処理装置は、
前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理しているとき、または前記１つのターゲット命令をエミュレーションするコーディングに分岐して処理しているとき、
次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理を同時に実行する請求項１３記載のコンピュータシステム。
【請求項１５】
前記処理装置は、
前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐した処理、または前記１つのターゲット命令をエミュレーションするコーディングに分岐した処理を実行する第１のプロセッサと、
次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理を実行する第２のプロセッサと、
を有する請求項１４記載のコンピュータシステム。
【請求項１６】
前記処理装置は、
次に実行する複数のターゲット命令が一括して処理できる場合、該複数のターゲット命令を、使用していない命令コードに書き換える請求項１４または１５記載のコンピュータシステム。
【請求項１７】
コンピュータにターゲット命令をエミュレーションさせるためのプログラムであって、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令を一括して処理できるか否かを、予め作成された前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを索引して判定し、
複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成された該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
複数のターゲット命令が一括して処理できない組み合わせの場合、予め作成された１つのターゲット命令をエミュレーションするコーディングに分岐して処理するためのプログラム。
【請求項１８】
コンピュータにターゲット命令をエミュレーションさせるためのプログラムであって、
前記複数のターゲット命令を特定する情報を読み出し、
前記複数のターゲット命令を特定する情報と該複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報とを関連付けたプロセス分岐テーブルを索引し、
前記プロセス分岐テーブルに前記読み出した複数のターゲット命令を特定する情報が登録されている場合は、予め作成された該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
前記プロセス分岐テーブルに前記読み出した複数のターゲット命令を特定する情報が登録されていない場合は、予め作成された１つのターゲット命令をフェッチしてデコードし、該ターゲット命令をエミュレーションするコーディングに分岐して処理するためのプログラム。
【請求項１９】
前記複数のターゲット命令を特定する情報を読み出す処理と、前記１つのターゲット命令をフェッチしてデコードする処理とを同時に実行するための請求項１８記載のプログラム。
【請求項２０】
コンピュータにターゲット命令をエミュレーションさせるためのプログラムであって、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、
予め作成された一括して処理した実績のある複数のターゲット命令の組み合わせと、該複数のターゲット命令を一括してエミュレーションするコーディングへの分岐先を示す情報とを関連付けた命令組み合わせ履歴テーブルを索引し、
前記命令組み合わせ履歴テーブルに前記デコードした複数のターゲット命令の組み合わせが登録されている場合は、予め作成された該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
前記命令組み合わせ履歴テーブルに前記デコードした複数のターゲット命令の組み合わせが登録されていない場合は、予め作成された１つのターゲット命令をエミュレーションするコーディングに分岐して処理するためのプログラム。
【請求項２１】
前記命令組み合わせ履歴テーブルに前記デコードした複数のターゲット命令の組み合わせが登録されていない場合、予め作成された前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを索引して該複数のターゲット命令が一括して処理できるか否かを判定し、
該複数のターゲット命令が一括して処理できる組み合わせの場合は、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理するための請求項２０記載のプログラム。
【請求項２２】
前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理しているとき、または前記１つのターゲット命令をエミュレーションするコーディングに分岐して処理しているとき、
次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理を同時に実行するための請求項２１記載のプログラム。
【請求項２３】
次に実行する複数のターゲット命令が一括して処理できる場合、該複数のターゲット命令を、使用していない命令コードに書き換えるための請求項２２記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ベースシステム上で他のシステム（ＯＳやＣＰＵ等）の機能を実現するエミュレーションには、ハードウェアを用いる方法とソフトウェアを用いる方法とが知られている。本発明は後者のソフトウェアによりエミュレーションを実現するためのエミュレーション方法及びコンピュータシステムに関する。
【背景技術】
【０００２】
従来のコンピュータシステムでは、ベースシステム上で他のシステムのＯＳ等（以下、ターゲットシステムと称す）の機能を実現する場合、ターゲットシステムの個々の命令（以下、ターゲット命令と称す）を処理の単位としてエミュレーションを実施している。
【０００３】
図２４は従来のエミュレーション方法の処理手順を示すフローチャートである。
【０００４】
図２４に示すように、エミュレーション時、コンピュータシステムは、最初に１つのターゲット命令をフェッチし（ステップ２−１）、フェッチしたターゲット命令をデコードして解読する（ステップ２−２）。次に、デコード結果に基づきターゲット命令の処理を実行し（ステップ２−３）、処理が終了すると、命令に応じた所定の終了処理を実行する（ステップ２−４）。このとき、コンピュータシステムは、ターゲット命令をベースシステムの命令に置き換えながら処理を行う。
【０００５】
しかしながら、このようなエミュレーション方法ではターゲット命令にしたがって処理するホストシステムのハードウェア性能が向上しないと、ターゲットシステムのエミュレーション速度は向上しない。
【０００６】
そのため、ターゲットシステムのエミュレーション速度を向上させる様々な手法が検討され、例えば特許文献１には、コンピュータシステムが備えるプロセッサ数に応じてターゲット命令のエミュレーション処理を分割し、分割した処理を各プロセッサにより並列に実行することでエミュレーション処理を高速化することが開示されている。また、特許文献２にはエミュレーション中に次に処理するターゲット命令を先行してフェッチすることでターゲットプログラムのエミュレーションを高速化することが開示されている。
【０００７】
さらに、特許文献３には、命令フェッチとデコードの処理結果を保存するためのデコードキャッシュを備え、ターゲット命令の最初の実行時にデコードキャッシュにそのデコード結果を保存し、同じ命令の次回の実行時に保存したデコードキャッシュの内容を再利用することでエミュレーション速度を向上させることが開示されている。特許文献３では、デコードキャッシュにデコード済のターゲット命令に対応する実行処理アドレス（実行処理ルーチンの先頭アドレス）を登録することで、登録済のターゲット命令のデコード処理を、テーブルを参照するだけの単純な処理に置き換えている。
【特許文献１】特開２００４−１２７１５４号公報
【特許文献２】特開２００１−３０６３３４号公報
【特許文献３】特開２００５−０６３１６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述した従来のコンピュータシステムのうち、特許文献１に記載の構成では、プロセッサ数の判定、エミュレーション処理の分割、分割した処理のプロセッサへの割付、各プロセッサの処理結果をまとめる等の処理を行う命令エミュレーション処理分割部が必要となるため、装置規模が増大する問題がある。
【０００９】
また、特許文献２に記載の構成ではターゲット命令のフェッチ処理のみが高速化され、特許文献３に記載の構成ではターゲット命令のデコード処理のみが高速化されるが、それ以外の処理は高速化対象では無いため、エミュレーション速度が充分に向上するとは言えない。
【００１０】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、ターゲットシステムのエミュレーション速度をより向上させることが可能なエミュレーション方法及びコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため本発明のエミュレーション方法は、ターゲット命令をエミュレーションするためのエミュレーション方法であって、
予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを作成しておき、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令を一括して処理できるか否かを、前記命令組み合わせテーブルを索引して判定し、
複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
複数のターゲット命令が一括して処理できない組み合わせの場合は、１つのターゲット命令をエミュレーションするコーディングに分岐して処理する方法である。
または、ターゲット命令をエミュレーションするためのエミュレーション方法であって、
予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び複数のターゲット命令を特定する情報と該複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報とを関連付けたプロセス分岐テーブルを作成しておき、
前記複数のターゲット命令を特定する情報を読み出し、前記プロセス分岐テーブルを索引して該複数のターゲット命令を特定する情報が登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
該複数のターゲット命令を特定する情報が前記プロセス分岐テーブルに登録されていない場合は、１つのターゲット命令をフェッチしてデコードし、該ターゲット命令をエミュレーションするコーディングに分岐して処理する方法である。
または、ターゲット命令をエミュレーションするためのエミュレーション方法であって、
予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び一括して処理した実績のある複数のターゲット命令の組み合わせと、該複数のターゲット命令を一括してエミュレーションするコーディングへの分岐先を示す情報とを関連付けた命令組み合わせ履歴テーブルを作成しておき、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、１つのターゲット命令をエミュレーションするコーディングに分岐して処理する方法である。
【００１２】
一方、本発明のコンピュータシステムは、ターゲット命令をエミュレーションするコンピュータシステムであって、
予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルが格納されるメモリと、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令を一括して処理できるか否かを、前記命令組み合わせテーブルを索引して判定し、
複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
複数のターゲット命令が一括して処理できない組み合わせの場合は、１つのターゲット命令をエミュレーションするコーディングに分岐して処理する処理装置と、
を有する。
または、ターゲット命令をエミュレーションするコンピュータシステムであって、
予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び複数のターゲット命令を特定する情報と該複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報とを関連付けたプロセス分岐テーブルが格納されるメモリと、
前記複数のターゲット命令を特定する情報を読み出し、前記プロセス分岐テーブルを索引して該複数のターゲット命令を特定する情報が登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
該複数のターゲット命令を特定する情報が前記プロセス分岐テーブルに登録されていない場合は、１つのターゲット命令をフェッチしてデコードし、該ターゲット命令をエミュレーションするコーディングに分岐して処理する処理装置と、
を有する。
または、ターゲット命令をエミュレーションするコンピュータシステムであって、
予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び一括して処理した実績のある複数のターゲット命令の組み合わせと、該複数のターゲット命令を一括してエミュレーションするコーディングへの分岐先を示す情報とを関連付けた命令組み合わせ履歴テーブルが格納されるメモリと、
複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、１つのターゲット命令をエミュレーションするコーディングに分岐して処理する処理装置と、
を有する。
【００１３】
上記のようなエミュレーション方法及びコンピュータシステムでは、複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成された該複数のターゲット命令を一括して処理するためのコーディングに分岐し、該コーディングにしたがって処理を実行するため、所定の複数のターゲット命令を一括して処理することができる。
【発明の効果】
【００１４】
本発明によれば、複数のターゲット命令を一括して処理できるため、ベースシステムにエミュレーションのための専用のハードウェアを追加することなく、エミュレーション速度を向上させることができる。
【００１５】
また、従来のターゲット命令の実行処理やターゲット命令の終了処理等のコーディングを修正することなく、複数のターゲット命令を一括して処理するためのコーディングを追加するだけで、複数のターゲット命令を一括して処理できるため、既に作成してある資源（コーディング）を無駄にすることがない。
【発明を実施するための最良の形態】
【００１６】
次に本発明について図面を参照して説明する。
【００１７】
本発明のコンピュータシステムでは、エミュレータ（エミュレーションプログラム）に複数のターゲット命令を一括して処理するための機能を備えることで、ターゲットシステムのエミュレーション速度を向上させる。具体的には、エミュレーションを実施する際に、複数のターゲット命令が一括して処理できる組み合わせの場合は、予め作成したそれらのターゲット命令を一括して処理するためのコーディングに分岐して処理を実行することで複数命令を一括して処理する。
【００１８】
（第１の実施の形態）
図１は本発明のコンピュータシステムの一構成例を示すブロック図である。
【００１９】
図１に示すように、本発明のコンピュータシステムは、プロセッサ（ＣＰＵ）を含む処理装置１−５と、処理装置１−５の処理で必要なプログラムや情報が格納されるメモリ１−６と、処理装置１−５に対してコマンドや情報等を入力するための入力装置あるいは処理装置１−５の処理結果をモニタするための出力装置であるＩＯ（Input Output）装置１−１０とを有する構成である。
【００２０】
メモリ１−６には、ターゲットシステムのＯＳが格納されるターゲットメモリ領域１−７、エミュレーションプログラム（エミュレータ１−４）が格納されるエミュレータメモリ領域１−８及びベースシステムのＯＳが格納されるベースメモリ領域１−９を備えている。
【００２１】
また、メモリ１−６には、本発明のエミュレーション方法で用いる、後述する命令組み合わせテーブル、プロセス分岐テーブルあるいは命令組み合わせ履歴テーブルが格納される。メモリ１−６は、半導体メモリ、磁気ディスク、光ディスクあるいはその他の記録媒体であってもよい。
【００２２】
処理装置１−５は、エミュレータメモリ領域１−８に格納されたエミュレーションプログラムを読み出し、該エミュレーションプログラムにしたがって本発明のエミュレーション方法の処理を実行し、ターゲットシステムのＯＳ１−２の命令をベースシステムのＯＳ１−３の命令に置き換えながら、ターゲットシステムのＯＳ１−２上で動作するアプリケーションプログラム１−１の処理を実行する。
【００２３】
本実施形態では、各ターゲット命令を個々にエミュレーションするコーディングと、複数のターゲット命令を一括してエミュレーションするコーディングとを予め作成し、エミュレータメモリ領域１−８に予め格納しておく。そして、エミュレーションの実行時、処理装置１−５は、複数のターゲット命令をそれぞれフェッチし、予め作成した命令組み合わせテーブルを参照して、フェッチした複数のターゲット命令が一括して処理できるか否かを判定する。複数のターゲット命令が一括して処理できる組み合わせの場合、それらのターゲット命令を一括してエミュレーションするコーディングに分岐して処理を実行する。一方、複数のターゲット命令が一括して処理できない組み合わせの場合、フェッチした複数のターゲット命令のうち、先行するターゲット命令をエミュレーションするコーディングに分岐して処理を実行する。
【００２４】
命令組み合わせテーブルは、例えば図２に示すように先行する第１のターゲット命令を行とし、後続する第２のターゲット命令を列とする、３つの命令Ａ〜Ｃの組み合わせ毎に一括して処理が可能であるか否かを「ＯＫ」または「ＮＧ」で示したものである。図２に示す例では、第１のターゲット命令が命令Ｂ、第２のターゲット命令が命令Ａの組み合わせのときに一括して処理することが可能であり、その他の組み合わせは一括して処理できないことを示している。
【００２５】
なお、命令Ａ〜Ｃは、ターゲットプログラムで使用可能な命令であり、図２に示すように命令Ａ〜Ｃの３種類に限らず、ターゲットプログラムに応じて、より少ない種類、あるいはより多くの種類の命令を備えていてもよい。
【００２６】
また、図２に示した命令組み合わせテーブルでは、先行する第１のターゲット命令を行とし、後続する第２のターゲット命令を列とする例を示したが、先行する第１のターゲット命令を列とし、後続する第２のターゲット命令を行としてもよい。
【００２７】
コンピュータシステムが備える命令組み合わせテーブルの数は１つに限る必要はなく、複数の命令組み合わせテーブルを備えていてもよい。
【００２８】
図２では、２つのターゲット命令の組み合わせが一括して処理できるか否かを示す命令組み合わせテーブルの一例を示したが、３つ以上のターゲット命令を一括して処理する場合は、その命令数に合わせて、各ターゲット命令の組み合わせが一括して処理できるか否かを示す命令組み合わせテーブルを予め作成すればよい。その場合、それら３つ以上のターゲット命令を一括してエミュレーションするコーディングを予め作成しておく。
【００２９】
次に第１の実施の形態のエミュレーション方法について図３を用いて説明する。
【００３０】
図３は本発明のコンピュータシステムの第１の実施の形態の処理手順を示すフローチャートである。なお、図３は２つのターゲット命令を一括して処理する場合の処理手順を示している。
【００３１】
図３に示すように、処理装置１−５は、最初に先行する第１のターゲット命令をフェッチし（ステップ３−１）、第１のターゲット命令をデコードする（ステップ３−２）。続いて、処理装置１−５は、後続する第２のターゲット命令をフェッチし（ステップ３−３）、第２のターゲット命令をデコードする（ステップ３−４）。
【００３２】
次に、処理装置１−５は、第１のターゲット命令及び第２のターゲット命令のデコード結果に基づき、図２に示した命令組み合わせテーブルを索引して（ステップ３−５）、第１のターゲット命令と第２のターゲット命令とが一括して処理できるか否かを判定する（ステップ３−６）。
【００３３】
第１のターゲット命令と第２のターゲット命令が一括して処理できる場合、処理装置１−５は、第１のターゲット命令と第２のターゲット命令を一括してエミュレーションするコーディングへ分岐し（ステップ３−１０）、第１のターゲット命令と第２のターゲット命令の処理を一括して実行し（ステップ３−１１）、処理が終了すると、第１のターゲット命令と第２のターゲット命令に対応する所定の終了処理を実行する（ステップ３−１２）。
【００３４】
一方、ステップ３−６にて第１のターゲット命令と第２のターゲット命令が一括して処理できないと判定した場合、処理装置１−５は、先行する第１のターゲット命令をエミュレーションするコーディングへ分岐し（ステップ３−７）、第１のターゲット命令の処理を実行し（ステップ３−８）、処理が終了すると、第１のターゲット命令に対応する所定の終了処理を実行する（ステップ３−９）。
【００３５】
なお、図３では、ステップ３−１にて１つのターゲット命令（第１のターゲット命令）のみをフェッチする例を示したが、ステップ３−１にて２つ以上のターゲット命令を一括してフェッチしてもよく、２つ以上のターゲット命令を段階的にフェッチしてもよい。
【００３６】
また、図３では、ステップ３−２にて１つのターゲット命令（第１のターゲット命令）のみをデコードする例を示したが、ステップ３−１にて２つ以上のターゲット命令を一括してフェッチしている場合は、ステップ３−２にてそれらのターゲット命令を一括してデコードしてもよく、それらのターゲット命令を段階的にデコードしてもよい。
【００３７】
また、図３では、ステップ３−１１にて２つのターゲット命令を一括して処理する例を示したが、２つ以上のターゲット命令をフェッチ及びデコードしている場合は、ステップ３−１１にてそれらのターゲット命令を一括して処理してもよい。図３のステップ３−１１の処理は、図３のステップ３−９に示す単一のターゲット命令の終了処理と並行して実施してもよい。
【００３８】
次に、一括して処理できるターゲット命令の組み合わせについて具体的に説明する。
【００３９】
以下は、一括して処理できるターゲット命令の組み合わせとして、ベースシステムの命令にインテル社のＩＡ６４命令を使用し、ターゲット命令addt, subtを実行する例である。
【００４０】
図４はaddt命令及びsubt命令のコードの一例を示す模式図である。
【００４１】
図４に示すように、addt命令は、ＧＲ１で指定されるＧＲレジスタ（汎用レジスタ）の情報（4Byte）とＧＲ２で指定されるＧＲレジスタの情報（4Byte）とを加算し、加算結果をＧＲ２で指定されるＧＲレジスタに格納する命令である。
【００４２】
また、subt命令は、ＧＲ３で指定されるＧＲレジスタの情報（4Byte）からＧＲ４で指定されるＧＲレジスタの情報（4Byte）を減算し、減算結果をＧＲ４で指定されるＧＲレジスタに格納する命令である。
【００４３】
addt命令、subt命令を単体で処理する際のコーディングの具体例を図５〜図８に示す。図５はaddt命令及びsubt命令のフェッチ及びデコード処理の具体例を示し、図６はaddt命令の実行処理の具体例を示している。また、図７はsubt命令の実行処理の具体例を示し、図８はaddt命令及びsubt命令の終了処理の具体例を示している。
【００４４】
一方、addt命令とsubt命令を一括して処理する場合のコーディングの具体例を図９〜図１１に示す。図９はaddt命令とsubt命令を一括して処理する場合のフェッチ及びデコード処理の具体例を示し、図１０はaddt命令とsubt命令を一括して処理する場合の実行処理の具体例を示している。また、図１１はaddt命令とsubt命令を一括して処理する場合の終了処理の具体例を示している。但し、図９〜図１１に示したコーディングには、命令組み合わせテーブルを参照し、フェッチした２つのターゲット命令が一括して処理できるか否かを判定する処理を記述していない。本発明を実施する場合、このような判定処理も必要となる。このように一括して処理できるターゲット命令の組み合わせは各種存在する。
【００４５】
なお、一括して実行できないターゲット命令の組み合わせは基本的に存在しないが、組み合わせる前の各ターゲット命令の個々の処理で必要な実行時間（クロック数）と、各ターゲット命令を一括して処理する場合に必要な実行時間（クロック数）とが等しい場合、それらのターゲット命令を一括して処理するメリットは無い。したがって、そのようなターゲット命令の組み合わせは一括して処理する必要はない。
【００４６】
また、３つ以上のターゲット命令を一括して処理する場合は、例えば図１２に示すように３つのターゲット命令を全てフェッチしてデコードし、それらのターゲット命令が一括して処理できる組み合わせか否かを判定し、一括して処理できる組み合わせの場合は、それらのターゲット命令を一括してエミュレーションするコーディングへ分岐すればよい。このとき、図１３に示すように、次のターゲット命令をフェッチしてデコードした段階、あるいはさらに次の命令（次々命令）をフェッチしてデコードした段階で、フェッチしたターゲット命令が一括して処理できる組み合わせか否かを判定し、一括して処理できる組み合わせではない場合は、先行するターゲット命令をエミュレーションするコーディングへ分岐してもよい。図１２及び図１３は一括して処理できるターゲット命令の数が３つの場合のコーディング例を示している。
【００４７】
本実施形態のコンピュータシステムによれば、複数のターゲット命令を一括して処理できるため、ベースシステムにエミュレーションのための専用のハードウェアを追加することなく、エミュレーション速度を向上させることができる。
【００４８】
また、従来のターゲット命令の実行処理やターゲット命令の終了処理等のコーディングを修正することなく、複数のターゲット命令を一括して処理するためのコーディングを追加するだけで、複数のターゲット命令を一括して処理できるため、既に作成してある資源（コーディング）を無駄にすることがない。
【００４９】
（第２の実施の形態）
次に本発明のコンピュータシステムの第２の実施の形態について図面を用いて説明する。
【００５０】
第２の実施の形態は、第１の実施の形態で示した命令組み合わせテーブルに代えてプロセス分岐テーブルを用いることで、エミュレーション速度を向上させる例である。コンピュータシステムの構成は第１の実施の形態と同様であるため、その説明は省略する。
【００５１】
図１４に示すように、プロセス分岐テーブルは、所定のプロセスを示すプロセス名と、該プロセス名に対応する命令カウンタと、該プロセスで実行する複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報（コーディング分岐先）とが関連付けて予め設定されたものである。
【００５２】
プロセス名と、そのプロセス名に対応する命令カウンタ及びターゲット命令の具体例を図１５に示す。図１５はＪ０〜ＪＺとＰ０〜ＰＺの組み合わせにより各プロセス名を表している。
【００５３】
特定のプロセス名に対応する命令カウンタとターゲット命令の組み合わせが固定の場合、処理装置はプロセス分岐テーブルを索引するだけで複数のターゲット命令を一括して処理することが可能であり、命令フェッチ及びそのデコード処理を削除することが可能になる。
【００５４】
このようなプロセス分岐テーブルを用いる処理は、複数のターゲット命令の組み合わせから成る所定のプロセスが一括して処理できることが予め判明している場合に有効である。
【００５５】
なお、図１４及び図１５では、プロセス分岐テーブルに、プロセス名に対応して命令カウンタ及びコーディング分岐先を有する例を示したが、複数のターゲット命令を特定できれば、プロセス分岐テーブルをどのような情報を用いて構成してもよい。
【００５６】
また、図１４及び図１５に示したプロセス分岐テーブルでは、プロセス名に対応して１つの命令カウンタ及びコーディング分岐先を有する例を示したが、プロセス名に対応して複数の命令カウンタ及びコーディング分岐先を備える構成であってもよい。
【００５７】
図１６は本発明のコンピュータシステムの第２の実施の形態の処理手順の一例を示すフローチャートである。なお、図１６は一括して処理できる２つのターゲット命令からプロセスが構成されている場合の処理手順を示している。
【００５８】
図１６に示すように、処理装置は、最初に命令カウンタの値及びプロセス名を読み出し（ステップ６−１）、命令カウンタの値及びプロセス名から図１４に示したプロセス分岐テーブルを索引する（ステップ６−２）。続いて、処理装置は、命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されている否かを判定する（ステップ６−３）。命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されている場合、処理装置は対応するコーディング分岐先の情報を取得し（ステップ６−８）、第１のターゲット命令と第２のターゲット命令を一括してエミュレーションするコーディングへ分岐する（ステップ６−９）。そして、第１のターゲット命令と第２のターゲット命令の処理を一括して実行し（ステップ６−１０）、処理が終了すると、第１のターゲット命令及び第２のターゲット命令に対応する所定の終了処理を実行する（ステップ６−１１）。
【００５９】
一方、ステップ６−２にて命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されていない場合、処理装置は、先行する第１のターゲット命令をフェッチし（ステップ６−４）、第１のターゲット命令をデコードする（ステップ６−５）。そして、デコード結果に基づき第１のターゲット命令の処理を実行し（ステップ６−６）、処理が終了すると、命令に応じた所定の終了処理を実行する（ステップ６−７）。
【００６０】
ところで、図１６に示した処理手順では、命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されていない場合、すなわち複数のターゲット命令が一括して処理できない場合は、図２４に示した従来の処理に比べて、命令カウンタの値及びプロセス名をチェックし、プロセス分岐テーブルを索引して複数のターゲット命令が一括して処理できるか否かを判定する処理が増えることになるため、エミュレーション速度が遅くなるおそれがある。図１７にこの点を改善した処理手順を示す。
【００６１】
図１７は本発明のコンピュータシステムの第２の実施の形態の処理手順の他の例を示すフローチャートである。なお、図１７は、図１６と同様に一括して処理できる２つのターゲット命令からプロセスが構成される場合の処理手順を示している。
【００６２】
図１７に示すように、処理装置は、最初に先行する第１のターゲット命令をフェッチすると共に、命令カウンタの値及びプロセス名を読み出す（ステップ７−１）。続いて、処理装置は、第１のターゲット命令をデコードすると共に、命令カウンタの値及びプロセス名から図１４に示したプロセス分岐テーブルを索引する（ステップ７−２）。
【００６３】
次に、処理装置は、命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されている否かを判定し（ステップ７−３）、命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されている場合は、それに対応するコーディングの分岐先の情報を取得し（ステップ７−６）、第１のターゲット命令と第２のターゲット命令を一括してエミュレーションするコーディングへ分岐する（ステップ７−７）。そして、第１のターゲット命令と第２のターゲット命令の処理を一括して実行し（ステップ７−８）、処理が終了すると、第１のターゲット命令及び第２のターゲット命令に対応する所定の終了処理を実行する（ステップ７−９）。
【００６４】
一方、ステップ７−３にて命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されていない場合、処理装置は、ステップ７−２の第１のターゲット命令のデコード結果に基づき第１のターゲット命令の処理を実行し（ステップ７−４）、処理が終了すると、命令に応じた所定の終了処理を実行する（ステップ７−５）。
【００６５】
図１７に示した処理手順では、ステップ７−３にて命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されていないと判定しても、第１のターゲット命令のフェッチ及びデコードが既に終了しているため、図１６に示した処理手順よりも、複数のターゲット命令が一括して処理できない場合のエミュレーション速度の劣化を抑制できる。
【００６６】
なお、図１６のステップ６−４及び図１７のステップ７−１では、１つのターゲット命令（第１のターゲット命令）のみフェッチする例を示しているが、これらのステップにて２つ以上のターゲット命令を一括してフェッチしてもよく、２つ以上のターゲット命令を段階的にフェッチしてもよい。
【００６７】
また、図１６のステップ６−５及び図１７のステップ７−２では、１つのターゲット命令（第１のターゲット命令）のみデコードする例を示しているが、２つ以上のターゲット命令をフェッチしている場合は、それらのターゲット命令を一括してデコードしてもよく、それらのターゲット命令を段階的にデコードしてもよい。
【００６８】
また、図１６のステップ６−９及び図１７のステップ７−８では、２つのターゲット命令を一括して処理する例を示したが、２つ以上のターゲット命令をフェッチ及びデコードしている場合は、それらのターゲット命令を一括して処理してもよい。
【００６９】
図１６のステップ６−９の処理は、図１６のステップ６−７に示す単一のターゲット命令の終了処理と並行して実施してもよく、図１７のステップ７−８の処理は、図１７のステップ７−５に示す単一のターゲット命令の終了処理と並行して実施してもよい。
【００７０】
本実施形態のコンピュータシステムにおいても、第１の実施の形態と同様に、複数のターゲット命令を一括して処理できるため、ベースシステムにエミュレーションのための専用のハードウェアを追加することなく、エミュレーション速度を向上させることができる。
【００７１】
また、従来のターゲット命令の実行処理やターゲット命令の終了処理等のコーディングを修正することなく、複数のターゲット命令を一括して処理するためのコーディングを追加するだけで、複数のターゲット命令を一括して処理できるため、既に作成してある資源（コーディング）を無駄にすることがない。
【００７２】
特に本実施形態では、特定のプロセス名に対応する命令カウンタとターゲット命令の組み合わせが固定の場合、プロセス分岐テーブルを索引するだけで複数のターゲット命令を一括して処理することが可能であるため、命令フェッチ及びそのデコード処理を削減できる。
【００７３】
（第３の実施の形態）
次に本発明のコンピュータシステムの第３の実施の形態について図面を用いて説明する。
【００７４】
第３の実施の形態は命令組み合わせ履歴テーブルを用いることでエミュレーション速度を向上させる例である。コンピュータシステムの構成は第１の実施の形態と同様であるため、その説明は省略する。
【００７５】
図１８は第３の実施の形態で用いる命令組み合わせ履歴テーブルの一例を示すテーブル図であり、図１９は第３の実施の形態で用いる命令組み合わせ履歴テーブルの他の例を示すテーブル図である。
【００７６】
図１８に示す命令組み合わせ履歴テーブルは、一括して処理した実績のある複数のターゲット命令の組み合わせのうち、最も新しく処理した命令の組み合わせと、それらの命令を一括してエミュレーションするコーディングへの分岐先を示す情報（コーディング分岐先）とが格納される例である。図１８では、先行する第１のターゲット命令が命令Ａ、後続する第２のターゲット命令が命令Ｂの組み合わせと、その命令Ａ及び命令Ｂを一括してエミュレーションするコーディング分岐先が格納されている。
【００７７】
一方、図１９に示す命令組み合わせ履歴テーブルは、一括して処理した実績のある複数のターゲット命令の組み合わせのうち、最も新しく処理した命令の組み合わせと、それらの命令を一括してエミュレーションするコーディング分岐先とが、先行する第１のターゲット命令の種類毎に格納される例である。
【００７８】
図１９では、先行する第１のターゲット命令が命令Ａ、後続する第２のターゲット命令が命令Ｂの組み合わせと、その命令Ａ及び命令Ｂを一括してエミュレーションするコーディング分岐先とが、命令Ａに対応して格納されている。同様に、先行する第１のターゲット命令が命令Ｂ、後続する第２のターゲット命令が命令Ｃの組み合わせと、その命令Ｂ及び命令Ｃを一括してエミュレーションするコーディング分岐先とが、命令Ｂに対応して格納されている。図１９では、命令Ｃを第１のターゲット命令とする命令の組み合わせとそのコーディング分岐先とが登録されていないため、命令Ｃを第１のターゲット命令とする組み合わせは一度も処理されていないことを示している。
【００７９】
なお、図１８及び図１９に示す命令組み合わせ履歴テーブルでは、ターゲット命令の組み合わせ及びコーディング分岐先を備えた例を示しているが、一括して処理した複数のターゲット命令の組み合わせ履歴が特定できれば、命令組み合わせ履歴テーブルはどのような情報を用いて構成してもよい。
【００８０】
また、図１８に示した命令組み合わせ履歴テーブルでは、ターゲット命令の組み合わせと、それに対応するコーディング分岐先の情報とが１組格納され、図１９に示した命令組み合わせ履歴テーブルでは、先行する第１のターゲット命令の種類毎に、ターゲット命令の組み合わせと、それに対応するコーディング分岐先の情報とが１組格納されているが、命令組み合わせ履歴テーブルには、ターゲット命令の組み合わせと、それに対応するコーディング分岐先の情報とがそれぞれ複数組格納されていてもよい。
【００８１】
図２０は本発明のコンピュータシステムの第３の実施の形態の処理手順の一例を示すフローチャートである。
【００８２】
図２０に示すように、処理装置は、最初に先行する第１のターゲット命令をフェッチし（ステップ１０−１）、第１のターゲット命令をデコードする（ステップ１０−２）。次に、処理装置は、図１９または図１９に示した命令組み合わせ履歴テーブルを索引し（ステップ１０−３）、デコードした第１のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が登録されているか否かを判定する（ステップ１０−４）。
【００８３】
第１のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が登録されている場合、処理装置は、後続する第２のターゲット命令をフェッチし（ステップ１０−８）、第２のターゲット命令をデコードする（ステップ１０−９）。
【００８４】
次に、処理装置は、第１のターゲット命令と第２のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されているか否かを判定し（ステップ１０−１０）、第１のターゲット命令と第２のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されている場合は、第１のターゲット命令と第２のターゲット命令を一括して処理するコーディングへ分岐する（ステップ１０−１１）。そして、第１のターゲット命令と第２のターゲット命令の処理を一括して実行し（ステップ１０−１２）、処理が終了すると、第１のターゲット命令と第２のターゲット命令に対応する所定の終了処理を実行する（ステップ１０−１３）。
【００８５】
一方、ステップ１０−４にて第１のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が命令組み合わせ履歴テーブルに登録されていない場合、あるいはステップ１０−１０にて第１のターゲット命令と第２のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されていない場合、処理装置は、ステップ１０−２の第１のターゲット命令のデコード結果に基づき、第１のターゲット命令をエミュレーションするコーディングへ分岐する（ステップ１０−５）。そして、第１のターゲット命令の処理を実行し（ステップ１０−６）、処理が終了すると、命令に応じた所定の終了処理を実行する（ステップ１０−７）。
【００８６】
第１の実施の形態のコンピュータシステムでは、図３に示したように、第２のターゲット命令のデコード処理が完了しないと、命令組み合わせテーブルを索引することができない。一方、第３の実施の形態のコンピュータシステムでは、図２０に示すように、デコードにより第１のターゲット命令が判別できれば、第２のターゲット命令のフェッチやデコード処理を待たずに命令組み合わせ履歴テーブルを索引できる。そのため、命令組み合わせテーブルを索引するよりもテーブルの索引結果をより速く得ることができる。
【００８７】
また、第１の実施の形態で示した命令組み合わせテーブルを索引する場合、処理装置は、デコードした複数のターゲット命令の組み合わせと命令組み合わせテーブルの各エントリとを全て比較する必要がある。しかしながら、第３の実施の形態で示した命令組み合わせ履歴テーブルでは、比較対象が１つのエントリであるため、テーブルの索引結果をより速く得ることができる。
【００８８】
ところで、図２０に示した処理では、一括して処理した実績のある複数のターゲット命令のうち、最も新しく処理した組み合わせのみ命令組み合わせ履歴テーブルに登録される。したがって、処理したターゲット命令の組み合わせが次々変化すれば、一括して処理することが可能なターゲット命令の組み合わせであっても、各ターゲット命令を個別に処理することになってしまう。
【００８９】
この点を改善するため、第１の実施の形態で示した命令組み合わせテーブルと上記命令組み合わせ履歴テーブルとをそれぞれ索引する処理例を図２１に示す。
【００９０】
図２１は本発明のコンピュータシステムの第３の実施の形態の処理手順の他の例を示すフローチャートである。
【００９１】
図２１に示すように、処理装置は、最初に先行する第１のターゲット命令をフェッチし（ステップ１１−１）、第１のターゲット命令をデコードする（ステップ１１−２）。次に、処理装置は、図１８または図１９に示した命令組み合わせ履歴テーブルを索引し（ステップ１１−３）、デコードした第１のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が登録されているか否かを判定する（ステップ１１−４）。
【００９２】
第１のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が登録されている場合、処理装置は、後続する第２のターゲット命令をフェッチし（ステップ１１−８）、第２のターゲット命令をデコードする（ステップ１１−９）。
【００９３】
次に、処理装置は、第１のターゲット命令と第２のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されているか否かを判定し（ステップ１１−１０）、第１のターゲット命令と第２のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されている場合は、第１のターゲット命令と第２のターゲット命令を一括して処理するコーディングへ分岐する（ステップ１１−１１）。そして、第１のターゲット命令と第２のターゲット命令の処理を一括して実行し（ステップ１１−１２）、処理が終了すると、第１のターゲット命令と第２のターゲット命令に対応する所定の終了処理を実行する（ステップ１１−１３）。
【００９４】
ステップ１１−４にて第１のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が命令組み合わせ履歴テーブルに登録されていない場合、処理装置は、ステップ１１−２の第１のターゲット命令のデコード結果に基づき、第１のターゲット命令をエミュレーションするコーディングへ分岐する（ステップ１１−５）。そして、第１のターゲット命令の処理を実行し（ステップ１１−６）、処理が終了すると、命令に応じた所定の終了処理を実行する（ステップ１１−７）。
【００９５】
ステップ１１−１０にて第１のターゲット命令と第２のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されていない場合、処理装置は、命令組み合わせテーブルを索引し（ステップ１１−１４）、第１のターゲット命令と第２のターゲット命令が一括して処理できるか否かを判定する（ステップ１１−１５）。
【００９６】
第１のターゲット命令と第２のターゲット命令が一括して処理できる場合、処理装置はステップ１１−１６へ移行し、ステップ１１−１１からステップ１１−１３の処理を実行する。また、第１のターゲット命令と第２のターゲット命令が一括して処理できない場合、処理装置はステップ１１−１７へ移行し、ステップ１１−５からステップ１１−７の処理を実行する。
【００９７】
図２１に示した処理手順では、処理対象のターゲット命令の組み合わせが次々変化しても、一括して処理することが可能なターゲット命令の組み合わせであれば、それらを一括して処理することができる。また、命令組み合わせ履歴テーブルを索引した結果、第１のターゲット命令と第２のターゲット命令が一括して処理できる場合は、命令組み合わせテーブルを索引しなくて済むため、命令組み合わせテーブルを索引することによるエミュレーション速度の遅れを抑制できる。
【００９８】
なお、図２０のステップ１０−１及び図２１のステップ１１−１では、１つのターゲット命令（第１のターゲット命令）のみフェッチする例を示しているが、これらのステップにて２つ以上のターゲット命令を一括してフェッチしてもよく、２つ以上のターゲット命令を段階的にフェッチしてもよい。
【００９９】
また、図２０のステップ１０−２及び図２１のステップ１１−２では、１つのターゲット命令（第１のターゲット命令）のみデコードする例を示しているが、２つ以上のターゲット命令を一括してフェッチしている場合は、それらのターゲット命令を一括してデコードしてもよく、それらのターゲット命令を段階的にデコードしてもよい。
【０１００】
また、図２０のステップ１０−１２及び図２１のステップ１１−１２では、２つのターゲット命令を一括して処理する例を示したが、２つ以上のターゲット命令をフェッチ及びデコードしている場合は、それらのターゲット命令を一括して処理してもよい。
【０１０１】
さらに、図２０のステップ１０−１２の処理は、図２０のステップ１０−７に示す単一のターゲット命令の終了処理と並行して実施してもよく、図２１のステップ１１−１２の処理は、図２１のステップ１１−７に示す単一のターゲット命令の終了処理と並行して実施してもよい。
【０１０２】
本実施形態のコンピュータシステムによれば、第１の実施の形態と同様の効果に加えて、テーブルの索引結果をより速く得ることができるため、エミュレーション速度がより向上する。
【０１０３】
（第４の実施の形態）
次に本発明のコンピュータシステムの第４の実施の形態について図面を用いて説明する。
【０１０４】
第４の実施の形態は、次に実行するターゲット命令及びさらにその次に実行するターゲット命令に対する、第１の実施の形態〜第３の実施の形態で示した命令組み合わせテーブル、プロセス分岐テーブルまたは命令組み合わせ履歴テーブルの索引処理を、先に実施しているターゲット命令の処理と並行して実施することで、エミュレーション速度を向上させる例である。
【０１０５】
図２２は本発明のコンピュータシステムの第４の実施の形態の処理手順を示すフローチャートである。なお、図２２は図２１に示した第３の実施の形態の処理手順に第４の実施の形態を適用した例である。第４の実施の形態は、図３に示した第１の実施の形態の処理、図１６及び図１７に示した第２の実施の形態の処理、及び図２０に示した第３の実施の形態の処理にも適用可能である。
【０１０６】
図２２に示すように、第４の実施の形態では、図２１に示したステップ１１−１、１１−２、１１−３、１１−８、１１−９及び１１―１４の処理における第１のターゲット命令及び第２のターゲット命令の処理と並行して、次に実行する第３のターゲット命令のフェッチ（ステップ１１−１）、第３のターゲット命令のデコード処理（ステップ１１−２）、命令組み合わせ履歴テーブルの索引（ステップ１１−３）、第３のターゲット命令に後続する第４のターゲット命令のフェッチ（ステップ１１−８）、第４のターゲット命令のデコード処理（ステップ１１−９）及び命令組み合わせテーブルの索引（ステップ１１−１４）の各処理をそれぞれ実行する。
【０１０７】
処理装置は、第３のターゲット命令及び第４のターゲット命令に対する処理に移行すると、先に実施した命令組み合わせ履歴テーブルの索引結果、命令組み合わせテーブル索引結果及び命令デコード結果を読み出し、図２１に示した第３の実施の形態の処理と同様にステップ１１−４から１１−１７の処理を実行する。
【０１０８】
このように本実施形態のコンピュータシステムでは、処理時間の負荷バランスを変えることでエミュレーション速度を改善することが可能となる。
【０１０９】
なお、図２２に示した処理では、次に実行する第３のターゲット命令及び第４のターゲット命令に対する命令組み合わせ履歴テーブルや命令組み合わせテーブルの索引処理と、第１のターゲット命令及び第２のターゲット命令の処理とを１つのプロセッサにより並行して実施する例を示している。しかしながら、処理装置に複数のプロセッサを備えている場合は、これらの処理を異なるプロセッサで並行して処理してもよい。その場合でも、図２１に示した第３の実施の形態の処理だけでなく、図３に示した第１の実施の形態の処理、図１６及び図１７に示した第２の実施の形態の処理、及び図２０に示した第３の実施の形態の処理にも適用可能である。
【０１１０】
また、第４の実施の形態では、図２３に示すように、次に実行する第３のターゲット命令及び第４のターゲット命令に対する命令組み合わせ履歴テーブルや命令組み合わせテーブルの索引処理時に、第３のターゲット命令と第４のターゲット命令が一括して処理できる組み合わせの場合は、それらを一括して処理する命令として、使用していない命令コードに書き換えてもよい。
【０１１１】
その場合、処理装置は、第３のターゲット命令及び第４のターゲット命令に対する処理に移行すると、先に実施した命令組み合わせ履歴テーブルの索引結果、命令組み合わせテーブル索引結果及び命令デコード結果を読み出し、それらの命令を使用していない命令コードに書き換えたか否かを判定し（ステップ１３−１）、命令コードを書き換えている場合は、該命令コードにしたがって図２１に示したステップ１１−１１から１１−１３の処理を実施する。
【０１１２】
ステップ１３−１にて命令コードを書き換えていないと判定した場合は、図２１に示したステップ１１−５から１１−７の処理を実施する。
【０１１３】
図２３に示した処理では、次に実行する第３のターゲット命令及び第４のターゲット命令を一括して処理する命令を書き換えることで、命令組み合わせテーブルや命令組み合わせ履歴テーブルの索引処理や判定処理を簡略化することが可能であり、図２２に示したステップ１１−１０、１１−１５、１１−１６及び１１−１７の処理を削減できる。
【０１１４】
この場合でも、図２１に示した第３の実施の形態の処理だけでなく、図３に示した第１の実施の形態の処理、図１６及び図１７に示した第２の実施の形態の処理、及び図２０に示した第３の実施の形態の処理にも適用可能である。
【０１１５】
本実施形態のコンピュータシステムによれば、第１の実施の形態及び第２の実施の形態と同様の効果に加えて、処理時間の負荷バランスを変えることでエミュレーション速度を改善することが可能となる。
【図面の簡単な説明】
【０１１６】
【図１】本発明のコンピュータシステムの一構成例を示すブロック図である。
【図２】第１の実施の形態のコンピュータシステムで用いる命令組み合わせテーブルの一例を示すテーブル図である。
【図３】本発明のコンピュータシステムの第１の実施の形態の処理手順を示すフローチャートである。
【図４】addt命令及びsubt命令のコードの一例を示す模式図である。
【図５】addt命令及びsubt命令のフェッチ及びデコード処理の具体例を示すコーディング図である。
【図６】addt命令の実行処理の具体例を示すコーディング図である。
【図７】subt命令の実行処理の具体例を示すコーディング図である。
【図８】addt命令及びsubt命令の終了処理の具体例を示すコーディング図である。
【図９】addt命令とsubt命令を一括して処理する場合のフェッチ及びデコード処理の具体例を示すコーディング図である。
【図１０】addt命令とsubt命令を一括して処理する場合の実行処理の具体例を示すコーディング図である。
【図１１】addt命令とsubt命令を一括して処理する場合の終了処理の具体例を示すコーディング図である。
【図１２】３つ以上のターゲット命令を一括して処理する場合のフェッチ及びデコード処理の一例を示すコーディング図である。
【図１３】３つ以上のターゲット命令を一括して処理する場合のフェッチ及びデコード処理の他の例を示すコーディング図である。
【図１４】第２の実施の形態のコンピュータシステムで用いるプロセス分岐テーブルの一例を示すテーブル図である。
【図１５】図１４に示したプロセス分岐テーブルのプロセス名、命令カウンタ及びターゲット命令の具体例を示すテーブル図である。
【図１６】本発明のコンピュータシステムの第２の実施の形態の処理手順の一例を示すフローチャートである。
【図１７】本発明のコンピュータシステムの第２の実施の形態の処理手順の他の例を示すフローチャートである。
【図１８】第３の実施の形態で用いる命令組み合わせ履歴テーブルの一例を示すテーブル図である。
【図１９】第３の実施の形態で用いる命令組み合わせ履歴テーブルの他の例を示すテーブル図である。
【図２０】本発明のコンピュータシステムの第３の実施の形態の処理手順の一例を示すフローチャートである。
【図２１】本発明のコンピュータシステムの第３の実施の形態の処理手順の他の例を示すフローチャートである。
【図２２】本発明のコンピュータシステムの第４の実施の形態の処理手順を示すフローチャートである。
【図２３】本発明のコンピュータシステムの第４の実施の形態の処理手順の変形例を示すフローチャートである。
【図２４】従来のエミュレーション方法の処理手順を示すフローチャートである。
【符号の説明】
【０１１７】
１−１    アプリケーションプログラム
１−２    ターゲットシステムのＯＳ
１−３    ベースシステムのＯＳ
１−４    エミュレータ
１−５    プロセッサ
１−６    メモリ
１−７    ターゲットメモリ領域
１−８    エミュレータメモリ領域
１−９    ベースメモリ領域
１−１０    ＩＯ装置
【図１】
0004778359.tif 000002
【図２】
0004778359.tif 000003
【図３】
0004778359.tif 000004
【図４】
0004778359.tif 000005
【図５】
0004778359.tif 000006
【図６】
0004778359.tif 000007
【図７】
0004778359.tif 000008
【図８】
0004778359.tif 000009
【図９】
0004778359.tif 000010
【図１０】
0004778359.tif 000011
【図１１】
0004778359.tif 000012
【図１２】
0004778359.tif 000013
【図１３】
0004778359.tif 000014
【図１４】
0004778359.tif 000015
【図１５】
0004778359.tif 000016
【図１６】
0004778359.tif 000017
【図１７】
0004778359.tif 000018
【図１８】
0004778359.tif 000019
【図１９】
0004778359.tif 000020
【図２０】
0004778359.tif 000021
【図２１】
0004778359.tif 000022
【図２２】
0004778359.tif 000023
【図２３】
0004778359.tif 000024
【図２４】
0004778359.tif 000025