JPH0962514A - 配列記述の最適化制御装置および制御方法 - Google Patents

配列記述の最適化制御装置および制御方法

Info

Publication number
JPH0962514A
JPH0962514A JP7217144A JP21714495A JPH0962514A JP H0962514 A JPH0962514 A JP H0962514A JP 7217144 A JP7217144 A JP 7217144A JP 21714495 A JP21714495 A JP 21714495A JP H0962514 A JPH0962514 A JP H0962514A
Authority
JP
Japan
Prior art keywords
array
optimization
description
array description
loop
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
JP7217144A
Other languages
English (en)
Other versions
JP3695798B2 (ja
Inventor
Masatoshi Haraguchi
正寿 原口
Masanori Kira
正規 吉良
Koichiro Hotta
耕一郎 堀田
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 JP21714495A priority Critical patent/JP3695798B2/ja
Priority to US08/703,063 priority patent/US6074433A/en
Priority to GB9618443A priority patent/GB2317031B/en
Publication of JPH0962514A publication Critical patent/JPH0962514A/ja
Application granted granted Critical
Publication of JP3695798B2 publication Critical patent/JP3695798B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

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

Abstract

(57)【要約】 【課題】 本発明は新たな言語仕様の配列記述に対し最
適コード生成を行う配列記述の最適化制御装置と制御方
法に関し、従来は形状一致判定が困難な場合のループ融
合処理を可能にすると共に、配列記述のループ展開に依
存する実行時間(性能)を短縮することを目的とする。 【解決手段】 予め定められた最適化レベル、配列の次
元数、および各次元の配列数に基づき配列記述に関する
最適化実施範囲を判定し、最適化実施範囲内で配列記述
の形状を表現する情報を抽出し、複数の配列記述の形状
を表現するためのリスト形式の情報から、各配列記述に
対し共通の式を検出して各配列記述に対し共用となる情
報を認識し、最適なコード生成において、実行時に形状
が確定する配列記述に対し、配列記述を最適なループに
変換するためのループ融合をすべきか否かのループ融合
判定処理を行うように構成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、JIS X 3001により
規定されたFORTRAN 90{ANSI(American National Stan
dards of Institute)ではX3.198、因みにISO/IEC 153
9:1991 もある}のような新たな言語仕様として追加さ
れた配列記述に対して、より最適なコード生成を促進す
るための配列記述の最適化制御装置および制御方法に関
する。通常、ベクトルプロセッサを有していないマシ
ン、例えば、コンピュータシステムにおいては、上記の
配列記述は、ソースプログラム(原始プログラム)等の
入力としてのテキスト(通常、ソーステキストとよばれ
る)をオブジェクトプログラム(機械語のプログラム)
に変換するためのコンパイラの内部で一つまたは複数の
ループに展開される。オブジェクトプログラムにおける
ループの部分は実行時間の比重が高いため、配列記述に
関係する部分のコードを最適な状態に生成することは、
実行時間の短縮に大きく貢献することになる。本発明
は、種々の分野にわたって広汎に利用するために確立す
べき言語仕様として新たに追加された配列記述に対して
も、実行時間の短縮を実現するための一方策について言
及するものである。
【0002】さらに、本発明は、上記のFORTRAN 90に限
らず、配列記述が可能な言語仕様をもつ言語全般に対し
ても有効であることがわかっており、本発明の最適化制
御装置および制御方法の有用性を示唆している。
【0003】
【従来の技術】下記の数1の式においては、テキストの
配列を操作する配列代入文等の複数の文(式)からなる
従来の配列記述の一例が示されている。例えば、FORTRA
N 90から新たに言語仕様として追加された配列記述で
は、以下の数1の右側部分に示すように、配列に対する
演算や代入操作をDO文等のループ制御文を使用せずに
記述することができる。
【0004】
【数1】
【0005】前述したように、配列記述はコンパイラ内
部でループに変換して実行する。このときに、配列記述
からループへの変換を一文ずつ行うと実行性能が悪いた
め、通常、ループ融合とよばれる最適化制御を実施す
る。すなわち、下記の数2の右側部分に示すように、同
じループにより実行可能な配列記述(数2の左側部分)
をまとめることによって特定の配列記述の部分を同じル
ープで実行するように変換することができる。
【0006】
【数2】
【0007】しかしながら、従来の最適化制御の手法で
は、下記の数3の式に示すように、形状を表現する添字
式が異なっている配列記述に関しては、配列の形状が一
致していないとみなされるため、ループ融合を行うこと
ができなかった。
【0008】
【数3】
【0009】
【発明が解決しようとする課題】上記のとおり、従来の
最適化制御の手法では、配列記述においてループ融合を
可能にするためには、配列の形状が完全に一致している
必要がある。すなわち、従来の最適化制御の手法では、
前述の数2に示したように、配列の形状が完全に一致す
ることが判定可能であるものしかループ融合をすること
ができなかった。すなわち、従来の手法では、ループの
形状が実行時に確定し、形状が異なる計算式等により最
適なコード生成が求められている場合は、ループ融合を
実施することができなかった。
【0010】また一方で、従来はオプションによって最
適化レベルを制御しているが、最適化で必要とする翻訳
資源は入力となるソースの複雑さに依存することが多い
のに、その情報をコンパイラの最適化レベルの制御に使
っていないため翻訳資源を有効に使っていない場合があ
った。本発明は、上記問題点に鑑みてなされたものであ
り、配列記述内の式を複雑にすることなく最適のループ
制御を行うことにより、従来のループ融合処理では形状
の一致が判定できなかった場合のループ融合処理の問題
を解決することが可能な配列記述の最適化制御装置およ
び制御方法を提供することを第1の目的とするものであ
る。
【0011】さらに、本発明は、最適化レベルを比較的
高く設定した場合に、ループ融合処理を含む配列記述の
ループ展開に依存する実行時間を従来よりも短縮するこ
とが可能な配列記述の最適化制御装置および制御方法を
提供すること第2の目的とするものである。
【0012】
【課題を解決するための手段】図1は、本発明の原理構
成を示すブロック図である。図1に示すような本発明の
配列記述の最適化制御装置においては、上記問題点を解
決するために、入力となるテキスト1を読み込み、この
テキスト1の配列を操作する文からなる複数の配列記述
に対して最適なコード生成を行う場合に、予め定められ
た最適化のレベル、複数の配列記述の配列の次元数、お
よび各次元の配列数に基づき、複数の配列記述に関する
最適化実施範囲を判定する最適化実施範囲判定手段2を
備えている。この最適化実施範囲判定手段2により判定
された最適化実施範囲内で最適なコード8を出力するこ
とが可能になる。この場合、好ましくは、最適化のレベ
ルは最適化レベル情報保持部3に保持されており、複数
の配列記述の配列の次元数、および各次元の配列数は、
次元数/配列数情報保持部4に保持されている。
【0013】さらに、好ましくは、図1に示すように、
本発明の配列記述の最適化制御装置においては、上記の
最適化実施範囲内で、複数の配列記述の形状を表現する
情報を抽出する配列記述形状情報抽出手段5を備えてい
る。この配列記述形状情報抽出手段5により抽出された
情報は、リスト形式で保持される。さらに、好ましく
は、図1に示すように、本発明の配列記述の最適化制御
装置は、複数の配列記述の形状を表現するためのリスト
形式の情報から、各配列記述に対し共通の式を検出して
各配列記述に対し共用となる情報を認識するための共通
式認識手段6を備えている。
【0014】さらに、好ましくは、図1に示すように、
本発明の配列記述の最適化制御装置は、共通式認識手段
6により検出される結果をもとに、最適なコード生成に
おいて、実行時に形状が確定する配列記述に対し、この
配列記述を最適なループに変換するためのループ融合を
すべきか否かのループ融合判定処理がなされるループ融
合判定処理7等を備えている。
【0015】さらに、好ましくは、本発明の配列記述の
最適化制御装置においては、配列記述をループに変換す
る場合に、上記のリスト形式で保持された情報から、最
適なループの形状を選択するように構成される。また一
方で、本発明の配列記述の最適化制御装置等により遂行
される最適化制御方法は、予め定められた最適化のレベ
ル、前記配列記述の配列の次元数、および各次元の配列
数に基づき、複数の配列記述に関する最適化実施範囲を
判定するステップを有し、このステップにより判定され
た最適化実施範囲内で最適なコードを出力するようにし
ている。
【0016】好ましくは、本発明の配列記述の最適化制
御方法においては、上記の最適化実施範囲内で、配列記
述の形状を表現する情報を抽出するステップを有し、こ
のステップにより抽出された情報をリスト形式で保持す
るようにしている。さらに、好ましくは、本発明の配列
記述の最適化制御方法においては、上記のリスト形式で
保持された情報から、各配列記述に対し共通の式を検出
して各配列記述に対し共用となる情報を認識するステッ
プを有している。
【0017】さらに、好ましくは、本発明の配列記述の
最適化制御方法では、上記の共通の式を検出した結果を
もとに、最適なコード生成において、実行時に形状が確
定する配列記述に対し、この配列記述を最適なループに
変換するためのループ融合をすべきか否かのループ融合
判定処理を遂行するようにしている。さらに、好ましく
は、本発明の配列記述の最適化制御方法においては、配
列記述をループに変換する場合に、上記のリスト形式で
保持された情報から、最適なループの形状を選択するよ
うにしている。
【0018】さらに詳しく説明すると、本発明の配列記
述の最適化制御の手法では、ループの形状を判定する際
に、FORTRAN 90等の新たな言語仕様からなる配列記述を
演算対象とするデータ要素は、配列記述の左辺と右辺が
形状適合しなければならないという規定を利用すること
により、形状の一致を認識することができる範囲を拡大
する。これにより、前述の数3の式に示したような従来
の手法ではループ融合ができなかったケースについて
も、ループ融合の実行が可能になる。
【0019】これに加えて、本発明の配列記述の最適化
制御の手法では、ループの融合処理の負荷および効果を
考慮して、最適化レベルと、配列記述の配列の次元数お
よび各次元の配列数(すなわち、式の複雑さ)をもと
に、最適化を実施する範囲を動的に決定するようにして
いる。このような処理・構成により、最適化レベルに応
じた翻訳作業域、翻訳時間、および実行時間を実現する
ことが可能になる。
【0020】さらにまた、本発明の配列記述の最適化制
御の手法では、配列記述のループ展開後のループの形状
(ループの回転数の初期値や終値等)をより単純な形で
表現するために、ループ融合の判定の際にも用いた配列
の添字式の中から、ループの形状をより単純に表現でき
る式を選択する。これらの処理により、最適化レベルに
依存した最適な配列記述のループ展開が実現される。
【0021】
【作用】入力となるテキスト、例えば、前述の数3の式
に示したソースプログラムにおいて、配列記述の形状を
代入文の左辺から求めた場合、以下のようになる。 数3の(1) の配列代入文の形状は、1次元で要素数がL 数3の(2) の配列代入文の形状は、1次元で要素数がM
−1 数3の(3) の配列代入文の形状は、1次元で要素数がN
−2 また一方で、配列記述の形状を代入文の右辺から求めた
場合、以下のようになる。
【0022】数3の(1) の配列代入文の形状は、1次元
で要素数がM−1 数3の(2) の配列代入文の形状は、1次元で要素数がN
−2 数3の(3) の配列代入文の形状は、1次元で要素数がK したがって、配列記述の右辺、または左辺だけの情報で
は、形状の一致を判定することができず、ループ融合は
実行することができない。しかしながら、言語仕様の規
定によれば、演算対象となるデータは形状適合(すなわ
ち、配列記述の配列の次元数、および各次元の要素数が
一致する)の状態にならなくてはならないので、数3の
(1) の配列代入文から、L=M−1 (2) の配列代入文から、M−1=N−2 (3) の配列代入文から、N−2=K ∴L=M−1=N−2=K を導くことができるので、数3の(1) 、(2) および(3)
の配列記述のループ融合が可能になる。上記の言語仕様
を利用した共通式の認識とループ融合の様子は、下記の
数4の式に詳しく示すこととする。
【0023】
【数4】
【0024】続いて、最適化レベル、および式の複雑さ
から、最適化を実施する範囲を動的に決定することによ
り、最適化レベルに応じた翻訳作業域、翻訳時間、およ
び実行時間を実現できるような処理を追加した理由を説
明する。なお、ここで説明するような理論をもとに、実
際に最適化実施範囲を決定する式は次節の実施例の項で
示すこととする)。
【0025】一般に、次元数M、文数L(L≧2)、i
番目の文i (i=1、2、…、L)の配列の個数をNi
(i=1、2、…、L)とした場合、文1 と文2 の形状
一致判定には、 M×(N1 ×N2 )(回) 文1 、文2 と文3 との形状一致判定には、 M×(N1 +N2 )×N3 (回) 同様にして文1 〜文L-1 と文L との形状一致判定には、 M×(N1 +N2 +…NL-1 )×NL ) 回必要となる。文数Lの配列記述すべてに対し形状の一
致判定を行う場合、必要な形状一致判定の回数は、上記
のすべての形状一致判定回数の総和になるので、以下の
数5のように表される。
【0026】
【数5】
【0027】ここで、文の複雑さがすべて等しい(N1
=N2 =…=NL =N)とすると、必要な形状一致判定
の回数は、以下の数6のように表される。
【0028】
【数6】
【0029】すなわち、数6の式に示す形状一致判定の
回数だけ、一致判定動作を行わなければならない。この
ことは、式の複雑さを表すN、および解析対象とする配
列記述の文数Lに対して、翻訳時間が2乗のオーダーで
増加することを意味する。上記の数5の式より、翻訳資
源、翻訳時間、および翻訳作業域を有効に利用するため
には、式の複雑さを判定し、最適化実施範囲を動的に判
定する必要があるといえる。また一方で、当然のことな
がら、より多くの翻訳資源を利用することで、より高度
なループ融合が可能となり、実行時間を短縮することが
できる。しかしながら、実際には翻訳資源が限られてい
るために、上記のように無制限に翻訳資源を利用できる
訳ではない。
【0030】本発明によれば、ループの形状を判定する
際に形状の一致を認識することができる範囲を拡大し、
さらに、ループの融合処理の負荷および効果を考慮し
て、最適化レベル、および式の複雑さをもとに、最適化
を実施する範囲を動的に決定するようにしているので、
翻訳資源を無駄にしたり配列記述内の式を複雑にするこ
となく、最適化レベルに応じた翻訳作業域、翻訳時間、
および実行時間を実現することが可能になる。
【0031】
【実施例】以下、添付図面(図2〜図11)を参照しな
がら本発明の配列記述の最適化制御を実現するための実
施例について説明する。図2は、本発明の最適化制御を
実現するための実施例の構成を示すブロック図である。
ただし、ここでは、CPU(Central Processing Unit
:中央処理装置)を備えたコンピュータシステムによ
って本発明の最適化制御装置を構成する場合を代表して
示す。なお、これ以降、前述した構成要素と同様のもの
については、同一の参照番号を付して表すこととする。
【0032】図2において、前述の図1に示した最適化
実施範囲判定手段2、配列記述形状情報抽出手段5、共
通式認識手段6、およびループ融合判定処理手段7を含
む最適化制御部50は、コンピュータシステムのCPU
20により実現される。さらに、前述の図1に示した最
適化レベル情報保持部3および次元数/配列数情報保持
部4は、図2のCPU20に付設されたRAMやROM
等の記憶部30内に予め記憶されている。なお、記憶部
30として、CPU20に内蔵のRAMまたはROMを
用いることもできる。
【0033】さらに、図2において、入力部10より、
入力の対象とすべきテキスト1(図1)が読み込まれ
る。さらに、テキスト1の配列を操作する文からなる複
数の配列記述がCPU20に入力される。さらに、図2
において、CPU20内でループ融合判定処理を行うこ
とにより最適化制御がなされた最適なコード8(図1)
が生成され、出力部80から出力される。
【0034】図2の実施例から明らかなように、本発明
の最適化実施範囲の判定、配列記述形状情報の抽出、共
通式の認識、およびループ融合の判定等の機能は、現行
のコンピュータシステムを利用することによって容易に
実現することができる。図3は、本発明の実施例の概略
的な動作を説明するための流れ図である。図3のステッ
プS1(すなわち、第1フェーズ)において、入力の対
象とすべきテキストを読み込み、このテキストを構成す
る配列記述を検出すると共に、最適化実施範囲の見積り
を行う。ここでは、テキストのどの部分からどの部分ま
で最適化処理を行うかが決定される。本発明の最適化処
理において入力となるテキストは、プリプロセッサ方式
の場合はソースプログラムであり、中間言語を利用する
コンパイラにおいては中間コードである。
【0035】次に、ステップS2において、前述のステ
ップS1で求めた最適化実施範囲を選択して取り出す。
このようにして取り出された最適化実施範囲は、途中に
他の文からの飛び込みや飛び出しがない限り、有効なも
のとなる。さらに、上記の最適化実施範囲が有効なもの
であると判定された場合、ステップS3(すなわち、第
2フェーズ)において、配列記述の形状を表現する情報
の取り出し処理を行う。
【0036】さらに、上記の最適化実施範囲が有効なも
のであると判定された場合、ステップS4(すなわち、
第3フェーズ)において、前述のステップS3にて取り
出した情報に対してリストを作成し、登録を行う。これ
と同時に、同一データの共通化を行い、共通式の認識と
ループ融合の判定を行う。これらの第1フェーズおよび
第3フェーズの処理を実行することにより、配列記述の
形状の計算式が同じ式で求められ、形状の一致判定が可
能になる。この結果、ステップS5において、従来の手
法ではループ融合が不可能であったループが融合可能と
なる。さらに、ループ展開時のループの初期値、最終
値、および増分値をより単純な式で表現することも可能
になる。上記の第1フェーズ〜第3フェーズに関して
は、後述の図4〜図11に基づいて詳細に説明すること
とする。
【0037】図4および図5は、それぞれ、図3におけ
る配列記述の検出と最適化実施範囲の見積りの処理手順
の詳細を説明するための流れ図その1およびその2であ
る。ここでは、配列記述の最適化処理の第1フェーズ
(図3のステップS1)について説明する。この第1フ
ェーズの処理では、まず、ステップS41において、配
列記述の開始位置(例えば、φ)、終了位置(例えば、
φ)および文数(例えば、0)を初期設定することによ
り、最適化制御部(例えば、CPU)の初期化を行う。
次に、ステップS42において、入力となるテキストを
読み込み配列記述を検出する。入力となるテキストは、
プリプロセッサ方式の場合はソースプログラムであり、
中間言語を利用するコンパイラにおいては中間コードで
ある。
【0038】上記の配列記述の検出動作は、ファイルの
終了位置(EOF)に達するまで続けられる(ステップ
S43)。さらに、他の文からの飛び込みや飛び出しが
ないか否かを検出する(ステップS44)と共に、入力
となるテキスト内に配列記述が連続して出現するか否か
を確認する(ステップS45)。さらに、最適化レベ
ル、および式の複雑さに基づき、最適化実施文数、すな
わち、解析対象とする配列記述の文数を順次計算する
(ステップS46)。
【0039】さらに、図5のステップS47において、
テキストの配列記述の開始位置が未登録であるか否かを
確認する。もし未登録であれば、ステップS48におい
て、配列記述の開始位置の登録、次元数の取り出し、項
(例えば、配列の数)のカウント、および最適化実施文
数の見積りを行う。
【0040】さらに、先程の見積り計算を行った最適化
実施文数の範囲内で配列記述の終了位置を更新し(ステ
ップS49およびS50)た後に、配列記述が連続して
出現し、かつ、途中に他の文からの飛び込みや飛び出し
がない範囲を求める。このようにして求めた範囲が、最
終的に、最適化実施範囲として取り出される(ステップ
S51)。
【0041】この場合、上記の最適化実施文数は、以下
の数7の式に基づいて計算可能であることが、本明細書
中の「作用」の項で述べた理論により知られている。
【0042】
【数7】
【0043】・上記の数7において、αは翻訳資源係数
である。このαは、最適化レベルあたりの翻訳資源、翻
訳時間および翻訳作業域等の使用増加率を表すものであ
る。当値は、経験則に基づいたチューニングによって決
定する。 ・βは基準次元数である。
【0044】このβは、通常の配列記述において最も多
く出現する次元数を表す。当値は、コンパイラ等により
FORTRAN を使用した数値計算においては、β=3である
ことが経験上知られていることから3としている。 ・γは基準配列数である。このγは、通常の配列記述に
おいて最も多く出現する項数を表す。当値もまた、経験
則に基づいたチューニングによって決定する。
【0045】・OPTは最適化レベルである。このOP
Tは、コンパイラ等が実施する最適化の度合いを1以上
の数値で表現したものである。この値が大きいほど、よ
り強い最適化を実施することを意味し、翻訳時間および
翻訳作業域を代償として、より高い実行性能が実現され
得る。 ・dimは配列記述の次元数を表す。
【0046】このdimの値が大きいほど、形状の一致
判定に時間がかかる。処理時間は当値と比例関係にあ
る。 ・itemは最初に出現した配列記述内の配列の個数で
ある。このitemの値が大きいほど、形状の一致判定
に時間がかかる。本来、配列の個数は文毎に異なるが、
式の複雑さは大体等しいという仮定の元に、最初に出現
した配列記述からitemの値を求める。
【0047】図6および図7は、それぞれ、図3におけ
る配列記述の形状を表現する情報の取り出しの処理手順
の詳細を説明するための流れ図その1およびその2であ
る。ここでは、配列記述の最適化処理の第2フェーズ
(図3のステップS3)について説明する。この第2フ
ェーズの処理は、大きく分けて次のa)およびb)の2
つの処理手順から構成されている。
【0048】a)最適化実施範囲内の配列記述の配列か
ら要素数を表現する情報を取り出す処理 形状適合によって値が等値であるのは、同一配列記述内
の同一次元の要素数である。当該処理は、値が等値であ
るデータを連続して取り出すための3重ループによって
構成される。
【0049】b)取り出した情報に対してリストを作成
し、登録を行う処理(後述の図8参照) ここでは、リストの作成と同時に、同一データの共通化
を行う。当該処理においては、リスト作成時に、既存リ
ストに対する照会を行うことで、同一情報を持つリスト
の作成が抑止される。さらに、同一情報を有するリスト
の出現によって、同じ値を表現するリスト同士をマージ
(併合)する。
【0050】配列記述の最適化処理中の第2フェーズの
処理を実行する場合、まず、図6のステップS61にお
いて、i=0に設定して配列記述の初期化を行う。次
に、図7のステップS73において、iの値を1だけ増
加させ、i番目(i=i+1)の配列記述があるか否か
をチェックする。もし、i番目の配列記述があれば、図
6のステップS62において、i番目の配列記述の取り
出しを行う(3重ループ中の最初のループ)。
【0051】さらに、ステップ63において、j=0に
設定して配列記述の次元の初期化を行う。さらに、図7
のステップS70において、jの値を1だけ増加させ
(j=j+1)、ステップS71において、増加後のj
の値が、配列記述の次元数以下であるか否かをチェック
する。もし、jの値が、配列記述の次元数以下であれ
ば、図6のステップS64において、k=0に設定する
(3重ループ中の2番目のループ)。
【0052】さらに、ステップS68において、kの値
を1だけ増加させ(k=k+1)、図7のステップS6
9において、k番目の項があるか否かをチェックする。
もし、k番目の項があれば、図6のステップS65にお
いて、k番目の項を取り出す(3重ループ中の3番目の
ループ)。さらに、この項が配列の数であることを確認
した後に(ステップS66)、取り出した項に相当する
情報に対してリストを作成し、登録を行う(ステップS
67)。すなわち、本発明では、3重ループの構成を採
用することによって、配列記述の形状を表現するための
値が等値であるようなデータを連続して取り出すことが
できる。このようにして取り出され、かつ、配列記述の
形状を表現する情報に関するリストの作成および登録の
処理は、i、jおよびkが所定の値に達するまで続ける
ことができる。
【0053】図8は、図6におけるリストの作成と登録
の処理手順の詳細を説明するための流れ図である。図8
のステップS81において、まず、既に同じ情報を持つ
リストが存在するか否かをチェックする。この種のリス
トが存在しない場合、新たにリストを作成し(ステップ
S82)、i番目の配列記述が、j次元目にて最初に作
成されたリストに対応する配列記述であるか否かをチェ
ックする(ステップS83)。もし、i番目の配列記述
が、j次元目にて最初に作成されたリストに対応する配
列記述であれば、このように異なる値を表現するリスト
として配列記述を登録する(ステップS84)。
【0054】もし、i番目の配列記述が、j次元目にて
最初に作成されたリストに対応する配列記述でなければ
(ステップS83)、以前に作成したリストと同じ値を
表現するリストとして配列記述を登録する(ステップS
85)。また一方で、既に同じ情報を持つリストが存在
する場合(ステップS81)、ステップS86におい
て、以前に作成したのと同じ値を表現するリストが存在
するか否かをチェックする。もし、以前に作成したのと
同じ値を表現するリストが存在するならば、このリスト
の作成と同時に、同一データの共通化を行う。この場
合、リスト作成時に、既存のリストに対する照会を行う
ことで、同一情報を持つリストの作成が抑止される。さ
らに、同一情報を有するリストの出現によって、同じ値
を表現するリスト同士をマージする(ステップS8
7)。また一方で、ステップS86において、以前に作
成したのと同じ値を表現するリストが存在しない場合、
同じ値を表現する既存のリストが存在しないとみなし、
連鎖の基点を変更することによって(ステップS88)
新たにリストを作成する。
【0055】図9は、図8の処理手順により作成または
登録されるリスト構造の一例を示す図であり、図10
は、ソーステキスト入力により作成されるリスト構造の
一例を示す図である。図9においては、リスト作成時に
使用される3つのポインタが示されている。これらの3
つのポインタとして、要素数を表現する情報へのポイン
タ、同じ値を表現するリストへのポインタ、および、違
う値を表現する情報へのポインタが挙げられる。
【0056】さらに、図10に示すように、ソーステキ
スト入力により作成されるリスト構造においては、上記
のポインタが機能する。例えば、要素数L=M−1=N
−2、I=Jという関係を表現する場合、図10のリス
ト構造から明らかなように、L、M−1、および、N−
2は同じ値を表現するリストへのポインタを用いて連鎖
状に表示され、IおよびJも、同じ値を表現するリスト
へのポインタを用いて連鎖状に表示される。また一方
で、LとIとは、違う値を表現する情報へのポインタを
用いて表示される。
【0057】さらに、配列記述の最適化処理の第3フェ
ーズ(図3のステップS4)である共通式の認識とルー
プ融合の判定処理について詳細に説明する。この第3フ
ェーズは、以下の(1) 〜(3) の処理手順により遂行され
る。 (1) 作成したリストから式の値が等しい集合を得る。 (2) この集合の中で、最も簡単な式を選び出し、他の式
を置換する。
【0058】(3) この結果、配列記述の形状の計算式が
同じ式で求められ、形状の一致判定が行うことができ
る。 このような処理手順により、従来はループ融合不可能で
あったループが融合可能になる。また、ループ展開時の
ループの初期値、最終値、および増分値をより単純な式
で表現することも可能になる。
【0059】図11は、本発明の最適化制御を実現する
ための具体的な一例を示すブロック図である。図11に
おいては、本発明の最適化制御装置を、前述の図2の実
施例よりも具体的な構成として開示している。さらに、
図11において、CPUは、フロントエンドプロセッサ
21と、オプチマイズ・バックエンドプロセッサ(OB
E)23とにより構成される。フロントエンドプロセッ
サ21では、主として、構文解析等が実施される。また
一方で、最適化制御部25を含むオプチマイズ・バック
エンドプロセッサ23では、主として、最適化実施範囲
内での共通式認識やループ融合判定処理等が行われる。
図11に示す入力部11および出力部81は、それぞ
れ、前述の図2に示した入力部10および出力部80に
ほぼ対応する。
【0060】図11の最適化制御装置の入力部11に入
力されるようなFORTRAN 90等の言語仕様からなるソース
テキストは、プリプロセッサ方式の場合はソースプログ
ラムであり、中間言語を利用する方式の場合は中間コー
ドである。前者のプリプロセッサ方式の場合は、出力部
81から、C言語、FORTRAN 77等の言語仕様からなるコ
ードが出力される。後者の中間言語を利用する方式の場
合は、出力部81から中間言語からなるコードが出力さ
れる。したがって、図11の本発明の最適化制御装置に
おいては、ソースプログラムおよび中間言語のいずれに
対しても、共通式認識やループ融合判定処理等を含む最
適化処理を遂行することができる。
【0061】
【発明の効果】以上説明したように、本発明の配列記述
の最適化制御装置によれば、第1に、複数の配列記述に
対して最適なコード生成を行う場合に、予め定められた
最適化のレベル、配列の数、および、複数の配列記述の
配列の次元数に基づき、複数の配列記述に関する最適化
実施範囲を見積るようにしているので、最適化レベルに
応じた翻訳時間、翻訳領域、および実行時間を設定する
ことが可能になる。この結果、FORTRAN 90等に固有の配
列記述に対して、ユーザが与える最適化レベルに依存し
た最適コードを生成することが可能になり、コンパイラ
等の性能向上に大きく貢献することができる。
【0062】さらに、本発明の配列記述の最適化制御装
置によれば、第2に、上記の最適化実施範囲内で、複数
の配列記述の形状を表現する情報を抽出し、この抽出し
た情報をリスト形式で保持しているので、この種の情報
をもとに形状の一致を認識することができる範囲を拡大
することが可能になる。これにより、従来の手法ではル
ープ融合ができなかったケースについても、ループ融合
の実行が可能になり、実行時間の短縮が図れる。
【0063】さらに、本発明の配列記述の最適化制御装
置によれば、第3に、複数の配列記述の形状を表現する
ためのリスト形式の情報から、各配列記述に対し共通の
式を検出して各配列記述に対し共用となる情報を認識す
るようにしているので、翻訳資源を無駄にしたり配列記
述内の式を複雑にすることなく、最適化レベルに応じた
翻訳作業域、翻訳時間、および実行時間を実現すること
が可能になる。
【0064】さらに、本発明の配列記述の最適化制御装
置によれば、第4に、最適なコード生成において、実行
時に形状が確定する配列記述を最適なループに変換する
ためのループ融合をすべきか否かのループ融合判定処理
を行うようにしているので、配列記述のループ展開後の
ループの形状をより単純な形で表現することが可能にな
る。この結果、実行時間の短縮が促進される。
【0065】さらに、本発明の配列記述の最適化制御装
置によれば、第5に、配列記述をループに変換する場合
に、上記のリスト形式で保持された情報から、最適なル
ープの形状を選択するようにしているので、ループ融合
判定の際にも用いた配列の添字式の中から、ループの形
状をより単純に表現できる式が選択され、最適な配列記
述のループ展開が実現される。
【0066】また一方で、本発明の配列記述の最適化制
御方法によれば、第1に、複数の配列記述に対して最適
なコード生成を行う場合に、予め定められた最適化のレ
ベル、複数の配列記述の配列の次元数、および各次元の
配列数に基づき、複数の配列記述に関する最適化実施範
囲を見積っているので、最適化レベルに応じた翻訳時
間、翻訳領域、および実行時間を実現することが可能に
なる。この結果、FORTRAN 90等に固有の配列記述に対し
て、ユーザが与える最適化レベルに依存した最適コード
を生成することができる。
【0067】さらに、本発明の配列記述の最適化制御方
法によれば、第2に、上記の最適化実施範囲内で、複数
の配列記述の形状を表現する情報を抽出し、この抽出し
た情報をリスト形式で保持しているので、この種の情報
をもとに形状の一致を認識することができる範囲を拡大
することが可能になる。これにより、従来の方法ではル
ープ融合ができなかった場合についても、ループ融合の
実行が可能になり、実行時間の短縮が図れる。
【0068】さらに、本発明の配列記述の最適化制御方
法によれば、第3に、複数の配列記述の形状を表現する
ためのリスト形式の情報から、各配列記述に対し共通の
式を検出し、各配列記述に対し共用となる情報を認識し
ているので、翻訳資源を犠牲にしたり配列記述内の式を
複雑にすることなく、最適化レベルに応じた翻訳作業
域、翻訳時間、および実行時間を実現することが可能に
なる。
【0069】さらに、本発明の配列記述の最適化制御方
法によれば、第4に、最適なコード生成において、実行
時に形状が確定する配列記述を最適なループに変換する
ためのループ融合をすべきか否かのループ融合判定をし
ているので、配列記述のループ展開後のループの形状を
より単純な形で表現することが可能になる。この結果、
実行時間の短縮が促進される。
【0070】さらに、本発明の配列記述の最適化制御方
法によれば、第5に、配列記述をループに変換する場合
に、上記のリスト形式で保持された情報から、最適なル
ープの形状を選択しているので、ループ融合判定の際に
も用いた配列の添字式の中から、ループの形状をより単
純に表現できる式が選択され、最適化レベルに依存した
最適な配列記述のループ展開が実現される。
【0071】要約すれば、本発明では、FORTRAN 90等の
新しい言語仕様を利用することにより、従来不可能であ
ったループの融合が可能となる。さらに、最適化オプシ
ョン、および式の複雑さから動的に最適化実施範囲を決
定することにより、最適化レベルに応じた翻訳時間、翻
訳領域、および実行時間の実現を可能にしている。さら
に、上記のループ融合を施したループの展開時に、初期
値、終値、および増分値等に対し、より最適なループの
形状設定も可能となる。したがって、FORTRAN90固有の
配列記述に対して、ユーザが与える最適化レベルに依存
した最適コードを生成することができる。このため、本
発明は、コンパイラ等の性能向上に大きく貢献できる発
明となり得る。
【図面の簡単な説明】
【図1】本発明の原理構成を示すブロック図である。
【図2】本発明の最適化制御を実現するための実施例の
構成を示すブロック図である。
【図3】本発明の実施例の概略的な動作を説明するため
の流れ図である。
【図4】図3における配列記述の検出と最適化実施範囲
の見積りの処理手順の詳細を説明するための流れ図(そ
の1)である。
【図5】図3における配列記述の検出と最適化実施範囲
の見積りの処理手順の詳細を説明するための流れ図(そ
の2)である。
【図6】図3における配列記述の形状を表現する情報の
取り出しの処理手順の詳細を説明するための流れ図(そ
の1)である。
【図7】図3における配列記述の形状を表現する情報の
取り出しの処理手順の詳細を説明するための流れ図(そ
の2)である。
【図8】図6におけるリストの作成と登録の処理手順の
詳細を説明するための流れ図である。
【図9】図8の処理手順により作成または登録されるリ
スト構造の一例を示す図である。
【図10】ソーステキスト入力により作成されるリスト
構造の一例を示す図である。
【図11】本発明の最適化制御を実現するための具体的
な一例を示すブロック図である。
【符号の説明】
1…テキスト 2…最適化実施範囲判定手段 3…最適化レベル情報保持部 4…次元数/配列数情報保持部 5…配列記述形状情報抽出手段 6…共通式認識手段 7…ループ融合判定処理手段 8…最適なコード 10…入力部 20…CPU 30…記憶部 50…最適化制御部 80…出力部

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 入力となるテキスト(1)を読み込み、
    該テキスト(1)の配列を操作する文からなる複数の配
    列記述に対して最適なコード生成を行うための配列記述
    の最適化制御装置において、 予め定められた最適化のレベル、前記配列記述の配列の
    次元数、および各次元の配列数に基づき、前記配列記述
    に関する最適化実施範囲を判定する最適化実施範囲判定
    手段(2)を備え、該最適化実施範囲判定手段(2)に
    より判定された最適化実施範囲内で前記の最適なコード
    が出力されることを特徴とする配列記述の最適化制御装
    置。
  2. 【請求項2】 前記配列記述の最適化制御装置が、さら
    に、 前記最適化実施範囲内で、前記配列記述の形状を表現す
    る情報を抽出する配列記述形状情報抽出手段(5)を備
    え、該配列記述形状情報抽出手段(5)により抽出され
    た情報がリスト形式で保持される請求項1記載の最適化
    制御装置。
  3. 【請求項3】 前記配列記述の最適化制御装置が、さら
    に、 前記リスト形式で保持された前記情報から、各配列記述
    に対し共通の式を検出して該各配列記述に対し共用とな
    る前記情報を認識するための共通式認識手段(6)を備
    える請求項2記載の最適化制御装置。
  4. 【請求項4】 前記共通式認識手段(6)により検出さ
    れる結果をもとに、前記の最適なコード生成において、
    実行時に形状が確定する前記配列記述に対し、該配列記
    述を最適なループに変換するためのループ融合をすべき
    か否かのループ融合判定処理がなされる請求項3記載の
    最適化制御装置。
  5. 【請求項5】 前記配列記述をループに変換する場合
    に、前記リスト形式で保持された前記情報から、最適な
    ループの形状が選択される請求項3記載の最適化制御装
    置。
  6. 【請求項6】 入力となるテキストを読み込み、該テキ
    ストの配列を操作する文からなる複数の配列記述に対し
    て最適なコード生成を行うための配列記述の最適化制御
    方法において、 予め定められた最適化のレベル、前記配列記述の配列の
    次元数、および各次元の配列数に基づき、前記配列記述
    に関する最適化実施範囲を判定するステップを有し、該
    判定された最適化実施範囲内で前記の最適なコードを出
    力することを特徴とする配列記述の最適化制御方法。
  7. 【請求項7】 前記最適化実施範囲内で、前記配列記述
    の形状を表現する情報を抽出するステップを有し、該抽
    出された情報をリスト形式で保持する請求項6記載の最
    適化制御方法。
  8. 【請求項8】 前記リスト形式で保持された前記情報か
    ら、各配列記述に対し共通の式を検出して該各配列記述
    に対し共用となる前記情報を認識するステップを有する
    請求項7記載の最適化制御方法。
  9. 【請求項9】 前記共通の式を検出した結果をもとに、
    前記の最適なコード生成において、実行時に形状が確定
    する前記配列記述に対し、該配列記述を最適なループに
    変換するためのループ融合をすべきか否かのループ融合
    判定処理を遂行する請求項8記載の最適化制御方法。
  10. 【請求項10】 前記配列記述をループに変換する場合
    に、前記リスト形式で保持された前記情報から、最適な
    ループの形状を選択する請求項8記載の最適化制御方
    法。
JP21714495A 1995-08-25 1995-08-25 コンピュータシステムおよびコード生成最適化制御方法 Expired - Fee Related JP3695798B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP21714495A JP3695798B2 (ja) 1995-08-25 1995-08-25 コンピュータシステムおよびコード生成最適化制御方法
US08/703,063 US6074433A (en) 1995-08-25 1996-08-26 Optimization control apparatus and optimization control method for array descriptions
GB9618443A GB2317031B (en) 1995-08-25 1996-09-04 optimization control apparatus and optimization control method for array descriptions

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP21714495A JP3695798B2 (ja) 1995-08-25 1995-08-25 コンピュータシステムおよびコード生成最適化制御方法
GB9618443A GB2317031B (en) 1995-08-25 1996-09-04 optimization control apparatus and optimization control method for array descriptions

Publications (2)

Publication Number Publication Date
JPH0962514A true JPH0962514A (ja) 1997-03-07
JP3695798B2 JP3695798B2 (ja) 2005-09-14

Family

ID=26309973

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21714495A Expired - Fee Related JP3695798B2 (ja) 1995-08-25 1995-08-25 コンピュータシステムおよびコード生成最適化制御方法

Country Status (2)

Country Link
JP (1) JP3695798B2 (ja)
GB (1) GB2317031B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181735B1 (en) 1999-10-27 2007-02-20 Fujitsu Limited Method and apparatus for analyzing program based on rules of programming language before optimization in compiler
JP2009211458A (ja) * 2008-03-05 2009-09-17 Nec Corp コンパイラ、変数最適化装置、方法、及び、プログラム
WO2021182781A1 (ko) * 2020-03-13 2021-09-16 성재모 매트릭스 연산 방법 및 그 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293631A (en) * 1991-08-06 1994-03-08 Hewlett-Packard Company Analysis and optimization of array variables in compiler for instruction level parallel processor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181735B1 (en) 1999-10-27 2007-02-20 Fujitsu Limited Method and apparatus for analyzing program based on rules of programming language before optimization in compiler
JP2009211458A (ja) * 2008-03-05 2009-09-17 Nec Corp コンパイラ、変数最適化装置、方法、及び、プログラム
WO2021182781A1 (ko) * 2020-03-13 2021-09-16 성재모 매트릭스 연산 방법 및 그 장치

Also Published As

Publication number Publication date
GB9618443D0 (en) 1996-10-16
GB2317031B (en) 2000-01-19
JP3695798B2 (ja) 2005-09-14
GB2317031A (en) 1998-03-11

Similar Documents

Publication Publication Date Title
JP2755154B2 (ja) プログラム変換処理装置およびプログラム変換処理方法
US7181386B2 (en) Systems and methods for generating weighted finite-state automata representing grammars
US8839210B2 (en) Program performance analysis apparatus
US5274812A (en) Method of compiling source code into vectorized object code by performing a one-dimensional analysis on each dimension of a multi-dimensional array within a loop
EP1331630A2 (en) Systems and methods for generating weighted finite-state automata representing grammars
JPH1097430A (ja) 最適化のためにアセンブリコードルーチンをソースコードルーチンに挿入する方法およびそのシステム
US20170017475A1 (en) Information processing apparatus and compile method
US20040154009A1 (en) Structuring program code
US6425124B1 (en) Resource allocation device for reducing the size and run time of a machine language program
CN100377089C (zh) 二进制翻译中经由跳转表的多目标分支语句的识别方法
US5845127A (en) Language processor and language processing method to generate object programs by compiling source programs
Lefebvre An optimized parsing algorithm well suited to RNA folding.
CN116560666B (zh) 基于多层级代码生成的ai前端统一计算方法、装置及介质
JP4194680B2 (ja) データ処理装置及びその方法、及びそのプログラムを記憶した記憶媒体
JPH0962514A (ja) 配列記述の最適化制御装置および制御方法
US7246056B1 (en) Runtime parameter mapping for system simulation
US6055529A (en) Method, apparatus and computer program product for extracting known patterns from a data structure in a single pass
JPH0756745A (ja) 言語処理プログラムのコンパイラ処理方式
KR100345401B1 (ko) 바이너리 프로그램 변환 장치 및 그 방법
WO2024047997A1 (ja) 文書分析装置、及び文書分析用プログラム
KR19990047339A (ko) 자동 객체 추출방법
CN116521174A (zh) 一种代码自动生成过程中动态抽象语法树的构建及分析方法
JP2003162518A (ja) 文書種別判定方法
Di Vito Manip User’s Guide, Version 1.1
KR20220046372A (ko) 문장 번역을 위한 네트워크 선정 장치 및 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050322

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050628

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080708

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090708

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100708

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100708

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110708

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110708

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120708

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120708

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130708

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees