JP2841403B2 - ループ最適化処理方法 - Google Patents

ループ最適化処理方法

Info

Publication number
JP2841403B2
JP2841403B2 JP1001669A JP166989A JP2841403B2 JP 2841403 B2 JP2841403 B2 JP 2841403B2 JP 1001669 A JP1001669 A JP 1001669A JP 166989 A JP166989 A JP 166989A JP 2841403 B2 JP2841403 B2 JP 2841403B2
Authority
JP
Japan
Prior art keywords
loop
program
value
processing
determined
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
JP1001669A
Other languages
English (en)
Other versions
JPH02181830A (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.)
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 JP1001669A priority Critical patent/JP2841403B2/ja
Publication of JPH02181830A publication Critical patent/JPH02181830A/ja
Application granted granted Critical
Publication of JP2841403B2 publication Critical patent/JP2841403B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔概要〕 計算機のコンパイラにおける、原始プログラムのルー
プ最適化処理に関し、 ループを展開して、繰り返し実行回数を減少する最適
化の適用範囲を拡張するループ最適化処理方法を目的と
し、 計算機の原始プログラムから目的プログラムを生成す
る場合に、所定条件の該原始プログラムのループを最適
化する処理において、該ループの繰り返し実行回数をm
の値で除した剰余が0又は1になることをmの要件とし
て、2より大きな値から1づつ減少するmのうち、該要
件を最初に具備するmの値を決定し、該決定したmの値
により、該ループの本体プログラムを複写してm回順次
実行するように接続したプログラムを所要回数実行する
プログラムを主要部とするプログラムを生成し、該プロ
グラムによって元の該ループを置き換えるように構成す
る。
〔産業上の利用分野〕
本発明は、計算機の原始プログラムから目的プログラ
ムを生成するコンパイラにおける、原始プログラムのル
ープの最適化処理のためのループ最適化処理方法に関す
る。
〔従来の技術と発明が解決しようとする課題〕
例えば公知のFORTRANプログラミング言語で記述され
た原始プログラムで、繰り返し実行するプログラムを指
定するDO文に始まるいわゆるDOループはよく知られてい
る。
DOループは例えば、第2図(a)に示すように記述さ
れて、DO文と、DO文で指定されたラベル10の文とで囲ま
れる本体プログラムを繰り返し実行し、繰り返し実行回
数は、DO文に指定されるように、制御変数Iの値を下限
値(図の例は1)から増分値1づつ増加して、Iが上限
値(例は3)を越えるまでの回数とすることを指定す
る。
なお、制御変数の下限値、上限値等は変数で指定され
てもよく、その場合コンパイラの処理時には繰り返し実
行回数を確定できない。又、増分値は前記例では指定を
省略することにより、増分値が1とみなされるが、1以
外の値を指定することもできる。
このような原始プログラムから目的プログラムを生成
するコンパイラの処理において、前記のようなDOループ
について生成する目的プログラムの実行効率を改善する
ための、いわゆる最適化処理の1つとして、DOループの
本体プログラムを複写して、例えば第2図(a)のルー
プから(b)に示すように、複数の本体プログラムを直
列に実行するように接続した長いプログラムに展開する
ことにより、ループの繰り返し制御のためのオーバヘッ
ドを除く方法が採られることがある。
このループの展開による最適化は、コンパイラ処理時
に繰り返し実行回数が確定しているループについて、実
行効率の改善度やスペース効率の悪化を勘案して、通常
はDOループ本体プログラムの文数が一定の値例えば10文
以下程度の比較的短いプログラムに適用され、又実行回
数が例えば3回以下の場合に制限して、例えば第3図の
処理の流れに示すように処理する。
即ちコンパイラはループの展開による最適化処理で各
ループについて、第3図の処理ステップ1で実行回数が
確定できるか識別し、確定できない場合このループは処
理対象外として、確定できる場合は次の処理ステップ2
で本体プログラムの文数が所定数n(例えば10)以下か
判別し、nを越えていれば処理対象外とする。
以上のチェックで処理対象となった場合には、処理ス
テップ3で識別して繰り返し実行回数が2回であれば、
処理ステップ4で本体プログラムを2回複写して接続し
た構成のプログラムを生成し、元のループを置き換え
る。なお、接続の操作において必要な場合には、所要の
変数に値を設定する文の挿入、又は配列データの添字の
値を進めるような文の変換等が行われる。
繰り返し実行回数が3回であれば、処理ステップ3か
ら処理ステップ5を経て処理ステップ6に進み、本体プ
ログラムを3回複写した構成のプログラムを生成し、元
のループを置き換え、それ以外の繰り返し実行回数の場
合は元のまゝとする。なお、元のループの繰り返し実行
回数が0又は1回の場合は、他の最適化処理で予めルー
プのないプログラムに変換されるので、本処理の対象と
ならない。
以上の処理によれば、所定の条件を満足するループに
ついて、それをループの無いプログラムに展開するのみ
であるので、この最適化処理を適用できるループは非常
に限定されるが、ループが残っても繰り返し実行回数を
減少できれば、繰り返しの制御のためオーバヘッドを減
少することが可能であって、且つ最適化の適用範囲を拡
張することができる。
本発明は、以上を考慮して、ループの本体を長く展開
して、繰り返し実行回数を減少する最適化の適用範囲を
拡張するループ最適化処理方法を目的とする。
〔課題を解決するための手段〕
第1図は、本発明の構成を示す処理の流れ図である。
図はコンパイラにおける、ループの展開による最適化
処理の流れを示し、10〜15は処理ステップである。
〔作用〕
計算機の原始プログラムから目的プログラムを生成す
る場合に、所定条件の原始プログラムのループを最適化
するコンパイラの処理において、各ループについて処理
ステップ10、11で所定条件を判定すると、条件を満足す
るループについて以下の展開処理を行う。
即ち、処理ステップ12〜14により、当ループの繰り返
し実行回数をmの値で除した剰余が0又は1である最初
のmを、予め設定されている2より大きな値から1づつ
減少して決定し、処理ステップ15で決定したmの値によ
り、元のループの本体プログラムを複写してm回順次実
行するように接続したプログラムを所要回数実行するプ
ログラムを主要部とするプログラムを生成し、生成した
プログラムによって元のループを置き換える。
以上の処理方法により、所定条件を満たすループにつ
いては、すべて展開による最適化を適用できるようにな
る。
〔実施例〕
コンパイラはループの最適化におけるループの展開処
理を、予め設定されている値nとmを使用して処理する
ものとし、原始プログラムの先頭から走査して各DOルー
プについて第1図の処理の流れにより実行する。
即ち、1つのDOループを取り出すと、先ず処理ステッ
プ10で繰り返し実行回数が未確定か、即ちループの制御
変数の上限値、下限値及び増分値の少なくとも1つが、
実行時まで値の確定しない変数で指定されているか識別
する。
その結果、繰り返し実行回数がコンパイラの処理時に
確定しないループであれば、そのループについては処理
を終わり、確定するループであれば処理ステップ11でそ
のループの本体プログラムの文数がn(例えば10)を越
えているか判別し、越えている場合にはそのループの処
理を終わる。
本体プログラムがn文以下の場合には処理ステップ12
に進み、ループの繰り返し実行回数をmで除して、商と
剰余を保存する。mの初期値はDOループの繰り返し実行
回数やコンピュータのメモリ資源等を基にして実験的に
求められるが、後述のようにして残存するループによ
り、改善効果が繰り返し回数倍されることを考慮して、
例えば9程度の値とする。コンパイラの共通域にこのm
の初期値を設定する。
処理ステップ13でこの剰余が2より小さいか、即ち剰
余が0又は1か識別し、もしこの要件を満足しなけれ
ば、処理ステップ14でmを1減じ、要すれば保持してい
る商と剰余をクリアした後、処理ステップ12に戻る。
このようにして、処理ステップ14でmを1づつ減少し
ながら、処理ステップ12、13の処理を繰り返し、2より
小さい剰余を得ると処理ステップ15に分岐する。なお以
上から明らかなように、mが2になれば必ず処理ステッ
プ13の要件を満たすので、処理ステップ15に進むときの
mの値は必ず2以上である。
処理ステップ15では、そのときのmの値を使って、ル
ープの本体プログラムをm組複写して接続することによ
り展開したプログラムを主体として、処理ステップ12で
求めた商が2以上であればそれを繰り返し実行回数とし
て、展開プログラムを本体プログラムとするDOループ
を、商が1であれば展開プログラムを1回通るループの
無いプログラムをプログラムの主要部として生成する。
なお元のループの繰り返し実行回数が0又は1回である
場合については、前記従来の場合と同様に予めループの
ないプログラムに変換されているので、商が0になるこ
とは無いものとする。
以上で生成されたプログラムの主要部に、剰余が1の
場合には、元の本体プログラムの複写を更に1組接続
し、以上により生成されたプログラムによって元のルー
プを置き換えて処理を終わる。
〔発明の効果〕
以上の説明から明らかなように本発明によれば、計算
機のコンパイラにおける、原始プログラムのループの最
適化処理において、ループの展開による最適化の適用範
囲が拡張されるので、目的プログラムの実行効率を改善
するという著しい工業的効果がある。
【図面の簡単な説明】
第1図は本発明の構成を示す処理の流れ図、 第2図はループの展開の説明図、 第3図は従来の処理の流れ図 である。 図において、 1〜6、10〜15は処理ステップ を示す。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】計算機の原始プログラムから目的プログラ
    ムを生成する場合に、該原始プログラムのループを最適
    化する処理において、 該ループの繰り返し実行回数が確定しているものに対し
    て、該ループ内のプログラムの複写回数mの最大値を初
    期値として当該複写回数mを1づつ減じながら該ループ
    の繰り返し実行回数を複写回数mの値で除した剰余が0
    又は1になる複写回数mの値を決定し、 該決定した複写回数mの値により、該ループの本体プロ
    グラムをm回複写して順次実行するように接続したプロ
    グラムを、ループの繰り返し実行回数をmの値で除した
    商の回数実行するプログラムを生成し、且つ前記剰余が
    1の場合のみ該ループの本体プログラムを1回だけ複写
    して前記生成されたプログラムに接続したプログラムを
    生成し、該プログラムによって元の該ループを置き換え
    るように構成されていることを特徴とするループ最適化
    処理方法。
