JPH056712B2 - - Google Patents

Info

Publication number
JPH056712B2
JPH056712B2 JP59213315A JP21331584A JPH056712B2 JP H056712 B2 JPH056712 B2 JP H056712B2 JP 59213315 A JP59213315 A JP 59213315A JP 21331584 A JP21331584 A JP 21331584A JP H056712 B2 JPH056712 B2 JP H056712B2
Authority
JP
Japan
Prior art keywords
serialization
loops
processing
loop
instruction
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
JP59213315A
Other languages
English (en)
Other versions
JPS61100862A (ja
Inventor
Masaki Aoki
Hiroshi Nakada
Toshihiro Hirabayashi
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 JP21331584A priority Critical patent/JPS61100862A/ja
Publication of JPS61100862A publication Critical patent/JPS61100862A/ja
Publication of JPH056712B2 publication Critical patent/JPH056712B2/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)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、ベクトル計算機用のオブジエクト・
モジユールを作成するコンパイラ、特にベクトル
化された複数のDOループ間における命令の逐次
化処理方式に関するものである。
〔従来技術と問題点〕
ベクトル計算機においては、演算器の高速化と
その演算器に見合うデータの供給能力が、実行効
率向上の重要な鍵である。このため最近のベクト
ル計算機では、並列動作可能な2本のロード/ス
トア・パイプラインを用意し、データの供給能力
を高めている。しかし、複数のロード/ストア・
パイプラインが並列に動作することにより、メモ
リ・アクセス命令の同期化(逐次化と同義)が必
要となつてきた。ハードウエアでは、このような
同期化は困難であり、従来のベクトル計算機を含
むシステムでは、これをソフトウエアで実現して
いる。
ベクトル計算機のハードウエアでは、メモリ・
アクセス命令の同期化手段としては、下記のもの
がある。
(a) パイプラインID ベクトルのメモリ・アクセス命令が動作するパ
イプラインを指定するもので、順序関係を保証す
る必要のあるメモリ・アクセス命令を同一のパイ
プラインで動作させることにより同期を取ること
が出来る。
(b) 同期化命令(POST/WAIT命令) メモリ・アクセス命令間の順序関係を同期化命
令で保証する方法である。この方法を用いること
により、POST命令以前のメモリ・アクセス命令
とWAIT命令以後のメモリ・アクセス命令との
同期を取ることが出来る。
同期化処理においては、単にメモリ・アクセス
命令の順序関係を保証するだけではなく、実行性
能が低下しないように効率的に同期化を行う必要
がある。しかしながら、従来のコンパイラにおい
ては、ベクトル化された複数のDOループ間での
データの依存関係を考慮していなかつた。そのた
め、個々のDOループ単位にその終了時点で逐次
化処理が成されており、並列処理計算における実
行効率低下の一因となつていた。
〔発明の目的〕
本発明は、上記の考察に基づくものであつて、
複数のDOループ間において最適な命令の逐次化
処理を施し、実行性能を高めることを目的として
いる。
〔目的達成のための手段〕
そしてそのため、本発明の命令の逐次化方式は ベクトル化後の中間テキストについて逐次化処
理を施す逐次化処理部を持つコンパイラにおい
て、 上記逐次化処理部が、 制御の流れが一定のDOループ群を取り出す
処理と、 配列に出現する添字を参照して、DOループ
群内のデータ依存関係を調べる処理と、 DOループ間にベクトルとスカラの依存関係
があるか否かを調べる処理と、 で依存関係なしとされたことを条件に、パ
イプラインIDによる多重ループ内の逐次化を
施す処理と、 で依存関係ありとされたことを条件に、
DOループ単位に逐次化を施す処理と、 の逐次化の効率が良好か否かを調べる処理
と、 の処理で良好でないとされたことを条件
に、DOループ間の逐次化を施す処理と、 の逐次化の効率が良好か否かを調べる処理
と、 の処理で良好でないとされたことを条件
に、DOループ内の逐次化を施す処理と を行うように構成されている ことを特徴とするものである。
〔発明の実施例〕
以下、本発明を図面を参照しつつ説明する。第
1図は本発明のコンパイラの概要を示す図であ
る。このコンパイラは、ベクトル計算機を含むシ
ステムで実行されるオブジエクト・モジユールを
生成するVPコンパイラである。第1図において、
1はソース解析部、2は番地割付け部、3はベク
トル化部、4は逐次化処理部、5は中間テキスト
最適化部、6はレジスタ割付け部、7は命令生成
部をそれぞれ示している。ソース解析部1は、宣
言文で定義された配列や変数とソース・プログラ
ムの手続き部における取扱との矛盾を検出した
り、未定義の配列や変数が定義又は参照されてい
ないかを調べると共に、ソース・プログラムをブ
ロツク化したりするものである。番地割付け部2
は、データに対してメモリ領域を割付たり、配列
や変数に対して初期値を与えたりするものであ
る。ベクトル化部3は、DOループをベクトル命
令列に変換するものである。逐次化処理部4は、
命令の逐次化を行うものである。本発明は逐次化
処理部4に関するものである。中間テキスト最適
化部5は、ベクトル化後の最適化等を行うもので
ある。レジスタ割付け部6は、データをレジスタ
に割付ける等の処理を行うものである。命令生成
部7は、中間テキストを機械語命令に変換するも
のである。
要約すると、本発明は、ベクトル化後の中間テ
キスト(命令列)において、ベクトル化の技術
(配列に出現する添字の振るまい方)を応用して、
広範囲にデータ依存関係を把握し、データ依存関
係(逐次化に必要なデータ)に対してパイプライ
ンID又は同期化命令を用いて最適な命令の逐次
化処理を施すものである。
第2図は本発明の命令の逐次化処理の流れを示
す図である。
制御の流れが一定のDOループ群を取出す。
第3図は制御の流れが一定なDOループ群の例
を示すものであり、矢印A−B、C−D、E−
F等が制御の流れが一定なDOループ群をしめ
す。制御の流れが一定であるプログラム構造と
は、飛び出し/飛び込みがないプログラム構造
のことであり、最適化コンパイラ作成者にとり
自明のことである。
DOループ群内のデータ依存関係を把握す
る。即ち、複数次元の添字に対して重なりをチ
エツクスする。この際、上位次元の添字情報に
おいて、ずれが生じていれば下位次元において
重なりはない。例えば下記のようなプログラム
があつたとする。
DO 10 J=1,N DO 10 I=1,N A(I,J)=A(I,J−1)+S 10 CONTINUE この文章は下記のように展開される。
DO 10 I=1,N 10 A(I,1)=A(I,O)+S DO 10′I=1,N 10′A(I,2)=A(I,1)+S この例において、内側のDOループでは2次
元目の添字が異なるため、Aのメモリ・アクセ
スに対して重なりはない(逐次化不必要)。し
かし、外側のループを考えたときAのストアと
Aのロードで重なりが生じ、逐次化を行う必要
がある。
DOループ間にベクトルとスカラの依存関係
があるか否かを調べる。Yesのときはの処理
を行い、Noのときはの処理を行う。
多重DOループ内の逐次化を行う。、即ち外
側の回転によるデータの依存関係に基づき逐次
化を行う。
DOループ単位の逐次化を行う。逐次化は、
パイプラインID又は同期化命令により行われ
る。
効率をチエツクする。即ち、パイプライン
IDの密度を調べる。NGであればの処理を行
う。効率が良好か否かの判定基準は実行性能に
より決定され、ハードウエア毎の特性による。
DOループ間の逐次化を行う。即ち、最内次
元のみ(上から下のみ)のデータ依存関係に基
づいて逐次化を行う。逐次化は、パイプライン
ID又は同期化命令により行われる。
効率をチエツクする。NGであればの処理
を行う。効率が良好か否かの判定基準は実行性
能により決定され、ハードウエア毎の特性によ
る。
DOループ内の逐次化を行う。即ち、DOル
ープ内の閉じたデータ依存関係に基づいて逐次
化を行う。逐次化は、パイプラインID又は同
期化命令により行われる。
次に本発明を具体例で説明する。いま、下記の
ようなDOループ群を考える。
DO 10 J=2,100 DO 10 I=2,100 A(I,J)=A(I−1,J−1)+A(I,
J−1) 10 CONTINUE この例では、内側DOループの回転によるデー
タ依存関係はない。しかし、外側DOループの回
転により→、→なるデータ依存関係が生
ずる。なお、はA(I,J)を、はA(I−
1,J−1)を、はA(I,J−1)を示して
いる。この場合、広域的な範囲(外側のDOルー
プのデータ依存関係)で同期化を行うと、ない
しのメモリ・アクセスに対して同一のパイプラ
インIDが必要になるため、並列処理効率が著し
く悪くなる。従つて、局所的範囲で(内側DOル
ープのデータ依存関係で)同期化を行う方が良
い。このとき、他範囲のデータ依存関係は、
POST/WAIT命令により同期化を取る。
広域的な範囲で同期化が最適な場合の例につい
て説明する。いま、下記のようなDOループ群を
考える。
DO 10 J=1,100 DO 10 I=1,100 A(I,J)=B(I,J)+A(I,J−1) 10 CONTINUE この例は、先の例と同様の構造を持つが、外側
DOループの回転によるデータ依存関係は→
のみであり、広域的な範囲(外側DOループのデ
ータ依存関係)で同期化を行つても並列処理効率
は高い。なお、はA(I,J)を、はA(I,
J−1)を示している。従つて、パイプライン
IDを用いて広域的な範囲で同期化を行う方が最
適である。
広域的な範囲で同期化が最適な場合の他例につ
いて説明する。いま、下記のようなDOループ群
を考える。
DO 10 I=1,100 A(I)=C(I)+B(I−1) 10 CONTINUE DO 20 I=1,100 B(I)=C(I)*A(I+1) 20 CONTINUE この例においては、局所的な範囲で同期化を行
つた場合、DOループ間でPOST/WAIT命令に
より同期が取られるため、並列処理効率が悪くな
つてしまう。しかしDOループ間のデータ依存関
係で同期化した場合には、→及び→にパ
イプラインIDが必要となるのみで、並列処理効
率も高い。なお、はA(I)を、はB(I−
1)を、はB(I)を、はA(I+1)を示し
ている。
局所的な範囲で同期化が最適な場合の他例につ
いて説明する。いま、下記のようなDOループ群
を考える。
DO 10 I=1,100 A(I)=C(I) 10 CONTINUE DO 20 J=1,50 B(J)=A(50) 20 CONTINUE この例では、DOループ間にベクトルとスカラ
の依存関係があるので、DOループ単位で逐次化
を行う。上記のDOループ群に対応するベクトル
命令列は下記のようになる。
VL VR1,C(1:100) VST VR1 A(1:100) VPT VWT VL VR2,A(50) VST VR2,B(1:50) なお、VLはベクトル・ロード命令、VSTはベ
クトル・ストア命令、VPTはPOST命令、VWT
はWAIT命令、VRXはベクトル・レジスタをそ
れぞれ示す。
〔発明の効果〕
以上の説明から明らかなように、本発明によれ
ば、データ依存関係を広範囲に把握し、最適な逐
次化処理を行うことにより、ベクトル化された
DOループ間(ベクトル命令列)及びその他の範
囲(スカラ命令列)との並列性が高まり、実行効
率が向上する。
【図面の簡単な説明】
第1図は本発明のコンパイラの概要を示す図、
第2図は本発明の命令の逐次化処理の流れを示す
図、第3図は制御の流れが一定なDOループ群の
例を示す図である。 1……ソース解析部、2……番地割付け部、3
……ベクトル化部、4……逐次化処理部、5……
中間テキスト最適化部、6……レジスタ割付け
部、7……命令生成部。

Claims (1)

  1. 【特許請求の範囲】 1 ベクトル化後の中間テキストについて逐次化
    処理を施す逐次化処理部を持つコンパイラにおい
    て、 上記逐次化処理部が、 制御の流れが一定のDOループ群を取り出す
    処理と、 配列に出現する添字を参照して、DOループ
    群内のデータ依存関係を調べる処理と、 DOループ間にベクトルとスカラの依存関係
    があるか否かを調べる処理と、 で依存関係なしとされたことを条件に、パ
    イプラインIDによる多重ループ内の逐次化を
    施す処理と、 で依存関係ありとされたことを条件に、
    DOループ単位に逐次化を施す処理と、 の逐次化の効率が良好か否かを調べる処理
    と、 の処理で良好でないとされたことを条件
    に、DOループ間の逐次化を施す処理と、 の逐次化の効率が良好か否かを調べる処理
    と、 の処理で良好でないとされたことを条件
    に、DOループ内の逐次化を施す処理と を行うように構成されている。 ことを特徴とする命令の逐次化方式。
JP21331584A 1984-10-12 1984-10-12 命令の逐次化方式 Granted JPS61100862A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21331584A JPS61100862A (ja) 1984-10-12 1984-10-12 命令の逐次化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21331584A JPS61100862A (ja) 1984-10-12 1984-10-12 命令の逐次化方式

Publications (2)

Publication Number Publication Date
JPS61100862A JPS61100862A (ja) 1986-05-19
JPH056712B2 true JPH056712B2 (ja) 1993-01-27

Family

ID=16637106

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21331584A Granted JPS61100862A (ja) 1984-10-12 1984-10-12 命令の逐次化方式

Country Status (1)

Country Link
JP (1) JPS61100862A (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6052471B2 (ja) * 1980-05-14 1985-11-19 富士通株式会社 ベクトル演算処理システム
JPS57109084A (en) * 1980-12-26 1982-07-07 Fujitsu Ltd Schedule system for instruction in parallel computer having plural operating devices
JPS58151653A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 逐次命令群処理方式
JPS59125472A (ja) * 1982-12-30 1984-07-19 Fujitsu Ltd 逐次化命令実行制御装置

Also Published As

Publication number Publication date
JPS61100862A (ja) 1986-05-19

Similar Documents

Publication Publication Date Title
Knobe et al. Data optimization: Allocation of arrays to reduce communication on SIMD machines
Rogers et al. Process decomposition through locality of reference
Tzen et al. Trapezoid self-scheduling: A practical scheduling scheme for parallel compilers
JP3317825B2 (ja) ループ最適化翻訳処理方法
Rauchwerger Run-time parallelization: Its time has come
Samadi et al. Paragon: Collaborative speculative loop execution on gpu and cpu
JPH04336378A (ja) 情報処理装置
Yeh et al. Dimensionality-aware redundant simt instruction elimination
Zmeev et al. Features of the architecture implementing the dataflow computational model and its application in the creation of microelectronic high-performance computing systems
JPH056712B2 (ja)
Nie et al. Parallel region reconstruction technique for sunway high-performance multi-core processors
Yang et al. Cuda-np: Realizing nested thread-level parallelism in gpgpu applications
Trancoso et al. DDMCPP: The data-driven multithreading C pre-processor
Shaw et al. Performance tuning scientific codes for dataflow execution.
Polychronopoulos Automatic restructuring of Fortran programs for parallel execution
Kalathingal et al. DITVA: Dynamic inter-thread vectorization architecture
Bozkus et al. Compiling hpf for distributed memory mimd computers
JPS6186844A (ja) 逐次化命令の移動方式
Ren et al. Parallel Optimization of BLAS on a New-Generation Sunway Supercomputer
Kitano et al. Performance evaluation of parallel heapsort programs
Singh Automatic parallelization using OpenMP API
Seo et al. HPF/JA: extensions of High Performance Fortran for accelerating real‐world applications
Ishizaki et al. A loop parallelization algorithm for HPF compilers
Tsai Superthreading: Integrating compilation technology and processor architecture for cost-effective concurrent multithreading
Weinzierl GPGPUs with OpenMP

Legal Events

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