[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2004110824A - マルチプロセッシング環境における透過動的最適化のための方法およびシステム - Google Patents

マルチプロセッシング環境における透過動的最適化のための方法およびシステム Download PDF

Info

Publication number
JP2004110824A
JP2004110824A JP2003310695A JP2003310695A JP2004110824A JP 2004110824 A JP2004110824 A JP 2004110824A JP 2003310695 A JP2003310695 A JP 2003310695A JP 2003310695 A JP2003310695 A JP 2003310695A JP 2004110824 A JP2004110824 A JP 2004110824A
Authority
JP
Japan
Prior art keywords
execution
binary
application
monitor
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003310695A
Other languages
English (en)
Other versions
JP4003830B2 (ja
Inventor
Ravi Nair
ラヴィ・ナイア
John Kevin Obrien
ジョン・ケヴィン・オブライエン
Kathryn Mary O'brien
キャスリン・メアリー・オブライエン
Peter Howland Oden
ピーター・ハウランド・オーデン
Daniel Arthur Prener
ダニエル・アーサー・プレナー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004110824A publication Critical patent/JP2004110824A/ja
Application granted granted Critical
Publication of JP4003830B2 publication Critical patent/JP4003830B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Abstract

【課題】 広範囲のカテゴリのコードについてマルチプロセッサ・システムの固有の特性を利用できる最適化プロセスを提供すること。
【解決手段】 マルチプロセッシング環境における透過動的最適化の方法(およびシステム)は、システムの他のプロセッサ上で動作している実行モニタにより第1のプロセッサ上のアプリケーションの実行をモニタするステップと、システムの他のプロセッサ上で実行している実行時オプティマイザにより元のアプリケーションの1つまたは複数のセグメントを透過的に最適化するステップとを含む。
【選択図】 図3



Description

 本発明は、一般に、ソフトウェア・システムに関し、より具体的には、このようなシステムのチューニングを改善して、そのパフォーマンスを改善するための方法に関する。
 典型的なソフトウェア・システムの構築は、いくつかのステップを含み、特定のハードウェアおよびソフトウェア構成上で実行するようにチューニングされた連結モジュール(または「実行可能バイナリ」)の生成に終わる。このプロセスは、「静的最適化」として知られ、最適化とともにプログラムをコンパイルし、インストルメンテーションを挿入するステップと、事前構築した実行時ライブラリとの静的または動的結合のステップと、予想ユーザ構成の何らかのサンプルについて、ある範囲の予想ユーザ入力でテストするステップと、テスト中に収集したデータに基づいて最適化を伴う再コンパイルのステップ(これは、「プロファイル指示フィードバックによる最適化」という)とを含むことができる。
 結果的に得られるプログラムは、予想ユーザ構成および入力データの範囲にわたって堅固かつ最適なものになると予想される。しかし、実際には、ユーザ環境のスペクトルは、このようなプログラムがいずれのケースでもその最適パフォーマンスを達成できないほど広範囲になる可能性がある。
 静的技法(すなわち、後続実行のためにコードの微調整を可能にするために動作環境外でのコード実行に関する情報を収集すること)は効率のよいコードを生成するには不十分であることが長い間、認識されてきた。というのは、考えられるすべてのエンドユーザ・データおよびハードウェア構成を表現するテスト・データを生成することは、不可能ではないとしても、困難であるからである。
 しかも、命令レベルの並列性が増し、パイプラインが深まるにつれて、この不十分さはますます苛立たしいものになる。
 静的最適化に代わるものとして「動的最適化」がある。動的最適化は、最適化すべきコードをインストルメントするステップと、それをコンパイルするステップと、それを実行時ライブラリと静的または動的に結合するステップとを含むという点で、プロファイル指示フィードバックを備えた静的最適化と同様のものである。
 しかし、動的最適化は、実際のユーザ・データによるライブ実行中にインストルメント化コードが観察される点と、実行コードがその場で再最適化される(すなわち、このように収集されたプログラム実行に関する情報を同じ実行中に使用して、(同じ動作内の)後続実行のためにコードを再最適化する)点で、静的最適化とは異なる。
 その結果、動的最適化から得られる最適化コードは、静的最適化技法により達成可能なものより効率がよい場合が多い。というのは、たとえば、実際のプログラム使用が示すように、その効率が増すと全体的なパフォーマンスに影響するようなコードのうち、使用頻度が高い部分に最適化を集中させることができるからである。
 そのうえ、動的最適化の場合、顧客が仮説データセットを生成するという労働集約型タスクを実行するための要件はまったくない。
 しかし、従来の動的最適化システムにおける動的最適化の欠点は、実行しなければならない情報収集およびコンパイル作業がアプリケーション・コードの実行によって順次散在し、その結果、アプリケーションの実行時間を増すことである。何らかの恩恵が動的最適化から発生するようにするには、アプリケーションの実行時間内に達成される改善がこの追加コストを上回らなければならない。
 動的最適化の例としては、これまでに提案され、Java(登録商標)バイトコードの動的コンパイルおよび最適化を実行することによりJava(登録商標)アプリケーションの実行を最適化しようとする技法を含む。このような技法の要点は、典型的なバイトコード実行がほとんどのコンパイル済みアプリケーションより大幅に遅いので、実行時処理のオーバヘッドが実行の適度な改善によって吸収可能であることである。このような機会は、高度に最適化した非Java(登録商標)(バイナリ・コード)アプリケーションの実行時には滅多に得られないものである。
 しかも、メソッド呼出しの最適化など、使用する技法の多くは、一般に適用不能である。
 HPL 1999-1978 990621におけるV. Bala他の「Transparent Dynamic Optimization: the design and implementation ofDynamo」という論文に記載されているような他のプロジェクトでは、結果として得られる実行時間の改善によってオーバヘッドに報いることができると想定して、命令キャッシュの局所性を改善するようにコード・レイアウトを再整理することにより、実行時パフォーマンスを動的に改善する問題に対処している。
 しかし、このダイナモ技法では、インストルメンテーション情報を利用せず、しかも、ユニプロセッサ・システム用に設計されているので、マルチプロセッサ・アプリケーションを考慮していない。
 しかし、現在のコンピュータ・システムは通常、複数のプロセッサからなる。ロー・エンドでも、シングルチップ・マルチプロセッサが普及しつつある。また、このような構成の多くでは、そのプロセッサのうちの少なくとも1つが十分に利用されないケースが頻繁になっている。マルチプロセッサ機能を活用してプログラム実行を改善しようというこれまでの試みは、アプリケーションの自動並列化などの技法に集中していた。このような技法は様々な理由で成功が限られており、そのうちの最も重要なものは、自動並列化が数値集約型アプリケーション、特にフォートランで作成されたものに最も関連することと、通常はCで作成される商用トランザクション処理アプリケーションがこの手法にあまり適していないことが分かっていることと、より規則正しいタイプのコードの場合でも自動並列化は実際に実現するのが困難であることが分かっていることである。
 したがって、明らかに、広範囲のカテゴリのコードについてマルチプロセッサ・システムの固有の特性を利用できる最適化プロセスが必要になっている。
HPL 1999-1978990621におけるV. Bala他の「Transparent Dynamic Optimization: thedesign and implementation of Dynamo」という論文 1996年12月発行のProceedingsof MICRO 1996に掲載されたBall他による「Efficient Path Profiling」という論文
 従来の方法および構造の上記その他の問題、欠点、短所を考慮して、本発明の一目的は、1つまたは複数のアイドル状態または十分に利用されていないプロセッサの便宜的使用を利用することにより、マルチプロセッサ・システムにおいて改善されたプログラム実行効率を提供することにある。
 本発明の他の目的は、システムのユーザにとって透過的な方法で、その実行特性を学習し、この知識を応用して現行ホスト・システム上の実行挙動をチューニングし強化することにより、ソフトウェア・システムのパフォーマンスを改善することにある。
 具体的には、本発明は、最適化すべきアプリケーションの実行を妨げずに、対称型または分散形マルチプロセッサ・システムにおいて使用可能なサイクルを使用してこのパフォーマンス強化を実施することにより、従来の方法およびシステムに改良を加えようとするものである。
 本発明の第1の態様では、マルチプロセッシング環境における透過動的最適化の方法(およびシステム)は、システムの他のプロセッサ上で動作している実行モニタにより第1のプロセッサ上のアプリケーションの実行をモニタするステップと、システムの他のプロセッサ上で実行している実行時オプティマイザにより元のアプリケーションの1つまたは複数のセグメントを透過的に最適化するステップとを含む。
 本発明の第2の態様では、マルチプロセッサ・コンピューティング環境がその実行環境についてアプリケーションの同時動的最適化を実行するための方法は、システム内の第1のプロセッサ上でアプリケーションのインストルメント化コピーを実行するステップと、システムの他のプロセッサ上で動作している実行モニタによりアプリケーションの実行をモニタするステップであって、そのモニタがアプリケーションのインストルメント化コピーに含まれるインストルメンテーション・コードを実行することにより生成された実行特性に関して実行されるステップと、システムの他のプロセッサ上で実行している実行時オプティマイザにより元のアプリケーションの1つまたは複数のセグメントを最適化するステップであって、その最適化が、同時に実行中のアプリケーションへのパフォーマンス上の影響なしに、実行モニタによって収集された実行特性に関して実行されるステップと、1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより元の実行アプリケーションを変更するステップであって、その変更がアプリケーションのユーザにとって透過的な方法で実行されるステップとを含む。
 本発明の第3の態様では、マルチプロセッサ・システム内でその実行環境についてアプリケーションの同時動的最適化を実行するための方法は、個別プロセッサ内でまたは複数プロセッサにわたって動作している個別プロセスとして動作している実行モニタにより、第1のプロセッサ内で動作しているプログラムまたはアプリケーションのそれぞれの実行をモニタするステップと、それが実行しているバイナリ・コードにより、そのバイナリ・コードの実行特性のプロファイル・データを作成するステップであって、そのバイナリ・コードがパフォーマンスをモニタするためのインストルメンテーション・コードを含むステップと、実行モニタにより、そのプロファイル・データを連続的に評価するステップと、所与のしきい条件を満足するときに、動的オプティマイザを呼び出して、頻繁に実行するコード・フラグメントを最適化するステップとを含み、その後続実行で使用するために実行中の命令ストリームにその最適化コード・フラグメントが挿入される。
 本発明の第4の態様では、共用マルチプロセッシング(SMP)システム内の透過動的最適化の方法は、第1のプロセッサ上でアプリケーション・バイナリを実行するステップと、システム内の他のプロセッサ上で実行の挙動をモニタするステップと、アプリケーション・バイナリが実行されている間にアプリケーション・バイナリの実行を最適化するステップとを含む。
 本発明の第5の態様では、マルチプロセッシング・システム内の透過動的最適化のためのシステムは、第1のプロセッサ上でアプリケーション・バイナリの実行をモニタするための実行モニタであって、システムの他のプロセッサ上で動作する実行モニタを含み、その実行モニタが、モニタと同時に、元のアプリケーション・バイナリの1つまたは複数のセグメントを最適化するための動的オプティマイザを含み、その動的オプティマイザがシステムの他のプロセッサ上で実行される。
 本発明の第6の態様では、マルチプロセッシング・システム内の透過動的最適化の方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、システムの他のプロセッサ上で動作している実行モニタにより、第1のプロセッサ上でアプリケーション・バイナリの実行をモニタするステップと、システムの他のプロセッサ上で実行される実行時オプティマイザにより、元のアプリケーション・バイナリの1つまたは複数のセグメントを透過的に最適化するステップとを含む。
 したがって、本発明によれば、好ましくは、マルチプロセッシング・システム内の余分な処理サイクルを使用して、実行中のアプリケーションの実行特性を観察し、その動作中のシステムを透過的に変更して、そのパフォーマンスを大幅に改善する。
 好ましくは、プログラムまたはアプリケーションのそれぞれの実行は、個別プロセッサ内でまたは複数プロセッサにわたって動作している個別プロセスとして動作している実行モニタにより、「シャドウ化」される。それが実行しているときに、パフォーマンスをモニタするように設計されたインストルメンテーション・コードを含むバイナリ・コードは、その実行特性のプロファイルを作成する。その実行モニタは、そのプロファイル・データを連続的に評価し、所与のしきい条件を満足するときに、本発明の動的オプティマイザを呼び出して、頻繁に実行するコード・フラグメントを最適化(または再最適化)し、次にそれは後続実行時に使用される実行中の命令ストリームに挿入される。新たに挿入したコード・フラグメントは、いかなるインストルメンテーションも含まなくなるか、またはアプリケーションの実行特性におけるその他の変更を検出するために「再インストルメント化」されている可能性がある。
 本発明は、Java(登録商標)バイトコードとは対照的なバイナリ実行可能コードに上記の技法を適用するものであり、そのコードは、解釈されたときから、最適化のコストを償却するのに十分な低速で実行される。(それにもかかわらず、この技法はバイトコード・アプリケーションにも効果的である。)すなわち、このバイナリは、それが動作している間に、共用マルチプロセッサ(SMP)システム内の他のプロセッサ上で、実行の挙動をモニタし、それが実行されている間に個別プロセッサ上でそれを最適化できるようにインストルメント化される。
 上記その他の目的、態様、および長所は、添付図面に関連して以下に示す本発明の好ましい実施形態の詳細な説明からより十分に理解されるだろう。
 次に、添付図面、より具体的には図1〜10を参照すると、本発明による方法および構造の好ましい実施形態が示されている。
 一般に、本発明は、マルチプロセッサ・システム上のプログラムの実行についてパフォーマンス上の大幅な改善を達成するために新しいやり方でマルチプロセッシング機能を活用するものである。純粋に静的なコンパイラは一般に、プログラム内のすべての経路が均等に取られる可能性があるものと想定し、したがって、通常は、考えられるすべての経路を同程度に最適化する。しかし、実際には一部の経路がより頻繁に取られる可能性があるので、あまり頻繁に取られない経路を減速するという犠牲を払っても、最適化のために主要経路を選択した場合に最適化がより有益になる可能性がある。
 これに対して、純粋に動的なコンパイラ(Java(登録商標)バイトコード・プログラム用のほとんどのジャストインタイム(JIT)コンパイラなど)は、あるプログラムの現在の実行に関する詳細情報について処理している間に、狭い時間ウィンドウ内でこの知能を使用する必要がある切迫した事情によって著しく阻害される。
 以下で明らかになるように、本発明は、既知の動的コンパイラを超える2つの長所を有する。
 第1に、事実上、そのマルチプロセッサ設計のために、このような制約付きの持続期間内に動作する必要はない。さらに、実行中のプログラム分析に関する要件を削減するために、最適化動作を実行しながら、静的最適化出力を使用することができる。
 さらに、本質的に、あまり遠くない将来のすべてのシステムはシングルチップ・マルチプロセッサから構築されると予想され、したがって、本発明の手法は独自に関連するものになる。
 ここに記載すべき本発明の好ましい実施形態では、コード実行をモニタし、収集した実行情報に基づいてコードを最適化し、最適化コードをプログラムに再挿入するための方法を含む動的実行時最適化システム(または「動的オプティマイザ」)は、連続的に動作している実行モニタの制御下でサブスレッドまたはプロセスとして、モニタ中のプログラムを実行するプロセッサ(またはプロセッサ・グループ)とは別のプロセッサ(またはプロセッサ・グループ)内で実行される可能性があるものと想定する。
 さらに、最適化すべき実行コードは、たとえば、1996年12月発行のProceedings of MICRO 1996に掲載されたBall他による「EfficientPath Profiling」という論文に記載された技法を使用して、インストルメンテーション・コードを組み込むようにコンパイルされたものになる。したがって、本発明では、実行バイナリ・コードは当技術分野で周知のように、すでに(たとえば、静的または動的に)インストルメント化されているものと想定する。
 本発明の主な焦点は、新規の方法でそのインストルメンテーション・コードによって生成された情報を活用することである。
 上記で概略を示した説明ではSMP環境を想定しているが、本発明は、分散共用メモリを介して通信する1つまたは複数のプロセッサからなるクラスタから構成されるコンピュータ・システムにも適用されることに留意されたい。このような構成では、動的最適化システムは、最適化すべきコードを実行しているノードまたはプロセッサとは別個のものである限り、そのクラスタ内の単一(または複数)のノード(複数も可)上かあるいはクラスタ内の1つのノードの1つ(または複数)のプロセッサ上で実行されることになるだろう。
 以下では図1に関連して本発明を詳細に説明するが、同図では、マルチプロセッシング・ハードウェア・システム100上で動作する動的オプティマイザを示している。
 マルチプロセッシング・システム100は、2つ以上の任意の数のプロセッサ101a、101bなどを含むことができ、各プロセッサは図1ではそれぞれ1〜n+1と表示されている。各プロセッサはそれ専用のローカル・メモリ(図1には図示せず)を有することができ、すべてのプロセッサは共用メイン・メモリ102を介して通信することができる。このシステムは、スレッド・スケジューリング・パッケージを含むかまたはサポートするオペレーティング・システム103によって制御される。
 本発明の動的最適化プロセス下で実行されるすべてのインストルメント化プログラム(たとえば、実行バイナリ)について、以下に詳述する実行モニタ104において同時実行モニタ・スレッドが創出される。
 実行モニタ・スレッドの目的は、所与の実行インストルメント化バイナリの実行挙動を分析し、さらにこの分析に対して、それを生成するために要する時間を短縮しながら、アプリケーションの予想出力を保存する変更(最適化)を加えることである。この(モニタ)スレッドは、それがモニタしているアプリケーションと同じ長さだけ実行される。
 したがって、図1は、実アプリケーションを実行しており、そのそれぞれが潜在的に他のすべてのプロセッサとは別個のものである1〜n個のプロセッサと、少なくとも1つの他のプロセッサn+1(たとえば、n+2など他の複数のプロセッサが可能であるが、簡潔さのため1つのみ図示されている)が存在することを示している。プロセッサ1〜n上で実行されるそれぞれのインストルメント化バイナリに対し、1つの実行モニタ104が関連付けられている。これらはすべてがプロセッサn+1上のみで動作する必要はない。これらは、このような実行モニタ104がいくつのリソースを使い果たすかに応じて、異なるプロセッサ(複数も可)上で動作することができる。しかし、実行モニタの数と、プロセッサ1〜n上で実行されるインストルメント化バイナリの数の間には、1対1の関係がある。
 SMPの複数のプロセッサ上で複数のインストルメント化バイナリが実行される可能性があることに留意されたい。ここに記載する関係は、このようなインストルメント化バイナリとそれ自体の「シャドウ」プロセスとの間のもの(たとえば、以下に記載し、参照番号201aおよび205によって図2に示すもの)である。これは、本発明が関連し、有利に使用する1対1の関係であり、本発明では、所与のインストルメント化バイナリに関するシャドウ・プロセスが個別プロセッサ上で実行されることだけが必要である。
 したがって、プロセッサ1(101a)がそのバイナリを実行すると、プロセッサ1の実行の特性が専用実行モニタ104によって観察される。
 図2は、第1のプロセッサ201上で実行している、最適化すべきインストルメント化バイナリ・アプリケーション201aと、インストルメント化バイナリ・アプリケーション201aの実行をモニタする実行モニタ・スレッド205との間の対話の概念図200であり、実行モニタは、プロセッサ201とは別個のプロセッサ203上で実行される。
 図2では、実行インストルメント化バイナリは長期間にわたって実行される、かなり大型のシステムからなる可能性がある。この場合、実行インストルメント化バイナリをモニタし、実行中にそれを変更するための方法は「シャドウ」プロセスという。このシャドウ・プロセスは、実行モニタと、動的オプティマイザと、フラグメント・テーブル(またはキャッシュ)マネージャとを使用することを含む。インストルメント化バイナリの始動時に、この「シャドウ」プロセスはフォークされ、インストルメント化バイナリまたはアプリケーションの実行の持続期間の間、実行し続ける。
 シャドウ・プロセス205は、フラグメント・キャッシュ201bも含む。フラグメント・キャッシュ201bはシャドウ・プロセスのソフトウェア・アーチファクトであり、実行コード・ストリーム内にそれを再挿入するまで最適化後のコード・フラグメントを記憶するために使用するものであることに留意されたい。このデータ構造のサイズは重要であり、これはインストルメント化バイナリ・アプリケーション201aの動的再最適化フラグメントを記憶するために「フラグメント・キャッシュ・マネージャ」によって管理される。
 これらの「フラグメント」は、頻繁に実行される複数命令のシーケンス(インストルメンテーション・コードによって生成されるインストルメンテーションの分析に基づいて、実行モニタ・スレッドが決定したもの)であり、その後、アプリケーションの一部としてプロセッサ201によって実行可能であり、そのフラグメントの最適化の結果として、より効率よくプログラム実行が行われる可能性があると判定されたときに、「シャドウ」プロセスの実行またはプロファイル・モニタ・ステップ(204)中に選択されたものである。
 実行バイナリのうち、選択された部分だけがフラグメント・キャッシュ201bに記憶されることに留意されたい。これらの部分は、インストルメンテーションの出力に基づいて選択される。本質的に、これらは頻繁に実行される複数命令のシーケンスを含み、いくつかの追加または削除は最適化機能によって必要かつ受入可能なものと見なされる。
 この実行またはプロファイル・モニタ204は、プログラムを通る特定の経路を実行した回数を含む、様々な特性をモニタすることができる。このため、ある経路を何度も(たとえば、1000回以上)実行した場合、このモニタがフラグメント・マネージャ202をトリガし、この経路に関する何かを実行し始め、この特定の1つのコードについて(後述する動的オプティマイザ207を使用して)最適化プロセスを開始する。
 したがって、プロセッサ203は、インストルメント化バイナリ・アプリケーションから選択したフラグメントを最適化するためにシャドウ・プロセス・スレッド205の一部として動的オプティマイザ・スレッド207も実行し、フラグメント・マネージャ202を介してフラグメント・キャッシュ201bに最適化フラグメントを戻す。
 プログラムの経路が実行された回数と、このような実行の発生回数がしきい回数(たとえば、1001回以上)を超えているかどうかをモニタすることに関する上記の例に関連して、フラグメント・マネージャ202は、動的オプティマイザ207による最適化(または再最適化)のためにフラグメント・キャッシュ201bからその経路(たとえば、実行バイナリの一部または「フラグメント」であって、比較的小さいひとかたまりのコードである)またはその経路の一部分を抽出するように動作する。
 このため、フラグメントは取り出され、最適化され、次に動作中のバイナリ内に置き換えられる(戻される)。フラグメント・マネージャ202は、経路のどの部分を最適化すべきかを決定する。これは、経路全体ではない可能性がある。フラグメント・マネージャ202は、命令(複数も可)のコピーを作成し、オプティマイザ207がそのコピーを調べ、そのコピーに変更を加えることができるようにその命令を記憶することにより、経路のその部分を「抽出」する。
 このため、フラグメント・マネージャ202は、このような最適化を実行するよう、オプティマイザ207に「指示」し、フラグメント・マネージャ202がそのフラグメントに関連すると確信するプロファイル情報をオプティマイザに与える。その場合、オプティマイザは、そのフラグメントについて作業してそれを最適化する(たとえば、それをより高速かつより効率的にするためにコードをリオーダする)ことになり、実行後にフラグメント・マネージャ202に通知することになる。次に、フラグメント・マネージャ202は、それ自体の内部テーブルに記憶されたデータを使用して、プロセッサ1(201)内の元の実行バイナリに最適化フラグメントを再挿入するための正確な論理位置を決定する。
 次に、最適化フラグメントはプロセッサ1(201)上のフラグメント・キャッシュ201b内に置かれ、フラグメント・マネージャ202は、実行バイナリで実行するために同じ経路(命令(複数も可))(または、場合により、経路の一部分)が次に検出されたときに、元の実行バイナリ内のコードではなく、フラグメント・キャッシュ201b内のコードが実行のために採集されるように、実行バイナリを変更することになる。
 第1の事例のフラグメント・マネージャ202は、インストルメント化実行バイナリ201aから直接、その経路を抽出することになるが、その後の段階(たとえば、その経路の再最適化)では、フラグメント・マネージャ202は、インストルメント化実行バイナリ201aから直接ではなく、フラグメント・キャッシュ201bからそれを抽出することになると思われることに留意されたい。
 このため、フラグメントは、元のバイナリ(または、その後、動的最適化バイナリ)内の実コード・シーケンスとして、ならびに、動的オプティマイザが生成した再挿入最適化コード・シーケンスとしてという2通りの形式で現れる可能性がある。後者はフラグメント・キャッシュ201b内に現れ、前者は(上記の括弧内のケースを除く)元のアプリケーション内に現れる。各実行インストルメント化バイナリ・アプリケーションの場合、実行モニタ・スレッド(シャドウ・プロセス・スレッド)205の1つの事例が存在することになり、所与のインストルメント化バイナリ・アプリケーション用の実行モニタはここではその「モニタ・スレッド」という。
 実行モニタ(またはシャドウ・プロセス)スレッド205の動作は、アプリケーションと並列だが、アプリケーションには知られずに進行し、その実行は、それ自体の実行特性を特徴づけるプロファイル・ストリームの生成を除き、変化なしで進行する。
 「実行特性」は、実行の副作用としてインストルメント化バイナリによって生成されるプロファイル・データを表すことに留意されたい。
 さらに、フラグメント・キャッシュ201bは、共用メモリ内に存在し、実行モニタ・スレッド205のフラグメント・マネージャ202によって割り振られ制御される、データ構造またはテーブルにすぎないことに留意されたい。上記の通り、フラグメントは、その実行特性により、それが(再)最適化の潜在的可能性になっている命令シーケンスであり、この命令シーケンスは、実行モニタ(シャドウ・プロセス)205により実行バイナリから抽出され、最適化され、その後、そのバイナリに再挿入するためにフラグメント・キャッシュに記憶されることになる。
 さらに、目標は、これらのフラグメントを最適化して、実行バイナリに再挿入することなので、それらがフラグメント・キャッシュ201bに存在することは過渡的なものであり、標準的な技法を使用してその記憶を管理し再利用することに留意されたい。
 図3は、本発明の動的最適化プロセスに関連して図2のシステムが実行する方法300の諸ステップを示す流れ図である。
 方法300では、インストルメント化バイナリをプロセッサ201にロードすると、フォークを実行して、図2のプロセッサ203(n+1)で実行モニタ・スレッドを始動する(ステップ300A)。
 さらに、インストルメント化バイナリ・アプリケーションをロードすると、プロセッサ201上でのインストルメント化バイナリ・アプリケーションの実行と同時に図2のプロセッサ203(n+1)上で実行するために、ステップ301で実行モニタ・スレッドを創出(フォーク)する。前述の通り、実行モニタ・スレッドは、インストルメント化バイナリの実行を監視またはモニタするので、「シャドウ・スレッド」ともいう。
 シャドウ・プロセス(実行モニタ)スレッドの創出は、FORKまたは何らかのこのようなオペレーティング・システム(OS)プリミティブの実行によって実施される。この場合も、この活動の並列性に注目する。プロセッサ201上で動作しているインストルメント化バイナリ・アプリケーションがこの分析および最適化プロセスに気づかず、したがって、(前述のダイナモまたはJava(登録商標)JITケースとは異なり)決して待つ必要がないという点で、この並列性は、より積極的な技法を可能にし、タイミング・エラーを帳消しにするので、重要なものである。インストルメント化バイナリ・アプリケーションはベンチマーキング用に設計されたプログラムにすることが可能であるが、このシステムによる実際の恩恵は、実際のユーザ・データを実行して、実際のユーザ・アプリケーションとともに使用したときに達成される。
 インストルメント化バイナリの実行の一部として実行されるステップ302では、実行プロファイルを生成する。この実行プロファイルは、実行バイナリ(または動作中のプログラム)の実行特性を記述したものである。このような特性は、バイナリ・アプリケーションに挿入された特定のインストルメンテーション・コードによって決定される。モニタするためにインストルメンテーション・コードを設計可能な特性の例としては、アプリケーション内の特定のループが実行される回数、またはより具体的には、特定の経路またはコード・ブロックのシーケンスが実行される回数を含む。
 プロファイル・データは共用メモリ内のインストルメント化アプリケーションによって生成され、シャドウ・プロセス(実行モニタ)スレッドは同じ共用メモリ位置からそれを読み出すことに留意されたい。モニタ・スレッドはいずれのプロファイル・カウンタの絶対値にも決定的に依存しているわけではなく(たとえば、あるループの10000回の実行と、10001回または11000回は著しく異なっているわけではない)、したがって、アプリケーション・スレッドとモニタ・スレッドの間にロックまたはその他の同期を設ける必要はない。
 後述するように、情報は、生成されるにつれて、連続的に提供される。このため、これは動的プロセスであり、そのため、実行が行われている間に実行コードを実際に変更できるように、情報が連続的に提供される。
 このため、プロセッサ203上で動作する図2の実行モニタ・スレッド205により、生成されたプロファイル情報(たとえば、「実行特性」ともいう)をステップ302で連続的にモニタするが、モニタ・スレッド205は現在検査中のインストルメント化バイナリ・アプリケーションに排他的に関連付けられている。
 現在の実施形態を説明するために、モニタ・スレッドは、検査中のインストルメント化バイナリ・アプリケーションを実行しているプロセッサとは別個の単一プロセッサ上で動作するものと想定する。しかし、本発明は、複数プロセッサがインストルメント化バイナリ・アプリケーションを実行しているプロセッサとは別個のものである限り、その複数プロセッサにわたってモニタ・スレッドを実行可能であると企図するものである。
 ステップ304では、シャドウ・プロセス(実行モニタ)205は、生成したプロファイル・データを検査して、しきい条件を満足しているかどうかを判定する。このため、この例示的実施形態では、カウンタまたは増分器/減分器を使用することができるだろう。別法として、他の実施形態では、他の構造を使用することができるだろう。たとえば、カウンタと他の何らかの装置の組合せ(または全カウンタの合計が所与の値になり、それが所与の条件を示すようなカウンタの組合せ)は、どのしきい値を測定中であるか、あるいは測定中の条件またはしきい値の複雑さなどに応じて、使用することができるだろう。通常、使用するしきい値は、インストルメンテーションを挿入したときに設定され、実行時に減分されるので、ゼロに達すると、オプティマイザ207の呼出しがトリガされる。さらに、通常、「しきい値」は、測定中の他の何らかのタイプの値とは対照的に、何らかのタイプのカウントまたは数(たとえば、同じコードを検出した回数など)に関連付けられることになる。
 オプティマイザ207は、好ましくは、汎用コンパイラ・オプティマイザの一形式である。このオプティマイザは、実行時に実行しており、このため、典型的なコンパイル時オプティマイザより短い時間で実行しなければならないことに気づいているが、それ以外には、決してそれが最適化しているバイナリ・アプリケーション専用のものではない。
 動的オプティマイザ207は通常、操作するためにそれが呼び出された「フラグメント」を含む特定の命令シーケンスを分析し、たとえば、基礎をなすハードウェアがそのコードのコンパイル対象であった特定のモデルではない場合に発生しうる待ち時間をカバーするように命令シーケンスをグループ化し直すことにより、パフォーマンスを改善する。動的オプティマイザ207は通常、動的コンパイル・システムとともにあらかじめパッケージ化される。たとえば、これは、コンピュータのオペレーティング・システム(OS)の一部として出荷される可能性もある。
 いずれのしきい値にも達しない限り、モニタ・スレッド205は、インストルメント化出力を検査し続けることになる。
 あるしきい値に達した場合、ステップ306では、バイナリ・アプリケーションのうち、そのしきい値に達する原因になった部分をインストルメント化バイナリから抽出し(たとえば、フラグメント・マネージャ202によってコピーし)、最適化のために動的オプティマイザ207に送り、元の(未再最適化)フラグメントが本来実行されたと思われるときに、最適化のあとで今後の使用のためにフラグメント・キャッシュ201bに記憶する。
 次に、ステップ308では、オプティマイザ207によりそのフラグメントを最適化する。前述の通り、適用される最適化プロセスは、実行時のコード・シーケンスの最適化に適用可能な、いくつかの標準的な最適化技法の1つである。好ましいタイプの最適化は、コンパイル時に静的に既知ではない情報を活用するもの(たとえば、所与の変数が実行時に一定値を有するもの)である。
 そのうえ、それが実際は仮定値を有するという証拠の優越性に基づいて、所与の変数が一定値を有すると推測する最適化を実行することができる。当然のことながら、このような場合、その推測が間違っている場合に備えなければならない。このような考慮は当技術分野では既知のものであるが、この場合、本発明者らは新しい情況でそれを適用することに留意されたい。
 最適化は、たとえば、頻繁に実行されるコード経路からの不必要な分岐の除去、またはそれが現在動作している特定のネットワーク・ノードのアーキテクチャ上の全能力を活用するようにアプリケーションを専門化することを含むことができる。
 基本的に、あるマシンの旧モデル(またはより安価なマシン)上で動作するようにアプリケーションをコンパイルし、そのアプリケーションが現在の事例でそれ以降のマシン(またはより高価なハイエンド・マシン)上で動作している場合、さらに最適化を行う機会がある可能性がある。
 たとえば、新しくより強力な命令が存在する可能性があるか、または、そのアプリケーションの当初のコンパイル対象であったものを上回る命令レベルの並列性(たとえば、より多くの機能ユニット)を現行マシンが有する可能性がある。このような不測の事態(しかもネットワーク化世界では、ますます起こりそうなものになっている)の結果、動的再最適化の重要な機会が得られることになる。したがって、これにより、これらの技法を適用するためのもう1つの理由が得られる。
 すなわち、ネットワーク化世界では、特定のアーキテクチャの最低共通項モデル用にコンパイルするための強い動機が存在する。というのは、そのアプリケーションがネットワーク内の大部分のコンピュータ上で動作可能であるからである。しかし、これは最適化のレベルを下げる(したがって、パフォーマンスを低減する)ための動機をもたらし、本発明の技法は、このようなアプリケーションの実行時間を改善する際に得に有用と思われる。
 図3の方法300は任意選択で、後続のモニタを可能にするためにインストルメンテーション・コードを最適化フラグメントに挿入できるようにする。このようなインストルメンテーション・コードのフラグメントへの自動挿入は周知のものと確信しているので、簡潔さのため、本明細書ではこれ以上説明しない。(とりわけ)前述のBala他の論文では、インストルメンテーションの挿入方法を教示している。
 動的オプティマイザ207によるステップ308の最適化後、ステップ310で最適化フラグメントをフラグメント・キャッシュ201bに記憶する。
 次に、ステップ312では、非最適化バージョンの代わりに最適化フラグメントをインストルメント化バイナリに挿入するので、今後、インストルメント化バイナリを後で実行したときに、それはインストルメント化バイナリの一部として実行されることになる。
 この挿入動作は、たとえば、元のバイナリにパッチを当てて、新たな最適化フラグメントに分岐することにより実行することができ、その最適化フラグメントは、当然のことながら、元の(抽出した)フラグメントに続く命令に分岐して戻る必要があるだろう。本発明を全体として解釈すると、当業者には明白になるように、他の技法も使用することができるだろう。
 任意選択で、インストルメンテーション・コードは、バイナリ・アプリケーションに挿入する前にフラグメントから除去することができる。これに関して、インストルメンテーション・コードは、実際には再挿入されないので、それ自体は除去されない。インストルメンテーションはすっかり様式化され、容易に認識されるので、アプリケーション・コードはインストルメンテーションとは容易に区別することができ、したがって、回避するのは難しいことではない。この通りではない場合でも、インストルメント・エージェントによりインストルメンテーションの位置を既知の(または発見可能な)位置に記録させることは難しいことではないだろう。
 ステップ312で最適化フラグメントを実行バイナリに挿入した後、ステップ313では、インストルメント化バイナリが依然として実行中であるかどうかを判定する。インストルメント化バイナリが依然として実行中である場合(たとえば、ステップ313で「YES」)、プロセスはステップ302にループバックする。インストルメント化バイナリが実行中ではない場合(たとえば、ステップ313で「NO」)、プロセスはステップ314に移行する。
 ステップ314では、インストルメント化バイナリと実行モニタ(シャドウ・スレッド)の実行が終了する。
 したがって、バイナリとシャドウ・スレッドの実行が一斉に終了する。実際は、本発明の重要な特徴の1つは、すべてのステップが実行中に行われることである。
 前述の通り、図3に示す2本の縦の流れは並列動作であることに留意されたい。
 次に、図4に関連して本発明の他の実施形態について述べるが、これは図3のプロセスの改良版であり、特に図3のステップ308で使用することができる。
 すなわち、図3のステップ308では、動的オプティマイザ207がフラグメントを検査し、これを分析して、そのフラグメントを最適化するためにどの最適化を実行することができるかを決定する。最適化するためのこの決定は、その時点で動的オプティマイザが何を観察できるかだけに基づくものである。
 図4の方法400では、動的オプティマイザ207により、より良好な最適化を実行するために、追加の諸ステップを行う。これに関して、オプティマイザがこのような情報そのものを計算する必要なしに、オプティマイザがより迅速に動作できるように、ステップ308で動的オプティマイザ207に追加情報を提供する。しかも、おそらくオプティマイザには、本来は独力で抽出することが困難であると判断されうるような情報を提供することができる。
 具体的には、図4は、アプリケーション・プログラムの静的コンパイル中に収集された情報を使用する動的最適化の方法400を示している。本発明のこの実施形態によれば、動的オプティマイザ207は、コンパイルの時点でインストルメント化バイナリに関して収集された情報を使用することができ、これは本明細書では動的最適化プロセスの「静的コンパイル段階」という。
 静的コンパイラによって生成されたデータ/情報は一般に注釈付きバイナリとして記憶され、これは余分な情報を収容するための拡張部(たとえば、それに添付した注釈)を備えたインストルメント化バイナリにすることができることに留意されたい。
 動的最適化を支援するために静的最適化中に収集可能な情報としては、フロー・グラフ情報、特に、どのラベルが所与の分岐のターゲットであるかと、その実行時の曖昧性除去によってコンパイル時に抑制された最適化を使用可能にすることができる静的データ依存関係を含むことができる。
 この実施形態は、コンパイル時により容易に検出可能であって、したがって、高価な実行時分析を妨げる可能性がある詳細を利用するために特に有益である可能性がある。
 方法400は図4のステップ400Aから始まり、図3に関して前述した方法でコンパイル済みプログラムにインストルメンテーション・コードを挿入する。上記で言及した注釈は、静的プログラム情報を収集することにより、コンパイル時に生成される(特定のサンプル・データ・セットによって実行することにより収集されたプロファイル・データではない)。
 コンパイルは進行し、フロント・エンド、最適化、レジスタ割振り、最終アセンブリなどのコンパイルの様々なフェーズ中に、ステップ402で情報を収集する。
 ステップ404は、有用な情報を収集する様々な時点におけるコンパイラの中間言語(IL)の注釈を表している。
 ステップ406では、静的コンパイル・フェーズによって生成されたバイナリは、上記の開示全体にわたって言及したインストルメンテーションだけでなく、コンパイル時に生成した注釈も含む。これらの注釈は、バイナリ・モジュールに付加されたコード化データ・ストリングの形を取る。
 ステップ410〜414は図3で前述したように進行し、その違いは、注釈付きバイナリに含まれる情報が実行モニタ(シャドウ・プロセス)システムの動的最適化コンポーネントによって配置されることである。変更はバイナリのみに対して行われ、バイナリの実行と同時に行われることに留意されたい。
 それ以上の静的最適化が不要である場合、ステップ402で収集した情報を使用して、ステップ408でインストルメント化バイナリに付加すべき注釈ファイルを作成する。このようなファイルの一例を図5〜7に示す。
 具体的には、図5は、制御フロー・グラフとして知られるコンパイル時データ構造の可視表現500を示している。グラフ内の各ノード(すなわち、1〜12)は基本ブロックを表し、方向を示す線はノード同士を接続する後継エッジを表している。ここに表したプログラムは、算出分岐テーブルを含んでいる。
 図6は、注釈付きバイナリの一部を形成可能なフロー・グラフのコード化表現520を示している。
 図7は、この例の注釈ファイルに含まれると思われる実際のデータ540を表している。動的オプティマイザ207は潜在的にこのデータを使用して、実行時にこのグラフを迅速に再構築することができるだろう。
 その場合、この注釈付きインストルメント化バイナリは、本発明による動的最適化ツール207を備えたマルチプロセッサ・システム上で実行するための準備が整っている。
 ステップ408では、第1のプロセッサまたはプロセッサ・セット上で実際のユーザ・データを使用してプログラムを実行し、それにより、ステップ410で、バイナリ・アプリケーション自体を実行しているプロセッサ(複数も可)とは異なるプロセッサまたはプロセッサ・セット上で、インストルメント化バイナリ・アプリケーション用の実行モニタ・スレッドを創出する。
 ステップ412では、動的オプティマイザは、図3のステップ302〜312に関して前述するように、注釈を利用するように変更された改良済み最適化バイナリを生成するために実行バイナリに含まれるインストルメンテーションによって生成された情報とともに静的最適化中に生成された注釈を使用する。
 図8のプロセス600の流れ図に転ずると、本発明による動的最適化システムの他の実施形態は、最適化すべきバイナリ・アプリケーションの実行中に、以前に頻繁に実行されたバイナリ・アプリケーションの所与の非インストルメント化モジュールを検出する機能を含む。
 このようなモジュールを検出した場合(ステップ610)、本発明は、後続のモニタおよび最適化のためにインストルメンテーション・コードの自動挿入に備えるものである。図8の内容は最適化の特殊ケースと見なすことができ、論理的には図8の諸ステップは図3のボックス306とボックス312の間に収まることに留意されたい。
 潜在的に他のアプリケーション間で「共用」される可能性のあるコードの変更を回避するために、ステップ620でシステムは、元のモジュール(未プロファイル化バイナリ)のコピーを作成し、このように変更されたモジュールのリストを維持する。
 次に、ステップ630は、バイナリをインストルメントするためのメソッドを呼び出す。今後、このモジュールを呼び出したときに、モニタは、インストルメント化バージョンに直ちにスイッチし、それを実行して、実行モニタが読み取るべきプロファイルを生成することができる(ステップ640)。すなわち、ステップ640は、次の呼出し時にインストルメント化バージョンを呼び出すように、「ホット」フラグメントを変更する。
 次に、この方法は、ステップ314で実行が終了するまで、図3のステップ310などに移行するが、その終了時点であるステップ650では、コピーしたバイナリのリストを削除する。
 この技法は、たとえば、ソース・コードが使用不能であるために、そのコンパイルが実現不能であるようなコンポーネントのインストルメンテーションを可能にするものである。バイナリ実行時ライブラリは、このようにして最適化可能なコンポーネントの一例である。
 本発明のこの態様の他の応用例により、レガシー(すなわち、非インストルメント化)バイナリは、上記の自動再コンパイル技法の応用によるプロセッサ構成のアーキテクチャ上の機能強化または改良点の恩恵を享受することができる。
 図9に示すように、本発明の他の実施形態では、IBMの整理番号YOR920010532US1を有し、Nair他による米国特許出願第10/244,434号に記載されているようなホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換するプロセスにおいて、このインストルメント化バイナリが生成される。図9は、エミュレーション・スレッド710と、変換スレッド720と、ホスト・プロセッサ(複数も可)750用にスレッド・スケジューラ740によってスケジューリングされるサービス・スレッド730とを含むシステム700を示している。
 図9に示すこの実施形態では、エミュレーション・システム700には、エミュレーション・システム700の一体部分であって、変換スレッド720の1つである、実行モニタ・スレッドが設けられている。変換スレッドのうちの1つまたは複数を使用して、実行モニタによって選択されるコード・フラグメントを動的に最適化する。
 図9のシステム700では、パフォーマンスを強化するために、頻繁に実行されるコード・シーケンスに動的最適化を施す。このようなシーケンスは、キャッシュしたコードの実行頻度を追跡するためにカウンタを使用するインタプリタ変換スレッドによって挿入されるインストルメンテーション・コードによって識別される。モニタ・スレッドはこれらのカウンタの値を連続的に追跡し、所与のしきい値に達すると、所与のコード・シーケンスについては(それ以上の)最適化が有益である可能性があることをオプティマイザ・スレッドに知らせ、最適化すべきコード・シーケンスを導入したゲスト命令の(エミュレートした)実アドレスを示す。
 上記のハードウェア/ソフトウェア環境に加え、本発明の他の態様では、上記の方法を実行するためのコンピュータ実現方法を含む。一例として、この方法は前述の特定の環境で実現することができる。
 このような方法は、たとえば、ディジタル・データ処理装置によって実施されるように、一連の機械可読命令を実行するようにコンピュータを操作することにより実現することができる。このような命令は、様々なタイプの信号運搬媒体に存在することができる。
 この信号運搬媒体は、たとえば高速アクセス記憶装置によって代表されるように、たとえばCPU内に含まれるRAMを含むことができる。別法として、CPUによって直接または間接的にアクセス可能な磁気データ記憶ディスケット800(図10)などの他の信号運搬媒体に命令を含めることもできる。
 ディスケット800に含まれるか、コンピュータ/CPUまたはその他の場所に含まれるかにかかわらず、DASD記憶装置(たとえば、従来の「ハード・ドライブ」またはRAIDアレイ)、磁気テープ、電子読取専用メモリ(たとえば、ROM、EPROM、またはEEPROM)、光学記憶装置(たとえば、CD−ROM、WORM、DVD、ディジタル光学テープなど)、紙の「パンチ」カードなどの様々な機械可読データ記憶媒体、またはディジタルおよびアナログ通信リンクならびに無線などの伝送媒体を含むその他の適当な信号運搬媒体上に命令を記憶することができる。本発明の例証となる一実施形態では、機械可読命令は、「C」などの言語からコンパイルされたソフトウェア・オブジェクト・コードを含むことができる。
 いくつかの好ましい実施形態に関して本発明を説明してきたが、当業者であれば、特許請求の範囲の精神および範囲内で変更を加えて本発明を実施できることが分かるだろう。
 たとえば、前述の通り、本発明は共用マルチプロセッサ・システム(SMP)に限定されず、分散マルチプロセッサ・システムにおいても有利に適用可能であろう。
 さらに、本出願人の意図は、権利請求中に後日補正された場合でも、すべての特許請求の範囲と同等のものを包含することであることに留意されたい。
 まとめとして、本発明の構成に関して以下の事項を開示する。
 (1)マルチプロセッシング・システムにおける透過動的最適化の方法において、
 前記システムの他のプロセッサ上で動作している実行モニタにより第1のプロセッサ上のアプリケーション・バイナリの実行をモニタするステップと、
 前記システムの前記他のプロセッサ上で実行している実行時オプティマイザにより元のアプリケーション・バイナリの1つまたは複数のセグメントを透過的に最適化するステップとを具備する方法。
 (2)前記システム内の前記第1のプロセッサ上の前記アプリケーション・バイナリのインストルメント化コピーを実行するステップをさらに具備する、上記(1)に記載の方法。
 (3)前記モニタが、前記アプリケーション・バイナリのインストルメント化コピーに含まれるインストルメント化コードを実行することにより生成された実行特性に関して実行される、上記(1)に記載の方法。
 (4)前記最適化が、同時に実行中のアプリケーション・バイナリへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して実行される、上記(1)に記載の方法。
 (5)1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより元の実行アプリケーション・バイナリを同時に変更するステップをさらに具備する、上記(1)に記載の方法。
 (6)前記変更が前記アプリケーション・バイナリのユーザにとって透過的な方法で実行される、上記(5)に記載の方法。
 (7)前記実行アプリケーション・バイナリに挿入する前に最適化部分からインストルメンテーション・コードを除去するステップをさらに具備する、上記(1)に記載の方法。
 (8)インストルメンテーションにより、前記1つまたは複数のセグメントが頻繁に実行されたものと決定するステップをさらに具備する、上記(1)に記載の方法。
 (9)新しいインストルメンテーションを最適化部分に挿入して、前記最新最適化アプリケーション・バイナリの実行特性をモニタし続けるステップをさらに具備する、上記(1)に記載の方法。
 (10)前記最適化が、頻繁に実行されるコード経路からの不必要な分岐の除去を含む、上記(1)に記載の方法。
 (11)前記最適化が、それが動作している特定のネットワーク・ノードのアーキテクチャ上の全能力を活用するようにアプリケーション・バイナリを専門化することを含む、上記(1)に記載の方法。
 (12)前記アプリケーション・バイナリが、コンパイル時に収集され、前記実行時オプティマイザによる使用のために前記バイナリに記憶されたプロファイリング命令およびプログラム・データを含む、上記(1)に記載の方法。
 (13)前記実行アプリケーション・バイナリの少なくとも複数の部分が以前にインストルメント化されていない、上記(1)に記載の方法。
 (14)前記少なくとも複数の部分が、ソース・コードなしのレガシー・バイナリと共用実行時ライブラリのうちの少なくとも一方を含み、前記方法が、
 頻繁に実行されるバイナリをモニタするステップと、
 前記バイナリを分析し、そこに適切なインストルメンテーション・コードを挿入するためにコピーを作成するステップと、
 前記バイナリの今後の呼出し時に、インストルメント化コピーにスイッチし、その実行を続行するステップとをさらに具備する、上記(13)に記載の方法。
 (15)前記バイナリが、実行されていない間に分析される、上記(14)に記載の方法。
 (16)前記システムが、分散共用メモリを介して通信する複数ノードのクラスタを含む、上記(1)に記載の方法。
 (17)前記システムが共用マルチプロセッサ・システム(SMP)を含む、上記(1)に記載の方法。
 (18)前記インストルメント化アプリケーション・バイナリが、ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換するプロセス中に生成される、上記(2)に記載の方法。
 (19)マルチプロセッサ・コンピューティング環境がその実行環境についてアプリケーションの同時動的最適化を実行するための方法において、
 システム内の第1のプロセッサ上で前記アプリケーションのインストルメント化コピーを実行するステップと、
 前記システムの他のプロセッサ上で動作している実行モニタにより前記アプリケーションの実行をモニタするステップであって、前記モニタが前記アプリケーションの前記インストルメント化コピーに含まれるインストルメンテーション・コードを実行することにより生成された実行特性に関して実行されるステップと、
 前記システムの他のプロセッサ上で実行している実行時オプティマイザにより前記元のアプリケーションの1つまたは複数のセグメントを最適化するステップであって、前記最適化が、同時に実行中のアプリケーションへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して実行されるステップと、
 1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより前記元の実行アプリケーションを変更するステップであって、前記変更が前記アプリケーションのユーザにとって透過的な方法で実行されるステップとを具備する方法。
 (20)マルチプロセッサ・システム内でその実行環境についてアプリケーションの同時動的最適化を実行するための方法において、
 個別プロセッサ内でまたは複数プロセッサにわたって動作している個別プロセスとして動作している実行モニタにより、第1のプロセッサ内で動作しているプログラムまたはアプリケーションのそれぞれの実行をモニタするステップと、
 それが実行しているバイナリ・コードにより、前記バイナリ・コードの実行特性のプロファイル・データを作成するステップであって、前記バイナリ・コードがパフォーマンスをモニタするためのインストルメンテーション・コードを含むステップと、
 前記実行モニタにより、前記プロファイル・データを連続的に評価するステップと、
 所与のしきい条件を満足するときに、動的オプティマイザを呼び出して、頻繁に実行するコード・フラグメントを最適化するステップとを具備し、
 その後続実行で使用するために実行中の命令ストリームに前記最適化コード・フラグメントが挿入される方法。
 (21)前記マルチプロセッサ・システム内の余分な処理サイクルを使用して、実行中のアプリケーションの実行特性を観察し、前記実行中のアプリケーションを透過的に変更して、そのパフォーマンスを改善する、上記(20)に記載の方法。
 (22)新たに挿入したコード・フラグメントが、いかなるインストルメンテーションも含まない、上記(20)に記載の方法。
 (23)新たに挿入したコード・フラグメントが、前記アプリケーションの実行特性におけるその他の変更を検出するために再インストルメント化コードを含む、上記(20)に記載の方法。
 (24)共用マルチプロセッシング(SMP)システム内の透過動的最適化の方法において、
 第1のプロセッサ上でアプリケーション・バイナリを実行するステップと、
 前記システム内の他のプロセッサ上で前記実行の挙動をモニタするステップと、
 前記アプリケーション・バイナリが実行されている間に前記アプリケーション・バイナリの実行を最適化するステップとを具備する方法。
 (25)前記アプリケーション・バイナリがインストルメント化される、上記(24)に記載の方法。
 (26)前記実行アプリケーション・バイナリの少なくとも一部が以前にインストルメント化されていない、上記(24)に記載の方法。
 (27)マルチプロセッシング・システム内の透過動的最適化のためのシステムにおいて、
 第1のプロセッサ上でアプリケーション・バイナリの実行をモニタするための実行モニタであって、前記システムの他のプロセッサ上で動作する実行モニタを具備し、
 前記実行モニタが、前記モニタと同時に、前記元のアプリケーション・バイナリの1つまたは複数のセグメントを最適化するための動的オプティマイザを含み、前記オプティマイザが前記システムの前記他のプロセッサ上で実行されるシステム。
 (28)前記実行モニタが、前記インストルメント化バイナリ・アプリケーションの動的再最適化フラグメントを記憶するためのフラグメント・キャッシュを含む、上記(27)に記載のシステム。
 (29)前記実行モニタが、前記アプリケーション・バイナリのインストルメント化コピーに含まれるインストルメンテーション・コードを実行することにより生成された実行特性に関して前記モニタを実行する、上記(27)に記載のシステム。
 (30)前記動的オプティマイザが、同時に実行中のアプリケーション・バイナリへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して前記最適化を実行する、上記(27)に記載のシステム。
 (31)前記実行モニタが、1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより前記元の実行アプリケーション・バイナリを同時に変更する、上記(27)に記載のシステム。
 (32)前記変更が前記アプリケーション・バイナリのユーザにとって透過的な方法で実行される、上記(31)に記載のシステム。
 (33)前記実行モニタが、前記実行アプリケーション・バイナリに挿入する前に最適化部分から前記インストルメンテーション・コードを除去する、上記(27)に記載のシステム。
 (34)前記実行モニタが、新しいインストルメンテーションを最適化部分に挿入して、前記最新最適化アプリケーション・バイナリの実行特性をモニタし続ける、上記(27)に記載のシステム。
 (35)前記動的オプティマイザが、頻繁に実行されるコード経路から不必要な分岐を除去する、上記(27)に記載のシステム。
 (36)前記動的オプティマイザが、それが動作している特定のネットワーク・ノードのアーキテクチャ上の全能力を活用するようにアプリケーション・バイナリを専門化する、上記(27)に記載のシステム。
 (37)前記アプリケーション・バイナリが、コンパイル時に収集され、前記動的オプティマイザによる使用のために前記バイナリに記憶されたプロファイリング命令および何らかのプログラム・データを含む、上記(27)に記載のシステム。
 (38)前記実行アプリケーション・バイナリの少なくとも複数の部分が以前にインストルメント化されていない、上記(27)に記載のシステム。
 (39)前記少なくとも複数の部分が、ソース・コードなしのレガシー・バイナリと共用実行時ライブラリのうちの少なくとも一方を含み、前記システムが、
 頻繁に実行されるバイナリをモニタするための手段と、
 前記バイナリを分析し、そこに適切なインストルメンテーション・コードを挿入するためにコピーを作成するための手段と、
 前記バイナリの今後の呼出し時に、インストルメント化コピーにスイッチし、その実行を続行するための手段とをさらに具備する、上記(38)に記載のシステム。
 (40)前記バイナリが、実行されていない間に分析される、上記(39)に記載のシステム。
 (41)分散共用メモリを介して通信する複数ノードのクラスタをさらに含む、上記(27)に記載のシステム。
 (42)前記システムが共用マルチプロセッサ・システム(SMP)を含む、上記(27)に記載のシステム。
 (43)インストルメント化アプリケーション・バイナリが、ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換するプロセス中に生成される、上記(28)に記載のシステム。
 (44)前記実行モニタが前記第1のプロセッサ専用になっている、上記(27)に記載のシステム。
 (45)前記実行モニタが、
 前記フラグメント・キャッシュ内のフラグメントを管理するためのフラグメント・マネージャと、
 前記フラグメント・マネージャに入力を提供するために、所定の条件を満足するときに前記実行アプリケーション・バイナリによってトリガされるプロファイル・モニタとをさらに含み、
 前記動的オプティマイザが、前記フラグメント・マネージャを介して前記フラグメント・キャッシュに最適化フラグメントを戻し、
 前記実行モニタが、最適化のために前記アプリケーション・バイナリのどの部分を抽出すべきかを決定し、前記命令のコピーを作成し、前記動的オプティマイザが前記コピーを参照してそれに変更を加えられるように前記命令を記憶することにより、前記アプリケーション・バイナリの前記部分を抽出し、
 前記実行モニタが、特定のフラグメントを最適化するために関連するプロファイル情報を前記動的オプティマイザに提供する、上記(28)に記載のシステム。
 (46)マルチプロセッシング・システム内の透過動的最適化の方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、
 前記システムの他のプロセッサ上で動作している実行モニタにより、第1のプロセッサ上でアプリケーション・バイナリの実行をモニタするステップと、
 前記システムの前記他のプロセッサ上で実行される実行時オプティマイザにより、前記元のアプリケーション・バイナリの1つまたは複数のセグメントを透過的に最適化するステップとを具備する信号運搬媒体。
 (47)複数のホスト・プロセッサを有するマルチプロセッサ・システム用のエミュレーション・システムにおいて、
 ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換する間にインストルメント化バイナリを生成するための実行モニタを具備し、
 前記実行モニタ・スレッドが、複数の変換スレッドのうちの1つを具備し、
 前記変換スレッドの少なくとも1つを使用して、前記実行モニタが選択したコード・フラグメントを動的に最適化する、エミュレーション・システム。
 (48)前記変換スレッドのうちの1つがオプティマイザ・スレッドを具備し、
 頻繁に実行されるコード・シーケンスを動的に最適化して、パフォーマンスを強化し、
 前記シーケンスが、キャッシュしたコードの実行頻度をモニタするインタプリタ変換スレッドによって挿入されるインストルメンテーション・コードによって識別され、
 所定のしきい値に達したときに、所与のコード・シーケンスが最適化の候補であることを前記オプティマイザ・スレッドに知らせ、最適化すべきコード・シーケンスを導入したゲスト命令のエミュレートした実アドレスが前記オプティマイザ・スレッドに提供されるように、モニタ・スレッドが前記頻度を連続的に追跡する、上記(47)に記載のエミュレーション・システム。
 (49)マルチプロセッサ・システム用のエミュレーション・システムにおいて、
 複数のスレッドを具備し、変換スレッドのうちの1つが実行モニタを具備し、前記変換スレッドの少なくとも1つが動的オプティマイザを具備する、エミュレーション・システム。
本発明を実行するためのマルチプロセッシング・システム100を示すシステム図である。 本発明によりインストルメント化バイナリ201aを実行するためのプロセッサ201と、動的オプティマイザ207を実行するためのプロセッサ203を示す機能強化図200である。 本発明による動的最適化のプロセス300を示す流れ図である。 静的最適化プロセス中に収集した情報を利用するように適合させた本発明の動的オプティマイザ用のプロセス400の代替実施形態を示す流れ図であり、具体的には、コンパイル時に収集したデータは、実行モニタの動的オプティマイザ・コンポーネントにより実行時に使用するために実行可能コードに記憶されることを示す図である。 図4の方法400中に作成した注釈ファイルを示す図であり、具体的には、制御フロー・グラフとして知られるコンパイル時データ構造の可視表現である。 図4の方法400中に作成した注釈ファイルを示す図であり、具体的には、注釈付きバイナリの一部を形成可能なフロー・グラフのコード化表現を示す図である。 図4の方法400中に作成した注釈ファイルを示す図であり、具体的には、図6の例に関する注釈ファイルに含まれると思われる実際のデータを表す図である。 静的最適化中にインストルメント化されていないバイナリ・アプリケーションの動的最適化を可能にする、本発明の他の実施形態を示す図である。 IBMの整理番号YOR920010532US1を有する前述の米国特許出願第10/244,434号に記載されているようなエミュレータとともに使用する本発明の一実施形態を示す図である。 本発明による方法のプログラムの諸ステップを記憶するための信号運搬媒体800(たとえば、記憶媒体)を示す図である。
符号の説明
101a、201 プロセッサ1
101b プロセッサ2
102 メイン・メモリ
103 オペレーティング・システム
104 実行モニタ
201a インストルメント化実行バイナリ
201b フラグメント・キャッシュ
202 フラグメント管理
203 プロセッサn+1
204 プロファイル・モニタ
207 動的オプティマイザ
710 エミュレーション・スレッド
730 サービス・スレッド
740 スレッド・スケジューラ
750 ホスト・プロセッサ1
750 ホスト・プロセッサ2
750 ホスト・プロセッサn

  



Claims (49)

  1.  マルチプロセッシング・システムにおける透過動的最適化の方法において、
     前記システムの他のプロセッサ上で動作している実行モニタにより第1のプロセッサ上のアプリケーション・バイナリの実行をモニタするステップと、
     前記システムの前記他のプロセッサ上で実行している実行時オプティマイザにより元のアプリケーション・バイナリの1つまたは複数のセグメントを透過的に最適化するステップとを具備する方法。
  2.  前記システム内の前記第1のプロセッサ上の前記アプリケーション・バイナリのインストルメント化コピーを実行するステップをさらに具備する、請求項1に記載の方法。
  3.  前記モニタが、前記アプリケーション・バイナリのインストルメント化コピーに含まれるインストルメント化コードを実行することにより生成された実行特性に関して実行される、請求項1に記載の方法。
  4.  前記最適化が、同時に実行中のアプリケーション・バイナリへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して実行される、請求項1に記載の方法。
  5.  1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより元の実行アプリケーション・バイナリを同時に変更するステップをさらに具備する、請求項1に記載の方法。
  6.  前記変更が前記アプリケーション・バイナリのユーザにとって透過的な方法で実行される、請求項5に記載の方法。
  7.  前記実行アプリケーション・バイナリに挿入する前に最適化部分からインストルメンテーション・コードを除去するステップをさらに具備する、請求項1に記載の方法。
  8.  インストルメンテーションにより、前記1つまたは複数のセグメントが頻繁に実行されたものと決定するステップをさらに具備する、請求項1に記載の方法。
  9.  新しいインストルメンテーションを最適化部分に挿入して、前記最新最適化アプリケーション・バイナリの実行特性をモニタし続けるステップをさらに具備する、請求項1に記載の方法。
  10.  前記最適化が、頻繁に実行されるコード経路からの不必要な分岐の除去を含む、請求項1に記載の方法。
  11.  前記最適化が、それが動作している特定のネットワーク・ノードのアーキテクチャ上の全能力を活用するようにアプリケーション・バイナリを専門化することを含む、請求項1に記載の方法。
  12.  前記アプリケーション・バイナリが、コンパイル時に収集され、前記実行時オプティマイザによる使用のために前記バイナリに記憶されたプロファイリング命令およびプログラム・データを含む、請求項1に記載の方法。
  13.  前記実行アプリケーション・バイナリの少なくとも複数の部分が以前にインストルメント化されていない、請求項1に記載の方法。
  14.  前記少なくとも複数の部分が、ソース・コードなしのレガシー・バイナリと共用実行時ライブラリのうちの少なくとも一方を含み、前記方法が、
     頻繁に実行されるバイナリをモニタするステップと、
     前記バイナリを分析し、そこに適切なインストルメンテーション・コードを挿入するためにコピーを作成するステップと、
     前記バイナリの今後の呼出し時に、インストルメント化コピーにスイッチし、その実行を続行するステップとをさらに具備する、請求項13に記載の方法。
  15.  前記バイナリが、実行されていない間に分析される、請求項14に記載の方法。
  16.  前記システムが、分散共用メモリを介して通信する複数ノードのクラスタを含む、請求項1に記載の方法。
  17.  前記システムが共用マルチプロセッサ・システム(SMP)を含む、請求項1に記載の方法。
  18.  前記インストルメント化アプリケーション・バイナリが、ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換するプロセス中に生成される、請求項2に記載の方法。
  19.  マルチプロセッサ・コンピューティング環境がその実行環境についてアプリケーションの同時動的最適化を実行するための方法において、
     システム内の第1のプロセッサ上で前記アプリケーションのインストルメント化コピーを実行するステップと、
     前記システムの他のプロセッサ上で動作している実行モニタにより前記アプリケーションの実行をモニタするステップであって、前記モニタが前記アプリケーションの前記インストルメント化コピーに含まれるインストルメンテーション・コードを実行することにより生成された実行特性に関して実行されるステップと、
     前記システムの他のプロセッサ上で実行している実行時オプティマイザにより前記元のアプリケーションの1つまたは複数のセグメントを最適化するステップであって、前記最適化が、同時に実行中のアプリケーションへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して実行されるステップと、
     1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより前記元の実行アプリケーションを変更するステップであって、前記変更が前記アプリケーションのユーザにとって透過的な方法で実行されるステップとを具備する方法。
  20.  マルチプロセッサ・システム内でその実行環境についてアプリケーションの同時動的最適化を実行するための方法において、
     個別プロセッサ内でまたは複数プロセッサにわたって動作している個別プロセスとして動作している実行モニタにより、第1のプロセッサ内で動作しているプログラムまたはアプリケーションのそれぞれの実行をモニタするステップと、
     それが実行しているバイナリ・コードにより、前記バイナリ・コードの実行特性のプロファイル・データを作成するステップであって、前記バイナリ・コードがパフォーマンスをモニタするためのインストルメンテーション・コードを含むステップと、
     前記実行モニタにより、前記プロファイル・データを連続的に評価するステップと、
     所与のしきい条件を満足するときに、動的オプティマイザを呼び出して、頻繁に実行するコード・フラグメントを最適化するステップとを具備し、
     その後続実行で使用するために実行中の命令ストリームに前記最適化コード・フラグメントが挿入される方法。
  21.  前記マルチプロセッサ・システム内の余分な処理サイクルを使用して、実行中のアプリケーションの実行特性を観察し、前記実行中のアプリケーションを透過的に変更して、そのパフォーマンスを改善する、請求項20に記載の方法。
  22.  新たに挿入したコード・フラグメントが、いかなるインストルメンテーションも含まない、請求項20に記載の方法。
  23.  新たに挿入したコード・フラグメントが、前記アプリケーションの実行特性におけるその他の変更を検出するために再インストルメント化コードを含む、請求項20に記載の方法。
  24.  共用マルチプロセッシング(SMP)システム内の透過動的最適化の方法において、
     第1のプロセッサ上でアプリケーション・バイナリを実行するステップと、
     前記システム内の他のプロセッサ上で前記実行の挙動をモニタするステップと、
     前記アプリケーション・バイナリが実行されている間に前記アプリケーション・バイナリの実行を最適化するステップとを具備する方法。
  25.  前記アプリケーション・バイナリがインストルメント化される、請求項24に記載の方法。
  26.  前記実行アプリケーション・バイナリの少なくとも一部が以前にインストルメント化されていない、請求項24に記載の方法。
  27.  マルチプロセッシング・システム内の透過動的最適化のためのシステムにおいて、
     第1のプロセッサ上でアプリケーション・バイナリの実行をモニタするための実行モニタであって、前記システムの他のプロセッサ上で動作する実行モニタを具備し、
     前記実行モニタが、前記モニタと同時に、前記元のアプリケーション・バイナリの1つまたは複数のセグメントを最適化するための動的オプティマイザを含み、前記オプティマイザが前記システムの前記他のプロセッサ上で実行されるシステム。
  28.  前記実行モニタが、前記インストルメント化バイナリ・アプリケーションの動的再最適化フラグメントを記憶するためのフラグメント・キャッシュを含む、請求項27に記載のシステム。
  29.  前記実行モニタが、前記アプリケーション・バイナリのインストルメント化コピーに含まれるインストルメンテーション・コードを実行することにより生成された実行特性に関して前記モニタを実行する、請求項27に記載のシステム。
  30.  前記動的オプティマイザが、同時に実行中のアプリケーション・バイナリへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して前記最適化を実行する、請求項27に記載のシステム。
  31.  前記実行モニタが、1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより前記元の実行アプリケーション・バイナリを同時に変更する、請求項27に記載のシステム。
  32.  前記変更が前記アプリケーション・バイナリのユーザにとって透過的な方法で実行される、請求項31に記載のシステム。
  33.  前記実行モニタが、前記実行アプリケーション・バイナリに挿入する前に最適化部分から前記インストルメンテーション・コードを除去する、請求項27に記載のシステム。
  34.  前記実行モニタが、新しいインストルメンテーションを最適化部分に挿入して、前記最新最適化アプリケーション・バイナリの実行特性をモニタし続ける、請求項27に記載のシステム。
  35.  前記動的オプティマイザが、頻繁に実行されるコード経路から不必要な分岐を除去する、請求項27に記載のシステム。
  36.  前記動的オプティマイザが、それが動作している特定のネットワーク・ノードのアーキテクチャ上の全能力を活用するようにアプリケーション・バイナリを専門化する、請求項27に記載のシステム。
  37.  前記アプリケーション・バイナリが、コンパイル時に収集され、前記動的オプティマイザによる使用のために前記バイナリに記憶されたプロファイリング命令および何らかのプログラム・データを含む、請求項27に記載のシステム。
  38.  前記実行アプリケーション・バイナリの少なくとも複数の部分が以前にインストルメント化されていない、請求項27に記載のシステム。
  39.  前記少なくとも複数の部分が、ソース・コードなしのレガシー・バイナリと共用実行時ライブラリのうちの少なくとも一方を含み、前記システムが、
     頻繁に実行されるバイナリをモニタするための手段と、
     前記バイナリを分析し、そこに適切なインストルメンテーション・コードを挿入するためにコピーを作成するための手段と、
     前記バイナリの今後の呼出し時に、インストルメント化コピーにスイッチし、その実行を続行するための手段とをさらに具備する、請求項38に記載のシステム。
  40.  前記バイナリが、実行されていない間に分析される、請求項39に記載のシステム。
  41.  分散共用メモリを介して通信する複数ノードのクラスタをさらに含む、請求項27に記載のシステム。
  42.  前記システムが共用マルチプロセッサ・システム(SMP)を含む、請求項27に記載のシステム。
  43.  インストルメント化アプリケーション・バイナリが、ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換するプロセス中に生成される、請求項28に記載のシステム。
  44.  前記実行モニタが前記第1のプロセッサ専用になっている、請求項27に記載のシステム。
  45.  前記実行モニタが、
     前記フラグメント・キャッシュ内のフラグメントを管理するためのフラグメント・マネージャと、
     前記フラグメント・マネージャに入力を提供するために、所定の条件を満足するときに前記実行アプリケーション・バイナリによってトリガされるプロファイル・モニタとをさらに含み、
     前記動的オプティマイザが、前記フラグメント・マネージャを介して前記フラグメント・キャッシュに最適化フラグメントを戻し、
     前記実行モニタが、最適化のために前記アプリケーション・バイナリのどの部分を抽出すべきかを決定し、前記命令のコピーを作成し、前記動的オプティマイザが前記コピーを参照してそれに変更を加えられるように前記命令を記憶することにより、前記アプリケーション・バイナリの前記部分を抽出し、
     前記実行モニタが、特定のフラグメントを最適化するために関連するプロファイル情報を前記動的オプティマイザに提供する、請求項28に記載のシステム。
  46.  マルチプロセッシング・システム内の透過動的最適化の方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、
     前記システムの他のプロセッサ上で動作している実行モニタにより、第1のプロセッサ上でアプリケーション・バイナリの実行をモニタするステップと、
     前記システムの前記他のプロセッサ上で実行される実行時オプティマイザにより、前記元のアプリケーション・バイナリの1つまたは複数のセグメントを透過的に最適化するステップとを具備する信号運搬媒体。
  47.  複数のホスト・プロセッサを有するマルチプロセッサ・システム用のエミュレーション・システムにおいて、
     ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換する間にインストルメント化バイナリを生成するための実行モニタを具備し、
     前記実行モニタ・スレッドが、複数の変換スレッドのうちの1つを具備し、
     前記変換スレッドの少なくとも1つを使用して、前記実行モニタが選択したコード・フラグメントを動的に最適化する、エミュレーション・システム。
  48.  前記変換スレッドのうちの1つがオプティマイザ・スレッドを具備し、
     頻繁に実行されるコード・シーケンスを動的に最適化して、パフォーマンスを強化し、
     前記シーケンスが、キャッシュしたコードの実行頻度をモニタするインタプリタ変換スレッドによって挿入されるインストルメンテーション・コードによって識別され、
     所定のしきい値に達したときに、所与のコード・シーケンスが最適化の候補であることを前記オプティマイザ・スレッドに知らせ、最適化すべきコード・シーケンスを導入したゲスト命令のエミュレートした実アドレスが前記オプティマイザ・スレッドに提供されるように、モニタ・スレッドが前記頻度を連続的に追跡する、請求項47に記載のエミュレーション・システム。
  49.  マルチプロセッサ・システム用のエミュレーション・システムにおいて、
     複数のスレッドを具備し、変換スレッドのうちの1つが実行モニタを具備し、前記変換スレッドの少なくとも1つが動的オプティマイザを具備する、エミュレーション・システム。
JP2003310695A 2002-09-17 2003-09-02 マルチプロセッシング環境における透過動的最適化のための方法およびシステム Expired - Fee Related JP4003830B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/244,564 US7146607B2 (en) 2002-09-17 2002-09-17 Method and system for transparent dynamic optimization in a multiprocessing environment

Publications (2)

Publication Number Publication Date
JP2004110824A true JP2004110824A (ja) 2004-04-08
JP4003830B2 JP4003830B2 (ja) 2007-11-07

Family

ID=31991915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003310695A Expired - Fee Related JP4003830B2 (ja) 2002-09-17 2003-09-02 マルチプロセッシング環境における透過動的最適化のための方法およびシステム

Country Status (3)

Country Link
US (1) US7146607B2 (ja)
JP (1) JP4003830B2 (ja)
CN (1) CN1294486C (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010108086A (ja) * 2008-10-28 2010-05-13 Nec Corp Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
CN102073544A (zh) * 2011-01-28 2011-05-25 武汉天喻信息产业股份有限公司 一种基于页操作的EEPROM cache方法
KR20120063496A (ko) * 2009-09-02 2012-06-15 어드밴스드 마이크로 디바이시즈, 인코포레이티드 경량 서비스 기반의 동적 바이너리 재작성기 프레임워크
WO2012120654A1 (ja) * 2011-03-08 2012-09-13 富士通株式会社 タスクスケジューリング方法およびマルチコアシステム
JP2013061810A (ja) * 2011-09-13 2013-04-04 Fujitsu Ltd 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム
WO2013119441A1 (en) * 2012-02-07 2013-08-15 Microsoft Corporation Transferring program execution from compiled code to interpreted code
US8819649B2 (en) 2011-09-09 2014-08-26 Microsoft Corporation Profile guided just-in-time (JIT) compiler and byte code generation
JP2017527020A (ja) * 2014-07-25 2017-09-14 インテル・コーポレーション ゲストイメージからのコードを実行するための実行時オプティマイザを実行するシステム変換器
JP2018106590A (ja) * 2016-12-28 2018-07-05 日本電気株式会社 情報処理装置、情報処理方法、およびプログラム
US10664393B2 (en) 2017-11-20 2020-05-26 Fujitsu Limited Storage control apparatus for managing pages of cache and computer-readable storage medium storing program
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
JP2022084921A (ja) * 2012-11-09 2022-06-07 コーヒレント・ロジックス・インコーポレーテッド 多重プロセッサシステムのためのリアルタイム分析及び制御

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7086043B2 (en) * 2002-10-29 2006-08-01 International Business Machines Corporation Compiler apparatus and method for unrolling a superblock in a computer program
US20050028148A1 (en) * 2003-08-01 2005-02-03 Sun Microsystems, Inc. Method for dynamic recompilation of a program
US7269830B2 (en) * 2003-09-16 2007-09-11 Sun Microsystems, Inc. Methods and hardware for safe memory allocation in arbitrary program environments
US20050125784A1 (en) * 2003-11-13 2005-06-09 Rhode Island Board Of Governors For Higher Education Hardware environment for low-overhead profiling
US20050144602A1 (en) * 2003-12-12 2005-06-30 Tin-Fook Ngai Methods and apparatus to compile programs to use speculative parallel threads
JP3879002B2 (ja) * 2003-12-26 2007-02-07 国立大学法人宇都宮大学 自己最適化演算装置
US7730469B1 (en) * 2004-05-04 2010-06-01 Oracle America, Inc. Method and system for code optimization
US7480902B2 (en) * 2004-07-08 2009-01-20 Intel Corporation Unwind information for optimized programs
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US20060026510A1 (en) * 2004-07-30 2006-02-02 International Business Machines Corporation Method for optimizing markup language transformations using a fragment data cache
US8161461B2 (en) * 2005-03-24 2012-04-17 Hewlett-Packard Development Company, L.P. Systems and methods for evaluating code usage
US7383396B2 (en) * 2005-05-12 2008-06-03 International Business Machines Corporation Method and apparatus for monitoring processes in a non-uniform memory access (NUMA) computer system
US20070061429A1 (en) * 2005-09-12 2007-03-15 Microsoft Corporation Optimizing utilization of application resources
US8769495B1 (en) * 2005-09-30 2014-07-01 Sony Computer Entertainment Inc. Systems and methods for debugging in a multiprocessor environment
US7926042B2 (en) * 2005-10-31 2011-04-12 Hewlett-Packard Development Company, L.P. System and method for dynamic instrumentation
GB2435335A (en) * 2006-02-21 2007-08-22 Sony Computer Entertainment Inc Multi-processor emulation by a multi-processor
US7827541B2 (en) * 2006-03-16 2010-11-02 International Business Machines Corporation Method and apparatus for profiling execution of code using multiple processors
US20070260849A1 (en) * 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for executing instrumentation code using a target processor
US8245199B2 (en) * 2006-05-05 2012-08-14 International Business Machines Corporation Selectively marking and executing instrumentation code
US7783866B2 (en) * 2006-05-05 2010-08-24 International Business Machines Corporation Method and apparatus for executing instrumentation code using processor instructions
US7865703B2 (en) * 2006-05-05 2011-01-04 International Business Machines Corporation Method and apparatus for executing instrumentation code within alternative processor resources
US7814466B2 (en) * 2006-05-05 2010-10-12 International Business Machines Corporation Method and apparatus for graphically marking instructions for instrumentation with hardware assistance
US20070261032A1 (en) * 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for hardware assisted profiling of code
US8132169B2 (en) * 2006-07-21 2012-03-06 International Business Machines Corporation System and method for dynamically partitioning an application across multiple processing elements in a heterogeneous processing environment
EP2581805A3 (en) * 2006-08-31 2015-10-21 ATI Technologies ULC Video decoder and/or battery-powered device with reduced power consumption and methods thereof
US7844959B2 (en) * 2006-09-29 2010-11-30 Microsoft Corporation Runtime optimization of distributed execution graph
US20080082644A1 (en) * 2006-09-29 2008-04-03 Microsoft Corporation Distributed parallel computing
US8201142B2 (en) * 2006-09-29 2012-06-12 Microsoft Corporation Description language for structured graphs
US8020155B2 (en) * 2006-11-28 2011-09-13 Oracle America, Inc. Mechanism for optimizing function execution
US7870543B2 (en) * 2006-12-08 2011-01-11 Hewlett-Packard Development Company, L.P. Dynamic tuning of user-space process
US8621468B2 (en) 2007-04-26 2013-12-31 Microsoft Corporation Multi core optimizations on a binary using static and run time analysis
US8060869B1 (en) * 2007-06-08 2011-11-15 Oracle America, Inc. Method and system for detecting memory problems in user programs
US7996648B2 (en) * 2007-12-19 2011-08-09 Microsoft Corporation Coupled symbiotic operating systems
US8078792B2 (en) * 2008-01-22 2011-12-13 Advanced Micro Devices, Inc. Separate page table base address for minivisor
US8966465B2 (en) 2008-02-12 2015-02-24 Oracle International Corporation Customization creation and update for multi-layer XML customization
EP2090983A1 (en) 2008-02-15 2009-08-19 Siemens Aktiengesellschaft Determining an architecture for executing code in a multi architecture environment
US8453129B2 (en) * 2008-04-24 2013-05-28 International Business Machines Corporation Using hardware interrupts to drive dynamic binary code recompilation
US8423961B2 (en) * 2008-06-06 2013-04-16 Microsoft Corporation Simulating operations through out-of-process execution
US8261273B2 (en) * 2008-09-02 2012-09-04 International Business Machines Corporation Assigning threads and data of computer program within processor having hardware locality groups
US8996658B2 (en) 2008-09-03 2015-03-31 Oracle International Corporation System and method for integration of browser-based thin client applications within desktop rich client architecture
US8799319B2 (en) 2008-09-19 2014-08-05 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US20100094816A1 (en) * 2008-09-09 2010-04-15 Lockheed Martin Corporation Safety-Critical Data Checking In Object-Oriented Systems
US9122520B2 (en) 2008-09-17 2015-09-01 Oracle International Corporation Generic wait service: pausing a BPEL process
US8930894B2 (en) * 2008-10-08 2015-01-06 Oracle America, Inc. Method and system for executing an executable file
TWI382515B (zh) * 2008-10-20 2013-01-11 Accton Wireless Broadband Corp 無線收發模組
US8239538B2 (en) 2008-11-21 2012-08-07 Samsung Electronics Co., Ltd. Execution allocation cost assessment for computing systems and environments including elastic computing systems and environments
US9052958B2 (en) * 2008-11-21 2015-06-09 Samsung Electronics Co., Ltd. Extending the capability of computing devices by using dynamically scalable external resources
US9250973B2 (en) * 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
WO2010109751A1 (ja) * 2009-03-25 2010-09-30 日本電気株式会社 コンパイルシステム、コンパイル方法およびコンパイルプログラムを格納した記憶媒体
US8661455B2 (en) * 2009-04-21 2014-02-25 International Business Machines Corporation Performance event triggering through direct interthread communication on a network on chip
US8756564B2 (en) * 2009-05-29 2014-06-17 International Business Machines Corporation Techniques for providing environmental impact information associated with code
US9207921B2 (en) * 2009-06-22 2015-12-08 Oracle America, Inc. Fault tolerant compilation with automatic optimization adjustment
US8601534B2 (en) * 2009-07-02 2013-12-03 Samsung Electronics Co., Ltd. Securely using service providers in elastic computing systems and environments
US8560465B2 (en) 2009-07-02 2013-10-15 Samsung Electronics Co., Ltd Execution allocation cost assessment for computing systems and environments including elastic computing systems and environments
CA2672337C (en) * 2009-07-15 2017-01-03 Ibm Canada Limited - Ibm Canada Limitee Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis
JPWO2011018827A1 (ja) * 2009-08-13 2013-01-17 株式会社日立製作所 実行環境におけるアプリケーションの適性を評価するシステム及び方法
US8635606B2 (en) * 2009-10-13 2014-01-21 Empire Technology Development Llc Dynamic optimization using a resource cost registry
US8856794B2 (en) * 2009-10-13 2014-10-07 Empire Technology Development Llc Multicore runtime management using process affinity graphs
US8627300B2 (en) * 2009-10-13 2014-01-07 Empire Technology Development Llc Parallel dynamic optimization
US8892931B2 (en) 2009-10-20 2014-11-18 Empire Technology Development Llc Power channel monitor for a multicore processor
US8645934B2 (en) 2010-05-06 2014-02-04 International Business Machines Corporation Simultaneous compiler binary optimizations
US20110289485A1 (en) * 2010-05-21 2011-11-24 International Business Machines Corporation Software Trace Collection and Analysis Utilizing Direct Interthread Communication On A Network On Chip
US10203974B2 (en) * 2010-12-20 2019-02-12 Microsoft Technology Licensing, Llc Probe insertion via background virtual machine
US9495136B2 (en) * 2011-01-28 2016-11-15 International Business Machines Corporation Using aliasing information for dynamic binary optimization
US8479295B2 (en) * 2011-03-30 2013-07-02 Intel Corporation Method and apparatus for transparently instrumenting an application program
US8954942B2 (en) * 2011-09-30 2015-02-10 Oracle International Corporation Optimizations using a BPEL compiler
US9134980B1 (en) * 2012-05-01 2015-09-15 Amazon Technologies, Inc. Compiler optimization in a computing environment
CN104350465B (zh) * 2012-06-11 2018-02-16 英派尔科技开发有限公司 调整计算机程序的动态优化
GB2504496A (en) * 2012-07-31 2014-02-05 Ibm Removing code instrumentation based on the comparison between collected performance data and a threshold
CN103678110B (zh) * 2012-09-26 2016-03-30 国际商业机器公司 提供修改相关信息的方法和装置
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US20130227529A1 (en) * 2013-03-15 2013-08-29 Concurix Corporation Runtime Memory Settings Derived from Trace Data
JP6127639B2 (ja) * 2013-03-26 2017-05-17 富士通株式会社 プログラム実行制御プログラム、プログラム実行制御方法
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
CN105210038B (zh) 2013-05-15 2018-10-30 英派尔科技开发有限公司 核亲和性位掩码变换
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
US9772927B2 (en) 2013-11-13 2017-09-26 Microsoft Technology Licensing, Llc User interface for selecting tracing origins for aggregating classes of trace data
US9459849B2 (en) 2014-01-17 2016-10-04 International Business Machines Corporation Adaptive cloud aware just-in-time (JIT) compilation
US9207919B2 (en) * 2014-01-17 2015-12-08 Nvidia Corporation System, method, and computer program product for bulk synchronous binary program translation and optimization
US9569115B2 (en) 2014-03-31 2017-02-14 International Business Machines Corporation Transparent code patching
US9824021B2 (en) 2014-03-31 2017-11-21 International Business Machines Corporation Address translation structures to provide separate translations for instruction fetches and data accesses
US9858058B2 (en) 2014-03-31 2018-01-02 International Business Machines Corporation Partition mobility for partitions with extended code
US9734083B2 (en) 2014-03-31 2017-08-15 International Business Machines Corporation Separate memory address translations for instruction fetches and data accesses
US9720661B2 (en) 2014-03-31 2017-08-01 International Businesss Machines Corporation Selectively controlling use of extended mode features
US9256546B2 (en) 2014-03-31 2016-02-09 International Business Machines Corporation Transparent code patching including updating of address translation structures
US9715449B2 (en) 2014-03-31 2017-07-25 International Business Machines Corporation Hierarchical translation structures providing separate translations for instruction fetches and data accesses
US9483295B2 (en) 2014-03-31 2016-11-01 International Business Machines Corporation Transparent dynamic code optimization
US9846587B1 (en) * 2014-05-15 2017-12-19 Xilinx, Inc. Performance analysis using configurable hardware emulation within an integrated circuit
US9229846B1 (en) * 2014-08-29 2016-01-05 Business Objects Software, Ltd. Testing application code changes using a state assertion framework
KR102128047B1 (ko) * 2014-12-02 2020-06-29 한국전자통신연구원 프로세스 행위 프로파일 생성 장치 및 방법
US9335982B1 (en) * 2015-04-28 2016-05-10 Microsoft Technology Licensing, Llc Processor emulation using multiple translations
CN105139122B (zh) * 2015-08-21 2019-04-23 福建天晴数码有限公司 程序运行时长的统计方法及系统
US9612810B2 (en) * 2015-08-25 2017-04-04 International Business Machines Corporation Profile-based per-device code optimization
US10459825B2 (en) * 2017-08-18 2019-10-29 Red Hat, Inc. Intelligent expansion of system information collection
US10503626B2 (en) * 2018-01-29 2019-12-10 Oracle International Corporation Hybrid instrumentation framework for multicore low power processors
US11521116B2 (en) 2019-06-25 2022-12-06 Nxp Usa, Inc. Self-optimizing multi-core integrated circuit
US11354220B2 (en) 2020-07-10 2022-06-07 Metawork Corporation Instrumentation trace capture technique
US11327871B2 (en) 2020-07-15 2022-05-10 Metawork Corporation Instrumentation overhead regulation technique
US11392483B2 (en) * 2020-07-16 2022-07-19 Metawork Corporation Dynamic library replacement technique

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4564903A (en) 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
US5675762A (en) 1992-04-03 1997-10-07 International Business Machines Corporation System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down
JPH0784883A (ja) 1993-09-17 1995-03-31 Hitachi Ltd 仮想計算機システムのアドレス変換バッファパージ方法
US5392408A (en) 1993-09-20 1995-02-21 Apple Computer, Inc. Address selective emulation routine pointer address mapping system
US5983012A (en) 1993-09-28 1999-11-09 Bull Hn Information Systems Inc. Executing programs of a first system on a second system
US5581705A (en) 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5481684A (en) 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5440710A (en) 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5574922A (en) 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5699538A (en) 1994-12-09 1997-12-16 International Business Machines Corporation Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
US5692153A (en) 1995-03-16 1997-11-25 International Business Machines Corporation Method and system for verifying execution order within a multiprocessor data processing system
US5655100A (en) 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5751982A (en) 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5619665A (en) 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5678032A (en) 1995-09-06 1997-10-14 Bull Hn Information Systems Inc. Method of optimizing the execution of program instuctions by an emulator using a plurality of execution units
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5768593A (en) 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6134515A (en) 1997-06-13 2000-10-17 Telefonaktiebolaget Lm Ericsson Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6289419B1 (en) 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
US6075937A (en) 1998-03-18 2000-06-13 International Business Machines Corporation Preprocessing of stored target routines for controlling emulation of incompatible instructions on a target processor and utilizing target processor feedback for controlling non-sequential incompatible instruction emulation
US6189141B1 (en) 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6158049A (en) * 1998-08-11 2000-12-05 Compaq Computer Corporation User transparent mechanism for profile feedback optimization
US6430657B1 (en) 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
EP0997815A3 (en) 1998-10-29 2004-05-26 Texas Instruments Incorporated Interactive translation system and method
US6351844B1 (en) 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US6339752B1 (en) 1998-12-15 2002-01-15 Bull Hn Information Systems Inc. Processor emulation instruction counter virtual memory address translation
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US6341371B1 (en) * 1999-02-23 2002-01-22 International Business Machines Corporation System and method for optimizing program execution in a computer system
US6470492B2 (en) * 1999-05-14 2002-10-22 Hewlett-Packard Company Low overhead speculative selection of hot traces in a caching dynamic translator
US6986128B2 (en) 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
US6480845B1 (en) 2000-06-14 2002-11-12 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory working spaces
US6763328B1 (en) 2000-06-15 2004-07-13 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory utilizing threads
US6993754B2 (en) * 2001-11-13 2006-01-31 Hewlett-Packard Development Company, L.P. Annotations to executable images for improved dynamic optimization functions
US7047521B2 (en) * 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US6961806B1 (en) 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US20030171907A1 (en) * 2002-03-06 2003-09-11 Shay Gal-On Methods and Apparatus for Optimizing Applications on Configurable Processors

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010108086A (ja) * 2008-10-28 2010-05-13 Nec Corp Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
US8355901B2 (en) 2008-10-28 2013-01-15 Nec Corporation CPU emulation system, CPU emulation method, and recording medium having a CPU emulation program recorded thereon
KR20120063496A (ko) * 2009-09-02 2012-06-15 어드밴스드 마이크로 디바이시즈, 인코포레이티드 경량 서비스 기반의 동적 바이너리 재작성기 프레임워크
KR101697719B1 (ko) 2009-09-02 2017-01-18 어드밴스드 마이크로 디바이시즈, 인코포레이티드 경량 서비스 기반의 동적 바이너리 재작성기 프레임워크
JP2013504124A (ja) * 2009-09-02 2013-02-04 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 軽量サービスベースの動的バイナリリライタフレームワーク
CN102073544A (zh) * 2011-01-28 2011-05-25 武汉天喻信息产业股份有限公司 一种基于页操作的EEPROM cache方法
JPWO2012120654A1 (ja) * 2011-03-08 2014-07-07 富士通株式会社 タスクスケジューリング方法およびマルチコアシステム
WO2012120654A1 (ja) * 2011-03-08 2012-09-13 富士通株式会社 タスクスケジューリング方法およびマルチコアシステム
US8819649B2 (en) 2011-09-09 2014-08-26 Microsoft Corporation Profile guided just-in-time (JIT) compiler and byte code generation
JP2013061810A (ja) * 2011-09-13 2013-04-04 Fujitsu Ltd 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム
WO2013119441A1 (en) * 2012-02-07 2013-08-15 Microsoft Corporation Transferring program execution from compiled code to interpreted code
JP2022084921A (ja) * 2012-11-09 2022-06-07 コーヒレント・ロジックス・インコーポレーテッド 多重プロセッサシステムのためのリアルタイム分析及び制御
US11720479B2 (en) 2012-11-09 2023-08-08 Coherent Logix, Incorporated Real time analysis and control for a multiprocessor system
JP7335387B2 (ja) 2012-11-09 2023-08-29 コーヒレント・ロジックス・インコーポレーテッド 多重プロセッサシステムのためのリアルタイム分析及び制御
JP2017527020A (ja) * 2014-07-25 2017-09-14 インテル・コーポレーション ゲストイメージからのコードを実行するための実行時オプティマイザを実行するシステム変換器
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
JP2018106590A (ja) * 2016-12-28 2018-07-05 日本電気株式会社 情報処理装置、情報処理方法、およびプログラム
US10664393B2 (en) 2017-11-20 2020-05-26 Fujitsu Limited Storage control apparatus for managing pages of cache and computer-readable storage medium storing program

Also Published As

Publication number Publication date
CN1294486C (zh) 2007-01-10
US7146607B2 (en) 2006-12-05
CN1490718A (zh) 2004-04-21
JP4003830B2 (ja) 2007-11-07
US20040054992A1 (en) 2004-03-18

Similar Documents

Publication Publication Date Title
JP4003830B2 (ja) マルチプロセッシング環境における透過動的最適化のための方法およびシステム
US8612949B2 (en) Methods and apparatuses for compiler-creating helper threads for multi-threading
Chen et al. The Jrpm system for dynamically parallelizing Java programs
Debray et al. Compiler techniques for code compaction
US6539541B1 (en) Method of constructing and unrolling speculatively counted loops
EP1668500B1 (en) Methods and apparatuses for thread management of multi-threading
US8037465B2 (en) Thread-data affinity optimization using compiler
JP4844971B2 (ja) インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置
Georges et al. Method-level phase behavior in Java workloads
US20090150890A1 (en) Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US20040148491A1 (en) Sideband scout thread processor
Davidson et al. An aggressive approach to loop unrolling
Tian et al. Enhanced speculative parallelization via incremental recovery
Young et al. Near-optimal intraprocedural branch alignment
Burrows et al. Efficient and flexible value sampling
Suganuma et al. A region-based compilation technique for dynamic compilers
Leopoldseder et al. Fast-path loop unrolling of non-counted loops to enable subsequent compiler optimizations
Maroun et al. Compiling for time-predictability with dual-issue single-path code
Häubl et al. Context-sensitive trace inlining for Java
Djoudi et al. Exploring application performance: a new tool for a static/dynamic approach
Han et al. Speculative parallelization of partial reduction variables
Kim Dynamic program analysis algorithms to assist parallelization
Parravicini et al. The cost of speculation: Revisiting overheads in the V8 JavaScript engine
Porto et al. Trace execution automata in dynamic binary translation
He et al. Efficient dynamic program monitoring on multi-core systems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060912

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061208

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061208

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20061208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061211

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070615

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070615

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070813

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070813

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070813

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070815

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110831

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120831

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130831

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees