JPH10240543A - オブジェクト・コード最適化装置 - Google Patents
オブジェクト・コード最適化装置Info
- Publication number
- JPH10240543A JPH10240543A JP10031068A JP3106898A JPH10240543A JP H10240543 A JPH10240543 A JP H10240543A JP 10031068 A JP10031068 A JP 10031068A JP 3106898 A JP3106898 A JP 3106898A JP H10240543 A JPH10240543 A JP H10240543A
- Authority
- JP
- Japan
- Prior art keywords
- object code
- program
- executed
- optimized
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
ャおよびリビジョンレベルで実行することのできるオブ
ジェクト・コードの容易な最適化を提供する。 【解決手段】プログラムの実行時にその実行経路に関す
るランタイム・データが収集される。実行されるオブジ
ェクト・コードが分析され、非最適な命令ストリームが
求められる。次に、この実行可能なコードはリアルタイ
ムで変更され、現在のシステム構成上で実行される実デ
ータで最も高速かつ効率的に実行することのできる最適
化されたオブジェクト・コードが生成される。
Description
クト・コードの最適化に関し、特にオブジェクト・コー
ドの実行中のリアルタイムでのオブジェクト・コードの
最適化に関する。
づく最適化を用いてより良好なオブジェクト・コードの
生成を可能とする。最適化すべきオブジェクト・コード
は、生成され、訓練データを用いて実行され、その訓練
データを用いたオブジェクト・コードの実行中に収集さ
れた情報を用いて再生成され、その特定の訓練データに
対してそのオブジェクトを最適化される。フィードバッ
クに基づく最適化においては、コンパイラに、データす
なわちそのコードによって処理される訓練データのタイ
プに関する情報を、供給することによって、生成される
オブジェクト・コードの性能が向上する。
コード・プログラムの最適化に用いるフィードバックに
基づく最適化処理を示す。第1のステップ10は計測器
によるプログラムのコンパイルである。ソース・コード
12がコンパイラおよび最適化装置計測器14によって
コンパイルされ注釈付きオブジェクト・コード16が生
成される。第2のステップ20は訓練入力データによる
プログラムの実行である。注釈付きオブジェクト・コー
ド16が訓練データ22を用いて実行され、特定の訓練
データを用いたこのプログラムの実行について実行統計
24およびプログラム出力26が生成される。第3のス
テップ30は生成された実行統計に基づくプログラムの
最適化である。最適化装置32がステップ2において生
成された実行統計およびステップ1によって生成された
注釈付きオブジェクト・コード16を使用して最適化さ
れたオブジェクト・コード34を生成する。第4のステ
ップ40は試験ではなく実際の入力データを用いたプロ
グラムの実行である。ステップ3で生成された最適化オ
ブジェクト・コード34が実際の入力データ42を用い
て実行され、最適化されたプログラム出力26’が生成
される。
がステップ2で用いられる訓練データ22と大きく異な
る場合、オブジェクト・コードの最適化が妨げられ、実
行されるオブジェクト・コードの性能はそれに応じて低
下することに注意しなければならない。訓練データ22
が実データ42に近いほど、最適化オブジェクト・コー
ド34は良好なものになる。したがって、フィードバッ
クに基づく最適化の成否は実行統計の生成に用いられる
試験データの質に大きく依存する。
に基づく最適化にはいくつかの問題点があった。まず、
上述したように、最適化オブジェクト・コード34はあ
る特定のプロセッサ・アーキテクチャのある特定のリビ
ジョンおよびリビジョンレベルを表わす特定の試験デー
タ22についてのみ最適化される。最適化オブジェクト
・コード34が後に異なるプロセッサ・アーキテクチャ
あるいは異なるリビジョンレベルで実行される場合、そ
の異なるアーキテクチャあるいはリビジョンに対しては
最適化されたオブジェクト・コードとはいえない。した
がって、当該技術分野において、必要に応じて異なるプ
ロセッサ・アーキテクチャおよびリビジョンレベルで実
行することのできるオブジェクト・コードの容易な最適
化を可能にすることが必要とされている。
は所与の訓練データ22に基づいて生成され、したがっ
てその特定の訓練データ22についてのみ最適化され
る。そのプログラムが実行すると予想されるデータ集合
に、訓練データと大きく異なるものがある場合、生成さ
れるオブジェクト・コードは最適なものとはならない。
このことから、常にオブジェクト・コードとともに用い
られる実データ22に一致したあるいは少なくともそれ
に近い訓練データ22を用いることが好適であることは
明らかである。
ドバックに基づく最適化法のための訓練データ22とし
て機能する実データは、常に入手できるわけではない。
秘密保持上の配慮から、ソフトウエア・ベンダーは一般
的にはソフトウエア・アプリケーションのソース・コー
ドの供給を望まず、顧客の側でもその所有権を主張でき
るデータを訓練データとして使用すべくソフトウエア・
ベンダーに供給することを望まない。このような状況で
は、顧客に供給される最終的な実行可能なオブジェクト
・コードは顧客のデータ上で訓練されておらず、したが
って最適化されたオブジェクト・コードとはなっていな
い。したがって、当該技術分野において訓練データを用
いて訓練を実行する必要なく最適化されたオブジェクト
・コードを生成可能とすることが必要とされている。
適化法ではプログラム・ソース・コードが必要である。
前述したように、ソフトウエア・ベンダーはそのソフト
ウエア・アプリケーションのソース・コードの公開には
当然消極的であり、フィードバックに基づく最適化はオ
ブジェクト・コードの最適化の実行可能性の高い方法で
はない。したがって、当該技術分野において、プログラ
ム・ソース・コードを入手できない場合にも最適化され
たオブジェクト・コードを生成可能とすることが必要と
されている。
を用いた実行可能なオブジェクト・コードの最適化は、
最適化オブジェクト・コードの生成時に実データを用い
て実行されることなく発生する静的な方法である。フィ
ードバックに基づく方法を用いた最適化の静的な性質に
よって、オブジェクト・コードはプログラム自体がその
オブジェクト・コードを実行していく時にリアルタイム
で動的に最適化することができない。プログラムの実行
時にオブジェクト・コードを動的に最適化することによ
って、そのプログラムが実行中の実データに対して仮に
そのデータが変化したとしても確実に最適化されるとい
う明らかな利点が得られる。したがって、当該技術分野
においてプログラムのオブジェクト・コードをそのプロ
グラムの実行時にリアルタイムで動的に最適化すること
を可能にすることがさらに必要とされている。
必要な多段処理の構成にかかわる問題点は、ユーザーに
その使用をためらわせる煩雑な方法にある。図1に示す
ように、従来のフィードバックに基づく最適化はプログ
ラムを最適化されたオブジェクト・コードで実行するに
は4つの別々のステップを必要とする。これらのステッ
プはユーザーが実行および監視しなければならない。さ
らに、上述したように、これらのステップをすべて実行
した後にも、生成された最適化オブジェクト・コードが
実際にそのプログラムで実行すべき実データに対して最
適である保証はない。当該技術分野において、複雑性お
よびプログラムのユーザーに要求される監視を最小限と
してオブジェクト・コードの最適化を可能にすることが
必要とされている。
的は、必要に応じて異なるプロセッサ・アーキテクチャ
およびリビジョンレベルで実行することのできるオブジ
ェクト・コードの容易な最適化を可能にすることであ
る。
ことを必要とせず最適化されたオブジェクト・コードを
生成可能とすることである。
・コードにアクセスできない場合にも最適化されたオブ
ジェクト・コードを生成可能とすることである。
ェクト・コードをそのプログラムの実行時にリアルタイ
ムで動的に最適化することを可能にすることである。
ラムのユーザーに要求される監視を最小限としてオブジ
ェクト・コードの最適化を可能にすることである。
ス駆動オブジェクト・コード最適化装置によって実行可
能なオブジェクト・コードの動的なリアルタイムの最適
化を可能とする。この動的なトレース駆動オブジェクト
・コード最適化装置は、リアルタイムで収集された実行
トレースから収集されたデータに基づいて実行可能なオ
ブジェクト・コードのリアルタイムの最適化を実行す
る。プログラムの実行時にその実行経路に関するランタ
イム・データが収集される。実行されるオブジェクト・
コードが分析され、非最適な命令ストリームが求められ
る。次に、この実行可能なコードはリアルタイムで変更
され、現在のシステム構成上で実行される実データで最
も高速かつ効率的に実行することのできる最適化された
オブジェクト・コードが生成される。
コードの動的なリアルタイムの最適化を可能とする最適
化法を提供する。本発明の動的トレース駆動オブジェク
ト・コード最適化装置はリアルタイムで収集された実行
トレースから集められたデータに基づいて実行可能オブ
ジェクト・コードのリアルタイムの最適化を行なうもの
である。実行可能コードはリアルタイムで変更され、実
データを用いる現在のシステム上でより高速かつ効率的
に実行可能な最適化されたオブジェクト・コードが生成
される。
プログラムの実行時にその実行経路に関するランタイム
・データを収集する。この最適化装置は実行されるコー
ドを分析して、非最適な命令ストリームを求め、このコ
ードをリアルタイムで変更して、そのプログラムで実行
される所与のデータについて性能を向上させることので
きる最適化されたオブジェクト・コードを生成する。
ェクト・コード最適化装置によって、プログラムの実行
時にプログラムオブジェクト・コードをリアルタイムで
動的に最適化するのに用いられる処理を示す。次に、本
発明に係るオブジェクト・コード最適化のための2ステ
ップからなる処理について説明する。第1のステップ5
0ではソース・コードをオブジェクト・コードにコンパ
イルする。ステップ1に示すように、最適化すべきプロ
グラムのソース・コード52がコンパイラおよび最適化
装置54を用いてコンパイルされ、オブジェクト・コー
ド56が生成される。オブジェクト・コード56が得ら
れた後には、第1のステップ50を反復する必要はな
い。したがって、顧客がソフトウエア・ベンダーからオ
ブジェクト・コードを購入する場合、顧客はステップ1
を実行する必要はない。
タを用いてコンパイルされたオブジェクト・コードが実
行される。ステップ2に示すように、オブジェクト・コ
ード56が入力データ62を用いて実行され、プログラ
ム出力70が生成される。動的最適化装置64はオペレ
ーティング・システム・カーネル66の処理制御インタ
ーフェース67および支援ドライバ68と通信してオブ
ジェクト・コード56を最適化する。オブジェクト・コ
ード56の最適化はオブジェクト・コードをより効率的
したがってより高速にするため、この最適化がプログラ
ムのランタイムに良好な影響を及ぼすことは明らかであ
る。
クト・コードをデバッグする手段を提供する。処理制御
インターフェース67はプログラムの実行を停止し、オ
ブジェクト・コードをリアルタイムで変更してデバッグ
機能を実行する能力を有する。処理制御インターフェー
ス67はこの機能を実行するさまざまなインターフェー
スのうちの任意のものとすることができる。たとえば、
処理制御インターフェース67はUNIXシステムに用
いられるタイプのpトレース・インターフェースとする
ことができる。支援ドライバ68はプログラムの実行ト
レースをリアルタイムで収集する。実行トレースはその
プログラムの実行経路に関する情報を提供する。
体の実行時にリアルタイムで発生することに注意しなけ
ればならない。したがって、動的最適化装置64による
オブジェクト・コード56の最適化は動的な性質を持
ち、オブジェクト・コードをプログラム実行時に発生す
る可能性のある入力データ62の任意の変化に動的に適
応させるように適合されている。
任意の処理の実行を周期的にトレースしてそれを自動的
に最適化するように構成することができる。あるいは、
最適化すべき特定のプログラムの発見に必要な情報で起
動することもできる。たとえば、この動的トレース駆動
オブジェクト・コード最適化装置をコンピュータのオペ
レーティング・システムに組み込んで、電源投入時およ
びユーザーによる任意のプログラムの実行開始時にユー
ザーに知られることなく発生するようにすることができ
る。いずれの場合にも、目標プログラムが実行されると
き、その実行に関するデータが収集され、そのオブジェ
クト・コードがその目標プログラムのより高速で効率的
な実行を可能とするように変更される。
ェクト・コード最適化装置を、オブジェクト・コードの
分岐の予測がプロセッサ・アーキテクチャの関数として
容易に確認されうるシステムにおいて、使用する場合に
ついて考察する。本発明によれば、リアルタイムの実行
トレースから収集された情報に基づいて分岐予測を非常
に簡単に変更することができる。実行中のコードの一部
より高速に実行される「同義語(synonym)」を有する任
意のオブジェクト・コードシーケンスを容易にまた安全
に最適化し、実行中のコードのその部分に替えて挿入す
ることができる。
に図示および説明したが、当業者には本発明の精神およ
び範囲から逸脱することなくその形態および細部にさま
ざまな変更を加えることが可能である。
が、以下、本発明の各実施態様の例を示す。
・コードを前記プログラムの実行時にリアルタイムで動
的に最適化する方法であって、前記プログラムの実行時
に前記オブジェクト・コードの実行トレースを収集する
ステップと、前記実行トレースを分析して前記オブジェ
クト・コードの1以上の非最適な命令ストリームを同定
するステップと、前記プログラムの実行時に前記オブジ
ェクト・コードを変更して前記プログラムによって実行
されるデータ集合に対する前記1以上の非最適な命令ス
トリームを最適化して最適化されたオブジェクト・コー
ドを生成するステップとを有することを特徴とする方
法。
前記オブジェクト・コード上の実行トレースを収集する
ステップは、前記プログラムを実行するオペレーティン
グ・システムのドライバによって実行されることを特徴
とする実施態様1記載の方法。
て前記オブジェクト・コードの1以上の非最適な命令ス
トリームを同定するステップは、前記プログラムを実行
するオペレーティング・システムの処理制御インターフ
ェースによって実行されることを特徴とする実施態様1
記載の方法。
ースは、前記オブジェクト・コードの非最適な命令スト
リームを同定するための前記オブジェクト・コードのデ
バッグを可能とすることを特徴とする実施態様3記載の
方法。
ステムはUNIXオペレーティング・システムであり、
前記処理制御インターフェースはpトレース・インター
フェースであることを特徴とする実施態様4記載の方
法。
を変更して前記1以上の非最適な命令ストリームを最適
化するステップは、動的トレース駆動オブジェクト・コ
ード最適化装置によって実行されることを特徴とする実
施態様1記載の方法。
を変更して前記1以上の非最適な命令ストリームを最適
化して最適化されたオブジェクト・コードを生成するス
テップがさらに、前記最適化されたオブジェクト・コー
ドを保管するステップを含むことを特徴とする実施態様
1記載の方法。
前記オブジェクト・コードを変更して最適化されたオブ
ジェクト・コードを生成する前記ステップの後、さらに
前記プログラムの実行時に前記最適化されたオブジェク
ト・コード上の実行トレースを周期的に収集するステッ
プと、前記実行トレースを周期的に分析して前記最適化
されたオブジェクト・コードの1以上の非最適な命令ス
トリームを同定するステップであって、前記最適化され
たオブジェクト・コードの前記1以上の非最適な命令ス
トリームは前記プログラムによって実行される前記デー
タ集合によって判定されるステップと、前記プログラム
の実行時に必要に応じて前記最適化されたオブジェクト
・コードを変更して前記プログラムによって実行される
前記データ集合に対する前記1以上の非最適な命令スト
リームを最適化して、最適化し直されたオブジェクト・
コードを生成するステップとを含むことを特徴とする実
施態様1記載の方法。
ジェクト・コードの最適化は前記プログラムのユーザー
による監視を必要とすることなく自動的に発生すること
を特徴とする実施態様1記載の方法。
に前記オブジェクト・コードの一部を変更して、前記プ
ログラムによって実行される前記データ集合に対する前
記1以上の非最適な命令ストリームを最適化して最適化
されたオブジェクト・コードを生成することを特徴とす
る実施態様1記載の方法。
ト・コードを前記プログラムの実行時にリアルタイムで
動的に最適化する方法であって、コンピュータによって
実行される、前記プログラムの実行時に前記オブジェク
ト・コード上の実行トレースを収集するステップと、前
記実行トレースを分析して前記オブジェクト・コードの
1以上の非最適な命令ストリームを同定するステップで
あって、前記オブジェクト・コードの前記1以上の非最
適な命令ストリームは前記プログラムによって実行され
るデータ集合によって判定されるステップと、前記プロ
グラムの実行時に前記オブジェクト・コードの一部を変
更して前記プログラムによって実行される前記データ集
合に対する前記1以上の非最適な命令ストリームを最適
化して、最適化されたオブジェクト・コードを生成する
ステップとを有することを特徴とする方法。
に前記オブジェクト・コード上の実行トレースを収集す
るステップは、前記プログラムを実行するオペレーティ
ング・システムのドライバによって実行されることを特
徴とする実施態様11記載の方法。
して前記オブジェクト・コードの1以上の非最適な命令
ストリームを同定するステップは、前記プログラムを実
行するオペレーティング・システムの処理制御インター
フェースによって実行されることを特徴とする実施態様
11記載の方法。
ェースは、前記オブジェクト・コードの非最適な命令ス
トリームを同定するための前記オブジェクト・コードの
デバッグを可能とすることを特徴とする実施態様13記
載の方法。
システムはUNIXオペレーティング・システムであ
り、前記処理制御インターフェースはpトレース・イン
ターフェースであることを特徴とする実施態様14記載
の方法。
ドを変更して前記1以上の非最適な命令ストリームを最
適化するステップは、動的トレース駆動オブジェクト・
コード最適化装置によって実行されることを特徴とする
実施態様11記載の方法。
ドの一部を変更して前記1以上の非最適な命令ストリー
ムを最適化するステップは、オブジェクト・コードの最
適化された部分を前記1以上の非最適な命令ストリーム
の替わりに前記プログラムに挿入することによって実行
されることを特徴とする実施態様11記載の方法。
に前記オブジェクト・コードの一部を変更して最適化さ
れたオブジェクト・コードを生成する前記ステップの
後、さらに前記プログラムの実行時に前記最適化された
オブジェクト・コード上の実行トレースを周期的に収集
するステップと、前記実行トレースを周期的に分析して
前記最適化されたオブジェクト・コードの1以上の非最
適な命令ストリームを同定するステップであって、前記
最適化されたオブジェクト・コードの前記1以上の非最
適な命令ストリームは前記プログラムによって実行され
る前記データ集合によって判定されるステップと、前記
プログラムの実行時に必要に応じて前記最適化されたオ
ブジェクト・コードを変更して前記プログラムによって
実行される前記データ集合に対する前記1以上の非最適
な命令ストリームを最適化して、最適化し直されたオブ
ジェクト・コードを生成するステップとを含むことを特
徴とする実施態様11記載の方法。
ドを変更して前記1以上の非最適な命令ストリームを最
適化して最適化されたオブジェクト・コードを生成する
ステップの後、前記最適化されたオブジェクト・コード
を保管するステップを含むことを特徴とする実施態様1
1記載の方法。
ブジェクト・コードの一部の最適化は前記プログラムの
ユーザーによる監視を必要とすることなく自動的に発生
することを特徴とする実施態様11記載の方法。
実行時に前記オブジェクト・コードをリアルタイムに動
的に最適化するコンピュータプログラムを含むコンピュ
ータ読み取り可能な記憶媒体であって、前記プログラム
の実行時に前記オブジェクト・コード上の実行トレース
を収集する命令と、前記実行トレースを分析して前記オ
ブジェクト・コードの1以上の非最適な命令ストリーム
を同定する命令であって、前記オブジェクト・コードの
前記1以上の非最適な命令ストリームは前記プログラム
によって実行されるデータ集合によって判定される命令
と、さらに、前記プログラムの実行時に前記オブジェク
ト・コードの一部を変更して前記プログラムによって実
行される前記データ集合に対する前記1以上の非最適な
命令ストリームを最適化して、最適化されたオブジェク
ト・コードを生成する命令とを実行させるためのプログ
ラムを記録したことを特徴とする記憶媒体。
に前記オブジェクト・コード上の実行トレースを収集す
る命令は、前記プログラムを実行するオペレーティング
・システムのドライバによって実行されることを特徴と
する実施態様21記載の記録媒体。
して前記オブジェクト・コードの1以上の非最適な命令
ストリームを同定する命令は、前記プログラムを実行す
るオペレーティング・システムの処理制御インターフェ
ースによって実行されることを特徴とする実施態様21
記載の記録媒体。
ェースは、前記オブジェクト・コードの非最適な命令ス
トリームを同定するための前記オブジェクト・コードの
デバッグを可能とすることを特徴とする実施態様23記
載の記録媒体。
システムはUNIXオペレーティング・システムであ
り、前記処理制御インターフェースはpトレース・イン
ターフェースであることを特徴とする実施態様24記載
の記録媒体。
ドを変更して前記1以上の非最適な命令ストリームを最
適化する命令は、動的トレース駆動オブジェクト・コー
ド最適化装置によって実行されることを特徴とする実施
態様21記載の記録媒体。
ドを変更して前記1以上の非最適な命令ストリームを最
適化して最適化されたオブジェクト・コードを生成する
命令の後、前記最適化されたオブジェクト・コードを保
管する命令を含むことを特徴とする実施態様21記載の
記録媒体。
に前記オブジェクト・コードを変更して最適化されたオ
ブジェクト・コードを生成する前記命令の後、さらに前
記プログラムの実行時に前記最適化されたオブジェクト
・コード上の実行トレースを周期的に収集する命令と、
前記実行トレースを周期的に分析して前記最適化された
オブジェクト・コードの1以上の非最適な命令ストリー
ムを同定する命令であって、前記最適化されたオブジェ
クト・コードの前記1以上の非最適な命令ストリームは
前記プログラムによって実行される前記データ集合によ
って判定される命令と、さらに、前記プログラムの実行
時に必要に応じて前記最適化されたオブジェクト・コー
ドを変更して前記プログラムによって実行される前記デ
ータ集合に対する前記1以上の非最適な命令ストリーム
を最適化して、最適化し直されたオブジェクト・コード
を生成する命令とを含むことを特徴とする実施態様21
記載の記録媒体。
ブジェクト・コードの最適化は前記プログラムのユーザ
ーによる監視を必要とすることなく自動的に発生するこ
とを特徴とする実施態様21記載の記録媒体。
実行時に前記オブジェクト・コードをリアルタイムに動
的に最適化するコンピュータプログラムを含むコンピュ
ータ読み取り可能な記憶媒体であって、コンピュータに
よって実行される、前記プログラムの実行時に前記オブ
ジェクト・コード上の実行トレースを収集する命令と、
前記実行トレースを分析して前記オブジェクト・コード
の1以上の非最適な命令ストリームを同定する命令であ
って、前記オブジェクト・コードの前記1以上の非最適
な命令ストリームは前記プログラムによって実行される
データ集合によって判定される命令と、さらに、前記プ
ログラムの実行時に前記オブジェクト・コードの一部を
変更して前記プログラムによって実行される前記データ
集合に対する前記1以上の非最適な命令ストリームを最
適化して、最適化されたオブジェクト・コードを生成す
る命令とを実行させるためのプログラムを記録したこと
を特徴とする媒体。
に前記オブジェクト・コード上の実行トレースを収集す
る命令は、前記プログラムを実行するオペレーティング
・システムのドライバによって実行されることを特徴と
する実施態様30記載の記録媒体。
して前記オブジェクト・コードの1以上の非最適な命令
ストリームを同定する命令は、前記プログラムを実行す
るオペレーティング・システムの処理制御インターフェ
ースによって実行されることを特徴とする実施態様30
記載の記録媒体。
ェースは、前記オブジェクト・コードの非最適な命令ス
トリームを同定するための前記オブジェクト・コードの
デバッグを可能とすることを特徴とする実施態様32記
載の記録媒体。
システムはUNIXオペレーティング・システムであ
り、前記処理制御インターフェースはpトレース・イン
ターフェースであることを特徴とする実施態様33記載
の記録媒体。
ドの一部を変更して前記1以上の非最適な命令ストリー
ムを最適化する命令は、動的トレース駆動オブジェクト
・コード最適化装置によって実行されることを特徴とす
る実施態様30記載の記録媒体。
ドの一部を変更して前記1以上の非最適な命令ストリー
ムを最適化する命令は、オブジェクト・コードの最適化
された部分を前記1以上の非最適な命令ストリームの替
わりに前記プログラムに挿入することによって実行され
ることを特徴とする実施態様30記載の記録媒体。
に前記オブジェクト・コードの一部を変更して最適化さ
れたオブジェクト・コードを生成する前記命令の後、さ
らに前記プログラムの実行時に前記最適化されたオブジ
ェクト・コード上の実行トレースを周期的に収集する命
令と、前記実行トレースを周期的に分析して前記最適化
されたオブジェクト・コードの1以上の非最適な命令ス
トリームを同定する命令であって、前記最適化されたオ
ブジェクト・コードの前記1以上の非最適な命令ストリ
ームは前記プログラムによって実行される前記データ集
合によって判定される命令と、さらに、前記プログラム
の実行時に必要に応じて前記最適化されたオブジェクト
・コードの少なくとも一部を変更して前記プログラムに
よって実行される前記データ集合に対する前記1以上の
非最適な命令ストリームを最適化して、最適化し直され
たオブジェクト・コードを生成する命令とを含むことを
特徴とする実施態様30記載の記録媒体。
ドを変更して前記1以上の非最適な命令ストリームを最
適化して最適化されたオブジェクト・コードを生成する
命令の後、前記最適化されたオブジェクト・コードを保
管する命令を含むことを特徴とする実施態様30記載の
記録媒体。
ブジェクト・コードの一部の最適化は前記プログラムの
ユーザーによる監視を必要とすることなく自動的に発生
することを特徴とする実施態様30記載の記録媒体。
・コード最適化装置は従来のフィードバックに基づく最
適化装置に比べて大きな利点を有する。まず、本発明に
よれば、異なるプロセッサ・アーキテクチャおよびリビ
ジョンレベル上で実行されるオブジェクト・コードを必
要に応じて容易に最適化することができる。これは、オ
ブジェクト・コードの最適化にそのコードを用いて実行
される現在のデータ集合が反映されるためである。第二
に、最適化されたオブジェクト・コードは訓練データを
用いることなく生成される。これもやはりこの最適化手
順が実際のデータ集合を用いて実行されるためである。
訓練データを不要にすることによって、従来のフィード
バックに基づく最適化装置における時間のかかるステッ
プが不要となる。
ェクト・コード最適化装置はプログラム・ソース・コー
ドが入手不能であっても最適化されたオブジェクト・コ
ードを生成することができる。これは、最適化がオブジ
ェクト・コードの実行時に収集される実行トレースに基
づいてリアルタイムで行なわれるためである。オブジェ
クト・コードの最適化はプログラムの実行時に動的に行
なわれ、オブジェクト・コードはそのプログラムで実行
される実データの変化に応じて連続的に最適化すること
ができる。ソース・コードが不要であるため、所有者の
存在するコードに対して、またソース・コードを容易に
入手できないコードに対して最適化を行なうことができ
る。
ブジェクト・コードがそのプログラムの実行時にリアル
タイムで動的に最適化される。オブジェクト・コードは
変化するデータ集合状態によって必要に応じて連続的最
適化することができる。実行のトレースによる情報収集
には動的な性質があることから、この動的トレース駆動
オブジェクト・コード最適化装置はオブジェクト・コー
ドの実行時にそのオブジェクト・コードを連続的にチェ
ックする。さらに、本発明の動的トレース駆動オブジェ
クト・コード最適化装置によれば、オブジェクト・コー
ドの各部分をプログラムの実行時に最適化し直すことが
でき、これによって同期して実行されるプログラムを連
続的に更新および最適化することができる。
のユーザーに要求される監視を最小限としてオブジェク
ト・コードの最適化する方法を提供する。従来のフィー
ドバックに基づく最適化装置の4ステップ処理と異な
り、本発明の動的トレース駆動オブジェクト・コード最
適化装置はソース・コードおよびユーザーによる処理の
監視を必要とせずオブジェクト・コードの容易な最適化
を可能とする。前述したように、本発明の最適化装置は
RAMに埋め込んでユーザーに対して極めて透明性の高
いものとすることができる。
ラムの最適化に用いられるフィードバックに基づく最適
化処理を示すフロー図である。
いたプログラムの最適化処理を示すフロー図である。
ステップ 12:ソース・コード 14:コンパイラおよび最適化装置計測器 16:注釈付きオブジェクト・コード 22:訓練データ 24:実行統計 26:プログラム出力 26’:最適化されたプログラム出力 32:最適化装置 34:最適化されたオブジェクト・コード 42:実際の入力データ 50、60:本発明の処理ステップ 52:ソース・コード 54:コンパイラおよび最適化装置 56:オブジェクト・コード 62:入力データ 64:動的最適化装置 66:オペレーティング・システム・カーネル 67:処理制御インターフェース 68:支援ドライバ 70:プログラム出力
Claims (1)
- 【請求項1】プログラムのオブジェクト・コードを前記
プログラムの実行時にリアルタイムで動的に最適化する
方法であって、 前記プログラムの実行時に前記オブジェクト・コードの
実行トレースを収集するステップと、 前記実行トレースを分析して前記オブジェクト・コード
の1以上の非最適な命令ストリームを同定するステップ
と、 前記プログラムの実行時に前記オブジェクト・コードを
変更して前記プログラムによって実行されるデータ集合
に対する前記1以上の非最適な命令ストリームを最適化
して最適化されたオブジェクト・コードを生成するステ
ップとを有することを特徴とする方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/799,950 US5915114A (en) | 1997-02-14 | 1997-02-14 | Dynamic trace driven object code optimizer |
| US799,950 | 1997-02-14 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH10240543A true JPH10240543A (ja) | 1998-09-11 |
| JPH10240543A5 JPH10240543A5 (ja) | 2005-06-02 |
Family
ID=25177153
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10031068A Pending JPH10240543A (ja) | 1997-02-14 | 1998-02-13 | オブジェクト・コード最適化装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5915114A (ja) |
| JP (1) | JPH10240543A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012143760A1 (en) * | 2011-04-20 | 2012-10-26 | Freescale Semiconductor, Inc. | Method and apparatus for generating resource efficient computer program code |
Families Citing this family (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6161216A (en) * | 1998-04-29 | 2000-12-12 | Emc Corporation | Source code debugging tool |
| US6148437A (en) * | 1998-05-04 | 2000-11-14 | Hewlett-Packard Company | System and method for jump-evaluated trace designation |
| US6158049A (en) * | 1998-08-11 | 2000-12-05 | Compaq Computer Corporation | User transparent mechanism for profile feedback optimization |
| GB2348718A (en) * | 1999-04-07 | 2000-10-11 | Ibm | Data processing system having a centralised trace facility with dynamic tracing |
| US6622300B1 (en) * | 1999-04-21 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | Dynamic optimization of computer programs using code-rewriting kernal module |
| DE19963832A1 (de) * | 1999-12-30 | 2001-07-05 | Ericsson Telefon Ab L M | Programmprofilierung |
| US6772372B2 (en) | 2001-03-06 | 2004-08-03 | Hewlett-Packard Development Company, L.P. | System and method for monitoring unaligned memory accesses |
| US6694457B2 (en) | 2001-03-06 | 2004-02-17 | Hewlett-Packard Development Company, L.P. | System and method for monitoring execution of privileged instructions |
| US20030005423A1 (en) * | 2001-06-28 | 2003-01-02 | Dong-Yuan Chen | Hardware assisted dynamic optimization of program execution |
| US7302675B2 (en) * | 2001-08-14 | 2007-11-27 | National Instruments Corporation | System and method for analyzing a graphical program using debugging graphical programs |
| US7272832B2 (en) * | 2001-10-25 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform |
| US7228534B2 (en) * | 2003-06-14 | 2007-06-05 | Intel Corporation | Optimizing performance of a program or a computer system |
| US20050165555A1 (en) * | 2004-01-13 | 2005-07-28 | Baker Hughes Incorporated | 3-D visualized data set for all types of reservoir data |
| US7236107B2 (en) * | 2004-09-20 | 2007-06-26 | Fujitsu Limited | System and method for identifying optimal encoding for a given trace |
| US7543282B2 (en) * | 2006-03-24 | 2009-06-02 | Sun Microsystems, Inc. | Method and apparatus for selectively executing different executable code versions which are optimized in different ways |
| US7926036B2 (en) * | 2007-04-26 | 2011-04-12 | Microsoft Corporation | Technologies for code failure proneness estimation |
| US8572594B2 (en) | 2010-12-22 | 2013-10-29 | Microsoft Corporation | Invasion analysis to identify open types |
| US20130219372A1 (en) | 2013-03-15 | 2013-08-22 | Concurix Corporation | Runtime Settings Derived from Relationships Identified in Tracer Data |
| US9251071B2 (en) * | 2013-08-30 | 2016-02-02 | Apple Inc. | Concurrent inline cache optimization in accessing dynamically typed objects |
| US9817638B2 (en) * | 2013-12-27 | 2017-11-14 | Symantec Corporation | Systems and methods for injecting code into an application |
| US9348566B1 (en) * | 2014-01-02 | 2016-05-24 | Google Inc. | Continuous profiling for automatic feedback directed optimization |
| US9569115B2 (en) | 2014-03-31 | 2017-02-14 | International Business Machines Corporation | Transparent code patching |
| US9256546B2 (en) * | 2014-03-31 | 2016-02-09 | International Business Machines Corporation | Transparent code patching including updating of address translation structures |
| JP2017091070A (ja) * | 2015-11-06 | 2017-05-25 | ルネサスエレクトロニクス株式会社 | 実行可能コード生成プログラムおよび実行可能コード生成装置 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3707725A (en) * | 1970-06-19 | 1972-12-26 | Ibm | Program execution tracing system improvements |
| US5297274A (en) * | 1991-04-15 | 1994-03-22 | International Business Machines Corporation | Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor |
| US5452457A (en) * | 1993-01-29 | 1995-09-19 | International Business Machines Corporation | Program construct and methods/systems for optimizing assembled code for execution |
| US5632032A (en) * | 1994-02-07 | 1997-05-20 | International Business Machines Corporation | Cross address space thread control in a multithreaded environment |
| US5533192A (en) * | 1994-04-21 | 1996-07-02 | Apple Computer, Inc. | Computer program debugging system and method |
| US5689712A (en) * | 1994-07-27 | 1997-11-18 | International Business Machines Corporation | Profile-based optimizing postprocessors for data references |
| US5802272A (en) * | 1994-12-19 | 1998-09-01 | Digital Equipment Corporation | Method and apparatus for tracing unpredictable execution flows in a trace buffer of a high-speed computer system |
| US5764885A (en) * | 1994-12-19 | 1998-06-09 | Digital Equipment Corporation | Apparatus and method for tracing data flows in high-speed computer systems |
| US5642478A (en) * | 1994-12-29 | 1997-06-24 | International Business Machines Corporation | Distributed trace data acquisition system |
| US5805863A (en) * | 1995-12-27 | 1998-09-08 | Intel Corporation | Memory pattern analysis tool for use in optimizing computer program code |
| US5889999A (en) * | 1996-05-15 | 1999-03-30 | Motorola, Inc. | Method and apparatus for sequencing computer instruction execution in a data processing system |
-
1997
- 1997-02-14 US US08/799,950 patent/US5915114A/en not_active Expired - Lifetime
-
1998
- 1998-02-13 JP JP10031068A patent/JPH10240543A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012143760A1 (en) * | 2011-04-20 | 2012-10-26 | Freescale Semiconductor, Inc. | Method and apparatus for generating resource efficient computer program code |
Also Published As
| Publication number | Publication date |
|---|---|
| US5915114A (en) | 1999-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH10240543A (ja) | オブジェクト・コード最適化装置 | |
| US11579856B2 (en) | Multi-chip compatible compiling method and device | |
| US6078744A (en) | Method and apparatus for improving compiler performance during subsequent compilations of a source program | |
| US7237234B2 (en) | Method for selective solicitation of user assistance in the performance tuning process | |
| US6311324B1 (en) | Software profiler which has the ability to display performance data on a computer screen | |
| US5960198A (en) | Software profiler with runtime control to enable and disable instrumented executable | |
| US5193191A (en) | Incremental linking in source-code development system | |
| US5325531A (en) | Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines | |
| US5170465A (en) | Incremental-scanning compiler for source-code development system | |
| US5201050A (en) | Line-skip compiler for source-code development system | |
| US5313387A (en) | Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers | |
| US5182806A (en) | Incremental compiler for source-code development system | |
| US6289505B1 (en) | Method, apparatus and computer programmed product for binary re-optimization using a high level language compiler | |
| JP3284956B2 (ja) | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 | |
| US5787285A (en) | Apparatus and method for optimizing applications for multiple operational environments or modes | |
| US5812855A (en) | System and method for constaint propagation cloning for unknown edges in IPA | |
| Kolb et al. | A case study in refactoring a legacy component for reuse in a product line | |
| US6467082B1 (en) | Methods and apparatus for simulating external linkage points and control transfers in source translation systems | |
| JPH02238528A (ja) | コンピュータ・プログラムの第一バージョン処理方法 | |
| JPH02238527A (ja) | 目標コンピュータ・システム、異なるコンピュータ・システム間でプログラムを実行する方法 | |
| US7793277B2 (en) | Compiler apparatus and method for devirtualizing virtual method calls | |
| US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
| KR20010086159A (ko) | 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법 | |
| US6360360B1 (en) | Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects | |
| EP0406028A2 (en) | Incremental compiler for source code development system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040803 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040816 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040816 |
|
| RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040816 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070720 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071016 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20071016 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071213 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080408 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20080409 |
|
| A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080514 |
|
| A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20080620 |