JP3324486B2 - ループ最適化方式およびそのプログラム記録媒体 - Google Patents

ループ最適化方式およびそのプログラム記録媒体

Info

Publication number
JP3324486B2
JP3324486B2 JP01430298A JP1430298A JP3324486B2 JP 3324486 B2 JP3324486 B2 JP 3324486B2 JP 01430298 A JP01430298 A JP 01430298A JP 1430298 A JP1430298 A JP 1430298A JP 3324486 B2 JP3324486 B2 JP 3324486B2
Authority
JP
Japan
Prior art keywords
loop
repetitions
program
loops
unroll
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
JP01430298A
Other languages
English (en)
Other versions
JPH11212799A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP01430298A priority Critical patent/JP3324486B2/ja
Publication of JPH11212799A publication Critical patent/JPH11212799A/ja
Application granted granted Critical
Publication of JP3324486B2 publication Critical patent/JP3324486B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はループ最適化方式お
よびそのプログラム記録媒体に関し、特に複数のループ
構造を有するプログラムを最適化するループ最適化方式
およびそのプログラム記録媒体に関する。
【0002】
【従来の技術】一般にコンパイラにおいては、オブジェ
クトプログラムの実行速度を向上させるために種々の最
適化を行っており、特にループ構造に対する最適化とし
て、同じ繰り返し回数を持つ複数のループ構造を一つの
ループ構造に融合するループ融合と呼ばれる最適化、お
よびループ構造の本体を複写して一回の繰り返しの中で
実行することでループ構造の繰り返し回数を削減するル
ープアンロールと呼ばれる最適化がある。
【0003】図3に示すFortran言語のプログラ
ム片のループ構造はループ融合の最適化を適用する一例
であり、DO文31およびDO文32の繰り返し回数が
同じであることから、図4のFortranプログラム
片のDO文41から構成されるDOループのように複数
のループ構造を一つのループ構造に変形することによ
り、実行時における繰り返しの制御に要する時間と添字
の計算に要する時間とを短縮する最適化が可能である。
【0004】また、図5に示すFortran言語のプ
ログラム片のループ構造はループアンローリングの最適
化を適用する一例であり、DO文51からなるループ構
造を、図6のFortranプログラム片のDO文61
から構成されるDOループのようにループ構造の本体を
複写して一回の繰り返しの中で実行し、ループ構造の繰
り返し回数を削減することにより、実行時における繰り
返しの制御に要する時間を短縮する最適化が可能であ
る。
【0005】しかしながら、図7に示すFortran
言語のプログラム片のDO文71およびDO文72のよ
うに、繰り返し回数が異なるループ構造をループ融合す
る最適化を行うことはできない。
【0006】例えば、特開平3−77142号公報で
は、ループ融合の最適化が適用できる範囲を拡大するた
め、ループの回転順序を反転することでループ融合を行
う方式を提供しているが、繰り返し回数(回転回数)が
同一であることを前提としており、繰り返し回数が異な
る複数のループ構造を融合する方式は提供されていな
い。
【0007】また、特開昭63−314675号公報で
は、繰り返し回数が不明なループ構造をアンローリング
する方式を提案しているが、やはり繰り返し回数が異な
る複数のループ構造を融合する方式には言及していな
い。
【0008】
【発明が解決しようとする課題】上記のように従来のル
ープ最適化方式は、繰り返し回数が異なる複数のループ
構造を融合して最適化することはできないという欠点が
ある。
【0009】本発明の目的は、上記の欠点を改善し、繰
り返し回数が異なる複数のループの場合にも、できる限
りループ融合を実現できるようにして処理速度を高速化
するループ最適化方式およびそのプログラム記録媒体を
提供することにある。
【0010】
【課題を解決するための手段】本発明のループ最適化方
式は、ソースプログラムを解釈し最適なオブジェクトプ
ログラムを生成するコンパイラにおいて、複数のループ
の各繰り返し回数の最大公約数を決定し前記最大公約数
に基づいてそれぞれのループのアンロール段数を求める
アンロール段数決定手段と、前記アンロール段数に従っ
てアンロール処理を行うアンロール手段と、前記アンロ
ール処理を行った複数のループを一つのループに融合す
るループ融合手段とを具備して構成される。
【0011】
【0012】さらに、本発明のループ最適化方式におい
て、前記ループ融合手段は複数のループを一つのループ
に融合するとき、前記一つのループの繰り返し回数を前
記複数のループの各繰り返し回数の最大公約数とする。
【0013】また、本発明のループ最適化処理を行わせ
るプログラムを記録した記録媒体は、ソースプログラム
を解釈し最適なオブジェクトプログラムをコンピュータ
に生成させるためのコンパイルプログラムであって、
数のループの各繰り返し回数の最大公約数を決定し前記
最大公約数に基づいてそれぞれのループのアンロール段
数を求める第一のステップと、前記アンロール段数に従
ってアンロール処理を行う第二のステップと、前記アン
ロール処理を行った複数のループを一つのループに融合
する第三のステップとを含む。
【0014】
【0015】さらに、本発明のループ最適化処理を行わ
せるプログラムを記録した記録媒体において、前記第三
のステップは複数のループを一つのループに融合すると
き、前記一つのループの繰り返し回数を前記複数のルー
プの各繰り返し回数の最大公約数とする。
【0016】すなわち、本発明のループ最適化方式にお
いては、アンロール段数決定手段が、複数のループ構造
の繰り返し回数を入力してそれらの繰り返し回数の公約
数を計算し、その最大公約数を繰り返し回数とする一つ
のループ構造を生成するものとして各々のループ構造の
アンロール段数を決定する。そしてそのアンロール段数
をもとにアンロール手段が各々のループ構造に対してア
ンロール処理を行うことによって同じ繰り返し回数を持
つように変形された複数のループ構造を、ループ融合手
段が一つのループ構造に融合する。
【0017】
【発明の実施の形態】以下、本発明について図面を参照
しながら説明する。
【0018】図1は本発明の実施の一形態を示すブロッ
ク図である。同図において、本発明によるループ最適化
方式10は、ソースプログラムを解釈し最適なオブジェ
クトプログラムを生成するコンパイラにおいて、繰り返
し回数の異なる複数のループを融合するためのアンロー
ル段数を求めるアンロール段数決定手段11と、前記ア
ンロール段数に従ってアンロール処理を行うアンロール
手段12と、前記アンロール処理を行った複数のループ
を一つのループに融合するループ融合手段13とを具備
する。
【0019】アンロール段数決定手段11は、中間テキ
ストAを入力しループ構造を検出するとともに、各々の
ループ構造に対して適切なアンロール段数を求める。
【0020】アンロール手段12は、決定されたアンロ
ール段数に従って各々のループ構造をアンロールする最
適化を行う。
【0021】ループ融合手段13は、アンロールされた
ループ構造に対してループ融合の最適化を行い、中間テ
キストBを生成する。
【0022】次に、上記のループ最適化方式10の動作
について説明する。
【0023】まず、アンロール段数決定手段11は、中
間テキストAのループ構造に対して、連続して処理され
る複数のループ構造の繰り返し回数の公約数を求め適当
な最大公約数が求められた場合に、各々のループ構造の
繰り返し回数をその最大公約数で除することによって各
々のループ構造のアンロール段数を決定する。もし、最
大公約数が1であるなどの理由で、適切なアンロール段
数を求めることができなかった場合には、本発明の最適
化処理は中止する。
【0024】アンロール手段12は、アンロール段数決
定手段11で決定されたアンロール段数に従って、各々
のループ構造に対して周知の方法でアンロールの最適化
処理を行う。もし、アンロールの最適化処理に適合しな
いループ構造の場合には、本発明の最適化処理は中止す
る。
【0025】ループ融合手段13は、アンロール手段1
2でアンロールされた各々のループ構造に対して周知の
方法でループ融合処理を行い、最適化された中間テキス
トBを出力する。もし、ループ融合の最適化処理に適合
しないループ構造の場合には、本発明の最適化処理は中
止する。
【0026】図2は上記のアンロール段数決定手段11
の動作を示す流れ図である。同図において、例えば図7
にFortranプログラム片としてそのイメージを表
現した中間テキストを入力すると、処理21は、連続し
て処理される複数のループ構造の繰り返し回数を求め
る。図7のFortranプログラム片では、DO文7
1からなるループ構造の繰り返し回数が100回,DO
文72から成るループ構造の繰り返し回数が150回で
あることがわかる。
【0027】次に、処理22は、求めた複数のループ構
造の繰り返し回数から、最大公約数を計算する。ここで
は、DO文71から成るループ構造の繰り返し回数が1
00回,DO文72から成るループ構造の繰り返し回数
が150回であるから、最大公約数は50であることが
わかる。もし繰り返し回数が変数や式であるために公約
数を求めることができない場合には、判定23が処理を
終了させる。また、繰り返し回数が素数である場合のよ
うに公約数が1しか存在しない場合にも本発明を適用で
きないと判断し、判定24が処理を終了させる。
【0028】処理22で最大公約数を求めることができ
た場合には、処理25において、各々のループ構造の繰
り返し回数を、求めた最大公約数で除することにより、
各々のループ構造に対して適用するアンローリング段数
を求める。
【0029】図7のFortranプログラム片では、
DO文71から成るループ構造の繰り返し回数が100
回,DO文72から成るループ構造の繰り返し回数が1
50回であり、かつその最大公約数が50であることが
わかるので、100/50=2によってDO文71から
成るループ構造のアンロール段数を2と決定し、150
/50=3によってDO文72から成るループ構造のア
ンロール段数を3と決定することができる。
【0030】次に、アンロール手段12は、決定された
アンロール段数に従って従来技術によるアンロール処理
を行う。図7のFortranプログラム片のDO文7
1から成るループ構造に対しては2段のアンローリング
が適用され、図8のFortranプログラム片のDO
文81から成るループ構造のように変形される。また、
図7のFortranプログラム片のDO文72から成
るループ構造に対しては3段のアンローリングが適用さ
れ、図8のFortranプログラム片のDO文82か
ら成るループ構造のように変形される。
【0031】このようにアンロール手段12で変形され
る複数のループ構造は、同じ繰り返し回数を持つループ
構造に変形されているので、ループ融合手段13は、こ
れらの複数のループ構造に対して従来技術によるループ
融合処理を行うことができる。図8のFortranプ
ログラム片のDO文81から成るループ構造とDO文8
2から成るループ構造とは同じ繰り返し回数50を持っ
ているので、ループ融合手段13によってループ融合さ
れ、変形された中間テキストが生成される。
【0032】図9のFortranプログラム片のDO
文91から成るループ構造は、図8のFortranプ
ログラムからのDO文81から成るループ構造とDO文
82から成るループ構造とを融合した中間テキストのイ
メージを表現している。
【0033】上記のようにして本発明を用いることによ
り、繰り返し回数の異なる複数のループ構造を一つのル
ープ構造に融合することができる。
【0034】なお、上記のループ最適化方式は主記憶
(図示していない)に保持されたプログラムを実行する
ことによって動作する。さらに、このプログラムをハー
ドディスクやフロッピーディスクのような外部記憶に格
納しておき、ループ最適化処理を実行するときに主記憶
にロードして起動させることもできる。
【0035】
【発明の効果】以上、詳細に説明したように、本発明に
よれば、連続して処理される複数のループ構造の繰り返
し回数が異なっていても、繰り返し回数の間に適切な公
約数を見いだすことができれば、複数のループ構造に対
してアンロールおよびループ融合の最適化を適用するこ
とができる。この結果、コンパイルされたプログラムの
実行時間を短縮できる。その理由は、複数のループ構造
を一つのループ構造として融合することにより、実行時
における繰り返しの制御に要する時間と添字の計算に要
する時間とを短縮することができるからである。
【図面の簡単な説明】
【図1】本発明の実施の一形態を示すブロック図。
【図2】本発明のアンロール段数決定手段の動作を示す
流れ図。
【図3】ループ融合を適用できる中間テキストの例を示
す説明図。
【図4】ループ融合によって変形された中間テキストの
例を示す説明図。
【図5】アンローリングを適用できる中間テキストの例
を示す説明図。
【図6】アンローリングによって変形された中間テキス
トの例を示す説明図。
【図7】本発明を適用できる中間テキストの例を示す説
明図。
【図8】本発明におけるアンロール手段までを適用する
ことによって変形された中間テキストの例を示す説明
図。
【図9】本発明におけるループ融合手段を適用すること
によって変形された中間テキストの例を示す説明図。
【符号の説明】
10 ループ最適化方式 11 アンロール段数決定手段 12 アンロール手段 13 ループ融合手段
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/45

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 ソースプログラムを解釈し最適なオブジ
    ェクトプログラムを生成するコンパイラにおいて、複数
    のループの各繰り返し回数の最大公約数を決定し前記最
    大公約数に基づいてそれぞれのループのアンロール段数
    を求めるアンロール段数決定手段と、前記アンロール段
    数に従ってアンロール処理を行うアンロール手段と、前
    記アンロール処理を行った複数のループを一つのループ
    に融合するループ融合手段とを具備することを特徴とす
    るループ最適化方式。
  2. 【請求項2】 請求項1記載のループ最適化方式におい
    て、前記ループ融合手段は複数のループを一つのループ
    に融合するとき、前記一つのループの繰り返し回数を前
    記複数のループの各繰り返し回数の最大公約数とするこ
    とを特徴とするループ最適化方式。
  3. 【請求項3】 ソースプログラムを解釈し最適なオブジ
    ェクトプログラムをコンピュータに生成させるためのコ
    ンパイルプログラムであって、複数のループの各繰り返
    し回数の最大公約数を決定し前記最大公約数に基づいて
    それぞれのループのアンロール段数を求める第一のステ
    ップと、前記アンロール段数に従ってアンロール処理を
    行う第二のステップと、前記アンロール処理を行った複
    数のループを一つのループに融合する第三のステップと
    を含むことを特徴とするループ最適化処理を行わせるプ
    ログラムを記録した記録媒体。
  4. 【請求項4】 請求項3記載のループ最適化処理を行わ
    せるプログラムを記録した記録媒体において、前記第三
    のステップは複数のループを一つのループに融合すると
    き、前記一つのループの繰り返し回数を前記複数のルー
    プの各繰り返し回数の最大公約数とすることを特徴とす
    るループ最適化処理を行わせるプログラムを記録した
    録媒体。
