JP2003067195A - 最適化コンパイル方法及び最適化コンパイル装置 - Google Patents

最適化コンパイル方法及び最適化コンパイル装置

Info

Publication number
JP2003067195A
JP2003067195A JP2001258224A JP2001258224A JP2003067195A JP 2003067195 A JP2003067195 A JP 2003067195A JP 2001258224 A JP2001258224 A JP 2001258224A JP 2001258224 A JP2001258224 A JP 2001258224A JP 2003067195 A JP2003067195 A JP 2003067195A
Authority
JP
Japan
Prior art keywords
optimization
arithmetic expression
optimizing
value
expression
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
JP2001258224A
Other languages
English (en)
Inventor
Rikiya Hoshino
力也 星野
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.)
Renesas Micro Systems Co Ltd
Original Assignee
Renesas Micro Systems Co Ltd
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 Renesas Micro Systems Co Ltd filed Critical Renesas Micro Systems Co Ltd
Priority to JP2001258224A priority Critical patent/JP2003067195A/ja
Publication of JP2003067195A publication Critical patent/JP2003067195A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】原始プログラム中の変数や演算式が実際に取り
うる範囲を抽出し、その結果によって最適化を行い、よ
りコストの小さい命令を生成する。 【解決手段】原始プログラムF1に対し、構文解析後、
演算式の各々毎に最適化しこの演算式の最適化結果によ
り演算式の最小値及び最大値の各々を格納する範囲テー
ブル31を初期化する演算式の最適化ステップS1と、
プログラム毎に最適化しその結果により範囲テーブル3
1を更新する広域最適化ステップS2と、広域最適化ス
テップの最適化結果に基づき演算式の最適化が可能であ
るかを判定する最適化可能判定ステップS3と、最適化
可能判定ステップS3で演算式の最適化が可能な場合、
更新した範囲テーブル31を参照して再度の演算式の最
適化を実行し的プログラムF2を生成する演算式の最適
化ステップS4とを有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は最適化コンパイル方
法及び最適化コンパイル装置に関し、特に演算式を含む
プログラムの最適化を行う最適化コンパイル方法及び最
適化コンパイル装置に関する。
【0002】
【従来の技術】コンパイルプログラム(コンパイラ)に
おける最適化は、通常の演算式の最適化や冗長な演算式
の削除、演算式の共通部分をテンポラリ変数に代入して
参照部分をそのテンポラリ変数に置換する共通部分式の
削除の最適化、ループの最適化や関数のインライン展
開、様々な最適化を同時に行うことによって実行性能を
向上させるとともにコードサイズを縮小する。
【0003】従来の最適化コンパイル方法における入力
原始プログラムの最適化を行い目的プログラムを生成す
るまでの処理をフローチャートで示す図4を参照する
と、この従来の最適化コンパイル方法は、入力した原始
プログラムF1に対し、構文解析後、まず演算式単位で
演算式自身の最適化や冗長な演算式の削除、演算式の移
動といった最適化(以下、演算式の最適化とする)ステ
ップP1を行う。
【0004】次に、より広範囲なプログラムの流れに着
目し、その範囲において冗長なコードの削除、ループ最
適化、関数のインライン展開最適化といった最適化(以
下、広域最適化とする)ステップP2を行う。
【0005】その結果、最適化可能判定ステップP3で
演算式の最適化が可能になった場合は、再度演算式の最
適化ステップP4を行い、全ての最適化の終了後に目的
プログラムF2を生成する。
【0006】これらの最適化のうち、演算式の最適化の
中に、演算式の取り得る値が特定の範囲の場合のみ行え
る最適化が存在する。
【0007】例を挙げると、コンパイラの目的プログラ
ムのターゲットとなるプロセッサの中には、特定の命令
に対する実行に制限があるものが存在する。その例とし
て、16ビットの乗算器を持ち、32ビットのデータ長
を操作できるプロセッサがある。このプロセッサでは、
乗算器が16ビットまでしか存在しないために、32ビ
ット長の乗算は特定のサブルーチンを呼び出すことによ
って機能を実現することになる。このように、特定命令
の実行上に制限があるものが存在するので、演算式の内
容からそれらのどちらかの機能を使用するか判定する最
適化がある。
【0008】演算式の計算で何度も使用される変数や、
共通部分式の削除の最適化で生成されるテンポラリ変数
は、性能向上のためにプロセッサのレジスタに取られる
ことが多いが、一般にレジスタの大きさは通常プロセッ
サが扱える最大の大きさの変数と同一であり、それらの
変数を利用した演算式の結果の大きさも同一となる。
【0009】上述した従来の最適化コンパイル方法の場
合、変数や演算式の取りうる値として認識できるのはそ
れぞれ変数あるいは演算式の型の最大の範囲であり、こ
れらは実際に取りうる値の範囲の方が小さい場合でも効
率の良い目的プログラムの命令に置き換えることができ
ない。
【0010】16ビットの乗算器を持つ32ビットのプ
ロセッサをターゲットとしたコンパイラで、従来の最適
化コンパイル方法による最適化の過程を説明図で示す図
5を参照すると、原始プログラムF1は、ループカウン
タ変数Iが0から1000までの1ずつ増加する間の1
001回、I*Iを配列AのI番目の要素に代入する演
算式F11を実行するループのプログラムである。
【0011】原始プログラムF1の中で演算式F11の
変数Iおよび演算式I*Iについて、最適化P1〜P4
の実行中はそれぞれの演算式の型は、最適化中の演算式
変数認識情報を表形式で示す演算式変数認識情報101
に示すように符号付き32ビット整数と認識される。そ
の結果、目的プログラムF2を生成すると、演算式F1
1の乗算部分はプロセッサが持つ乗算命令を使用できな
いので、32ビットの乗算を行うサブルーチンの呼び出
しF21になる。
【0012】
【発明が解決しようとする課題】上述した従来の最適化
コンパイル方法及び最適化コンパイル装置は、変数や演
算式の取りうる値として認識できるのはそれぞれ変数あ
るいは演算式の型の最大の範囲であり、これらは実際に
取りうる値の範囲の方が小さい場合でも効率の良い目的
プログラムの命令に置き換えることができないという欠
点があった。
【0013】本発明の目的は、原始プログラム中の変数
や演算式が実際に取りうる範囲を抽出し、その結果によ
って最適化を行い、よりコストの小さい命令を生成する
ことが可能な最適化コンパイル方法及び最適化コンパイ
ル装置を提供することにある。
【0014】
【課題を解決するための手段】請求項1記載の発明の最
適化コンパイル方法は、原始プログラムを構文解析しこ
の構文解析結果認識した演算式の単位毎での第1の演算
式最適化を実施し、その後プログラム単位での広域最適
化を実施し、その後第2の演算式最適化を実施して目的
プログラムを生成する最適化コンパイル方法において、
前記第1の演算式最適化で、第1の変数及び前記演算式
の各々の取り得る最小値及び最大値を前記第1の変数及
び前記演算式の各々毎に格納する範囲テーブルを生成し
て対象プロセッサの演算値の最小値及び最大値の各々を
前記範囲テーブルの初期値としてそれぞれ格納し、前記
広域最適化で、この広域最適化の1つであるループ最適
化によりループ及びループカウンタの変数である第2の
変数を認識しこの第2の変数の初期値及び終了値を前記
第2の変数の最小値及び最大値として前記演算式の前記
最小値及び最大値の各々の更新値を求めて前記範囲テー
ブルの前記初期値を更新し、前記第2の演算式最適化
で、前記演算式の各々毎に更新した前記範囲テーブルの
前記第2の変数の前記最小値及び最大値を参照して前記
対象プロセッサの演算命令とサブルーチン呼出のいずれ
か一方を選択使用して最適化することを特徴とするもの
である。
【0015】また、請求項2記載の発明は、請求項1記
載の最適化コンパイル方法において、前記広域最適化方
法が、ループ最適化であり、前記第2の変数がループ及
びループカウンタの変数であることを特徴とするもので
ある。
【0016】請求項3記載の発明の最適化コンパイル方
法は、原始プログラムを構文解析しこの構文解析結果認
識した演算式の単位毎での第1の演算式最適化を実施
し、その後プログラム単位での広域最適化を実施し、そ
の後第2の演算式最適化を実施してコンパイルの対象と
する対象プロセッサの目的プログラムを生成する最適化
コンパイル方法において、入力した前記原始プログラム
に対し、構文解析後、前記演算式単位で演算式自身の最
適化と冗長な演算式の削除及び演算式の移動を含む最適
化手法により前記演算式を最適化しこの演算式の最適化
結果により前記演算式の最小値及び最大値の各々を格納
する範囲テーブルを初期化する第1の演算式の最適化ス
テップと、より広範囲なプログラムの流れに着目し、こ
のプログラムの範囲において冗長なコードの削除とルー
プ最適化と関数のインライン展開最適化を含む最適化手
法により最適化しその結果により前記範囲テーブルを更
新する広域最適化ステップと、前記広域最適化ステップ
の最適化結果に基づき前記演算式の最適化が可能である
かを判定し、可能ならば後述する第2の演算式の最適化
ステップに進み、不可ならば処理を終了してそのまま前
記目的プログラムを生成する最適化可能判定ステップ
と、前記最適化可能判定ステップで、前記演算式の最適
化が可能な場合、更新した前記範囲テーブルを参照して
再度の演算式の最適化を実行し前記目的プログラムを生
成する第2の演算式の最適化ステップとを有することを
特徴とするものである。
【0017】また、請求項4記載の発明は、請求項3記
載の最適化コンパイル方法において、前記広域最適化ス
テップが、前記対象プロセッサの演算式におけるループ
及びループカウンタの変数を認識しこの変数の初期値及
び終了値を前記変数の最小値及び最大値として前記演算
式の前記最小値及び最大値の各々の更新値を求めて前記
範囲テーブルの初期値を更新するループ最適化によりル
ープ内の乗算の最小値及び最大値である乗算範囲を最適
化することを特徴とするものである。
【0018】また、請求項5記載の発明は、請求項4記
載の最適化コンパイル方法において、前記最適化可能判
定ステップが、前記広域最適化ステップで最適化された
前記ループ内の前記乗算の前記乗算範囲に基づき前記対
象プロセッサの乗算命令と乗算サブルーチン呼出のいず
れか一方を選択使用して最適化することを特徴とするも
のである。
【0019】請求項6記載の発明の最適化コンパイル装
置は、原始プログラムを構文解析しこの構文解析結果認
識した演算式の単位毎での第1の演算式最適化を実施
し、その後プログラム単位での広域最適化を実施し、そ
の後第2の演算式最適化を実施してコンパイルの対象と
する対象プロセッサの目的プログラムを生成する最適化
コンパイル装置において、入力した原始プログラムの前
記構文解析及び意味解析を行う解析手段と、最適化の各
過程でデータベースを参照・更新しながら前記解析手段
で認識した前記演算式の最適化を実施し前記目的プログ
ラムを生成する最適化手段とを備え、前記最適化手段
が、前記演算式又は部分式毎に、その演算整数の取り得
る最大値と最小値を格納した前記データベースに対し初
期化・更新を含むテーブル管理を行う範囲テーブル管理
手段と、前記演算式又は部分式を構成する部分式の最大
値と最小値から前記演算式又は部分式の最大値と最小値
を予測する範囲予測手段と、前記演算式又は部分式の前
記最大値と最小値から可能な最適化を判定して最適化を
実行する最適化判定実行手段と、他の最適化によって前
記演算式又は部分式の前記最大値又は最小値が変更され
た場合に関係する前記演算式又は部分式の前記最大値及
び最小値を再予測する範囲再予測手段とを備えて構成さ
れている。
【0020】また、請求項7記載の発明は、請求項6記
載の最適化コンパイル装置において、前記データベース
が、前記演算式又は部分式の各々毎の最大値と最小値を
格納した範囲テーブルを備えて構成されている。
【0021】
【発明の実施の形態】次に、本発明の実施の形態につい
て図面を参照して詳細に説明する。
【0022】本実施の形態の最適化コンパイル方法及び
最適化コンパイル装置は、原始プログラムを構文解析し
この構文解析結果認識した演算式の単位での第1の演算
式最適化を実施し、その後プログラム単位での広域最適
化を実施し、その後第2の式最適化を実施してコンパイ
ルの対象とする対象プロセッサの目的プログラムを生成
する最適化コンパイル方法において、上記第1の式最適
化で、第1の変数及び上記演算式の各々の取り得る最小
値及び最大値を上記第1の変数及び上記演算式の各々毎
に格納する範囲テーブルを生成して前記対象プロセッサ
の演算値の最小値及び最大値の各々を上記範囲テーブル
の初期値としてそれぞれ格納し、上記広域最適化で、予
め定めた広域最適化方法の変数である第2の変数を認識
しこの第2の変数の初期値及び終了値を上記第2の変数
の最小値及び最大値として上記演算式の上記最小値及び
最大値の各々の更新値を求めて上記範囲テーブルの上記
初期値を更新し、上記第2の式最適化で、上記演算式の
各々毎に更新した上記範囲テーブルの上記第2の変数の
上記最小値及び最大値を参照して上記対象(ターゲッ
ト)プロセッサの演算命令とサブルーチン呼出のいずれ
か一方を選択使用して最適化することを特徴とするもの
である。
【0023】次に、本発明の実施の形態をフローチャー
トで示す図1を参照すると、この図に示す本実施の形態
の最適化コンパイル方法は、入力したターゲットプロセ
ッサの原始プログラムF1に対し、構文解析後、演算式
単位で演算式自身の最適化や冗長な演算式の削除、演算
式の移動等により演算式を最適化しこの演算式の最適化
結果により演算式の最小値及び最大値を格納したデータ
ベースF3の範囲テーブル31を初期化する演算式の最
適化ステップS1と、より広範囲なプログラムの流れに
着目し、このプログラム範囲において冗長なコードの削
除とループ最適化と関数のインライン展開最適化等によ
り最適化しその結果によりデータベースF3の範囲テー
ブル31を更新する広域最適化ステップS2と、広域最
適化ステップS2の最適化結果に基づき演算式の最適化
が可能であるかを判定し、可能ならば次の演算式の最適
化ステップS4に進み、不可ならば処理を終了してその
まま目的プログラムF2を生成する最適化可能判定ステ
ップS3と、最適化可能判定ステップS3で演算式の最
適化が可能な場合、更新した範囲テーブル31Aを参照
して再度の演算式の最適化を実行しターゲットプロセッ
サの目的プログラムF2を生成する演算式の最適化ステ
ップS4とを有する。
【0024】本発明の実施の形態の最適化コンパイル方
法を実行する本実施の形態の最適化コンパイル装置をブ
ロック図で示す図2を参照すると、この図に示す本実施
の形態の最適化コンパイル装置は、データ格納用のファ
イルとして従来と共通の原始プログラムF1を格納した
ファイルである原始プログラムファイルF1(以下プロ
グラムとその格納ファイルとを区別する必要がない場合
は原始プログラムF1等と省略)と、最適化結果である
目的プログラムF2を格納する目的プログラムファイル
F2とに加えて、変数及び演算式の情報を格納し最適化
の各過程で上記格納情報を更新・参照するためのデータ
ベース3を備え、入力した原始プログラムF1の構文解
析及び意味解析を行う解析手段1と、最適化の各過程で
データベースF3を参照・更新しながら解析手段1で認
識した演算式の最適化を実施し目的プログラムF2を生
成する最適化手段2とを備える。
【0025】最適化手段2は、演算式又は部分式毎に、
その演算整数の取り得る最大値と最小値(以下最大値と
最小値)を格納したデータベース3の後述の範囲テーブ
ル31に対し初期化・更新を含むテーブル管理を行う範
囲テーブル管理手段21と、演算式又は部分式を構成す
る部分式の最大値と最小値から演算式又は部分式の最大
値と最小値を予測する範囲予測手段22と、演算式又は
部分式の最大値と最小値から可能な最適化を判定して最
適化を実行する最適化判定実行手段23と、他の最適化
によって演算式又は部分式の最大値又は最小値が変更さ
れた場合に関係する演算式又は部分式の最大値及び最小
値を再予測する範囲再予測手段24とを備える。
【0026】データベース3は、演算式又は部分式の各
々毎の最大値と最小値を格納した範囲テーブル31を備
える。
【0027】次に、図1及び図2を参照して本実施の形
態の動作について説明すると、まず、解析手段1は原始
プログラムF1を読み込み、構文解析及び意味解析を行
い、解析結果を最適化手段2に出力する。また、データ
ベース3は、範囲テーブル管理手段21が、後述の演算
式最適化ステップS1において、変数及び演算演算式毎
に格変数及びこの演算式の取り得る最小値及び最大値を
格納する範囲テーブル31を生成し、この範囲テーブル
31にプログラムの最適化対象とするターゲットプロセ
ッサの演算値(整数)の最小値及び最大値を初期値とし
てそれぞれ格納しておく。
【0028】次に、最適化手段2では、解析手段1から
供給を受けた解析結果から、演算式の値を認識し、演算
式単位で演算式自身の最適化、冗長な演算式の削除、及
び演算式の移動等により演算式を最適化し、この演算式
の最適化結果によりデータベースF3の範囲テーブル3
1を更新する(演算式最適化ステップS1)。以下説明
の便宜上、最適化対象の演算式を1つ取り上げこの演算
式を演算式Aとする。
【0029】次に、プログラム単位での広域最適化ステ
ップS2を行う。広域最適化ステップS2では、冗長な
コードの削除、ループ最適化、関数のインライン展開最
適化を行う。処理例としてループ最適化について説明す
ると、このループ最適化では、範囲予測手段22が、タ
ーゲットプロセッサの演算式(例えば乗算)におけるル
ープ及びそのループカウンタの変数(以下ループ及びル
ープカウンタ変数)を認識し、このループ及びループカ
ウンタ変数の各々の初期値及び終了値をそれぞれこのル
ープ及びループカウンタ変数の各々の最小値及び最大値
として演算式Aの最小値及び最大値を求め、範囲テーブ
ル管理手段21により、範囲テーブル31の演算式Aの
最小値及び最大値の欄を更新する。
【0030】次に、最適化判定実行手段23は、広域最
適化ステップS2の最適化結果により更新した範囲テー
ブル31の最小値及び最大値に基づき、演算式Aの最適
化が可能であるかを判定する(最適化可能判定ステップ
S3)。最適化が可能ならば、次の演算式の最適化ステ
ップS4に進む。
【0031】演算式の最適化ステップS4では、演算式
毎に、この例では演算式Aに対し、範囲再予測手段24
により、範囲テーブル31の広域最適化ステップS2で
更新した変数の最小値及び最大値を参照して上記対象プ
ロセッサの演算命令又はサブルーチン呼出を選択使用し
て最適化する。
【0032】最適化可能判定ステップS3で、演算式の
最適化が不可能ならば処理を終了してそのまま目的プロ
グラムF2を生成する。
【0033】次に、具体例として、本実施の形態の最適
化コンパイル方法を従来と同様の16ビットの乗算器を
持つ32ビットのプロセッサをターゲットとしたコンパ
イラに対し適用した場合において、広域最適化の一つで
あるループ最適化の過程を説明図で示す図3を参照する
と、ここでは、本実施の形態の最適化コンパイル方法に
よりループ内の乗算が最適化されるまでの過程を示す。
【0034】原始プログラムF1の中で演算式F11の
変数I及び演算式I*Iについて、最初の演算式の最適
化ステップS1における演算式の認識の実行時に、それ
ぞれの最大値と最小値を格納するためのデータベース3
を生成する。この時点では、、広域最適化ステップS2
の実行前であり、ループ内の演算式F11のI及びI*
Iはループ内部であることが認識されていないので、デ
ータベース3内の範囲テーブル31の各演算式の最大値
及び最小値は、従来と同様に、初期設定として、32ビ
ットの符号付き整数の最大値及び最小値が設定されてい
る。この例では、Iの最小値は、−214748364
8、最大値は、2147483647であり、また、I
*Iの最小値は、−2147483648、最大値は、
2147483647である。
【0035】仮に、この状態で目的プログラムF2を生
成したとすると、演算式F11の乗算部分は、プロセッ
サが持つ乗算命令を使用できないので、従来と同様に、
32ビットの乗算を行うサブルーチンの呼び出しF21
になる。
【0036】広域最適化ステップS2のループ最適化ス
テップS21で、ループ及びカウンタ変数Iを認識する
と、ループ内の演算式Iについて、ループカウンタの初
期値及び終了値をそれぞれ最小値及び最大値としてデー
タベース3の範囲テーブル31のIの欄を範囲テーブル
31Aの状態に更新すると同時に、I*Iの最大値と最
小値も更新する。
【0037】この例では、Iの最小値を0、最大値を1
000に、また、I*Iの最小値を0に、最大値を10
00000にそれぞれ更新する。
【0038】Iが16ビットの整数の範囲内と認識した
ので、次の演算式の最適化ステップS4によって次のよ
うに最適化する。すなわち、目的プログラムF2の生成
時は、演算式F11の乗算部分をサブルーチン呼び出し
F21ではなく、乗算命令F22を使用する。
【0039】なお、以上の説明では、範囲テーブル32
のI*Iの最大値及び最小値は使用していないが、演算
式がさらに複雑になった場合に利用することができる。
【0040】このように、本実施の形態の最適化コンパ
イル方法は、演算式又は部分式の最小値と最大値を広域
最適化でのループ最適化によりループ及びループカウン
タの変数の最小値及び最大値として上記演算式の前記最
小値及び最大値を求め上記範囲テーブルを更新し、上記
第2の式最適化で演算式毎に更新した上記範囲テーブル
の変数の上記最小値及び最大値である演算範囲を参照し
て上記対象プロセッサの演算命令又はサブルーチン呼出
命令を選択使用して最適化することにより、例えば乗算
の場合、大きな計算コストを必要とする乗算のサブルー
チンであるランタイムライブラリ関数ではなく、通常1
ないし2クロックで処理する乗算命令に置換することに
より処理速度の大幅な向上とコードサイズの削減を実現
できる。また、乗算以外の他の演算式の最適化やプロセ
ッサに依存する最適化にも応用して処理速度の向上やコ
ードサイズの削減ができる。
【0041】
【発明の効果】以上説明したように、本発明の最適化コ
ンパイル方法及び最適化コンパイル装置は、第1の演算
式最適化で、第1の変数及び前記演算式の各々の取り得
る最小値及び最大値を範囲テーブルの初期値としてそれ
ぞれ格納し、広域最適化で、ループ最適化によりループ
及びループカウンタの変数の初期値及び終了値を変数の
最小値及び最大値として上記演算式の最小値及び最大値
の各々の更新値を求めて上記範囲テーブルの前記初期値
を更新し、2の演算式最適化で、演算式の各々毎に更新
した範囲テーブルの変数の最小値及び最大値を参照して
対象プロセッサの演算命令とサブルーチン呼出のいずれ
か一方を選択使用して最適化することにより、対象プロ
セッサに対し、更新した範囲テーブルのより狭い範囲の
最小値と最大値に基づき大きな計算コストを必要とする
通常演算のサブルーチン呼出命令ではなく、上記狭い範
囲の最小値と最大値の演算を実行可能な単純な演算命令
に置換することにより処理速度の大幅な向上とコードサ
イズの削減を実現できるという効果がある。
【図面の簡単な説明】
【図1】本発明の最適化コンパイル方法の一実施の形態
を示すフローチャートである。
【図2】本実施の形態の最適化コンパイル方法を行う最
適化コンパイル装置の一例を示すブロック図である。
【図3】本実施の形態の最適化コンパイル方法による最
適化の過程の一例を示す説明図である。
【図4】従来の最適化コンパイル方法の一例を示すフロ
ーチャートである。
【図5】従来の最適化コンパイル方法による最適化の過
程の一例を示す説明図である。
【符号の説明】
1 解析手段 2 最適化手段 3 データベース 21 範囲テーブル管理手段 22 範囲予測手段 23 最適化判定実行手段 24 範囲再予測手段 31 範囲テーブル 101 演算式変数認識情報 F1 原始プログラム F2 目的プログラム

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムを構文解析しこの構文解
    析結果認識した演算式の単位毎での第1の演算式最適化
    を実施し、その後プログラム単位での広域最適化を実施
    し、その後第2の演算式最適化を実施して目的プログラ
    ムを生成する最適化コンパイル方法において、 前記第1の演算式最適化で、第1の変数及び前記演算式
    の各々の取り得る最小値及び最大値を前記第1の変数及
    び前記演算式の各々毎に格納する範囲テーブルを生成し
    て対象プロセッサの演算値の最小値及び最大値の各々を
    前記範囲テーブルの初期値としてそれぞれ格納し、 前記広域最適化で、予め定めた広域最適化方法の変数で
    ある第2の変数を認識しこの第2の変数の初期値及び終
    了値を前記第2の変数の最小値及び最大値として前記演
    算式の前記最小値及び最大値の各々の更新値を求めて前
    記範囲テーブルの前記初期値を更新し、 前記第2の演算式最適化で、前記演算式の各々毎に更新
    した前記範囲テーブルの前記第2の変数の前記最小値及
    び最大値を参照して前記対象プロセッサの演算命令とサ
    ブルーチン呼出のいずれか一方を選択使用して最適化す
    ることを特徴とする最適化コンパイル方法。
  2. 【請求項2】 前記広域最適化方法が、ループ最適化で
    あり、前記第2の変数がループ及びループカウンタの変
    数であることを特徴とする請求項1記載の最適化コンパ
    イル方法。
  3. 【請求項3】 原始プログラムを構文解析しこの構文解
    析結果認識した演算式の単位毎での第1の演算式最適化
    を実施し、その後プログラム単位での広域最適化を実施
    し、その後第2の演算式最適化を実施してコンパイルの
    対象とする対象プロセッサの目的プログラムを生成する
    最適化コンパイル方法において、 入力した前記原始プログラムに対し、構文解析後、前記
    演算式単位で演算式自身の最適化と冗長な演算式の削除
    及び演算式の移動を含む最適化手法により前記演算式を
    最適化しこの演算式の最適化結果により前記演算式の最
    小値及び最大値の各々を格納する範囲テーブルを初期化
    する第1の演算式の最適化ステップと、 より広範囲なプログラムの流れに着目し、このプログラ
    ムの範囲において冗長なコードの削除とループ最適化と
    関数のインライン展開最適化を含む最適化手法により最
    適化しその結果により前記範囲テーブルを更新する広域
    最適化ステップと、 前記広域最適化ステップの最適化結果に基づき前記演算
    式の最適化が可能であるかを判定し、可能ならば後述す
    る第2の演算式の最適化ステップに進み、不可ならば処
    理を終了してそのまま前記目的プログラムを生成する最
    適化可能判定ステップと、 前記最適化可能判定ステップで、前記演算式の最適化が
    可能な場合、更新した前記範囲テーブルを参照して再度
    の演算式の最適化を実行し前記目的プログラムを生成す
    る第2の演算式の最適化ステップとを有することを特徴
    とする最適化コンパイル方法。
  4. 【請求項4】 前記広域最適化ステップが、前記対象プ
    ロセッサの演算式におけるループ及びループカウンタの
    変数を認識しこの変数の初期値及び終了値を前記変数の
    最小値及び最大値として前記演算式の前記最小値及び最
    大値の各々の更新値を求めて前記範囲テーブルの初期値
    を更新するループ最適化によりループ内の乗算の最小値
    及び最大値である乗算範囲を最適化することを特徴とす
    る請求項3記載の最適化コンパイル方法。
  5. 【請求項5】 前記最適化可能判定ステップが、前記広
    域最適化ステップで最適化された前記ループ内の前記乗
    算の前記乗算範囲に基づき前記対象プロセッサの乗算命
    令と乗算サブルーチン呼出のいずれか一方を選択使用し
    て最適化することを特徴とする請求項4記載の最適化コ
    ンパイル方法。
  6. 【請求項6】 原始プログラムを構文解析しこの構文解
    析結果認識した演算式の単位毎での第1の演算式最適化
    を実施し、その後プログラム単位での広域最適化を実施
    し、その後第2の演算式最適化を実施してコンパイルの
    対象とする対象プロセッサの目的プログラムを生成する
    最適化コンパイル装置において、 入力した原始プログラムの前記構文解析及び意味解析を
    行う解析手段と、 最適化の各過程でデータベースを参照・更新しながら前
    記解析手段で認識した前記演算式の最適化を実施し前記
    目的プログラムを生成する最適化手段とを備え、 前記最適化手段が、前記演算式又は部分式毎に、その演
    算整数の取り得る最大値と最小値を格納した前記データ
    ベースに対し初期化・更新を含むテーブル管理を行う範
    囲テーブル管理手段と、 前記演算式又は部分式を構成する部分式の最大値と最小
    値から前記演算式又は部分式の最大値と最小値を予測す
    る範囲予測手段と、 前記演算式又は部分式の前記最大値と最小値から可能な
    最適化を判定して最適化を実行する最適化判定実行手段
    と、 他の最適化によって前記演算式又は部分式の前記最大値
    又は最小値が変更された場合に関係する前記演算式又は
    部分式の前記最大値及び最小値を再予測する範囲再予測
    手段とを備えることを特徴とする最適化コンパイル装
    置。
  7. 【請求項7】 前記データベースが、前記演算式又は部
    分式の各々毎の最大値と最小値を格納した範囲テーブル
    を備えることを特徴とする請求項6記載の最適化コンパ
    イル装置。
JP2001258224A 2001-08-28 2001-08-28 最適化コンパイル方法及び最適化コンパイル装置 Withdrawn JP2003067195A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001258224A JP2003067195A (ja) 2001-08-28 2001-08-28 最適化コンパイル方法及び最適化コンパイル装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001258224A JP2003067195A (ja) 2001-08-28 2001-08-28 最適化コンパイル方法及び最適化コンパイル装置

Publications (1)

Publication Number Publication Date
JP2003067195A true JP2003067195A (ja) 2003-03-07

Family

ID=19085785

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001258224A Withdrawn JP2003067195A (ja) 2001-08-28 2001-08-28 最適化コンパイル方法及び最適化コンパイル装置

Country Status (1)

Country Link
JP (1) JP2003067195A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1458150A2 (en) 2003-03-12 2004-09-15 NTT DoCoMo, Inc. Mobile communications system, mobile communications method, server, transfer device, and mobile communications terminal
CN1908895B (zh) * 2005-08-02 2010-05-05 国际商业机器公司 验证应用程序全球化问题的系统和方法
WO2011096016A1 (ja) * 2010-02-05 2011-08-11 株式会社 東芝 コンパイラ装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1458150A2 (en) 2003-03-12 2004-09-15 NTT DoCoMo, Inc. Mobile communications system, mobile communications method, server, transfer device, and mobile communications terminal
CN1908895B (zh) * 2005-08-02 2010-05-05 国际商业机器公司 验证应用程序全球化问题的系统和方法
WO2011096016A1 (ja) * 2010-02-05 2011-08-11 株式会社 東芝 コンパイラ装置
JPWO2011096016A1 (ja) * 2010-02-05 2013-06-06 株式会社東芝 コンパイラ装置

Similar Documents

Publication Publication Date Title
JP3819572B2 (ja) 動的分岐予測システム
Peymandoust et al. Automatic instruction set extension and utilization for embedded processors
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JP2000347873A (ja) マルチプラットフォーム環境における命令選択
US20040128660A1 (en) Efficient dead code elimination
JP2001166949A (ja) シンボリック実行を用いてソースコードをコンパイルするための方法及び装置
US6895580B2 (en) Expression reduction during compilation through routine cloning
JPH0769832B2 (ja) プログラミング演算の効果と従属性とを表現する方法及び装置
JP2003196106A (ja) プログラム変換方法、コンピュータ装置及びプログラム
JP2008510230A (ja) 非循環命令パターンの認識の方法
JP4719415B2 (ja) 情報処理システム及びコード生成方法
JP2003067195A (ja) 最適化コンパイル方法及び最適化コンパイル装置
CN108920149B (zh) 编译方法和编译装置
Ge et al. Rollbin: reducing code-size via loop rerolling at binary level
JP2001125792A (ja) 最適化促進装置
JP2007226589A (ja) プログラム変換システム
US7774766B2 (en) Method and system for performing reassociation in software loops
JPH10320212A (ja) キャッシュ向け最適化方法
Holmer A tool for processor instruction set design
JPH0756745A (ja) 言語処理プログラムのコンパイラ処理方式
US5437035A (en) Method and apparatus for compiling a program incending a do-statement
JP2000163266A (ja) 命令実行方式
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JP2002140198A (ja) インライン展開方法
JP4327533B2 (ja) 演算処理プログラム、演算処理方法、および演算処理装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20081104