(57)【特許請求の範囲】
【請求項１】
ターゲット命令セットからホスト命令セットに命令を変換するコンピュータにおいて変換プロセスの種別を転換する方法であって、
インタープリタおよびトランスレータを含むコード・モーフィング・ソフトウエアを実行し、ターゲット命令からホスト命令を生成するステップと、
ターゲット命令のシーケンスにおいて前記インタープリタまたは前記トランスレータのどちらが動作しているかをある間隔で検出するステップと、
前記インタープリタが動作している場合カウントを増大させ、前記トランスレータが動作している場合前記カウントを減少させるステップと、
前記カウントの値が、選択した最大値に達したとき、前記ターゲット命令のシーケンスの次の実行時におけるインタープリットをトランスレートに変更するステップと、
から成る方法。
【請求項２】
請求項１記載の方法において、前記間隔は、選択した時間間隔である方法。
【請求項３】
請求項１記載の方法において、前記間隔は、実行したターゲット命令の選択した数である方法。
【請求項４】
請求項１記載の方法において、インタープリタの動作の検出時に前記カウントを増大させる量は、選択可能である方法。
【請求項５】
請求項１記載の方法において、トランスレータの動作の検出時に前記カウントを減少させる量は、選択可能である方法。
【請求項６】
請求項１記載の方法であって、更に、
特定のターゲット命令のシーケンスをインタープリットする各事実をカウントするステップと、
前記事実のカウントの値が選択した最大値に達したときに、当該特定のターゲット命令のシーケンスのインタープリットをトランスレートに変更するステップと、
を含む方法。
【請求項７】
請求項１記載の方法であって、更に、
各ターゲット命令のシーケンスに関する統計を収集するステップと、
収集した統計に基づいて、ターゲット命令のシーケンスのトランスレートを最適化するステップと、
を含む方法。
【請求項８】
請求項１記載の方法において、前記カウントの値が、選択した最大値に達したとき、ターゲット命令のシーケンスのインタープリットをトランスレートに変更するステップは、最適化を制限されたトランスレートを含み、
更に、
最適化を制限してトランスレートされたターゲット命令のシーケンスを実行している間に検査を行い、前記最適化を制限してトランスレートされたターゲット命令のシーケンスを更に最適化すべきか否か判定を行うステップと、
前記検査に応答して、再度トランスレートを行い更なる最適化を行うステップと、
を含む方法。
【請求項９】
請求項８記載の方法において、最適化を制限してトランスレートされたターゲット命令のシーケンスを実行している間に検査を行うステップは、前記最適化を制限してトランスレートされたターゲット命令のシーケンスを実行する各事実をカウントすることを含み、
前記再度トランスレートを行い更なる最適化を行うステップは、前記事実のカウントの値が選択した最大値に達したときに行われる方法。
【請求項１０】
命令をターゲット命令セットからホスト命令セットに動的に変換するコンピュータによる実行を最適化する方法であって、
ターゲット命令セットからホスト命令セットに変換された命令に対して、各々異なるレベルの最適化を与えるインタープリットおよびトランスレートを含む命令変換プロセスと、
どの変換プロセスを各ターゲット命令のシーケンスの変換に用いるかを動的に判定するステップであって、全ターゲット命令のシーケンスに対してどちらの変換プロセスが実行されているかの前記命令変換プロセスの動作と無関係な間隔で検出し、インタープリタが動作している場合カウントを増大させ、トランスレータが動作している場合前記カウントを減少させ、前記カウントの値が、選択した最大値に達したとき、前記ターゲット命令のシーケンスの次の実行時におけるインタープリットをトランスレートに変更するステップからなる判定ステップと、
前記ターゲット命令のシーケンスを変換するように前記判定手段で判定された変換プロセスを用いて、当該命令シーケンスを変換するステップと、
から成る方法。
【請求項１１】
請求項１０記載の方法において、前記変換プロセスは、インタープリットと、最適化を最小限にしたトランスレートと、最適化を高めたトランスレートとを含む方法。
【請求項１２】
請求項１０記載の方法において、どの変換プロセスが各ターゲット命令のシーケンスを最良に変換するかについて動的に判定する手段は、各ターゲット命令のシーケンスが特定の変換プロセスによって変換される回数に依存する方法。
【請求項１３】
請求項１０記載の方法において、どの変換プロセスが各ターゲット命令のシーケンスを最良に変換するかについて動的に判定する手段は、１つの変換プロセスを走らせる回数の、他の変換プロセスに対する比率に依存する方法。
【請求項１４】
請求項１０記載の方法において、どの変換プロセスが各ターゲット命令のシーケンスを最良に変換するかについて動的に判定する手段は、
各ターゲット命令のシーケンスが特定の変換プロセスによって変換される回数に依存し、更に、
１つの変換プロセスを走らせる回数の、他の変換プロセスに対する比率に依存する方法。
【発明の詳細な説明】
【０００１】
（発明の背景）
発明の分野
本発明は、コンピュータ・システムに関し、更に特定すれば、ターゲット命令セットからホスト命令セットに命令を動的にトランスレート(translate)するマイクロプロセッサの動作効率を高める方法に関する。
（従来技術の説明）
最近、単純であるが非常に高速のホスト・プロセッサ（「モーフ・ホスト」と呼ぶ）とソフトウエア（「コード・モーフィング・ソフトウエア」と呼ぶ）とを組み合わせ、モーフ・ホスト・プロセッサの命令セットとは異なる命令セットを有する「ターゲット・プロセッサ」用に設計したアプリケーション・プログラムを実行する新たなマイクロプロセッサが開発された。モーフ・ホスト・プロセッサは、コード・モーフィング・ソフトウエアを実行し、アプリケーション・プログラムを、元のターゲット・ソフトウエアの目的を達成するモーフ・ホスト・プロセッサ命令に動的に変換する。ターゲット命令を変換する際、新たなホスト命令を実行しつつ、変換バッファにも格納する。変換バッファ内に格納されたホスト命令は、更に変換を行わずにアクセスすることができる。プログラムの初期変換は低速であるが、一旦変換されれば、プログラムを実行するためにハードウエアで通常必要となるステップの多くは不要となる。新たなマイクロプロセッサは、単純で高速な低消費電力設計のプロセッサが、変換した「ターゲット」命令を、プログラムを設計した対象である「ターゲット」プロセッサと同等の速度で実行可能であることを実証した。
【０００２】
他のプロセッサのために設計されたプログラムを高速に実行可能とするために、モーフ・ホスト・プロセッサは、多数のハードウエア強化を含む。これらの強化の１つに、ホスト・プロセッサと変換バッファとの間に有るゲート付きストア・バッファ(gated store buffer)がある。第２の強化は、変換されているターゲット命令の任意のシーケンスの前に現れるターゲット・プロセッサの既知の状態を格納する、（通常のワーキング・レジスタに追加された）１組のホスト・レジスタである。モーフ・ホスト命令のシーケンスを実行する際に発生するメモリ・ストアは、ゲート付きストア・バッファ内に置かれる。モーフ・ホスト命令が、例外を生成することなく実行した場合、命令シーケンスの先頭におけるターゲット状態を、シーケンスが完了した時点におけるターゲット状態に更新し、メモリ・ストアはメモリに記憶される。
【０００３】
変換の実行が成功裏に完了するまで一時記憶ユニットに実行によって生成された結果を置いておくことによって、新たなマイクロプロセッサが変換の実行を処理する際に用いる方法は、実際上非常に高速な推定方法であることが注目される。実際に、新たなマイクロプロセッサは、他の動作の成果(outcome)を推定するのと同じ回路を用いる。例えば、単純に変換された命令から、ソフトウエア・スケジューラによって並び替えられた命令シーケンスの実行結果を一時的に保持することによって、従来技術が企図したものよりも一層強力な並び替えを行うことができる。このように並び替えられた命令シーケンスを実行して正しい結果を得た時、並び替えたシーケンスの実行によって生じたメモリ・ストアをメモリに記憶することができ、ターゲット状態を更新することができる。並び替えたシーケンスが、実行中に、例外を発生した場合、プロセッサの状態は、シーケンスの先頭におけるターゲット状態にロールバックし、より保守的な手法を採用してシーケンスの変換を行う。
【０００４】
新たなマイクロプロセッサの最も有効な特徴の１つは、変換された命令の長いシーケンスを共にリンクできることにある。一度短いターゲット命令シーケンスが変換され、例外を発生することなく実行できることが見出されると、命令の長いシーケンスを形成するために、多数のこれらの短いシーケンスを共にリンクすることが可能である。これによって、変換されたプログラムを非常に高速で実行することが可能となる。何故なら、マイクロプロセッサは、ハードウエア・プロセッサが命令を実行するために通常行う（より短い変換されたシーケンスの各々を調べるような）ステップの全てを経る必要がないからである。予測したよりも更に高い速度を達成する場合もある。何故なら、一旦長いシーケンスをリンクすれば、多くの場合、最適化器は、生成される結果を変更することなく、長いシーケンスからステップの多くを排除することが可能となるからである。ハードウエアの最適化器は、際だった最適化を可能にするパターンを顕在化させることができるほど長い命令シーケンスの最適化をこれまで全くできなかった。
【０００５】
この新たなプロセッサに伴って、わずかな回数しか実行されないターゲット・アプリケーションの命令に関する問題が発生した。例えば、特定のアプリケーションの動作を開始するために必要な命令は、多くの場合、そのアプリケーションが最初にコールされるときにのみ実行される。また、アプリケーションの動作を終了させるために必要な命令は、多くの場合、そのプログラムを実際に終了させるときにのみ実行される。しかしながら、新たなプロセッサは、全ての命令を同様に扱うのが通例である。ターゲット命令をデコードし、ターゲット命令が設計された対象である機能を実行する原始ホスト命令をフェッチし、非常に広範な最適化プロセスを遂行し、次いでトランスレートし最適化した命令をトランスレーション・キャッシュに格納する。新たなプロセッサの動作が進むに連れて、トランスレートされた命令のシーケンスが互いにリンクされ、更に最適化される。そしてリンクされた命令の、より長いシーケンスがトランスレーション・バッファに格納される。最終的には、トランスレートされた命令の大きなブロックが、ホスト命令のスーパーブロックとして格納される。特定のホスト命令またはリンクされた命令集合の実行中に例外が発生した場合、新たなプロセッサは、ターゲット・プロセッサの最後の正しい状態にロールバックするプロセスを遂行し、次いで最後の正しい状態の時点から、前記例外が再度発生する時点まで、ターゲット命令のステップ毎のトランスレートを行う。これらのトランスレートもトランスレーション・キャッシュに格納される。新たなプロセッサは、１９９８年１１月３日に発行され、本発明の譲受人に譲渡された、Kelly等の米国特許第５，８３２，２０５号に詳しく記載されている。
【０００６】
このプロセスは、迅速に実行するコードを作成するが、このプロセスは達成可能な総合的な高速化を制限し、その上別の望ましくない効果の原因となり得る多数の効果を有する。第１に、このプロセスは、トランスレートした命令のためにかなりの量の記憶容量を必要とする。多くの場合、多数の異なる変換が同じ１組のターゲット命令に対して存在する。何故なら、シーケンスには異なる分岐から入るからである。一旦格納されると、トランスレートされた命令は、何か積極的な理由のために除去されるまで、このストレージを占有する。第２に、ある命令シーケンスの実行が１回だけの場合、トランスレートおよび最適化に要する時間は、最初のターゲット命令のステップ毎のトランスレートを実行するために必要な時間よりも大幅に長い場合がある。このために、新たなプロセッサは、平均速度が低下する。
【０００７】
これらの理由のために、元のプロセッサを変更して、コード・モーフィング・ソフトウエアの一部として、ターゲット命令の各々のステップ毎のトランスレートを行うインタープリタ(interpreter)を含ませるようにした。多くの可能な実施形態があるが、インタープリタは本質的にターゲット命令をフェッチし、命令をデコードし、ターゲット命令の目的を達成するホスト・プロセスを与え、このホスト・プロセスを実行する。１つのターゲット命令のインタープリット(interpret)および実行を終了すると、インタープリタは次のターゲット命令に進む。このプロセスは、本質的に、ターゲット命令のインタープリットおよび実行による単一ステップである。各ターゲット命令をインタープリットし実行する際、ターゲット・プロセッサの状態を更新して行く。インタープリタによって生成されたホスト命令は、トランスレーション・キャッシュには格納されないのが通例であるので、リンクおよびリンク後に得られる更なる最適化は行われない。インタープリタは、ターゲット命令シーケンスの残りについて、このプロセスを継続する。
【０００８】
一般に、いずれの命令シーケンスでも、ある回数の実行に至らない内に、以前のインタープリットおよび実行の全てに必要な時間が、当該シーケンスをトランスレートし最適化するために必要な時間と等しくなることがわかった。結果的に、アプリケーションの実行中ほとんど用いられない命令については、トランスレータ・ソフトウエアの代わりにインタープリタを利用することが望ましい場合が多い。したがって、１回しか実行しない命令シーケンスは、単にインタープリットするだけとし、シーケンスをトランスレートしない方が、より良くしかも迅速に処理される。
【０００９】
この利点を活用するために、改良型プロセッサを変更し、ターゲット命令シーケンスに最初に遭遇したときにはいつでもインタープリタを利用するようにした。インタープリタ・ソフトウエアは、命令シーケンスを実行する回数を追跡するカウンタと連動する。インタープリタの実行は、シーケンスに遭遇する毎に、これが例外を発生することなくある回数実行され終わるまで、行うことができる。特定のシーケンス中にある選択された回数だけターゲット命令をインタープリットし実行し終えると、コード・モーフィング・ソフトウエアは、インタープリタからトランスレータに、そしてそれに伴う最適化および格納プロセスに切り替える。これを行うときは、十分な回数の実行が既に行われており、命令の実行が再度行われ、格納されている最適化トランスレートによって、全体的にアプリケーションの実行を著しく高速化できることがほぼ確実である。
【００１０】
コード・モーフィング・ソフトウエアが通常のトランスレート・プロセスに切り替わると、トランスレートは最適化されトランスレーション・キャッシュに格納される。その後、このトランスレートは更に最適化され、他のトランスレートとリンクすることができるので、このようなプロセスから、非常に高速化した実行を得ることが可能となる。
【００１１】
改良型プロセッサの特に有用な実施形態では、分岐が命令内で行われる時点においてのみ、インタープリタがターゲット命令を実行する回数に関するデータを記録する。インタープリタは、分岐が発生するまで、種々のターゲット命令を通じて単一のステップを実行する。分岐命令が発生すると、この特定の分岐命令（特定のメモリ・アドレスを有する命令）に関する統計を記録する。シーケンスの開始から分岐までのターゲット命令は単に順番に実行されるだけであるので、分岐点までは、記録を保持する必要はなく、トランスレーション・キャッシュ内の格納に関する多数のステップが不要となる。
【００１２】
更に、特定のターゲット命令が実行された回数に加えて、統計を収集するためにインタープリタを利用する場合、追加の大きな利点を得ることができる。例えば、ターゲット命令が分岐を含む場合、この命令の分岐する先のアドレスを、分岐が実行された回数と共に記録するとよい。次いで、インタープリタがある回数シーケンシャル・ターゲット命令を実行したとき、分岐動作および分岐アドレスの履歴を構築することができる。これらの統計は、特定の命令シーケンスが、トランスレート済み命令のスーパーブロックになる確率が高いか否かについて判定する際に利用することができる。これらの統計を利用することによって、特定の命令シーケンスを、多数回実行した後に、スーパーブロックであると推定的に見なすことができる。選択した回数だけインタープリットした後、シーケンスをトランスレートし、最適化し、別個のリンク動作を全て実行する必要なく、種々の分岐を通じてリンクし、そしてトランスレーション・キャッシュに格納することができる。推定が真となった場合、命令の処理において大幅な時間節約となる。真ではない場合、単にこの動作は例外を発生し、コード・モーフィング・ソフトウエアをインタープリタに戻す。
【００１３】
インタープリタは、頻繁に用いないシーケンスに対してホスト・コードを生成する際に有用なだけでなく、例外を処理する際にも利用される。変更したプロセッサが、いずれかのトランスレートされたターゲット・アプリケーションを実行している間に、ターゲット例外に遭遇したときはいつでも、コード・モーフィング・ソフトウエアは、ターゲット・プロセッサの最後のわかっている正しい状態まで、ロールバックさせる。次いで、トランスレータ部分ではなく、コード・モーフィング・ソフトウエアのインタープリタ部分を利用して、ホスト命令を与える。インタープリタは、ターゲット命令の生成および実行を通じて単一のステップを実行する。各ターゲット命令をインタープリットし実行するに連れて、ターゲット・プロセッサの状態を更新していく。
【００１４】
インタープリタは、例外が再度発生するまで、ターゲット命令のシーケンスの残り部分についてこのプロセスを継続する。例外が発生した時点では、ターゲット・プロセッサの状態は、インタープリットの状態に対して正しいので、例外を正しく能率的に処理することができる。インタープリット・プロセスは非常に単純なので、ターゲット例外の発生点を判定するプロセスは、前述のトランスレートおよび最適化プロセスを全て実行し次いでトランスレーション・キャッシュに格納するトランスレート・プロセスによって実行したときにかかる点を判定するよりもはるかに速い。
【００１５】
インタープリタを、トランスレートされた命令シーケンスのダイナミック・コンパイラとして機能する最適化トランスレータと結合することにより、コード・モーフィング・ソフトウエアは、新たなプロセッサによるターゲット・アプリケーションの実効速度向上に対する制約の多くを排除する。インタープリタを用いて命令の早期実行を処理することによって、アプリケーションの実行中ほとんど用いられない命令を最適化する必要性をなくし、これによって動作速度を向上させる。これらほとんど用いられない命令をトランスレーション・キャッシュに格納する必要性により、ストレージの必要量が減少し、トランスレートされた多くの命令を破棄する必要性もなくなる。インタープリタを用いて例外を処理することによって、トランスレータを用いる場合と同じ有用な効果を得ることができ、しかも動作を高速化し、ストレージの要求量が減少する。
【００１６】
前述の改良型プロセッサは、R. Bedichek等の"Method For Integration Of Interpretation And Translation In A Microprocessor"（マイクロプロセッサにおけるインタープリットおよびトランスレートの統合方法）と題し、本願と同日に出願され、本発明の譲受人に譲渡された米国特許出願第 号に詳しく記載されている。
【００１７】
インタープリタとトランスレータの組み合わせによって、前述の独特なプロセッサの動作を著しく改善するように機能するものの、動作においていくつかの問題点が残っている。これらの問題は、一般的に２つの機能を最適に利用することができないことと言うことができる。いずれのアプリケーション・プログラムにおいても、命令のシーケンスによって行われる動作には非常に多くの種類があるので、インタープリットを終了しトランスレートを開始すべき点を判定することは非常に難しい。多くの場合、十分な回数インタープリットされ、トランスレートされるプロセスは、決して再度用いられることはないので、コードは単にトランスレーション・キャッシュ内の空間を占有するだけである。他のプロセスは常に再利用される。トランスレートが開始する点を移動させることによって、問題を解決するとは思えない。
【００１８】
コード・モーフィング・ソフトウエアのインタープリタ・ソフトウエアおよびトランスレータ・ソフトウエアの使用を制御するプロセスを変更することにより、改良型マイクロプロセッサの動作速度を向上させ、より迅速に実行するようにすることが望ましい。
（発明の概要）
したがって、本発明の目的は、他のマイクロプロセッサのために設計されたアプリケーション・プログラムおよびオペレーティング・システムと互換性があり、これらを走らせることができ、しかも一層高速なマイクロプロセッサを提供することである。
【００１９】
本発明のこの目的およびその他の目的は、ターゲット命令セット内の命令をホスト命令セットに変換するために用いるプロセスを決定する方法によって実現される。この方法は、インタープリタおよびトランスレータを含むコード・モーフィング・ソフトウエアを実行し、ターゲット命令からホスト命令を生成するステップと、インタープリタまたはトランスレータのどちらを実行しているのかについてある間隔で検出するステップと、インタープリタを実行している場合カウントを増大させ、トランスレータを実行しているときカウントを減少させるステップと、カウントが選択した最大値に達したとき、ターゲット命令シーケンスをインタープリットからトランスレートに変更するステップとから成る。
【００２０】
本発明のこれらおよびその他の目的ならびに特徴は、図面と共に以下に続く詳細な説明を参照することによって、一層良く理解されよう。
図面においては、いくつかの図を通じて同様の要素を同様の符号で示すこととする。
（詳細な説明）
ターゲット命令シーケンスをトランスレートし最適化する前にこれをインタープリットする回数を単に数える代わりに、本発明はあるインテリジェンスをプロセスに与えようとするものである。これを行うには、システム設計者によって選択された、インタープリットの量に対するトランスレートの量のバランスを維持しようとするプロセスを利用する。
【００２１】
図１に示す本発明の基本的な実施形態では、ターゲット命令をトランスレートする際に費やす時間量に対する、ターゲット命令をインタープリットする際に費やす時間量を判定する。インタープリットに費やす時間が多すぎる場合、プロセッサは単にトランスレートに切り替える。コード・モーフィング・ソフトウエアが、インタープリットまたはトランスレートによってターゲット命令シーケンスをホスト命令シーケンスに変換して行き、これら変換したシーケンスを実行して行く際に、本発明のプロセスは、本質的に、インタープリット・プロセスおよびトランスレート・プロセスの各々において費やした時間量を検査し、インタープリットに過度な時間が費やされていないか否か判定を行う。この新たなプロセスの利用によって、プロセッサが行う動作が、当該プロセッサの動作全体を加速するために、使用中の命令変換方法が最適か否かについて判定することが可能となる。
【００２２】
検査動作を実行するための一実施形態は、タイマを用いて、コード・モーフィング・ソフトウエアが実行中の特定の動作を検査する間隔を選択する。例えば、千分の１秒毎に動作を検査し、インタープリタまたはトランスレータのどちらが走っているか判定を行うこともできる。検査自体は、統計的に、過剰な時間が取られている期間、したがってインタープリタによる変換中に行われる可能性の方が高い。各質問の結果をカウンタに供給し、カウンタは、インタープリタが走っているという判定毎にカウントを増大させ、トランスレータが走っているという判定毎にカウントを減少させる。カウントが最大値に達した場合、どのような命令シーケンスを変換しているかには係わらず、当該命令シーケンスの次の実行時に、ソフトウエアの動作をインタープリットからトランスレートに切り替える。これによって、インタープリットに比較して、トランスレートを行う量を増加させ、実行を高速化するのに役立つ。一方、カウンタが最大値に達しない限り、ターゲット命令からホスト命令を生成する動作は、変更なく継続する。
【００２３】
一般に、この検査方法は、プロセッサのソフトウエアが、トランスレートに比較して、インタープリットを行い過ぎていないか否か判定する。カウンタに設定する最大値は、本発明にしたがって、プロセッサの最良の利用に望ましいと判定されたインタープリット動作量を反映するように選択するとよい。例えば、より多くのインタープリットが望ましい場合、より高い最大値を選択する。一方より多くのトランスレートが望ましい場合、より低い最大値を選択する。また、インタープリットおよびトランスレートに対して、質問結果に異なる重み付けをすることも可能である。例えば、インタープリットが走っていることを発見した検査はカウントを１ずつ増大させ、一方トランスレートが走っていることを発見した検査はカウントを１／２だけずつ減少させる。プロセスの一方または他方を優先するために重み付けする他の値も、システム設計者が望む結果に基づいて用いることが可能である。このインタープリットおよびトランスレートの間で切り替える方法では、単にトランスレートに切り替える前に特定の動作をインタープリットする回数をカウントするよりも、精度の高い結果が得られる。
【００２４】
本発明の他の実施形態では、前述の検査を実行する際に、時間間隔ではなく、設定した命令数の実行によって判定した間隔を利用する。この実施形態は、計時した間隔を用いる実施形態よりも、インタープリタが動作している時間の割合に関して正確な情報を与える可能性が更に高い。何故なら、これは命令を時間と比較するのではなく、命令を命令と比較するからである。この実施形態は、単一のカウンタを用いて、ホストが実行する命令の数を測定するだけで済む。設定した数の命令を実行した後、コード・モーフィング・ソフトウエアは、動作プロセスを検査し、インタープリタまたはトランスレータのどちらが走っているのか判定を行う。このプロセスの残り部分は、計時間隔を用いる実施形態と同様に実行され、プロセスがインタープリットかまたはトランスレートかを判定するための検査をいつ行うかについて判定を行う。
【００２５】
図２に示す本発明の更に進んだ実施形態は、前述の特許出願に開示されているカウント方法と、周期的に検査を行う方法との組み合わせを利用して、どちらのプロセスが実行されているのか判定を行う。カウント方法および周期的検査方法の双方は、変換プロセスが進んでいる間、常時走っている。カウント方法は、各特定の命令シーケンスがインタープリットされる回数をカウントし、指定した回数のシーケンスのインタープリットがエラーなく実行されたときに、シーケンスのトランスレートに切り替える。このカウント機構(scheme)は、緊密なループ(tight loop)のような短いプロセスがある回数既に走っており、トランスレートされるべきときに、非常に迅速に判定することができる。周期的検査方法は、同時に走り、変換動作全体がインタープリットに過度な時間を費やしているか否か判定を行う。変換プロセス間でいつ切り替えるかについて判定を行う周期的検査方法は、より長い命令シーケンスがインタープリットされているときに、カウント方法よりも迅速に検出し、したがってこのようなシーケンスではより速くトランスレートに切り替えることができる。
【００２６】
本発明の更に進んだ実施形態は、元のカウント方法および周期的検査方法の別の組み合わせを利用することができる。更に特定すれば、このような実施形態の１つは、同じ命令がある選択された回数だけインタープリットされるまで、命令がインタープリットされる回数をカウントすることができる。このカウント・プロセスの間、シーケンスをインタープリットした回数をカウントし、シーケンス毎に統計を保持することができる。一旦最大カウントに達したなら、コード・モーフィング・ソフトウエアはトランスレート・プロセスに移行する。同じ期間中に、コード・モーフィング・ソフトウエアは、ホスト・プロセッサが全ての命令を変換しているモードを周期的に検査し続け、変換プロセスをインタープリットからトランスレートに切り替えるべきか否か判定を行う。いずれかの検査が満たされた場合、コード・モーフィング・ソフトウエアは、特定のシーケンスに対して、インタープリットからトランスレートに切り替える。しかしながら、行われたトランスレートは最適には及ばず、したがって素早く完了されることもある。例えば、トランスレート・プロセスは他のシーケンスに全くリンクせずに、ある特定の分岐を優先するようにトランスレートおよび並び替えられるかも知れない。控えめにトランスレートされたプロセスを実行する場合、ソフトウエアは、カウント検査も用いて分岐統計を収集するが、より長い時間期間にわたって収集し、トランスレートしたシーケンスの実際の動作に関する知識をより多く得られるようにする。これらの統計は、より最適化されたトランスレートが取るべき形態を判定する際に非常に有用である。あるいは、または加えて、コード・モーフィング・ソフトウエアは、ホスト・プロセッサが全命令を変換しているモードを周期的に検査し続け、トランスレートを、控えめなトランスレート・プロセスから、大量のシーケンスのリンク動作およびリンクしたシーケンス間の最適化を伴うプロセスのように、より完全なトランスレート・プロセスに切り替えるべきか否か判定を行うことも可能である。検査プロセスが、最小のトランスレートを実行している検査時点において最大値に達した場合、プロセスはトランスレートに切り替わり、蓄積された分岐統計のより大きなプール(pool)によって、一層高度化した最適化を制御する。
【００２７】
本発明のプロセスには、実施可能な多くの変更があり得る。理論的に、検査中に異なるレベルを利用して、いずれかの数の中間トランスレート・ステップを実施し、次のレベルのトランスレートに切り替えるか否か判定を行うことができない理由はない。
【００２８】
以上、好適な実施形態に関して本発明を説明したが、本発明の精神および範囲から逸脱することなく、種々の変更や変形も当業者によって可能であることが認められよう。したがって、本発明は、特許請求の範囲に関して判断するべきである。
【図面の簡単な説明】
【図１】  図１は、本発明の第１実施形態を示すフロー・チャートである。
【図２】  図２は、本発明の第２実施形態を示すフロー・チャートである。
【図１】
0003844691.tif 000002
【図２】
0003844691.tif 000003