JPH03132828A - 共通の部分式を除去する方法 - Google Patents

共通の部分式を除去する方法

Info

Publication number
JPH03132828A
JPH03132828A JP26325090A JP26325090A JPH03132828A JP H03132828 A JPH03132828 A JP H03132828A JP 26325090 A JP26325090 A JP 26325090A JP 26325090 A JP26325090 A JP 26325090A JP H03132828 A JPH03132828 A JP H03132828A
Authority
JP
Japan
Prior art keywords
common
loop
subexpressions
calculations
program
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
Application number
JP26325090A
Other languages
English (en)
Inventor
Martin Edward Hopkins
マーチン・エドワード・ホプキンズ
Peter Willy Markstein
ピーター・ウイリー・マークステイン
Victoria Irene Markstein
ビクトリア・イレーン・マークステイン
John Kevin Patrick O'brien
ジヨン・ケビン・パトリツク・オーブライエン
Arvin Douglas Shepherd
アービン・ダクラス・シエパード
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH03132828A publication Critical patent/JPH03132828A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明はコンピュータ・プログラムのコンパイルに係り
、特に、コンピュータ・プログラムの最適化に関するも
のである。とりわけプログラム・ループの連続的な繰返
しにおける、共通部分式の削除の方法が詳細に述べられ
ている。
B、従来の技術 ]ンピュータ・プログラムが高級言語(例えばフォート
ラン、パスカル、コボル)で書かれた後、コンパイラ・
プログラムを用いて中間語命令シーケンスに変更される
。この中間語命令は、コンピュータで実行されるように
、順次機械語命令のシーケンス(目的言語)に変換され
る。高級言語で書かれたプログラムを中間コードで表現
するのに多くの方法がある。特に、機械語レベルに還元
されたある種の高級言語プログラムの中間語解釈は、他
の中間語解釈により生成された目的言語よりも短い時間
で実行される目的言語を生成する。そのため、コンパイ
ラ・システムはコードの最適化と呼ばれる処理手順を行
なうように構成されていることが多い。コードの最適化
は、プログラムの実行時間を減らすように中間コードを
改良する技術である。
C0発明が解決しようとする課題 ]−ドの最適化は多くの方法を経て達成される。
反復する計算は削除される。常に変らない変数は定数と
置換えてもよい。ループを展開することによって、ルー
プの複数回の繰返しに含まれていた連続した計算が、1
回の繰返しにおいて連続的に表われるようにすることが
できる。ループの繰返しにかかわらず同じ数値を求める
ループ内の数式はループの外に移してもよい。
コードの最適化の中でも特別の領域例えばプログラムの
反復部分が、プログラム・ループの走行時間を減らすの
に重要である。コンピュータ・プログラムはループ内の
命令を実行するために多くの時間を費やすので、ループ
の実行時間を減らすことのできるコード最適化の技法は
コンピュータ・プログラム全体の実行時間を減らすのに
特に有益である。
コードの最適化にとって重要な他の領域は、コンピュー
タ・プログラムから共通の部分式を除去することである
。共通の部分式はあるプログラム中で一回よりも多く発
生するコンピュータ動作であって、同じ計算結果の得ら
れるものである。コンピュータ・プログラムから共通の
部分式を除共することは最適化のために有効な技術であ
る。
03課題を解決するための手段 本発明は、ループの連続した繰返しに共通の部分式を含
むコンピュータプログラムの最適化演算に関する。最適
化により、コンピュータプログラムはより短い時間で実
行される。
本発明は以下の一連のステップにより動作する。
最初のステップで、ループの1回の繰返しにおいて使用
されるシーケンス値が識別される。このシーケンスは、
そのシーケンスのメンバーの第1の部分集合の値が、ル
ープの次の繰返しにおいてシ−ケンスのメンバーの第2
の、非独占的な部分集合の値として用いられる。このシ
ーケンスが識別された時、中間プログラム・コードが修
正され、ループに入る前に、第2のサブセットのシーケ
ンス・メンバーの初期値が計算される。その後、各繰返
しにおいて、シーケンスの最初のサブセットの値だけが
計算される。第2のサブセットのメンバーに用いられる
値は、ループの先の繰返しの間に計算された値から得ら
れる。
本発明の他の特徴によれば、ループは展開され、それに
よって最も長いシーケンスの各メンバーのための、ルー
プの複写が1個存在する。次に、繰返しを通じて共通の
部分式の値を保持するために用いられる一時的な記憶位
置が、ループの複写の間、周期的に置換される。
E、実施例 まず、本発明の説明のために用いられる用語の定義を述
べる。
「共通の部分式、(COMMON  5UB−EXPR
ESS I ON) コンピュータ・プログラム中で何回も実行され同じ結果
を生ずる演算。例えば、式A : =B+C+DとE:
=B+C+Fにおいて、B+C(7)演算が共通の部分
式と呼ばれる。
「帰納変数J  (INDUCTION  VARIA
BLE) ループLの中だけで指定された変数■は、次のいずれか
の形式をとる。r:=r+c又は■:=I−に こでCはループL内の定数。
例えば、表1を参照するに、変数Iはループ内で1から
10まで計数するのに用いられている。
よって、変数Iは帰納変数と指称される。
「コードの移動J  (CODE  MOTI ON)
プログラムのループ内の命令の数を減らすことによりコ
ンピュータ・プログラムの走行時間を改善する方法。こ
れは、例えば、ループの各繰返しが同じ数値を求めるも
のであるとき、ループ内のコードを前にそのループで実
行された等価なコードに置変えるようなことを行なう。
ループ外のコードの数が増えても、全体の走行時間は減
少するかもしれない。
「アドレス指定順序J  (ADDRESSINGSE
QUENCE) 次のような特質を有する単一のアレーにアクセスするの
に用いられる記憶位置の値のセットa)各記憶位置のア
ドレスがループの帰納変数に依存する。
b)各記憶位置のアドレスが帰納変数の増分値だけその
前のもののアドレスと異なる。
[展開J  (UNROLL ING)ループを書き直
すことにより、ループでなされる連続した計算が順次な
されるようにする方法。
例えば、 Do  I=ITO100By  I A (1) =A (1) +B (I)END 。
を2で展開すると次のようになる。
Do  I=ITO100By  2 A (1) =A (1) 十B (1) ;A (1
+1)=A (1+1) 十B (1+1);END ループの展開は、各繰返し毎にテストをして繰返し回数
を一定にするのを回避できる。よって、ループの展開は
実行される命令の数を減らすことができる。前の例では
、ループ制御のための増分とテストの数が半減される。
ループの展開では多くの命令が並列処理の対象になる。
前の例で、展開された形式における2つのステートメン
トは互に独立しているので同時に実行することができる
「再帰的な式J  (RECURRENCE  EXP
RESS I ON) ループ内で見出される式であって、その値が先の繰返し
で計算された値に基いた一つの繰返しにより計算される
プログラムに再帰的な式を含むことは、ループの連続し
た繰返しにおける式の値を省(ために望ましいことであ
る。
表2は、再帰的な式を含むプログラムのためのソース・
コードを示している。ループの特定の繰返しにおけるC
l3 (J)の値は、そのループの連続した繰返しにお
いてCl3 (J−1)として用いられている。そのた
め、コンパイラ−にこの事実を認識させかつ連続したル
ープ繰返しの間−時レシスターにCl3 (J)の値を
保持することが望ましい。
表2 再帰的な式を含むソース・コードの別表3と表4
は、表2に示されたプログラムの中間コードの解釈を示
している。表4に示された中間コードにおいて、再帰的
な式が認識され、そして、連続した繰返しのためにこの
再帰により生成された値を一時的に保管すべ(準備がな
される。
表3に示された解釈では、再帰は認識されていない。表
3では、Cl3 (J−1)がステップ110でTem
p 2にロードされる。このロード命令は、ループ(L
OOP)の繰返し毎に実行される。表4でもまた、Cl
3 (J−1)の値がステップ110でTemp 2に
ロードされる。しかし、表4では、ループ(LOOP)
がステップ120で開始する。
これは、LOOPの繰返し毎にCl3 (J−1)をT
emp 2にロードすることを不要にする。
Cl3 (J)はステップ150でTemp 2に置か
れるので、LOOPの連続した繰返しにおいて、Tem
p 2はCl3 (J−1)を含むとみなされる。
表4のLOOPは8個の命令からなり、他方表3のLO
OPは9個の命令からなるということを認識することは
重要である。これによって、再帰的な式によりループ繰
返し毎に1個の命令、あるいはプログラム全体を実行す
ることで750個の命令を節減できることがわかる。
真の再帰式に加えて、ループの一回の繰返しにおいて一
連の値がしばしば用いられ、シーケンスの他のメンバー
の値として次の繰返しにおいてシーケンスのいくつかの
メンバーが再び用いられる。
これらの値は、連続したループ繰返しの間共通の部分式
のセットを形成するものと考えてよい。そのようなシー
ケンスは繰返しを通じた共通の部分式削除(Cross
 Interation Common 5ub−ex
pression Elimination)により最
適化される。
この技術はまた、予測可能な共通化とも呼ばれる。例え
ば、一連の値の全メンバーが、最初の値を除いて次のル
ープの繰返しにおいて夫々異なるシーケンスのメンバー
として用いられるようなプログラム・ループを考えてみ
る。ループに入る前に、最初のメンバーを除いた全ての
シーケンスが計算される。その後、各繰返しはシーケン
スの最初のメンバーのみを計算しなければならない。ル
ープの最後に、全メンバーは、次の繰返しの間に見出さ
れるようにレジスターに移される。ループが展開され、
それにより最も長いシーケンスの各メンバーのためにル
ープ・コードの複写が存在する。
値のシーケンスを保持するのに用いられるレジスタのセ
ットを周期的に置換した後、メンバーを次の位置に移す
命令が削除される。
表5に、いくつかの再帰的な式を含むプログラムのソー
ス・コードが示されている。
このプログラムは、シーケンスX (J+l、K) 、
X (J、K) 、X (J−1、K)を含んでいる(
ここでKはi−1、i及びi+1の値をとる)。さらに
、和(1)はJの和とJ−1の和に対応するシーケンス
を形成する。
表6 中間コードの表示 表・6は、表5に示されたプログラムの中間コードの表
示を示している。この中間コードの表示は本発明の効果
を表わしている。
表6において、オリジナルのループは3つのコピーを形
成するように複写されている。メモリ位置のアドレスさ
れた第1セツト、第2のセットのデータは共に加えられ
、最初のループに入る前にFP7と、FP5にロードさ
れる。これによって、プログラムはオリジナルの繰返し
単位において3つのロード操作(loads )と4つ
の加算操作(adds)だけとなり、通常のプログラム
における9つのロード動作と8つの加算操作に比べて少
な(なる。
繰返しの間に実行される加算の結果は、次の繰返しにお
いて必要とされる全てのデータを繰り越すので、ロード
された量は保持されない。
浮動小数点レジスターFP5、FP6及びFP7は周期
的に入れ替えられ、内側ループの特別な繰返しによる計
算結果X (J+1、l−1)十X(J+1、I)+X
 (J+1、■+1)を含んでいる。
この最適化を達成するのに用いられるアルゴリズムを記
述するのに、幾つかの用語を定義するのが有効である。
「(X)に依存するJ  (depends−on (
X)L・・・・・1つの入力としてXを持つ式の推移的
閉包(transitime closure)。
[無効J (kill(v))・・・・・・変数■に関
連する記憶値に依存する計算のセットが存在している場
合に、このセットのメンバーが■に関連して記憶位置を
変更するための命令により、無効にされると表現される
。無効の効果は、従来技術においては、共通部分式とし
ての変数の使用の終了である。
「否無効J (dont−kill (x、  1))
−−(X)に依存するシーケンスのメンバーのサブセッ
トXが、特別なループ内の特別な無効命令、iによって
は影響されないことが知られている。
「否無効J (dont−kill (r))命令は次
のとおり。
dont kill(r) = qss、q≠r ここで、Sはシーケンス、qsは否無効シーケンス・メ
ンバー rは無効命令により影響されるシーケンス・メ
ンバーである。
[(X)に続けてもよいJ (may−follow(
X))−・・・どれかの計算(X)のための計算のセッ
トであり、コンピュータ・プログラム内のシーケンスで
シーケンスのXに依存するメンバーが各々後続のメンバ
ーにより置変えられる。
もし、Xがシーケンス・メンバーやシーケンスメンバー
により構成される量や不変量よりも、ループの変化量に
依存するならば、「(X)に続く」は空文字にするよう
定義される。
「利用可能な」(available)・・・・・・プ
ログラムの特別の点において、前に完了し、削除されて
いない操作のセット。
「リインカーネイトJ (reincarnate)・
・・・・・ある繰返しにおいて使用され、続く繰返しに
おいて再利用可能な計算のセット。
reincarnate= 本発明の動作は第1図に要約されている。
ステップ100で、ソース・プログラムは本発明に適合
する中間コード表現を生成するようにコンパイルされる
。この表現は、コンピュータの主記憶装置のアレイ要素
にアクセスするのに用いられるアドレス計算の識別を可
能にする。(例えば、ロード命令はベースとインデック
スレジスターを用いる)。この表現は、それらにアドレ
ス計算が依存するループの帰納変数の決定をも可能にす
る。
ステップ200で、各帰納変数に対する記憶参照のパタ
ーンが分析される。これは、プログラムの内側ループの
全てのメモリ動作(例えばロードやストア)を調べるこ
とによってなされる。
特に、同じ帰納変数に基いて、かつある特定の増分だけ
異なる2つのメモリ・アクセスに対して調査がなされる
。これらのメモリ・アクセスは、長さ2のアドレス・シ
ーケンスを形成すると言える。全ての長さ2のアドレス
・シーケンスが探し出され、もし可能ならば、より長い
シーケンスを形成するようにつなぎ合わされる。
ステップ300で、修正されたコードの移動と共通の部
分式の削除がなされる。参考技術が、工イホ等(Aho
 et al、)著、「コンパイラ・デザインの原理」
(Principles of Compiler D
esign)、アデイソン・ウニスレー(八ddiso
n Wesley)、1979年刊の454〜466真
に示されている。
コードの移動の最適化のために、一般に知られた技術を
用いることができる。また、よく知られた共通の部分式
の削除の方法を用いることもできる。
本発明の最適な実施のために、コックとシュバルツのア
ルゴリズム(Cocke and Schwartza
lgori thm)を用いている。
コック(Cocke、J、 )著「包括的な共通の部分
式0式% ニア 1970年刊の20頁〜24頁を参照のこと。
共通の部分式の削除は、典形的には、単一のループから
共通の部分式の1つの数値を求めることを除いて全てを
削除するものである。削除された数値は局地的に記憶さ
れた値を参照することによって置変えられる。この値は
、保持された1つの共通の部分式の数値を示す。そのよ
うな値は、例えば、−時的なレジスターにストアするこ
とができる。
本発明の目的のために、共通の部分式の削除は、連続し
たループの繰返しの間に共通の部分式を最適化するよう
に修正される。これは、現在のループの繰返しにおいて
アクセスされた値を、−時的に後のループ繰返しのため
に保持することを可能にする。これによって、メモリ・
アクセス及び計算ステップの繰返しが回避される。
本発明の実施例では、ステップ200に示すように、デ
ータ値が再帰的な式のシーケンスによりアドレスされた
アレーにストアされている。
通常の共通の部分式の削除では、各発生セグメントが取
出されるアレー値のインデックスが生じる読取り動作の
数を減らすために、各ループの繰返しの間にこのアレー
の量は一時的レジスタに割り当てられる。
これらのアルゴリズムによって、ループの繰返しの間共
通するアレーからの量は、通常、各繰返しの終りに無効
にされ、その次の繰返しで必要なときは計算されなけれ
ばならない。実施例によれば、無効にする動作は行なわ
れない。
第2図は第1図のステップ300の詳細を示すものであ
る。第2図において、ステップ310で先に与えられた
定義に従って、各メモリ書込み動作に対して「否無効」
セットの決定がなされる。
各再帰的な式は「否無効jセットのメンバーである。そ
のため、これらの表現がされたレジスターの記憶は無効
にされない。次に、ステップ320で、各シーケンスに
ついてセットの「リインカーネイト」 (生れ変り)が
計算される。このセットは、あるループの繰返しにおい
て否無効の値を次のループの繰返しにおける対応する値
と関係づける。
ステップ330で、プログラム内の各シーケンスに関連
する帰納変数の増分の位置が突きとめられる。
ステップ340で、修正された共通化及びコードの移動
動作が実行される。これらの動作は、「リインカーネイ
ト」セットの全メンバーがステップ330で確立された
プログラム内の位置で計算されるかのようにふるまう。
これらの値を異なるレジスターに移す指令は付加されて
いないので、ループ・コードを展開し、再帰的な式の値
を保持するのに用いられているレジスタを置換するのが
望ましい。(第1図、ステップ400)。
第1図のステップ400でループは展開され、オリジナ
ル・ボディーを複写した数値は見出された再帰的な式の
最も長いメンバーの数値と等しい。
ループの展開において、ループを展開するにはどんな方
法を用いてもよい。実施例の方法としては、前記エイホ
等の著「コンパイラ・デザインの原理」の471〜47
3頁を参照する。
ループが展開されると、各シーケンスの計算の名称(例
えば個々の計算に密接に関係するレジスタ)が置換され
る。これは、計算結果(例えば特別のアレー・エレメン
トの値)を1回の繰返しにおいて1つのレジスタ内に置
き、次の繰返しにおいて別の計算(例えば、次の繰返し
の間、コードの別の部分に用いる、同じアレー・エレメ
ントの値)のために用いることができる。このタイプの
置換を用いることにより、1つのループ繰返しから次へ
再帰的な式の値を複写するステップを削除できる。
もし、ループが複数のループに展開され、その数がオリ
ジナルの繰返し回数の積分値でないとき、残りのループ
が残りの繰返しを達成するように作り出される。この残
りのループに、後に続くループの繰返しのために、「リ
インカーネイト」セットを別の一時的なレジスタに複写
するように、指令が付加される。
F、効果 本発明によればコンピュータ・プログラムのループの繰
返しに共通の部分式を含むとき、この共通の部分式を削
除するようにコンピュータ・プログラムが修正されるた
め、ループ繰返し命令を節減し、もってループの走行時
間を減少させることができる。
【図面の簡単な説明】
第1図は本発明の実施例の動作を説明するためのフロー
チャートであり、第2図は第1図のステップ300の詳
細を示すフローチャートである。 100・・・・・・中間コードの生成 200・・・・・・連続したループ繰返し内の共通の部
分式の識別 300・・・・・・修正された共通の部分式の削除とコ
ード移動の実行 400・・・・・・ループの展開

Claims (8)

    【特許請求の範囲】
  1. (1)、コンピュータ・プログラムのループの繰返しに
    おける共通の部分式を除去するための方法であつて、そ
    の共通の部分式は帰納変数に依存するものにおいて、 a)上記共通の部分式を識別するステップと、 b)上記ループの繰返しにおける共通の部分式の数値を
    保持するよう、上記コンピュータ・プログラムを修正す
    るステップと、 c)上記ループの繰返しにおいて、共通の部分式に上記
    保持された数値を用いるように上記プログラムを修正す
    るステップ、 とを含むことを特徴とする共通の部分式を除去する方法
  2. (2)、請求項(1)において、 上記ステップb)は、上記共通の部分式に対して、否無
    効セットを定義するステップを含み、該否無効セットは
    、共通の帰納変数を持つ複数のアドレス計算を含み、 該セットにおいて上記アドレス計算は無効命令によつて
    影響されない、 ことを特徴とする共通の部分式を除去する方法。
  3. (3)、請求項(1)において、 上記ステップc)は上記帰納変数が増分された後のある
    点において上記共通の部分式のために上記セットをリイ
    ンカーネイトすることを決定するステップを含む、 ことを特徴とする共通の部分を除去する方法。
  4. (4)、請求項(3)において、 共通の部分式のセットが識別され、該セット内の共通の
    部分式が共通の帰納変数に依存し、1つのアレーの別々
    の記憶位置に夫々対応し、該位置は上記帰納変数によつ
    て定義された増分毎に分離されており、さらに、 d)上記共通の部分式のメンバーの数に等しい数のルー
    プの複写を生成するために上記ループを展開するステッ
    プ、 を含むことを特徴とする共通の部分式を除去する方法。
  5. (5)、請求項(4)において、上記ステップd)は、
    上記ループが展開されたとして計算を入れ換えるステッ
    プを含むことを特徴とする共通の部分式を除去する方法
  6. (6)、請求項(1)において、上記ステップa)に先
    行して、上記プログラムをステップa)の識別動作を容
    易にする書式に変換するステップを含むことを特徴とす
    る共通の部分式を除去する方法。
  7. (7)、ループの連続した繰返しから冗長な計算を除去
    する方法であつて、 a)冗長な計算を識別するステップと、 b)上記計算を削除するステップと、 c)上記計算を実行しその結果を次の繰返しでアクセス
    される位置に保持するステップ、を含むことを特徴とす
    る、冗長な計算を除去する方法。
  8. (8)、請求項(7)において、 上記ステップa)に先行して、コードの移動を行なうス
    テップを含むことを特徴とする、冗長な計算を除去する
    方法。
