(57)【要約】【課題】一方のプロセッサ用のプログラムを、他方のプロセッサ用のプログラムへ変換する際に、正しく実行されるプログラムへ変換することができる。【解決手段】本発明は、第１のメモリ４０へアクセスする第１のプロセッサ１０ａと、第２のメモリ２０へアクセスする第２のプロセッサ１０ｂと、第１のメモリ４０と第２のメモリ２０間のデータ転送を行うデータ転送手段５０とを備える情報処理装置１において、第１のプロセッサ１０ａに、プログラムを構成する命令について、メモリアクセス命令以外の命令を第２のプロセッサ１０ｂ用の命令へ変換させ、メモリアクセス命令を第１のメモリ４０上のアクセスデータを第２のメモリ２０へデータ転送手段を介して転送させるプログラムの呼び出し命令を含む命令列へ変換させる機能を実現させることを特徴とするプログラムである。【選択図】図１
2008299648.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令セットに属する命令を実行可能な第１のプロセッサと、第２の命令セットに属する命令を実行可能な第２のプロセッサと、前記第２のプロセッサからはアクセスされない、前記第１の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第１のメモリと、前記第２のプロセッサからアクセスされる第２のメモリと、前記第１のメモリと前記第２のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置の前記第１のプロセッサに、
前記変換対象プログラムを前記第１のメモリから読み出す読出機能と、
前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定機能と、
前記判定機能によってメモリアクセス命令でないと判定された前記命令を、対応する前記第２の命令セットに含まれる命令へ変換する第１の変換機能と、
前記判定機能によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第２の変換機能とを実現させるプログラムであって、
前記データ転送ライブラリは、
前記第２のプロセッサに、前記データ転送手段を制御させることによって前記第１のメモリと前記第２のメモリとの間のデータ転送を行わせること
を特徴とするプログラム。
【請求項２】
第１の命令セットに属する命令を実行可能な第１のプロセッサと、第２の命令セットに属する命令を実行可能な第２のプロセッサと、前記第２のプロセッサからはアクセスされない、前記第１の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第１のメモリと、前記第２のプロセッサからアクセスされる第２のメモリと、前記第１のメモリと前記第２のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置の前記第２のプロセッサに、
前記データ転送手段によって前記変換対象プログラムを前記第１のメモリから前記第２のメモリへ転送させる転送機能と、
前記変換対象プログラムを前記第２のメモリから読み出す読出機能と、
前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定機能と、
前記判定機能によってメモリアクセス命令でないと判定された前記命令を、対応する前記第２の命令セットに含まれる命令へ変換する第１の変換機能と、
前記判定機能によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第２の変換機能とを実現させるプログラムであって、
前記データ転送ライブラリは、
前記第２のプロセッサに、前記データ転送手段を制御させることによって前記第１のメモリと前記第２のメモリとの間のデータ転送を行わせること
を特徴とするプログラム。
【請求項３】
第１の命令セットに属する命令を実行可能な第１のプロセッサと、第２の命令セットに属する命令を実行可能な第２のプロセッサと、前記第２のプロセッサからはアクセスされない、前記第１の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第１のメモリと、前記第２のプロセッサからアクセスされる第２のメモリと、前記第１のメモリと前記第２のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置において、
前記第１のプロセッサが、
前記変換対象プログラムを前記第１のメモリから読み出す読出手段と、
前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定手段と、
前記判定手段によってメモリアクセス命令でないと判定された前記命令を、対応する前記第２の命令セットに含まれる命令へ変換する第１の変換手段と、
前記判定手段によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第２の変換手段とを備え、
前記データ転送ライブラリは、
前記第２のプロセッサに、前記データ転送手段を制御させることによって前記第１のメモリと前記第２のメモリとの間のデータ転送を行わせること
を特徴とする情報処理装置。
【請求項４】
第１の命令セットに属する命令を実行可能な第１のプロセッサと、第２の命令セットに属する命令を実行可能な第２のプロセッサと、前記第２のプロセッサからはアクセスされない、前記第１の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第１のメモリと、前記第２のプロセッサからアクセスされる第２のメモリと、前記第１のメモリと前記第２のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置において、
前記第２のプロセッサが、
前記データ転送手段によって前記変換対象プログラムを前記第１のメモリから前記第２のメモリへ転送させる転送手段と、
前記変換対象プログラムを前記第２のメモリから読み出す読出手段と、
前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定手段と、
前記判定手段によってメモリアクセス命令でないと判定された前記命令を、対応する前記第２の命令セットに含まれる命令へ変換する第１の変換手段と、
前記判定手段によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第２の変換手段とを備え、
前記データ転送ライブラリは、
前記第２のプロセッサに、前記データ転送手段を制御させることによって前記第１のメモリと前記第２のメモリとの間のデータ転送を行わせること
を特徴とする情報処理装置。
【請求項５】
第１の命令セットに属する命令を実行可能な第１のプロセッサと、第２の命令セットに属する命令を実行可能な第２のプロセッサと、前記第２のプロセッサからはアクセスされない、前記第１の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第１のメモリと、前記第２のプロセッサからアクセスされる第２のメモリと、前記第１のメモリと前記第２のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置において、
前記第１のプロセッサと前記第２のプロセッサの負荷に応じて、請求項１に記載のプログラムが前記第１のプロセッサによって実行され、あるいは請求項２に記載のプログラムが前記第２のプロセッサによって実行されることにより、前記第１のメモリに記憶された前記変換対象プログラムに対する変換処理が行われることを特徴とする情報処理装置。
【請求項６】
第１の命令セットに属する命令を実行可能な第１のプロセッサと、第２の命令セットに属する命令を実行可能な第２のプロセッサと、前記第２のプロセッサからはアクセスされない、前記第１の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第１のメモリと、前記第２のプロセッサからアクセスされる第２のメモリと、前記第１のメモリと前記第２のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置において、
前記変換対象プログラムが、請求項１に記載のプログラムであり、
請求項１に記載のプログラムが前記第１のプロセッサによって実行され、前記変換対象プログラムである請求項１に記載のプログラムが前記第２のプロセッサにとって実行可能なプログラムへ変換されることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムおよび情報処理装置に関するものである。
【背景技術】
【０００２】
近年の情報処理装置では、様々なアプリケーションの処理に適した汎用プロセッサと、マルチメディア処理などの特定のアプリケーションに適した専用プロセッサとを同時に備える非対称マルチプロセッサ構成が採用されている。
【０００３】
非対称マルチプロセッサ構成では、汎用プロセッサと専用プロセッサとで、それぞれの用途に適した命令を備えることにより処理性能や実装の効率化を実現するため、一般的に、実行可能な命令の集合即ち命令セットが異なる。命令セットの異なる汎用プロセッサと専用プロセッサとの双方が同じ機能のプログラムを実行する場合には、汎用プロセッサ用の命令セットに対応したプログラムと、専用プロセッサ用の命令セットに対応したプログラムとが必要となる。
【０００４】
しかし、命令セットの異なるプロセッサごとにプログラムを用意する構成とすると、プログラムを記憶するために使用するメモリの記憶領域を増大するという問題点がある。
【０００５】
そこで、汎用プロセッサ用の命令セットに対応したプログラムを、専用プロセッサ用の命令セットに対応したプログラムへ変換するバイナリトランスレータに関する技術が開示されている（例えば、特許文献１参照。）。
【特許文献１】特表２００２―５３６７１２公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、特許文献１には、汎用プロセッサ用の命令セットに対応したプログラムを、専用プロセッサ用の命令セットに対応したプログラムへ変換する技術が開示されている。
【０００７】
しかしながら、例えば、それぞれのプロセッサの負荷に応じてプログラムの実行主体を汎用プロセッサから専用プロセッサへ動的に変更する場合など、プログラムの実行を引き継いだ専用プロセッサが、そのプログラムの実行に使用するデータに対してアクセスする必要がある。そのプログラムの実行に使用するデータは、メインメモリや引継ぎ前にプログラムを実行していた汎用プロセッサが備えるローカルメモリなどへ記憶される。
【０００８】
一方、専用プロセッサは、メインメモリや他のプロセッサのローカルメモリ等の外部メモリに対してアクセスできない構成とされることがある。このような場合、たとえ汎用プロセッサ用の命令セットに対応したプログラムを、専用プロセッサ用の命令セットに対応したプログラムへ変換したとしても、そのプログラムの実行に使用するデータにアクセスできないため、その変換されたプログラムが専用プロセッサにより正しく実行されないという問題があった。
【０００９】
本発明は、上記問題点を解決するためになされたものであって、一方のプロセッサ用の命令セットに対応したプログラムを、他方のプロセッサ用の異なる命令セットに対応したプログラムへ変換する際に、他方のプロセッサで正しく実行されるプログラムへ変換することができるプログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の実施形態に係るプログラムは、第１の命令セットに属する命令を実行可能な第１のプロセッサと、第２の命令セットに属する命令を実行可能な第２のプロセッサと、前記第２のプロセッサからはアクセスされない、前記第１の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第１のメモリと、前記第２のプロセッサからアクセスされる第２のメモリと、前記第１のメモリと前記第２のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置の前記第１のプロセッサに、前記変換対象プログラムを前記第１のメモリから読み出す読出機能と、前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定機能と、前記判定機能によってメモリアクセス命令でないと判定された前記命令を、対応する前記第２の命令セットに含まれる命令へ変換する第１の変換機能と、前記判定機能によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第２の変換機能とを実現させるプログラムであって、前記データ転送ライブラリは、前記第２のプロセッサに、前記データ転送手段を制御させることによって前記第１のメモリと前記第２のメモリとの間のデータ転送を行わせることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、一方のプロセッサ用の命令セットに対応したプログラムを、他方のプロセッサ用の異なる命令セットに対応したプログラムへ変換する際に、他方のプロセッサで正しく実行されるプログラムへ変換することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施形態について説明する。
【００１３】
（実施形態）
図１は、本発明の実施形態に係る情報処理装置１を示すブロック図である。  
この実施形態に係る情報処理装置１は、プロセッサＡ１０ａと、プロセッサＢ１０ｂと、ローカルメモリ２０と、プログラムメモリＡ３０ａと、プログラムメモリＢ３０ｂと、メインメモリ４０と、データ転送装置５０と、内部バス６０と、外部バス７０とを備える。
【００１４】
プロセッサＡ１０ａは、外部バス７０を介して、プログラムメモリＡ３０ａとメインメモリ４０とに接続される。プロセッサＢ１０ｂは、内部バス６０を介して、ローカルメモリ２０とプログラムメモリＢ３０ｂとに接続される。プロセッサＡ１０ａとプロセッサＢ１０ｂは、演算処理などについて同期をとるために接続される。プロセッサＢ１０ｂは、データ転送装置５０と接続される。
【００１５】
プロセッサＡ１０ａは、プログラムメモリＡ３０ａおよびメインメモリ４０へアクセスし、プログラムメモリＡ３０ａおよびメインメモリ４０に記憶されたプログラムの実行に伴う演算処理などを行う。プロセッサＡ１０ａ用の命令セットＡは、プロセッサＢ１０ｂ用の命令セットＢと異なる。
【００１６】
プログラムメモリＡ３０ａは、例えば、リードオンリーメモリ（ＲＯＭ）により構成され、プロセッサＡ１０ａにより実行されるプログラムを記憶する。メインメモリ４０は、例えば、ランダムアクセスメモリ（ＲＡＭ）により構成され、プロセッサＡ１０ａにより実行されるプログラムやプロセッサＡ１０ａがプログラムを実行する際に使用するデータなどを記憶する。
【００１７】
プロセッサＢ１０ｂは、ローカルメモリ２０およびプログラムメモリＢ３０ｂへアクセスし、ローカルメモリ２０およびプログラムメモリＢ３０ｂに記憶されたプログラムの実行に伴う演算処理などを行う。プロセッサＢ１０ｂは、データ転送装置５０を制御する。プロセッサＢ１０ｂにより制御されるデータ転送装置５０は、ローカルメモリ２０とメインメモリ４０との間のデータ転送を行う。
【００１８】
ローカルメモリ２０は、例えば、ＲＡＭにより構成され、プロセッサＢ１０ｂにより実行されるプログラムやプロセッサＢ１０ｂがプログラムを実行する際に使用するデータを記憶する。また、ローカルメモリ２０は、メインメモリ４０に記憶されているデータをキャッシュ（一次記憶）する。プログラムメモリＢ３０ｂは、例えば、ＲＯＭにより構成され、プロセッサＢ１０ｂにより実行されるプログラムを記憶する。
【００１９】
データ転送装置５０は、プロセッサＢ１０ｂによって制御され、プロセッサＢ１０ｂにより指定されたデータを、メインメモリ４０からローカルメモリ２０へ、あるいはローカルメモリ２０からメインメモリ４０へ転送する。データ転送装置５０は、例えば、ダイレクトメモリアクセスコントローラ（DMAコントローラ）により構成される。
【００２０】
図２は、メインメモリ４０およびローカルメモリ２０に記憶されるデータとプログラムの一例を示す。
【００２１】
図２に示される一例では、メインメモリ４０は、対象プログラム４１と、対象プログラム用データ４２と、バイナリトランスレータ４３とを記憶している。ローカルメモリ２０は、変換後プログラム２１と、中継コード２２と、一時データ２３と、読み出しライブラリ２４と、書き込みライブラリ２５とを記憶している。
【００２２】
対象プログラム４１は、プロセッサＡ１０ａ用の命令セットＡに対応しており、プロセッサＡ１０ａにより実行可能なプログラムである。対象プログラム４１は、プロセッサＡ１０ａとプロセッサＢ１０ｂの負荷分散などのため、プロセッサＢ１０ｂにおいても実行可能となることが望ましい。しかしながら、この対象プログラム４１は、プロセッサＢ１０ｂ用の命令セットＢには対応していない。そのため、プロセッサＢ１０ｂは、この対象プログラム４１を実行することができない。
【００２３】
対象プログラム用データ４２は、プロセッサＡ１０ａが対象プログラム４１を実行する際に使用するデータである。
【００２４】
バイナリトランスレータ４３は、プロセッサＡ１０ａ用の命令セットＡに対応しており、プロセッサＡ１０ａにより実行可能なプログラムである。バイナリトランスレータ４３は、プロセッサＡ１０ａに、プロセッサＡ１０ａ用の命令セットＡに対応したプログラムを、プロセッサＢ１０ｂ用の命令セットBに対応したプログラムへ変更する機能を持つ。なお、バイナリトランスレータ４３の詳細については後述する。
【００２５】
変換後プログラム２１は、対象プログラム４１と同一の機能をプロセッサに実現させるプログラムである。変換後プログラム２１は、プロセッサＢ１０ｂ用の命令セットＢに対応しており、プロセッサＢ１０ｂにより実行可能なプログラムである。変換後プログラム２１は、プロセッサＡ１０ａがバイナリトランスレータ４３に従って対象プログラム４１をプロセッサＢ１０ｂ用の命令セットＢに対応したプログラムへ変換することにより、得られたプログラムである。
【００２６】
中継コード２２は、プロセッサＡ１０ａがバイナリトランスレータ４３に従って対象プログラム４１を変換後プログラム２１へ変換する際に生成する微小プログラムである。中継コード２２は、後述の読み出しライブラリ２４および書き込みライブラリ２５をプロセッサＢ１０ｂに呼び出させることにより、プロセッサＢ１０ｂにメインメモリ４０に記憶されたデータ（例えば、対象プログラム用データ４２）へアクセスする機能を実現させる。
【００２７】
図２に示される一例では、変換後プログラム２１と中継コード２２とがローカルメモリ２０にわけられて記憶されている。しかし、バイナリトランスレータ４３によって対象プログラム４１が変換後プログラム２１へ変換される際に、変換後プログラム２１に中継コード２２を組み込むこととしても良い。
【００２８】
読み出しライブラリ２４と書き込みライブラリ２５はプロセッサＢ１０ｂにより実行可能なプログラムであって、プロセッサＢ１０ｂがデータ転送装置５０を制御するために必要なプログラムが複数集められたものである。
【００２９】
読み出しライブラリ２４は、プロセッサＢ１０ｂにデータ転送装置５０を制御させ、メインメモリ４０に記憶されたデータをローカルメモリ２０へ転送する機能を実現する。書き込みライブラリ２５は、プロセッサＢ１０ｂにデータ転送装置５０を制御させ、ローカルメモリ２０に記憶されたデータをメインメモリ４０へ転送する機能を実現する。
【００３０】
また、読み出しライブラリ２４と書き込みライブラリ２５は、メインメモリ４０からローカルメモリ２０へ転送されたデータの一部を、プロセッサＢ１０ｂに一時データ２３として一時記憶（キャッシュ）させる機能を実現する。読み出しライブラリ２４の開始アドレスは「０ｘ３１０００」であり、書き込みライブラリ２５の開始アドレスは「０ｘ３２０００」である。
【００３１】
図３は、プロセッサＡ１０ａが、バイナリトランスレータ４３に従い、プロセッサＡ１０ａの命令セットＡに対応した対象プログラム４１を、プロセッサＢ１０ｂの命令セットＢに対応した変換後プログラム２１へ、変換する際のプロセッサＡ１０ａの動作を示すフローチャートである。
【００３２】
まず、プロセッサＡ１０ａは、プロセッサＡ１０ａ用の命令セットＡに対応したバイナリトランスレータ４３（プログラム）を実行する。また、プロセッサＡ１０ａは、バイナリトランスレータ４３に従い、対象プログラム４１をメインメモリ４０から読み出す。
【００３３】
次に、プロセッサＡ１０ａは、バイナリトランスレータ４３に従い、対象プログラム４１を構成するすべての命令についてプロセッサＡ１０ａで実行可能な命令からプロセッサＢ１０ｂで実行可能な命令へ変換する処理を行ったか否かを判定する（ステップＳ１０１）。
【００３４】
対象プログラム４１を構成するすべての命令についての変換処理が終了したと判定された場合（ステップＳ１０１のはい）、プロセッサＡ１０ａは、バイナリトランスレータ４３の実行を終了する。
【００３５】
一方、対象プログラム４１を構成するすべての命令についての変換処理が終了していないと判定された場合（ステップＳ１０１のいいえ）、プロセッサＡ１０ａは、バイナリトランスレータ４３に従い、未変換の命令についての変換処理（ステップＳ１０２乃至Ｓ１０４）を逐次実行する。
【００３６】
以下に、プロセッサＡ１０ａが実行する変換処理を説明する。まず、プロセッサＡ１０ａは、対象プログラム４１を構成する命令であって、変換処理対象の命令がメモリアクセス命令であるか否かを判定する（ステップＳ１０２）。なお、メモリアクセス命令とは、例えば、メモリロード命令、メモリストア命令などであって、プロセッサＡ１０ａにより当該命令が実行された場合にメインメモリ４０へのデータ読出し処理、あるいはデータ書き込み処理を伴う命令である。
【００３７】
変換処理対象の命令がメモリアクセス命令でないと判定された場合（ステップＳ１０２のいいえ）、プロセッサＡ１０ａは、命令セットＡの命令であって変換処理対象の命令を、命令変換テーブル（図４）に従い、命令セットＢの命令（プロセッサＢ１０ｂ用のコード）へ変換する（ステップＳ１０４）。
【００３８】
図４は、プロセッサＡ１０ａが、バイナリトランスレータ４３に従い、命令セットＡの命令を命令セットＢの命令へ変換する際（図３のステップＳ１０４）に使用する命令変換テーブルを示す。命令変換テーブルは、命令セットＡの命令のそれぞれと、対応する命令セットＢの１つの命令あるいは複数の命令と、が関連付けられた変換エントリを複数保持する。なお、命令変換テーブルは、バイナリトランスレータ４３に組み込まれていても良く、プロセッサＡ１０ａがアクセス可能なプログラムメモリＡ３０ａやメインメモリ４０に記憶されていても良い。
【００３９】
図４に示される例では、命令変換テーブルは、命令セットＡの加算命令「ａｄｄ」と命令セットＢの加算命令「ａ」との組である変換エントリと、命令セットＡの減算命令「ｓｕｂｆ」と命令セットＢの減算命令「ｓｆ」との組である変換エントリと、命令セットＡの分岐命令「ｂｒ」と命令セットＢの分岐命令「ｂ」との組である変換エントリとを有する。
【００４０】
例えば、図３のステップＳ１０４において、変換処理対象の命令が加算命令「ａｄｄ」であった場合、プロセッサＡ１０ａは、命令変換テーブルの中から命令セットＡの加算命令「ａｄｄ」を有する変換エントリを検索し、命令セットＢの加算命令「ａ」へ変換する。
【００４１】
以下同様に、プロセッサＡ１０ａは、変換処理対象の命令が減算命令「ｓｕｂｆ」であった場合は、命令セットＢの減算命令「ｓｆ」へ変換する。プロセッサＡ１０ａは、変換処理対象の命令が分岐命令「ｂ」であった場合は、命令セットＢの分岐命令「ｂｒ」へ変換する。
【００４２】
一方、変換処理対象の命令がメモリアクセス命令であると判定された場合（ステップＳ１０２のはい）、プロセッサＡ１０ａは、命令セットＡの命令であって変換処理対象のメモリアクセス命令を、プロセッサＢ１０ｂで実行可能な命令セットＢに対応させることのみならず、プロセッサＢ１０ｂによるメモリアクセスを可能とするような命令列（プロセッサＢ１０ｂ用の中継コード２２）へ変換する。
【００４３】
以下に、プロセッサＡ１０ａが上述の処理を行う理由を説明する。  
プロセッサＡ１０ａは、対象プログラム４１を実行する際にメインメモリ４０に記憶された対象プログラム用データ４２などへアクセスする。しかし、プロセッサＢ１０ｂはメインメモリ４０と接続されておらず、メインメモリ４０へアクセスすることはできない。
【００４４】
そのため、仮に、命令セットＡのメモリアクセス命令（例えば、ｌｏａｄ命令）を対応する命令セットＢのメモリアクセス命令へ変換したとしても、アクセスするデータがメインメモリ４０に記憶されている場合は、プロセッサＢ１０ｂは上記の命令を実行することができない。
【００４５】
よって、プロセッサＡ１０ａは、メモリアクセス命令をプロセッサＢ１０ｂで実行可能な命令へ変換する際には、単純に命令セットＢに対応させるのみならず、プロセッサＢ１０ｂによってその変換処理対象の命令が実行された場合に発生するメモリアクセスを可能とするような命令列に変換する必要がある。
【００４６】
プロセッサＢ１０ｂがメインメモリ４０に記憶されているデータへアクセスする際には、プロセッサＢ１０ｂは、データ転送手段を制御して、メインメモリ４０に記憶されているデータをローカルメモリ２０へ転送し、その次に、ローカルメモリ２０に転送されたデータへアクセスする。
【００４７】
そこで、プロセッサＡ１０ａは、メモリアクセス命令をプロセッサＢ１０ｂにとって実行可能な命令へ変換する際には、データ転送装置５０によるメインメモリ４０とローカルメモリ２０との間のデータ転送のための読み出しライブラリ２４あるいは書き込みライブラリ２５を呼び出す命令を含む命令列（プロセッサＢ１０ｂ用の中継コード２２）への変換を行う。なお、プロセッサＡ１０ａがメモリアクセス命令を中継コード２２へ変換する方法については後述する（図６のステップＳ２０１乃至Ｓ２０４）。
【００４８】
次に、プロセッサＡ１０ａが、変換処理対象の命令がメモリアクセス命令か否かに応じて、その変換処理対象の命令を、プロセッサＢ１０ｂ用のコード（ステップＳ１０４）、あるいはプロセッサＢ１０ｂ用の中継コード２２（ステップＳ１０３）へ変換した後、プロセッサＡ１０ａは、ステップＳ１０１の処理を再度行う。
【００４９】
即ち、プロセッサＡ１０ａは、対象プログラム４１を構成するすべての命令について、プロセッサＡ１０ａで実行可能な命令からプロセッサＢ１０ｂで実行可能な命令へ変換する処理を行ったか否かを判定する。
【００５０】
すべての命令の変換処理が終了したと判定された場合（ステップＳ１０１のはい）、プロセッサＡ１０ａは、バイナリトランスレータ４３の実行を終了する。ここで、対象プログラム４１を構成するすべての命令をプロセッサＢ１０ｂ用のコードあるいは中継コード２２へ変換する処理が終了しているため、プロセッサＡ１０ａは、プロセッサＢ１０ｂ用のコードおよび中継コード２２から変換後プログラム２１を構成することができる。
【００５１】
一方、すべての命令についての変換処理が終了していないと判定された場合（ステップＳ１０１のいいえ）、プロセッサＡ１０ａは、未変換の命令についての変換処理（ステップＳ１０２乃至Ｓ１０４）を繰り返し実行する。
【００５２】
以上のように、プロセッサＡ１０ａは、バイナリトランスレータ４３に従い、プロセッサＡ１０ａ用の対象プログラム４１を、プロセッサＢ１０ｂ用の変換後プログラム２１へ変換する。
【００５３】
図５は、プロセッサＡ１０ａが、バイナリトランスレータ４３に従い、変換処理対象のメモリアクセス命令を、プログラムＢ用の中継コード２２へ変換する際（図３のステップＳ１０３）に使用するライブラリアドレステーブルを示す。
【００５４】
ライブラリアドレステーブルは、命令セットＡのメモリアクセス命令のそれぞれと、対応するライブラリの先頭アドレスと、が関連付けられたライブラリアドレスエントリを複数保持する。なお、ライブラリアドレステーブルは、バイナリトランスレータ４３に組み込まれていても良く、プロセッサＡ１０ａがアクセス可能なプログラムメモリＡ３０ａやメインメモリ４０に記憶されていても良い。
【００５５】
図５に示される例では、ライブラリアドレステーブルは、命令セットＡのメモリロード命令「ｌｏａｄ」と読み出しライブラリ２４の先頭アドレス「０ｘ３１０００」との組であるライブラリアドレスエントリと、命令セットＡのメモリストア命令「ｓｔｏｒｅ」と書き込みライブラリ２５の先頭アドレス「０ｘ３２０００」との組であるライブラリアドレスエントリとを有する。
【００５６】
図６は、プロセッサＡ１０ａが、バイナリトランスレータ４３に従い、変換処理対象のメモリアクセス命令を、プログラムＢ用の中継コード２２へ変換する際（図４のステップＳ１０３）のプロセッサＡ１０ａの動作を示すフローチャートである。
【００５７】
まず、プロセッサＡ１０ａは、読み出しライブラリ２４あるいは書き込みライブラリ２５がプロセッサＢ１０ｂにより実行される際に使用されるレジスタ上に既に記憶されているデータをローカルメモリ２０へ複製するための退避コードを生成する（ステップＳ２０１）。
【００５８】
この退避コードは、プロセッサＢ１０ｂによる変換後プログラム２１の実行時に読み出しライブラリ２４あるいは書き込みライブラリ２５が呼び出されることによって、プロセッサＢ１０ｂのレジスタに記憶されるデータ（例えば、変換後プログラム２１の処理の途中経過）が消失するのを防ぐためのものである。
【００５９】
次に、プロセッサＡ１０ａは、ライブラリアドレステーブル（図５）へアクセスし、命令セットＡの命令であって変換処理の対象であるメモリアクセス命令を有するライブラリアドレスエントリを検索する（ステップＳ２０２）。
【００６０】
そして、プロセッサＡ１０ａは、ライブラリアドレステーブルから検索されたライブラリアドレスエントリを用いて、対応するライブラリの呼び出し命令（プロセッサＢ１０ｂ用の呼出コード）を生成する（ステップＳ２０３）。
【００６１】
例えば、図３のステップＳ１０３において、変換処理の対象であるメモリアクセス命令がメモリロード命令「ｌｏａｄ」であった場合、プロセッサＡ１０ａは、ライブラリアドレステーブルの中から命令セットＡのメモリロード命令「ｌｏａｄ」を有するライブラリアドレスエントリを検索し（ステップＳ２０２）、読み出しライブラリ２４の先頭アドレス「０ｘ３１０００」を取得する。
【００６２】
読み出しライブラリ２４は、プロセッサＢ１０ｂにデータ転送装置５０を制御させ、メインメモリ４０上のデータをローカルメモリ２０へ転送する機能を実現させるプログラムである。プロセッサＡ１０ａは、読み出しライブラリ２４の先頭アドレス「０ｘ３１０００」を用いて読み出しライブラリ２４を呼び出す命令（プロセッサＢ１０ｂ用の呼出コード）を生成する。この呼出コードは、プロセッサＢ１０ｂに、メモリロード命令「ｌｏａｄ」でアクセスされるメインメモリ４０上のデータをローカルメモリ２０へ転送させる機能を実現させる。
【００６３】
また、プロセッサＡ１０ａは、メインメモリ４０からローカルメモリ２０へ転送されたデータを、ローカルメモリ２０からロードする命令をプロセッサＢ１０ｂ用の呼出コードの一部として組み込む。
【００６４】
次に、プロセッサＡ１０ａは、ステップＳ２０１において生成された退避コードが実行されることによりレジスタからローカルメモリ２０へ複製されたデータを、複製される前に格納されていたレジスタへ読み込む命令（プロセッサＢ１０ｂ用の復元コード）を生成する（ステップＳ２０４）。
【００６５】
以上のように、プロセッサＡ１０ａは、バイナリトランスレータ４３に従い、変換処理の対象であるメモリアクセス命令から、プロセッサＢ１０ｂ用の退避コード、呼出コード、および復元コードを生成し、それらのコードを順に結合して中継コード２２を生成する。このようにして、プロセッサＡ１０ａは、変換処理の対象であるメモリアクセス命令を、プロセッサＢ１０ｂ用の中継コード２２へ変換する。
【００６６】
このように、実施形態に係る情報処理装置１によれば、プロセッサＢ１０ｂがメインメモリ４０へアクセスできない場合であっても、プロセッサＡ１０ａ用の命令セットＡに対応した対象プログラム４１を、プロセッサＢ１０ｂ用の異なる命令セットＢに対応した変換後プログラム２１へ変換する際に、プロセッサＢ１０ｂで正しく実行されるプログラムへ変換することができる。
【００６７】
なお、バイナリトランスレータ４３はメインメモリ４０に記憶されていてプロセッサＡ１０ａ用の命令セットＡに対応したプログラムであるものとしたが、バイナリトランスレータがローカルメモリ２０に記憶されていてプロセッサＢ１０ｂ用の命令セットＢに対応したプログラムであるものとしてもよい。
【００６８】
その場合、プロセッサＢ１０ｂは、データ転送装置５０を制御し、メインメモリ４０に記憶された対象プログラム４１をローカルメモリ２０へ転送する。そして、プロセッサＢ１０ｂは、プロセッサＢ１０ｂ用のバイナリトランスレータに従い、ローカルメモリ２０に転送されたプロセッサＡ１０ａ用の命令セットＡに対応した対象プログラム４１を、プロセッサＢ１０ｂ用の命令セットＢに対応した変換後プログラム２１へ変換する。
【００６９】
このようにすることによって、プロセッサＡ１０ａの負荷が大きいと判断された場合には、プロセッサＢ１０ｂが、対象プログラム４１から変換後プログラム２１への変換処理、および変換後プログラム２１の実行処理を行うことにより、プロセッサＡ１０ａの負荷を軽減することができる。
【００７０】
また、プロセッサＡ１０ａ用の命令セットＡに対応したバイナリトランスレータ４３がメインメモリ４０に記憶されていて、かつ、プロセッサＢ１０ｂ用の命令セットＢに対応したバイナリトランスレータがローカルメモリ２０に記憶されているものとする構成をとることができる。
【００７１】
このようにすることによって、プロセッサＡ１０ａとプロセッサＢ１０ｂの負荷に応じて、対象プログラム４１から変換後プログラム２１への変換処理を、プロセッサＡ１０ａあるいはプロセッサＢ１０ｂのどちらで行うかを切り替えることができる。なお、いずれのプロセッサが対象プログラム４１から変換後プログラム２１への変換処理を行うかについては、例えば、外部バス７０に接続された図示しないスケジューリング専用のプロセッサが決定する構成としてもよい。
【００７２】
さらにまた、プロセッサＡ１０ａは、メインメモリ４０に記憶されたプロセッサＡ用の命令セットＡに対応したバイナリトランスレータ４３を実行することにより、そのバイナリトランスレータ４３をプロセッサＢ１０ｂ用の命令セットＢに対応したバイナリトランスレータへ変換することができる。
【００７３】
このようにすることによって、プロセッサＡ１０ａ用およびプロセッサＢ１０ｂ用のバイナリトランスレータを双方用意しなくても、プロセッサＡ１０ａあるいはプロセッサＢ１０ｂで、対象プログラム４１から変換後プログラム２１への変換処理を行うことができる。
【００７４】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施形態に係る情報処理装置の構成を示すブロック図。
【図２】本発明の実施形態に係るメインメモリおよびローカルメモリの記憶内容の一例を示す図。
【図３】本発明の実施形態に係る情報処理装置の動作を示すフローチャート。
【図４】命令変換テーブルが保持する内容の一例を示す図。
【図５】ライブラリアドレステーブルが保持する内容の一例を示す図。
【図６】本発明の実施形態に係る情報処理装置の動作を示すフローチャート。
【符号の説明】
【００７６】
１・・・情報処理装置
１０ａ・・・プロセッサＡ
１０ｂ・・・プロセッサＢ
２０・・・ローカルメモリ
２１・・・変換後プログラム
２２・・・中継コード
２３・・・一時データ
２４・・・読み出しライブラリ
２５・・・書き込みライブラリ
３０ａ・・・プログラムメモリＡ
３０ｂ・・・プログラムメモリＢ
４０・・・メインメモリ
４１・・・対象プログラム
４２・・・対象プログラム用データ
４３・・・バイナリトランスレータ
５０・・・データ転送装置
６０・・・内部バス
７０・・・外部バス
【図１】
2008299648.tif 000003
【図２】
2008299648.tif 000004
【図３】
2008299648.tif 000005
【図４】
2008299648.tif 000006
【図５】
2008299648.tif 000007
【図６】
2008299648.tif 000008