(57)【要約】対象コードから目的コードへの変換を動的バイナリトランスレータにおいて行なっている間に対象プロセスファイルシステムへの参照を管理する技術が提供される。対象プロセッサで実行される対象コードをトランスレータが受信し、目的プロセッサで実行される対応する目的コードが生成される。トランスレータは、プロセスデータ構造を設定し、プロセスデータ構造に集合させ、かつプロセスデータ構造を維持して、コードをトランスレータによって生成することにより、対象プロセスファイルシステムへの対象参照を効率的に処理することができるように構成される。
2010506251.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置であって、
目的プロセッサと、
対象プロセッサで実行される、受信した対象コード命令に応答して設定されるトランスレータプロセスとを備え、
前記トランスレータプロセスは、
（ａ）設定されたトランスレータプロセスに関する情報をプロセスデータ構造に集合させ、
（ｂ）受信した対象コードにおいて対象プロセスファイルシステム内の情報への参照が行なわれるのに応答して、ステップ（ａ）の前記プロセスデータ構造を参照するように構成される、
コンピュータ装置。
【請求項２】
前記トランスレータプロセスは、対象プロセッサで実行されたときに対象プロセスを設定する各受信した対象コード命令に応答して、別のトランスレータプロセスを設定するように構成される、請求項１記載のコンピュータ装置。
【請求項３】
各トランスレータプロセスは、請求項１記載の前記トランスレータプロセスである、請求項２記載のコンピュータ装置。
【請求項４】
各トランスレータプロセスは、一つの共通のプロセスデータ構造に集合させ、該一つの共通のプロセスデータ構造を参照する、請求項３記載のコンピュータ装置。
【請求項５】
前記プロセスデータ構造は、（ａ）各トランスレータプロセスにアクセスすることができるディレクトリ、及び（ｂ）各トランスレータプロセスにアクセスすることができる共有メモリ領域のうちの一方、または両方を含む、請求項４記載のコンピュータ装置。
【請求項６】
前記トランスレータプロセスは、前記プロセスデータ構造に、各トランスレータプロセスに対応するプロセス識別子を集合させ、前記プロセス識別子は、対象プロセッサで実行されたときに前記受信した対象コード命令に応答して設定される対象プロセスに割り当てられる識別子に対応する、請求項１記載のコンピュータ装置。
【請求項７】
前記トランスレータプロセスの情報が前記プロセスデータ構造に格納されている前記トランスレータプロセスのステータスをチェックし、もはや実行されることがないトランスレータプロセスに関する情報を前記プロセスデータ構造から削除するように構成される検査装置を更に備える、請求項１記載のコンピュータ装置。
【請求項８】
前記検査装置は、前記トランスレータプロセスの情報が前記プロセスデータ構造に格納されている前記トランスレータプロセスのステータスを周期的にチェックするように構成される、請求項７記載のコンピュータ装置。
【請求項９】
前記検査装置は、前記トランスレータプロセスの一部を構成する、請求項７記載のコンピュータ装置。
【請求項１０】
検査装置を更に備え、該検査装置は、参照が前記プロセスデータ構造に格納される情報に対して行なわれたことを記録するように構成される、請求項１記載のコンピュータ装置。
【請求項１１】
前記検査装置は、参照を行なう前記トランスレータプロセスに対する識別子、及び前記トランスレータプロセスの情報が参照されているトランスレータプロセスに対する関連の識別子を記録するように構成される、請求項１０記載のコンピュータ装置。
【請求項１２】
前記検査装置は、前記識別子を前記プロセスデータ構造に記録するように構成される、請求項１１記載のコンピュータ装置。
【請求項１３】
前記検査装置は、プロセスの情報が参照されているプロセスがもはや実行されることがないと判断される場合に、当該検査装置が記録したデータを削除するように構成される、請求項１２記載のコンピュータ装置。
【請求項１４】
前記トランスレータプロセスは、当該トランスレータプロセスが出口を通過するときに、当該トランスレータプロセス自体に関する情報を前記プロセスデータ構造から削除する、請求項１記載のコンピュータ装置。
【請求項１５】
前記目的プロセッサは、受信した対象コードを実行する前記対象プロセッサと同じタイプである、請求項１記載のコンピュータ装置。
【請求項１６】
前記トランスレータプロセスは、前記目的プロセッサで実行される目的コード命令を生成するように構成される、請求項１記載のコンピュータ装置。
【請求項１７】
対象プロセッサで実行される対象コードから目的プロセッサで実行される目的コードへのプログラムコード変換に関してプロセスファイルシステムを管理する方法であって、
（ａ）対象プロセッサで実行されたときに対象プロセスを設定する、受信した対象コード命令に応答して、トランスレータプロセスを設定するステップと、
（ｂ）前記トランスレータプロセスにアクセスすることができるプロセスデータ構造に、受信した対象コード命令に応答して設定される一つ以上のトランスレータプロセスに関する情報を集合させるステップと、
（ｃ）受信した対象コードにおいて対象プロセスファイルシステム内への情報の参照に応答して、前記ステップ（ｂ）において情報を集合させた前記データ構造を参照するステップと
を備える方法。
【請求項１８】
ステップ（ｂ）において情報を集合させた前記プロセスデータ構造は、トランスレータデータ構造である、請求項１７記載の方法。
【請求項１９】
プロセスの情報が前記プロセスデータ構造に格納される該プロセスのステータスをチェックするステップと、前記プロセスデータ構造から、もはや実行されることがないトランスレータプロセスに関する情報を削除するステップと、を更に備える、請求項１７記載の方法。
【請求項２０】
プロセスの情報は前記プロセスデータ構造に格納される該プロセスのステータスをチェックするステップは周期的に行なわれる、請求項１９記載の方法。
【請求項２１】
（ｄ）参照を行なう前記トランスレータプロセスに対する識別子、及び情報が参照されているトランスレータプロセスに対する識別子を記録することにより、参照がプロセスデータ構造に格納される情報に対して行なわれたことを記録するステップを更に備える、請求項１７記載の方法。
【請求項２２】
トランスレータプロセスの情報が参照されている該トランスレータプロセスがもはや実行されることがない場合、ステップ（ｄ）において記録されるデータを前記プロセスデータ構造から削除するステップを更に備える、請求項２１記載の方法。
【請求項２３】
もはや実行されることがないプロセスに関する情報を、前記プロセスデータ構造から削除するステップを更に備える、請求項１７記載の方法。
【請求項２４】
請求項１７記載の方法を実行するためにコンピュータによって実行可能な命令を格納するコンピュータ読み取り可能な記憶媒体。
【請求項２５】
対象プロセッサで実行される対象コードを受信し、目的プロセッサで実行される目的コードを生成するように構成されるトランスレータ装置であって、
（ａ）受信した対象コードに応答して設定される一つ以上のトランスレータプロセスに関する情報をプロセスデータ構造に集合させ、
（ｂ）受信した対象コードにおいて対象プロセスファイルシステム内への情報の参照に応答して、前記ステップ（ａ）の前記プロセスデータ構造を参照するように構成される、トランスレータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータ及びコンピュータソフトウェアの分野に関し、特に、例えば、プロセスファイルシステムを参照するプログラムコードを変換するコードトランスレータ、エミュレータ、及びアクセラレータに有用なプログラムコード変換方法及び装置に関する。
【背景技術】
【０００２】
エンベッデッドＣＰＵ及びノンエンベッデッドＣＰＵ市場全体に、優れた命令セットアーキテクチャ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ：ＩＳＡｓ）を見付け出すことができ、このアーキテクチャに関しては、性能を「加速する」ことができる非常に多くのソフトウェア、即ちより一層良好なコスト／性能という利点をもたらすことができる無数の高機能プロセッサに、これらのプロセッサが関連するソフトウェアに透過的にアクセスすることができるとする場合に「変換する」ことができる非常に多くのソフトウェアが存在する。時間的にＩＳＡに拘束され、かつ性能面または市場性の面で未だ進化させることができていない、優れたＣＰＵアーキテクチャが存在することも知られており、そして「複合ＣＰＵ（ｓｙｎｔｈｅｔｉｃ  ＣＰＵ）」共通アーキテクチャの恩恵を享受することになると考えられる。
【０００３】
第１タイプのコンピュータプロセッサ（「対象」プロセッサ：“ｓｕｂｊｅｃｔ”  ｐｒｏｃｅｓｓｏｒ）に関して記述されるプログラムコードを第２タイプのプロセッサ（「目的」プロセッサ：“ｔａｒｇｅｔ”  ｐｒｏｃｅｓｓｏｒ）で実行することが望ましい場合が多い。この場合、エミュレータまたはトランスレータを使用してプログラムコード変換を実行することにより、対象プログラムを目的プロセッサで実行することができる。国際公開第００／２２５２１号パンフレットには、本発明の実施形態に用いることができるようなアクセラレーション、トランスレーション、及び共通アーキテクチャを容易にするプログラムコード変換方法及び装置が開示されている。
【０００４】
特にＵｎｉｘ系オペレーティングシステムを含む所定のオペレーティングシステムでは、プロセスファイルシステムが提供される。プロセスファイルシステムは、一つのプロセスが使用することによって、他のプロセスに関する情報、及びプロセッサが提供するハードウェア環境に関する情報にアクセスすることができる。例えば、サンマイクロシステムズ社（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ  Ｉｎｃ．）が提供するＳｏｌａｒｉｓオペレーティングシステムは、バーチャルファイルシステムを／ｐｒｏｃとして認識されるディレクトリに割り付けるプロセスファイルシステムを提供する。／ｐｒｏｃのコンテンツ及び構造はオペレーティングシステムによって、プロセスが実行されているときに動的に設定され、この場合、通常、一つのサブディレクトリが一つのライブプロセスに対応して生成され、そして維持される。
【０００５】
プロセスファイルシステムを上に説明したように提供することにより、プログラムコード変換が複雑になり得る。この状況が明白になる３つの態様がある。第１に、目的オペレーティングシステムがプロセスファイルシステムを提供しないが、対象コードがプロセスファイルシステムを参照する場合、本質的に互換性がない。
【０００６】
第２に、目的オペレーティングシステムがプロセスファイルシステムを提供する場合、当該オペレーティングシステムの構成及び動作はこのような場合でも、対象コードによって参照されるプロセスファイルシステムとの互換性がない。
【０００７】
第３に、目的オペレーティングシステムが互換性のあるプロセスファイルシステムを提供する場合、トランスレータプロセスを、目的プロセスファイルシステムにおける他のプロセスから区別することが難しい。
【０００８】
目的オペレーティングシステムのプロセスファイルシステムへの対象プロセスに関する情報の取り込みを可能にする一つのオプションでは、目的プロセッサのオペレーティングシステムを変更する。目的オペレーティングシステムの変更によって、目的プロセスファイルシステムを設定し、そして管理する方法を変更することができ、そして目的オペレーティングシステムの変更は、カーネルモジュールを作成し、そしてこのモジュールを目的オペレーティングシステムに挿入することにより、または目的オペレーティングシステムのソースコードを直接変更することにより、行なうことができる。しかしながら、目的オペレーティングシステムの変更は困難な作業であり、そして目的オペレーティングシステムを不安定にする可能性がある。
【０００９】
対象プログラムコードの変換に関してプロセスファイルシステムを管理する方法が提供される。対象コードを目的コードに変換するように動作することができるトランスレータは、対象プロセスファイルシステムへの対象プログラム内の参照が特定され、そして目的コードが生成されるように構成することができる。生成された目的コードによって、トランスレータは、プロセス情報を対象プロセッサの予測動作と一致するように参照し、そして提供することができる。
【００１０】
本発明の好適な実施形態によって、対象プロセス情報をトランスレータが目的オペレーティングシステムを変更することなく、簡便に管理することができる。これにより、目的オペレーティングシステムが不安定になる現象を回避し、そしてトランスレータは、不安定になる可能性のある対象プロセスの動作を、変換が行なわれている間に正しく処理することができる。
【００１１】
本発明は従って、プログラムコード変換を行なうときの性能を向上させる。
【発明の概要】
【課題を解決するための手段】
【００１２】
本発明によれば、添付の請求項に示される装置及び方法が提供される。本発明の好適な特徴は従属請求項、及び以下に行なわれる説明から明らかになる。
一つの例示的な態様では、コンピュータ装置が提供され、コンピュータ装置は、目的プロセッサと、対象プロセッサで実行される、受信した対象コード命令に応答して設定されるトランスレータプロセスとを備え、トランスレータプロセスは、（ａ）設定されたトランスレータプロセスに関する情報をプロセスデータ構造に集合させ、（ｂ）受信した対象コードにおいて対象プロセスファイルシステム内の情報への参照が行なわれるのに応答して、ステップ（ａ）の前記プロセスデータ構造を参照するように構成される。
【００１３】
トランスレータプロセスは、対象プロセッサで実行されたときに対象プロセスを設定する各受信した対象コード命令に応答して、別のトランスレータプロセスを設定するように構成することができる。複数のトランスレータプロセスの各トランスレータプロセスは、一つの共通のプロセスデータ構造に集合させ、一つの共通のプロセスデータ構造を参照することができる。プロセスデータ構造は、（ａ）各トランスレータプロセスにアクセスすることができるディレクトリ、及び（ｂ）各トランスレータプロセスにアクセスすることができる共有メモリ領域のうちの一方、または両方を適切に含む。コンピュータ装置は更に、トランスレータプロセスの情報がプロセスデータ構造に格納されているトランスレータプロセスのステータスをチェックし、もはや実行されることがないトランスレータプロセスに関する情報をプロセスデータ構造から削除するように構成される検査装置を備えることができる。
【００１４】
別の例示的な態様では、対象プロセッサで実行される対象コードから目的プロセッサで実行される目的コードへのプログラムコード変換に関してプロセスファイルシステムを管理する方法が提供され、本方法は、（ａ）対象プロセッサで実行されたときに対象プロセスを設定する対象コード命令の受信に応答してトランスレータプロセスを設定するステップと、（ｂ）トランスレータプロセスにアクセスすることができるプロセスデータ構造に、受信した対象コード命令に応答して設定される一つ以上のトランスレータプロセスに関する情報を集合させるステップと、（ｃ）受信した対象コードにおいて対象プロセスファイルシステム内への情報の参照に応答して、ステップ（ｂ）において情報を集合させたデータ構造を参照するステップとを備える。
【００１５】
本方法は更に、プロセスの情報がプロセスデータ構造に格納されるプロセスのステータスをチェックするステップと、もはや実行されることがないトランスレータプロセスに関する情報をプロセスデータ構造から削除するステップとを含むことができる。例えば、プロセスの情報がプロセスデータ構造に格納されるプロセスのステータスをチェックするステップは周期的に行なわれる。本方法は（ｄ）参照を行なう前記トランスレータプロセスに対する識別子、及び情報が参照されているトランスレータプロセスに対する識別子を記録することにより、参照がプロセスデータ構造に格納される情報に対して行なわれたことを記録するステップを更に備えることができる。本方法は更に、トランスレータプロセスの情報が参照されている該トランスレータプロセスがもはや実行されることがない場合、ステップ（ｄ）において記録されるデータをプロセスデータ構造から削除するステップを含むことができる。
【００１６】
更に別の態様では、対象プロセッサで実行される対象コードから目的プロセッサで実行される目的コードへのプログラムコード変換に関してプロセスファイルシステムを管理する方法を実行するためにコンピュータによって実行可能な命令を格納するコンピュータ読み取り可能な記憶媒体が提供され、本方法は、（ａ）対象プロセッサで実行されたときに対象プロセスを設定する、受信した対象コード命令に応答して、トランスレータプロセスを設定するステップと、（ｂ）トランスレータプロセスにアクセスすることができるプロセスデータ構造に、受信した対象コード命令に応答して設定される一つ以上のトランスレータプロセスに関する情報を集合させるステップと、（ｃ）受信した対象コードにおいて対象プロセスファイルシステム内への情報の参照に応答して、ステップ（ｂ）において情報を集合させたデータ構造を参照するステップとを含む。
【００１７】
更に別の態様では、対象プロセッサで実行される対象コードを受信し、目的プロセッサで実行される目的コードを生成するように構成されるトランスレータ装置が提供され、トランスレータは、（ａ）受信した対象コードに応答して設定される一つ以上のトランスレータプロセスに関する情報をプロセスデータ構造に集合させ、（ｂ）受信した対象コードにおいて対象プロセスファイルシステム内への情報の参照に応答して、ステップ（ａ）のプロセスデータ構造を参照するように構成される。
【００１８】
本発明によるプログラムコード変換の改良型アーキテクチャに従って実現することができる種々の態様及び利点に関する上の要約は、この技術分野の当業者に対する序文として提供され、これによって当業者は、以下に続き、そして本明細書に添付される特許請求の範囲を決して制限することがなく、更には決して制限するものでもない本発明に関する詳細な説明を一層迅速に理解し易くなっている。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態を適用することができる装置を示すブロック図である。
【図２】本発明の実施形態に用いられるトランスレータユニットの模式図である。
【図３】本発明の実施形態に用いられる装置を示すブロック図である。
【図４】本発明の例示的な実施形態に用いられる通信チャネルを示す模式図である。
【図５】本発明の例示的な実施形態によるプロセスファイルシステムを管理する方法を示す模式図である。
【発明を実施するための形態】
【００２０】
本明細書の一部に組み込まれ、そして本明細書の一部を構成する添付の図面は、現時点において好適である実施形態を示し、そして次のように説明される。
以下の説明は、この技術分野の当業者が本発明を作製し、そして使用することができるために行なわれ、そして本願発明者らが考案し、かつ本発明を実施するための最良のモードを示す。しかしながら、種々の変更を加え得ることは、本発明の一般的原理が本明細書に詳細に定義されて改良型プログラムコード変換方法及び装置が提供されているので、この技術分野の当業者には容易に理解することができる。
【００２１】
図１によれば、対象プログラム１７は、対象プロセッサ３を有する対象計算プラットフォーム１で実行されるように構成される。しかしながら、目的計算プラットフォーム１０を代わりに使用することにより、対象プログラム１７を、プログラムコード変換を実行するトランスレータユニット１９を介して実行する。トランスレータユニット１９は、対象コード１７から目的コード２１へのコード変換を行なって、目的コード２１を目的計算プラットフォーム１０で実行することができるようにする。
【００２２】
この技術分野の当業者には容易に理解できることであるが、対象プロセッサ３は一連の対象レジスタ５を有する。対象メモリ８は、とりわけ対象コード１７及び対象オペレーティングシステム２を格納する。同様に、図１の例示的な目的計算プラットフォーム１０は、複数の目的レジスタ１５を有する目的プロセッサ１３と、そして目的オペレーティングシステム２０、対象コード１７、トランスレータコード１９、及び変換目的コード２１を含む複数の動作コンポーネントを格納するメモリ１８と、を含む。目的計算プラットフォーム１０は通常、マイクロプロセッサ搭載コンピュータまたは他の適切なコンピュータである。
【００２３】
一実施形態では、トランスレータコード１９は、対象命令セットアーキテクチャ（ＩＳＡ）の対象コードを、別のＩＳＡの変換目的コードに、最適化を行なうか、または最適化を行なうことなく変換するエミュレータである。別の実施形態では、トランスレータ１９は、各コードが同じＩＳＡ（命令セットアーキテクチャ）である対象コードを目的コードに、プログラムコードの最適化を実行することにより、変換するアクセラレータとして機能する。
【００２４】
トランスレータコード１９は適切には、トランスレータを実行するソースコードのコンパイルバージョンであり、そしてオペレーティングシステム２０と連動して目的プロセッサ１３で実行される。図１に示す構造は例示に過ぎず、例えば、本発明の実施形態によるソフトウェア、方法、及びプロセスは、オペレーティングシステム２０内に、またはオペレーティングシステム２０の下位にあるコードとして実行することができることを理解されたい。対象コード１７、トランスレータコード１９、オペレーティングシステム２０、及びメモリ１８の記録機構は、この技術分野の当業者には公知の非常に広範囲のタイプのうちのいずれかのタイプとすることができる。
【００２５】
図１による装置では、プログラムコード変換は実行時間に動的に行なわれて、目的コード２１が実行されている状態で目的アーキテクチャ１０で実行される。すなわち、トランスレータコード１９は変換目的コード２１とインラインで実行される。対象プログラム１７をトランスレータ１９を介して実行することでは、２つの異なるタイプのコード：すなわちトランスレータコード１９；及び目的コード２１を交互に実行する。従って、目的コード２１はトランスレータコード１９によって、実行時間全体を通じて、格納されている変換中のプログラムの対象コード１７に基づいて生成される。
【００２６】
一実施形態では、トランスレータユニット１９は、対象プロセッサ３、特に対象レジスタ５のような対象アーキテクチャ１の関連部分をエミュレートするとともに、対象プログラム１７を目的コード２１として目的プロセッサ１３で実際に実行する。好適な実施形態では、少なくとも一つのグローバルレジスタストア２７を設ける（対象レジスタバンク２７または抽象レジスタバンク２７とも表記される）。マルチプロセッサ環境では、任意であるが、一つよりも多くの抽象レジスタバンク２７を対象プロセッサのアーキテクチャに従って設ける。対象ステートの表現は、トランスレータ１９及び目的コード２１の構成要素によって提供される。すなわち、トランスレータ１９は対象ステートを、変数及び／又はオブジェクトのような種々の明示的なプログラミング言語装置に格納する。これと比較すると、変換目的コード２１は、目的レジスタ１５及びメモリロケーション１８に自動的に格納される対象プロセッサステートを供給し、これらの目的レジスタ及びメモリロケーションは、目的コード２１の目的命令によって操作される。例えば、グローバルレジスタストア２７の低レベル表現は、割当てメモリの単なる一つの領域である。しかしながら、トランスレータ１９のソースコードにおいては、グローバルレジスタストア２７は、高いレベルでアクセスし、操作することができるデータアレイまたはオブジェクトである。
【００２７】
「基本ブロック」という用語は、この技術分野の当業者には十分良く理解できるであろう。基本ブロックは、厳密に一つのエントリポイント及び厳密に一つのエグジットポイントが設定されたコードセクションであり、このコードセクションによって、ブロックコードを単一の制御パス（ｃｏｎｔｒｏｌ  ｐａｔｈ）に制限する。この理由により、基本ブロック群は有用な基本制御フロー（ｃｏｎｔｒｏｌ  ｆｌｏｗ）単位である。適切には、トランスレータ１９は対象コード１７を複数の基本ブロックに分割し、各基本ブロックは、単一のエントリポイントの先頭命令と単一のエグジットポイントの末尾命令との間の連続する命令セットである（ジャンプ、コール、または分岐命令のような）。トランスレータ１９は、これらの基本ブロックのうちの一つの基本ブロックだけを選択する（ブロックモード）か、または１グループの基本ブロックを選択する（グループブロックモード）ことができる。一つのグループブロックは適切には、２つ以上の基本ブロックを含み、これらの基本ブロックは一括して単一ユニットとして処理されることになる。更に、トランスレータは、対象コードの同じ基本ブロックを異なるエントリ条件で表現するアイソブロックを形成することができる。
【００２８】
好適な実施形態では、中間表現（ｉｎｔｅｒｍｅｄｉａｔｅ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ：ＩＲ）のツリーは、対象命令シーケンスに基づいて、目的コード２１を元の対象プログラム１７から生成するプロセスの一部として生成される。ＩＲツリーは、対象プログラムによって計算される表現及び実行されるオペレーションの抽象表現である。後の時点で、目的コード２１はＩＲツリーに基づいて生成される。ＩＲノード群の集合は、実際に誘導される非巡回有向グラフ（ｄｉｒｅｃｔｅｄ  ａｃｙｃｌｉｃ  ｇｒａｐｈｓ：ＤＡＧｓ）であるが、学会用語的に「ツリー」と表記される。
【００２９】
この技術分野の当業者が理解するように、一実施形態では、トランスレータ１９は、Ｃ＋＋のようなオブジェクト指向プログラミング言語を使用して実行される。例えば、ＩＲノードはＣ＋＋オブジェクトとして用いられ、そして他のノードへの参照は、これらの他のノードに対応するＣ＋＋オブジェクトへのＣ＋＋参照として用いられる。従って、ＩＲツリーは、互いに対する種々の参照を含むＩＲノードオブジェクト群の集合として用いられる。
【００３０】
更に、説明される実施形態においては、ＩＲ（中間表現）生成では、一連の抽象レジスタ定義を使用し、これらの抽象レジスタ定義は、対象アーキテクチャの特定の機能に対応し、対象プログラム１７は、対象アーキテクチャで実行されるように構成される。例えば、固有の抽象レジスタ定義が対象アーキテクチャの各物理レジスタに対応して設けられる（すなわち、図１の対象レジスタ５）。従って、トランスレータにおける抽象レジスタ定義は、ＩＲノードオブジェクト（すなわちＩＲツリー）への参照を含むＣ＋＋オブジェクトとして用いることができる。一連の抽象レジスタ定義によって参照される全てのＩＲツリーの集合は、ワーキングＩＲフォレストと表記される（「フォレスト（ｆｏｒｅｓｔ）」と表記されるのは、フォレストが複数の抽象レジスタルートを含み、これらの抽象レジスタルートの各抽象レジスタルートが一つのＩＲツリーを参照するからである）。これらのＩＲツリー及び他のプロセスは、トランスレータ１９の一部を適切に構成する。
【００３１】
図２は、トランスレータ１９が目的計算プラットフォーム１０で実行される場合のトランスレータ１９を更に詳細に示している。上に説明したように、トランスレータ１９のフロントエンドはデコーダユニット１９１を含み、デコーダユニット１９１は、対象プログラム１７の現時点で必要なセクションをデコードして複数の対象コードブロック１７１ａ，１７１ｂ，１７１ｃ（これらの対象コードブロックは通常それぞれ、対象コードの一つの基本ブロックを含む）を提供し、デコーダユニット１９１は、各対象ブロックに関するデコーダ情報１７２、及び当該対象ブロックに含まれ、かつトランスレータ１９の後の時点での動作を支援する対象命令を供給することもできる。或る実施形態では、トランスレータ１９のコアのＩＲユニット１９２は、中間表現（ＩＲ）を、デコードされた対象命令に基づいて生成し、そして最適化が中間表現に対して適宜行なわれる。トランスレータ１９のバックエンドの一部としてのエンコーダ１９３は、目的プロセッサ１３が実行することができる目的コード２１を生成する（埋め込む）。この単純化された例では、３つの目的コードブロック２１１ａ〜２１１ｃを生成して、対象コードブロック１７１ａ〜１７１ｃを対象プラットフォーム１で実行することと等価な作業を目的プラットフォーム１０で実行する。また、エンコーダ１９３はヘッダコード及び／又はフッタコード２１２を、目的コードブロック２１１ａ〜２１１ｃの幾つかの、または全ての目的コードブロックに対応するように生成することができ、ヘッダコード及び／又はフッタコード２１２は、環境を設定する機能のような機能を実行し、この環境では、目的ブロックが動作し、そして制御をトランスレータ１９に必要に応じて、戻す。
【００３２】
図３は、本発明の実施形態に用いられる装置を示す更に詳細な模式図である。図３に示す例では、トランスレータ１９は、ＳｏｌａｒｉｓからＬｉｎｕｘへの変換を行なうように構成される。しかしながら、以下に更に詳細に説明するように、本発明は、変換が、ＬｉｎｕｘからＬｉｎｕｘへの、またはＳｏｌａｒｉｓからＳｏｌａｒｉｓへの変換におけるように、最適化及びアクセラレーションのために行なわれる場合に有用ともなり得る。
【００３３】
図３に示すＳｏｌａｒｉｓからＬｉｎｕｘへの変換を行なう実施形態では、目的プロセッサ１３はプロセスファイルシステム２０ａを、目的オペレーティングシステム２０の一部として含むが、以下に詳細に説明するように、目的プロセッサ１３のプロセスファイルシステム２０ａは、対象コード１７がプロセスファイルシステムへの参照を行なう場合に、必ずしも通常に使用されることはないか、または実際のところ、通常に使用されることはない。
【００３４】
対象コード１７は第１対象実行ファイル１７ａを含み、対象実行ファイル１７ａは第１目的実行コード２１ａに変換されることになる。対象実行ファイル１７ａは、プロセスが対象プロセッサで実行される場合に、少なくとも一つのプロセスを設定する命令を含む。対象実行ファイル１７ａ内のプロセス設定命令に第１トランスレータプロセス１９が遭遇すると、対応するエントリが、トランスレータプロセス１９ａにアクセスすることができるプロセスデータ構造１９０内に構築される。
【００３５】
対象コード１７は、対象プロセッサで実行されると、一つよりも多くのプロセスを設定するように指示する命令を含む。図３は、第２トランスレータプロセス１９ｂも示している。第２トランスレータプロセス１９ｂは、第２対象実行ファイル１７ｂを目的コード２１ｂに変換するように動作する。
【００３６】
プロセスデータ構造１９０は、トランスレータプロセスが対象コードの第１ブロックを通過して処理を行なう前に初期化することができるか、または対象コードの第１ブロックにおいて第１対象コード命令に遭遇すると初期化することができる。
【００３７】
例示的な実施形態では、プロセスデータ構造１９０は、目的プロセッサ１３で実行されるトランスレータプロセスにアクセスすることができるディレクトリを含む。他の例示的な実施形態では、プロセスデータ構造１９０は、目的プロセッサ１３で実行されるトランスレータプロセスにアクセスすることができる共有メモリ領域を含むことができる。プロセスデータ構造１９０はプロセス識別子を含む。
【００３８】
トランスレータプロセスは、所定の命令を、対象プロセスファイルシステムに関連する対象コード１７の中に特定し、そして対象プロセスファイルシステムによって提供される必要な機能をエミュレートするように構成される。トランスレータプロセスは、この動作をプロセスデータ構造１９０を使用して行なうことができる。
【００３９】
例えば、対象実行ファイル１７ａは、エントリを対象プロセスファイルシステム内に有するプロセスの詳細をリクエストすることができる。対象コードが対象プロセッサで実行される場合、このリクエストは通常、対象プロセスファイルシステム内の情報を参照するための先行リクエストとして行なわれる。
【００４０】
対象プロセッサがＳｏｌａｒｉｓ環境で稼働する例示的な実施形態では、対象実行ファイル１７ａは次の関数をコールすることができる。
getdents(/proc/)
この命令に応答して、トランスレータプロセス１９ａは、対応する情報をプロセスデータ構造１９０から供給するように構成される。プロセスデータ構造１９０は初期化されており、そしてプロセスデータ構造１９０には、設定された各対象プロセスに関する情報を集合させている。例えば、トランスレータプロセスは、ディレクトリ／ｔｍｐ／ｐｄｓを設定して、プロセス情報を取り込み、そしてこのディレクトリに、変換されている各対象プロセスに対応するプロセス識別子の形態のプロセス情報を各トランスレータプロセスによって集合させることができる。
【００４１】
便宜上、プロセスデータ構造１９０は、プロセスデータ構造に格納されるプロセス識別子が、対象コードプロセス識別子に直接対応するように構成することができる。他の例示的な実施形態では、プロセスデータ構造は、各プロセスに対応する一つのファイルを含むことができ、ファイルはプロセス識別子をプロセスに関する他の情報と共に含む。
【００４２】
この例におけるトランスレータプロセス１９ａは次に、目的関数を実行することができる：
getdents(/tmp/pds)、この関数は関連するプロセス識別子をプロセスデータ構造から返す。
【００４３】
トランスレータプロセスがＳｏｌａｒｉｓコードを変換してＬｉｎｕｘプロセッサで実行する例では、トランスレータプロセスは、通信ソケットをディレクトリ／ｔｍｐ／ｐｄｓ内に、各プロセスに対応して設定する。便宜上、トランスレータプロセスは、各ソケットに、関連するプロセス識別子に対応する名前を割り当てるように構成される。
【００４４】
一旦、関連するプロセス識別子が取得されると、対象コード１７ａがプロセス群のうちの一つのプロセスを参照する可能性が高くなる。例えば、トランスレータプロセス１９ａは、次のような対象命令に遭遇することができ、
open(/proc/{process_identifier}/ctl)
上の命令では、{process_identifier}は一つのプロセスの識別子であり、このプロセスで、対象実行ファイル１７ａが実行されると予測される。例示的な実施形態では、{process_identifier}は、第２トランスレータプロセス１９ｂによって変換されているプロセスの識別子とすることができる。対象コード１７は一つのプロセスが実行されることを、例えば先行する対象コードgetdents(/proc/)命令に遭遇しており、かつ当該命令が、上に説明したように処理されている場合に、予測することができる。
【００４５】
トランスレータプロセス１９ａは、open命令が/procプロセスファイルシステムに関するものであることを認識し、そしてこの命令を、プロセスデータ構造１９０を参照することにより処理する。しかしながら、プロセスデータ構造１９０にアクセスしようとする前に、トランスレータプロセス１９ａは、例示的な実施形態では、参照されるべきプロセスが継続的に実行されていることを検証するように構成される。
【００４６】
トランスレータプロセス１９ａは、対象getdents(/proc/)命令に遭遇する時点と、対象命令が、先行するgetdents(/proc/)命令に応答して提供される情報を参照する時点との間の期間に対する制御を持たない。更に、トランスレータプロセス１９ａは、プロセスデータ構造１９０内に特定される対象プロセスを利用して、これらの対象プロセスを参照する対象命令に遭遇するときに対象プロセスを継続的に実行するということができない。
【００４７】
例えば、プロセスデータ構造１９０内に特定されるプロセスは、当該プロセスのプロセス識別子が供給された直後に突然クラッシュする恐れがある。従って、トランスレータプロセス１９ａがプロセス識別子のリストをプロセスデータ構造１９０を利用して取得する時点と、プロセス識別子を引き続き使用する時点との間の期間では、プロセス識別子のリストは古くなってしまう恐れがある。
【００４８】
対象コード１７内で別のプロセスへの参照が行なわれるたびに、トランスレータプロセスは更に、参照されるプロセスが継続的に実行されていることを検証するように構成することができる。例示的な実施形態では、トランスレータプロセス１９ａはこの検証を、プロセスデータ構造１９０内のプロセスのソケットをチェックすることにより行なうことができる。
【００４９】
上の例の説明を続けると、トランスレータプロセス１９ａは、open命令によって参照されるプロセスが、次の対象命令に遭遇するまで継続される前に継続的に実行されていることを検証するように構成される。一旦、参照されるプロセスを開くと、対象コードを継続的に実行して、例えばプロセスを停止するように、更に別のワークを実行することができる。このオペレーションに対応する代表的な対象コード命令は以下の通りであり：
write(fd,PCSTOP)；この対象コード命令では、fdは、問題になっているプロセスを特定するファイル記述子である。
【００５０】
この場合も同じように、トランスレータプロセス１９ａがこの対象命令を正しくエミュレートするために、問題になっているプロセスを実際に実行する必要がある。従って、トランスレータプロセス１９ａは、問題になっているプロセスのステータスをチェックし直すように構成される。問題になっているプロセスが予測通り継続的に実行されている場合、トランスレータプロセス１９ａは、問題になっているプロセスを変換しているトランスレータプロセスにリクエストして停止を実行させることができる。
【００５１】
この例では、トランスレータプロセス１９ａはトランスレータプロセス１９ｂにリクエストして停止を実行させる。
図３に示す例示的な実施形態では、第１トランスレータプロセス１９ａがプロセスデータ構造１９０を参照して、第２トランスレータプロセス１９ｂで実行されているプロセスを制御するが、トランスレータプロセスが、当該トランスレータプロセス自体に関連するプロセスデータ構造１９０内のデータを参照する環境を実現することができる。例えば、プロセスデータ構造は、プロセスのメモリマッピングに関する情報を含むことができ、そしてトランスレータは以下のような対象命令に遭遇することができる：
open(/proc/{process_identifier}/map)、この対象命令では、問題になっている{process_identifier}は自己参照している。
【００５２】
いずれのポイントでも、トランスレータインスタンスによって、参照されているプロセスの実行が突然停止してしまうように設定される場合、トランスレータプロセスはエラー通知を返すことができる。トランスレータによって供給されるエラー通知は、対象プロセッサでネイティブに実行される場合の対象プログラムの予測性能と一致させることができる。
【００５３】
情報をプロセスデータ構造１９０内で維持するために、トランスレータプロセスは、プロセスデータ構造１９０に格納される識別子を検査するように構成することができる。この検査は、一つのトランスレータプロセスが、トランスレータプロセス群の全てに代わって行なうことができるか、または各トランスレータプロセスが行なって検査作業負荷を分散することができる。別の構成として、検査は、トランスレータの外部に位置し、かつプロセスデータ構造を目的プロセッサで実行される全てのトランスレータプロセスに関して維持するように動作するモジュールによって行なうことができる。このようなモジュールは、図３に示すような検査装置１９５を含むことができる。
【００５４】
検査装置１９５は第１トランスレータプロセスで実行されるプロセスが第２トランスレータプロセスで実行されるプロセスを参照していることを認識する。例えば、第１トランスレータプロセスが、write(fd,PCSTOP)のような対象命令に遭遇すると、検査装置１９５は、第１トランスレータプロセスで実行されるプロセスが第２トランスレータプロセスで実行されるプロセスを参照していることを記録する。この動作は、write命令が第２トランスレータプロセスに検査装置１９５を介して伝達される場合に簡便に行なうことができる。便利な点として、検査装置はこれらの参照をプロセスデータ構造１９０内に記録することができる。
【００５５】
トランスレータプロセス、検査装置、及びプロセスデータ構造の間のメッセージは上に説明したようにソケットを使用して、かつ図４に示す経路を経由して簡便に授受することができる。
【００５６】
参照されるプロセスが継続的に実行されている場合、第２トランスレータプロセスは、メッセージを第１トランスレータプロセスから受信し、そして第１トランスレータプロセスに、参照されるプロセスが正しく停止したという確認を行なって通知する。この通知は、検査装置１９５を介して簡便に送信することもできる。次に、検査装置１９５は、第１トランスレータプロセスで実行されるプロセスが第２トランスレータプロセスで実行されるプロセスを参照したという当該検査装置における記録を消去することができる。この記録の消去によって、トランスレータプロセス及び検査装置はエグジット（出口）のプロセス及び不安定なプロセスを、以下に更に詳細に説明するように、正しく処理し易くなる。
【００５７】
参照されるプロセスが、参照を受け取るときに出口を通過する場合、第２トランスレータプロセスは入力メッセージを廃棄し、そして停止は、第１トランスレータによるリクエストに従って行なわれるということはない。しかしながら、第２トランスレータプロセスは、検査装置１９５に、参照されるプロセスが出口を通過している最中である、すなわち参照されるプロセスが、もうすぐ実行されなくなるという事実を通知するように構成される。これにより、検査装置は次に、停止したプロセスの詳細をプロセスデータ構造から削除し、第１トランスレータプロセスに、参照されるプロセスが出口を通過したことを通知し、そして第１トランスレータプロセスで実行されるプロセスが第２トランスレータプロセスで実行されるプロセスを参照したという当該検査装置における記録を消去することができる。通知を検査装置１９５から第１トランスレータプロセスに渡すことにより、第１トランスレータプロセスは、正しいエラーメッセージを返して、対象コードに対して、write命令が実行されなかったことを確認することができる。
【００５８】
いずれかのポイントにおいて、参照されるプロセスがクラッシュした場合、第１トランスレータプロセスから送信されるメッセージは受信されない。第１トランスレータプロセスは、参照されるプロセスがクラッシュしたことを伝えることができず、そして第２トランスレータプロセスからの応答を待つことを余儀なくされる。これらの状況において、検査装置１９５は第１トランスレータプロセスに関する問題を解決することができる。検査装置１９５は、プロセスからプロセスに渡されるメッセージの記録をチェックし、そしてプロセスデータ構造内に記録されるプロセスが実行されていることをチェックするように構成される。検査装置１９５が、プロセスがもはや実行されることがないことを検出する場合、当該検査装置は、当該プロセスに関する情報をプロセスデータ構造から削除し、そして第１プロセスが第２プロセスを参照したという記録を削除する。次に、検査装置１９５は、通知を第１トランスレータプロセスに返して、参照されるプロセスがもはや実行されないことを確認させることができる。通知を検査装置１９５から第１トランスレータプロセスに渡すことにより、第１トランスレータプロセスは、正しいエラーメッセージを返すことができ、対象コードに対して、write命令が、参照されるプロセスがもはや実行されることがないので実行されなかったことを確認することができる。
【００５９】
検査装置１９５は、プロセスデータ構造１９０を、もはや実行されることがないプロセスに関するメッセージの記録に関して周期的にチェックし、そしてこのような記録を古くなった記録として削除するように構成することができる。検査装置１９５は別の構成として、または追加される形で、このようなチェックを、所定数のメッセージがプロセス間で渡された後に行なうことができる。
【００６０】
本発明の実施形態に対する理解を一層容易にするために、図５の例示的なメソッド図が提供される。ステップＳ１０１では、トランスレータプロセスを、対象コード命令の受信に応答して設定し、この対象コード命令が対象プロセッサで実行されると、対象プロセスが設定される。ステップＳ１０２では、設定されたトランスレータプロセスは、プロセスデータ構造に、ステップＳ１０１で設定されたトランスレータプロセスに関する情報を集合させることができる。ステップＳ１０３では、ステップＳ１０２において情報を集合させたプロセスデータ構造を、受信した対象コード内の対象プロセスファイルシステムに含まれる情報への参照に応答して参照する。
【００６１】
ここに記載される例示的な実施形態は、トランスレータにおけるプログラムコードの変換に際して、対象プロセッサ及び目的プロセッサが異なる場合に高い利便性を発揮する。しかしながら、対象プロセッサ及び目的プロセッサが、プロセスファイルシステムと互換性のあるオペレーティングシステムで動作する場合でも、例えば対象オペレーティングシステム及び目的オペレーティングシステムが同じタイプである場合でも、トランスレータプロセスが他のトランスレータプロセスにアクセスすることが望ましい。
【００６２】
ここに記載される例示的な実施形態では、プロセスデータ構造をトランスレータプロセスに関して設定し、そして維持し、プロセスデータ構造を使用して、対象プロセスファイルシステムへの対象コードにおける参照を正しく処理することができる。プロセスデータ構造内のプロセスのステータスを周期的にチェックし、そしてもはや実行されることがないプロセスを削除するか、またはプロセスにマークを付けることにより、トランスレータは、出口を通過した、またはクラッシュしたプロセスへの対象コードにおける参照を正しく処理することができる。
【００６３】
上に説明したように、この構成は、変換対象の対象コードが潜在的に不安定なプロセスを含む場合に特に有用である。目的オペレーティングシステムを変更して、目的プロセスファイルシステム内の対象プロセス及び目的プロセスを区別することによって、不安定なプロセスを特定し、そして正しく処理するということが、トランスレータから見た場合、容易に可能になるという訳ではない。しかしながら、ここに記載される例示的な実施形態は、この問題を簡便に解決することができる。
【００６４】
例示的な実施形態では、トランスレータを用いてプログラムコード変換中の対象プロセスファイルシステムへの参照を特定し、そして処理する。トランスレータは、対象プロセスファイルシステムに関連する対象コード内の命令及び関数コールを認識し、そして処理する簡便なメカニズムを提供する。しかしながら、他の実施形態では、このような命令及び関数コールを認識し、そして処理するメカニズムを他の態様で実装することができることを理解されたい。例えば、目的プロセッサは、変更済みのシステムディレクトリで設定することができるか、または全てのシステムコールのデフォルトに設定することができる。いずれの適切なメカニズムも、関連する命令が認識される場合には、対象プログラムコードの制御フローを分離するために用いることができる。従って、制御フローは、本発明を実施するために適するコードに変換することができる。
【００６５】
ここに記載される例示的な実施形態の他に、本発明は、例えばトランスレータに使用されるハードウェアモジュールなどのような個別のモジュール内で実施することもできる。このモジュールは、この場合、トランスレータプロセスにより得られる機能を提供することができ、ユニットとは論理的に別のエンティティとしても存在してプログラムコード変換を行なうことができる。上に述べたように、トランスレータの実施形態は、プログラムコード変換を、対象オペレーティングシステム及び目的オペレーティングシステムが異なる環境において行なうために有用となり得る。トランスレータの実施形態はまた、プログラムコード変換を行なって、アクセラレーションまたはエミュレーションを行なうことにより、例えば特定のオペレーティングシステムのコードからのプログラムコード変換を可能にして、変換済みコードを同じオペレーティングシステムで、かつプロセス構造データの使用により可能になる更に別の制御レベルで実行するために有用となり得る。
【００６６】
本明細書において使用される「トランスレータ（ｔｒａｎｓｌａｔｏｒ）」及び「トランスレータプロセス（ｔｒａｎｓｌａｔｏｒ  ｐｒｏｃｅｓｓ）」という用語は、コード変換のプロセスとして、またはプロセスが行なわれている間に動作することができるエミュレータ、アクセラレータ、またはインタープリタのような関連する装置を含むものとして解釈されるべきである。特に、本明細書において参照されるトランスレータプロセスを使用することができる。
【００６７】
本発明の装置及び方法の種々の特徴が、上述の実施形態の各実施形態において個別に記載されている。しかしながら、本発明の発明者らの全体的な意図によれば、本明細書において記載される各実施形態の個々の態様は、本明細書において記載される他の実施形態と組み合わせることができる。
【００６８】
本明細書において記載される方法は、プログラムコード変換を行なうために考案され、そして対象プログラムコードから目的コードへの動的なバイナリ変換を行なうランタイムトランスレータと連動させると特に有用である。本発明は、本明細書において記載される方法のうちのいずれかの方法を実行するように構成されるコンピュータシステムの一部として動作するトランスレータ装置に拡張することもできる。また、本発明は、本明細書において定義される方法のうちのいずれかの方法を実行するためにコンピュータによって実行することができる命令を格納するコンピュータ読み取り可能な記憶媒体に拡張することができる。
【００６９】
本発明の少なくとも幾つかの実施形態は、専用ハードウェアしか使用しないように構成することができ、そして本明細書において使用される「モジュール（ｍｏｄｕｌｅ）」または「ユニット（ｕｎｉｔ）」という用語は、これらには制限されないが、所定のタスクを実行するフィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）のようなハードウェアデバイスを含むことができる。別の構成として、本発明の構成要素は、アドレス指定可能な記憶媒体に格納されるように構成し、そして一つ以上のプロセッサで実行されるように構成することができる。従って、本発明の機能要素は或る実施形態では、例えばソフトウェアコンポーネント、オブジェクト指向ソフトウェアコンポーネント、クラスコンポーネント及びタスクコンポーネント、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、及び変数のようなコンポーネントを含むことができる。更に、好適な実施形態について、以下に説明されるコンポーネント、モジュール、及びユニットを参照しながら記載してきたが、このような機能要素は更に少ない要素と組み合わせるか、または更に別の要素に分離することができる。
【００７０】
この技術分野の当業者であれば、直ぐ上に記載した例示的な実施形態の種々の適応化及び変更を、本発明の範囲及び思想から逸脱しない限り行なうことができることが理解できるであろう。従って、添付の請求項の範囲において、本発明は、本明細書に詳細に記載されている態様以外の態様で実施することができることを理解されたい。
【００７１】
幾つかの好適な実施形態について示し、そして記載してきたが、この技術分野の当業者であれば、種々の変更及び変形を、添付の請求項に規定される本発明の範囲から逸脱しない限り加えることができることが理解できるであろう。
【００７２】
本出願に関連する本明細書と同時に、または本明細書よりも先に提出され、かつ本明細書を用いて公に調査することができる全ての論文及び文書に関心が向けられることになるので、全てのこのような論文及び文書の内容は、本明細書において参照することにより本明細書に組み込まれる。
【００７３】
本明細書に開示する特徴の全て（全ての添付の請求項、要約、及び図面を含む）、及び／又はこのようにして開示される全ての方法またはプロセスのステップの全ては、このような特徴及び／又はステップのうちの少なくとも或る部分が相容れない組合せを除き、どのような組合せでも組み合わせることができる。
【００７４】
本明細書に開示する各特徴（全ての添付の請求項、要約、及び図面を含む）は、特に断らない限り、同じ、等価な、または同様の目的に利用される別の特徴により置き換えることができる。従って、特に断らない限り、開示する各特徴は一般的な一連の等価な、または同様な特徴の一例に過ぎない。
【００７５】
本発明はこれまでの実施形態（複数の実施形態）の詳細に限定されない。本発明は、本明細書に開示する複数の特徴（全ての添付の請求項、要約、及び図面を含む）の一つの新規のいずれかの特徴、またはこれらの特徴の新規のいずれかの組合せ、或いはこれまでに開示したいずれかの方法またはプロセスの複数のステップの一つの新規のいずれかのステップ、またはこれらのステップの新規のいずれかの組合せに拡張することができる。
【図１】
2010506251.tif 000003
【図２】
2010506251.tif 000004
【図３】
2010506251.tif 000005
【図４】
2010506251.tif 000006
【図５】
2010506251.tif 000007
【手続補正書】
【提出日】平成21年11月4日(2009.11.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ装置であって、
目的プロセッサと、
対象プロセッサで実行される、受信した対象コード命令に応答して設定されるトランスレータプロセスとを備え、
前記トランスレータプロセスは、
（ａ）設定されたトランスレータプロセスに関する情報をプロセスデータ構造に集合させ、
（ｂ）受信した対象コードにおいて対象プロセスファイルシステム内の情報への参照が行なわれるのに応答して、ステップ（ａ）の前記プロセスデータ構造を参照するように構成される、
コンピュータ装置。
【請求項２】
前記トランスレータプロセスは、対象プロセッサで実行されたときに対象プロセスを設定する各受信した対象コード命令に応答して、別のトランスレータプロセスを設定するように構成される、請求項１記載のコンピュータ装置。
【請求項３】
各トランスレータプロセスは、一つの共通のプロセスデータ構造に集合させ、該一つの共通のプロセスデータ構造を参照する、請求項２記載のコンピュータ装置。
【請求項４】
前記プロセスデータ構造は、（ａ）各トランスレータプロセスにアクセスすることができるディレクトリ、及び（ｂ）各トランスレータプロセスにアクセスすることができる共有メモリ領域のうちの一方、または両方を含む、請求項３記載のコンピュータ装置。
【請求項５】
前記トランスレータプロセスは、前記プロセスデータ構造に、各トランスレータプロセスに対応するプロセス識別子を集合させ、前記プロセス識別子は、対象プロセッサで実行されたときに前記受信した対象コード命令に応答して設定される対象プロセスに割り当てられる識別子に対応する、請求項１記載のコンピュータ装置。
【請求項６】
前記トランスレータプロセスの情報が前記プロセスデータ構造に格納されている前記トランスレータプロセスのステータスをチェックし、もはや実行されることがないトランスレータプロセスに関する情報を前記プロセスデータ構造から削除するように構成される検査装置を更に備える、請求項１記載のコンピュータ装置。
【請求項７】
前記検査装置は、前記トランスレータプロセスの情報が前記プロセスデータ構造に格納されている前記トランスレータプロセスのステータスを周期的にチェックするように構成される、請求項６記載のコンピュータ装置。
【請求項８】
前記検査装置は、前記トランスレータプロセスの一部を構成する、請求項６記載のコンピュータ装置。
【請求項９】
検査装置を更に備え、該検査装置は、参照が前記プロセスデータ構造に格納される情報に対して行なわれたことを記録するように構成される、請求項１記載のコンピュータ装置。
【請求項１０】
前記検査装置は、参照を行なう前記トランスレータプロセスに対する識別子、及び前記トランスレータプロセスの情報が参照されているトランスレータプロセスに対する関連の識別子を記録するように構成される、請求項９記載のコンピュータ装置。
【請求項１１】
前記検査装置は、前記識別子を前記プロセスデータ構造に記録するように構成される、請求項１０記載のコンピュータ装置。
【請求項１２】
前記検査装置は、プロセスの情報が参照されているプロセスがもはや実行されることがないと判断される場合に、当該検査装置が記録したデータを削除するように構成される、請求項１１記載のコンピュータ装置。
【請求項１３】
前記トランスレータプロセスは、当該トランスレータプロセスが出口を通過するときに、当該トランスレータプロセス自体に関する情報を前記プロセスデータ構造から削除する、請求項１記載のコンピュータ装置。
【請求項１４】
前記目的プロセッサは、受信した対象コードを実行する前記対象プロセッサと同じタイプである、請求項１記載のコンピュータ装置。
【請求項１５】
前記トランスレータプロセスは、前記目的プロセッサで実行される目的コード命令を生成するように構成される、請求項１記載のコンピュータ装置。
【請求項１６】
対象プロセッサで実行される対象コードから目的プロセッサで実行される目的コードへのプログラムコード変換に関してプロセスファイルシステムを管理する方法であって、
（ａ）対象プロセッサで実行されたときに対象プロセスを設定する、受信した対象コード命令に応答して、トランスレータプロセスを設定するステップと、
（ｂ）前記トランスレータプロセスにアクセスすることができるプロセスデータ構造に、受信した対象コード命令に応答して設定される一つ以上のトランスレータプロセスに関する情報を集合させるステップと、
（ｃ）受信した対象コードにおいて対象プロセスファイルシステム内への情報の参照に応答して、前記ステップ（ｂ）において情報を集合させた前記データ構造を参照するステップと
を備える方法。
【請求項１７】
プロセスの情報が前記プロセスデータ構造に格納される該プロセスのステータスをチェックするステップと、前記プロセスデータ構造から、もはや実行されることがないトランスレータプロセスに関する情報を削除するステップと、を更に備える、請求項１６記載の方法。
【請求項１８】
プロセスの情報は前記プロセスデータ構造に格納される該プロセスのステータスをチェックするステップは周期的に行なわれる、請求項１７記載の方法。
【請求項１９】
（ｄ）参照を行なう前記トランスレータプロセスに対する識別子、及び情報が参照されているトランスレータプロセスに対する識別子を記録することにより、参照がプロセスデータ構造に格納される情報に対して行なわれたことを記録するステップを更に備える、請求項１６記載の方法。
【請求項２０】
トランスレータプロセスの情報が参照されている該トランスレータプロセスがもはや実行されることがない場合、ステップ（ｄ）において記録されるデータを前記プロセスデータ構造から削除するステップを更に備える、請求項１９記載の方法。
【請求項２１】
請求項１６記載の方法を実行するためにコンピュータによって実行可能な命令を格納するコンピュータ読み取り可能な記憶媒体。
【請求項２２】
対象プロセッサで実行される対象コードを受信し、目的プロセッサで実行される目的コードを生成するように構成されるトランスレータ装置であって、
（ａ）受信した対象コードに応答して設定される一つ以上のトランスレータプロセスに関する情報をプロセスデータ構造に集合させ、
（ｂ）受信した対象コードにおいて対象プロセスファイルシステム内への情報の参照に応答して、前記ステップ（ａ）の前記プロセスデータ構造を参照するように構成される、トランスレータ装置。
【国際調査報告】
2010506251.tif 000008
2010506251.tif 000009