JP26325090A 1989-10-16 1990-10-02 共通の部分式を除去する方法 Pending JPH03132828A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US42186689A 1989-10-16 1989-10-16
US421866 1989-10-16

Publications (1)

Publication Number Publication Date
JPH03132828A true JPH03132828A (ja) 1991-06-06

Family

ID=23672379

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26325090A Pending JPH03132828A (ja) 1989-10-16 1990-10-02 共通の部分式を除去する方法

Country Status (2)

Country Link
EP (1) EP0423597A3 (ja)
JP (1) JPH03132828A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2074769C (en) * 1991-08-09 2001-03-20 International Business Machines Corporation Formula processor
WO2000022522A1 (en) * 1998-10-13 2000-04-20 Motorola Inc. Method for detecting equivalent instruction sequences
US6519768B1 (en) 1999-03-04 2003-02-11 International Computers Limited Instruction translation method
GB2347527A (en) * 1999-03-04 2000-09-06 Int Computers Ltd Instruction translation method using templates
GB2347526A (en) * 1999-03-04 2000-09-06 Int Computers Ltd Instruction translation method using templates

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62219129A (ja) * 1986-03-20 1987-09-26 Fujitsu Ltd コンパイラにおける和計算の部分展開処理方式
JPH01159734A (ja) * 1987-12-16 1989-06-22 Fujitsu Ltd 回帰演算におけるデータ形式変換処理方式

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62219129A (ja) * 1986-03-20 1987-09-26 Fujitsu Ltd コンパイラにおける和計算の部分展開処理方式
JPH01159734A (ja) * 1987-12-16 1989-06-22 Fujitsu Ltd 回帰演算におけるデータ形式変換処理方式

Also Published As

Publication number Publication date
EP0423597A3 (en) 1992-11-04
EP0423597A2 (en) 1991-04-24

Similar Documents

Publication Publication Date Title
JP3417984B2 (ja) キャッシュ競合削減コンパイル方法
EP0273130B1 (en) Reassociation process for code optimization
Bik et al. Compilation techniques for sparse matrix computations
US5999737A (en) Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis
EP0118829B1 (en) Compilation of perform statements
JPS61183744A (ja) コード生成工程での命令形式選択方法
US20050044538A1 (en) Interprocedural computing code optimization method and system
JPH06103463B2 (ja) コード生成方法
GB2186402A (en) Converting a high level language source program into a maximally vectorised object program
JPH0552971B2 (ja)
US6148439A (en) Nested loop data prefetching using inner loop splitting and next outer loop referencing
JPH0814817B2 (ja) 自動ベクトル化方法
US20040226005A1 (en) Method and system for register allocation
US8806138B1 (en) Dynamic dependencies and parameterizations for execution and caching
KR950001531A (ko) 문자열 복사 방법
JPH03132828A (ja) 共通の部分式を除去する方法
EP1164477A2 (en) A loop optimization method and a compiler
JP6730587B2 (ja) キャッシュミス推定プログラム、キャッシュミス推定方法及び情報処理装置
JP3683281B2 (ja) メモリアクセスの高速化処理装置および方法
JPWO1998018084A1 (ja) メモリアクセスの高速化処理装置および方法
US10866790B2 (en) Transforming loops in program code based on a capacity of a cache
JP3225940B2 (ja) プログラム最適化方法および装置
JP6442967B2 (ja) 情報処理プログラム、情報処理装置、情報処理方法
JP2001325111A (ja) 投機機構向けコンパイル方法
van der Spek et al. Automatic restructuring of linked data structures