JPH01213721A - コンパイラ方式 - Google Patents
コンパイラ方式Info
- Publication number
- JPH01213721A JPH01213721A JP63039235A JP3923588A JPH01213721A JP H01213721 A JPH01213721 A JP H01213721A JP 63039235 A JP63039235 A JP 63039235A JP 3923588 A JP3923588 A JP 3923588A JP H01213721 A JPH01213721 A JP H01213721A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- scalar
- processing unit
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 136
- 238000000034 method Methods 0.000 claims description 17
- 238000012360 testing method Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 abstract description 12
- 238000003860 storage Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 14
- 238000005206 flow analysis Methods 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000009131 signaling function Effects 0.000 description 9
- 238000005457 optimization Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、ソースプログラムを解析して実行効率のよい
目的プログラムを生成するコンパイラ方式に係り、特に
ベクトル化ループと並列実行可能なスカラ部分を検出し
、スカラ処理ユニットとベクトル処理ユニットとの並列
化効率のよい目的プログラムを生成するのに好適なコン
パイラ方式に関する。
目的プログラムを生成するコンパイラ方式に係り、特に
ベクトル化ループと並列実行可能なスカラ部分を検出し
、スカラ処理ユニットとベクトル処理ユニットとの並列
化効率のよい目的プログラムを生成するのに好適なコン
パイラ方式に関する。
(従来の技術〕
科学技術計算等で頻繁に出現する配列同志の演算を高速
に処理する計算機にベクトルプロセッサがある。
に処理する計算機にベクトルプロセッサがある。
ベクトルプロセッサは、順序付けられた一連の配列デー
タ(ベクトルデータ)に対してパイプラインで高速に処
理するベクトル処理機構をもつ。
タ(ベクトルデータ)に対してパイプラインで高速に処
理するベクトル処理機構をもつ。
たゾし、1個のプログラムを全部ベクトル処理できるの
ではなく、従来の汎用計算機のような逐次処理(これを
スカラ処理と呼ぶ)せざるを得ない部分も生じる。従っ
て、ベクトルプロセッサは、ベクトルデータをパイプラ
インで高速処理するべクトル処理機構の他に、従来の汎
用計算機相当の機能を実現するスカラ処理機構を合わせ
持つ。ベクトルプロセッサ内のベクトル処理機構とスカ
ラ処理機構の関係の持たせ方についてはいくつかの方式
が考えられるが、物理的には分離している場合が多い。
ではなく、従来の汎用計算機のような逐次処理(これを
スカラ処理と呼ぶ)せざるを得ない部分も生じる。従っ
て、ベクトルプロセッサは、ベクトルデータをパイプラ
インで高速処理するべクトル処理機構の他に、従来の汎
用計算機相当の機能を実現するスカラ処理機構を合わせ
持つ。ベクトルプロセッサ内のベクトル処理機構とスカ
ラ処理機構の関係の持たせ方についてはいくつかの方式
が考えられるが、物理的には分離している場合が多い。
上述のような、ベクトル処理機構およびスカラ処理機構
をもつベクトルプロセッサは、例えば特開昭58−11
4274号公報に示されている。
をもつベクトルプロセッサは、例えば特開昭58−11
4274号公報に示されている。
なお、二\に示されているベクトルプロセッサでは、ス
カラ処理機構に相当するスカラ処理ユニットと、ベクト
ル処理機構に相当するベクトル処理ユニットから成る。
カラ処理機構に相当するスカラ処理ユニットと、ベクト
ル処理機構に相当するベクトル処理ユニットから成る。
第10図は、このようなベクトルプロセッサの構成図を
示す。第10図において、400は主記憶、410は主
記憶制御部、420はスカラ処理ユニット、430はベ
クトル処理ユニットである。
示す。第10図において、400は主記憶、410は主
記憶制御部、420はスカラ処理ユニット、430はベ
クトル処理ユニットである。
421はキャッシュで主記憶の1部の写しを持つ高速メ
モリである。422はレジスタ群で、例えば汎用レジス
タ16本、浮動小数点レジスタ16本などより構成され
る。423は演算器群で、スカラ処理ユニット420内
の演算処理を受けもつ。
モリである。422はレジスタ群で、例えば汎用レジス
タ16本、浮動小数点レジスタ16本などより構成され
る。423は演算器群で、スカラ処理ユニット420内
の演算処理を受けもつ。
424はスカラ命令制御部で、従来の汎用計算機の命令
に相当するスカラ命令の読出し、解読、実行制御を行う
。431はベクトル処理ユニット430内にあるレジス
タ群で、例えばベクトルレジスタ群およびスカラレジス
タ群から成る。ベクトルレジスタ群は例えば32本のベ
クトルレジスタから成り、1本のベクトルレジスタでは
例えば256要素から成るベクトルデータを保持するこ
とができる。スカラレジスタ群は例えば32本のスカラ
レジスタから成り、1本のスカラレジスタは、スカラ処
理ユニット内にある汎用レジスタや浮動小数点レジスタ
と同様、スカラデータを保持するものである。432は
ベクトル演算器群であり、ベクトルレジスタあるいはス
カラレジスタから読出したデータをパイプラインで処理
して、結果をベクトルレジスタあるいはスカラレジスタ
に格納するものである。ベクトル演算器としては例えば
加算器や乗算器などがある。433はベクトルアドレス
レジスタ群であり、ベクトル処理ユニット430が主記
憶制御部410を介し、主記憶4゜Oを参照してベクト
ルデータを読出したり書込んだりするときに、主記憶4
00のベクトルデータの位置を示すのに用いる複数のア
ドレスレジスタより成る。ベクトルアドレスレジスタと
しては、ベクトルデータの先頭番地を保持するために使
用するベクトルベースレジスタ(VBR)およびベクト
ルデータの要素間隔を保持するベクトルインクリメント
レジスタ(V I R)から成る。434はベクトル命
令実行制御部であり、ベクトル命令の読出し、解読、実
行制御を行う。
に相当するスカラ命令の読出し、解読、実行制御を行う
。431はベクトル処理ユニット430内にあるレジス
タ群で、例えばベクトルレジスタ群およびスカラレジス
タ群から成る。ベクトルレジスタ群は例えば32本のベ
クトルレジスタから成り、1本のベクトルレジスタでは
例えば256要素から成るベクトルデータを保持するこ
とができる。スカラレジスタ群は例えば32本のスカラ
レジスタから成り、1本のスカラレジスタは、スカラ処
理ユニット内にある汎用レジスタや浮動小数点レジスタ
と同様、スカラデータを保持するものである。432は
ベクトル演算器群であり、ベクトルレジスタあるいはス
カラレジスタから読出したデータをパイプラインで処理
して、結果をベクトルレジスタあるいはスカラレジスタ
に格納するものである。ベクトル演算器としては例えば
加算器や乗算器などがある。433はベクトルアドレス
レジスタ群であり、ベクトル処理ユニット430が主記
憶制御部410を介し、主記憶4゜Oを参照してベクト
ルデータを読出したり書込んだりするときに、主記憶4
00のベクトルデータの位置を示すのに用いる複数のア
ドレスレジスタより成る。ベクトルアドレスレジスタと
しては、ベクトルデータの先頭番地を保持するために使
用するベクトルベースレジスタ(VBR)およびベクト
ルデータの要素間隔を保持するベクトルインクリメント
レジスタ(V I R)から成る。434はベクトル命
令実行制御部であり、ベクトル命令の読出し、解読、実
行制御を行う。
次に、プログラムを処理実行するときに、スカラ処理ユ
ニットおよびベクトル処理ユニットがどのように動作す
るかについて説明する。なお、これについては、例えば
雑誌日経エレクトロニクス1983年4月11日号のペ
ージ172〜173に示されているので、こぎでは簡単
に説明する。
ニットおよびベクトル処理ユニットがどのように動作す
るかについて説明する。なお、これについては、例えば
雑誌日経エレクトロニクス1983年4月11日号のペ
ージ172〜173に示されているので、こぎでは簡単
に説明する。
ベクトル処理を行うには、主記憶からベクトルデータを
取出すときに使用するベクトルアドレスレジスタ群への
値の事前設定等の前処理を行う必要がある。第10図に
示した従来のベクトルプロセッサにおいては、次の手順
でベクトル処理が遂行される。
取出すときに使用するベクトルアドレスレジスタ群への
値の事前設定等の前処理を行う必要がある。第10図に
示した従来のベクトルプロセッサにおいては、次の手順
でベクトル処理が遂行される。
手順1
スカラ処理ユニットにおいて、ベクトル処理に必要なベ
クトルアドレスレジスタ類、スカラレジスタに所定の値
をベクトル処理開始前に設定する。
クトルアドレスレジスタ類、スカラレジスタに所定の値
をベクトル処理開始前に設定する。
手順2
スカラ処理ユニットにより、実行するベクトル処理を記
述しているベクトル命令列の格納されている主記憶の先
頭番地や処理するベクトルの要素数等をベクトル処理ユ
ニットに通告して、ベクトル処理ユニットを起動する。
述しているベクトル命令列の格納されている主記憶の先
頭番地や処理するベクトルの要素数等をベクトル処理ユ
ニットに通告して、ベクトル処理ユニットを起動する。
主版l
起動されたベクトル処理ユニットは、スカラ処理ユニッ
トから通知された情報に従ってベクトル命令を順次読出
し、実行して、ベクトル処理を遂行する。
トから通知された情報に従ってベクトル命令を順次読出
し、実行して、ベクトル処理を遂行する。
手順4
ベクトル処理ユニットを起動した後、スカラ処理ユニッ
トは例えば次のベクトル処理の準備など、ベクトル処理
と並行して別のスカラ処理が独立に処理できる。
トは例えば次のベクトル処理の準備など、ベクトル処理
と並行して別のスカラ処理が独立に処理できる。
手順5
ベクトル処理ユニットにおけるベクトル処理の終了は、
スカラ処理ユニットからベクトル処理ユニットの状態を
テストするか、あるいはベクトル処理ユニットからスカ
ラ処理ユニットへ割込みの形式で通知するかのいずれか
の形で扱われる。
スカラ処理ユニットからベクトル処理ユニットの状態を
テストするか、あるいはベクトル処理ユニットからスカ
ラ処理ユニットへ割込みの形式で通知するかのいずれか
の形で扱われる。
上記のように、スカラ処理ユニットとベクトル処理ユニ
ットの関係は、スカラ処理ユニットが主、ベクトル処理
ユニットが従の主従関係にあり、スカラ処理ユニットか
らの指令でベクトル処理ユニットがベクトル処理を遂行
するという形で処理が進む。
ットの関係は、スカラ処理ユニットが主、ベクトル処理
ユニットが従の主従関係にあり、スカラ処理ユニットか
らの指令でベクトル処理ユニットがベクトル処理を遂行
するという形で処理が進む。
従来、このようなプロセッサにおいて、スカラ処理ユニ
ットとベクトル処理ユニットとの同期、通信を行うため
に用意されている命令について第11図に示す、これら
の命令はすべで主ユニットであるスカラ処理ユニットで
解読・実行されるものである。
ットとベクトル処理ユニットとの同期、通信を行うため
に用意されている命令について第11図に示す、これら
の命令はすべで主ユニットであるスカラ処理ユニットで
解読・実行されるものである。
次に、簡単なF ORT RA Nのプログラムの処理
を例に、従来技術でスカラ処理ユニットとベクトル処理
ユニットがどのように同期、通信して処理を行っている
か説明する。
を例に、従来技術でスカラ処理ユニットとベクトル処理
ユニットがどのように同期、通信して処理を行っている
か説明する。
第12図はFORTRANのプログラム例を示したもの
である。第12図のプログラムにおいて文識別番号2〜
6のDoループはベクトル処理ユニットで処理され、そ
の他の文はスカラ処理ユニットで処理される。
である。第12図のプログラムにおいて文識別番号2〜
6のDoループはベクトル処理ユニットで処理され、そ
の他の文はスカラ処理ユニットで処理される。
第13図は、第12図のFORTRANプログラム(ソ
ースプログラム)に対応するオブジェクトプログラム(
目的プログラム)で、コンパイラにより生成される。オ
ブジェクトプログラムは、スカラ処理ユニットで実行さ
れるスカラオブジェクト(第13図(a))と、ベクト
ル処理ユニットで実行されるベクトルオブジェクト(第
13図(b)とから成る。
ースプログラム)に対応するオブジェクトプログラム(
目的プログラム)で、コンパイラにより生成される。オ
ブジェクトプログラムは、スカラ処理ユニットで実行さ
れるスカラオブジェクト(第13図(a))と、ベクト
ル処理ユニットで実行されるベクトルオブジェクト(第
13図(b)とから成る。
第13図(a)のスカラオブジェクトにおいて、スカラ
命令IDがSlからSllの11命令はベクトル処理前
の準備処理に関するものである。このうち、S2からS
llの10命令は、第12図のプログラムにある配列A
、B、C,P、Qのアドレス情報をベクトル処理ユニッ
ト内のベクトルベースレジスタ(VBR)、ベクトルイ
ンクリメントレジスタ(VIR)にセットするものであ
る。
命令IDがSlからSllの11命令はベクトル処理前
の準備処理に関するものである。このうち、S2からS
llの10命令は、第12図のプログラムにある配列A
、B、C,P、Qのアドレス情報をベクトル処理ユニッ
ト内のベクトルベースレジスタ(VBR)、ベクトルイ
ンクリメントレジスタ(VIR)にセットするものであ
る。
また、Slの命令は第12図のプログラムの変数Sの初
期値0.0をベクトル処理ユニット内のスカラレジスタ
にセットするものである。スカラ命令IDが312の命
令はベクトル処理ユニットを起動する命令であり、第1
3図(b)に示したベクトルオブジェクトが格納されて
いる主記憶のアドレスなどを通知してベクトル処理ユニ
ットを起動する(詳細は略す)。これにより、ベクトル
処理ユニットは第13図(b)に示したベクトルオブジ
ェクトにある命令を順次実行する。
期値0.0をベクトル処理ユニット内のスカラレジスタ
にセットするものである。スカラ命令IDが312の命
令はベクトル処理ユニットを起動する命令であり、第1
3図(b)に示したベクトルオブジェクトが格納されて
いる主記憶のアドレスなどを通知してベクトル処理ユニ
ットを起動する(詳細は略す)。これにより、ベクトル
処理ユニットは第13図(b)に示したベクトルオブジ
ェクトにある命令を順次実行する。
スカラ命令IDが813の命令は、ベクトル処理ユニッ
トが動作中かあるいは非動作中かをテストし、結果を条
件コードに反映させる命令(Teat V ector
P rocessing命令)である。ベクトル処理
ユニットが動作中ならば、起動したベクトル処理が未だ
完了していないということで、S14のBC命令(B
ranch on Condition命令)で813
と314をループし、ベクトル処理の完了を待つ。ベク
トル処理ユニットの実行が終了すると、スカラ処理ID
の815が実行されて、ベクトル処理ユニット内のスカ
ラレジスタ0番に求まっている総和演算結果(第12図
のプログラムの変数S)がスカラ処理ユニット内の浮動
小数点レジスタ0番に取出されて後続の演算(第12図
のプログラムの文識別番号7)に使用される。
トが動作中かあるいは非動作中かをテストし、結果を条
件コードに反映させる命令(Teat V ector
P rocessing命令)である。ベクトル処理
ユニットが動作中ならば、起動したベクトル処理が未だ
完了していないということで、S14のBC命令(B
ranch on Condition命令)で813
と314をループし、ベクトル処理の完了を待つ。ベク
トル処理ユニットの実行が終了すると、スカラ処理ID
の815が実行されて、ベクトル処理ユニット内のスカ
ラレジスタ0番に求まっている総和演算結果(第12図
のプログラムの変数S)がスカラ処理ユニット内の浮動
小数点レジスタ0番に取出されて後続の演算(第12図
のプログラムの文識別番号7)に使用される。
第11図に示したスカラ処理ユニットとベクトル処理ユ
ニットとの同期、通信を行うために用意されている従来
の命令では、次のような問題がある。
ニットとの同期、通信を行うために用意されている従来
の命令では、次のような問題がある。
ベクトル処理ユニットで計算された結果をスカラ処理ユ
ニットで参照する場合、スカラ処理ユニットではベクト
ル処理ユニットが結果を書込んだかどうかをテストする
必要があるが、スカラ処理ユニットはベクトル処理ユニ
ットが動作中か非動作中かのいずれの状態にあるかしか
チエツクできない。したがって、先に示した第13図の
例では、ベクトル命令v4で配列Aの総和演算結果が求
まっているもか\わらず、ベクトル命令v5〜■8がす
べて完了するまでスカラ処理ユニットで値を参照するこ
とができない。
ニットで参照する場合、スカラ処理ユニットではベクト
ル処理ユニットが結果を書込んだかどうかをテストする
必要があるが、スカラ処理ユニットはベクトル処理ユニ
ットが動作中か非動作中かのいずれの状態にあるかしか
チエツクできない。したがって、先に示した第13図の
例では、ベクトル命令v4で配列Aの総和演算結果が求
まっているもか\わらず、ベクトル命令v5〜■8がす
べて完了するまでスカラ処理ユニットで値を参照するこ
とができない。
このように、従来のコンパイラ方式においては、生成さ
れたスカラオブジェクトとベクトルオブジェクトの処理
を、スカラ処理ユニットとベクトル処理ユニットで各々
並列的に行う場合、両者の間で、ベクトル処理起動から
終了までの間はベクトル命令の実行状態を調べることが
できず、並列化効率の悪い処理となっていた。
れたスカラオブジェクトとベクトルオブジェクトの処理
を、スカラ処理ユニットとベクトル処理ユニットで各々
並列的に行う場合、両者の間で、ベクトル処理起動から
終了までの間はベクトル命令の実行状態を調べることが
できず、並列化効率の悪い処理となっていた。
本発明の目的は、上述のスカラ処理ユニットとベクトル
処理ユニットからなるベクトルプロセッサのように、主
と従の関係にある複数のプロセッサ間において、効率の
よい並列化処理を実現するコンパイラ方式を提供するこ
とにある。
処理ユニットからなるベクトルプロセッサのように、主
と従の関係にある複数のプロセッサ間において、効率の
よい並列化処理を実現するコンパイラ方式を提供するこ
とにある。
上記目的を達成するため、本発明のコンパイラ方式にお
いては、ソースプログラムの中のベクトル化ループおよ
びそれ以外のスカラ部分を検出し、このベクトル化ルー
プとスカラ部分とのデータ依存関係を調べて並列化可能
部分及び並列化不可能部分に分離し、目的プログラム生
成の際、ベクトル化ループの中の並列化不可能部分の処
理完了を示す命令をベクトル命令群の中に挿入し、ベク
トル化ループの中の並列化不可能部分の処理が完了した
か否かをテストする命令をスカラ命令群の中に挿入する
ことを特徴とする。
いては、ソースプログラムの中のベクトル化ループおよ
びそれ以外のスカラ部分を検出し、このベクトル化ルー
プとスカラ部分とのデータ依存関係を調べて並列化可能
部分及び並列化不可能部分に分離し、目的プログラム生
成の際、ベクトル化ループの中の並列化不可能部分の処
理完了を示す命令をベクトル命令群の中に挿入し、ベク
トル化ループの中の並列化不可能部分の処理が完了した
か否かをテストする命令をスカラ命令群の中に挿入する
ことを特徴とする。
二\で、ベクトル処理ユニットで実行されているベクト
ル命令の完了をベクトル命令単位でスカラ処理ユニット
に通告する同期制御機能をシグナル機能と呼ぶことにす
る。
ル命令の完了をベクトル命令単位でスカラ処理ユニット
に通告する同期制御機能をシグナル機能と呼ぶことにす
る。
一般にプロセッサはプログラム状態語(PSW)を有し
、当該プロセッサの動作状態や次命令のアドレス等の重
要な情報を集中保持している。第10図に示したベクト
ル処理ユニットにおいてもPSWが存在する。こ\では
、ベクトル処理ユニットのPSWを特にvppswと呼
ぶことにする。
、当該プロセッサの動作状態や次命令のアドレス等の重
要な情報を集中保持している。第10図に示したベクト
ル処理ユニットにおいてもPSWが存在する。こ\では
、ベクトル処理ユニットのPSWを特にvppswと呼
ぶことにする。
vppswの書式の詳細は本発明とは直接関係ないので
省略するが、シグナル機能を実現するために、vpps
wに対して事象表示ビット(S ignalビット、S
ビットと略す)を追加する。本ビットは、指定されたベ
クトル処理ユニットにおける命令の処理が完了したとき
に“1″となるものとする。
省略するが、シグナル機能を実現するために、vpps
wに対して事象表示ビット(S ignalビット、S
ビットと略す)を追加する。本ビットは、指定されたベ
クトル処理ユニットにおける命令の処理が完了したとき
に“1″となるものとする。
ベクトル命令群の中に挿入される先の命令をVSiG命
令と呼ぶことにする。本命令は、本命令の次に実行され
る命令の処理が完了したときに、vppswのSビット
を“1″にする。一方、スカラ命令群の中に挿入される
先の命令をTR8命令(Test & Re5et 5
−bit命令)と呼ぶことにする。本命令は、vpps
wのSビットをテストし、Sビットの値が“1″ならば
“0″にリセットして終了する。Sビットの値が“0″
であった場合は“1”になるまで待ち、((171にな
ったら0″にリセットして終了する。
令と呼ぶことにする。本命令は、本命令の次に実行され
る命令の処理が完了したときに、vppswのSビット
を“1″にする。一方、スカラ命令群の中に挿入される
先の命令をTR8命令(Test & Re5et 5
−bit命令)と呼ぶことにする。本命令は、vpps
wのSビットをテストし、Sビットの値が“1″ならば
“0″にリセットして終了する。Sビットの値が“0″
であった場合は“1”になるまで待ち、((171にな
ったら0″にリセットして終了する。
コンパイラでは、ソースプログラムの中のベクトル化ル
ープおよびその前後のスカラ部分における配列要素(ま
たは変数)の定義・参照関係を調べ、ベクトル処理ユニ
ットで計算された結果をスカラ処理ユニットで参照する
場合を検出する。そして、ベクトル処理ユニットで計算
された結果をスカラ処理ユニットで参照する場合、結果
を定義するベクトル命命の直前にVSiG命令を設定し
、その値を参照するスカラ命令の直前にTR8命令を設
定する。
ープおよびその前後のスカラ部分における配列要素(ま
たは変数)の定義・参照関係を調べ、ベクトル処理ユニ
ットで計算された結果をスカラ処理ユニットで参照する
場合を検出する。そして、ベクトル処理ユニットで計算
された結果をスカラ処理ユニットで参照する場合、結果
を定義するベクトル命命の直前にVSiG命令を設定し
、その値を参照するスカラ命令の直前にTR8命令を設
定する。
このようにすることにより、第13図の例では、ベクト
ル命令■4の直前にVSiG命令、およびスカラ命令S
13のかわりにTR8命令が設定され、ベクトル命令v
4の実行が完了した直後にスカラ命令S15の実行が可
能となり、ベクトル命令v5〜v8とスカラ命令とは並
列化可能となる。
ル命令■4の直前にVSiG命令、およびスカラ命令S
13のかわりにTR8命令が設定され、ベクトル命令v
4の実行が完了した直後にスカラ命令S15の実行が可
能となり、ベクトル命令v5〜v8とスカラ命令とは並
列化可能となる。
(実施例〕
以下、本発明の一実施例を第1図乃至第9図を用いて説
明する。
明する。
第1図に本発明が適用されるコンパイラの一実施例の全
体構成図を示す。コンパイラ1はソースプログラム解析
部4、中間語最適化部5、ストレージ割付は部6.レジ
スタ割付は部7及び目的プログラム出力部8に大別され
る。
体構成図を示す。コンパイラ1はソースプログラム解析
部4、中間語最適化部5、ストレージ割付は部6.レジ
スタ割付は部7及び目的プログラム出力部8に大別され
る。
ソースプログラム解析部4は、大容量記憶装置2内のソ
ースプログラムを読込み、それを中間語表現(図示せず
)に変換する。中間語最適化部5は、中間語表現の構造
やデータ参照関係の解析を行い。実行効率のよう構造に
変換する。ストレージ割付は部6は、目的プログラムの
実行に必要な領域の割付けを行い、レジスタ割付は部7
は、汎用レジスタと浮動小数点レジスタの割当てを行う
。
ースプログラムを読込み、それを中間語表現(図示せず
)に変換する。中間語最適化部5は、中間語表現の構造
やデータ参照関係の解析を行い。実行効率のよう構造に
変換する。ストレージ割付は部6は、目的プログラムの
実行に必要な領域の割付けを行い、レジスタ割付は部7
は、汎用レジスタと浮動小数点レジスタの割当てを行う
。
目的プログラム出力部8は、機械命令語の列からなる目
的プログラムを大容量記憶装置3へ出力する。
的プログラムを大容量記憶装置3へ出力する。
こ\で、中間語最適化部5は、制御フロー解析部10、
データフロー解析部20、ループ解析部30、ベクトル
化ループ解析部40、冗長性削除部50及びスカラ・ベ
クトル並列化部60よりなる。以下、これらについて詳
述する。
データフロー解析部20、ループ解析部30、ベクトル
化ループ解析部40、冗長性削除部50及びスカラ・ベ
クトル並列化部60よりなる。以下、これらについて詳
述する。
制御フロー解析部10は、中間表現に対してその中の制
御の流れを解析し、条件構造やループ構造を見つける。
御の流れを解析し、条件構造やループ構造を見つける。
データフロー解析部20は、変数の定義参照関係を解析
する。すなわち、ある変換に対して設定された値(定義
)が、他の場所でのその変数の使用(参照)まで引継が
れるものか否かを、制御フロー解析部10での制御フロ
ー解析結果を利用して解析する。このデータフロー解析
部20でデータ依頼テーブル300が作成される。
する。すなわち、ある変換に対して設定された値(定義
)が、他の場所でのその変数の使用(参照)まで引継が
れるものか否かを、制御フロー解析部10での制御フロ
ー解析結果を利用して解析する。このデータフロー解析
部20でデータ依頼テーブル300が作成される。
ループ解析部30は、制御フロー解析部10で見つけた
ループ構造の各々について、データフロー解析部20の
データフロー解析結果を用いて解析を行う。
ループ構造の各々について、データフロー解析部20の
データフロー解析結果を用いて解析を行う。
ベクトル化ループ解析部40は、中間語ループ構造をベ
クトル化向きの中間語ループ構造上に変換する。このと
きループ情報テーブル200が作成される。
クトル化向きの中間語ループ構造上に変換する。このと
きループ情報テーブル200が作成される。
冗長性削除部50は、共通式の削除や不用コードの削除
を行う。
を行う。
スカラ・ベクトル並列化部60は、データフロー解析部
20の解析結果とベクトル化ループ解析部40の解析結
果とを用いて、ベクトル化ループ外のスカラで実行され
る部分を、ベクトル化ループと並列に実行することがで
きる部分、および並列に実行できない部分に分離する。
20の解析結果とベクトル化ループ解析部40の解析結
果とを用いて、ベクトル化ループ外のスカラで実行され
る部分を、ベクトル化ループと並列に実行することがで
きる部分、および並列に実行できない部分に分離する。
本発明は、特にこの部分に係わる。
第2図はスカラ・ベクトル並列化部60の詳細構成で、
並列化処理候補検出部61、依存関係解析部62、シグ
ナル機能利用処理部63及び並列化可能部分分離部64
よりなる。
並列化処理候補検出部61、依存関係解析部62、シグ
ナル機能利用処理部63及び並列化可能部分分離部64
よりなる。
並列化処理候補検出部61は、ベクトル化ループ解析部
40の作成したループ情報テーブル200を入力し、ベ
クトル化ループに対して並列化処理の候補となる部分を
検出する。ループ情報テーブル200の構成は、第4図
に示すように次の4つのフィールドからなる。
40の作成したループ情報テーブル200を入力し、ベ
クトル化ループに対して並列化処理の候補となる部分を
検出する。ループ情報テーブル200の構成は、第4図
に示すように次の4つのフィールドからなる。
(1)ループ属性210
ベクトル化ループかそうでないかを示す。
(2)親ループへのポインタ220
(3)同レベルで直後のループへのポインタ230(4
)ループ構成ブロックリストへのポインタ該ループ制御
内のブロックを示し、ベクトル化対象となる所である。
)ループ構成ブロックリストへのポインタ該ループ制御
内のブロックを示し、ベクトル化対象となる所である。
二\で、ブロックとは制御の流れる方向が変化しない部
分の集合である。
分の集合である。
依存関係解析部62は、データフロー解析部20の作成
したデータ依存情報テーブル300を入力し、ベクトル
化ループと並列化可能な部分を解析する。データ依存情
報テーブル300の構成は第5図に示すように、参照エ
ントリテーブル、依存エントリテーブルの2つのテーブ
ルよりなり、各々次のフィールドからなる。
したデータ依存情報テーブル300を入力し、ベクトル
化ループと並列化可能な部分を解析する。データ依存情
報テーブル300の構成は第5図に示すように、参照エ
ントリテーブル、依存エントリテーブルの2つのテーブ
ルよりなり、各々次のフィールドからなる。
(a) 参照エントリテーブル
(1)依存エントリ°テーブルへのポインタ310(2
)参照エントリの属する文へのポインタ320(3)参
照点の種別330 変数が定義されているか、参照されているかの種別を示
す。
)参照エントリの属する文へのポインタ320(3)参
照点の種別330 変数が定義されているか、参照されているかの種別を示
す。
(b) 依存エントリテーブル
(1)依存種別340
変数の定義・参照チエイン、参照・定義チエインの種別
を示す。
を示す。
(2)参照エントリテーブルへのポインタ350定義さ
れた変数がどの文で参照されているか、あるいは参照さ
れた変数がどの文で定義されているかを示す。
れた変数がどの文で参照されているか、あるいは参照さ
れた変数がどの文で定義されているかを示す。
シグナル機能利用処理部63は、本発明の中心をなす多
部分であり、データフロー解析部20の作成したデータ
依存情報テーブル300とベクトル化ループ解析部40
の作成した中間語ループ構造100とを用いて、ベクト
ル化ループに対して並列化処理の候補とするスカラ部分
において、シグナル機能が適用できる部分を検出する。
部分であり、データフロー解析部20の作成したデータ
依存情報テーブル300とベクトル化ループ解析部40
の作成した中間語ループ構造100とを用いて、ベクト
ル化ループに対して並列化処理の候補とするスカラ部分
において、シグナル機能が適用できる部分を検出する。
並列化可能部分分離部64は、依存関係解析部62でベ
クトル化ループと並列化可能であると検出された文と並
列化可能部分との間に並列化不可能な文がある場合、文
と文とを結んでいるチエインを張替えることにより、並
列化可能であると検出された文を並列化不可能部分の前
に移動する。
クトル化ループと並列化可能であると検出された文と並
列化可能部分との間に並列化不可能な文がある場合、文
と文とを結んでいるチエインを張替えることにより、並
列化可能であると検出された文を並列化不可能部分の前
に移動する。
第3図はシグナル機能利用処理部63の処理フローを示
したものである。
したものである。
まず、ベクトル化ループに対して並列化処理候補となる
スカラ部分に含まれる文(Si)内の変数の依存種別を
調べる(処理631)。第6図はこれを説明する図であ
る。
スカラ部分に含まれる文(Si)内の変数の依存種別を
調べる(処理631)。第6図はこれを説明する図であ
る。
次に、文(Si)内の変数の依存種別が使用(u)され
ており、その変数の依存光がベクトル化ループを示し、
ベクトル化ループ内の文<Vj>で定義(d)されてい
る場合、その定義(d)の直前にVSiG命令を設定す
る(処理632)。
ており、その変数の依存光がベクトル化ループを示し、
ベクトル化ループ内の文<Vj>で定義(d)されてい
る場合、その定義(d)の直前にVSiG命令を設定す
る(処理632)。
第7図はこれを説明する図である。
次に、上記スカラ部分における使用(u)の直前にTR
3命令を設定する(処理633)。第8図はこれを説明
する図である。
3命令を設定する(処理633)。第8図はこれを説明
する図である。
以上の処理を行うことによって、第9図に示すように文
<Vj>の実行完了後、ベクトル化ループのベクトル部
分(v2)とスカラ部分(S2)とは並列に実行するこ
とが可能となる。
<Vj>の実行完了後、ベクトル化ループのベクトル部
分(v2)とスカラ部分(S2)とは並列に実行するこ
とが可能となる。
以上、本発明の一実施例を説明したが、本実施例によれ
ば、ベクトル化ループと並列実行可能なスカラ部分を拡
大することができる。この結果、スカラ処理ユニットと
ベクトル処理ユニットとの並列化効率を向上することが
でき、目的プログラムの実行時間を短縮することが出来
る。
ば、ベクトル化ループと並列実行可能なスカラ部分を拡
大することができる。この結果、スカラ処理ユニットと
ベクトル処理ユニットとの並列化効率を向上することが
でき、目的プログラムの実行時間を短縮することが出来
る。
以上説明したように、本発明のコンパイラ方式によれば
、生成された目的プログラムは、ベクトル化ループ外の
スカラ部分において、ベクトル化ループと並列実行可能
なスカラ部分を拡大することができるので、スカラ処理
ユニットとベクトル処理ユニットとの並列化効率を向上
することができ、目的プログラムの実行時間を短縮する
ことができるという効果がある。
、生成された目的プログラムは、ベクトル化ループ外の
スカラ部分において、ベクトル化ループと並列実行可能
なスカラ部分を拡大することができるので、スカラ処理
ユニットとベクトル処理ユニットとの並列化効率を向上
することができ、目的プログラムの実行時間を短縮する
ことができるという効果がある。
第1図は本発明の適用されるコンパイラの一実施例の全
体構成図、第2図は第1図におけるスカラ・ベクトル並
列化部の詳細構成図、第3図は第2図におけるシグナル
機能利用処理部の処理フロー図、第4図は第1図のベク
トル化ループ解析部で生成されるループ情報テーブルの
一例を示す図、第5図は第1図のデータフロー解析部で
生成されるデータ依存情報テーブルの一例を示す図、第
6図乃至第9図はシグナル機能利用処理部の処理を説明
する図、第10図はベクトルプロセッサの構成例を示す
図、第11図乃至第13図は従来技術を説明する図であ
る。 1°°・コンパイラ構成、 2・・・ソースプログラ
ム、3・・・目的プログラム、 4・・・ソースプログ
ラム解析部、 5・・・中間語最適化部、 6・・・ストレージ割付は部、 7・・・レジスタ割
付は部、 8・・・目的プログラム出方部、60・・・
スカラ・ベクトル並列化部、61・・・並列化処理候補
検出部、 62・・・依存関係解析部、 63・・・シグナル機能
利用処理部、 64・・・並列化可能部分分離部。 第 1 図 第2図 第 6 図 0020 Kml、 N 乏 10 C0NTINLIE 20 CoNTLNuE 第 7 図 り TOCoN71NLIE 20 CoNTINuE りSi ン <V3> ン 1o CoNTINLIE 20 CoNTINuE 20 CONTINtJE 第10図 文鐵゛プリ戸己3 1 S 2 D。 3 A P fOCoN 7 X= 二〇、0 10 I = 1. 100 (E) = 8(I、) 十〇(I) =StA(1) CI)=S本Q(1) 丁INtJE IS+z スカライ虻々 4卜や より 本末 Sl コZント フ1−肛VホT ζ ; ン象勤、II数!、レジ゛スタ(: 人ηう゛
レジ゛スク
体構成図、第2図は第1図におけるスカラ・ベクトル並
列化部の詳細構成図、第3図は第2図におけるシグナル
機能利用処理部の処理フロー図、第4図は第1図のベク
トル化ループ解析部で生成されるループ情報テーブルの
一例を示す図、第5図は第1図のデータフロー解析部で
生成されるデータ依存情報テーブルの一例を示す図、第
6図乃至第9図はシグナル機能利用処理部の処理を説明
する図、第10図はベクトルプロセッサの構成例を示す
図、第11図乃至第13図は従来技術を説明する図であ
る。 1°°・コンパイラ構成、 2・・・ソースプログラ
ム、3・・・目的プログラム、 4・・・ソースプログ
ラム解析部、 5・・・中間語最適化部、 6・・・ストレージ割付は部、 7・・・レジスタ割
付は部、 8・・・目的プログラム出方部、60・・・
スカラ・ベクトル並列化部、61・・・並列化処理候補
検出部、 62・・・依存関係解析部、 63・・・シグナル機能
利用処理部、 64・・・並列化可能部分分離部。 第 1 図 第2図 第 6 図 0020 Kml、 N 乏 10 C0NTINLIE 20 CoNTLNuE 第 7 図 り TOCoN71NLIE 20 CoNTINuE りSi ン <V3> ン 1o CoNTINLIE 20 CoNTINuE 20 CONTINtJE 第10図 文鐵゛プリ戸己3 1 S 2 D。 3 A P fOCoN 7 X= 二〇、0 10 I = 1. 100 (E) = 8(I、) 十〇(I) =StA(1) CI)=S本Q(1) 丁INtJE IS+z スカライ虻々 4卜や より 本末 Sl コZント フ1−肛VホT ζ ; ン象勤、II数!、レジ゛スタ(: 人ηう゛
レジ゛スク
Claims (1)
- (1)ソースプログラムを解析し、スカラ処理ユニット
とベクトル処理ユニットとで並列処理を可能とする目的
プログラムを生成するコンパイラ方式において、 ソースプログラムの中のベクトル化ループおよびそれ以
外のスカラ部分を検出し、 前記ベクトル化ループとスカラ部分とのデータ依存関係
を調べ、並列化可能部分及び並列化不可能部分に分離し
、 目的プログラム生成の際、ベクトル化ループの中の並列
化不可能部分の処理完了を示す命令をベクトル命令群の
中に挿入し、ベクトル化ループの中の並列化不可能部分
の処理が完了したか否かをテストする命令をスカラ命令
群の中に挿入することを特徴とするコンパイラ方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63039235A JPH01213721A (ja) | 1988-02-22 | 1988-02-22 | コンパイラ方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63039235A JPH01213721A (ja) | 1988-02-22 | 1988-02-22 | コンパイラ方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH01213721A true JPH01213721A (ja) | 1989-08-28 |
Family
ID=12547465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63039235A Pending JPH01213721A (ja) | 1988-02-22 | 1988-02-22 | コンパイラ方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH01213721A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012512449A (ja) * | 2008-12-16 | 2012-05-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 演算データ構造 |
-
1988
- 1988-02-22 JP JP63039235A patent/JPH01213721A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012512449A (ja) * | 2008-12-16 | 2012-05-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 演算データ構造 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3032031B2 (ja) | ループ最適化方法及び装置 | |
US6308316B1 (en) | Apparatus for analyzing operations of parallel processing system | |
JP6913693B2 (ja) | ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法 | |
JPS62159268A (ja) | マルチプロセツサシステム | |
US20060259747A1 (en) | Long instruction word processing with instruction extensions | |
Walsh et al. | Paragen: a novel technique for the autoparallelisation of sequential programs using gp | |
JPH01213721A (ja) | コンパイラ方式 | |
Midkiff | Automatic generation of synchronization instructions for parallel processors | |
JP3032030B2 (ja) | ループ最適化方法及び装置 | |
JPS62217325A (ja) | アセンブラコ−ド最適化方式 | |
JPS61245239A (ja) | 論理回路方式 | |
JPH03135630A (ja) | 命令スケジューリング方式 | |
JPH11242598A (ja) | コンパイル方法およびコンパイル装置ならびにオブジェクトプログラム実行方法およびオブジェクトプログラム実行装置ならびにプログラム記憶媒体 | |
JP2001297068A (ja) | 並列プログラム生成方法およびその記録媒体 | |
EP0244928A1 (en) | Improvements relating to control flow in computers | |
JP2004046747A (ja) | ベクトル化方式 | |
JPH03257579A (ja) | コンパイラの並列化方式 | |
JPS63285668A (ja) | ベクトルロ−ド処理方法 | |
JPS62206668A (ja) | 目的プログラムの並列化処理方式 | |
JP2019012324A (ja) | コンパイラ | |
JPH04155576A (ja) | コンパイル処理方式 | |
JPS6364173A (ja) | 自動ベクトル化方式 | |
JPS62127948A (ja) | プログラムデバッグ処理方式 | |
JPH0152779B2 (ja) | ||
JPH0279122A (ja) | 浮動小数点演算機構 |