JPH053030B2 - - Google Patents

Info

Publication number
JPH053030B2
JPH053030B2 JP61004742A JP474286A JPH053030B2 JP H053030 B2 JPH053030 B2 JP H053030B2 JP 61004742 A JP61004742 A JP 61004742A JP 474286 A JP474286 A JP 474286A JP H053030 B2 JPH053030 B2 JP H053030B2
Authority
JP
Japan
Prior art keywords
vector
loops
unit
processing
execution order
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 - Lifetime
Application number
JP61004742A
Other languages
English (en)
Other versions
JPS62163168A (ja
Inventor
Morie Sagawa
Masaki Aoki
Hiroshi Nagakura
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 JP474286A priority Critical patent/JPS62163168A/ja
Publication of JPS62163168A publication Critical patent/JPS62163168A/ja
Publication of JPH053030B2 publication Critical patent/JPH053030B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
〔概要〕 ベクトル処理機能をもつシステムにおいて、ソ
ースプログラム中のDOループの順序を可能な限
り入れ替えて複数のDOループを1つに融合さ
せ、ベクトル処理時の多重化度を上げるなどの効
率化を図る。 〔産業上の利用分野〕 本発明は、ベクトル処理機能をもつ情報処理装
置に関するものであり、特にプログラム中のDO
ループをベクトル処理するための方式に関する。 〔従来の技術〕 第5図は、本発明が対象とする従来のベクトル
処理機能をもつ情報処理装置の一般的なシステム
構成を示す。 図において、51は主記憶装置、52は記録制
御装置、53はチヤネルプロセツサ、54は外部
記憶装置、55はベクトル処理装置、56はスカ
ラユニツト、57はベクトルユニツト、58はベ
クトルレジスタ、59はパイプライン機構を表
す。 パイプライン機構59は、たとえば2本のメモ
リアクセスパイプライン、1本の加/減算パイプ
ライン、1本の乗算パイプライン、1本の除算パ
イプライン、1本のマスクパイプラインによつて
構成される。各パイプラインは、多重並行して動
作することができる。 ベクトル処理装置55のスカラユニツト56
は、プログラムの命令を順次フエツチし、それが
スカラ命令であれば自ユニツトで実行し、ベクト
ル命令であればベクトルユニツト57に処理を依
頼する。 ベクトルユニツト57は、ベクトル命令にした
がつて、処理に必要なベクトルデータ(オペラン
ド)を、主記憶装置51から記憶制御装置52を
介してロードパイプラインによりベクトルレジス
タ58にロードし、また加算/減算、乗算、除算
等の演算パイプラインにより演算を実行して結果
をベクトルレジスタ58に格納し、またストアパ
イプラインによりベクトルレジスタ58のベクト
ルデータを主記憶装置51へストアする動作を行
う。 ベクトルデータのロード/ストアにはかなりの
時間がかかるため、ベクトルレジスタに設定され
たベクトルデータを使用するベクトル命令は可能
な限りまとめて適切にチエイニング(命令実行の
スケジユーリング)することが望ましい。また各
パイプラインを多重化(並列実行)させる場合に
は、ベクトル長が等しいことが必要である。 ベクトル命令には、ベクトルロード、ベクトル
ストア、ベクトル加算等があり、それぞれ1つの
命令が発行されると、指定されたベクトル長
(VL)のベクトルデータの各エレメントに対し
て、指定されている同一の操作が繰り返し適用さ
れる。 次に、マスク付きベクトル加算命令の例につい
て説明する。 VAD(Vector ADd)〔with make〕 Ci=ai+bi:mi=on ci:mi=0i=1〜l これは、次式 (a1,a2,……,al)+(b1,b2,……,bl) →(c1,c2,……,cl)〔:(m1,m2,……,
ml)〕 で示されるように、l個のベクトルエレメントを
もつオペランドaiとbiについて、マスクmiがON
のときにのみai+biを計算し、結果をCiとする命
令である。 一般に第5図に示されるようなベクトル処理機
能をもつ情報処理装置でプログラムを実行する場
合には、たとえばFORTRANで記述されたソー
スプログラムをコンパイル処理する際に、DOル
ープのうち可能なものをベクトル処理に変換する
ベクトル化を行う。 第6図は、このようなベクトル処理装置用の
FORTRANコンパイラ処理機構の構成を示した
ものである。 図において、61は外部記憶装置に格納された
ソースプログラム、62は情報処理装置における
コンパイラ処理機構、63はソース解釈部、64
は記憶域割付部、65はベクトル化部、66は最
適化部、67はレジスタ使用決定部、68は目的
プログラム生成部、69は外部記憶装置に格納さ
れた目的プログラムを表す。 ソースプログラム61が入力されると、コンパ
イラ処理機構62のソース解釈部63は文解釈を
行い、中間コードに展開する。次に記憶域割付部
64は、プログラム中に出現する各種データに記
憶域内番地に割り当てる。 ベクトル化部65は、プログラム中のループ構
造を検出し、その際並列実行(多重化処理)可能
部分を認識するとともに、ベクトル命令に変換す
るための中間コード変更を行う。 最適化部66は、中間コードのレベルでベクト
ル処理装置の機能を有効に利用して処理時間を短
縮させる最適化を行う。 レジスタ使用決定部67は、中間コードに現れ
たデータに実際の資源(レジスタ)を割り当て
る。 目的プログラム生成部68は、中間コードにし
たがつて機械命令語の目的プログラム69を生成
し、出力する。その際、機械命令語レベルでの最
適化を行う。 ソースプログラムと中間コードとの対応例を次
に示す。
【表】 ベクトル処理装置では、ベクトルユニツトのパ
イプライン機構の各パイプラインは、設定された
ベクトルデータのエレメント数、すなわちベクト
ル長VLにしたがつて動作する。 ここであるベクトル長VLを1回設定したとき
に、そのVLを使用して実行されるベクトル命令
の範囲は、VL制御範囲(VLR)と呼ばれる。次
にVL制御範囲の例を示す。
〔発明が解決しようとする問題点〕
従来のベクトル処理方式では、ソースプログラ
ム中の複数のDOループ間に一部にでも実行順序
関係が存在している場合には、ベクトル長が同じ
でも、DOループを融合させることができなかつ
た。このため、最適化の処理単位となるVL制御
範囲が小さいままとなり、同一式の重複演算を除
去したり、パイプラインにおける多重化処理など
の実行を効率化する最適化の効果を十分に上げる
ことができないという問題があつた。 〔問題点を解決するための手段〕 本発明は、ソースプログラムのコンパイル処理
時に、DOループの実行順序関係を破壊しない範
囲でDOループを入れ替えることにより、ベクト
ル化処理時の多重度を向上させるものである。 それによる本発明の構成は、ベクトル処理機能
をそなえた情報処理装置において、ソースプログ
ラム中のDOループのうち可能なものをベクトル
処理化するベクトル化部15と、最適化処理を行
う最適化部16とを含み、目的プログラムを生成
するコンパイラ処理機構12を設け、上記最適化
部16は、さらに、ソースプログラム中のDOル
ープのうち同じベクトル長をもつ融合可能なもの
同士を検出する融合可能DOループ検出部161
と、DOループ間の実行順序関係を調べる実行順
序関係検出部162と、上記検出された融合可能
DOループおよび実行順序関係に基づいて、実行
順序関係が保持される範囲で融合可能DOループ
同士が隣接するようにソースプログラム中のDO
ループの位置を入れ替えるDOループ入れ替え部
163と、をそなえ、ベクトル処理を最適化する
ことを特徴とする。 第1図に本発明の原理的構成を示す。 図において、11はソースプログラム、12は
コンパイラ処理機構、13はソース解釈部、15
はベクトル化部、16は最適化部、161は融合
可能DOループ検出部、162は実行順序関係検
出部、163はDOループ入れ替え部、18は目
的プログラム生成部、19は目的プログラムであ
る。 なお、第1図に示されている本発明の構成は、
第6図に示されている従来のコンパイラ処理機構
62の構成63ないし68を一部省略して、1
3,15,16,18として示すとともに、本発
明により改良が加えられた最適化部16,66の
内部構成を161,162,163として示した
ものである。 ソース解釈部13は、入力されたソースプログ
ラム11を解釈し、中間コード列を生成する。 ベクトル化部15は、中間コード列中のループ
構造を検出し、そのうちベクトル化可能なものに
ついて、ベクトル化のための中間コード変更を行
う。 最適化部16において、融合可能DOループ検
出部161は、ベクトル化可能なDOループの中
から、さらに融合可能な条件であるベクトル長
VLが等しく、かつ実行順序関係が定まつていな
いものを探索し、それらのDOループについて組
を作成する。 次に実行順序関係検出部162は、融合可能な
条件を満たすDOループについて、それと時系列
上での実行順序が定まつているDOループを検出
し、それらの組を作成する。 DOループ入れ替え部163は、融合可能な
DOループ同士をそれが他のDOループに対して
実行順序関係を破壊しないで移動できるかどうか
を調べ、可能な場合には、DOループの入れ替え
を中間コード上で行う。 このようにして、ベクトル化について最適化さ
れた中間コード列に基づき、目的プログラム生成
部18は目的プログラム19を生成し出力する。 〔作用〕 第2図により本発明の作用を説明する。 第2図のAは本発明による最適化処理前のプロ
グラム、第2図のBは最適化処理後のプログラム
である。DO1,DO2,DO3はDOループを表
す。 第1図の融合可能DOループ検出部161は、
第2図にA中の各DOループを調べ、ベクトル長
VLが等しいDOループを検出する。これらはVL
=100をもつDO1とDO3であり、組として識別
される。 次に、第1図の実行順序関係検出部162は、
第2図のA中の各DOループについて実行順序関
係の有無を調べる。この場合、実行順序関係は、
2重矢線で示されており、DO1とDO2との間
に実行順序関係が存在することが識別される。 次に、第1図のDOループ入れ替え部163
は、融合可能なDOループを隣接させるため、
DO3をDO1の下に移動し、それとともに、DO
1の後に実行しなければならないDO2をDO3
の下に移動する。 これにより、第2図のBに示すようにDOルー
プ間の実行順序関係を破壊することなく、DO1
およびDO3の2つのDOループの融合処理化が
実現される。すなわち、Aの状態では、DO1と
DO3とを融合させることができないが、Bの状
態では、DO1とDO3の各ベクトル処理をチエ
イニングする際、ベクトルデータの参照/定義関
係によつては、多重化処理とする可能性を与える
ことができる。 〔実施例〕 次に、第1図の構成に基づく本発明の詳細を実
施例にしたがつて説明する。なお以下の説明で
は、DOループの代わりに、実際のコンパイル処
理で取り扱われるVL制御範囲を使用する。 ここで各VL制御範囲をVLRi(i=1、2、…
…)で表すものとして、たとえば同じVL=49を
もつVLR1とVLR2との間に実行順序関係があ
り、VLR2に対してVLR1の定義/参照関係が
先行しているものとしたとき、第3図aのように
表すものとする。なお矢印は実行順序を表す。 ここでVLR1ないしVLR6が第3図bに示す
ようなものであつた場合、第1図の融合可能DO
ループ検出部161は、この中から同一ベクトル
長VLのVLRを検出する。これらは次の3つのグ
ループに分けられる。 (a) グループ1=VLR1,VLR4 (b) グループ2=VLR2,VLR5 (c) グループ3=VLR3,VLR6 次に、第1図の実行順序関係検出部162は、
DOループ内の全配列を調査し、次のような2つ
の実行順序関係のグループがあることを識別す
る。 (a) VLR1→VLR2→VLR3 (b) VLR4→VLR5→VLR6 次に第1図のDOループ入れ替え部163は、
上記したベクトル長によるグループと実行順序関
係によるグループとを総合し、たとえば実行順序
関係を損なわずに融合できるDOループの数が最
大となるVLRの流れを求め、第4図に示すAか
らBへの入れ替えを実行する。 このようにして、(VLR1,VLR4)→
(VLR2,VLR5)→(VLR3,VLR6)のよ
うに、融合と実行順序関係とを両方とも満足させ
たVLRの流れが得られる。このような最適化処
理は、任意のDOループ数と任意の実行順序関係
について適用できることは明らかである。 〔発明の効果〕 本発明によるDOループを入れ替えて融合する
ことにより、DOループ内の演算数が多くなるた
め、パイプラインの効率化や、共通の式を単一化
する最適化が可能となり、ベクトル処理装置の実
行効率を向上させることができる。
【図面の簡単な説明】
第1図は本発明の原理的構成図、第2図は本発
明の作用の説明図、第3図は本発明の実施例動作
を説明するためのプログラムにおけるVL制御範
囲の例を示す説明図、第4図は本発明の実施例動
作におけるVLRの入れ替え処理例を示す説明図、
第5図はベクトル処理機能をもつ情報処理装置の
構成図、第6図はコンパイラ処理機構の構成図、
第7図は異なるVLR間における配列の参照/更
新と実行順序の説明図である。 第1図中、11:ソースプログラム、12:コ
ンパイラ処理機構、13:ソース解釈部、16:
最適化部、161:融合可能DOループ検出部、
162:実行順序関係検出部、163:DOルー
プ入れ替え部、18:目的プログラム生成部、1
9:目的プログラム。

Claims (1)

  1. 【特許請求の範囲】 1 ベクトル処理機能をそなえた情報処理装置に
    おいて、 ソースプログラム中のDOループのうち可能な
    ものをベクトル処理化するベクトル化部15と、
    最適化処理を行う最適化部16とを含み、目的プ
    ログラムを生成するコンパイラ処理機構12を設
    け、 上記最適化部16は、さらに、ソースプログラ
    ム中のDOループのうち同じベクトル長をもつ融
    合可能なもの同士を検出する融合可能DOループ
    検出部161と、 DOループ間の実行順序関係を調べる実行順序
    関係検出部162と、 上記検出された融合可能DOループおよび実行
    順序関係に基づいて、実行順序関係が保持される
    範囲で融合可能DOループ同士が隣接するように
    ソースプログラム中のDOループの位置を入れ替
    えるDOループ入れ替え部163と、をそなえ、
    ベクトル処理を最適化することを特徴とするベク
    トル処理方式。
JP474286A 1986-01-13 1986-01-13 ベクトル処理方式 Granted JPS62163168A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP474286A JPS62163168A (ja) 1986-01-13 1986-01-13 ベクトル処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP474286A JPS62163168A (ja) 1986-01-13 1986-01-13 ベクトル処理方式

Publications (2)

Publication Number Publication Date
JPS62163168A JPS62163168A (ja) 1987-07-18
JPH053030B2 true JPH053030B2 (ja) 1993-01-13

Family

ID=11592367

Family Applications (1)

Application Number Title Priority Date Filing Date
JP474286A Granted JPS62163168A (ja) 1986-01-13 1986-01-13 ベクトル処理方式

Country Status (1)

Country Link
JP (1) JPS62163168A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2844492B1 (fr) 2002-09-12 2005-06-10 Valeo Systemes Dessuyage Agencement de fixation d'un balai d'essuie glace sur un bras
JP6555005B2 (ja) * 2015-08-21 2019-08-07 日本電気株式会社 最適化装置、方法およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58149567A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd ベクトル・レングス制御範囲融合処理方式

Also Published As

Publication number Publication date
JPS62163168A (ja) 1987-07-18

Similar Documents

Publication Publication Date Title
US5303377A (en) Method for compiling computer instructions for increasing instruction cache efficiency
US4251861A (en) Cellular network of processors
KR100290269B1 (ko) 추론적명령에있어서의예외처리
US5619680A (en) Methods and apparatus for concurrent execution of serial computing instructions using combinatorial architecture for program partitioning
US5339429A (en) Parallel processing system and compiling method used therefor
US6721943B2 (en) Compile-time memory coalescing for dynamic arrays
EP0515016A2 (en) Instruction scheduler for a computer
US5247696A (en) Method for compiling loops having recursive equations by detecting and correcting recurring data points before storing the result to memory
Chamberlin The" single-assignment" approach to parallel processing
Stevens Jr CFD—a Fortran-like language for the Illiac IV
JPH04336378A (ja) 情報処理装置
JPH053030B2 (ja)
Foley et al. Efficient partitioning of fragment shaders for multiple-output hardware
Dhamdhere et al. Characterization of program loops in code optimization
Amamiya Data flow computing and parallel reduction machine
Nicolau Loop quantization: Unwinding for fine-grain parallelism exploitation
JPH02132525A (ja) コンパイル方法
JPS6319906B2 (ja)
JPH01123328A (ja) 計算機方式
JPH046020B2 (ja)
Makino et al. LiLFeS—practical unification-based programming system for typed feature structures
Cui et al. Multithreaded parallel computer model with performance evaluation
Reif Code motion
JPS6321946B2 (ja)
Wang Enhancing concurrent program execution with eager evaluation

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term