JP01430298A 1998-01-27 1998-01-27 ループ最適化方式およびそのプログラム記録媒体 Expired - Fee Related JP3324486B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP01430298A JP3324486B2 (ja) 1998-01-27 1998-01-27 ループ最適化方式およびそのプログラム記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01430298A JP3324486B2 (ja) 1998-01-27 1998-01-27 ループ最適化方式およびそのプログラム記録媒体

Publications (2)

Publication Number Publication Date
JPH11212799A JPH11212799A (ja) 1999-08-06
JP3324486B2 true JP3324486B2 (ja) 2002-09-17

Family

ID=11857315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01430298A Expired - Fee Related JP3324486B2 (ja) 1998-01-27 1998-01-27 ループ最適化方式およびそのプログラム記録媒体

Country Status (1)

Country Link
JP (1) JP3324486B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100854720B1 (ko) 2007-03-23 2008-08-27 삼성전자주식회사 루프 통합 방법 및 루프 통합 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
岩澤京子,Fortran90の配列記述の最適化方式,電子情報通信学会論文誌D−I,1995年5月,Vol.J.78−D−I,No.5,p.504−506
発明協会公開技報公技番号93−6016号

Also Published As

Publication number Publication date
JPH11212799A (ja) 1999-08-06

Similar Documents

Publication Publication Date Title
JP3317825B2 (ja) ループ最適化翻訳処理方法
US5537620A (en) Redundant load elimination on optimizing compilers
US7539851B2 (en) Using register readiness to facilitate value prediction
JP2004038225A (ja) コンパイラプログラムおよびコンパイル処理方法
JP3546341B2 (ja) 多重ループ向けデータプリフェッチ方法およびプログラム生成方法
JPH06103463B2 (ja) コード生成方法
JP2001166947A (ja) コンパイル処理方式
US7131119B2 (en) Code optimization
JP3477137B2 (ja) 最適化装置及び最適化プログラムを記録したコンピュータ読み取り可能な記録媒体
US6567976B1 (en) Method for unrolling two-deep loops with convex bounds and imperfectly nested code, and for unrolling arbitrarily deep nests with constant bounds and imperfectly nested code
JP2003108386A (ja) 間接参照データプリフェッチ方法
JP3324486B2 (ja) ループ最適化方式およびそのプログラム記録媒体
JP3651579B2 (ja) コンピュータシステム、プログラム変換方法および記憶媒体
JPH10320212A (ja) キャッシュ向け最適化方法
JP3887097B2 (ja) コンパイル方法,コンパイル装置および、コンパイル用プログラムを記憶したコンピュータ読み取り可能な記憶媒体
JP3613454B2 (ja) コンパイラ装置、および、コンパイラが格納されたコンピュータ読み取り可能な記録媒体
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
US20220366112A1 (en) Apparatus, Device, Method, and Computer Program for Generating a Register Transfer Level Representation of a Circuit
JPH07141196A (ja) ループ外分岐を持つループの展開方式
JP3419268B2 (ja) プロセッサ
JPH054712B2 (ja)
JPH0721031A (ja) 言語処理方法
JPH06222928A (ja) ループ最適化方法
JP3239830B2 (ja) 移送命令最適化装置および方法
JP3922699B2 (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

LAPS Cancellation because of no payment of annual fees