JPH07105015A - コンパイル方式 - Google Patents

コンパイル方式

Info

Publication number
JPH07105015A
JPH07105015A JP24922793A JP24922793A JPH07105015A JP H07105015 A JPH07105015 A JP H07105015A JP 24922793 A JP24922793 A JP 24922793A JP 24922793 A JP24922793 A JP 24922793A JP H07105015 A JPH07105015 A JP H07105015A
Authority
JP
Japan
Prior art keywords
optimization
register
virtual
registers
instruction
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
Application number
JP24922793A
Other languages
English (en)
Other versions
JP3276479B2 (ja
Inventor
Naoji Nakahira
直司 中平
Masahiko Shiotani
晶彦 塩谷
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP24922793A priority Critical patent/JP3276479B2/ja
Publication of JPH07105015A publication Critical patent/JPH07105015A/ja
Application granted granted Critical
Publication of JP3276479B2 publication Critical patent/JP3276479B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 レジスタへの割り付けを高効率に行なって高
速に実行可能な命令列を生成することができるコンパイ
ル方式に関し、スピルコードの発生を減らし、実レジス
タの退避域を減らすことができるコンパイル方式を提供
することことを目的とする。 【構成】 ソースプログラムを解析して中間表現に変換
するフロントエンド手段11と、中間表現レベルでの最
適化を施して最適化対象の全ての変数を一括して仮想レ
ジスタに変換する第1最適化処理手段12と、第1最適
化処理手段12にて最適化された中間表現を特定のハー
ドウェアの命令と1対1に対応する中間表現に変換する
ようにした命令展開手段13と、命令レベルでの最適化
をしながら実レジスタの数を意識した最適化対象変数の
仮想レジスタ変換を行う第2最適化処理手段14と、こ
の第2最適化処理手段14にて最適化処理された中間表
現に対してハードウェアが持つ実レジスタに割り付ける
実レジスタ割り付け手段15とによって構成される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンパイル方式に関し、
特にコンピュータ用言語をマシン語に変換するときにレ
ジスタへの割り付けを高効率に行って高速に実行可能な
命令列を生成することができるコンパイル方式に関す
る。
【0002】近年のコンピュータシステムでは、RIS
C(縮小命令セットコンピュータ)プロセッサや、CI
SC(複合命令セットコンピュータ)プロセッサにおい
ても、RISCプロセッサの手法を取り入れた高性能な
プロセッサの台頭が著しい。このようなプロセッサは、
多量のレジスタを持ち、これらを有効に利用するための
コンパイラの最適化機能に対する要求が非常に高くなっ
てきている。
【0003】コンパイラの中でレジスタを効率よくデー
タに割り当てる方式に、グラフカラーリングと呼ばれる
手法がある(米国特許第4571678号参照)。近年
の最適化コンパイラのほとんどは、この手法を採用して
いる。しかし、グラフカラーリングを用いても、対象と
なるデータが使用可能な実レジスタの数を越えた場合に
は、一時的にデータをメモリに退避し、必要時にそのメ
モリからロードするという操作をしなければならない。
メモリへの退避のコストの影響は、プロセッサでは、特
に大きいため、どのデータを実レジスタに保持するかは
重要な問題となる。
【0004】
【従来の技術】図8は従来のコンパイル方式の構成を示
す図である。図において、1はフロントエンド手段、2
は最適化処理手段、3は実レジスタ割り付け手段、4は
コード出力手段である。
【0005】フロントエンド手段1は構文解析区と呼ば
れ、C言語、FORTRAN、COBOL等で記述され
たソースプログラムをコンパイラの使用する中間表現
(内部表現、中間テキスト)へ変換する部分である。最
適化処理手段2はフロントエンド手段1にて変換された
中間表現に対して、中間表現の列の中で無駄なものを省
いたり、順序を入れ換えたりして中間表現をより効率の
よい表現にする。実レジスタ割り付け手段3は最適化さ
れた中間表現に対してレジスタを割り付ける。これは、
データがレジスタに入っていると、ロード又はストアの
命令が不要になり、プログラムの実行速度が速くなるこ
とによる。コード出力手段4はマシンに1対1に対応し
た命令列を出力して、オブジェクトプログラムを生成す
る。オブジェクトプログラムはコンパイラやアセンブラ
命令により生成される実行可能な命令列を言い、オブジ
ェクトコードとも呼ばれるものである。そして、最終的
には、生成されたオブジェクトプログラムをリンカにか
けて、実行できる命令列を生成する。
【0006】図9は従来のコンパイル方式によって生成
される命令列の例を示す図である。図において、たとえ
ば図示のようなソースプログラムP1があるとすれば、
フロントエンド手段1にて処理された後は、中間表現P
2の形に変換される。すなわち、たとえば「a=b+
c」というソースプログラムに対し、bとcとを加えた
値をaに代入すると言う中間表現「add a,b,
c」に変換される。次に、最適化処理手段2にて処理さ
れると、中間言語P3に変換される。図示の例では、こ
れ以上最適化のしようがないので、中間言語P3は中間
表現P2と同じ表現になる。その後、実レジスタ割り付
け手段3にて、各変数のレジスタへの割り付けを行い、
たとえばP4のようになる。なお、図示の例では、変数
bが最適化不可の変数であってレジスタが割り付けられ
ず、退避先のメモリの中からロードした値にレジスタR
2、R3を割り付ける場合として示してある。最後に、
コード出力手段4によってオブジェクトプログラムP5
が出力される。たとえば、bの値をレジスタR2にロー
ドし、レジスタR2の値とレジスタR4の値とを加えた
値をレジスタR1に入れる、というようなマシンに1対
1に対応した命令列が生成される。つまり、従来のコン
パイル方式では、ソースプログラムに対して最適化処理
を行い、その中間表現をダイレクトに使って、レジスタ
割り付けを行い、コード出力をしている。
【0007】
【発明が解決しようとする課題】ハードウェアが持つ実
レジスタに割り付けるべきデータ(以下、単にデータと
呼ぶ)は、プログラム中に出現した変数やコンパイラ自
身が生成した一時変数である。レジスタ割り付け処理
は、これらのデータに着目して実レジスタに割り付けて
いる。また、最適化処理においては、実レジスタ数を考
慮せず、無限個数のレジスタ(仮想レジスタ)が存在す
るものと見なして最適化処理を進めていた。
【0008】したがって、従来のコンパイル方式では以
下に示すような問題点があった。 (1)レジスタ割り付けの対象のデータが、複数の形態
で表現されているため、割り付け対象の選定処理を複雑
にしていた。 (2)実レジスタの数を無視して最適化を実施するた
め、レジスタの必要量(レジスタプレッシャ)が増え
る。 (3)レジスタプレッシャが上がることにより、レジス
タ割り付け処理において実レジスタに保持することがで
きなくなったデータに対してメモリへの退避/復元処理
(スピル処理)が起こる。すなわち、レジスタが必要な
データに対して割り付けるべきレジスタがなくなってし
まった場合に、あるレジスタの内容をメモリ又は他の種
類のレジスタに退避させることによりそのレジスタを使
用できるようにし、かつ、退避された命令が使用される
ときには先に退避した場所からレジスタに持ってくる、
という操作をするスピルコードが発生する。つまり、過
剰な最適化を行うことにより、かえって性能が低下する
場合がある。
【0009】本発明はこのような点に鑑みてなされたも
のであり、スピルコードの発生を減らし、実レジスタの
退避域を減らすことにより、実行速度の速いオブジェク
トプログラムを生成することができるレジスタの高効率
割り当てコンパイル方式を提供することを目的とする。
【0010】
【課題を解決するための手段】図1は上記目的を達成す
る本発明のコンパイル方式の原理構成図である。図にお
いて、本発明によるコンパイル方式は、ソースプログラ
ムを解析して中間表現に変換するフロントエンド手段1
1と、その中間表現に対して最適化を施して最適化対象
の全ての変数を仮想レジスタに変換する第1最適化処理
手段12と、第1最適化処理手段12にて最適化された
中間表現を特定のハードウェアの命令と1対1に対応す
る中間表現に変換するようにした命令展開手段13と、
この命令展開手段にて展開された中間表現を最適化しな
がら実レジスタの数を考慮した最適化対象変数の仮想レ
ジスタ変換を行う第2最適化処理手段14と、この第2
最適化処理手段14にて処理された中間表現に対してハ
ードウェアが持つ実レジスタに割り付ける実レジスタ割
り付け手段15とによって構成されている。
【0011】
【作用】上述の手段によれば、フロントエンド手段11
にて変換された中間表現を、第1最適化処理手段12に
て中間表現レベルの最適化及び最適化対象の変数の仮想
レジスタ変換を行い、命令展開手段13でハードウェア
の命令と1対1に対応する中間表現にばらして、第2最
適化処理手段14でもう一度命令レベルでの最適化をし
ながら同じタイミングで実レジスタの数を意識した最適
化対象変数の仮想レジスタ変換を行って、実レジスタ割
り付け手段15により実レジスタへの割りつけを行う。
【0012】
【実施例】以下、本発明の一実施例を図面に基づいて説
明する。図2は本発明の実施例を示す構成図である。図
において、本発明のコンパイル方式は、フロントエンド
手段11と、第1最適化処理手段12aと、第1仮想レ
ジスタ変換手段12bと、命令展開手段13と、第2最
適化処理手段14と、この第2最適化処理手段14とと
もに実行される第2仮想レジスタ変換手段14aと、実
レジスタ割り付け手段15と、命令スケジューリング手
段16とから構成されている。
【0013】フロントエンド手段11及び第1最適化処
理手段12aは、ソースプログラムをコンパイラの使用
する中間表現に変換し、その中間表現のレベルでの最適
化を行う部分であり、従来のコンパイル方式と同じ機能
を有する。以下の第1仮想レジスタ変換手段12bから
第2最適化処理手段14までの部分は新規な構成部分で
ある。その後、実レジスタ割り付け手段15及び命令ス
ケジューリング手段16がある。命令スケジューリング
手段16は、命令と1対1に対応した中間表現に対し
て、中間表現の並びを矛盾のない範囲で並び変える部分
である。
【0014】最適化の対象データを仮想レジスタに変換
する部分は、命令展開手段13の前後にそれぞれ存在す
る。まず、命令展開前に第1仮想レジスタ変換手段12
bによって実施される仮想レジスタ変換処理について説
明する。
【0015】第1仮想レジスタ変換手段12bでは、有
効範囲がプログラム内に閉じた、最適化対象の変数を、
仮想レジスタへ置き換える。第1仮想レジスタ変換手段
12bで仮想レジスタに置き換えられなかった変数の定
義/参照は、命令展開手段13において、全てメモリと
のロード/ストアで表現される。このため、この第1仮
想レジスタ変換手段12bは、最適化を有効に機能させ
るための必須の機能となる。
【0016】図3は第1仮想レジスタ変換手段の処理の
流れを示す図である。仮想レジスタ変換の処理を行うに
は、仮想レジスタへ置換するべき変数の情報を収集する
必要がある。
【0017】情報の収集は、ステップS1において、ル
ーチン内のみで使用されている変数であるかどうかを判
断し、ステップS2において、対象となる変数が異なる
方法でアクセスされることがない変数であるかどうかを
判断し、そしてステップS3において、対象となるデー
タが定義先行でないことを判断することからなる。すな
わち、仮想レジスタに変換しても構わないデータとし
て、外部変数ではなく、ルーチン(関数)内のみで使用
されている変数であることと、対象となる変数が、たと
えば、FORTRANでいうイクイバレンス変数のよう
に、異なる方法でアクセスされることがない変数である
ことであり、これらの条件を満たす変数に対して、ステ
ップS4において仮想レジスタへ置き換える。また、対
象となるデータが何れの条件も満たしていなく、かつ定
義先行の変数であるときには、仮想レジスタへの変換は
行われない。このように、第1仮想レジスタ変換手段1
2bは仮想レジスタへ置換すべき変数を選別する情報収
集手段と、その変数を仮想レジスタに1対1に割り付け
する手段とで構成されていることになる。
【0018】図4は本発明のコンパイル方式によって生
成される命令列の例を示す図である。図において、フロ
ントエンド手段11に入力されたソースプログラムP1
1は中間表現P12に変換される。第1最適化処理手段
12aで最適化処理がなされると、中間表現P12は中
間言語P3に変換される。図示の例では、これ以上最適
化のしようがないので、中間言語P3は中間表現P2と
同じ表現になる。そして、第1仮想レジスタ変換手段1
2bにおいて、最適化対象データの仮想レジスタ変換が
行われ、中間表現P14となる。なお、この例では、変
数bは外部変数のような最適化不可の変数であるとして
いる。したがって、bを除く変数a,c,d及びeはそ
れぞれ仮想レジスタprg1,prg2,prg3,p
rg4に変換される。
【0019】命令展開手段13は、第1仮想レジスタ変
換手段12bにおいて変換された中間表現P14を特定
のハードウェアの命令と1対1に対応する中間表現P1
5に変換する部分である。ここで、参照先行の変数につ
いては、仮想的な定義を生成(仮想レジスタへ転送する
命令を生成)した後、最適化の対象となる参照先行の変
数の定義/参照を仮想レジスタへ置き換える。図4の例
では、一時的な変数「tmp1」、「tmp2」を生成
し、これらに変数bの値をロードするようにしている。
この一時変数は仮想レジスタと同様に扱うことができる
ので、これも最適化の対象となり、命令と1対1に対応
した段階で、もう一度最適化することができる。
【0020】第1仮想レジスタ変換手段12bにて最適
化の対象となる変数を仮想レジスタ変換することによ
り、命令展開手段13では、この変数の記憶領域へアク
セスする必要がなくなる。したがって、コンパイラは、
この変数に対しての記憶領域を割り付ける必要がなくな
るため、生成したオブジェクトの大きさを縮小すること
に寄与できる。
【0021】命令展開手段13の後の第2最適化処理手
段14は、命令レベルの最適化を施す部分であり、第1
仮想レジスタ変換手段12bとここで生成された仮想レ
ジスタとが最終的に、実レジスタ割り付け手段15にお
いて、実レジスタの割り付けの対象となる。この第2最
適化処理手段14は、第1仮想レジスタ変換12bにて
仮想レジスタ変換ができなかったデータについては必ず
メモリアクセスが出るので、そのデータに対しても最適
化を試みるものである。最適化の範囲がプログラム全体
になるか局所的になるかは、データの出現の範囲などを
解析して決められる。
【0022】第2最適化処理手段14にて、最適化の対
象となるデータは、以下の2つである。すなわち、仮想
レジスタ変換部1で生成した仮想レジスタと、仮想レジ
スタ変換1で仮想レジスタに変換されずにメモリへのロ
ード/ストアが必要なデータとである。
【0023】第2仮想レジスタ変換手段14aは第2最
適化処理手段14の最適化機能の一部であり、その機能
は、第1仮想レジスタ変換手段12bについて説明した
ような、最適化対象データの仮想レジスタへの変換では
なく、最適化を進めていく過程で新たに仮想レジスタを
生成した方がオブジェクトプログラムの性能向上が可能
である場合を見極めて、最適化を進めていくことにあ
る。
【0024】第2最適化処理手段14では、ルーチン
(関数)を単位とする代りに、部分を対象として適宜仮
想レジスタ化を行う。このとき、実レジスタの数を考慮
せずに、最適化を進めると、仮想レジスタの個数が必要
以上に増加し、後のレジスタ割り付け手段15におい
て、仮想レジスタを実レジスタに効果的にマッピングす
ることができなくなる。その結果、スピルコードが多数
生成され、オブジェクトプログラムの性能劣化を招くお
それが大きい。
【0025】図5は第2最適化処理手段における処理の
流れを示す図である。図示の例では基本ブロックを超え
て最適化可能な3つの処理を行う例を示している。な
お、基本ブロックとは、制御が先頭の命令(中間テキス
ト)に与えられ、その後、途中で分岐したり停止したり
することがない、連続した命令(中間テキスト)列から
構成されるかたまりである。
【0026】図において、まず、ある種の最適化処理
(最適化処理A)を行う場合、ステップS11におい
て、最適化対象の範囲(ループ又はプログラム全体)の
データの有効範囲の解析を実施し、ハードウェアが持つ
実レジスタの数とデータの有効範囲内の仮想レジスタの
数とを比較する。ステップS12においては、データの
生存範囲の検査をし、基本ブロックを超えた広域最適化
を実施できるかどうかの判定が行われる。ここで、基本
ブロックを超えてはいけないものについては基本ブロッ
クだけで最適化が実施され、広域最適化が実施できる場
合は、広域最適化が実施される。ただし、先のデータの
有効範囲の解析の結果、広域最適化を実施するとオブジ
ェクトプログラムの性能劣化があり得る場合は、基本ブ
ロックの最適化のみに留めることにしている。次に、別
の種の最適化処理(最適化処理B)が同じようにしてス
テップS11及びS12を通じて、広域又は基本ブロッ
クの最適化処理が行われ、さらに、別の種の最適化処理
(最適化処理C)についても、ステップS11及びS1
2を通じて、広域又は基本ブロックの最適化処理が行わ
れる。
【0027】これらの最適化処理A〜Cの種類として
は、たとえばループ内の不変式をループ外へ移動する変
換、共通式の削除、複写伝播などがある。次に、ステッ
プS11及びS12にて行われる、実レジスタの数を意
識した最適化について説明する。
【0028】図6は第2最適化処理手段におけるビジー
数を考慮した最適化の説明図である。第2最適化処理手
段14で、データの有効範囲(ビジー範囲)を広げる最
適化については、常に、仮想レジスタと有効範囲の関係
を考慮に入れて最適化を実施する。その範囲は、最適化
対象範囲の出入口で仮想レジスタの数が何個存在してい
るかで決められる。
【0029】図において、P21、P22、P23は展
開処理手段13にて変換された特定のハードウェアの命
令と1対1に対応する一連の中間表現を示したもので、
P22がその最適化対象範囲である。この最適化対象範
囲において生きている仮想レジスタの数を求めるには、
まず、最適化対象範囲の入口を超えて使用されるデー
タ、すなわち入口ビジーのデータx,zの数を計算し、
次に、最適化対象範囲の出口を超えて使用されるデー
タ、すなわち出口ビジーのデータy,zの数を計算し、
最適化対象範囲の入口ビジーであり、かつ出口ビジーの
データの数、すなわち最適化対象範囲の入口でも出口で
も生きている仮想レジスタの個数を計算する。この計算
は入口ビジーと出口ビジーとの論理積をとることによっ
て求められ、図示の例では入口ビジーであり出口ビジー
でもあるデータはzと言うことになる。
【0030】図7は広域最適化の抑止手順を示す流れ図
である。図において、ステップS21〜S23は図6に
て求めた最適化対象範囲に存在する仮想レジスタの有効
数の計算に相当する。すなわち、ステップS21で最適
化対象範囲の入力ビジーを計算し、ステップS22で最
適化対象範囲の出口ビジーを計算し、ステップS23で
最適化対象範囲の入力ビジーかつ出口ビジーな仮想レジ
スタの数を計算する。さらに、ステップS24では入口
ビジー/出口ビジーであるデータの数が、実レジスタの
個数(具体的には、カラーリングな実レジスタの最大個
数)より多いかどうかを判定する。入口ビジー/出口ビ
ジーであるデータの数が実レジスタの個数より多い場合
は、ステップS25に進んで、広域な最適化の実施を
し、少ない場合は、ステップS26に進んで、広域最適
化を抑止し、基本ブロックを越えた最適化は行わない。
これにより、最適化が逆効果となるような、過剰な最適
化をすることが防止される。
【0031】ステップS24の処理で求めた、入口ビジ
ー/出口ビジーの数が実レジスタの個数を超えない場
合、実レジスタ数をR、ビジー数をBとすると、新たに
ビジーとなってもスピル処理が行われない最適化可能な
データ数Nは以下の式で求められる。
【0032】N=R−B 第2最適化処理手段14では、この式で求めた最適化個
数分だけビジー範囲を広げて、最適化を実施することが
できる。
【0033】図4に戻って、P16が第2最適化処理手
段14により最適化及び仮想レジスタ変換された中間表
現である。この中間表現P16によれば、同じメモリ領
域をアクセスするロード命令が1つ無くなっており、最
適化されていることが分かる。すなわち、2つのロード
命令があって、その間に手続き呼出しがなければ、先に
ロードしたbの値をそのまま使用できるので、後のロー
ド命令を消して、次の行の一時変数「tmp2」を「t
mp1」に置き換え、これによって一命令が減るので、
オブジェクトが向上したと言える。
【0034】次に、実レジスタ割り付け手段15におい
て、仮想レジスタをハードウェアが持つ実レジスタにP
17のように割り付けられ、命令スケジューリング手段
16を通じて、オブジェクトプログラムP18に変換さ
れる。
【0035】
【発明の効果】以上説明したように本発明では、ソース
プログラムを最適化処理して一度命令と1対1の中間言
語にばらし、新たに命令展開を行ってさらにもう一度最
適化処理してからオブジェクトプログラムを生成するよ
うに構成した。
【0036】このため、実レジスタの個数を意識して仮
想レジスタの個数を調整することによりスピルコードの
数を減らすことが可能になる。スピルコードの数が減る
ことにより、メモリアクセスの回数を削減でき、出力オ
ブジェクトの性能向上が図れる。
【0037】また、スピルコードの削減及び仮想レジス
タの退避域の削減により、出力オブジェクトの大きさ
(長さ)を削減できる。これにより、使用する領域資源
を小さくすることができる。
【0038】さらに、レジスタ割り付けは、仮想レジス
タを実レジスタに割り付けるだけでよく、複数のレジス
タ割り付け(最適化)対象データを扱う必要がない。こ
のため、コンパイラの論理を単純化でき、保守や改良が
簡単になる。
【図面の簡単な説明】
【図1】本発明のコンパイル方式の原理構成図である。
【図2】本発明の実施例を示す構成図である。
【図3】第1仮想レジスタ変換手段の処理の流れを示す
図である。
【図4】本発明のコンパイル方式によって生成される命
令列の例を示す図である。
【図5】第2最適化処理手段における処理の流れを示す
図である。
【図6】第2最適化処理手段におけるビジー数を考慮し
た最適化の説明図である。
【図7】広域最適化の抑止手順を示す流れ図である。
【図8】従来のコンパイル方式を示す構成図である。
【図9】従来のコンパイル方式によって生成される命令
列の例を示す図である。
【符号の説明】
11 フロントエンド手段 12 第1最適化処理手段 12a 第1最適化処理手段 12b 第1仮想レジスタ変換手段 13 命令展開手段 14 第2最適化処理手段 14a 第2仮想レジスタ変換手段 15 実レジスタ割り付け手段 16 命令スケジューリング手段

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 レジスタを高効率に割り付けできるコン
    パイル方式において、 ソースプログラムを解析してコンパイラの使用する中間
    表現に変換するフロントエンド手段(11)と、 前記フロントエンド手段にて変換された中間表現に対し
    て最適化を施して、最適化の対象となるデータを形式の
    共通な仮想レジスタに一括して変換する第1最適化処理
    手段(12)と、 最適化された前記中間表現をハードウェアの命令と1対
    1に対応した中間表現に変換する命令展開手段(13)
    と、 前記命令展開手段にて展開された中間表現に対して最適
    化するとともに、最適化の過程において実レジスタの数
    を考慮した最適化データの仮想レジスタへの変換を行う
    第2最適化処理手段(14)と、 命令と1対1に対応した中間表現に対してハードウェア
    が持つ実レジスタに割り付ける実レジスタ割り付け手段
    (15)と、 を備えていることを特徴とするコンパイル方式。
  2. 【請求項2】 前記第1最適化処理手段(12)は、中
    間表現の最適化の後に仮想レジスタへ置換すべき変数を
    選別する情報収集手段と、仮想レジスタ変換すべき変数
    と仮想レジスタとを1対1に割り付けする仮想レジスタ
    変換手段とを有することを特徴とする請求項1記載のコ
    ンパイル方式。
  3. 【請求項3】 前記第2最適化処理手段(14)は、基
    本ブロックを超えた広域最適化が可能か否かを判断する
    手段と、前記広域最適化が可能な場合に最適化対象範囲
    の仮想レジスタの数と実レジスタの数とを比較する手段
    と、仮想レジスタの数が実レジスタの数より多い場合に
    基本ブロックの最適化のみに留める広域最適化抑止手段
    とを有することを特徴とする請求項1記載のコンパイル
    方式。
  4. 【請求項4】 前記仮想レジスタの数は、最適化対象範
    囲の入口を超えて使用される入口ビジーのデータ数と最
    適化対象範囲の出口を超えて使用される出口ビジーのデ
    ータ数との論理積によって計算されることを特徴とする
    請求項3記載のコンパイル方式。
JP24922793A 1993-10-05 1993-10-05 コンパイル方式 Expired - Fee Related JP3276479B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24922793A JP3276479B2 (ja) 1993-10-05 1993-10-05 コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24922793A JP3276479B2 (ja) 1993-10-05 1993-10-05 コンパイル方式

Publications (2)

Publication Number Publication Date
JPH07105015A true JPH07105015A (ja) 1995-04-21
JP3276479B2 JP3276479B2 (ja) 2002-04-22

Family

ID=17189816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24922793A Expired - Fee Related JP3276479B2 (ja) 1993-10-05 1993-10-05 コンパイル方式

Country Status (1)

Country Link
JP (1) JP3276479B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284968A (ja) * 1999-03-31 2000-10-13 Toshiba Corp コンパイル方法及びコンパイラ装置
JP2002527815A (ja) * 1998-10-10 2002-08-27 ヴィクトリア・ユニバーシティ・オブ・マンチェスター プログラムコード変換方法
JP2006525572A (ja) * 2003-05-02 2006-11-09 トランジティブ リミテッド プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002527815A (ja) * 1998-10-10 2002-08-27 ヴィクトリア・ユニバーシティ・オブ・マンチェスター プログラムコード変換方法
US8006237B2 (en) 1998-10-10 2011-08-23 International Business Machines Corporation Program code conversion
US8037461B2 (en) 1998-10-10 2011-10-11 International Business Machines Corporation Program code conversion
JP2000284968A (ja) * 1999-03-31 2000-10-13 Toshiba Corp コンパイル方法及びコンパイラ装置
JP2006525572A (ja) * 2003-05-02 2006-11-09 トランジティブ リミテッド プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
JP2007249991A (ja) * 2003-05-02 2007-09-27 Transitive Ltd プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
JP4534234B2 (ja) * 2003-05-02 2010-09-01 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
US7921413B2 (en) 2003-05-02 2011-04-05 International Business Machines Corporation Architecture for generating intermediate representations for program code conversion
US8104027B2 (en) 2003-05-02 2012-01-24 International Business Machines Corporation Architecture for generating intermediate representations for program code conversion

Also Published As

Publication number Publication date
JP3276479B2 (ja) 2002-04-22

Similar Documents

Publication Publication Date Title
US6113650A (en) Compiler for optimization in generating instruction sequence and compiling method
Abraham et al. Predictability of load/store instruction latencies
JP3311462B2 (ja) コンパイル処理装置
US6675374B2 (en) Insertion of prefetch instructions into computer program code
US6139199A (en) Fast just-in-time (JIT) scheduler
US8201159B2 (en) Method and apparatus for generating data parallel select operations in a pervasively data parallel system
US6760906B1 (en) Method and system for processing program for parallel processing purposes, storage medium having stored thereon program getting program processing executed for parallel processing purposes, and storage medium having stored thereon instruction set to be executed in parallel
US20090322769A1 (en) Bulk-synchronous graphics processing unit programming
US20080034356A1 (en) Pervasively Data Parallel Information Handling System and Methodology for Generating Data Parallel Select Operations
JP6331865B2 (ja) プログラム最適化方法,プログラム最適化プログラム及びプログラム最適化装置
JP2002508102A (ja) 高水準プログラミング言語をコンパイルするための方法
JP2001166949A (ja) シンボリック実行を用いてソースコードをコンパイルするための方法及び装置
US20040031026A1 (en) Run-time parallelization of loops in computer programs with static irregular memory access patterns
CN103559069B (zh) 一种基于代数系统的跨文件过程间优化方法
JP2001166946A (ja) 階層の平坦化によりソースコードをコンパイルする方法及び装置
JP3311381B2 (ja) コンパイラにおける命令スケジューリング処理方法
JP3276479B2 (ja) コンパイル方式
WO2022267638A1 (en) Method and apparatus for functional unit balancing at program compile time
US20230116546A1 (en) Method for compilation, electronic device and storage medium
JP6160232B2 (ja) コンパイルプログラムおよびコンパイル方法
Dou et al. LEAP: A data driven loop engine on array processor
CN102360306A (zh) 高级语言代码中循环数据流图提取优化信息处理方法
Ko et al. Laminarir: Compile-time queues for structured streams
KR101293700B1 (ko) 코어스 그레인드 재구성 구조를 위한 코드 생성 장치 및 그 코드 생성 방법
JP2008523523A (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: 20020122

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

Free format text: PAYMENT UNTIL: 20080208

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090208

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees