JP2004110824A - マルチプロセッシング環境における透過動的最適化のための方法およびシステム - Google Patents
マルチプロセッシング環境における透過動的最適化のための方法およびシステム Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
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
HPL 1999-1978990621におけるV. Bala他の「Transparent Dynamic Optimization: thedesign and implementation of Dynamo」という論文 1996年12月発行のProceedingsof MICRO 1996に掲載されたBall他による「Efficient Path Profiling」という論文
前記システムの他のプロセッサ上で動作している実行モニタにより第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つが動的オプティマイザを具備する、エミュレーション・システム。
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のプロセッサ上の前記アプリケーション・バイナリのインストルメント化コピーを実行するステップをさらに具備する、請求項1に記載の方法。
- 前記モニタが、前記アプリケーション・バイナリのインストルメント化コピーに含まれるインストルメント化コードを実行することにより生成された実行特性に関して実行される、請求項1に記載の方法。
- 前記最適化が、同時に実行中のアプリケーション・バイナリへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して実行される、請求項1に記載の方法。
- 1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより元の実行アプリケーション・バイナリを同時に変更するステップをさらに具備する、請求項1に記載の方法。
- 前記変更が前記アプリケーション・バイナリのユーザにとって透過的な方法で実行される、請求項5に記載の方法。
- 前記実行アプリケーション・バイナリに挿入する前に最適化部分からインストルメンテーション・コードを除去するステップをさらに具備する、請求項1に記載の方法。
- インストルメンテーションにより、前記1つまたは複数のセグメントが頻繁に実行されたものと決定するステップをさらに具備する、請求項1に記載の方法。
- 新しいインストルメンテーションを最適化部分に挿入して、前記最新最適化アプリケーション・バイナリの実行特性をモニタし続けるステップをさらに具備する、請求項1に記載の方法。
- 前記最適化が、頻繁に実行されるコード経路からの不必要な分岐の除去を含む、請求項1に記載の方法。
- 前記最適化が、それが動作している特定のネットワーク・ノードのアーキテクチャ上の全能力を活用するようにアプリケーション・バイナリを専門化することを含む、請求項1に記載の方法。
- 前記アプリケーション・バイナリが、コンパイル時に収集され、前記実行時オプティマイザによる使用のために前記バイナリに記憶されたプロファイリング命令およびプログラム・データを含む、請求項1に記載の方法。
- 前記実行アプリケーション・バイナリの少なくとも複数の部分が以前にインストルメント化されていない、請求項1に記載の方法。
- 前記少なくとも複数の部分が、ソース・コードなしのレガシー・バイナリと共用実行時ライブラリのうちの少なくとも一方を含み、前記方法が、
頻繁に実行されるバイナリをモニタするステップと、
前記バイナリを分析し、そこに適切なインストルメンテーション・コードを挿入するためにコピーを作成するステップと、
前記バイナリの今後の呼出し時に、インストルメント化コピーにスイッチし、その実行を続行するステップとをさらに具備する、請求項13に記載の方法。 - 前記バイナリが、実行されていない間に分析される、請求項14に記載の方法。
- 前記システムが、分散共用メモリを介して通信する複数ノードのクラスタを含む、請求項1に記載の方法。
- 前記システムが共用マルチプロセッサ・システム(SMP)を含む、請求項1に記載の方法。
- 前記インストルメント化アプリケーション・バイナリが、ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換するプロセス中に生成される、請求項2に記載の方法。
- マルチプロセッサ・コンピューティング環境がその実行環境についてアプリケーションの同時動的最適化を実行するための方法において、
システム内の第1のプロセッサ上で前記アプリケーションのインストルメント化コピーを実行するステップと、
前記システムの他のプロセッサ上で動作している実行モニタにより前記アプリケーションの実行をモニタするステップであって、前記モニタが前記アプリケーションの前記インストルメント化コピーに含まれるインストルメンテーション・コードを実行することにより生成された実行特性に関して実行されるステップと、
前記システムの他のプロセッサ上で実行している実行時オプティマイザにより前記元のアプリケーションの1つまたは複数のセグメントを最適化するステップであって、前記最適化が、同時に実行中のアプリケーションへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して実行されるステップと、
1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより前記元の実行アプリケーションを変更するステップであって、前記変更が前記アプリケーションのユーザにとって透過的な方法で実行されるステップとを具備する方法。 - マルチプロセッサ・システム内でその実行環境についてアプリケーションの同時動的最適化を実行するための方法において、
個別プロセッサ内でまたは複数プロセッサにわたって動作している個別プロセスとして動作している実行モニタにより、第1のプロセッサ内で動作しているプログラムまたはアプリケーションのそれぞれの実行をモニタするステップと、
それが実行しているバイナリ・コードにより、前記バイナリ・コードの実行特性のプロファイル・データを作成するステップであって、前記バイナリ・コードがパフォーマンスをモニタするためのインストルメンテーション・コードを含むステップと、
前記実行モニタにより、前記プロファイル・データを連続的に評価するステップと、
所与のしきい条件を満足するときに、動的オプティマイザを呼び出して、頻繁に実行するコード・フラグメントを最適化するステップとを具備し、
その後続実行で使用するために実行中の命令ストリームに前記最適化コード・フラグメントが挿入される方法。 - 前記マルチプロセッサ・システム内の余分な処理サイクルを使用して、実行中のアプリケーションの実行特性を観察し、前記実行中のアプリケーションを透過的に変更して、そのパフォーマンスを改善する、請求項20に記載の方法。
- 新たに挿入したコード・フラグメントが、いかなるインストルメンテーションも含まない、請求項20に記載の方法。
- 新たに挿入したコード・フラグメントが、前記アプリケーションの実行特性におけるその他の変更を検出するために再インストルメント化コードを含む、請求項20に記載の方法。
- 共用マルチプロセッシング(SMP)システム内の透過動的最適化の方法において、
第1のプロセッサ上でアプリケーション・バイナリを実行するステップと、
前記システム内の他のプロセッサ上で前記実行の挙動をモニタするステップと、
前記アプリケーション・バイナリが実行されている間に前記アプリケーション・バイナリの実行を最適化するステップとを具備する方法。 - 前記アプリケーション・バイナリがインストルメント化される、請求項24に記載の方法。
- 前記実行アプリケーション・バイナリの少なくとも一部が以前にインストルメント化されていない、請求項24に記載の方法。
- マルチプロセッシング・システム内の透過動的最適化のためのシステムにおいて、
第1のプロセッサ上でアプリケーション・バイナリの実行をモニタするための実行モニタであって、前記システムの他のプロセッサ上で動作する実行モニタを具備し、
前記実行モニタが、前記モニタと同時に、前記元のアプリケーション・バイナリの1つまたは複数のセグメントを最適化するための動的オプティマイザを含み、前記オプティマイザが前記システムの前記他のプロセッサ上で実行されるシステム。 - 前記実行モニタが、前記インストルメント化バイナリ・アプリケーションの動的再最適化フラグメントを記憶するためのフラグメント・キャッシュを含む、請求項27に記載のシステム。
- 前記実行モニタが、前記アプリケーション・バイナリのインストルメント化コピーに含まれるインストルメンテーション・コードを実行することにより生成された実行特性に関して前記モニタを実行する、請求項27に記載のシステム。
- 前記動的オプティマイザが、同時に実行中のアプリケーション・バイナリへのパフォーマンス上の影響なしに、前記実行モニタによって収集された実行特性に関して前記最適化を実行する、請求項27に記載のシステム。
- 前記実行モニタが、1つまたは複数のセグメントを最新最適化セグメントで置き換えることにより前記元の実行アプリケーション・バイナリを同時に変更する、請求項27に記載のシステム。
- 前記変更が前記アプリケーション・バイナリのユーザにとって透過的な方法で実行される、請求項31に記載のシステム。
- 前記実行モニタが、前記実行アプリケーション・バイナリに挿入する前に最適化部分から前記インストルメンテーション・コードを除去する、請求項27に記載のシステム。
- 前記実行モニタが、新しいインストルメンテーションを最適化部分に挿入して、前記最新最適化アプリケーション・バイナリの実行特性をモニタし続ける、請求項27に記載のシステム。
- 前記動的オプティマイザが、頻繁に実行されるコード経路から不必要な分岐を除去する、請求項27に記載のシステム。
- 前記動的オプティマイザが、それが動作している特定のネットワーク・ノードのアーキテクチャ上の全能力を活用するようにアプリケーション・バイナリを専門化する、請求項27に記載のシステム。
- 前記アプリケーション・バイナリが、コンパイル時に収集され、前記動的オプティマイザによる使用のために前記バイナリに記憶されたプロファイリング命令および何らかのプログラム・データを含む、請求項27に記載のシステム。
- 前記実行アプリケーション・バイナリの少なくとも複数の部分が以前にインストルメント化されていない、請求項27に記載のシステム。
- 前記少なくとも複数の部分が、ソース・コードなしのレガシー・バイナリと共用実行時ライブラリのうちの少なくとも一方を含み、前記システムが、
頻繁に実行されるバイナリをモニタするための手段と、
前記バイナリを分析し、そこに適切なインストルメンテーション・コードを挿入するためにコピーを作成するための手段と、
前記バイナリの今後の呼出し時に、インストルメント化コピーにスイッチし、その実行を続行するための手段とをさらに具備する、請求項38に記載のシステム。 - 前記バイナリが、実行されていない間に分析される、請求項39に記載のシステム。
- 分散共用メモリを介して通信する複数ノードのクラスタをさらに含む、請求項27に記載のシステム。
- 前記システムが共用マルチプロセッサ・システム(SMP)を含む、請求項27に記載のシステム。
- インストルメント化アプリケーション・バイナリが、ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換するプロセス中に生成される、請求項28に記載のシステム。
- 前記実行モニタが前記第1のプロセッサ専用になっている、請求項27に記載のシステム。
- 前記実行モニタが、
前記フラグメント・キャッシュ内のフラグメントを管理するためのフラグメント・マネージャと、
前記フラグメント・マネージャに入力を提供するために、所定の条件を満足するときに前記実行アプリケーション・バイナリによってトリガされるプロファイル・モニタとをさらに含み、
前記動的オプティマイザが、前記フラグメント・マネージャを介して前記フラグメント・キャッシュに最適化フラグメントを戻し、
前記実行モニタが、最適化のために前記アプリケーション・バイナリのどの部分を抽出すべきかを決定し、前記命令のコピーを作成し、前記動的オプティマイザが前記コピーを参照してそれに変更を加えられるように前記命令を記憶することにより、前記アプリケーション・バイナリの前記部分を抽出し、
前記実行モニタが、特定のフラグメントを最適化するために関連するプロファイル情報を前記動的オプティマイザに提供する、請求項28に記載のシステム。 - マルチプロセッシング・システム内の透過動的最適化の方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、
前記システムの他のプロセッサ上で動作している実行モニタにより、第1のプロセッサ上でアプリケーション・バイナリの実行をモニタするステップと、
前記システムの前記他のプロセッサ上で実行される実行時オプティマイザにより、前記元のアプリケーション・バイナリの1つまたは複数のセグメントを透過的に最適化するステップとを具備する信号運搬媒体。 - 複数のホスト・プロセッサを有するマルチプロセッサ・システム用のエミュレーション・システムにおいて、
ホスト・システム上で実行するためにターゲット・アプリケーションの命令ストリームを動的に変換する間にインストルメント化バイナリを生成するための実行モニタを具備し、
前記実行モニタ・スレッドが、複数の変換スレッドのうちの1つを具備し、
前記変換スレッドの少なくとも1つを使用して、前記実行モニタが選択したコード・フラグメントを動的に最適化する、エミュレーション・システム。 - 前記変換スレッドのうちの1つがオプティマイザ・スレッドを具備し、
頻繁に実行されるコード・シーケンスを動的に最適化して、パフォーマンスを強化し、
前記シーケンスが、キャッシュしたコードの実行頻度をモニタするインタプリタ変換スレッドによって挿入されるインストルメンテーション・コードによって識別され、
所定のしきい値に達したときに、所与のコード・シーケンスが最適化の候補であることを前記オプティマイザ・スレッドに知らせ、最適化すべきコード・シーケンスを導入したゲスト命令のエミュレートした実アドレスが前記オプティマイザ・スレッドに提供されるように、モニタ・スレッドが前記頻度を連続的に追跡する、請求項47に記載のエミュレーション・システム。 - マルチプロセッサ・システム用のエミュレーション・システムにおいて、
複数のスレッドを具備し、変換スレッドのうちの1つが実行モニタを具備し、前記変換スレッドの少なくとも1つが動的オプティマイザを具備する、エミュレーション・システム。
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)
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)
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)
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 |
-
2002
- 2002-09-17 US US10/244,564 patent/US7146607B2/en not_active Expired - Fee Related
-
2003
- 2003-09-02 JP JP2003310695A patent/JP4003830B2/ja not_active Expired - Fee Related
- 2003-09-16 CN CNB031571646A patent/CN1294486C/zh not_active Expired - Fee Related
Cited By (18)
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 |