JP1001669A 1989-01-07 1989-01-07 ループ最適化処理方法 Expired - Fee Related JP2841403B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1001669A JP2841403B2 (ja) 1989-01-07 1989-01-07 ループ最適化処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1001669A JP2841403B2 (ja) 1989-01-07 1989-01-07 ループ最適化処理方法

Publications (2)

Publication Number Publication Date
JPH02181830A JPH02181830A (ja) 1990-07-16
JP2841403B2 true JP2841403B2 (ja) 1998-12-24

Family

ID=11507927

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1001669A Expired - Fee Related JP2841403B2 (ja) 1989-01-07 1989-01-07 ループ最適化処理方法

Country Status (1)

Country Link
JP (1) JP2841403B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994025917A1 (en) * 1993-04-26 1994-11-10 Comdisco Systems, Inc. Method for scheduling synchronous data flow graphs
JP2001034472A (ja) * 1999-07-16 2001-02-09 Mitsubishi Electric Corp データ処理装置および除算、剰余算アルゴリズム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63314675A (ja) * 1987-06-17 1988-12-22 Fujitsu Ltd ル−プアンロ−リング処理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A.V.エイホ、J.D.ウルマン著、土居範久訳、「コンパイラ」(昭61−3−30)、培風館、p.427−428

Also Published As

Publication number Publication date
JPH02181830A (ja) 1990-07-16

Similar Documents

Publication Publication Date Title
US5481723A (en) System and method for controlling execution of nested loops in parallel in a computer including multiple processors, and compiler for generating code therefore
JPH0922361A (ja) データプリフェッチ方法
JPH06103463B2 (ja) コード生成方法
JPH04102926A (ja) 繰り返しループの展開最適化方式
JP2841403B2 (ja) ループ最適化処理方法
JPS63314675A (ja) ル−プアンロ−リング処理方法
US5287509A (en) Multitasking system for in-procedure loops
JP2564904B2 (ja) プログラム最適化処理方法
JP2001290655A (ja) コンパイラ、コンピュータシステム、最適化方法、最適化プログラム、記憶媒体及びプログラム伝送装置
JP3324486B2 (ja) ループ最適化方式およびそのプログラム記録媒体
JPH07168720A (ja) 言語処理システム
JPH03135630A (ja) 命令スケジューリング方式
JPH0512033A (ja) 並列化コンパイル方式
JPH09282177A (ja) プログラム変換方法およびコンパイラ
JPH08115220A (ja) ループ最適化方法
JPH054712B2 (ja)
JPH04286031A (ja) プログラムのループ並列実行処理方法
JPH06222928A (ja) ループ最適化方法
JPH04105131A (ja) 動的スケジューリング方式
JPH0573607A (ja) ベクトル命令生成処理方法
JPH0447337B2 (ja)
JPH01292418A (ja) コマンドシステムのコマンドパラメータ制御方式
JP2003186940A (ja) 論理検証装置
JPH1091456A (ja) プログラムの入出力反復処理方法及びシステム及びプログラムの入出力反復処理プログラムを格納した記憶媒体
JPH05250177A (ja) コンパイル処理方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees