JPH09330233A - 最適目的コード生成方法 - Google Patents

最適目的コード生成方法

Info

Publication number
JPH09330233A
JPH09330233A JP9055902A JP5590297A JPH09330233A JP H09330233 A JPH09330233 A JP H09330233A JP 9055902 A JP9055902 A JP 9055902A JP 5590297 A JP5590297 A JP 5590297A JP H09330233 A JPH09330233 A JP H09330233A
Authority
JP
Japan
Prior art keywords
code
application
block
profile information
profile
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.)
Withdrawn
Application number
JP9055902A
Other languages
English (en)
Other versions
JPH09330233A5 (ja
Inventor
B Busby William
ウィリアム・ビー・バズビー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH09330233A publication Critical patent/JPH09330233A/ja
Publication of JPH09330233A5 publication Critical patent/JPH09330233A5/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • G06F11/3612Analysis of software for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】プロファイルに基づいて目的コードを最適化す
る場合のコンパイル回数を削減し、コンパイルの効率化
を図る。 【解決手段】アプリケーションのソース・コードをコン
パイルして、第1の目的コードを生成する。アプリケー
ション最適化のために必要となるプロファイル情報を生
成する機能を持つプロファイル作成コードを含むよう
に、本発明の動的変換ルーチンによって第1の目的コー
ドを第2の目的コードに動的に変換する。次に、第2の
目的コードを実行して、上記プロファイル作成コードに
基づいて、プロファイル情報を生成する。最後に、この
プロファイル情報を使用してアプリケーションのソース
・コードを再コンパイルし、最適化された目的コードを
生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンパイラ最適化
に関するもので、特に最適化コンパイル・システムにお
いて実行時情報を収集し活用するための動的変換の使用
に関するものである。
【0002】
【従来の技術】プログラムは、一般に高水準プログラム
言語で書かれる。しばしばソース・コードと呼ばれるこ
の高水準言語は、コンパイラ・プログラムによってアセ
ンブリ言語に変換される。目的コードと呼ばれるバイナ
リ形式のアセンブリ言語は、コンピュータによって実際
に実行されるコード形式である。目的コードは、先ず、
リンカによって相互にリンクされる目的コード・モジュ
ールの形式で生成される。本明細書において、用語「コ
ンパイル」は、目的コード・モジュールを生成するプロ
セスおよび目的コード・モジュールを相互にリンクする
プロセスの両者を含む。
【0003】目標コンピュータによって実行される目的
コードの処理性能を向上させるため、コンパイルされた
コードはしばしば最適化される。目的コードはいくつか
の異なる形態で最適化される。
【0004】最適化の1つのタイプは、プロファイルに
基づく最適化(profile-based optimizationの頭文字を
とってPBOと呼ばれる)である。PBOにおいては、
コンパイラは、典型的な入力データセットを用い、アプ
リケーションの実行を通して得られるプロファイル・デ
ータに基づいてアプリケーションを最適化する。例え
ば、特定の複数のプロシージャが頻繁に互いを呼び出す
とすれば、リンカは、目的コード・ファイルの中でそれ
らプロシージャを互いに近い位置に置き、それにより、
アプリケーション実行中の命令キャッシュ・ミス、変換
ルックアサイド・バッファ(TLB)ミス、および記憶ペ
ージ・フォールトを減少させることができる。同様の最
適化は、プロシージャの基本ブロックのレベルでも行う
ことができる。基本ブロックまたは分節は、開始点およ
び終了点以外には分岐が存在しないようなアセンブリ・
コードの1つの連続的節である。プロファイル・データ
は、また、コード・スケジューリングおよびレジスタ割
り付けのような他の一般的タスクのためにもコンパイラ
によって使用される。
【0005】PBOを実行するためには、アプリケーシ
ョンのソース・コードは、プロファイル作成用の特別コ
ードを挿入することによって目的コードに仕組みを組み
込む特別なコンパイラ・オプションを使用してコンパイ
ルされる。アプリケーションが実行されると、その特別
プロファイル作成コードによってプロファイル・データ
が作成される。次にプロファイル・データが収集され
る。アプリケーションのソース・コードが再コンパイル
される時、プロファイル・データを使用して、アプリケ
ーション・ソース・コードの新しいコンパイルが一層最
適化される。PBOの詳細は、例えば、ヒューレット・
パッカード社発行の"Programming on HP-UX, HP 9000 S
eries 700/800 Computers"(HP Part No. B2355-90652,
January 1995, pp. 8-1 through 8-17)に記載されてい
る。
【0006】
【発明が解決しようとする課題】PBOの使用にかかわ
る1つの問題は、PBOのための別のコンパイルの実行
が必要とされる点である。従って、ユーザがPBOを利
用することを望む場合、典型的にはアプリケーション・
ソース・コードは3回コンパイルされることが必要であ
る。第1回は、アプリケーションをテストし妥当性を検
査するために使用されるアプリケーションのコピーを作
成するためのものである。コードの第2回のコンパイル
では、プロファイル・データを作成するためプロファイ
ル作成用特別コードが追加される。次に、コンパイルさ
れたアプリケーションを最適化するため、生成されたプ
ロファイル・データを使用してアプリケーションを構築
する第3のコンパイルが必要である。このように独立し
たコンパイルを行うことなくPBOを実施できる方法が
求められている。
【0007】
【課題を解決するための手段】本発明に従う動的変換を
使用して、アプリケーションの目的コードを最適化する
ために使用されるプロファイル情報が生成される。アプ
リケーションに関する最適化された目的コードを生成す
るため、アプリケーションのソース・コードがコンパイ
ルされ、アプリケーションに関する第1の目的コードが
生成される。第1の目的コードは、アプリケーションを
テストして妥当性を検査するために使用することもでき
る。第1の目的コードは、また、アプリケーションに関
するプロファイル情報の生成に使用することもできる。
これは、第1の目的コードを第2の目的コードに動的に
変換することによって実施される。この変換の際に、実
行時にプロファイル情報を生成するプロファイル作成コ
ードが第2の目的コードに、含められる。生成された第
2の目的コードは次にプロファイル情報を生成するため
実行される。最後に、アプリケーションのソース・コー
ドは、最適化された目的コードを作成するため、生成し
たプロファイル情報を活用して再コンパイルされる。
【0008】本発明は、具体的には、アプリケーション
に関する最適化された目的コードを生成するため、アプ
リケーションのソース・コードをコンパイルして該アプ
リケーションに関する第1の目的コードを生成するステ
ップ、実行の際にプロファイル情報を生成する機能を持
つプロファイル作成コードを含む第2の目的コードに上
記第1の目的コードを変換し、該第2の目的コードを実
行してプロファイル情報を生成することを含む上記第1
の目的コードに関するプロファイル情報を生成するステ
ップ、および上記プロファイル情報を使用して上記ソー
ス・コードを再コンパイルすることによって、最適化さ
れた目的コードを生成するステップを含む最適化された
目的コード生成方法を提供する。
【0009】アプリケーションの目的コードを更に最適
化するため最適化された目的コードに関する追加のプロ
ファイル情報を生成するため、このプロセスを繰り返す
こともできる。
【0010】更に、本発明の別の局面では、上記第1の
目的コードに注釈が配置される。コンパイラの変換ルー
チンが第1の目的コード内の注釈を利用して、第2の目
的コード内に置かれるべき特定のプロファイル作成コー
ドに従って生成されるプロファイル情報を決定する。注
釈は、コンパイラによって第1の目的コードに置かれ
る。代替的にあるいは追加として、目的コード内の注釈
および目的コードの実行の結果生成されるプロファイル
情報に対するアクセス機能をユーザに与えることができ
る。ユーザは最適化プロセスを指示するため目的コード
内に注釈を追加または変更することができる。このプロ
セスは、それ以上の最適化が見いだされなくなるまで、
または最適化されたアプリケーションの処理性能がユー
ザにとって満足できるものとなるまで、反復プロセスと
して実施することができる。
【0011】
【発明の実施の形態】図1は、動的変換ルーチン15を
使用してアプリケーション10を実行するコンピュータ
・システム7のブロック図である。コンパイラが実行時
の前に実行可能コードを生成するのに対し、動的変換ル
ーチン15は実行時に変換されたコード8を生成する点
がコンパイラと相違する。アプリケーション10のコー
ド・ブロックが実行時に変換される。変換されたコード
・ブロックは、図1において変換されたコード8として
示されている。変換されたコード8は、何度も実行され
るコード・ブロックの各々が実行時に一度だけ変換され
るだけでよいように、キャッシュ・メモリのようなメモ
リに記憶される。このアプローチは、実行前にコードが
変換されることを必要としない柔軟性を実現するだけで
なく、実行毎にコード・ブロックを変換しなければなら
ないとした場合に生じるオーバーヘッドをも減少させ
る。
【0012】本発明の好ましい実施形態において、変換
されたコード8は変換コード・キャッシュ20に記憶さ
れる。変換コード・キャッシュ20が一杯の時、新しく
変換されるコード・ブロックのために空間を作成するた
め以前に変換されたコード・ブロックの一部が破棄され
る必要があるかもしれない。これは、破棄されたコード
・ブロックが再使用されるならば再変換されるべきこと
を必要とするが、メモリ使用における潜在的節約を可能
にする。以前に変換されたコード・ブロックを破棄する
代わりに、それらをシステム・メモリに記憶することも
できる。
【0013】図2は、本発明の好ましい実施形態に従っ
てプロファイル・データを生成する動的変換ルーチンを
利用するシステムの流れ図である。ソース・コード31
は、ステップ32において、アプリケーション33を作
成するためコンパイルされる。コンパイルされたアプリ
ケーション33は、ステップ34で、テストされ妥当性
を検査されることもある。アプリケーション33は、テ
ストおよび妥当性検査の間全速力で実行できる。コンパ
イル時にアプリケーション33にプロファイル作成コー
ドが加えられなかったので、アプリケーション33の処
理性能は、アプリケーション33内へのプロファイル作
成用コードの内包によって妨げらることがない。
【0014】ステップ35において、プロファイル情報
を収集するためアプリケーション33は動的変換ルーチ
ンの下で実行される。変換ルーチンは目的コードから目
的コードへの変換を実行する。すなわち、アプリケーシ
ョン33の目的コードは、変換ルーチンによって変換さ
れた目的コードに変換される。次に変換された目的コー
ドが実行される。ステップ35で生成される変換された
目的コードとステップ32でアプリケーション33を作
成するためコンパイルされた目的コードの間の相違は、
プロファイル作成コードがステップ35で作成された変
換目的コードに加えられる点である。換言すれば、ステ
ップ35で生成された変換目的コードが、実行時にプロ
ファイル情報36を生成するために使用されるプロファ
イル作成コードを付加的に含む点を除いて、ステップ3
5で生成された変換目的コードはステップ32でアプリ
ケーション33を作成するためコンパイルされた目的コ
ードと同等または本質的に同じである。
【0015】ステップ37において、プロファイル情報
36を使用して第2のコンパイルの間最適アプリケーシ
ョン38が作成される。要するに、プロファイルに基づ
く最適化(PBO)処理の実行のためアプリケーション・
ソース・コードは2回だけコンパイルされる。第1回
は、アプリケーションをテストし妥当性を検査するため
に使用されるアプリケーションのソース・コード・コピ
ーを作成するためである。アプリケーションをテストし
妥当性を検査するために使用されたものと同じアプリケ
ーション・コピーがプロファイル・データを生成するた
め変換ルーチンの下で実行される。次に、コンパイルさ
れたアプリケーションを更に最適化するためプロファイ
ル・データを使用してアプリケーションを構築する第2
のコンパイルが実行される。
【0016】図3は、アプリケーション10のコードを
動的に変換して実行する動的変換および実行プロセス3
9の使用形態を示している。変換は、プロファイル作成
コードを備えた変換目的コードを生成する。アプリケー
ション10は、命令11およびデータ12を含むように
示されている。アプリケーション10内の命令11が実
行されるにつれて、ステップ16において、プログラム
・カウンタがアプリケーション10内でコード13の新
しいブロックをポイントする度毎に、その新たなコード
・ブロックが動的変換および実行プロセス39によって
既に変換されたものであるか否かが判断される。変換済
みでなければ、ステップ18において、そのコード・ブ
ロックはホスト・コンピュータ・システムに対して適切
な目的コードに変換される。加えて、プロファイル・デ
ータを生成するプロファイル作成コードが追加される。
上述のように、変換されるべきコード・ブロックは既に
ホスト・コンピュータ・システム固有のものとなってい
るので、変換は、プロファイル作成コードを目的コード
に組み入れるためだけに行われる目的コードから目的コ
ードへの変換にすぎない。ステップ17において、コー
ド・ブロック13に関する変換されたコードが実行され
る。
【0017】図4は、動的変換および実行プロセス39
によってアプリケーションを実行するプロセスを更に示
している。ステップ21でアプリケーションの実行は始
まる。ステップ22において実行されるべき次のアプリ
ケーション・アドレスが調べられる。これは、例えばブ
ロック情報マップへのアドレス25を使用して行われ
る。ブロック情報マップへのアドレス25はアプリケー
ションにおけるコード・ブロックのエントリを含み、更
に、アプリケーションによって呼び出される共有ライブ
ラリにおけるコード・ブロックのエントリを含む場合も
ある。本発明の好ましい実施形態においては、実行のた
め実際に必要とされるコード・ブロックに関するアドレ
スだけがブロック情報マップ25内に含まれる。これら
のアドレスは、コード・ブロックが必要とされる都度、
実行時に追加される。
【0018】コード・ブロックは、1つまたは複数の命
令からなるグループである。コード・ブロックは、
(「基本ブロック」と同様に)分岐によって終了する単一
または直線的命令シーケンスか、プロシージャか、ある
いはその他の命令群である。本発明の好ましい実施形態
では、コード・ブロックは、動的変換ルーチン15によ
って活用される変換の単位である。この変換の単位は、
例えば、プロシージャ、基本ブロック、ページ、キャッ
シュ線、単一命令、またはその他の命令の組み合わせで
あることができる。
【0019】ブロック情報マップへのアドレス25の各
エントリは、アプリケーション内のコード・ブロックま
たは共有ライブラリ内のコード・ブロックの開始アドレ
スを識別する少くとも1つの第1のプログラム・アドレ
スを含む。加えて、各エントリは、アプリケーションま
たは共有ライブラリからのコード・ブロックに関するブ
ロック情報を含むブロック情報テーブル26における位
置をポイントするブロック情報ポインタを含む。ブロッ
ク情報テーブル26内のブロック情報は、そのコード・
ブロックに関する変換されたブロック・コードが存在す
る場合変換されたコードに対するポインタを含む。
【0020】ステップ23において、実行されるべき次
のアプリケーション・アドレスを調べた後、アプリケー
ションまたは共有ライブラリからのコード・ブロックに
関する変換されたコードが存在するか否かの判断が行わ
れる。これは、例えば、ブロック情報テーブル26から
取り出された情報を使用して行われる。そのコード・ブ
ロックに関して変換が存在しなければ、ステップ24に
おいてコード・ブロックが変換される。変換されたコー
ドが次に実行される。
【0021】変換コード・キャッシュ20を使用して、
効率的な実行のため変換されたコード・ブロックが保持
される。変換コード・キャッシュ20によって保持され
るコード・ブロックの数は、例えば使用可能メモリに応
じて変わる。図4において、変換コード・キャッシュ2
0内のコード・ブロックは、コード・ブロック27、コ
ード・ブロック28およびコード・ブロック29によっ
て表されている。これらのコード・ブロックのいずれも
共有ライブラリからの変換されたプロシージャを表す場
合もある。
【0022】変換コード・キャッシュ20内のコード・
ブロックは、変換コード・キャッシュ20内の他のコー
ド・ブロックに分岐することもある。例えば、コード・
ブロック27内の分岐命令がコード・ブロック28内の
位置をポイントする。同様に、コード・ブロック28の
コードを実行した後、プログラムの流れ制御がコード・
ブロック29へ続く。図4で示されるように、コード・
ブロック27のコードの実行後、プログラムの流れ制御
は、変換コード・キャッシュ20の外側のコード・ブロ
ックに続くこともある。同様に、コード・ブロック29
のコードの実行後、動的分岐が、変換コード・キャッシ
ュ20の外側のコード・ブロック内のアドレスへ分岐す
る。
【0023】変換コード・キャッシュ20の範囲内のコ
ード・ブロックの命令の実行が一旦開始すると、変換コ
ード・キャッシュ20の範囲内のそのコード・ブロック
および他のコード・ブロックの命令の実行は、実行すべ
き命令が変換コード・キャッシュ20の範囲外のものと
なるまで、継続する。キャッシュ・ミスが発生すると、
プログラム制御は、実行されるべき次のアプリケーショ
ン・アドレスが調べられるステップ22に戻る。(変換
済みでなければ)該当するコード・ブロックが変換さ
れ、変換コード・キャッシュ20に置かれ、アプリケー
ションの実行は続く。
【0024】図5は、本発明の1つの代替実施形態に従
ってプロファイル・データを生成する動的変換を活用す
るシステムの動作の流れを示している。ステップ42に
おいて、ソース・コード41が最適化されたアプリケー
ション43を作成するようにコンパイルされる。コンパ
イルの間、最適化されたアプリケーションの実行時動作
を照会する機能を持つコード注釈が追加される。プロフ
ァイル情報が使用可能な場合、それはアプリケーション
を最適化するために使用される。プロファイル情報は、
また、一層詳細な実行時動作を照会する新しいコード注
釈の追加を促すために使用される。
【0025】ステップ45において、変換ルーチンの下
でアプリケーション43が実行され、プロファイル情報
が収集される。変換ルーチンは、目的コードから目的コ
ードへの変換を実行する。すなわち、アプリケーション
43の目的コードは、変換ルーチンによって、変換目的
コードに変換される。次に変換目的コードが実行され
る。ステップ44で生成された変換目的コードは、ステ
ップ42でアプリケーション43を作成するためコンパ
イルされた目的コードと同じ機械命令セットを使用す
る。テップ44で生成された変換目的コードとステップ
42でアプリケーション43を作成するためコンパイル
された目的コードの相違は、コンパイルされたアプリケ
ーションにおける注釈が、実行時にプロファイル情報4
5を生成するプロファイル作成コードと置き換えられる
点である。追加されるプロファイル作成コードは、最適
化されたアプリケーション43内の注釈に基づいて追加
される。
【0026】プロセスは、最適化されたアプリケーショ
ン43を更に最適化するように繰り返すこともできる。
最適化されたアプリケーション43の各動的変換および
実行から得られるプロファイル情報45が、次のコンパ
イルでアプリケーション43を更に最適化するために使
用される。注釈は、将来のコンパイルで使用される付加
的プロファイル情報を得るように各コンパイル毎に調節
される。最適化されたアプリケーション43に対する最
適化がそれ以上行われなくなるまで、あるいは、最適化
がアプリケーション43の処理性能がその最適化アプリ
ケーションの開発者/テスターを満足させるまで、この
ような反復プロセスは続く。
【0027】図6は、本発明の別の好ましい代替実施形
態に従って動的変換ルーチンを利用してプロファイル・
データを生成するシステムの動作の流れを示す。ステッ
プ52でソース・コード51が最適化されたアプリケー
ション53を作成するためコンパイルされる。コンパイ
ルの間、最適化されたアプリケーションの実行時動作を
照会する機能を持つコード注釈が追加される。プロファ
イル情報が使用可能な場合アプリケーションを最適化す
るために使用される。更に、プロファイル情報は、一層
詳細な実行時動作を照会する新しいコード注釈の追加を
促すために使用されることもできる。
【0028】ステップ56において、ユーザが注釈およ
びプロファイル情報の両者を調べる。そこでユーザは新
しい注釈を追加することができる。ユーザのこのような
操作は、コンパイルの前、その間またはその後のいずれ
の時点でも実行できる。ステップ55において、プロフ
ァイル情報を収集するために、アプリケーション53は
変換ルーチンの下で実行される。変換ルーチンは、目的
コードから目的コードへの変換を実行する。すなわち、
アプリケーション53の目的コードは、変換ルーチンに
よって変換目的コードに変換される。次に変換目的コー
ドが実行される。ステップ54で生成された変換目的コ
ードは、ステップ52でアプリケーション43を作成す
るためコンパイルされた目的コードと同じ機械命令セッ
トを使用する。テップ54で生成された変換目的コード
とステップ52でアプリケーション53を作成するため
コンパイルされた目的コードの相違は、コンパイルされ
たアプリケーションにおける注釈が、実行時にプロファ
イル情報55を生成するプロファイル作成コードと置き
換えられる点である。追加されるプロファイル作成コー
ドは、最適化されたアプリケーション53内の注釈に基
づいて追加される。
【0029】プロセスは、最適化されたアプリケーショ
ン53を更に最適化するように繰り返すこともできる。
最適化されたアプリケーション53の各動的変換および
実行から得られるプロファイル情報55が、次のコンパ
イルでアプリケーション53を更に最適化するために使
用される。注釈は、将来のコンパイルで使用される付加
的プロファイル情報を得るように各コンパイル毎に調節
される。最適化されたアプリケーション53に対する最
適化がそれ以上行われなくなるまで、あるいは、最適化
がアプリケーション53の処理性能がその最適化アプリ
ケーションの開発者/テスターを満足させるまで、この
ような反復プロセスは続く。
【0030】以下の諸表は、本発明の好ましい実施形態
の動作を更に示すサンプル・コードを提供する。表1
は、アプリケーションにおける1つのサンプル・プロシ
ージャに関するソース・コードを示す。
【0031】
【表1】ソース行番号 コード 5 sum=0 6 for (i=0; i<array_size; i++) 7 sum += array[i]; 次の表2は、表1のソース・コードがコンパイルされた
結果の目的コードを例示する。
【0032】
【表2】 ;行5の目的コード STW %gr0,sum(DP) ;sumに0をストア ;行6の目的コード STW %gr0,i(DP) ;iを0に初期化 LDW i(DP),%tr1 ;一時レジスタにiをロード loop_back LDW array_size(DP),%tr2 ;一時レジスタにarray_sizeをロード COMB,>=,n %tr2,%tr1,exit_loop ;if(i>=array_size) ループを出る ;行7の目的コード ADDIL array(DP),%tr3 ;arrayのアドレスを入手 LDWX,s,m %tr1,(%tr3),%tr4 ;arry[i]を入手 LDW sum(DP),%tr5 ;sumを入手 ADD %tr4,%tr5,%tr6 ;sumとarray[i]を加算 STW %tr6,0(%tr3) ;新しいsumをストア LDO 1(%tr1),%tr1 ;i++ B,n loop_back ;次の反復を実行 exit_loop
【0033】表2の目的コードがプロファイル作成機能
を持つ動的変換の下で実行される時、動的変換ルーチン
15は、頻繁に実行されるコード部分を識別するためプ
ロファイル作成コードを追加する。これによってコンパ
イラはより高品質のコードを生成することが可能とな
る。これは、例えば、カウンタを分岐に関連づけること
(弓形カウント)、あるいはカウンタを各行を表すコード
に関連づけること(行頻度カウント)のいずれかによって
実施される。
【0034】次の表3は、弓形カウントを実行するよう
に動的変換ルーチン15によって追加されたプロファイ
ル作成コードを組み込まれた表2の目的コードを示す。
【0035】
【表3】 ;行5の目的コード STW %gr0,sum(DP) ;sumに0をストア ;行6の目的コード ;プロファイル作成コード(パート1) LDW Line6Hit(DP),%tr8 ;行6を通過した回数を示すカウンタを入手 ADDI,<>1,%tr8,%tr8 ;カウンタを増分 LDI -1,%tr8 ;オーバーフローの場合カウンタを一杯にする STW %tr8,Line6Hit(DP) ;カウンタをストア STW %gr0,i(DP) ;iを0に初期化 LDW i(DP),%tr1 ;一時レジスタにiをロード loop_back LDW array_size(DP),%tr2 ;一時レジスタにarray_sizeをロード COMB,>=,n %tr2,%tr1,exit_loop ;if(i>=array_size) ループを出る ;プロファイル作成コード(パート2) LDW Line6NotTaken(DP),%tr8 ;行6を通過した回数を示すカウンタを入手 ADDI,<>1,%tr8,%tr8 ;カウンタを増分 LDI -1,%tr8 ;オーバーフローの場合カウンタを一杯にする STW %tr8,Line6NotTaken(DP) ;カウンタをストア ;行7の目的コード ADDIL array(DP),%tr3 ;arrayのアドレスを入手 LDWX,s,m %tr1,(%tr3),%tr4 ;arry[i]を入手 LDW sum(DP),%tr5 ;sumを入手 ADD %tr4,%tr5,%tr6 ;sumとarray[i]を加算 STW %tr6,0(%tr3) ;新しいsumをストア LDO 1(%tr1),%tr1 ;i++ B,n loop_back ;次の反復を実行 exit_loop
【0036】表3の目的コードが実行される時、コード
は、オリジナルのソースの中の各ステートメントが実行
された回数の追跡を続ける。この情報がコンパイラにフ
ィードバックされると、コンパイラは、場合によって
は、行6および7のループに関する一層詳細な情報を使
用すべきか否か判断する。その場合には、コンパイラは
コードに注釈を付加する。この注釈は実際には目的コー
ドに現れないが、(シンボル・テーブルまたはデバッギ
ング情報のように)非実行部分のアプリケーション・フ
ァイルに含めることができる。例えば、次の表4に示さ
れるように、コンパイラは、行6に関する詳細なループ
情報を要求する注釈をファイルに記述する。
【0037】
【表4】位置 アクション パラメータ <Label_X>: Loop_Detai: Iteration_Bound=(array_size-1)
【0038】表4に記述された注釈は、位置、アクショ
ンおよびアクションを実行するために必要とされるオプ
ションとしての付加パラメータという3つの部分から成
る。この例における位置は、コンパイラによって生成さ
れた目的コードにおける位置を表すラベルである。アク
ションは、実行中に上記位置に出会う度毎に情報を収集
するため動的変換ルーチン15によって解読されるべき
コードである。この例では、アクションは、例えば反復
動作の2、4または8による分割可能性やループの「モ
ード」等Label_ Xが付けられたループに関する詳細を収
集することである。このアクションを実行するため、動
的変換ルーチン15は、反復の境界がどこに位置してい
るか知る必要がある。上述の例では、反復の境界は、変
数"array_size"(アレイの大きさ)に含まれていて、1を
減ずることによって調節する必要がある。
【0039】次の表5は、注釈を使用する変換されたコ
ードおよびプロファイル作成コードのサンプルである。
このコードが動的変換の下で実行される時、動的変換ル
ーチン15は、Label_Xの位置にループ詳細分析を行う
コードを挿入する。
【0040】
【表5】 ;行5の目的コード STW %gr0,sum(DP) ;sumに0をストア ;行6の目的コード ;注釈[<Label_X><Loop_Detail><array_size-1>]に関する ;プロファイル作成コード LDW array_size(DP),%arg0 ;ループ反復限界を入手 BL Analyze_Loop,RP ;分析プロシージャを呼び出す ADDI -1,%arg0,%arg0 ;反復限界を調整 STW %gr0,i(DP) ;iを0に初期化 LDW i(DP),%tr1 ;一時レジスタにiをロード loop_back LDW array_size(DP),%tr2 ;一時レジスタにarray_sizeをロード COMB,>=,n %tr2,%tr1,exit_loop ;if(i>=array_size) ループを出る ;行7の目的コード ADDIL array(DP),%tr3 ;arrayのアドレスを入手 LDWX,s,m %tr1,(%tr3),%tr4 ;arry[i]を入手 LDW sum(DP),%tr5 ;sumを入手 ADD %tr4,%tr5,%tr6 ;sumとarray[i]を加算 STW %tr6,0(%tr3) ;新しいsumをストア LDO 1(%tr1),%tr1 ;i++ B,n loop_back ;次の反復を実行 exit_loop
【0041】表3および表5のサンプル・コードによっ
て、目的コードが実行されるとプロファイル情報が生成
される。この情報はコンパイラもユーザも利用すること
ができる。ユーザは"Loop-Detail"のような新しい注釈
を加えることによって、追加情報を要求するか、コンパ
イラが所望のコードを生成するようにコンパイラにヒン
トを与えることことができる。
【0042】以上は本発明の典型的な実施形態を開示し
記述したものにすぎない。本発明をその理念および基本
的特徴から逸脱することなく別の形態で実施することが
可能である点は当業者に認められるべきものであろう。
【0043】本発明には、例として次のような実施様態
が含まれる。 (1)アプリケーションに関する最適化された目的コー
ドを生成する方法であって、アプリケーションのソース
・コードをコンパイルして該アプリケーションに関する
第1の目的コードを生成するステップ(a)と、実行の際
にプロファイル情報を生成する機能を持つプロファイル
作成コードを含む第2の目的コードに上記第1の目的コ
ードを変換し(b1)、該第2の目的コードを実行してプロ
ファイル情報を生成する(b2)ことを含む上記第1の目的
コードに関するプロファイル情報を生成するステップ
(b)と、上記プロファイル情報を使用して上記ソース・
コードを再コンパイルすることによって、最適化された
目的コードを生成するステップ(c)と、を含む最適目的
コード生成方法。 (2)上記ステップ(a)に続いて、該アプリケーション
に関して上記第1の目的コードをテストし、妥当性を検
査するステップ(d)を更に含む上記(1)に記載の最適
目的コード生成方法。 (3)上記ステップ(c)に続いて、実行の際に追加プロ
ファイル情報を生成する機能を持つプロファイル作成コ
ードを含む第3の目的コードに上記最適化された目的コ
ードを変換し(d1)、該第3の目的コードを実行して追加
プロファイル情報を生成する(d2)ことを含む上記最適化
された目的コードに関する追加プロファイル情報を生成
するステップ(d)と、上記追加プロファイル情報を使用
して上記ソース・コードを再コンパイルすることによっ
て、更に最適化された目的コードを生成するステップ
(e)と、を含む上記(1)に記載の最適目的コード生成
方法。 (4)上記ステップ(a)が上記第1の目的コードに注釈
を挿入することを含む、上記(1)に記載の最適目的コ
ード生成方法。 (5)上記ステップ(b1)において、第1の目的コード内
の注釈が第2の目的コード内のプロファイル作成コード
の内容を決定する、上記(4)に記載の最適目的コード
生成方法。 (6)上記ステップ(a)において、ソース・コードをコ
ンパイルするコンパイラによって注釈が第1の目的コー
ドに置かれる、上記(5)に記載の最適目的コード生成
方法。 (7)上記ステップ(a)において、ユーザによって注釈
が第1の目的コードに置かれる、上記(5)に記載の最
適目的コード生成方法。 (8)上記ステップ(c)に続いて、実行の際に追加プロ
ファイル情報を生成する機能を持つプロファイル作成コ
ードを含む第3の目的コードに上記最適化された目的コ
ードを変換し(d1)、該第3の目的コードを実行して追加
プロファイル情報を生成する(d2)ことを含む上記最適化
された目的コードに関する追加プロファイル情報を生成
するステップ(d)と、上記追加プロファイル情報を使用
して上記ソース・コードを再コンパイルすることによっ
て、更に最適化された目的コードを生成するステップ
(e)と、を含む上記(5)に記載の最適目的コード生成
方法。 (9)上記第1の目的コードおよび上記第2の目的コー
ドが同じ機械命令セットを利用する、上記(1)に記載
の最適目的コード生成方法。
【0044】(10)アプリケーションに関する第1の
目的コードを第2の目的コードに変換し、実行の際にプ
ロファイル情報を生成する機能を持つプロファイル作成
コードを該第2の目的コードに追加する変換手段と、該
第2の目的コードを実行してプロファイル情報を生成す
る手段と、を備えるコンピュータ・システム。 (11)該アプリケーションに関して上記第1の目的コ
ードをテストし、妥当性を検査する手段を更に備える、
上記(10)に記載のコンピュータ・システム。 (12)ソース・コードをコンパイルして上記第1の目
的コードを生成するコンパイラを更に備える、上記(1
0)に記載のコンピュータ・システム。 (13)上記第2の目的コードの実行によって生成され
た上記プロファイル情報を利用して上記ソース・コード
を再コンパイルすることによって、最適化された目的コ
ードを生成する手段を備える、上記(12)に記載のコ
ンピュータ・システム。 (14)上記コンパイラが上記第1の目的コードに注釈
を挿入する、上記(12)に記載のコンピュータ・シス
テム。 (15)上記変換手段が上記第1の目的コード内の上記
注釈を利用して上記第2の目的コード内の上記プロファ
イル作成コードの内容を決定する、上記(14)に記載
のコンピュータ・システム。 (16)ユーザが上記注釈を第1の目的コードに置く手
段を含み、上記変換手段が上記第1の目的コード内の該
注釈を利用して上記第2の目的コード内の上記プロファ
イル作成コードの内容を決定する、上記(12)に記載
のコンピュータ・システム。 (17)上記第2の目的コードのサブセットを持つモジ
ュールを記憶する変換コード・キャッシュを更に備える
上記(10)に記載のコンピュータ・システム。 (18)ブロック情報マップへのアドレスと、ブロック
情報テーブルと、を更に備える上記(17)に記載のコ
ンピュータ・システム。 (19)上記第1の目的コードおよび上記第2の目的コ
ードが同じ機械命令セットを利用する、上記(10)に
記載のコンピュータ・システム。
【0045】
【発明の効果】本発明によって、プロファイル作成コー
ドを備えた特別版の目的コードを生成するため独立した
コンパイルを実行する必要性なしに、プロファイルに基
づくプログラムの最適化が可能になる。プロファイル・
データを生成するため、本発明に従った動的変換ルーチ
ンを使用することによって、アプリケーション開発者の
PBO使用が単純化される。更に、本発明の動的変換シ
ステムは、動的データ収集に容易に対応でき、PBOに
対する反復的アプローチにおける注釈の使用を可能にす
る。これによって、一層効率的で大規模な実行時プロフ
ァイル・データ収集が可能になる。
【図面の簡単な説明】
【図1】本発明の好ましい実施形態に従う動的変換ルー
チンを含むコンピュータ・システムのブロック図であ
る。
【図2】本発明の好ましい実施形態に従って動的変換ル
ーチンを利用してプロファイル・データを生成するシス
テムの動作の流れ図である。
【図3】本発明の好ましい実施形態に従ってコードを動
的に変換する動的変換ルーチンの使用を示すブロック図
である。
【図4】本発明の好ましい実施形態に従う動的変換ルー
チンによって使用されるブロック情報マップへのアドレ
ス、ブロック情報テーブルおよび変換されたコード・キ
ャッシュを示すブロック図である。
【図5】本発明の好ましい実施形態に従って動的変換ル
ーチンおよびコード注釈を利用してプロファイル・デー
タを生成するシステムの動作の流れ図である。
【図6】本発明の好ましい実施形態に従って動的変換ル
ーチンおよびユーザ修正可能コード注釈を利用してプロ
ファイル・データを生成するシステムの動作の流れ図で
ある。
【符号の説明】
7 コンピュータ・システム 10、33 アプリケーション 15、44、54 動的変換ルーチン 20 変換コード・キャッシュ 25 ブロック情報マップへのアドレス 26 ブロック情報テーブル 27、28、29 変換目的コード 31、41、51 ソース・コード 36、45、55 プロファイル情報 38、43、53 最適化されたアプリケーション 39 動的変換・実行プロセス 42、52 コンパイラ 56 ユーザ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】アプリケーションに関する最適化された目
    的コードを生成する方法であって、 アプリケーションのソース・コードをコンパイルして該
    アプリケーションに関する第1の目的コードを生成する
    ステップと、 実行の際にプロファイル情報を生成する機能を持つプロ
    ファイル作成コードを含む第2の目的コードに上記第1
    の目的コードを変換し、該第2の目的コードを実行して
    プロファイル情報を生成することを含む上記第1の目的
    コードに関するプロファイル情報を生成するステップ
    と、 上記プロファイル情報を使用して上記ソース・コードを
    再コンパイルすることによって、最適化された目的コー
    ドを生成するステップと、 を含む最適目的コード生成方法。
JP9055902A 1996-03-15 1997-03-11 最適目的コード生成方法 Withdrawn JPH09330233A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US616,608 1984-06-04
US08/616,608 US5815720A (en) 1996-03-15 1996-03-15 Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system

Publications (2)

Publication Number Publication Date
JPH09330233A true JPH09330233A (ja) 1997-12-22
JPH09330233A5 JPH09330233A5 (ja) 2005-02-10

Family

ID=24470226

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9055902A Withdrawn JPH09330233A (ja) 1996-03-15 1997-03-11 最適目的コード生成方法

Country Status (2)

Country Link
US (1) US5815720A (ja)
JP (1) JPH09330233A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000003322A1 (en) * 1998-07-10 2000-01-20 Sony Corporation Method and apparatus for compiling
US6292940B1 (en) 1998-01-26 2001-09-18 Nec Corporation Program complete system and its compile method for efficiently compiling a source program including an indirect call for a procedure
US7665066B2 (en) 2001-04-12 2010-02-16 Siemens Aktiengesellschaft Method for determining and recording system information and function in distributed parallel component based software systems
JP2016517109A (ja) * 2013-04-02 2016-06-09 グーグル インコーポレイテッド ユーザに指向されかつプロファイル主導の最適化用のフレームワーク
JP2020126431A (ja) * 2019-02-04 2020-08-20 株式会社日立製作所 一つ以上の機器において処理を実行するシステム及び方法

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6535903B2 (en) 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
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
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
US6591414B2 (en) * 1996-10-28 2003-07-08 Fujitsu Limited Binary program conversion apparatus, binary program conversion method and program recording medium
US5933643A (en) * 1997-04-17 1999-08-03 Hewlett Packard Company Profiler driven data prefetching optimization where code generation not performed for loops
US5943501A (en) * 1997-06-27 1999-08-24 Wisconsin Alumni Research Foundation Multiple processor, distributed memory computer with out-of-order processing
US6438740B1 (en) * 1997-08-21 2002-08-20 Compaq Information Technologies Group, L.P. System and method for dynamically identifying free registers
US5960202A (en) * 1997-10-31 1999-09-28 Hewlett Packard Company Method and apparatus for automatically logging compiler options and/or overriding compiler options
US5966538A (en) * 1997-10-31 1999-10-12 Hewlett-Packard Company Method and apparatus for automatically determining which compiler options should be used when compiling a computer program
US6289505B1 (en) * 1997-11-18 2001-09-11 Sun Microsystems, Inc. Method, apparatus and computer programmed product for binary re-optimization using a high level language compiler
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6158049A (en) * 1998-08-11 2000-12-05 Compaq Computer Corporation User transparent mechanism for profile feedback optimization
US6223339B1 (en) * 1998-09-08 2001-04-24 Hewlett-Packard Company System, method, and product for memory management in a dynamic translator
US6324689B1 (en) * 1998-09-30 2001-11-27 Compaq Computer Corporation Mechanism for re-writing an executable having mixed code and data
US6351844B1 (en) * 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US6275981B1 (en) * 1998-11-12 2001-08-14 Hewlett-Packard Company Method and system for correlating profile data dynamically generated from an optimized executable program with source code statements
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6415436B1 (en) * 1998-12-11 2002-07-02 Hewlett-Packard Company Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
GB2344907A (en) * 1998-12-19 2000-06-21 Int Computers Ltd Instruction translation and execution mechanism
US6308320B1 (en) 1999-01-15 2001-10-23 Hewlett-Packard Company Method and apparatus for incremental selective compilation of intermediate code files during computer system compilation and linking
US6978450B2 (en) * 1999-01-15 2005-12-20 Hewlett-Packard Development Company, L.P. Method and system for optimizing compilation time of a program by selectively reusing object code
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6698011B1 (en) * 1999-01-29 2004-02-24 Intel Corporation Isolation of program translation failures
US6662354B1 (en) 1999-01-29 2003-12-09 Unisys Corporation Determining destinations of a dynamic branch
US7058932B1 (en) 1999-04-19 2006-06-06 Unisys Corporation System, computer program product, and methods for emulation of computer programs
US6622300B1 (en) 1999-04-21 2003-09-16 Hewlett-Packard Development Company, L.P. Dynamic optimization of computer programs using code-rewriting kernal module
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
JP2001056764A (ja) * 1999-08-18 2001-02-27 Access:Kk 仮想計算機の実行方法および装置
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6922829B2 (en) * 1999-10-12 2005-07-26 Texas Instruments Incorporated Method of generating profile-optimized code
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6785801B2 (en) * 2000-02-09 2004-08-31 Hewlett-Packard Development Company, L.P. Secondary trace build from a cache of translations in a caching dynamic translator
US20010049818A1 (en) * 2000-02-09 2001-12-06 Sanjeev Banerjia Partitioned code cache organization to exploit program locallity
US20020066081A1 (en) * 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US6725335B2 (en) * 2000-02-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for fast unlinking of a linked branch in a caching dynamic translator
US7120906B1 (en) * 2000-04-28 2006-10-10 Silicon Graphics, Inc. Method and computer program product for precise feedback data generation and updating for compile-time optimizations
US7725885B1 (en) * 2000-05-09 2010-05-25 Hewlett-Packard Development Company, L.P. Method and apparatus for trace based adaptive run time compiler
US7240342B1 (en) * 2000-06-30 2007-07-03 Intel Corporation User transparent continuous compilation
US6874140B1 (en) * 2000-07-31 2005-03-29 Microsoft Corporation Debug annotations
US7735072B1 (en) * 2000-08-11 2010-06-08 International Business Machines Corporation Method and apparatus for profiling computer program execution
US7000227B1 (en) * 2000-09-29 2006-02-14 Intel Corporation Iterative optimizing compiler
US20020199179A1 (en) * 2001-06-21 2002-12-26 Lavery Daniel M. Method and apparatus for compiler-generated triggering of auxiliary codes
US20030066060A1 (en) * 2001-09-28 2003-04-03 Ford Richard L. Cross profile guided optimization of program execution
US6976254B2 (en) * 2001-11-28 2005-12-13 Esmertec Ag Inter-method control transfer for execution engines with memory constraints
US7237234B2 (en) * 2001-12-13 2007-06-26 Texas Instruments Incorporated Method for selective solicitation of user assistance in the performance tuning process
US7165242B2 (en) * 2002-03-19 2007-01-16 Sun Microsystems, Inc. Methods and systems for reducing performance overhead of code instrumentation based profiling
US20040088690A1 (en) * 2002-08-27 2004-05-06 Hayim Shaul Method for accelerating a computer application by recompilation and hardware customization
US7058936B2 (en) * 2002-11-25 2006-06-06 Microsoft Corporation Dynamic prefetching of hot data streams
US7140008B2 (en) * 2002-11-25 2006-11-21 Microsoft Corporation Dynamic temporal optimization framework
US7343598B2 (en) * 2003-04-25 2008-03-11 Microsoft Corporation Cache-conscious coallocation of hot data streams
US7194732B2 (en) * 2003-06-26 2007-03-20 Hewlett-Packard Development Company, L.P. System and method for facilitating profiling an application
JP4184900B2 (ja) * 2003-08-26 2008-11-19 富士通株式会社 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US7587709B2 (en) * 2003-10-24 2009-09-08 Microsoft Corporation Adaptive instrumentation runtime monitoring and analysis
US20050149913A1 (en) * 2003-12-29 2005-07-07 Yun Wang Apparatus and methods to optimize code in view of masking status of exceptions
US7437712B1 (en) * 2004-01-22 2008-10-14 Sprint Communications Company L.P. Software build tool with revised code version based on description of revisions and authorizing build based on change report that has been approved
US8065665B1 (en) * 2004-02-28 2011-11-22 Oracle America, Inc. Method and apparatus for correlating profile data
US7721268B2 (en) * 2004-10-01 2010-05-18 Microsoft Corporation Method and system for a call stack capture
US7716647B2 (en) * 2004-10-01 2010-05-11 Microsoft Corporation Method and system for a system call profiler
US7607119B2 (en) * 2005-04-26 2009-10-20 Microsoft Corporation Variational path profiling
US7770153B2 (en) * 2005-05-20 2010-08-03 Microsoft Corporation Heap-based bug identification using anomaly detection
US7912877B2 (en) 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
US20070006167A1 (en) * 2005-05-31 2007-01-04 Chi-Keung Luk Optimizing binary-level instrumentation via instruction scheduling
JP4783612B2 (ja) * 2005-10-12 2011-09-28 富士通セミコンダクター株式会社 拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体
JP2009515243A (ja) * 2005-11-04 2009-04-09 インヒロン ゲーエムベーハー ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法
US7975263B2 (en) * 2006-01-10 2011-07-05 Intel Corporation Method and apparatus for generating run time profiles for program compilation
US7792666B2 (en) * 2006-05-03 2010-09-07 Sony Computer Entertainment Inc. Translation block invalidation prehints in emulation of a target system on a host system
US7813909B2 (en) 2006-05-03 2010-10-12 Sony Computer Entertainment Inc. Register mapping in emulation of a target system on a host system
US7770050B2 (en) * 2006-05-03 2010-08-03 Sony Computer Entertainment Inc. Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
US7962901B2 (en) 2006-04-17 2011-06-14 Microsoft Corporation Using dynamic analysis to improve model checking
US7926043B2 (en) * 2006-06-20 2011-04-12 Microsoft Corporation Data structure path profiling
US20080034349A1 (en) * 2006-08-04 2008-02-07 Microsoft Corporation Incremental program modification based on usage data
US8060356B2 (en) 2007-12-19 2011-11-15 Sony Computer Entertainment Inc. Processor emulation using fragment level translation
US9235390B1 (en) * 2008-03-31 2016-01-12 Symantec Corporation Application optimization for use based on feature popularity
US9201793B2 (en) * 2008-05-30 2015-12-01 Red Hat, Inc. Facilitating profiling of applications for efficient loading
US8418155B2 (en) * 2009-02-10 2013-04-09 International Business Machines Corporation Generating parallel SIMD code for an arbitrary target architecture
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
JP5792577B2 (ja) * 2010-11-10 2015-10-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 動的バイナリ・トランスレータに関するメモリ管理のための装置、方法、およびコンピュータ・プログラム
US9367429B2 (en) * 2012-12-21 2016-06-14 Microsoft Technology Licensing, Llc Diagnostics of declarative source elements
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
JP2015069220A (ja) * 2013-09-26 2015-04-13 富士通株式会社 性能評価プログラム生成装置、方法、及びプログラム
US9213532B2 (en) 2013-09-26 2015-12-15 Oracle International Corporation Method for ordering text in a binary
US9606783B2 (en) * 2013-10-14 2017-03-28 International Business Machines Corporation Dynamic code selection based on data policies
GB2527567A (en) 2014-06-26 2015-12-30 Ibm Optimising software code
JP2017156937A (ja) * 2016-03-01 2017-09-07 ヤンマー株式会社 端末装置およびソフトウェア書き換えプログラム
US10853044B2 (en) * 2017-10-06 2020-12-01 Nvidia Corporation Device profiling in GPU accelerators by using host-device coordination
US10956136B2 (en) 2018-10-16 2021-03-23 Ebay, Inc. User interface resource file optimization
US11138091B2 (en) * 2018-12-12 2021-10-05 Sap Se Regression analysis platform

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991003791A1 (en) * 1989-09-01 1991-03-21 Amdahl Corporation Operating system and data base
US5481708A (en) * 1992-06-05 1996-01-02 Borland International, Inc. System and methods for optimizing object-oriented compilations
US5471564A (en) * 1992-07-10 1995-11-28 Microsoft Corporation System and method for dynamic printer timeout
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
US5475842A (en) * 1993-08-11 1995-12-12 Xerox Corporation Method of compilation optimization using an N-dimensional template for relocated and replicated alignment of arrays in data-parallel programs for reduced data communication during execution
US5375242A (en) * 1993-09-29 1994-12-20 Hewlett-Packard Company Compiler architecture for cross-module optimization
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292940B1 (en) 1998-01-26 2001-09-18 Nec Corporation Program complete system and its compile method for efficiently compiling a source program including an indirect call for a procedure
WO2000003322A1 (en) * 1998-07-10 2000-01-20 Sony Corporation Method and apparatus for compiling
US7665066B2 (en) 2001-04-12 2010-02-16 Siemens Aktiengesellschaft Method for determining and recording system information and function in distributed parallel component based software systems
JP2016517109A (ja) * 2013-04-02 2016-06-09 グーグル インコーポレイテッド ユーザに指向されかつプロファイル主導の最適化用のフレームワーク
US9760351B2 (en) 2013-04-02 2017-09-12 Google Inc. Framework for user-directed profile-driven optimizations
US10365903B2 (en) 2013-04-02 2019-07-30 Google Llc Framework for user-directed profile-driven optimizations
US11321061B2 (en) 2013-04-02 2022-05-03 Google Llc Framework for user-directed profile-driven optimizations
US11675574B2 (en) 2013-04-02 2023-06-13 Google Llc Framework for user-directed profile-driven optimizations
US12450040B2 (en) 2013-04-02 2025-10-21 Google Llc Framework for user-directed profile-driven optimizations
JP2020126431A (ja) * 2019-02-04 2020-08-20 株式会社日立製作所 一つ以上の機器において処理を実行するシステム及び方法

Also Published As

Publication number Publication date
US5815720A (en) 1998-09-29

Similar Documents

Publication Publication Date Title
US5815720A (en) Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system
US5539907A (en) System for monitoring computer system performance
US5732273A (en) System for monitoring compute system performance
US7353508B2 (en) Method, apparatus and article for generation of debugging information
US7725883B1 (en) Program interpreter
US5768592A (en) Method and apparatus for managing profile data
US5956512A (en) Computer program debugging in the presence of compiler synthesized variables
US9495136B2 (en) Using aliasing information for dynamic binary optimization
US8522222B2 (en) Tracing just-in-time compilation with pointers to local variables
JP2004062858A (ja) データ処理装置内のアプリケーション・コードのコンパイル
US20120198427A1 (en) Ensuring Register Availability for Dynamic Binary Optimization
JP2010198628A (ja) プログラムコード変換方法
JP5719278B2 (ja) 情報処理装置、プロファイル対象決定プログラム及び方法
US6925636B2 (en) Method and apparatus for refining an alias set of address taken variables
CN116775127A (zh) 一种基于RetroWrite框架的静态符号执行插桩方法
US8056061B2 (en) Data processing device and method using predesignated register
Besnard et al. A framework for automatic and parameterizable memoization
Magnusson Partial translation
MacLaren Inline routines in VAXELN Pascal
Soest Compiling Second-Order Accelerate Programs to First-Order TensorFlow Graphs
JPH02176938A (ja) 機械語命令最適化方式
Meurer OCamlJIT 2.0-Faster Objective Caml
Korsholm Flash memory in embedded Java programs
Yang et al. Efficient register mapping and allocation in LaTTe, an open-source Java just-in-time compiler
Plumbridge et al. Translating Java for resource constrained embedded systems

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040305

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040305

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20060317