JP2564904B2 - プログラム最適化処理方法 - Google Patents

プログラム最適化処理方法

Info

Publication number
JP2564904B2
JP2564904B2 JP63200741A JP20074188A JP2564904B2 JP 2564904 B2 JP2564904 B2 JP 2564904B2 JP 63200741 A JP63200741 A JP 63200741A JP 20074188 A JP20074188 A JP 20074188A JP 2564904 B2 JP2564904 B2 JP 2564904B2
Authority
JP
Japan
Prior art keywords
block
program
array data
processing
blocks
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
JP63200741A
Other languages
English (en)
Other versions
JPH0250257A (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 JP63200741A priority Critical patent/JP2564904B2/ja
Publication of JPH0250257A publication Critical patent/JPH0250257A/ja
Application granted granted Critical
Publication of JP2564904B2 publication Critical patent/JP2564904B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔概 要〕 計算機における、原始プログラムからベクトル化目的
プログラムを生成するための、最適化処理に関し、 最大/最小値を求めるベクトル命令の適用を可能にし
て、ベクトル化の対象を拡大することのできるプログラ
ム最適化処理方法を目的とし、 計算機の原始プログラムを解析して、該原始プログラ
ムの配列データの添字を制御変数とする最内ループにつ
いて生成され、複数のブロックに分割された中間テキス
トから、ベクトル化した目的プログラムを生成するため
の処理において、該配列データに関する定義、参照を行
う第1の該ブロックと、該第1のブロックに続くブロッ
クであって該配列データを再び参照する第2のブロック
を検出し、該第1及び第2のブロックにわたって該配列
データの該定義内容を保持するようにレジスタを割付け
し、該配列データの参照処理を該レジスタで置き換える
ように構成する 〔産業上の利用分野〕 本発明は、計算機における、原始プログラムからベク
トル化目的プログラムを生成するために、プログラムを
最適化する処理方法に関する。
ベクトル処理装置は、配列データに関する演算をいわ
ゆるパイプライン制御方式によって連続的に処理するこ
とにより高速化される処理装置であり、ベクトル処理装
置を利用するシステムでは、コンパイラによる原始プロ
グラムの翻訳処理において、所要の部分のプログラムを
ベクトル処理装置で実行するように、ベクトル命令で構
成した目的プログラムにするベクトルを行う。
〔従来の技術と発明が解決しようとする課題〕
ベクトル処理装置で処理されるべきプログラムは、例
えばFORTRANプログラミング言語で記述された原始プロ
グラムにおいて、公知のいわゆるDOループとして示され
る部分であり、このループの繰り返しを制御する制御変
数であるDO変換によって識別されるループ内の配列デー
タを、各要素とするようにベクトルデータを構成するこ
とによりベクトル化を行う。又、このようなDOループの
中に更にDOループが入れ子になっている構成の、いわゆ
る多重DOループのプログラムの場合には、必要な場合に
は最内側のループの中のみにプログラムのベクトルデー
タい関する実行文があるように多重ループを構成して、
その最内ループのDO変数によってベクトル化する。
原始プログラムの翻訳処理を行うコンパイラは、先ず
原始プログラムを通常のいわゆるスカラデータのプログ
ラムとして処理し、原始プログラムを解析して中間テキ
スト形式のプログラムを生成し、このプログラムについ
て最適化処理等を行った後、スカラ又はベクトル化した
目的プログラムを生成する。こゝで中間テキストはプロ
グラムの構造に基づいてブロックに分けられ、ベクトル
化の処理も原則としてブロック単位に行われる。
第2図はFORTRANで記述されたDOループの原始プログ
ラムの一例であり、公知のようにDO文からラベル「10」
の文までをループの範囲として、DO文の制御変数として
指定されている変数Iの値を1からNまで1づつ増加さ
せて、ループの範囲の実行を繰り返す。ループの中は配
列データA(I)に「式」の結果を代入し、判定文「IF
……」により、変数AM(ループの外で初期値を設定され
ているものとする)とA(I)を比較してAMがA(I)
より小さければ、AMにA(I)を代入し、小さくなけれ
ば何もしないで次の繰り返しに進むプログラムであり、
最初の実行文(本例は代入分「A(I)=式」)で定義
される値の最大値を求めるための典型的なプログラムで
ある。最小値を求める場合も、判定条件が異なる他は同
様の構成になる。
このような判定文を含むプログラムは、中間テキスト
の生成において、第3図に示すように判定文による判定
処理のブロックとその判定結果によって選択される処理
のブロックとに分割される。第3図は説明のために、中
間テキストの概念的な内容とブロッ構成を示す図であ
り、第3図(a)のブロック1に判定文までの処理のテ
キストが生成され、このブロックに作業用に導入された
レジスタTR1に設定した式の結果をA(I)にセットす
ることにより、A(I)を定義し、その内容を参照して
所要の判定を行い、判定結果の一方は例えば処理の無い
ブローク3への分岐となり、判定結果の他方は続くブロ
ック2に進む。
このブロック1は第3図(b)のブロック4に示すよ
うに、A(I)の参照をレジスタTR1の参照に置き換え
る最適化が行われ、各ブロックについて可能な範囲のベ
クトル化が行われる。しかちブロックが分割されている
ので、ブロックにまたがる処理は行われず、従って最大
値又は最小値を求めるプログラムであることを検出でき
ないので、ベクトル処理装置に装備されているベクトル
データの最大値又は最小値を求めるベクトル命令を適用
してベクトル化することができない。
本発明は、前記の場合に最大値又は最小値を求めるベ
クトル命令の適用を可能にして、ベクトル化の対象を拡
大することのできるプログラム最適化処理方法を目的と
する。
〔課題を解決するための手段〕
第1図は、本発明の構成を示す処理の流れ図である。
図はベクトル化した目的プログラムを生成するための
コンパイラ等における最内ループ内の中間テキストのベ
クトル化処理前の最適化処理を示し、10〜12は処理ステ
ップである。
〔作 用〕
計算機の原始プログラムを解析して、原始プログラム
の配列データの添字を制御変数とする最内ループについ
て生成され、複数のブロックに分割された中間テキスト
から、ベクトル化した目的プログラムを生成する場合
に、コンパイラは第1図の処理ステップ10で配列データ
に関する定義と、それの参照とが続いている第1のブロ
ックを検出し、そのようなブロックがある場合に処理ス
テップ11でそのブロックに続くブロックであって同じ配
列データを再び参照する第2のブロックを検出する。
前記第1、第2のブロックがあった場合には、処理ス
テップ12で第1及び第2のブロックにわたって前記の配
列データの定義内容を保持するレジスタを割付けして、
配列データの参照をそのレジスタの参照に置換する最適
化を行い、その後そのベクトル化処理に入る。
以上の処理方法により、ブロックに共通のレジスタに
よって2ブロック間が関係付けられ、最大値又は最小値
を求めるベクトル命令を適用したベクトル化が可能にな
る。
〔実施例〕
コンパイラはベクトル化のための最適化処理におい
て、例えば第3図(b)の中間テキストを走査して、第
1図の処理ステップ10で、最内ループの制御変数を添字
変数とするベクトル化の対象となる配列データについ
て、定義とそれに続いて参照のステップのあるブローク
を検出し、もしそのようなブロックが無ければ、この処
理を終わる。
第3図(b)のブロック4のように、定義、参照のス
テップが続くブロックがあった場合には、処理ステップ
11で次のブロック2を走査し、前ブロックで定義し、参
照する同じ配列データについて参照が再び行われること
を検出し、もしそのような参照が無ければ、この処理を
終わる。
前記のような再参照がある場合には、処理ステップ12
で、ブロック4、ブロック2にまたがって共通に使用さ
れるレジスタ(共通レジスタとする)を割付けし、第3
図(c)に例示するブロック5のように、共通レジスタ
NR2によってブロック4に局部的なレジスタTR1を置換す
ると共に、ブロック6のようにブロック2の配列データ
A(I)参照もレジスタNR2の参照に置き換えて処理を
終わる。
ベクトル化処理においては、NR2によって関係付けら
れたブロック5、ブロック6を通して、ベクトル化を行
い、同じベクトルデータについて定義・参照・参照のパ
ターンがあることにより、2番目の参照における判定条
件に従って、この部分を最大値又は最小値を求めるベク
トル命令に対応させるように処理する。
(発明の効果〕 以上の説明から明らかなように本発明によれば、計算
機における、原始プログラムからベクトル化目的プログ
ラムを生成するための、最適化処理において、最大/最
小値を求めるベクトル命令の適用を可能にして、ベクト
ル化の対象を拡大することができるので、目的プログラ
ムの実行効率等を改善するという著しい工業的効果があ
る。
【図面の簡単な説明】
第1図は本発明の構成を示す処理の流れ図、 第2図は原始プログラム例を示す図、 第3図は中間テキストの説明図 である。 図において、 1〜6はブロック、10〜12は処理ステップを示す。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】計算機の原始プログラムを解析して、該原
    始プログラムの配列データの添字を制御変数とする最内
    ループについて生成され、複数のブロックに分割された
    中間テキストから、ベクトル化した目的プログラムを生
    成するための処理において、 該配列データに関する定義、参照を行う第1の該ブロッ
    クと、該第1のブロックに続くブロックであって該配列
    データを再び参照する第2のブロックを検出し、 該第1及び第2のブロックにわたって該配列データの該
    定義内容を保持するようにレジスタを割付けし、該配列
    データの参照処理を該レジスタで置き換えるように構成
    されていることを特徴とするプログラム最適化処理方
    法。
JP63200741A 1988-08-11 1988-08-11 プログラム最適化処理方法 Expired - Fee Related JP2564904B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63200741A JP2564904B2 (ja) 1988-08-11 1988-08-11 プログラム最適化処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63200741A JP2564904B2 (ja) 1988-08-11 1988-08-11 プログラム最適化処理方法

Publications (2)

Publication Number Publication Date
JPH0250257A JPH0250257A (ja) 1990-02-20
JP2564904B2 true JP2564904B2 (ja) 1996-12-18

Family

ID=16429398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63200741A Expired - Fee Related JP2564904B2 (ja) 1988-08-11 1988-08-11 プログラム最適化処理方法

Country Status (1)

Country Link
JP (1) JP2564904B2 (ja)

Also Published As

Publication number Publication date
JPH0250257A (ja) 1990-02-20

Similar Documents

Publication Publication Date Title
US4821181A (en) Method for converting a source program of high level language statement into an object program for a vector processor
US5355494A (en) Compiler for performing incremental live variable analysis for data-parallel programs
JP3317825B2 (ja) ループ最適化翻訳処理方法
JPH0814817B2 (ja) 自動ベクトル化方法
JPH06103463B2 (ja) コード生成方法
JPS63304325A (ja) 並列化コンパイル方法
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
JP2564904B2 (ja) プログラム最適化処理方法
JP3196625B2 (ja) 並列化コンパイル方式
JP2841403B2 (ja) ループ最適化処理方法
JP4819442B2 (ja) コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム
JP3289685B2 (ja) ベクトル演算方法
JP2748582B2 (ja) コンパイル処理装置
JPH0512033A (ja) 並列化コンパイル方式
JPH0527986A (ja) コンパイラの最適化方法および最適化装置
JPH0713962A (ja) コンパイラ装置
JP2539070B2 (ja) コンパイラ処理装置
JPH04286031A (ja) プログラムのループ並列実行処理方法
JPH03127127A (ja) コンピュータプログラムの最適化方法
JPH08263298A (ja) コンパイラ装置
JPS6297031A (ja) 仮数部のビツト数整合方式
JPS63285668A (ja) ベクトルロ−ド処理方法
JPH0337726A (ja) Case文最適化方式
JPH0831091B2 (ja) コンパイル処理方式
JPH056227B2 (ja)

Legal Events

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