(57)【要約】      （修正有）【課題】  コンパイル方式のエミュレーションで要求される程度の性能を持つプロセッサを用いて、インタプリタ方式のエミュレーションを可能にする情報処理装置を提供する。【解決手段】  所定の処理を実行するホストプロセッサ１と、ホストプロセッサ１からの指示によりエミュレーションを実行するコプロセッサ２と、を備えたエミュレータである。コプロセッサ２は、ホストプロセッサ１からエミュレーションの実行が指示されると、エミュレーションにより実行する処理がコプロセッサ２で実行可能であるか否かを判断する。コプロセッサ２は、実行可能である場合には処理を実行し、不可能である場合にはホストプロセッサ１に当該処理の実行を任せるようになっている。【選択図】図２
2006178646.tif 000002
【特許請求の範囲】
【請求項１】
所定の命令を取り込む第１プロセッサと、前記第１プロセッサからの指示により所定の処理を実行する第２プロセッサと、を備えており、
前記第１プロセッサは、
前記所定の命令に応じて前記第２プロセッサに前記所定の処理の実行を指示するように構成されており、
前記第２プロセッサは、
前記第１プロセッサから指示された前記所定の処理が実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第１プロセッサに通知する判断手段と、
実行可能である場合に、前記所定の処理を実行する第２処理手段と、を有し、
前記第１プロセッサは、前記第２プロセッサから前記通知があると前記所定の処理を実行するように構成されており、
前記第１プロセッサと前記第２プロセッサとにより協働で前記所定の命令に応じた処理を実行するように構成されている、
情報処理装置。
【請求項２】
前記第１プロセッサは、
前記所定の命令に応じた処理を実行可能な第１処理手段と、
前記所定の命令が前記第２プロセッサで処理すべき命令であるか否かを判断して、前記所定の命令が前記第２プロセッサで処理すべき命令でない場合に、前記第１処理手段にこの命令に応じた処理を実行させるとともに、前記所定の命令が前記第２プロセッサで処理すべき命令である場合に、前記第２プロセッサに前記所定の処理の実行を指示する制御手段と、を備えており、
前記制御手段は、前記第２プロセッサから前記通知があると、前記第１処理手段に、前記所定の処理を実行させるように構成されている、
請求項１記載の情報処理装置。
【請求項３】
前記第２プロセッサは、前記第２プロセッサで実行可能な処理を表すテーブルを保持しており、
前記判断手段は、このテーブルを参照することで、前記第１プロセッサから指示された前記所定の処理が前記第２プロセッサで実行可能か否かを判断するように構成されている、
請求項１記載の情報処理装置。
【請求項４】
前記第１プロセッサから指示される前記所定の処理がエミュレーションによるものであり、
前記第１プロセッサまたは前記第２プロセッサがエミュレーションにより前記所定の処理を実行するように構成されている、
請求項１記載の情報処理装置。
【請求項５】
前記第１プロセッサは、前記所定の命令に応じた処理に用いられるデータを取り込むようになっており、
前記所定の命令は、前記第１プロセッサによる処理の実行、及びエミュレーションの実行を含む前記第２プロセッサによる処理の実行、のいずれかを指示するものであり、
前記データは、前記所定の命令が前記第１プロセッサによる処理の実行または前記第２プロセッサによるエミュレーションを除く処理の実行を指示するものである場合には、これらの処理に用いられるものであるとともに、前記所定の命令が前記エミュレーションの実行を指示するものである場合には、当該エミュレーションにより実行される処理を指示するものであり、
前記第１プロセッサの前記制御手段は、前記所定の命令が前記第１プロセッサによる処理の実行を指示するものである場合に、前記第１処理手段にこの命令に応じた処理を前記データを用いて実行させるとともに、前記所定の命令が前記第２プロセッサによる処理の実行を指示するものである場合に、前記第２プロセッサに前記所定の命令及び前記データを送るように構成されており、
前記第２プロセッサは、前記制御手段から送られる前記所定の命令が、前記第２プロセッサによるエミュレーションを除く処理の実行を指示する場合に、この命令に応じた処理を前記データを用いて実行する第３処理手段を更に備えており、
前記判断手段は、前記制御手段から送られる前記所定の命令がエミュレーションの実行を指示する場合に、前記第２プロセッサで当該エミュレーションにより前記データが指示する処理を実行可能であるか否かを判断するように構成されており、
前記第２処理手段は、前記第２プロセッサで当該エミュレーションにより前記データが指示する処理が実行可能である場合に、前記エミュレーションにより当該処理を実行するように構成されており、
前記第１プロセッサの前記制御手段は、前記判断手段から前記通知があると、前記第１処理手段に、前記エミュレーションにより前記データが指示する前記処理を実行させるように構成されており、
前記第１プロセッサと前記第２プロセッサとにより協働で前記エミュレーションを実行するように構成されている、
請求項２記載の情報処理装置。
【請求項６】
前記第１プロセッサは、所定の時間間隔で、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した設定値を、前記第２プロセッサに設定するように構成されており、
前記第２プロセッサは、
前記第２処理手段がエミュレーションにより実行可能な処理を、当該処理を本来実行するターゲットプロセッサが実行した場合に要する所要時間を表す実行クロックテーブルと、
前記第２処理手段で前記エミュレーションにより実行する処理の所要時間を前記実行クロックテーブルから読み出して、前記第１プロセッサにより設定された前記設定値から順次減算し、減算結果が０以下になった場合に、その旨を前記第１プロセッサに通知するクロックカウンタと、を更に備えており、
前記第１プロセッサは、前記設定値を前記第２プロセッサに設定してから、前記クロックカウンタから通知を受けるまでの時間を計測して、前記第２プロセッサによるエミュレーションの処理時間を測定するように構成されている、
請求項３記載の情報処理装置。
【請求項７】
前記第２プロセッサは、前記第１プロセッサのコプロセッサであり、前記第１プロセッサと前記第２プロセッサとはコプロセッサ接続されている、
請求項１乃至６のいずれかに記載の情報処理装置。
【請求項８】
所定の命令を取り込む第１プロセッサと、前記第１プロセッサからの指示により所定の処理を実行する第２プロセッサとを備え、前記第１プロセッサ及び前記第２プロセッサにより協働して前記命令に応じた処理を実行する情報処理装置により実行される方法であって、
前記第１プロセッサが、
前記所定の命令に応じて前記第２プロセッサに前記所定の処理の実行を指示する段階と、
前記第２プロセッサが、
前記第１プロセッサから指示された前記所定の処理が前記第２プロセッサで実行可能であるか否かを判断する段階と、
前記第２プロセッサで実行可能である場合には、前記所定の処理を実行する段階と、
前記第２プロセッサで実行不可能である場合には、その旨を前記第１プロセッサに通知する段階と、
前記第１プロセッサが、
前記第２プロセッサから前記所定の処理を実行不可能である旨の前記通知を受け取ると当該処理を実行する段階と、を含む、
情報処理方法。
【請求項９】
所定の命令を取り込む第１プロセッサと、前記第１プロセッサからの指示により所定の処理を実行する第２プロセッサと、を備えており、
前記第１プロセッサは、
前記所定の命令に応じて前記第２プロセッサに前記所定の処理の実行を指示するように構成されており、
前記第２プロセッサは、
前記第１プロセッサから指示された前記所定の処理が実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第１プロセッサに通知する判断手段と、
実行可能である場合に、前記所定の処理を実行する第２処理手段と、を有し、
前記第１プロセッサは、前記第２プロセッサから前記通知があると前記所定の処理を実行するように構成されており、
前記第１プロセッサと前記第２プロセッサとにより協働で前記所定の命令に応じた処理を実行するように構成されている、
半導体装置。
【請求項１０】
所定の命令を取り込む第１プロセッサと、前記第１プロセッサからの指示により所定の処理を実行する第２プロセッサとを備え、前記第１プロセッサ及び前記第２プロセッサにより協働して前記命令に応じた処理を実行するコンピュータシステムに、
前記第１プロセッサが、
前記所定の命令に応じて前記第２プロセッサに前記所定の処理の実行を指示する処理、
前記第２プロセッサが、
前記第１プロセッサから指示された前記所定の処理が前記第２プロセッサで実行可能であるか否かを判断する処理、
前記第２プロセッサで実行可能である場合には、前記所定の処理を実行する処理、
前記第２プロセッサで実行不可能である場合には、その旨を前記第１プロセッサに通知する処理、
前記第１プロセッサが、
前記第２プロセッサから前記所定の処理を実行不可能である旨の前記通知を受け取ると当該処理を実行する処理、
を実行させるためのコンピュータプログラム。
【請求項１１】
請求項１０に記載のコンピュータプログラムが記録された、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、複数のプロセッサを用いてエミュレーション等の処理を実行するための情報処理装置に関する。
【背景技術】
【０００２】
汎用のサーバ装置や高性能のパーソナルコンピュータ等の情報処理装置には、複数のプロセッサを有するマルチプロセッサシステムのものがある。マルチプロセッサシステムの情報処理装置では、通常、複数のプロセッサによる分散処理が行われる。分散処理では、各プロセッサが、最適化されて動作するように構成される。
【０００３】
また例えば、ホストプロセッサとコプロセッサとを備えたコプロセッサシステムも、複数のプロセッサを用いるという意味では、広義のマルチプロセッサといえる。コプロセッサは、通常、特定の処理に特化して構成されており、ホストプロセッサの性能を強化するために用いられる。ホストプロセッサとコプロセッサとは、短時間で大量のデータの送受信が可能な専用のバスで接続（コプロセッサ接続）されているので、コプロセッサシステムは、細かなタイミング制御を必要とするようなデータ処理に向いている。
【０００４】
このようなマルチプロセッサを用いてエミュレーションを行うことがある。エミュレーションを行うエミュレータの基本的な機能は、アプリケーションソフトウエアの実行が本来的に予定された情報処理装置の実行環境を他の情報処理装置上に形成するものであり、ソフトウエア、ハードウエア、あるいはこれらの組合せによって実現される。エミュレーションを行う情報処理装置のプロセッサは、エミュレーション時に、アプリケーションソフトウエアが本来実行される情報処理装置のプロセッサ（以下、「ターゲットプロセッサ」という。）と同等の機能が形成され、当該アプリケーションソフトウエアを実行することになる。この場合、プロセッサはエミュレータとなる。
【０００５】
マルチプロセッサによりエミュレーションを行う場合には、エミュレーション専用のプロセッサをエミュレータとして情報処理装置内に設けることがある。しかしこの場合、エミュレーション専用のプロセッサを新たに開発しなければならず、コスト的にも、また開発期間がかかるという点においても、あまり現実的ではない。さらに、情報処理装置に接続される周辺機器についてもエミュレーションが必要となり、どの程度のプロセッサの能力が必要かを開発段階で知ることが困難である。
【０００６】
一般に、エミュレーションの方式は、アプリケーションソフトウエアを構成する命令（以下、「ターゲットプロセッサ命令」という。）についての処理を、複数まとめて実行するか、１つずつ順次実行するかにより、コンパイル方式とインタプリタ方式とに分けられる。
【０００７】
コンパイル方式は、複数の命令からなる命令ブロックを１つの単位として変換し、命令ブロック単位で処理を実行することで、繰り返し実行することが多い処理に対して高い性能を実現できる。しかしコンパイル方式では、エミュレータが必要とするメモリ容量が大きくなり、また自己書き換えコードへの対処が難しい。さらに、繰り返し実行の頻度によって性能のばらつきが大きいためタイミング制御が難しい、等の問題がある。
【０００８】
インタプリタ方式は、１つの命令毎に変換するため、自己書き換えコードへの対応がコンパイル方式よりも容易であり、性能のバラツキも少なくタイミング制御も容易である。そのために、インタプリタ方式は、リアルタイムシステム用のプロセッサのエミュレーションに向いており、高い互換性を期待できる。またエミュレータが必要とするメモリ容量がコンパイル方式と比較して少なくすむ。しかしインタプリタ方式は、コンパイル方式と比較して、処理速度等の性能が、経験的に１／２〜１／３程度劣るという問題がある。
【０００９】
インタプリタ方式のこのような問題を解決するためには、エミュレーションを行うプロセッサをコンパイル方式で用いるものよりも２〜３倍高速にする必要がある。しかし、実際にはそれほど高速のプロセッサが存在しなかったり、存在する場合でもコストが高かったり、消費電力が大きかったり等の問題を伴うことが多い。
【００１０】
また、リアルタイムシステム用のプロセッサによりエミュレーションを実行する場合には、論理的に正しい結果を得るのみならず、処理のタイミングを合わせなければ高い互換性を保証することができない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、複数のプロセッサにより協働で処理を行う情報処理装置、例えば複数のプロセッサにより協働でエミュレーションを行う情報処理装置を提供することを課題とする。
【００１２】
本発明は、他に、インタプリタ方式によるエミュレーションの上記のような問題を解決するものであり、コンパイル方式のエミュレーションで要求される程度の性能を持つプロセッサを用いて、要求される性能のインタプリタ方式のエミュレーションを可能にする情報処理装置を提供することを課題とする。
【課題を解決するための手段】
【００１３】
以上の課題を解決する本発明の情報処理装置は、所定の命令を取り込む第１プロセッサと、前記第１プロセッサからの指示により所定の処理を実行する第２プロセッサと、を備えている。前記第１プロセッサは、前記所定の命令に応じて前記第２プロセッサに前記所定の処理の実行を指示するように構成されている。前記第２プロセッサは、前記第１プロセッサから指示された前記所定の処理が実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第１プロセッサに通知する判断手段と、実行可能である場合に、前記所定の処理を実行する第２処理手段と、を有している。前記第１プロセッサは、前記第２プロセッサから前記通知があると前記所定の処理を実行するように構成される。この情報処理装置は、前記第１プロセッサと前記第２プロセッサとにより協働で前記命令に応じた処理を実行するように構成されている。
【００１４】
このような本発明の情報処理装置は、第１プロセッサと第２プロセッサとが協働で処理（エミュレーション）を行うようになっている。そのために、例えば第１プロセッサがコンパイル方式のエミュレーションで要求される程度の性能しか持たない場合でも、インタプリタ方式のエミュレーションを行うことができる。
【００１５】
前記第１プロセッサは、例えば、前記所定の命令に応じた処理を実行可能な第１処理手段と、前記所定の命令が前記第２プロセッサで処理すべき命令であるか否かを判断して、前記所定の命令が前記第２プロセッサで処理すべき命令でない場合に、前記第１処理手段にこの命令に応じた処理を実行させるとともに、前記所定の命令が前記第２プロセッサで処理すべき命令である場合に、前記第２プロセッサに前記所定の処理の実行を指示する制御手段と、を備えて構成すればよい。このような構成において前記制御手段は、前記第２プロセッサから前記通知があると、前記第１処理手段に、前記所定の処理を実行させる。
【００１６】
第２プロセッサで処理が実行可能か否かは、例えば以下のような構成により判断できるようになる。この構成では、前記第２プロセッサが、前記第２プロセッサで実行可能な処理を表すテーブルを保持している。前記判断手段は、このテーブルを参照することで、前記第１プロセッサから指示された前記所定の処理が前記第２プロセッサで実行可能か否かを判断可能になる。
テーブルを書き換え可能にすると、第１プロセッサとの関係で処理の割り振りを変えることができ、第１プロセッサ及び第２プロセッサの処理を最適化することができる。
【００１７】
このような情報処理装置では、例えば、前記第１プロセッサから指示される前記所定の処理がエミュレーションによるものであり、前記第１プロセッサまたは前記第２プロセッサがエミュレーションにより前記所定の処理を実行するように構成される。エミュレーションを行う場合には、より具体的には、例えば以下のような構成になる。
【００１８】
エミュレーションを行う場合には、例えば、前記第１プロセッサが、前記所定の命令に応じた処理に用いられるデータを取り込むようになる。前記所定の命令は、前記第１プロセッサによる処理の実行、及びエミュレーションの実行を含む前記第２プロセッサによる処理の実行、のいずれかを指示するものであり、前記データは、前記所定の命令が前記第１プロセッサによる処理の実行または前記第２プロセッサによるエミュレーションを除く処理の実行を指示するものである場合には、これらの処理に用いられるものであるとともに、前記所定の命令が前記エミュレーションの実行を指示するものである場合には、当該エミュレーションにより実行される処理を指示するものである。前記第１プロセッサの前記制御手段は、前記所定の命令が前記第１プロセッサによる処理の実行を指示するものである場合に、前記第１処理手段にこの命令に応じた処理を前記データを用いて実行させるとともに、前記所定の命令が前記第２プロセッサによる処理の実行を指示するものである場合に、前記第２プロセッサに前記所定の命令及び前記データを送るように構成される。前記第２プロセッサは、前記制御手段から送られる前記所定の命令が、前記第２プロセッサによるエミュレーションを除く処理の実行を指示する場合に、この命令に応じた処理を前記データを用いて実行する第３処理手段を更に備える。第２プロセッサの前記判断手段は、前記制御手段から送られる前記所定の命令がエミュレーションの実行を指示する場合に、前記第２プロセッサで当該エミュレーションにより前記データが指示する処理を実行可能であるか否かを判断するように構成されており、前記第２処理手段は、前記第２プロセッサで当該エミュレーションにより前記データが指示する処理が実行可能である場合に、前記エミュレーションにより当該処理を実行するように構成される。前記第１プロセッサの前記制御手段は、前記判断手段からの通知に応じて、前記第１処理手段に、前記エミュレーションにより前記データが指示する前記処理を実行させるように構成され、前記第１プロセッサと前記第２プロセッサとにより協働で前記エミュレーションを実行する。
【００１９】
前記第１プロセッサが、所定の時間間隔で、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した設定値を、前記第２プロセッサに設定するように構成されている場合には、前記第２プロセッサを、前記第２処理手段がエミュレーションにより実行可能な処理を、当該処理を本来実行するターゲットプロセッサが実行した場合に要する所要時間を表す実行クロックテーブルと、前記第２処理手段で前記エミュレーションにより実行する処理の所要時間を前記実行クロックテーブルから読み出して、前記第１プロセッサにより設定された前記設定値から順次減算し、減算結果が０以下になった場合に、その旨を前記第１プロセッサに通知するクロックカウンタと、を更に備えて構成してもよい。このような構成では、前記第１プロセッサが、前記設定値を前記第２プロセッサに設定してから、前記クロックカウンタから通知を受けるまでの時間を計測することで、前記第２プロセッサによるエミュレーションの処理時間を測定できるようになる。
【００２０】
これらの情報処理装置において、例えば前記第２プロセッサが前記第１プロセッサのコプロセッサであり、前記第１プロセッサと前記第２プロセッサとはコプロセッサ接続されていてもよい。このような構成では、短時間で大量のデータの送受信が可能になるので、第１プロセッサ及び第２プロセッサにより、より高速で複雑な処理が可能となる。
【００２１】
本発明の情報処理方法は、所定の命令を取り込む第１プロセッサと、前記第１プロセッサからの指示により所定の処理を実行する第２プロセッサとを備え、前記第１プロセッサ及び前記第２プロセッサにより協働して前記命令に応じた処理を実行する情報処理装置により実行される方法である。
この方法は、前記第１プロセッサが、前記所定の命令に応じて前記第２プロセッサに前記所定の処理の実行を指示する段階と、前記第２プロセッサが、前記第１プロセッサから指示された前記所定の処理が前記第２プロセッサで実行可能であるか否かを判断する段階と、前記第２プロセッサで実行可能である場合には、前記所定の処理を実行する段階と、前記第２プロセッサで実行不可能である場合には、その旨を前記第１プロセッサに通知する段階と、前記第１プロセッサが、前記第２プロセッサから前記所定の処理を実行不可能である旨の前記通知を受け取ると当該処理を実行する段階と、を含む。
【００２２】
本発明の半導体装置は、所定の命令を取り込む第１プロセッサと、前記第１プロセッサからの指示により所定の処理を実行する第２プロセッサと、を備えており、前記第１プロセッサは、前記所定の命令に応じて前記第２プロセッサに前記所定の処理の実行を指示するように構成されており、前記第２プロセッサは、前記第１プロセッサから指示された前記所定の処理が実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第１プロセッサに通知する判断手段と、実行可能である場合に、前記所定の処理を実行する第２処理手段と、を有し、前記第１プロセッサは、前記第２プロセッサから前記通知があると前記所定の処理を実行するように構成されており、前記第１プロセッサと前記第２プロセッサとにより協働で前記所定の命令に応じた処理を実行するように構成されている。
【００２３】
本発明のコンピュータプログラムは、所定の命令を取り込む第１プロセッサと、前記第１プロセッサからの指示により所定の処理を実行する第２プロセッサとを備え、前記第１プロセッサ及び前記第２プロセッサにより協働して前記命令に応じた処理を実行するコンピュータシステムに、前記第１プロセッサが、前記所定の命令に応じて前記第２プロセッサに前記所定の処理の実行を指示する処理、前記第２プロセッサが、前記第１プロセッサから指示された前記所定の処理が前記第２プロセッサで実行可能であるか否かを判断する処理、前記第２プロセッサで実行可能である場合には、前記所定の処理を実行する処理、前記第２プロセッサで実行不可能である場合には、その旨を前記第１プロセッサに通知する処理、前記第１プロセッサが、前記第２プロセッサから前記所定の処理を実行不可能である旨の前記通知を受け取ると当該処理を実行する処理、を実行させるためのコンピュータプログラムである。
【００２４】
このコンピュータプログラムは、例えばコンピュータ読み取り可能な記録媒体に記録される。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施形態を詳細に説明する。
図１は、本実施形態の情報処理装置の構成図である。
この情報処理装置は、ホストプロセッサ１及びコプロセッサ２を有し情報処理装置内の他の構成要素の動作を制御するためのプロセッサ３と、キーボード、マウス等の入力装置との間のインタフェースを制御して、入力装置からの入力データを受け付けるための入力インタフェース４と、ディスプレイ、スピーカ等の出力装置との間のインタフェースを制御して、処理結果等の出力データを出力装置から出力させるための出力インタフェース５と、情報処理装置による処理の実行の際に用いられる各種データ、命令が記憶されるＲＡＭ（Random Access Memory）６と、ＢＩＯＳ等の基本プログラム、エミュレーションを行うためのプログラム等が記憶されるＲＯＭ（Read Only Memory）７と、を備えている。各構成要素は、バスＢを介してデータの送受信が可能に接続されている。
【００２６】
情報処理装置には、電源投入時に、プロセッサ３がＲＯＭ７から必要な基本プログラムを読み込んで実行することで、所定の処理環境が構築されるようになっている。情報処理装置は、所定の処理環境が実現されると、例えば入力装置から入力される入力データに応じて、プロセッサ３が処理を実行し、その処理結果を出力インタフェース５を介して出力装置へ出力するようになっている。
【００２７】
情報処理装置は、本発明の特徴的な構成として、プロセッサ３によりエミュレータが構築される。プロセッサ３は、ホストプロセッサ１及びコプロセッサ２により、例えばＲＯＭ７に記憶されたエミュレーションを行うためのプログラムを実行して、エミュレータを構築する。プロセッサ３内のホストプロセッサ１とコプロセッサ２とは、通常のＩＯ接続よりも高速で大量のデータを送受信が可能なコプロセッサ接続される。なお、ホストプロセッサ１及びコプロセッサ２を、通常のＩＯ接続で接続してもよい。この場合、コプロセッサを用いたシステムではなく、通常のマルチプロセッサシステムとしてもよい。
【００２８】
ホストプロセッサ１は、入力インタフェース４を介して、外部から、或いはＲＡＭ６から命令を取得すると、この命令に応じた処理を実行するようになっている。命令には、ホストプロセッサ１で実行されるものとコプロセッサ２で実行されるものとがある。命令がホストプロセッサ１で実行されるものである場合には、ホストプロセッサ１がそのまま実行する。コプロセッサ２で実行されるものである場合には、命令がホストプロセッサ１からコプロセッサ２へ送られるようになっている。
【００２９】
コプロセッサ２は、ホストプロセッサ１からのみ命令が入力されるようになっており、ホストプロセッサ１を除いた他の構成要素から、直接命令が入力されることはない。コプロセッサ２は、ホストプロセッサ１から入力された命令に応じた処理を実行するようになっており、処理結果はホストプロセッサ１に返すようになっている。なおコプロセッサ２は、通常のマルチプロセッサシステムのように設けられている場合にも、ホストプロセッサ１を除いた他の構成要素から命令が入力されることはない。
【００３０】
図２は、エミュレータが構築されたときの、プロセッサ３の詳細な構成図である。エミュレータは、上記のようにプログラムを実行することで構築されるようにしてもよいが、ホストプロセッサ１及びコプロセッサ２内の各構成要素を、ハードウエアを用いて、例えば半導体チップにより構成するようにしてもよい。例えば、ホストプロセッサ１用の半導体チップとコプロセッサ２用の半導体チップを用いて、或いはホストプロセッサ１及びコプロセッサ２を１つの半導体チップとして構成してもよい。以下に、プロセッサ３により構築されるエミュレータついて詳細に説明する。
【００３１】
プロセッサ３は、コンパイル方式のエミュレーションで要求される程度の処理能力を有するホストプロセッサ１と、コプロセッサ２とにより、エミュレーションによる処理を協働で実行することで、インタプリタ方式のエミュレーションを行うように構成されている。このような構成により、インタプリタ方式のエミュレーションを、高性能のプロセッサを用いることなく実現することが可能になる。プロセッサ３では、実行頻度の高い基本演算命令をコプロセッサ２で実行し、その他の命令、すなわち他の構成要素との入出力命令、分岐命令、実行時間の長い命令、複雑な命令をホストプロセッサ１で実行する。
【００３２】
ホストプロセッサ１は、入力部１０、処理部１１、コプロセッサインタフェース部１２、出力部１３、制御部１４、及びレジスタ１５を備えている。
入力部１０はバスＢに接続されており、バスＢを介してＲＡＭ６、ＲＯＭ７等の他の構成要素からデータ、命令、プログラム等を取得するようになっている。
処理部１１は、入力部１０により取得されたデータ、命令、プログラム等に応じた処理を実行するようになっている。特に処理部１１は、ホストプロセッサ側でエミュレーションによる処理を実行する際に、ターゲットプロセッサ命令に応じた処理を実行するように構成されている。
【００３３】
コプロセッサインタフェース部１２は、コプロセッサ２との間で、データ、命令等を送受信するためのものである。出力部１３はバスＢに接続されており、バスＢを介して他の構成要素に対して処理結果等を出力するようになっている。
【００３４】
制御部１４は、ホストプロセッサ１内の各構成要素の動作を制御するものである。制御部１４は、入力部１０により取得した命令から、ホストプロセッサ１内で処理を実行するものかコプロセッサ２内で処理を実行するものかを判断する判断部と、判断部の判断結果によって処理部１１又はコプロセッサ２のいずれかに処理を実行させる指示部とを有する。判断部による判断の結果、ホストプロセッサ１内で処理を実行するものである場合には、指示部から処理部１１に当該命令による処理の実行を指示し、コプロセッサ２内で処理を実行するものである場合には、指示部からコプロセッサインタフェース部１２を介して当該命令及び関連するデータを送るようになっている。命令が、ホストプロセッサ１で処理を実行するものか、或いはコプロセッサ２で処理を実行するものであるかは、例えば、命令にどちらで処理されるかを表す情報を含ませておけばよい。また、命令の種類により制御部１４が判断するようにしてもよい。
【００３５】
レジスタ１５は、従来のプロセッサにおけるレジスタとして機能する他に、コプロセッサ２が処理を実行する際に用いるデータを記憶するものである。入力部１０で取得されたデータ、命令、プログラム等は、レジスタ１５に記憶される。
【００３６】
このような構成のホストプロセッサ１は、コプロセッサ２に所定の処理を実行させる際に、コプロセッサインタフェース部２０から、処理を実行させるための命令（以下、「コプロセッサ命令」という。）、及び処理を実行する際に用いるデータ（以下、「コプロセッサデータ」という。）等を送る。コプロセッサ命令、コプロセッサデータ等は、コプロセッサ２で実行される通常の処理の他に、コプロセッサ２にインタプリタ方式のエミュレーションを実行させるためのものである。コプロセッサ２にエミュレーションを実行させる場合に、ホストプロセッサ１は、コプロセッサ命令により、コプロセッサ２にエミュレーションの実行を指示し、コプロセッサデータにより、エミュレーションにより実行される処理を指示する。コプロセッサ２にエミュレーションを実行させる場合のコプロセッサデータを、特にターゲットプロセッサ命令という。
【００３７】
ホストプロセッサ１は制御部１４により、コプロセッサ２によるエミュレーションに実際にかかった時間を測定して、平均のエミュレーション実行時間を把握し、コプロセッサ２によるエミュレーションのタイミングを調整するようになっている。
そのためにホストプロセッサ１は、コプロセッサ２に、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した値（以下、「設定値」という。）を設定する。コプロセッサインタフェース部１２から、この設定値を含むデータ（以下、「タイミングデータ」という。）をコプロセッサ２に送ることで、コプロセッサ２に設定値が設定される。タイミングデータを入力し、コプロセッサ２からエミュレーションの終了の通知を受けるまでの時間が、コプロセッサ２によるエミュレーションにかかった実際の時間になる。
【００３８】
コプロセッサ２は、ホストプロセッサ１から入力されるコプロセッサ命令に応じた処理を実行するものである。この実施形態では、コプロセッサ２は、エミュレーションによる処理と、エミュレーションを除く他の処理とを実行するように構成されている。コプロセッサ２は、コプロセッサパイプライン２０、ターゲットプロセッサパイプライン２１、実行命令テーブル２２、パイプラインコントローラ２３、実行クロックテーブル２４、クロックカウンタ２５、及びレジスタ２６を備えている。
【００３９】
コプロセッサパイプライン２０は、コプロセッサ２で実行されるエミュレーションを除く他の処理全般を行うものであり、コプロセッサ命令デコーダ２０１、データ読出部２０２、データ処理部１１３、及びデータ書込部２０４を備えている。
【００４０】
コプロセッサ命令デコーダ２０１は、ホストプロセッサ１から送られてくるコプロセッサ命令をデコードして、コプロセッサ命令がどのような処理を指示しているかを判別する。判別結果は、パイプラインコントローラ２３に通知される。特に、コプロセッサ命令がエミュレーションを指示するものである場合には、パイプラインコントローラ２３にその旨を通知することで、ターゲットプロセッサパイプライン２１でエミュレーションが行われる。
【００４１】
図３は、コプロセッサ命令のフォーマットの一例を示す図である。コプロセッサ命令には、コプロセッサ２で実行可能な処理あるいはエミュレーションを行うことを指示する特定コードが含まれている。これによりコプロセッサ命令デコーダ２０１は、コプロセッサ命令がエミュレーションを指示するものであるか否かを判別できるようになっている。コプロセッサ命令には、この他に、コプロセッサパイプライン２０で実際に実行される処理の内容を示す情報（処理内容）が含まれている。処理内容には、処理に用いるデータの取得先、処理結果の出力先、処理の種類等が含まれる。
【００４２】
データ取得部２０２は、エミュレーション以外の処理を実行する際に、ホストコンピュータ１から送られるコプロセッサデータを取得して、あるいはレジスタ２６から処理に必要なデータを取得して、データ処理部１１３へ送る。処理に必要なデータの取得先は、コプロセッサ命令デコーダ２０１によりデコードされたコプロセッサ命令により指示される。
【００４３】
データ処理部１１３は、データ取得部２０２により取得されたデータを用いて所定の処理を実行する。処理内容は、コプロセッサ命令デコーダ２０１によりデコードされたコプロセッサ命令により指示される。
【００４４】
データ書込部２０４は、データ処理部１１３による処理結果をレジスタ２６に書き込むか、あるいはホストプロセッサ１に返す。処理結果をレジスタ２６に書き込むか、あるいはホストプロセッサ１に返すかは、予めコプロセッサ命令により指示されている。なお、データ書込部２０４は、処理結果をレジスタ２６に書き込むとともに、ホストプロセッサ１に返すようにしてもよい。
【００４５】
ターゲットプロセッサパイプライン２１は、パイプラインコントローラ２３からエミュレーションの指示があると、エミュレーションを行ってターゲットプロセッサと同等の機能を実現するものである。そのためにターゲットプロセッサパイプライン２１は、ターゲットプロセッサ命令デコーダ２１１、データ読出部２１２、データ処理部２１３、及びデータ書込部２１４を備えている。
【００４６】
ターゲットプロセッサ命令デコーダ２１１は、パイプラインコントローラ２３からエミュレーションを指示されると、ホストプロセッサ１から送られてくるコプロセッサデータをターゲットプロセッサ命令として取得し、デコードする。ターゲットプロセッサ命令デコーダ２１１は、デコードの結果、実際の処理内容とデコード結果値を得る。デコード結果値は、ターゲットプロセッサ命令により指示される処理がどのような処理（処理種）であるかを表す値であり、例えば、基本算術演算（加算、減算等）では「００」〜「３１」、論理演算（論理、シフト演算等）では「３２」〜「６３」、複雑演算（除算、乗算等）では「６４」〜「６７」、ロード・ストアでは「６８」〜「７７」、分岐（ジャンプ、条件分岐、リンク付き分岐等）では「７８」〜「９１」、その他の命令では「９２」〜「９８」、未定義な命令では「９９」の値を取るようになっている。
ターゲットプロセッサ命令デコーダ２１１は、このデコード結果値を実行命令テーブル２２と比較することで、当該命令が、ターゲットプロセッサパイプライン２１で実行可能な処理を指示している否かを判断し、その判断結果をパイプラインコントローラ２３に通知する。また、デコード結果値はパイプラインコントローラ２３を介して、あるいは直接クロックカウンタ２５に送られる。
【００４７】
図４は、ターゲットプロセッサ命令のフォーマットの一例を示す図である。ターゲットプロセッサ命令には、処理種を表す処理コードとその処理内容が含まれている。ターゲットプロセッサ命令デコーダ２１１は、コプロセッサデータに含まれる処理コードをデコードすることで、デコード結果値を得るようになっている。処理内容には、処理に用いるデータの取得先、処理結果の出力先、処理の種類等が含まれている。
【００４８】
データ読出部２１２は、レジスタ２６から処理に必要なデータを読み出して、データ処理部２１３へ送る。処理に必要なデータの取得先は、予めターゲットプロセッサ命令により指示される。
【００４９】
データ処理部２１３は、データ読出部２１２により読み出されたデータを用いて所定の処理を実行するものである。処理内容は、ターゲットプロセッサ命令デコーダ２１１でデコードされたターゲットプロセッサ命令により指示される。
【００５０】
データ書込部２１４は、データ処理部２１３による処理結果をレジスタ２６に書き込むか、あるいはホストプロセッサ１に返す。処理結果をレジスタ２６に書き込むか、あるいはホストプロセッサ１に返すかは、ターゲットプロセッサ命令により指示される。なお、データ書込部２１４は、処理結果をレジスタ２６に書き込むとともに、ホストプロセッサ１に返すようにしてもよい。
【００５１】
実行命令テーブル２２は、ターゲットプロセッサパイプライン２１で実行可能な命令を表すテーブルである。実行命令テーブル２２は、ターゲットプロセッサ命令デコーダ２１１により参照されて、ターゲットプロセッサ命令デコーダ２１１により得られるデコード結果値が、ターゲットプロセッサパイプライン２１で実行可能な命令であることを示しているか否かがわかるようになっている。このような実行命令テーブル２２は、書き換え可能なメモリに設けることが好ましい。書き換え可能なメモリに設けることで、ターゲットプロセッサパイプライン２１で実行する命令の種類を変更してホストプロセッサ１との処理量の配分調整を図って最適化したり、コプロセッサ２の一部の命令処理に設計ミスがあった場合等に、実行命令テーブル２２の対応する命令の値を書き換えることで対処できるようになる。
【００５２】
図５は、実行命令テーブル２３の例示図である。このテーブルで“値”は、該当するデコード結果値がターゲットプロセッサパイプライン２１で実行可能な処理であるか否かを示している。図５では、“値”が、「０」の場合、コプロセッサ２で処理を完全に実行できることを表す。「１」の場合、コプロセッサ２はメモリアドレスを計算できるが、バスＢを介してホストプロセッサ１に接続されるＲＡＭ６へのアクセスは実行できないので、ホストプロセッサ１にＲＡＭ６へのアクセスを代行してもらう必要があることを表す。「２」の場合、コプロセッサ２は分岐先アドレスの計算と分岐するか否かの判断まではできるが、分岐先の命令の取得はコプロセッサ２では行えないことを表す。「３」の場合、すべての処理をコプロセッサ２では行えないことを表す。図５の例では、ターゲットプロセッサパイプライン２１が、基本算術演算、論理演算を完全に実行でき、ロード・ストアのメモリアクセス以外の処理を実行でき、分岐の分岐先の命令取得以外の処理を実行できるようになっている。複雑演算、その他の命令、未定義な命令、による処理はホストプロセッサ１が行う。
【００５３】
パイプラインコントローラ２３は、コプロセッサ命令デコーダ２０１からの通知に応じて、コプロセッサ２内のどの構成要素を用いた処理を行うかを制御するものである。
パイプラインコントローラ２３は、コプロセッサ命令デコーダ２０１からエミュレーションを行う旨の通知があると、ターゲットプロセッサパイプライン２１のターゲットプロセッサ命令デコーダ２１１に対して、エミュレーションの実行を指示する。これにより、ターゲットプロセッサパイプライン２１は、エミュレータとして機能するようになる。エミュレーションを除く他の処理を行う旨の通知があると、コプロセッサパイプライン２０のコプロセッサ命令デコーダ２０１に対して、当該処理の実行を指示する。
また、パイプラインコントローラ２３は、ターゲットプロセッサ命令デコーダ２１１からターゲットプロセッサパイプライン２１で実行可能な処理か否かの判断結果の通知を受け取ると、その通知に応じた状態データをホストプロセッサ１に送る。ホストプロセッサ１は、状態データにより、ターゲットプロセッサ命令をコプロセッサ２が実行できるか否かを知ることができる。
【００５４】
実行クロックテーブル２４は、ターゲットプロセッサパイプライン２１がエミュレーションにより実行する処理を、ターゲットプロセッサが実行した場合に要する所用時間を表しており、クロックカウンタ２５によって参照される。図６は、このような実行クロックテーブル２４の例示図である。このテーブルで「所要時間」は、例えば動作クロックの１サイクルを単位としており、基本算術演算、論理演算等は、１サイクルかかる。
【００５５】
クロックカウンタ２５は、エミュレーションの実行のタイミングを調整するためのものである。
クロックカウンタ２５には、ホストプロセッサ１からのタイミングデータにより、設定値が設定される。クロックカウンタ２５は、ターゲットプロセッサ命令デコーダ２１１から直接、又はパイプラインコントローラ２３を介して得たデコード結果値と実行クロックテーブル２４とから、デコード結果値に対応する処理をターゲットプロセッサが実行した場合に要する所要時間を得る。クロックカウンタ２５は、設定値から、実行クロックテーブル２４から得られた所要時間を順次減算して、所定の所要時間が「０」または負になった場合に、このことをパイプラインコントローラ２３を介してホストプロセッサ１に通知する。
【００５６】
レジスタ２６は、コプロセッサパイプライン２０による処理結果及びターゲットプロセッサパイプライン２１によるエミュレーションの処理結果を記憶するものである。レジスタ２６に記憶される処理結果は、コプロセッサパイプライン２０、ターゲットプロセッサパイプライン２１で実行される他の処理の、処理対象のデータとなる。また、ホストプロセッサ１に処理結果を直接出力することもできるようになっている。
【００５７】
以上のような構成を持つエミュレータは、以下のような動作を行う。図７は、プロセッサ３によるエミュレーションの処理の流れを示す図である。
【００５８】
ホストプロセッサ１は、入力部１０により情報処理装置内の他の構成要素から命令を取得する（ステップＳ１０）。ホストプロセッサ１は、制御部１４により取得した命令がコプロセッサ２を用いるものであるか否かを判断する（ステップＳ２０）。ホストプロセッサ１は、命令がコプロセッサ２を用いないものである場合に、処理部１１によりこの命令に応じた処理を実行する（ステップＳ２０：N、ステップＳ３０）。
【００５９】
ホストプロセッサ１は、命令がコプロセッサ２を用いるものである場合にコプロセッサ２に対してコプロセッサ命令、コプロセッサデータ、及びタイミングデータを入力する（ステップＳ２０：Y、ステップＳ４０）。コプロセッサ命令はコプロセッサパイプライン２０に入力され、コプロセッサデータはコプロセッサパイプライン２０及びターゲットプロセッサパイプライン２１に入力され、タイミングデータはパイプラインコントローラ２３を介して、あるいは直接クロックカウンタ２４に入力される。なお、タイミングデータは、コプロセッサ命令、コプロセッサデータと常に同じタイミングで入力されるわけではなく、所定の時間間隔で入力される。
【００６０】
コプロセッサパイプライン２０のコプロセッサ命令デコーダ２０１は、ホストプロセッサ１から入力されたコプロセッサ命令が、エミュレーションの実行を指示しているか否かを判断する（ステップＳ５０）。コプロセッサ命令は、図３に示すようなフォーマットであるので、コプロセッサ命令デコーダ２０１は、コプロセッサ命令の特定コードを確認することで、エミュレーションの実行を指示されているか否かを確認する。
【００６１】
コプロセッサ命令がエミュレーションの実行を指示していない場合には、コプロセッサ２で実行できるエミュレーションを除く処理の実行を指示していることになる。この場合、コプロセッサパイプライン２０で該当する処理を実行することになる（ステップＳ５０：N、ステップＳ６０）。コプロセッサ命令がエミュレーションの実行を指示していない場合のコプロセッサ２内におけるデータの流れは、例えば図８のようになる。
【００６２】
コプロセッサ命令デコーダ２０１でコプロセッサ命令がエミュレーションの実行を指示していないことを確認すると、その旨をデータ取得部２０２に通知する。また、コプロセッサ命令デコーダ２０１は、コプロセッサ命令をデコードして得られる処理内容をデータ取得部２０２に送る。データ取得部２０２は、コプロセッサ命令デコーダ２０１から送られる処理内容に応じて、ホストプロセッサ１及び／又はレジスタ２６から処理に必要なデータを取得する。取得したデータはデータ処理部１１３に処理内容とともに送られる。データ処理部１１３では送られてきたデータを処理内容に応じて処理し、その結果得られたデータをデータ書込部２０４に送る。データ書込部２０４は、処理内容の指示に応じてレジスタ２６に処理の結果得られたデータを書き込む。処理内容によっては、処理結果をホストプロセッサ１に戻すようにしてもよい。
【００６３】
コプロセッサ命令がエミュレーションの実行を指示している場合には（ステップＳ５０：Y）、コプロセッサ命令デコーダ２０１は、エミュレーションの実行が指示されていることをパイプラインコントローラ２３に通知する。パイプラインコントローラ２３は、エミュレーションの実行の指示が通知されると、ターゲットプロセッサパイプライン２１のターゲットプロセッサ命令デコーダ２１１にエミュレーションの実行を指示する。
【００６４】
ターゲットプロセッサ命令デコーダ２１１は、エミュレーションの実行の指示があると、ホストプロセッサ１から供給されるコプロセッサデータをターゲットプロセッサ命令として受け取る。ターゲットプロセッサ命令デコーダ２１１は、受け取ったターゲットプロセッサ命令が、ターゲットプロセッサパイプライン２１のエミュレーションにより実行可能な処理を指示しているか否かを判断する（ステップＳ７０）。ターゲットプロセッサ命令デコーダ２１１は、図４に示すフォーマットのターゲットプロセッサ命令をデコードして、デコード結果値を得る。デコード結果値と実行命令テーブル２２とを比較して、ターゲットプロセッサ命令による処理内容がコプロセッサ２で実行可能であるか否かを確認することができる。
【００６５】
ターゲットプロセッサ命令が、ターゲットプロセッサパイプライン２１のエミュレーションにより実行可能な処理を指示していない場合に（ステップＳ７０：N）、ターゲットプロセッサ命令デコーダ２１１は、パイプラインコントローラ２３を介してホストプロセッサ１に、その旨を通知する（ステップＳ８０）。ホストプロセッサ１は、コプロセッサ２からの通知に応じてエミュレーションにより処理を実行する（ステップＳ９０）。
【００６６】
図９は、この場合のデータの流れを表す図である。ホストプロセッサ１への通知には、図５の「値」に応じた内容が含まれる。つまり、ホストプロセッサ１に、処理のすべてを任せるのか、あるいは一部を任せるのかを含んだ内容となる。なお、ホストプロセッサ１に通知する際に、デコードしたターゲットプロセッサ命令に関する情報もホストプロセッサ１に送るようにしてもよい。デコード結果をそのまま送ったり、ホストプロセッサ１によるデコードの負荷が軽くなるように、ターゲットプロセッサ命令を切り分けて送るようにしてもよい。これにより、ターゲットプロセッサ命令を再びホストプロセッサ１でデコードする必要がなくなる。
【００６７】
ターゲットプロセッサ命令が、ターゲットプロセッサパイプライン２１のエミュレーションにより実行可能な処理を指示している場合には、ターゲットプロセッサパイプライン２１が、ターゲットプロセッサ命令が指示する処理を実行する（ステップＳ７０：Y、ステップＳ１００）。図１０は、その場合のデータの流れを表す図である。
【００６８】
ターゲットプロセッサ命令をコプロセッサ２で実行できることを確認すると、ターゲットプロセッサ命令デコーダ２１１は、ターゲットプロセッサ命令をデコードして得られる処理内容をデータ読出部２１２に送る。データ読出部２１２は、ターゲットプロセッサ命令デコーダ２０１から送られた処理内容に応じて、レジスタ２６から処理に必要なデータを取得する。取得したデータは、データ処理部２１３に処理内容とともに送られる。データ処理部２１３では、送られてきたデータを処理内容に応じて処理し、その結果得られたデータをデータ書込部２１４に送る。データ書込部２１４は、処理内容の指示に応じてレジスタ２６に処理結果を書き込む。処理内容によっては、処理結果をホストプロセッサ１に戻すようにしてもよい。
【００６９】
コプロセッサ２でターゲットプロセッサ命令を実行する場合、クロックカウンタ２４には、ターゲットプロセッサ命令デコーダ２１１からデコード結果値が通知される。クロックカウンタ２４は、デコード結果値により、ターゲットプロセッサ命令による処理種及びその所要時間を、実行クロックテーブル２５を参照して確認する。クロックカウンタ２４は、タイミングデータにより設定された所要時間から、実行クロックテーブル２５によって確認した所要時間を減算する。減算結果が０又は負になると、クロックカウンタ２４は、その旨を、パイプラインコントローラ２３を介して、あるいは直接、ホストプロセッサ１に通知する。
ホストプロセッサ１は、タイミングデータの出力から、クロックカウンタ２４からの通知までの時間を測定することで、実際のコプロセッサ２によるエミュレーション時間を知ることができる。
【００７０】
以上のような処理手順により、エミュレーションを行う。
ホストプロセッサ１は、コプロセッサ２に対して、コプロセッサ命令が終了するたびに一つずつ送るようにしてもよい。例えば、ホストプロセッサ１は、パイプラインコントローラ２３からコプロセッサ命令の終了が通知されるのを待って、次のコプロセッサ命令をコプロセッサ２に送る。
また、ターゲットプロセッサパイプライン２１によりエミュレーションが行われているときに、ホストプロセッサ１は、次のコプロセッサ命令をコプロセッサ２に送るようにしてもよい。コプロセッサ２は、コプロセッサ命令のデコードをエミュレーションとは別に行うことができるために、このタイミングでコプロセッサ命令が送られても問題なく処理が可能である。
【００７１】
本発明では、ホストプロセッサ１とコプロセッサ２とが協働でエミュレーションを行う。そのために、ホストプロセッサ１がコンパイル方式のエミュレーションで用いられる程度の性能しか持たなくとも、全体としてはインタプリタ方式のエミュレーションを行うことができるようになる。例えば、実行命令テーブル２２の内容を改変して、コプロセッサ２で実行可能なエミュレーションに関する命令を増やせば、それだけホストプロセッサ１のエミュレーションによる負荷を低減できる。
【図面の簡単な説明】
【００７２】
【図１】本実施形態の情報処理装置の構成図。
【図２】本実施形態によるエミュレータの全体構成図。
【図３】コプロセッサ命令のフォーマットの例示図。
【図４】ターゲットプロセッサ命令のフォーマットの例示図。
【図５】実行命令テーブルの例示図。
【図６】実行クロックテーブルの例示図。
【図７】本実施形態によるエミュレーションの処理の流れを示す図。
【図８】コプロセッサ命令がエミュレーションの実行を指示していない場合のデータの流れを説明する図。
【図９】コプロセッサで実行できないエミュレーションの実行が指示された場合のデータの流れを説明する図。
【図１０】コプロセッサでエミュレーションを実行する場合のデータの流れを説明する図。
【符号の説明】
【００７３】
１  ホストプロセッサ
１０  入力部
１１  処理部
１２  コプロセッサインタフェース部
１３  出力部
１４  制御部
１５  レジスタ
２  コプロセッサ
２０  コプロセッサパイプライン
２０１  コプロセッサ命令デコーダ
２０２  データ取得部
２０３  データ処理部
２０４  データ書込部
２１  ターゲットプロセッサパイプライン
２１１  ターゲットプロセッサ命令デコーダ
２１２  データ読出部
２１３  データ処理部
２１４  データ書込部
２２  実行命令テーブル
２３  パイプラインコントローラ
２４  クロックカウンタ
２５  実行クロックテーブル
２６  レジスタ
３  プロセッサ
４  入力インタフェース
５  出力インタフェース
６  ＲＡＭ
７  ＲＯＭ
Ｂ  バス
【図１】
2006178646.tif 000003
【図２】
2006178646.tif 000004
【図３】
2006178646.tif 000005
【図４】
2006178646.tif 000006
【図５】
2006178646.tif 000007
【図６】
2006178646.tif 000008
【図７】
2006178646.tif 000009
【図８】
2006178646.tif 000010
【図９】
2006178646.tif 000011
【図１０】
2006178646.tif 000012
【手続補正書】
【提出日】平成17年12月7日(2005.12.7)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
インタプリタ方式は、１つの命令毎に変換するため、自己書き換えコードへの対応がコンパイル方式よりも容易であり、性能のバラツキも少なくタイミング制御も容易である。そのために、インタプリタ方式は、リアルタイムシステム用のプロセッサのエミュレーションに向いており、高い互換性を期待できる。またエミュレータが必要とするメモリ容量がコンパイル方式と比較して少なくすむ。しかしインタプリタ方式は、コンパイル方式と比較して、処理速度等の性能が、経験的に１／２〜１／３程度であるという問題がある。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また、リアルタイムシステム用のプロセッサをエミュレーションで実現する場合には、論理的に正しい結果を得るのみならず、処理のタイミングを合わせなければ高い互換性を保証することができない。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
このような本発明の情報処理装置は、第１プロセッサと第２プロセッサとが協働で処理（例えば、エミュレーション）を行うようになっている。そのために、例えば第１プロセッサがコンパイル方式のエミュレーションで要求される程度の性能しか持たない場合でも、インタプリタ方式のエミュレーションを行うことができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
コプロセッサ２は、ホストプロセッサ１からのみ命令が入力されるようになっており、ホストプロセッサ１を除いた他の構成要素から、直接命令が入力されることはない。コプロセッサ２は、ホストプロセッサ１から入力された命令に応じた処理を実行するようになっており、処理結果をホストプロセッサ１に返すようになっている。なおコプロセッサ２は、通常のマルチプロセッサシステムのように設けられている場合にも、ホストプロセッサ１を除いた他の構成要素から命令が入力されることはない。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
このような構成のホストプロセッサ１は、コプロセッサ２に所定の処理を実行させる際に、コプロセッサインタフェース部１２から、処理を実行させるための命令（以下、「コプロセッサ命令」という。）、及び処理を実行する際に用いるデータ（以下、「コプロセッサデータ」という。）等を送る。コプロセッサ命令、コプロセッサデータ等は、コプロセッサ２で実行される通常の処理の他に、コプロセッサ２にインタプリタ方式のエミュレーションを実行させるためのものである。コプロセッサ２にエミュレーションを実行させる場合に、ホストプロセッサ１は、コプロセッサ命令により、コプロセッサ２にエミュレーションの実行を指示し、コプロセッサデータにより、エミュレーションにより実行される処理を指示する。コプロセッサ２にエミュレーションを実行させる場合のコプロセッサデータを、特にターゲットプロセッサ命令という。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００３９
【補正方法】変更
【補正の内容】
【００３９】
コプロセッサパイプライン２０は、コプロセッサ２で実行されるエミュレーションを除く他の処理全般を行うものであり、コプロセッサ命令デコーダ２０１、データ読出部２０２、データ処理部２０３、及びデータ書込部２０４を備えている。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００４２
【補正方法】変更
【補正の内容】
【００４２】
データ取得部２０２は、エミュレーション以外の処理を実行する際に、ホストコンピュータ１から送られるコプロセッサデータを取得して、あるいはレジスタ２６から処理に必要なデータを取得して、データ処理部２０３へ送る。処理に必要なデータの取得先は、コプロセッサ命令デコーダ２０１によりデコードされたコプロセッサ命令により指示される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
データ処理部２０３は、データ取得部２０２により取得されたデータを用いて所定の処理を実行する。処理内容は、コプロセッサ命令デコーダ２０１によりデコードされたコプロセッサ命令により指示される。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
データ書込部２０４は、データ処理部２０３による処理結果をレジスタ２６に書き込むか、あるいはホストプロセッサ１に返す。処理結果をレジスタ２６に書き込むか、あるいはホストプロセッサ１に返すかは、予めコプロセッサ命令により指示されている。なお、データ書込部２０４は、処理結果をレジスタ２６に書き込むとともに、ホストプロセッサ１に返すようにしてもよい。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
クロックカウンタ２５は、エミュレーションの実行のタイミングを調整するためのものである。
クロックカウンタ２５には、ホストプロセッサ１からのタイミングデータにより、設定値が設定される。クロックカウンタ２５は、例えば、パイプラインコントローラ２３を介して得たデコード結果値と実行クロックテーブル２４とから、デコード結果値に対応する処理をターゲットプロセッサが実行した場合に要する所要時間を得る。或いは、クロックカウンタは、ターゲットプロセッサ命令デコーダ２１１から直接、当該所要時間を得る。クロックカウンタ２５は、設定値から、実行クロックテーブル２４から得られた所要時間を順次減算して、所定の所要時間が「０」または負になった場合に、このことをパイプラインコントローラ２３を介してホストプロセッサ１に通知する。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
以上のような構成を持つ情報処理装置は、以下のような動作を行う。図７は、プロセッサ３によるエミュレーションの処理の流れを示す図である。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
ホストプロセッサ１は、命令がコプロセッサ２を用いるものである場合にコプロセッサ２に対してコプロセッサ命令、コプロセッサデータ、及びタイミングデータを入力する（ステップＳ２０：Y、ステップＳ４０）。コプロセッサ命令はコプロセッサパイプライン２０に入力され、コプロセッサデータはコプロセッサパイプライン２０及びターゲットプロセッサパイプライン２１に入力され、タイミングデータはパイプラインコントローラ２３を介して、あるいは直接クロックカウンタ２５に入力される。なお、タイミングデータは、コプロセッサ命令、コプロセッサデータと常に同じタイミングで入力されるわけではなく、所定の時間間隔で入力される。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
コプロセッサ命令デコーダ２０１でコプロセッサ命令がエミュレーションの実行を指示していないことを確認すると、その旨をデータ取得部２０２に通知する。また、コプロセッサ命令デコーダ２０１は、コプロセッサ命令をデコードして得られる処理内容をデータ取得部２０２に送る。データ取得部２０２は、コプロセッサ命令デコーダ２０１から送られる処理内容に応じて、ホストプロセッサ１及び／又はレジスタ２６から処理に必要なデータを取得する。取得したデータはデータ処理部２０３に処理内容とともに送られる。データ処理部２０３では送られてきたデータを処理内容に応じて処理し、その結果得られたデータをデータ書込部２０４に送る。データ書込部２０４は、処理内容の指示に応じてレジスタ２６に処理の結果得られたデータを書き込む。処理内容によっては、処理結果をホストプロセッサ１に戻すようにしてもよい。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００６９
【補正方法】変更
【補正の内容】
【００６９】
コプロセッサ２でターゲットプロセッサ命令を実行する場合、クロックカウンタ２５には、ターゲットプロセッサ命令デコーダ２１１からデコード結果値が通知される。クロックカウンタ２５は、デコード結果値により、ターゲットプロセッサ命令による処理種及びその所要時間を、実行クロックテーブル２４を参照して確認する。クロックカウンタ２５は、タイミングデータにより設定された所要時間から、実行クロックテーブル２４によって確認した所要時間を減算する。減算結果が０又は負になると、クロックカウンタ２５は、その旨を、パイプラインコントローラ２３を介して、あるいは直接、ホストプロセッサ１に通知する。
ホストプロセッサ１は、タイミングデータの出力から、クロックカウンタ２５からの通知までの時間を測定することで、実際のコプロセッサ２によるエミュレーション時間を知ることができる。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
以上のような処理手順により、エミュレーションを行う。
ホストプロセッサ１は、コプロセッサ２に対して、コプロセッサ命令が終了するたびに次のコプロセッサ命令を一つずつ送るようにしてもよい。例えば、ホストプロセッサ１は、パイプラインコントローラ２３からコプロセッサ命令の終了が通知されるのを待って、次のコプロセッサ命令をコプロセッサ２に送る。
また、ターゲットプロセッサパイプライン２１によりエミュレーションが行われているときに、ホストプロセッサ１は、次のコプロセッサ命令をコプロセッサ２に送るようにしてもよい。コプロセッサ２は、コプロセッサ命令のデコードをエミュレーションとは別に行うことができるために、このタイミングでコプロセッサ命令が送られても問題なく処理が可能である。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
１  ホストプロセッサ
１０  入力部
１１  処理部
１２  コプロセッサインタフェース部
１３  出力部
１４  制御部
１５  レジスタ
２  コプロセッサ
２０  コプロセッサパイプライン
２０１  コプロセッサ命令デコーダ
２０２  データ取得部
２０３  データ処理部
２０４  データ書込部
２１  ターゲットプロセッサパイプライン
２１１  ターゲットプロセッサ命令デコーダ
２１２  データ読出部
２１３  データ処理部
２１４  データ書込部
２２  実行命令テーブル
２３  パイプラインコントローラ
２４  実行クロックテーブル
２５  クロックカウンタ
２６  レジスタ
３  プロセッサ
４  入力インタフェース
５  出力インタフェース
６  ＲＡＭ
７  ＲＯＭ
Ｂ  バス