JP2000276356A - コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 - Google Patents
コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体Info
- Publication number
- JP2000276356A JP2000276356A JP11081103A JP8110399A JP2000276356A JP 2000276356 A JP2000276356 A JP 2000276356A JP 11081103 A JP11081103 A JP 11081103A JP 8110399 A JP8110399 A JP 8110399A JP 2000276356 A JP2000276356 A JP 2000276356A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- intermediate language
- instructions
- generating
- sequence
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
することのできるコンパイル装置を提供する。 【解決手段】 中間語生成手段102はソースプログラ
ム106から中間語107を生成する。命令並び替え範
囲決定手段103は中間語107の命令列を調査し、選
ばれなかった命令との間に依存関係がない命令を選んで
命令並び替え範囲を設定して第1の命令列108を生成
する。命令スケジュール手段104は第1の命令列10
8の命令並び替え範囲内の命令を、中間語をより速く実
行できるよう並び替えて、第2の命令列109を生成す
る。オブジェクトプログラム生成手段105は第2の命
令列109からオブジェクトプログラム110を生成す
る。命令並べ替え範囲に含まれる命令の限界数はあらか
じめ設定しておく。
Description
リング法を用いた最適化コンパイラの、特に命令並び替
え範囲の決定を行うコンパイル装置、コンパイル方法お
よびコンパイラプログラムを記録した記録媒体に関す
る。
いた最適化コンパイラシステムの一例が、「1990年6
月、情報処理、Vol.31、No.6、764〜767ページ、中谷登
志男、VLIW計算機のためのコンパイラ技術、4.トレ
ース・スケジューリング法」に記載されている。
た最適化コンパイラシステムは、「ソースプログラムを
中間語に翻訳する翻訳手段」と、「中間語の命令列を並
び替える範囲を決定する並び替え範囲決定手段」と、そ
の範囲の中で「中間語をより速く実行できるよう並び替
える命令並び替え手段」と、「並び替えられた中間語を
機械語命令として出力する機械語命令生成手段」から構
成されている。
パイラシステムは次のように動作する。 (1)ソースプログラムを中間語に翻訳する。 (2)中間語の命令列から、命令の並び替えを行う範囲
を決定する。
ような手順で行う。 (2−1)中間語の命令列から処理の流れを示す流れ図
を作成する。 (2−2)その流れ図の中で、予想される実行回数が最
も多い命令を探す。 (2−3)実行回数が最も多い命令から流れ図を前後に
たどり、命令の並び替え範囲を決定する。 (3)命令並び替え範囲の中で命令を並び替える。
で行う。 (3−1)命令並び替えの範囲の中で命令間の依存関係
を解析し、ある時点で、その命令の使用するデータがそ
ろっており、実行可能状態にある命令をすべて抽出す
る。 (3−2)実行可能状態にある命令のうち、その命令の
実行に要する資源と、先行する他の命令の実行に要する
資源とが衝突しない命令をひとつ選択し、プロセッサの
資源を割り当てる。 (3−3)すべての命令の処理が終わるまで繰り返すこ
とで、命令を選択された順に並び替える。 (4)並び替えた中間語を機械語命令として出力する。
イラシステムの第1の問題点は、並び替えの対象となる
命令の数が多くなると、各命令を並び替えるのに要する
時間が多くなり過ぎるということである。
とした場合に、依存関係のない他のすべての命令に対し
て要求する資源が衝突しないかどうかを調べる必要があ
るためである。
めに、並び替えの対象とする命令を制限すると、命令の
並び替え範囲に選ばれた命令と選ばれなかった命令との
間でデータの転送が行われ、実行速度が低下するという
ことである。
の命令を決定すると、並び替えの対象にならなかった命
令で使用するデータを定義する命令にもプロセッサの資
源(レジスタ)が割り当てられるが、レジスタの個数が
有限であるために、先行する命令の演算結果を常にレジ
スタ上に保持しておくことは出来ず、メモリとレジスタ
の間でデータの転送が行われるためである。
の速い命令列を生成できるように命令並び替えを行うコ
ンパイル装置、コンパイル方法およびコンパイラプログ
ラムを記録した記録媒体を提供することにある。
は、ソースプログラムから中間語を生成する中間語生成
手段と、前記中間語の命令列を調査して選ばれなかった
命令との間に依存関係がない命令を選んで命令並び替え
範囲を設定した第1の命令列を生成する命令並び替え範
囲決定手段と、前記第1の命令列から前記命令並び替え
範囲内の命令を並び替えて第2の命令列を生成する命令
スケジュール手段と、前記第2の命令列からオブジェク
トプログラムを生成するオブジェクトプログラム生成手
段とを備えたことを特徴とする。
替え範囲に含まれる命令の限界数をあらかじめ設定した
ことを特徴としてもよい。
ジュール手段は、前記命令並び替え範囲内の命令を前記
中間語をより速く実行できるよう並び替えて前記第2の
命令列を生成することを特徴としてもよい。
ラムから中間語を生成し、前記中間語の命令列を調査し
て選ばれなかった命令との間に依存関係がない命令を選
んで命令並び替え範囲を設定した第1の命令列を生成
し、前記第1の命令列から前記命令並び替え範囲内の命
令を並び替えて第2の命令列を生成し、前記第2の命令
列からオブジェクトプログラムを生成することを特徴と
する。
替え範囲に含まれる命令の限界数をあらかじめ設定した
ことを特徴としてもよい。
替え範囲内の命令を前記中間語をより速く実行できるよ
う並び替えて前記第2の命令列を生成することを特徴と
してもよい。
ら中間語を生成する中間語生成処理と、前記中間語の命
令列を調査して選ばれなかった命令との間に依存関係が
ない命令を選んで命令並び替え範囲を設定した第1の命
令列を生成する命令並び替え範囲決定処理と、前記第1
の命令列から前記命令並び替え範囲内の命令を並び替え
て第2の命令列を生成する命令スケジュール処理と、前
記第2の命令列からオブジェクトプログラムを生成する
オブジェクトプログラム生成処理とをコンピュータに実
行させるためのコンパイラプログラムを記録したことを
特徴とする。
囲に含まれる命令の限界数をあらかじめ設定したことを
特徴としてもよい。
ル処理は、前記命令並び替え範囲内の命令を前記中間語
をより速く実行できるよう並び替えて前記第2の命令列
を生成することを特徴としてもよい。
て図面を参照して詳細に説明する。
示すブロック図である。図1を参照すると、コンパイル
装置101は、中間語生成手段102、命令並び替え範
囲決定手段103、命令スケジュール手段104、オブ
ジェクトプログラム生成手段105から構成されてい
る。
ム106を読み込み、構文解析および意味解析を行い、
中間語107を生成する。
語107から処理の流れを表すフローグラフを作成する
フローグラフ作成手段111と、各命令の依存関係を調
査する依存関係判定手段112と、依存関係のある命令
群とそれ以外の命令群とを並び替える命令並び替え手段
113を備える。この命令並び替え範囲決定手段103
は、中間語107から第1の命令列108を生成する。
令列108から中間語107をより速く実行できるよう
並び替えた第2の命令列109を生成する。
は、第2の命令列109からオブジェクトプログラム1
10を生成する。
形態の全体の動作について詳細に説明する。図2は命令
並び替え範囲決定手段103の動作を示すフローチャー
トである。ステップ201〜204はフローグラフ作成
手段111の動作である。ステップ205以降は依存関
係判定手段112と命令並べ替え手段113との動作で
ある。
1)で命令並び替え範囲決定手段103の初期化を行
う。
かを調べ、もしまだあれば、中間語取り出し処理(ステ
ップ203)に進み、中間語107から中間語をひとつ
取り出す。
4)に進み、ステップ203で取り出したひとつの中間
語をひとつの命令に変換する。
5)に進み、ステップ204で変換した命令が使用する
データを定義している命令が命令チェーンに登録されて
いればステップ204で変換した命令が使用するデータ
を定義している命令をチェーンから解除する。
206)に進み、ステップ204で変換した命令を命令
チェーンに登録する。
107の中に中間語がひとつもなくなるまで繰り返す。
ータをそれ以降のどの命令でも使用されない命令、ある
いはデータを定義しない命令が登録されている。
在するか、命令並び替え範囲に含まれる命令の限界数を
越えていないかどうかを調べ、もし、命令チェーンが存
在し、命令並び替え範囲に含まれる命令の限界数を越え
ていなければ、命令選択処理1(ステップ208)に進
み、命令チェーンからひとつ命令を取り出す。命令並び
替え範囲に含まれる命令の限界数は、あらかじめ設定し
ておく。
9)に進み、命令にマークする。
選択した命令が使用するデータがあるかどうかを調べ、
もし、存在すれば、再帰呼出し処理(ステップ211)
に進み、命令が使用するデータを定義する命令、さらに
その命令が使用するデータを定義する命令・・・といっ
た風に再帰的に、ステップ209〜ステップ211を繰
り返す。
理から抜け出し、最終的にステップ207から処理を繰
り返す。
たどる。まだ、最後でなければ、命令選択処理2(ステ
ップ213)に進み、命令をひとつ選択する。
213で選択した命令がステップ209でマークされて
いるかどうかを調べる。
替え処理(ステップ215)に進み、その命令を命令列
の最後に付け足す。
がなくなるまで繰り返す。
ークされた命令とステップ209でマークされていない
命令がそれぞれ連続している。
216)に進み、命令列のうちステップ209でマーク
された命令の含まれる範囲を命令並び替え範囲として決
定する。
み処理を終わる。
段103で第1の命令列108を生成する。命令スケジ
ュール手段104では、第1の命令列108の内、命令
並び替え範囲として決定された範囲内の命令を、中間語
をより速く実行できるように並べ替えて、第2の命令列
109を生成する。
説明する。図3は本発明の第2の実施の形態の構成を示
すブロック図である。図3を参照すると、第2の実施の
形態は、コンパイル装置101と記録媒体121を含
む。記録媒体121は、コンパイラプログラムを記録し
ている。この記録媒体121は、磁気ディスク、半導体
メモリ、光ディスク、その他の記録媒体であってよい。
らコンパイル装置101に読み込まれ、第1の実施の形
態における中間語生成手段102、命令並び替え範囲決
定手段103、命令スケジュール手段104、オブジェ
クトプログラム生成手段105の処理と同様の処理を行
う。
ム106から中間語107を生成する中間語生成処理
と、中間語107の命令列を調査して選ばれなかった命
令との間に依存関係がない命令を選んで命令並び替え範
囲を設定した第1の命令列108を生成する命令並び替
え範囲決定処理と、第1の命令列108から命令並び替
え範囲内の命令を中間語をより速く実行できるよう並び
替えて第2の命令列109を生成する命令スケジュール
処理と、第2の命令列109からオブジェクトプログラ
ム110を生成するオブジェクトプログラム生成処理と
を行う。命令並べ替え範囲に含まれる命令の限界数はあ
らかじめ設定しておく。
並び替え範囲に含まれる命令の最大数を越えないため、
さらに、命令の並び替え範囲として選んだ命令は、選ば
れなかった命令との間にデータの依存が存在しないの
で、境界でデータの転送が行われないため、処理時間の
著しい増加を招くことなく、実行速度の速い命令列を生
成することができるという効果がある。
ク図である。
チャートである。
ク図である。
Claims (9)
- 【請求項1】 ソースプログラムから中間語を生成する
中間語生成手段と、前記中間語の命令列を調査して選ば
れなかった命令との間に依存関係がない命令を選んで命
令並び替え範囲を設定した第1の命令列を生成する命令
並び替え範囲決定手段と、前記第1の命令列から前記命
令並び替え範囲内の命令を並び替えて第2の命令列を生
成する命令スケジュール手段と、前記第2の命令列から
オブジェクトプログラムを生成するオブジェクトプログ
ラム生成手段とを備えたことを特徴とするコンパイル装
置。 - 【請求項2】 前記命令並べ替え範囲に含まれる命令の
限界数をあらかじめ設定したことを特徴とする請求項1
記載のコンパイル装置。 - 【請求項3】 前記命令スケジュール手段は、前記命令
並び替え範囲内の命令を前記中間語をより速く実行でき
るよう並び替えて前記第2の命令列を生成することを特
徴とする請求項1または2記載のコンパイル装置。 - 【請求項4】 ソースプログラムから中間語を生成し、
前記中間語の命令列を調査して選ばれなかった命令との
間に依存関係がない命令を選んで命令並び替え範囲を設
定した第1の命令列を生成し、前記第1の命令列から前
記命令並び替え範囲内の命令を並び替えて第2の命令列
を生成し、前記第2の命令列からオブジェクトプログラ
ムを生成することを特徴とするコンパイル方法。 - 【請求項5】 前記命令並べ替え範囲に含まれる命令の
限界数をあらかじめ設定したことを特徴とする請求項4
記載のコンパイル方法。 - 【請求項6】 前記命令並び替え範囲内の命令を前記中
間語をより速く実行できるよう並び替えて前記第2の命
令列を生成することを特徴とする請求項4または5記載
のコンパイル方法。 - 【請求項7】 ソースプログラムから中間語を生成する
中間語生成処理と、前記中間語の命令列を調査して選ば
れなかった命令との間に依存関係がない命令を選んで命
令並び替え範囲を設定した第1の命令列を生成する命令
並び替え範囲決定処理と、前記第1の命令列から前記命
令並び替え範囲内の命令を並び替えて第2の命令列を生
成する命令スケジュール処理と、前記第2の命令列から
オブジェクトプログラムを生成するオブジェクトプログ
ラム生成処理とをコンピュータに実行させるためのコン
パイラプログラムを記録したことを特徴とする記録媒
体。 - 【請求項8】 前記命令並べ替え範囲に含まれる命令の
限界数をあらかじめ設定したことを特徴とする請求項7
記載の記録媒体。 - 【請求項9】 前記命令スケジュール処理は、前記命令
並び替え範囲内の命令を前記中間語をより速く実行でき
るよう並び替えて前記第2の命令列を生成することを特
徴とする請求項7または8記載の記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08110399A JP3323147B2 (ja) | 1999-03-25 | 1999-03-25 | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08110399A JP3323147B2 (ja) | 1999-03-25 | 1999-03-25 | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000276356A true JP2000276356A (ja) | 2000-10-06 |
JP3323147B2 JP3323147B2 (ja) | 2002-09-09 |
Family
ID=13737061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP08110399A Expired - Fee Related JP3323147B2 (ja) | 1999-03-25 | 1999-03-25 | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3323147B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020240830A1 (ja) * | 2019-05-31 | 2020-12-03 | 三菱電機株式会社 | 検知装置、検知方法、及び、検知プログラム |
-
1999
- 1999-03-25 JP JP08110399A patent/JP3323147B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020240830A1 (ja) * | 2019-05-31 | 2020-12-03 | 三菱電機株式会社 | 検知装置、検知方法、及び、検知プログラム |
JPWO2020240830A1 (ja) * | 2019-05-31 | 2021-10-21 | 三菱電機株式会社 | 検知装置、検知方法、及び、検知プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP3323147B2 (ja) | 2002-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5606697A (en) | Compiler system for language processing program | |
JP2004302706A (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
EP0428560A1 (en) | Machine process for translating programs in binary machine language into another binary machine language | |
JPH04307625A (ja) | ループ最適化方法及び装置 | |
JP2002149416A (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
JP2000035893A (ja) | デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体 | |
US9256437B2 (en) | Code generation method, and information processing apparatus | |
JP3651774B2 (ja) | コンパイラ及びそのレジスタ割付方法 | |
JP2006338616A (ja) | コンパイラ装置 | |
JP2002527816A (ja) | プログラム最適化装置および方法 | |
JP3323147B2 (ja) | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 | |
JP2001125792A (ja) | 最適化促進装置 | |
JPH08305583A (ja) | Cpuシミュレーション方法 | |
JPH02176938A (ja) | 機械語命令最適化方式 | |
JP3608993B2 (ja) | コンパイラ装置及びコンパイラプログラムを記録した記録媒体 | |
JP3473391B2 (ja) | プログラム処理方法、プログラム処理装置及び記録媒体 | |
JP7026563B2 (ja) | 高位合成方法、高位合成プログラム、高位合成装置 | |
US20080282237A1 (en) | Method and Apparatus For Generating Execution Equivalence Information | |
JP3152194B2 (ja) | コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体 | |
JP3018783B2 (ja) | コンパイル方式 | |
JP3551352B2 (ja) | ループ分割方法 | |
JPH0561687A (ja) | コンパイラの処理方式 | |
JP2004062324A (ja) | 最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体 | |
JPH11195011A (ja) | 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体 | |
JP2000242504A (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: 20020604 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080628 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090628 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100628 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100628 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110628 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120628 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120628 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130628 Year of fee payment: 11 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |