JPS6321946B2 - - Google Patents

Info

Publication number
JPS6321946B2
JPS6321946B2 JP57031198A JP3119882A JPS6321946B2 JP S6321946 B2 JPS6321946 B2 JP S6321946B2 JP 57031198 A JP57031198 A JP 57031198A JP 3119882 A JP3119882 A JP 3119882A JP S6321946 B2 JPS6321946 B2 JP S6321946B2
Authority
JP
Japan
Prior art keywords
sentence
statement
path
mask
program
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
Application number
JP57031198A
Other languages
English (en)
Other versions
JPS58149544A (ja
Inventor
Yukio Kamya
Masaaki Takiuchi
Koichiro Hotsuta
Masaki Aoki
Chizuru Sasaki
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 JP57031198A priority Critical patent/JPS58149544A/ja
Publication of JPS58149544A publication Critical patent/JPS58149544A/ja
Publication of JPS6321946B2 publication Critical patent/JPS6321946B2/ja
Granted legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】 (A) 発明の技術分野 本発明は、コンパイラ処理方式、特に複数の並
列演算部をそなえたベクトル処理プロセツサに対
して、与えられたソース・プログラムから目的プ
ログラムを生成して供給するコンパイラにおい
て、ループ構造内にIF文が含まれる場合でも、
ループ内の各文に対応して、当該文を第Iエレメ
ントに対して実行するか否かを、マスク情報とし
て与えるようにして、並列実行可能な形に処理し
てゆくようにしたコンパイラ処理方式に関するも
のである。
(B) 技術の背景と問題点 例えば、第1図Aに示す如く、ベクトルAに属
するエレメントa1,a2,…とベクトルBに属する
エレメントb1,b2,…との各エレメント相互を加
算して、エレメントc1,c2,…をもつベクトルC
を生成するような、ベクトル命令を実行するベク
トル処理プロセツサが存在している。第1図A図
示の場合、第i番目のエレメント相互の加算を行
なうか否かをマスク・エレメントm1,m2,…に
て指示するようにされており、第1図Bに一般化
して示す如き処理が行なわれる。
上記の如き処理を行なうベクトル処理プロセツ
サを有するデータ処理システムは、一実施例とし
て第2図図示の如きシステム構成をもつている。
図中の符号1は主記憶装置、2はメモリ制御装
置、3はベクトル処理プロセツサ、4はチヤネ
ル・プロセツサ、5は大記憶装置、6はスカラ処
理回路部、7はベクトル処理回路部、8−0,8
−1,…は夫々浮動小数点データ・レジスタ、9
−0,9−1,…は夫々複数個のデータ(エレメ
ント・データ)を格納し得るベクトル・レジス
タ、10−0,10−1,…は夫々複数個のマス
ク・データ(マスク・エレメント・データ)を格
納し得るマスク・レジスタ、11はベクトル長レ
ジスタであつて各ベクトル・レジスタに格納され
るエレメントの個数情報がセツトされるもの、1
2−0,12−1は夫々メモリ・アクセス・パイ
プライン、13は加減算パイプライン、14は乗
算処理パイプライン、15は除算処理パイプライ
ン、16はマスク処理パイプラインを表わしてい
る。
上記の如きベクトル処理プロセツサが処理を実
行するに当つて、当該プロセツサが実行するに適
した形に、与えられたソース・プログラムをコン
パイルし目的プログラムを生成することが行なわ
れる。当該コンパイルを行なうコンパイラの構成
は第3図を参照して後述されるが、当該コンパイ
ラによるコンパイル処理に当つて、ループ構造を
もつプログラムにおいて、当該ループ内にIF文
が含まれていると、並列実行可能部分を取出す
(ベクトライズ)する統一的な解法がなく、一般
には並列実行可能な形にするための処理の対象か
ら、予め除外されていた。
(C) 発明の目的と構成 本発明は、上記の点を解決することを目的とし
ており、(i)IF文を含むループ内の各文に対応し
て文マスクを例えば第i番目の文に対して文マス
クmiとして与え、かつ(ii)当該第i番目の文がIF
文でない場合に第(i+1)番目の文に向うパス
に対しパス・マスクPi,i+1として値miを与え、(iii)
当該第i番目の文がIF文である場合に当該IF文
の条件をCiとするとき条件成立によつて飛ぶ所の
飛び先の第k番目の文へのパスに対してパス・マ
スクPikとして mi.AND.Ci を与え、(iv)当該第i番目の文がIF文である場合
に当該IF文の条件Ciの条件不成立によつて飛ぶ所
の飛び先の第k′番目の文へのパスに対してパス・
マスクPik′として mi.AND.i を与え、(v)上記文マスクmiを与えるに当つて、
上記パス・マスクを調べて第i番目の文へ至るパ
スに対応するパス・マスクPliについての論理和
をとる、即ち mi=Ul Pli で与えるようにし、IF文を含んでいる場合でも
並列実行可能な範囲を増大せしめるようにコンパ
イルすることを特徴としている。以下図面を参照
しつつ説明する。
(D) 発明の実施例 第3図は本発明に用いるコンパイラの一実施例
構成、第4図は本発明においてソース・プログラ
ムを中間コードに移してゆく態様を説明する説明
図、第5図はソース・プログラムをベクトル化し
てゆく態様を説明する説明図、第6図ないし第8
図は本発明においてIF文を含むソース・プログ
ラムに対して文マスクやパス・マスクを用意して
並列実行可能な形に変形してゆく態様を説明する
説明図、第9図A,Bは第3図に示すベクトル化
部における本発明に直接関連する部分についての
一実施例処理部のフローチヤート、第10図ない
し12図はIF文によつてループ外に飛び出る処
理が含まれる場合についての並列実行可能な部分
を拡大する態様を説明する説明図を示している。
第3図において、17は大記憶装置に格納され
ているソース・プログラム、18はコンパイラ、
19はコンパイルされて大記憶装置上に格納され
る目的プログラム、20はソース解釈部、21は
記憶域割付け部、22はベクトル化部、23は中
間コード最適化部、24はレジスタ使用決定部、
25は目的プログラム出力部を表わしている。
コンパイラ18は、大記憶装置からソース・プ
ログラム17を取込んで、所望の目的プログラム
19を生成する。このとき図示の各部は次のよう
な処理を行う。
即ち、ソース解釈部20はソース・プログラム
17を大記憶装置から取込み、文解釈を行つて中
間コード(テキスト)に展開する。例えばソー
ス・プログラムが第4図図示左側の如き場合に図
示右側に示す如き中間コードに展開する。記憶域
割付け部21はプログラム内に出現する各種デー
タに対応して記憶域内番地を割当てる。ベクトル
化部22は、プログラム中のループ構造を検出
し、並列実行可能部分を認識し、第5図図示の如
く中間コード変更を行う。中間コード最適化部2
3は、中間コードのレベルで、第2図図示の如き
ベクトル処理プロセツサを有効に利用するための
最適化を施す。レジスタ使用決定部24は、中間
コードに現われたデータに対して、ベクトル処理
プロセツサ上の資源(レジスタ)を割当てる。そ
して目的プログラム出力部25は機械命令語を大
記憶装置へ出力しかつ命令語レベルでの最適化を
行う。
ベクトル処理プロセツサを稼動させるためのコ
ンパイラは第3図図示の如き構成をもつており、
ループ構成内にIF文をもたないプログラムにつ
いては第5図に概念的に示した如く並列実行可能
な形にして処理してゆくことが可能である。しか
し第6図に示す如きソース・プログラムが与えら
れると、当該ループ構成の中に「IF(A(I).GT.
B(I)(GOTO50」などのIF文が存在することか
ら、従来このようなループ構成については一般に
は並列実行可能な状態にないものとして処理され
ていた。しかし、当該プログラムの場合、IF文
の飛び先がループ内に止まつており、プログラム
中の個々の文について個々の処理に当つて当該文
を実行するか否かを文マスクmiにて指示する手
法を採用することによつて、上記並列実行可能な
ものとなることが判つた。
なお第6図図示のプログラムは、概略次の如き
処理を指示している。即ち、Iの値が「1」から
「N」になるまで繰返して文10ないし文70を実行
することを指示し、その間に文20によつて或るI
の値のときA(I)がB(I)よりも大となるならば文50
に飛び、また文40によつて或るIの値のときB(I)
がYよりも大となるならば文60に飛ぶことを指示
している。上記文マスクは、例えば文30に対応し
て「A(I).G.T.B(I)」なる条件以外のとき、当該
30を実行するよう指示すれば、IF文が第8図図
示の如く消滅する形となる。
第7図は、第6図図示のプログラムを構成する
各文10ないし文70に対して、どのような文マスク
m10ないしm70を与えるかを説明する説明図を示
している。
10の場合にはIの値の如何に拘らず、すべて
のIについて実行する必要がある。このことから
文マスクm10としてφ(空)となる。文20の場合も
m20としてφとなる。文20から文50へ飛ぶルート
は文20の条件「A(I).GT.B(I)」のときにとられ
るもので、当該パスに対してパス・マスクP20,50
として P20,50=A(I).GT.B(I) が与えられ、一方同様にパス・マスクP20,30とし
て P20,3020,50 が与えられる。この結果から文30に対応する文マ
スクm30は m3020,50 となる。
40についての文マスクm40はm30と同じもの
となる。同じようにして、パス・マスクP40,60
P40,50が図示の如く与えられ、文マスクm50は、
パス・マスクP20,50とP40,50との論理和をとつたも
のとなる。そして文マスクm60,m70はφとなる。
このような文マスクmiを与えると、第6図図
示のプログラムは、第8図図示プログラムの如
く、IF文が存在しない形となつて、並列実行可
能な形となる。なお、第8図において、「:」を
附して示した所の「:M2」、「:M5」は対応する
文についての文マスクであると考えてよい。
第9図A,Bは一緒になつて1つの図を構成し
ており、第6図ないし第8図を参照して説明した
如く文マスクmiを決定してゆく処理に対応した
フローチヤートを示している。即ち、 (1) DOループ検出が行われてループ内のIF文の
有無が調べられる。
(2) IF文がなければ、文マスクの決定処理はそ
のまま終了する。
(3) IF文があれば、ループ内の1つの文例えば
第i番目の文(文iとかく)を抽出し、文iに
飛びこんでくるパスを調べる。第7図図示の例
で言えば、文30へのパスはパス・マスクP20,30
をもつパスが調べられ、文50へのパスはパス・
マスクP20,50をもつパスとパス・マスクP40,50
もつパスとが調べられる。
(4) パスが1個のみの場合には、次の文(i-1)から
iへのパス・マスクP(i-1),iの値を文マスクmi
する。
(5) パスが2個以上ある場合には、当該文iへ飛
び込む各パスのパス・マスクPliについて論理
和をとつたものとされる。即ち mi=Ul Pli とされる。
(6) 当該文iがIF文でない場合には、文iから文(i+1)
へ向うパスについてのパス・マスクPi,(i+1)を値
miとされる。
(7) IF文である場合には、条件をCiとすれば、当
該条件が成立して飛ぶ側のパスには Pi,k=mi.AND.Ci を与え、不成立で飛ぶ側のパスには Pi,k′=mi.AND.i を与える。
(8) 上記に次いでiの値がカウント・アツプさ
れ、DOループ内のすべての文について上記と
同様な処理を行なつてゆく。
上述の如く、IF文を含むループ構成を、文マ
スクmiを用いることによつて、IF文を含まない
形に変えることが可能となつた。そして、最終的
には、目的プログラム上において、第1図に示し
たマスク情報m1,m2,…,mlの形で上記文マス
クが展開されて、個々のエレメントについての処
理を実行するか否かが指示されることとなる。
しかし、上記第6図図示のソース・プログラム
の場合には、IF文の飛び先がループ内に止まつ
ており、上述の如く文マスクを用いることによつ
て、IF文を消滅させることが可能であつた。こ
れに対して、第10図に示す如く、IF文によつ
てループ外に飛び出る形がある場合には、(i)ルー
プ内で処理が繰返される繰返し数(回転数)が不
定であることや、(ii)配列などへの値の定義がある
場合には一般的なベクトライズで解決できないこ
と、などのために並列実行可能なものではなかつ
た。
第10図図示の如きプログラムの場合でも、所
定の条件のもとでは並列実行可能なものとなるこ
とが確められた。
即ち、第10図図示の如きプログラムにおいて
は、(i)図示の条件がn回目(1≦I(=n)≦
N)において成立した場合には、図示S1の範囲の
文についてn回実行され、図示S2の範囲の文につ
いては(n−1)回実行される形となり、(ii)図示
の条件がI=1〜Nの間で成立しなければ、図
示S1の範囲の文とS2の範囲の文とは共にN回実行
される形となる。このことをまとめて示すと、第
11図図示の如く、条件が成立した場合と成立
しない場合とでの実行結果が明らかとなる。
このような場合、いわば予備的な仮実行によつ
て条件が成立するIの値を調べるようにし、第
12図図示の如く変形すれば、並列実行可能な形
となる。即ち、第10図と第12図とを対比する
と判る如く、第12図においてA(I)やXの内容が
破壊されないようにそれらに代わる領域VT1と
VT2とをアロケート(確保)しておいて、第1
2図図示の処理S1′を実行し、条件が成立する
Iの値即ち例えばpを判定する。そしてpの値が
決定されると、文lによつてI、p、qの値を設
定しておいて、処理S1″とS1とによつて先に処
理S1′にてIが1からNまでの範囲で実行された
ことにもとづく修正処理を行う。次いで処理S2
よつて条件が成立した際におけるq回分の実行
を行つて、領域VT1、VT2をフリー(解放)し
てゆく。
第12図図示の如き変形が可能となる場合に
は、各ループ構成内にIF文が存在しても当該ル
ープ内に止まることが保証され、第6図ないし第
8図に関連して説明した如く、並列実行可能なも
のとなり、第3図図示のベクトル化部22におい
て、中間コード変更を行なつてゆく。
(E) 発明の効果 以上説明した如く、本発明によれば、ループ構
成中にIF文をもつプログラムについても可能な
限り、並列実行可能な形とされ、コンパイル処理
が容易となる。
【図面の簡単な説明】
第1図はベクトル命令に対応した処理を概念的
に説明する説明図、第2図は本発明にいうベクト
ル処理プロセツサを有する処理システムの一実施
例、第3図は本発明に用いるコンパイラの一実施
例構成、第4図はソース・プログラムを中間コー
ドに移してゆく態様を説明する説明図、第5図は
ソース・プログラムをベクトル化してゆく態様を
説明する説明図、第6図ないし第8図は本発明に
おいてIF文を含むソース・プログラムに対して
文マスクやパス・マスクを用意して並列実行可能
な形に変形してゆく態様を説明する説明図、第9
図A,Bは第3図に示すベクトル化部における本
発明に直接関連する部分についての一実施例処理
部のフローチヤート、第10図ないし12図は
IF文によつてループ外に飛び出る処理が含まれ
る場合についての並列実行可能な部分を拡大する
態様を説明する説明図を示している。 図中、1は主記憶装置、2はメモリ制御装置、
3はベクトル処理プロセツサ、4はチヤネル・プ
ロセツサ、5は大記憶装置、9はベクトル・レジ
スタ、10はマスク・レジスタ、11ないし16
は夫々パイプライン演算部、17はソース・プロ
グラム、18はコンパイラ、19は目的プログラ
ム、20はソース解釈部、21は記憶域割付け
部、22はベクトル化部、23は中間コード最適
化部、24はレジスタ使用決定部、25は目的プ
ログラム出力部を表わしている。

Claims (1)

  1. 【特許請求の範囲】 1 複数の並列演算部をそなえると共に複数個の
    レジスタを少なくともそなえてベクトル命令を実
    行するベクトル処理プロセツサに対して、与えら
    れたソース・プログラムから目的プログラムを生
    成して供給するコンパイラにおいて、上記ソー
    ス・プログラムの文解釈を行つて中間コードに展
    開するソース解釈部、プログラム中に出現する各
    種データに記憶域内番地を割り当てる記憶域割付
    け部、プログラム中のループ構造を検出して並列
    実行可能部分の認識を行いかつ上記中間コード変
    更を行うベクトル化部、中間コードのレベルで上
    記ベクトル処理プロセツサを有効に利用するため
    の最適化を施す中間コード最適化部、中間コード
    に現われたデータに実際の資源を割当てるレジス
    タ使用決定部、および目的プログラム出力部をそ
    なえてなり、更に、上記ベクトル化部は、ループ
    内のIF文の存在をチエツクし、IF文が存在する
    場合に、第i番目の文に対して第l(l≠i)番
    目の文からのパスを調べて当該第i番目の文に対
    応する文マスクmiを設定すると共に、上記第i
    番目の文がIF文でない場合に当該第i番目の文
    から第(i+1)番目の文へのパスに対応してパ
    ス・マスクPi,i+1として上記文マスクの値miを設
    定し、かつ上記第i番目の文がIF文である場合
    に当該IF文の条件Ciが成立して飛ぶ第k番目の文
    へのパスに対応してパス・マスクPikとして mi.AND.Ci を設定し、一方当該条件Ciが不成立で飛ぶ第k′番
    目の文へのパスに対応してパス・マスクPik′とし
    て mi.AND・i を設定し、上記第i番目の文に対して第l番目の
    文からのパスを調べて当該第i番目の文に対する
    文マスクmiを設定するに当つて、上記パス・マ
    スクをチエツクして、 mi=Ul Pli(l≠i) を決定する処理部をそなえ、IF文を含むループ
    構造をもつソース・プログラムについて並列実行
    可能な形に変形して処理せしめるようにしたこと
    を特徴とするコンパイラ処理方式。 2 複数の並列演算部をそなえると共に複数個の
    レジスタを少なくともそなえてベクトル命令を実
    行するベクトル処理プロセツサに対して、与えら
    れたソース・プログラムから目的プログラムを生
    成して供給するコンパイラにおいて、上記ソー
    ス・プログラムの文解釈を行つて中間コードに展
    開するソース解釈部、プログラム中に出現する各
    種データに記憶域内番地を割り当てる記憶域割付
    け部、プログラム中のループ構造を検出して並列
    実行可能部分の認識を行いかつ上記中間コード変
    更を行うベクトル化部、中間コードのレベルで上
    記ベクトル処理プロセツサを有効に利用する上で
    の最適化を施す中間コード最適化部、中間コード
    に現われたデータに実際の資源を割当てるレジス
    タ使用決定部、および目的プログラム出力部をそ
    なえてなり、更に、上記ベクトル化部は、ループ
    内のIF文の存在をチエツクし、当該IF文によつ
    て制御が当該ループ外に飛び出る場合にI=1、
    Nなる回転数のうちでIの値が幾つの際に上記ル
    ープ外に飛び出るかをチエツクして、当該IF文
    を複数のループに分解する処理部をそなえ、その
    上で、各ループについてIF文が存在する場合に、
    第i番目の文に対して第l(l≠i)番目の文か
    らのパスを調べて当該第i番目の文に対応する文
    マスクmiを設定すると共に、上記第i番目の文
    がIF文でない場合に当該第i番目の文から第
    (i+1)番目の文へのパスに対応してパス・マ
    スクPi,i+1として上記文マスクの値miを設定し、
    かつ上記第i番目の文がIF文である場合に当該
    IF文の条件Ciが成立して飛ぶ第k番目の文へのパ
    スに対応してパス・マスクPikとして mi.AND.Ci を設定し、一方当該条件Ciが不成立で飛ぶ第k′番
    目の文へのパスに対応してパス・マスクPik′とし
    て mi.AND.i を設定し、上記第i番目の文に対して第l番目の
    文からのパスを調べて当該第i番目の文に対する
    文マスクmiを設定するに当つて、上記パス・マ
    スクをチエツクして、 mi=Ul Pli(l≠i) を決定する処理を行なう処理部をそなえ、IF文
    を含むループ構造をもつソース・プログラムにつ
    いて並列実行可能な形に変形して処理せしめるよ
    うにしたことを特徴とするコンパイラ処理方式。
JP57031198A 1982-02-27 1982-02-27 コンパイラ処理方式 Granted JPS58149544A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP57031198A JPS58149544A (ja) 1982-02-27 1982-02-27 コンパイラ処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP57031198A JPS58149544A (ja) 1982-02-27 1982-02-27 コンパイラ処理方式

Publications (2)

Publication Number Publication Date
JPS58149544A JPS58149544A (ja) 1983-09-05
JPS6321946B2 true JPS6321946B2 (ja) 1988-05-10

Family

ID=12324716

Family Applications (1)

Application Number Title Priority Date Filing Date
JP57031198A Granted JPS58149544A (ja) 1982-02-27 1982-02-27 コンパイラ処理方式

Country Status (1)

Country Link
JP (1) JPS58149544A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2708405B2 (ja) * 1986-03-03 1998-02-04 株式会社日立製作所 コンパイラにおけるループ展開方法
US10824407B2 (en) 2016-01-04 2020-11-03 Nec Corporation Program conversion device, program conversion method, and non-transitory recording medium having program conversion program recorded therein

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5833775A (ja) * 1981-08-21 1983-02-28 Hitachi Ltd コンパイル方法

Also Published As

Publication number Publication date
JPS58149544A (ja) 1983-09-05

Similar Documents

Publication Publication Date Title
Stephens et al. The ARM scalable vector extension
Kuck et al. The Burroughs scientific processor (BSP)
CA1319757C (en) Echelon method for execution of nested loops in multiple processor computers
US7120904B1 (en) Data-flow method for optimizing exception-handling instructions in programs
JPH05143332A (ja) 命令スケジユーラを備えたコンピユータ・システム及び入力命令シーケンスを再スケジユールする方法
Pleszkun A structured memory access architecture
US6820190B1 (en) Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
JP3179536B2 (ja) ディジタルコンピュータの操作方法
US6754892B1 (en) Instruction packing for an advanced microprocessor
US6637026B1 (en) Instruction reducing predicate copy
JPS6319906B2 (ja)
US11301252B2 (en) Executing mutually exclusive vector instructions according to a vector predicate instruction
JPH0346863B2 (ja)
JPS6319908B2 (ja)
JPH046020B2 (ja)
JPH037989B2 (ja)
JPH06103462B2 (ja) ベクトル・レングス制御範囲分割処理方式
Conchon et al. Compiling Parameterized X86-TSO Concurrent Programs to Cubicle
JPS58149544A (ja) コンパイラ処理方式
JP2870218B2 (ja) 並列実行命令列生成方式
JPS58149570A (ja) ベクトル命令のスケジユ−リング処理方式
JPS62204374A (ja) 2倍演算最適化処理方式
JPS58151654A (ja) レジスタ割付け方式
JPH0142019B2 (ja)
JPH053030B2 (ja)