JP3152194B2 - コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体 - Google Patents

コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体

Info

Publication number
JP3152194B2
JP3152194B2 JP35356197A JP35356197A JP3152194B2 JP 3152194 B2 JP3152194 B2 JP 3152194B2 JP 35356197 A JP35356197 A JP 35356197A JP 35356197 A JP35356197 A JP 35356197A JP 3152194 B2 JP3152194 B2 JP 3152194B2
Authority
JP
Japan
Prior art keywords
instruction
loop
branch
object program
history information
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.)
Expired - Fee Related
Application number
JP35356197A
Other languages
English (en)
Other versions
JPH10240573A (ja
Inventor
進一 岡野
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP35356197A priority Critical patent/JP3152194B2/ja
Publication of JPH10240573A publication Critical patent/JPH10240573A/ja
Application granted granted Critical
Publication of JP3152194B2 publication Critical patent/JP3152194B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、条件分岐命令を含
むループを効率良く実行するためのオブジェクトプログ
ラムを生成するコンパイル装置、コンパイル方法および
コンパイラを記録した記録媒体に関する。
【0002】
【従来の技術】特開昭63−53646号公報には、オ
ブジェクトプログラムの実行時に該オブジェクトプログ
ラム中の各文の実行回数を積算し、該オブジェクトプロ
グラムに含まれるループの平均回転数(平均繰り返し
数)やループ内の条件式の平均成立割合(真率)などの
動的情報を計算して保存する動的情報計数手段を備え、
ソースプログラムのコンパイル時に該動的情報計数手段
によって得られた動的情報を参照して、該ソースプログ
ラムに含まれるループを効率良く実行するのに最適なコ
ードを含むオブジェクトプログラムを生成する技術が開
示されている。
【0003】
【発明が解決しようとする課題】しかしながら、この従
来の技術には、動的情報計数手段が採取する動的情報、
すなわちオブジェクトプログラムの平均繰り返し数およ
び真率では、ループを効率良く実行するのに最適なコー
ドを含むオブジェクトプログラムを生成するための情報
として十分でないという問題点がある。
【0004】例えば、オブジェクトプログラムが2回実
行される場合において、2回共50回繰り返した場合
も、1回目に100回繰り返して2回目に0回繰り返し
た場合も、共に平均繰り返し数は50回になる。また真
率については、初めの50回が「真」で後の50回が
「偽」である場合も、「真」と「偽」とが交互に出現し
た場合も、共に真率は50%になる。
【0005】このように、従来の技術は、オブジェクト
プログラムが複数回実行されてしまうと、平均繰り返し
数は、ループが実行されるパターンをコンパイラに正し
く伝えることができない。また真率も、ループ内の条件
式が真になるパターンをコンパイラに正しく伝えること
ができない。そのためコンパイラは、動的情報計数手段
が採取するこれらの動的情報を参照しただけでは、ルー
プを効率良く実行するのに最適なコードを含むオブジェ
クトプログラムを生成することができないという問題点
がある。
【0006】本発明の目的は、条件分岐命令を含むルー
プ処理を含むオブジェクトプログラムを生成する際に、
該ループ処理を効率良く実行するのに最適なコードを含
むオブジェクトプログラムを生成するために必要な情報
を取得することができるコンパイル装置を提供すること
にある。
【0007】
【課題を解決するための手段】本発明の第1のコンパイ
ル装置は、オブジェクトプログラムに含まれる所定の命
令ストリームを複数回繰り返す少なくとも一つのループ
処理の数を取得するための第1の命令と、各ループ処理
の実行毎に、該ループ処理の実行回数を取得するための
第2の命令と、各ループ処理の実行毎に、該ループ処理
内の前記命令ストリームの繰り返し回数を取得するため
の第3の命令と、各ループ処理の実行毎に、該ループ処
理に含まれる条件分岐命令の分岐条件が満たされたか否
かを示す情報を取得するための第4の命令とを生成する
分岐履歴情報採取コード生成手段と、ソースプログラム
を入力し、前記分岐履歴情報採取コード生成手段を起動
し、該分岐履歴情報採取コード生成手段が生成した命令
群を含む前記オブジェクトプログラムを生成するコンパ
イル手段とを備えたことを特徴とする。
【0008】本発明の第2のコンパイル装置は、第1の
コンパイル装置において、前記コンパイル手段が、前記
第1の命令を先頭に配置し、前記第2の命令を前記各ル
ープ処理内の前記命令ストリームの先頭の命令の直前に
配置し、前記第3の命令を該各ループ処理内の前記命令
ストリームの先頭の命令の直後に配置し、前記第4の命
令を前記各ループ処理に含まれる条件分岐命令の分岐先
の命令の直後に配置したオブジェクトプログラムを生成
することを特徴とする。
【0009】本発明の第1のコンパイル方法は、オブジ
ェクトプログラムに含まれる所定の命令ストリームを複
数回繰り返す少なくとも一つのループ処理の数を取得す
るための第1の命令と、各ループ処理の実行毎に、該ル
ープ処理の実行回数を取得するための第2の命令と、各
ループ処理の実行毎に、該ループ処理内の前記命令スト
リームの繰り返し回数を取得するための第3の命令と、
各ループ処理の実行毎に、該ループ処理に含まれる条件
分岐命令の分岐条件が満たされたか否かを示す情報を取
得するための第4の命令とを生成する分岐履歴情報採取
コード生成ステップと、ソースプログラムを入力し、前
記分岐履歴情報採取コード生成ステップを実行し、該分
岐履歴情報採取コード生成ステップにおいて生成された
命令群を含む前記オブジェクトプログラムを生成するコ
ンパイルステップとを含むことを特徴とする。
【0010】本発明の第2のコンパイル方法は、第1の
コンパイル方法において、前記コンパイルステップが、
前記第1の命令を先頭に配置し、前記第2の命令を前記
各ループ処理内の前記命令ストリームの先頭の命令の直
前に配置し、前記第3の命令を該各ループ処理内の前記
命令ストリームの先頭の命令の直後に配置し、前記第4
の命令を前記各ループ処理に含まれる条件分岐命令の分
岐先の命令の直後に配置したオブジェクトプログラムを
生成することを特徴とする。
【0011】本発明の第1の記録媒体は、オブジェクト
プログラムに含まれる所定の命令ストリームを複数回繰
り返す少なくとも一つのループ処理の数を取得するため
の第1の命令と、各ループ処理の実行毎に、該ループ処
理の実行回数を取得するための第2の命令と、各ループ
処理の実行毎に、該ループ処理内の前記命令ストリーム
の繰り返し回数を取得するための第3の命令と、各ルー
プ処理の実行毎に、該ループ処理に含まれる条件分岐命
令の分岐条件が満たされたか否かを示す情報を取得する
ための第4の命令とを生成する分岐履歴情報採取コード
生成処理と、ソースプログラムを入力し、前記分岐履歴
情報採取コード生成処理を実行し、該分岐履歴情報採取
コード生成処理において生成された命令群を含む前記オ
ブジェクトプログラムを生成するコンパイル処理とをコ
ンピュータに行わせるプログラムを記録したことを特徴
とする。
【0012】本発明の第2の記録媒体は、第1の記録媒
体において、前記コンパイル処理が、前記第1の命令を
先頭に配置し、前記第2の命令を前記各ループ処理内の
前記命令ストリームの先頭の命令の直前に配置し、前記
第3の命令を該各ループ処理内の前記命令ストリームの
先頭の命令の直後に配置し、前記第4の命令を前記各ル
ープ処理に含まれる条件分岐命令の分岐先の命令の直後
に配置したオブジェクトプログラムを生成することを特
徴とする。
【0013】本発明の第3の記録媒体は、少なくとも一
つの条件分岐命令を含む所定の命令ストリームを複数回
繰り返す少なくとも一つのループ処理の数を取得する第
1の処理と、前記ループ処理の実行毎に、該ループ処理
の実行回数を取得する第2の処理と、前記ループ処理の
実行毎に、該ループ処理内の前記命令ストリームの繰り
返し回数を取得する第3の処理と、前記ループ処理の実
行毎に、該ループ処理に含まれる条件分岐命令の分岐条
件が満たされたか否かを示す情報を取得する第4の処理
とをコンピュータに行わせるオブジェクトプログラムを
記録したことを特徴とする。
【0014】本発明の第4の記録媒体は、第3の記録媒
体において、前記オブジェクトプログラムが、自身の実
行開始時に、自身が含む所定の命令ストリームを複数回
繰り返す少なくとも一つのループ処理の数を取得し、該
数分のループ参照テーブルを作成して分岐履歴情報ファ
イルに格納する第1の処理と、個々のループ処理の実行
毎に、該ループ処理が1回目の実行の場合にはループ実
行テーブルを作成して前記分岐履歴情報ファイルに格納
し、以降該ループ処理が実行される毎に該ループ処理の
実行回数に対応するエントリを前記ループ実行テーブル
に追加する第2の処理と、個々のループ処理の実行毎
に、該ループ処理内の前記命令ストリームの繰り返しの
1回目の実行の場合には繰り返しテーブルを作成して前
記分岐履歴情報ファイルに格納し、以降該繰り返しを実
行する毎に該繰り返し回数に対応するエントリを前記繰
り返しテーブルに追加する第3の処理と、個々のループ
処理の実行毎に、該ループ処理に含まれる条件分岐命令
の分岐条件が満たされたか否かを示す情報を取得し、該
情報を格納した分岐履歴テーブルを作成して前記分岐履
歴情報ファイルに格納する第4の処理とを含むことを特
徴とする。
【0015】
【発明の実施の形態】次に本発明の実施の形態につい
て、図面を参照して詳細に説明する。
【0016】図1を参照すると、本発明の第1の実施の
形態は、コンパイルの対象となるソースプログラム1
と、プログラム制御により動作し、ソースプログラム1
を入力してコンパイルを行なうコンパイル装置2と、コ
ンパイル装置2によって生成されるオブジェクトプログ
ラム3と、オブジェクトプログラム3の実行によって得
られた、所定の命令ストリームを複数回繰り返す各ルー
プ処理の実行毎の繰り返し数と該ループ処理内の条件分
岐命令の分岐履歴とが記録される分岐履歴情報ファイル
4とを含む。
【0017】コンパイル装置2は、オブジェクトプログ
ラム3に含まれる各ループ処理の実行毎の繰り返し数と
該ループ処理内の条件分岐命令の分岐履歴の情報とを採
取するためのコードを生成する分岐履歴情報採取コード
生成手段6と、分岐履歴情報ファイル4に記録された情
報に基づいて、対象となるループ処理内の分岐パターン
の解析を行う分岐パターン解析手段7と、分岐パターン
解析手段7の解析結果に基づいて、対象となるループ処
理を効率良く実行するのに最適なコードを生成するルー
プ最適化手段5とを備えている。
【0018】次に、本発明の第1の実施の形態の動作に
ついて、図1〜図2を参照して詳細に説明する。
【0019】コンパイル装置2は、ソースプログラム1
をコンパイルしてオブジェクトプログラム3を生成する
際に、分岐履歴情報採取コード生成手段6を起動する
(ステップ21)。
【0020】分岐履歴情報採取コード生成手段6は、ま
ず、オブジェクトプログラム3に含まれる、所定の命令
ストリームを複数回繰り返すループ処理の数を取得する
ためのコードを生成する(ステップ22)。
【0021】次に、分岐履歴情報採取コード生成手段6
は、該オブジェクトプログラム3が実行された際に、該
オブジェクトプログラム3に含まれるループ処理のそれ
ぞれの実行回数を取得するためのコードを生成する(ス
テップ23)。
【0022】次に、分岐履歴情報採取コード生成手段6
は、該オブジェクトプログラム3が実行された際に、該
オブジェクトプログラム3に含まれるループ処理のそれ
ぞれに含まれる命令ストリームの繰り返し回数を取得す
るためのコードを生成する(ステップ24)。
【0023】最後に、分岐履歴情報採取コード生成手段
6は、該オブジェクトプログラム3が実行された際に、
該オブジェクトプログラム3に含まれるループ処理のそ
れぞれに含まれる条件分岐命令の分岐条件が満たされた
か否かを示す情報を取得するためのコードを生成する
(ステップ25)。
【0024】コンパイル装置2は、分岐履歴情報採取コ
ード生成手段6起動後、ステップ22で生成したコード
を先頭に配置し、ステップ23で生成したコードを各ル
ープ処理内の命令ストリームの先頭の命令の直前に配置
し、ステップ24で生成したコードを各ループ処理内の
命令ストリームの先頭の命令の直後に配置し、ステップ
25で生成したコードを各ループ処理に含まれる条件分
岐命令の分岐先の命令の直後に配置したオブジェクトプ
ログラム3を生成する(ステップ26)。
【0025】オブジェクトプログラム3が実行される
と、該オブジェクトプログラム3に含まれている各ルー
プ処理が該オブジェクトプログラム3内で何回実行され
ているか、各ループ処理内の命令ストリームの何回目の
繰り返しか、該命令ストリームに含まれる条件分岐命令
の分岐条件が満たされたか否かといった情報が分岐履歴
情報ファイル4に記録される。
【0026】コンパイル装置2が同一のソースプログラ
ム1を再コンパイルしてオブジェクトプログラム3を生
成する際に、分岐パターン解析手段7は、分岐履歴情報
ファイル4に記録された情報の解析を行う。
【0027】次にループ最適化手段5が、分岐パターン
解析手段7による解析結果に基づいて、オブジェクトプ
ログラム3に含まれるループ処理を効率良く実行するの
に最適なコードを生成する。
【0028】最後に、コンパイル装置2は、ループ最適
化手段5により生成されたコードを含むオブジェクトプ
ログラム3を生成する。
【実施例】次に、本発明の一実施例について、図面を参
照して詳細に説明する。
【0029】本実施例においては、ベクトル長が「25
6」であるベクトル計算機に本発明を適用した例を説明
する。
【0030】図3に示すソースプログラム1(FORT
RAN 77仕様に基づく)は、ループ処理を変数Iが
1からNになるまで(「DO 10 I=1,N」と
「10CONTINUE」の間の処理)繰り返すもので
あり、要素数Nの配列Aに対して、A(I)がXより小
さい場合のみ(IF (A(I).LT.X) THE
N)、配列要素B(I)とC(I)の和をA(I)に代
入する(A(I)=B(I)+C(I))処理を繰り返
すというプログラムである。
【0031】分岐履歴情報採取コード生成手段6が生成
するコードのオブジェクトプログラム3内における配置
の位置を明瞭に示すために、図3にはオブジェクトプロ
グラム3の代わりにソースプログラム1を用いて該コー
ドの配置の位置を示した。
【0032】このオブジェクトプログラム3が実行され
ると、取得されたループ処理の実行毎の繰り返し数およ
び該ループ処理内の条件分岐命令の分岐履歴の情報が、
図4に示すテーブル群の形式で分岐履歴情報ファイル4
に記録される。
【0033】図4において、ループ参照テーブル11
は、オブジェクトプログラム3中のどのループ処理に対
する情報かを識別するためのテーブルであり、ループ実
行テーブル12は、オブジェクトプログラム3の実行に
おいて、該ループ処理の何回目の実行であるかを識別す
るためのテーブルであり、繰り返しテーブル13は、該
ループ処理中の何回目の繰り返しの実行であるかを識別
するためのテーブルであり、分岐履歴テーブル14は、
1回の繰り返し中において、分岐条件が満たされたか否
かを記録するためのテーブルである。
【0034】各ループ処理の実行毎の繰り返し数および
該ループ処理内の条件分岐命令の分岐履歴の情報を採取
するためのコードが埋め込まれたオブジェクトプログラ
ム3は、該オブジェクトプログラム3実行開始時に、各
ループ処理に対するループ参照テーブル11を作成し、
ループ処理実行毎に、該当するループ処理のループ参照
テーブル11が指すループ実行テーブル12に新しいエ
ントリを追加し、ループ処理の繰り返し毎に、ループ実
行テーブル12が指す繰り返しテーブル13に新しいエ
ントリを追加し、さらに該エントリが指す分岐履歴テー
ブル14を作成し、ループ処理内の各々の条件分岐命令
の分岐条件が「真」であったのか「偽」であったのかを
記録する。
【0035】つまり、分岐履歴情報ファイル4には、ソ
ースプログラム1中の各ループ処理について、いずれの
ループ処理の何回目の実行において、該ループ処理内の
何回目の繰り返しにおいて、いずれの分岐条件が真であ
ったのか偽であったのかという情報が記録される。
【0036】同一のソースプログラム1を再コンパイル
する際に、分岐パターン解析手段7が、分岐履歴情報フ
ァイル4に記録されたループ処理内の条件分岐命令の分
岐パターンを解析し、ループ最適化手段5が、この解析
結果に基づいてループ処理を効率良く実行するためのコ
ードを生成する。そしてコンパイル装置2が、ループ最
適化手段5により生成されたコードを含むオブジェクト
プログラム3を生成する。
【0037】この分岐パターン解析手段7とループ最適
化手段5の処理は、分岐履歴情報ファイル4に記録され
たループ処理内の条件分岐命令の分岐パターンの多様性
に依存して様々なケースが想定できるが、以下に2例説
明する。
【0038】まず、図3のソースプログラム1中のルー
プ処理が、プログラム実行中1回だけ実行され、変数N
の値が1024であり、ループ処理内の分岐条件(A
(I).LT.X;A(I)がXよりも小さい)が、I
=1からI=256までは、「偽」であり、それ以降
(I=257からI=1024)は全て「真」であった
ケースを想定する。
【0039】このケースでは、分岐履歴情報ファイル4
に記録される、ループ参照テーブル11には該ループ処
理のエントリが1つあり、そのエントリから指されるル
ープ実行テーブル12には、該ループ処理はプログラム
中1回しか実行されないので、1つのエントリがある。
ループ実行テーブル12のエントリから指される繰り返
しテーブル13には、このループ処理が1024回繰り
返し処理を行なうので、1024個のエントリがあり、
その各々のエントリから指される分岐履歴テーブル14
には、繰り返し毎に行なわれた分岐条件の結果が格納さ
れている。
【0040】すなわち、繰り返しテーブル13の1個目
から256個目までのエントリから指される分岐履歴テ
ーブル14には「偽」が、その以降の繰り返しテーブル
13のエントリから指される分岐履歴テーブル14には
「真」が格納されている。
【0041】このような分岐パターンの情報を分岐パタ
ーン解析手段7が解析すると、ループ最適化手段5は、
該プログラムはマスク付きベクトル演算を行なうことに
より性能向上が図れると判断し、マスク付きベクトル演
算のコードを生成する。
【0042】ループ最適化手段5は、さらに、該マスク
付きベクトル演算をベクトル長256で処理する場合に
は、最初の256個の要素に対する処理は行なわれない
可能性があると判断し、マスク付きベクトル演算を行な
う前に、マスク付きベクトル演算で用いられるマスクを
調べ、全ての要素において処理が行なわれることがない
場合には、マスク付きベクトル演算命令の実行を回避す
るコードも併せて生成する。
【0043】また、別のケースとして、図3のソースプ
ログラム1中のループ処理が、プログラム実行中に10
24回実行され、変数Nが全てのループ処理の実行に際
してN=1であり、ループ処理内の分岐条件がすべて真
であったケースを想定する。
【0044】このケースに従来の技術を適用した場合、
真率は「1」であるという情報しか得られないため、ベ
クトル化すれば高速化が図れると判断してベクトル命令
を生成するか、オブジェクトプログラム実行中にループ
処理の繰り返し回数に応じてベクトル演算を用いるかス
カラ演算を用いるかを判断するというようなオブジェク
トプログラムの実行性能に影響を及ぼすようなコードを
生成しなければならない。
【0045】しかし、本発明においては、分岐パターン
解析手段7から提供されるループ処理の繰り返し回数の
情報によって、ループ最適化手段5が、このループ処理
は繰り返し数が「1」と小さいのでベクトル化すべきで
はないと判断して、スカラ演算コードを生成するため、
従来の技術のようなオブジェクトプログラムの実行性能
に影響するようなコードを生成することなく、該オブジ
ェクトプログラムを効率良く実行することができる。
【0046】以上により第1の実施の形態の動作が完了
する。
【0047】次に、本発明の第2の実施の形態について
図面を参照して詳細に説明する。
【0048】図1を参照すると、本発明の第2の実施の
形態は、第1の実施の形態に加えて、コンパイル装置2
に第1の実施の形態に係る処理を実行させるためのプロ
グラムを記録する磁気ディスク、半導体メモリ等の記録
媒体8を備える。
【0049】該プログラムは、記録媒体8からコンパイ
ル装置2に読み込まれ、該コンパイル装置2の動作を制
御する。コンパイル装置2は、該プログラムの制御によ
り、それぞれ第1の実施の形態におけるループ最適化手
段5、分岐履歴情報採取コード生成手段6および分岐パ
ターン解析手段7と同一の処理を実行する。
【0050】以上により、第2の実施の形態の処理が完
了する。
【0051】
【発明の効果】以上説明したように、本発明は、条件分
岐命令を含むループ処理を含むオブジェクトプログラム
を生成する際に、該ループ処理を効率良く実行するのに
最適なコードを含むオブジェクトプログラムを生成する
ために必要な情報を取得することができる効果を有して
いる。
【図面の簡単な説明】
【図1】本発明の実施の形態を示すブロック図である。
【図2】本発明の実施の形態の動作を示す流れ図であ
る。
【図3】本発明の一実施例におけるソースプログラム1
の例を示す図である。
【図4】本発明の一実施例において分岐履歴情報ファイ
ル4に記録される情報の格納形態を示す図である。
【符号の説明】
1 ソースプログラム 2 コンパイル装置 3 オブジェクトプログラム 4 分岐履歴情報ファイル 5 ループ最適化手段 6 分岐履歴情報採取コード生成手段 7 分岐パターン解析手段 8 記録媒体 11 ループ参照テーブル 12 ループ実行テーブル 13 繰り返しテーブル 14 分岐履歴テーブル

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】 オブジェクトプログラムに含まれる所定
    の命令ストリームを複数回繰り返す少なくとも一つのル
    ープ処理の数を取得するための第1の命令と、各ループ
    処理の実行毎に、該ループ処理の実行回数を取得するた
    めの第2の命令と、各ループ処理の実行毎に、該ループ
    処理内の前記命令ストリームの繰り返し回数を取得する
    ための第3の命令と、各ループ処理の実行毎に、該ルー
    プ処理に含まれる条件分岐命令の分岐条件が満たされた
    か否かを示す情報を取得するための第4の命令とを生成
    する分岐履歴情報採取コード生成手段と、 ソースプログラムを入力し、前記分岐履歴情報採取コー
    ド生成手段を起動し、該分岐履歴情報採取コード生成手
    段が生成した命令群を含む前記オブジェクトプログラム
    を生成するコンパイル手段とを備えたことを特徴とする
    コンパイル装置。
  2. 【請求項2】 前記コンパイル手段は、 前記第1の命令を先頭に配置し、前記第2の命令を前記
    各ループ処理内の前記命令ストリームの先頭の命令の直
    前に配置し、前記第3の命令を該各ループ処理内の前記
    命令ストリームの先頭の命令の直後に配置し、前記第4
    の命令を前記各ループ処理に含まれる条件分岐命令の分
    岐先の命令の直後に配置したオブジェクトプログラムを
    生成することを特徴とする請求項1記載のコンパイル装
    置。
  3. 【請求項3】 オブジェクトプログラムに含まれる所定
    の命令ストリームを複数回繰り返す少なくとも一つのル
    ープ処理の数を取得するための第1の命令と、各ループ
    処理の実行毎に、該ループ処理の実行回数を取得するた
    めの第2の命令と、各ループ処理の実行毎に、該ループ
    処理内の前記命令ストリームの繰り返し回数を取得する
    ための第3の命令と、各ループ処理の実行毎に、該ルー
    プ処理に含まれる条件分岐命令の分岐条件が満たされた
    か否かを示す情報を取得するための第4の命令とを生成
    する分岐履歴情報採取コード生成ステップと、 ソースプログラムを入力し、前記分岐履歴情報採取コー
    ド生成ステップを実行し、該分岐履歴情報採取コード生
    成ステップにおいて生成された命令群を含む前記オブジ
    ェクトプログラムを生成するコンパイルステップとを含
    むことを特徴とするコンパイル方法。
  4. 【請求項4】 前記コンパイルステップは、 前記第1の命令を先頭に配置し、前記第2の命令を前記
    各ループ処理内の前記命令ストリームの先頭の命令の直
    前に配置し、前記第3の命令を該各ループ処理内の前記
    命令ストリームの先頭の命令の直後に配置し、前記第4
    の命令を前記各ループ処理に含まれる条件分岐命令の分
    岐先の命令の直後に配置したオブジェクトプログラムを
    生成することを特徴とする請求項3記載のコンパイル方
    法。
  5. 【請求項5】 オブジェクトプログラムに含まれる所定
    の命令ストリームを複数回繰り返す少なくとも一つのル
    ープ処理の数を取得するための第1の命令と、各ループ
    処理の実行毎に、該ループ処理の実行回数を取得するた
    めの第2の命令と、各ループ処理の実行毎に、該ループ
    処理内の前記命令ストリームの繰り返し回数を取得する
    ための第3の命令と、各ループ処理の実行毎に、該ルー
    プ処理に含まれる条件分岐命令の分岐条件が満たされた
    か否かを示す情報を取得するための第4の命令とを生成
    する分岐履歴情報採取コード生成処理と、 ソースプログラムを入力し、前記分岐履歴情報採取コー
    ド生成処理を実行し、該分岐履歴情報採取コード生成処
    理において生成された命令群を含む前記オブジェクトプ
    ログラムを生成するコンパイル処理とをコンピュータに
    行わせるプログラムを記録したことを特徴とする記録媒
    体。
  6. 【請求項6】 前記コンパイル処理は、 前記第1の命令を先頭に配置し、前記第2の命令を前記
    各ループ処理内の前記命令ストリームの先頭の命令の直
    前に配置し、前記第3の命令を該各ループ処理内の前記
    命令ストリームの先頭の命令の直後に配置し、前記第4
    の命令を前記各ループ処理に含まれる条件分岐命令の分
    岐先の命令の直後に配置したオブジェクトプログラムを
    生成することを特徴とする請求項5記載の記録媒体。
  7. 【請求項7】 少なくとも一つの条件分岐命令を含む所
    定の命令ストリームを複数回繰り返す少なくとも一つの
    ループ処理の数を取得する第1の処理と、 前記ループ処理の実行毎に、該ループ処理の実行回数を
    取得する第2の処理と、 前記ループ処理の実行毎に、該ループ処理内の前記命令
    ストリームの繰り返し回数を取得する第3の処理と、 前記ループ処理の実行毎に、該ループ処理に含まれる条
    件分岐命令の分岐条件が満たされたか否かを示す情報を
    取得する第4の処理とをコンピュータに行わせるオブジ
    ェクトプログラムを記録したことを特徴とする記録媒
    体。
  8. 【請求項8】 前記オブジェクトプログラムが、 自身の実行開始時に、自身が含む所定の命令ストリーム
    を複数回繰り返す少なくとも一つのループ処理の数を取
    得し、該数分のループ参照テーブルを作成して分岐履歴
    情報ファイルに格納する第1の処理と、 個々のループ処理の実行毎に、該ループ処理が1回目の
    実行の場合にはループ実行テーブルを作成して前記分岐
    履歴情報ファイルに格納し、以降該ループ処理が実行さ
    れる毎に該ループ処理の実行回数に対応するエントリを
    前記ループ実行テーブルに追加する第2の処理と、 個々のループ処理の実行毎に、該ループ処理内の前記命
    令ストリームの繰り返しの1回目の実行の場合には繰り
    返しテーブルを作成して前記分岐履歴情報ファイルに格
    納し、以降該繰り返しを実行する毎に該繰り返し回数に
    対応するエントリを前記繰り返しテーブルに追加する第
    3の処理と、 個々のループ処理の実行毎に、該ループ処理に含まれる
    条件分岐命令の分岐条件が満たされたか否かを示す情報
    を取得し、該情報を格納した分岐履歴テーブルを作成し
    て前記分岐履歴情報ファイルに格納する第4の処理とを
    含むことを特徴とする請求項7記載の記録媒体。
JP35356197A 1996-12-26 1997-12-22 コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体 Expired - Fee Related JP3152194B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP35356197A JP3152194B2 (ja) 1996-12-26 1997-12-22 コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP35688996 1996-12-26
JP8-356889 1996-12-26
JP35356197A JP3152194B2 (ja) 1996-12-26 1997-12-22 コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体

Publications (2)

Publication Number Publication Date
JPH10240573A JPH10240573A (ja) 1998-09-11
JP3152194B2 true JP3152194B2 (ja) 2001-04-03

Family

ID=26579875

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35356197A Expired - Fee Related JP3152194B2 (ja) 1996-12-26 1997-12-22 コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP3152194B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2913761A4 (en) * 2012-10-25 2016-06-15 Fujitsu Ltd EXECUTION CONTROL METHOD AND INFORMATION PROCESSING DEVICE

Also Published As

Publication number Publication date
JPH10240573A (ja) 1998-09-11

Similar Documents

Publication Publication Date Title
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JP3664473B2 (ja) プログラムの最適化方法及びこれを用いたコンパイラ
JP3707727B2 (ja) プログラムの最適化方法及びこれを用いたコンパイラ
JP3790683B2 (ja) コンピュータ装置、その例外処理プログラム及びコンパイル方法
US5659752A (en) System and method for improving branch prediction in compiled program code
JP3284956B2 (ja) プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
US5606697A (en) Compiler system for language processing program
JP2921190B2 (ja) 並列実行方式
EP0810523A2 (en) Method for sequencing computer instruction execution in a data processing system
JPH0814817B2 (ja) 自動ベクトル化方法
EP3244306B1 (en) A computer-implemented method for allowing modification of a region of original code
US5790859A (en) Method of, system for, and computer program product for efficient identification of private variables in program loops by an optimizing compiler
US6360360B1 (en) Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects
JP3802058B2 (ja) ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ
JP3152194B2 (ja) コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体
JPH01118931A (ja) プログラム変換方式
US6055371A (en) Compile device, compile method and recording medium for recording compiler
JPH10320212A (ja) キャッシュ向け最適化方法
JP3196625B2 (ja) 並列化コンパイル方式
Broberg et al. Performance optimization using extended critical path analysis in multithreaded programs on multiprocessors
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
Haine et al. Exploring and evaluating array layout restructuring for SIMDization
JP3225940B2 (ja) プログラム最適化方法および装置
JP3156688B2 (ja) コンパイルシステム,コンパイル方法およびコンパイラを記憶した記録媒体
JPH02176938A (ja) 機械語命令最適化方式

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20001226

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

Free format text: PAYMENT UNTIL: 20080126

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090126

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100126

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110126

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees