JPH0346863B2 - - Google Patents
Info
- Publication number
- JPH0346863B2 JPH0346863B2 JP58040296A JP4029683A JPH0346863B2 JP H0346863 B2 JPH0346863 B2 JP H0346863B2 JP 58040296 A JP58040296 A JP 58040296A JP 4029683 A JP4029683 A JP 4029683A JP H0346863 B2 JPH0346863 B2 JP H0346863B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- text
- unit
- statement
- mask
- 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
Links
Landscapes
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
〔発明の技術分野〕
本発明は、複数の並列演算部をそなえたベクト
ル処理プロセツサに対して、与えられたソース・
プログラムから目的プログラムを生成して供給す
るコンパイラにおいて、ループ構造内に条件文が
含まれる場合でも、ループ内の各文に対応して、
当該文を第1エレメントに対して実行するか否か
を、マスク情報として与えるようにして、並列実
行可能な形にして処理してゆく際、条件文の条件
式の真率および条件文によつて制御を受ける部分
の演算種類、ベクトル・データの種類、その引用
のされ方などの情報を予め収集し、最も適切な方
式でベクトル命令化するコンパイラにおける条件
文のベクトル命令化方式に関するものである。
ル処理プロセツサに対して、与えられたソース・
プログラムから目的プログラムを生成して供給す
るコンパイラにおいて、ループ構造内に条件文が
含まれる場合でも、ループ内の各文に対応して、
当該文を第1エレメントに対して実行するか否か
を、マスク情報として与えるようにして、並列実
行可能な形にして処理してゆく際、条件文の条件
式の真率および条件文によつて制御を受ける部分
の演算種類、ベクトル・データの種類、その引用
のされ方などの情報を予め収集し、最も適切な方
式でベクトル命令化するコンパイラにおける条件
文のベクトル命令化方式に関するものである。
例えば、第1図Aに示す如く、ベクトルAに属
するエレメントa1,a2,……とベクトルBに属す
るエレメントb1,b2,……との各エレメント相互
を加算して、エレメントc1,c2,……をもつベク
トルCを生成するような、ベクトル命令を実行す
るベクトル処理プロセツサが存在している。第1
図A図示の場合、第i番目のエレメント相互の加
算を行なうか否かをマスク・エレメントm1,
m2,……にて指示するようにされており、第1
図Bに一般化して示す如き処理が行なわれる。
するエレメント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はベクトル
長レジスタであつて各ベクトル・レジスタに格納
されるエレメントの個数情報がセツトされるも
の、12−0,12−1は夫々メモリ・アクセ
ス・パイプライン、13は加減算パイプライン、
14は乗算処理パイプライン、15は除算処理パ
イプライン、16はマスク処理パイプラインを表
わしている。
サを有するデータ処理システムは、一実施例とし
て第2図図示の如きシステム構成をもつている。
図中の符号1は主記憶装置、2はメモリ制御装
置、3はベクトル処理プロセツサ、4はチヤネ
ル・プロセツサ、5は大記憶装置、6はスカラ処
理回路部、7はベクトル処理回路部、8−0,8
−1,……は夫々浮動小数点データ・レジスタ、
9−0,9−1,……は夫々複数個のデータ(エ
レメント・データ)を格納し得るベクトル・レジ
スタ、10−0,10−1,……は夫々複数個の
マスク・データ(マスク・エレメント・データ)
を格納し得るマスク・レジスタ、11はベクトル
長レジスタであつて各ベクトル・レジスタに格納
されるエレメントの個数情報がセツトされるも
の、12−0,12−1は夫々メモリ・アクセ
ス・パイプライン、13は加減算パイプライン、
14は乗算処理パイプライン、15は除算処理パ
イプライン、16はマスク処理パイプラインを表
わしている。
上記の如きベクトル処理プロセツサが処理を実
行するに当つて、当該プロセツサが実行するに適
した形に、与えられたソース・プログラムをコン
パイルし目的プログラムを生成することが行なわ
れる。当該コンパイルを行なうコンパイラの構成
は第3図を参照して後述されるが、当該コンパイ
ラによるコンパイル処理に当つて、ループ構造を
もつプログラムにおいて、当該ループ内に例えば
IF文のような条件文が含まれていると、並列実
行可能部分を取出す(ベクトル化する)場合、実
行上の効率まで考えてはベクトル化していなかつ
た。従つて、条件文の種類、性質などによつては
実行効率の悪いことがあつた。
行するに当つて、当該プロセツサが実行するに適
した形に、与えられたソース・プログラムをコン
パイルし目的プログラムを生成することが行なわ
れる。当該コンパイルを行なうコンパイラの構成
は第3図を参照して後述されるが、当該コンパイ
ラによるコンパイル処理に当つて、ループ構造を
もつプログラムにおいて、当該ループ内に例えば
IF文のような条件文が含まれていると、並列実
行可能部分を取出す(ベクトル化する)場合、実
行上の効率まで考えてはベクトル化していなかつ
た。従つて、条件文の種類、性質などによつては
実行効率の悪いことがあつた。
本発明は、上記の考察に基づくものであつて、
条件文を含むプログラムのベクトル化に当たつ
て、条件文のベクトル命令として最適なものを生
成し、実行効率を上げることができる条件文のベ
クトル命令化方式を提供することを目的とするも
のである。
条件文を含むプログラムのベクトル化に当たつ
て、条件文のベクトル命令として最適なものを生
成し、実行効率を上げることができる条件文のベ
クトル命令化方式を提供することを目的とするも
のである。
そのために本発明のコンパイラにおける条件文
のベクトル命令化方式は、複数の並列演算部をそ
なえると共に複数個のレジスタを少なくともそな
えてベクトル命令を実行するベクトル処理プロセ
ツサに対して、与えられたソース・プログラムか
ら目的プログラムを生成して供給するコンパイラ
において、上記ソース・プログラムの文解釈を行
つて中間テキストに展開するソース解釈部、プロ
グラム中に出現する各種データに記憶域内番地を
割当てる記憶域割付け部、プログラム中のループ
構造を検出して並列実行可能部分の認識を行いか
つ上記中間テキスト変更を行うベクトル化部、中
間テキストのレベルで上記ベクトル処理プロセツ
サを有効に利用するための最適化を施す中間テキ
スト最適化部、中間テキストに現われたデータに
実際の資源を割当てるレジスタ使用決定部、及び
目的プログラム出力部をそなえてなり、更に、上
記ベクトル化部は、ループ内の条件文の存在をチ
エツクし、条件文が存在する場合に、ループ内の
各文に対応して当該文を第エレメントに対して
実行するか否かをマスク情報として与え、当該マ
スク情報を基に条件付の演算を行う複数の方式の
中から最適な方式を選び、当該方式によりベクト
ル・テキストを生成するように構成されたもので
あつて、上記複数の方式の夫々に対応して当該方
式によるベクトル・テキストを生成する複数のテ
キスト生成部、同一マスクで実行される中間テキ
スト群に対して演算の種類やベクトル・データの
種類、当該データの引用のされ方など実行時間の
計算の基礎となる情報を収集する情報収集部、上
記収集された情報を使つて上記複数の方式の夫々
によりベクトル・テキストを生成した場合の実行
時間を計算する実行時間計算部、及び夫々の方式
による上記実行時間を比較し、上記複数の方式か
ら適切な方式を選択する最適方式選択部を少なく
とも有し、上記複数のテキスト生成部は、上記最
適方式選択部によつて選択された方式に対応する
テキスト生成部が選択され当該選択された方式に
よるベクトル・テキストを生成するように構成さ
れたことを特徴とするものである。
のベクトル命令化方式は、複数の並列演算部をそ
なえると共に複数個のレジスタを少なくともそな
えてベクトル命令を実行するベクトル処理プロセ
ツサに対して、与えられたソース・プログラムか
ら目的プログラムを生成して供給するコンパイラ
において、上記ソース・プログラムの文解釈を行
つて中間テキストに展開するソース解釈部、プロ
グラム中に出現する各種データに記憶域内番地を
割当てる記憶域割付け部、プログラム中のループ
構造を検出して並列実行可能部分の認識を行いか
つ上記中間テキスト変更を行うベクトル化部、中
間テキストのレベルで上記ベクトル処理プロセツ
サを有効に利用するための最適化を施す中間テキ
スト最適化部、中間テキストに現われたデータに
実際の資源を割当てるレジスタ使用決定部、及び
目的プログラム出力部をそなえてなり、更に、上
記ベクトル化部は、ループ内の条件文の存在をチ
エツクし、条件文が存在する場合に、ループ内の
各文に対応して当該文を第エレメントに対して
実行するか否かをマスク情報として与え、当該マ
スク情報を基に条件付の演算を行う複数の方式の
中から最適な方式を選び、当該方式によりベクト
ル・テキストを生成するように構成されたもので
あつて、上記複数の方式の夫々に対応して当該方
式によるベクトル・テキストを生成する複数のテ
キスト生成部、同一マスクで実行される中間テキ
スト群に対して演算の種類やベクトル・データの
種類、当該データの引用のされ方など実行時間の
計算の基礎となる情報を収集する情報収集部、上
記収集された情報を使つて上記複数の方式の夫々
によりベクトル・テキストを生成した場合の実行
時間を計算する実行時間計算部、及び夫々の方式
による上記実行時間を比較し、上記複数の方式か
ら適切な方式を選択する最適方式選択部を少なく
とも有し、上記複数のテキスト生成部は、上記最
適方式選択部によつて選択された方式に対応する
テキスト生成部が選択され当該選択された方式に
よるベクトル・テキストを生成するように構成さ
れたことを特徴とするものである。
以下、本発明の実施例を図面を参照しつつ説明
する。
する。
第3図は本発明に用いるコンパイラの1実施例
構成を示す図、第4図はソース・プログラムを中
間テキストに移してゆく態様を説明する図、第5
図はソース・プログラムをベクトル化してゆく態
様を説明する図、第6図ないし第8図はIF文を
含むソース・プログラムに対して文マスクやパ
ス・マスクを用意して並列実行可能な形に変形し
てゆく態様を説明する図、第9図は本発明に用い
る条件付の演算の3つの方式による操作の様子を
説明する図、第10図は本発明に用いる条件付の
演算の3つの方式に基づいてベクトル・テキスト
を生成してゆく態様を説明する図、第11図はベ
クトル化部による本発明の処理の流れを示す図、
第12図はマスクの値がループ内で不変である場
合に実行部分迂回処理を行ないベクトル・テキス
トを生成してゆく態様を説明する図、第13図は
真率が0となつた場合の迂回処理を行ないベクト
ル・テキストを生成してゆく態様を説明する図で
ある。
構成を示す図、第4図はソース・プログラムを中
間テキストに移してゆく態様を説明する図、第5
図はソース・プログラムをベクトル化してゆく態
様を説明する図、第6図ないし第8図はIF文を
含むソース・プログラムに対して文マスクやパ
ス・マスクを用意して並列実行可能な形に変形し
てゆく態様を説明する図、第9図は本発明に用い
る条件付の演算の3つの方式による操作の様子を
説明する図、第10図は本発明に用いる条件付の
演算の3つの方式に基づいてベクトル・テキスト
を生成してゆく態様を説明する図、第11図はベ
クトル化部による本発明の処理の流れを示す図、
第12図はマスクの値がループ内で不変である場
合に実行部分迂回処理を行ないベクトル・テキス
トを生成してゆく態様を説明する図、第13図は
真率が0となつた場合の迂回処理を行ないベクト
ル・テキストを生成してゆく態様を説明する図で
ある。
第3図において、17は大記憶装置に格納され
ているソース・プログラム、18はコンパイラ、
19はコンパイルされて大記憶装置上に格納され
る目的プログラム、20はソース解釈部、21は
記憶域割付け部、22はベクトル化部、23は中
間テキスト最適化部、24はレシスタ使用決定
部、25は目的プログラム出力部を表わしてい
る。
ているソース・プログラム、18はコンパイラ、
19はコンパイルされて大記憶装置上に格納され
る目的プログラム、20はソース解釈部、21は
記憶域割付け部、22はベクトル化部、23は中
間テキスト最適化部、24はレシスタ使用決定
部、25は目的プログラム出力部を表わしてい
る。
コンパイラ18は、大記憶装置からソース・プ
ログラム17を取込んで、所望の目的プログラム
19を生成する。このとき図示の各部は次のよう
な処理を行う。
ログラム17を取込んで、所望の目的プログラム
19を生成する。このとき図示の各部は次のよう
な処理を行う。
即ち、ソース解釈部20はソース・プログラム
17を大記憶装置から取込み、文解釈を行つて中
間テキストに展開する。例えばソース・プログラ
ムが第4図図示左側の如き場合に図示右側に示す
如き中間テキストに展開する。記憶域割付け部2
1はプログラム内に出現する各種データに対応し
て記憶域内番地を割当てる。ベクトル化部22
は、プログラム中のループ構造を検出し、並列実
行可能部分を認識し、第5図図示の如く中間テキ
スト変更を行う。中間テキスト最適化部23は、
中間テキストのレベルで、第2図図示の如きベク
トル処理プロセツサを有効に利用するための最適
化を施す。レジスタ使用決定部24は、中間テキ
ストに現われたデータに対して、ベクトル処理プ
ロセツサ上の資源(レジスタ)を割当てる。そし
て目的プログラム出力部25は機械命令語を大記
憶装置へ出力しかつ命令語レベルでの最適化を行
う。
17を大記憶装置から取込み、文解釈を行つて中
間テキストに展開する。例えばソース・プログラ
ムが第4図図示左側の如き場合に図示右側に示す
如き中間テキストに展開する。記憶域割付け部2
1はプログラム内に出現する各種データに対応し
て記憶域内番地を割当てる。ベクトル化部22
は、プログラム中のループ構造を検出し、並列実
行可能部分を認識し、第5図図示の如く中間テキ
スト変更を行う。中間テキスト最適化部23は、
中間テキストのレベルで、第2図図示の如きベク
トル処理プロセツサを有効に利用するための最適
化を施す。レジスタ使用決定部24は、中間テキ
ストに現われたデータに対して、ベクトル処理プ
ロセツサ上の資源(レジスタ)を割当てる。そし
て目的プログラム出力部25は機械命令語を大記
憶装置へ出力しかつ命令語レベルでの最適化を行
う。
ベクトル処理プロセツサを稼働させるためのコ
ンパイラは第3図図示の如き構成をもつており、
ループ構成内にIF文をもたないプログラムにつ
いては第5図に概念的に示した如く並列実行可能
な形にして処理してゆくことが可能である。しか
し第6図に示す如きソース・プログラムが与えら
れると、当該ループ構成の中に「IF(A(1).GT.
B(1))GO TO 50」などのIF文が存在することか
ら、従来このようなループ構成については一般に
は並列実行可能な状態にないものとして処理され
ていた。しかし、当該プログラムの場合、IF文
の飛び先がループ内に止まつており、プログラム
中の個々の文について個々の処理に当つて当該文
を実行するか否かを文マスクmiにて指示する手
法を採用することによつて、上記並列実行可能な
ものとなることが判つた。
ンパイラは第3図図示の如き構成をもつており、
ループ構成内にIF文をもたないプログラムにつ
いては第5図に概念的に示した如く並列実行可能
な形にして処理してゆくことが可能である。しか
し第6図に示す如きソース・プログラムが与えら
れると、当該ループ構成の中に「IF(A(1).GT.
B(1))GO TO 50」などの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).GT.B(I)」なる条件以外のとき、当該
文30を実行するように指示すれば、IF文が第8図
図示の如く消滅する形となる。
処理を指示している。即ち、Iの値が「1」から
「N」になるまで繰返して文10ないし文70を実行
することを指示し、その間に文20によつて或るI
の値のときA(I)がB(I)よりも大となるならば文50
に飛び、また文40によつて或るIの値のときB(I)
がYよりも大となるならば文60に飛ぶことを指示
している。上記文マスクは、例えば文30に対応し
て「A(I).GT.B(I)」なる条件以外のとき、当該
文30を実行するように指示すれば、IF文が第8図
図示の如く消滅する形となる。
第7図は、第6図図示のプログラムを構成する
各文10ないし文70に対して、どのような文マスク
m10ないしm70を与えるかを説明する説明図を示
している。
各文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,30=20,50 が与えられる。この結果から文30に対応する文マ
スタm30は m30=20,50 となる。
のIについて実行する必要がある。このことから
文マスクm10として○/(空)となる。文20の場合
もm20として○/となる。文20から文50へ飛ぶルー
トは文20の条件「A(I).GT.B(I)」のときにとら
れるもので、当該パスに対してパス・マスク
P20,50として P20,50=A(I).GT.B(I) が与えられ、一方同様にパス・マスクP20,30とし
て P20,30=20,50 が与えられる。この結果から文30に対応する文マ
スタm30は m30=20,50 となる。
文40についての文マスクm40はm30と同じもの
となる。同じようにして、パス・マスクP40,60や
P40,50が図示の如く与えられ、文マスクm50は、
パス・マスクP20,50とP40,50との論理和をとつたも
のとなる。そして文マスクn60,n70は○/となる。
となる。同じようにして、パス・マスクP40,60や
P40,50が図示の如く与えられ、文マスクm50は、
パス・マスクP20,50とP40,50との論理和をとつたも
のとなる。そして文マスクn60,n70は○/となる。
このような文マスクmiを与えると、第6図図
示のプログラムは、第8図図示プログラムの如
く、IF文が存在しない形となつて、並列実行可
能な形となる。なお、第8図において、「:」を
附して示した所の「:M2」、「:M5」は対応する
文についての文マスクであると考えてよい。
示のプログラムは、第8図図示プログラムの如
く、IF文が存在しない形となつて、並列実行可
能な形となる。なお、第8図において、「:」を
附して示した所の「:M2」、「:M5」は対応する
文についての文マスクであると考えてよい。
このように一般には、()IF文を含むループ
内の各文に対応して文マスクを例えば第i番目の
文に対して文マスクmiとし与え、かつ()当
該第i番目の文がIF文でない場合に第(i+1)
番目の文に向うパスに対しパス・マスクPi、i+
1として値miを与え、()当該第i番目の文が
IF文である場合に当該IF文の条件をCiとすると
き条件成立によつて飛ぶ所の飛び先の第k番目の
文へのパスに対してパス・マスクPikとして mi.AND・Ci を与え、()当該第i番目の文がIF文である場
合に当該IF文の条件Ciの条件不成立によつて飛
ぶ所の飛び先の第k′番目の文へのパスに対してパ
ス・マスクPik′として mi.AND・ を与え、()上記文マスクmiを与えるに当つ
て、上記パス・マスクを調べて第i番目の文へ至
るパスに対応するパス・マスクPliについての論
理和をとる。即ち mi= U lPli(l≠i) で与えるようにし、IF文を含んでいる場合でも
並列実行可能な範囲を増大せしめるようにコンパ
イルする。以上のようなコンパイラ処理方式は、
本願と同一の出願人により先行発明(特願昭57−
31198号)として既に提案されている。
内の各文に対応して文マスクを例えば第i番目の
文に対して文マスクmiとし与え、かつ()当
該第i番目の文がIF文でない場合に第(i+1)
番目の文に向うパスに対しパス・マスクPi、i+
1として値miを与え、()当該第i番目の文が
IF文である場合に当該IF文の条件をCiとすると
き条件成立によつて飛ぶ所の飛び先の第k番目の
文へのパスに対してパス・マスクPikとして mi.AND・Ci を与え、()当該第i番目の文がIF文である場
合に当該IF文の条件Ciの条件不成立によつて飛
ぶ所の飛び先の第k′番目の文へのパスに対してパ
ス・マスクPik′として mi.AND・ を与え、()上記文マスクmiを与えるに当つ
て、上記パス・マスクを調べて第i番目の文へ至
るパスに対応するパス・マスクPliについての論
理和をとる。即ち mi= U lPli(l≠i) で与えるようにし、IF文を含んでいる場合でも
並列実行可能な範囲を増大せしめるようにコンパ
イルする。以上のようなコンパイラ処理方式は、
本願と同一の出願人により先行発明(特願昭57−
31198号)として既に提案されている。
また、ベクトル処理プロセツサには、マスク付
ベクトル演算の他に、IF文のような条件文を処
理するのに適した命令として、ベクトル・データ
をある条件の下で圧縮/拡散する命令、及びラン
ダムな位置にあるデータをアクセスできる命令が
ある。後者において、ランダムな位置を示すのに
はインデスク・リストという添字位置だけを集め
たデータ列を用いるため、このような命令のこと
をリスト処理命令ともいう。また、リスト処理命
令で扱われるベクトル・データのことをリスト・
ベクトルともいう。そして、これらの命令を用い
て条件付の演算を行う方式として3つの方式があ
り、その1つがマスク付演算方式であり、2つめ
が圧縮/拡散方式であり、3つめがリスト・ベク
トル方式である。それぞれの方式による Ai+Bi:Mi、i=1、2、……8 という条件付の演算の操作の様子を示したのが第
9図である。
ベクトル演算の他に、IF文のような条件文を処
理するのに適した命令として、ベクトル・データ
をある条件の下で圧縮/拡散する命令、及びラン
ダムな位置にあるデータをアクセスできる命令が
ある。後者において、ランダムな位置を示すのに
はインデスク・リストという添字位置だけを集め
たデータ列を用いるため、このような命令のこと
をリスト処理命令ともいう。また、リスト処理命
令で扱われるベクトル・データのことをリスト・
ベクトルともいう。そして、これらの命令を用い
て条件付の演算を行う方式として3つの方式があ
り、その1つがマスク付演算方式であり、2つめ
が圧縮/拡散方式であり、3つめがリスト・ベク
トル方式である。それぞれの方式による Ai+Bi:Mi、i=1、2、……8 という条件付の演算の操作の様子を示したのが第
9図である。
マスク付演算方式は、第9図Aに示すように、
演算マスク機能を利用し、マスク部が真の要素
(斜線部)だけを演算するものであり、全ベクト
ル要素を演算対象とするため、演算時間はベクト
ル要素数分だけ必要となるという点はデメリツト
であるが、補助操作がないという点がメリツトで
ある。
演算マスク機能を利用し、マスク部が真の要素
(斜線部)だけを演算するものであり、全ベクト
ル要素を演算対象とするため、演算時間はベクト
ル要素数分だけ必要となるという点はデメリツト
であるが、補助操作がないという点がメリツトで
ある。
圧縮/拡散方式は、第9図Bに示すように、演
算対象となつた要素をあらかじめ収集し、収集し
た要素(A、BからA′、B′へ)に対して演算を
行い、そして演算した結果をもとのベクトルに拡
散するものであり、対象ベクトル要素を圧縮/拡
散する補助操作を伴うという点はデメリツトであ
るが、対象ベクトル要素のみを演算するという点
がメリツトである。
算対象となつた要素をあらかじめ収集し、収集し
た要素(A、BからA′、B′へ)に対して演算を
行い、そして演算した結果をもとのベクトルに拡
散するものであり、対象ベクトル要素を圧縮/拡
散する補助操作を伴うという点はデメリツトであ
るが、対象ベクトル要素のみを演算するという点
がメリツトである。
リスト・ベクトル方式は、第9図Cに示すよう
に、演算対象となつた要素のインデクス・リスト
を作成し、このインデクス・リストに従つて対象
要素を取り出して演算するものであり、圧縮/拡
散方式と同様に、対象ベクトル要素のアクセスの
ためにインデクス・リストを作成する補助操作を
伴うという点はデメリツトであるが、対象ベクト
ル要素のみを演算するという点がメリツトであ
る。
に、演算対象となつた要素のインデクス・リスト
を作成し、このインデクス・リストに従つて対象
要素を取り出して演算するものであり、圧縮/拡
散方式と同様に、対象ベクトル要素のアクセスの
ためにインデクス・リストを作成する補助操作を
伴うという点はデメリツトであるが、対象ベクト
ル要素のみを演算するという点がメリツトであ
る。
従つて、マスク付演算方式は、他の2方式に比
べて演算時間が長いが、補助操作もなく最も広く
使え、条件文の真率が高い場合に特に有効であ
る。他方、圧縮/拡散方式は、集めたベクトル要
素を複数回利用したり、又はそれを基に縮小した
要素数で多くの演算(例えば関数演算)を行うの
に有効であり、また、リスト・ベクトル方式は、
演算対象ベクトル要素数が少ない(条件文の真率
が低い)場合に有効である。
べて演算時間が長いが、補助操作もなく最も広く
使え、条件文の真率が高い場合に特に有効であ
る。他方、圧縮/拡散方式は、集めたベクトル要
素を複数回利用したり、又はそれを基に縮小した
要素数で多くの演算(例えば関数演算)を行うの
に有効であり、また、リスト・ベクトル方式は、
演算対象ベクトル要素数が少ない(条件文の真率
が低い)場合に有効である。
本発明は、先に説明した第3図図示の如き構成
をもつたコンパイラのベクトル化部において、条
件文を含むループ内の各文に対して先に説明した
先行発明によりマスクが与えられた中間テキスト
を取出し、マスク付演算方式、圧縮/拡散方式及
びリスト・ベクトル方式のそれぞれの方式による
実行時間に差を生じる要因となる情報として、条
件式の真率及び条件文によつて制御を受ける部分
の演算種類、ベクトル・データの種類、その引用
のされ方などの情報を予め収集する。そして、そ
れらの情報に基づいて3つの方式のうち最も適切
な方式を選びベクトル命令化する。
をもつたコンパイラのベクトル化部において、条
件文を含むループ内の各文に対して先に説明した
先行発明によりマスクが与えられた中間テキスト
を取出し、マスク付演算方式、圧縮/拡散方式及
びリスト・ベクトル方式のそれぞれの方式による
実行時間に差を生じる要因となる情報として、条
件式の真率及び条件文によつて制御を受ける部分
の演算種類、ベクトル・データの種類、その引用
のされ方などの情報を予め収集する。そして、そ
れらの情報に基づいて3つの方式のうち最も適切
な方式を選びベクトル命令化する。
本発明では、先に述べた各方式での実行時間を
計算するために、同一マスクで実行される中間テ
キスト群に対して、条件文によつて制御を受ける
部分の演算の種類、ベクトル・データの種類、そ
の引用のされ方などの情報として例えば次のよう
な情報を収集する。
計算するために、同一マスクで実行される中間テ
キスト群に対して、条件文によつて制御を受ける
部分の演算の種類、ベクトル・データの種類、そ
の引用のされ方などの情報として例えば次のよう
な情報を収集する。
+、−、*などの演算数 ……ne
/(除算) ……nd
関数 ……nf
デイスタンス4or8のロード ……nl
デイスタンス4or8以外のロード ……nld
インダイレクトロード ……nli
デイスタンス4or8のストア ……ns
デイスタンス4or8以外のストア ……nsd
インダイレクトストア ……nsi
オペランドに直接出現する誘導変数
……nirdex 配列をアクセスするための誘導変数……nird vt/mt ……nvt また、この範囲のマスクの真率(条件式が成立
つtrue率)をtとする。マスク真率tはマスク生
成において設定されるものである。
……nirdex 配列をアクセスするための誘導変数……nird vt/mt ……nvt また、この範囲のマスクの真率(条件式が成立
つtrue率)をtとする。マスク真率tはマスク生
成において設定されるものである。
次に、収集した上記の各情報を元に、各方式に
より命令生成した場合のおよその実行時間を計算
する。
より命令生成した場合のおよその実行時間を計算
する。
マスク付演算方式により命令生成した場合のお
よその実行時間TMは、次式で求められる。
よその実行時間TMは、次式で求められる。
TM=TMLS+TEX ……(1)
ここで、TMLSはデータのロード、ストアにか
かる時間、TEXは演算部分の実行時間を表わす。
かる時間、TEXは演算部分の実行時間を表わす。
圧縮/拡散方式により命令生成した場合のおよ
その実行時間TCEは、次式で求められる。
その実行時間TCEは、次式で求められる。
TCE=TCELS+TCEAUX+TEX*t+TVL ……(2)
ここで、TCELSはデータのロード、ストアにか
かる時間、TCEAUXは補助操作のために、即ちデー
タの圧縮/拡散に要する時間、TVLはベクトル長
が変化することによつて余分にかかる時間、TEX
は(1)式と同じ内容の時間を表わす。
かる時間、TCEAUXは補助操作のために、即ちデー
タの圧縮/拡散に要する時間、TVLはベクトル長
が変化することによつて余分にかかる時間、TEX
は(1)式と同じ内容の時間を表わす。
リスト・ベクトル方式により命令生成した場合
のおよその実行時間TLは、次式で求められる。
のおよその実行時間TLは、次式で求められる。
TL=TLLS+TLAUX+TEX*t+TVL ……(3)
ここで、TLLSはデータのロード、ストアにかか
る時間、TLAUXは補助操作のために、即ちデータ
のアクセスのためのインデクス・リスト作成に要
する時間、TEXとTVLは(2)式と同じ内容の時間を
表わす。
る時間、TLAUXは補助操作のために、即ちデータ
のアクセスのためのインデクス・リスト作成に要
する時間、TEXとTVLは(2)式と同じ内容の時間を
表わす。
上記(1)ないし(3)式により各方式の実行時間TM、
TCE、TLが求められると、これらの実行時間を比
較し、最も実行時間が小さい方式を選択する。そ
して、その選択した方式によりベクトル・テキス
トを生成するが、それぞれの方式により生成され
るベクトル・テキストの例を示したのが第10図
である。
TCE、TLが求められると、これらの実行時間を比
較し、最も実行時間が小さい方式を選択する。そ
して、その選択した方式によりベクトル・テキス
トを生成するが、それぞれの方式により生成され
るベクトル・テキストの例を示したのが第10図
である。
例えば、
DO 10 I=1,N
IF (L(I))THEN
A(I)=B(I)+C(I)
END IF
10 CONTINUE
に対して、マスク付演算方式により生成されるベ
クトル・テキストを示したのが第10図Aであ
り、圧縮/拡散方式により生成されるベクトル・
テキストを示したのが第10図Bであり、リス
ト・ベクトル方式により生成されるベクトル・テ
キストを示したのが第10図Cである。なお、第
10図において、ON(mt1)はマスク中の真の要
素の個数を表わす。
クトル・テキストを示したのが第10図Aであ
り、圧縮/拡散方式により生成されるベクトル・
テキストを示したのが第10図Bであり、リス
ト・ベクトル方式により生成されるベクトル・テ
キストを示したのが第10図Cである。なお、第
10図において、ON(mt1)はマスク中の真の要
素の個数を表わす。
次にコンパイラのベクトル化部において、情報
の収集、各方式による実行時間の計算、最適な方
式の選択などを行い、ベクトル・テキストを生成
する処理の流れを第11図を参照しつつ説明す
る。
の収集、各方式による実行時間の計算、最適な方
式の選択などを行い、ベクトル・テキストを生成
する処理の流れを第11図を参照しつつ説明す
る。
プログラム中のループを取り出す。次にの
処理を行う。ループがなければ終了とする。
処理を行う。ループがなければ終了とする。
ループ内に条件文があるか否かを調べる。
Yesの場合にはの処理を行い。ONの場合
はの処理に戻る。
はの処理に戻る。
ループ内の各中間テキストのマスクが同じ部
分について取り出す。
分について取り出す。
マスクが一般のマスクである場合にはの処
理、マスクの値がループ内で不変である場合に
はの処理、マスクなしの場合にはの処理を
行う。ループ内の全ての中間テキストについて
処理が終つている場合にはの処理に戻る。
理、マスクの値がループ内で不変である場合に
はの処理、マスクなしの場合にはの処理を
行う。ループ内の全ての中間テキストについて
処理が終つている場合にはの処理に戻る。
解析対象範囲を決定し、情報収集を行う。次
にの処理を行う。
にの処理を行う。
各方式の実行時間の計算を行う。次にの処
理を行う。
理を行う。
計算した各方式の実行時間を比較し、最適な
方式の選択を行う。次にの処理を行う。
方式の選択を行う。次にの処理を行う。
真率が小さい場合の迂回処理を行う。即ち、
真率が0の可能性のある場合(外部から指定の
あつた場合)には、第13図に示すように実行
を迂回するテキストを出力する。
真率が0の可能性のある場合(外部から指定の
あつた場合)には、第13図に示すように実行
を迂回するテキストを出力する。
次にマスク付演算方式が選択されている場合
にはの処理を行い、圧縮/拡散方式が選択さ
れている場合にはの処理を行い、リスト・ベ
クトル方式が選択されている場合にはの処理
を行う。
にはの処理を行い、圧縮/拡散方式が選択さ
れている場合にはの処理を行い、リスト・ベ
クトル方式が選択されている場合にはの処理
を行う。
上記ないしの処理はマスクがループ内で
変化するときであり、IF文の条件式が例えば
第12図に示すように、ループ内で不変である
場合には、IF文をそのまま残し、命令選択処
理は行わない実行部分迂回処理を行う。次に
の処理を行う。
変化するときであり、IF文の条件式が例えば
第12図に示すように、ループ内で不変である
場合には、IF文をそのまま残し、命令選択処
理は行わない実行部分迂回処理を行う。次に
の処理を行う。
ベクトル・テキスト変換処理を行う。次に
の処理に戻る。
の処理に戻る。
データ圧縮処理を行う。次にの処理を行
う。
う。
リスト・ベクトルを生成する。次にの処理
を行う。
を行う。
ベクトル長再設定テキストを生成する。次に
の処理を行う。
の処理を行う。
命令選択範囲内の全テキストのベクトル・テ
キスト変換処理を行う。次にの処理を行う。
キスト変換処理を行う。次にの処理を行う。
ベクトル長再設定テキストを生成する。次に
圧縮/拡散方式が選択されている場合にはの
処理を行い、リスト・ベクトル方式が選択され
ている場合にはの処理に戻る。
圧縮/拡散方式が選択されている場合にはの
処理を行い、リスト・ベクトル方式が選択され
ている場合にはの処理に戻る。
データ拡散処理を行う。次にの処理に戻
る。
る。
以上の説明から明らかなように、本発明によれ
ば、条件文をベクトル化しようとする場合、条件
文の条件式の真率や条件文によつて制御を受ける
部分の演算種類、ベクトル・データの種類、その
引用のされ方などの情報を予め収集し、その情報
を元に3方式のうち最も適切な方式でベクトル命
令化するので、条件文を含むプログラムのベクト
ル化において、きめ細かいベクトル化が可能とな
り、実行効率を上げることができる。
ば、条件文をベクトル化しようとする場合、条件
文の条件式の真率や条件文によつて制御を受ける
部分の演算種類、ベクトル・データの種類、その
引用のされ方などの情報を予め収集し、その情報
を元に3方式のうち最も適切な方式でベクトル命
令化するので、条件文を含むプログラムのベクト
ル化において、きめ細かいベクトル化が可能とな
り、実行効率を上げることができる。
第1図はベクトル命令に対応した処理を概念的
に説明する図、第2図はベクトル処理プロセツサ
を有する処理システムの1例を示す図、第3図は
本発明に用いるコンパイラの1実施例構成を示す
図、第4図はソース・プログラムを中間テキスト
に移してゆく態様を説明する図、第5図はソー
ス・プログラムをベクトル化してゆく態様を説明
する図、第6図ないし第8図はIF文を含むソー
ス・プログラムに対して文マスクやパス・マスク
を用意して並列実行可能な形にしてゆく態様を説
明する図、第9図は本発明に用いる条件付の演算
の3つの方式による操作の様子を説明する図、第
10図は本発明に用いる条件付の演算の3つの方
式に基づいてベクトル・テキストを生成してゆく
態様を説明する図、第11図はベクトル化部によ
る本発明の処理の流れを示す図、第12図はマス
クの値がループ内で不変である場合に実行部分迂
回処理を行ないベクトル・テキストを生成してゆ
く態様を説明する図、第13図は真率が0となつ
た場合の迂回処理を行ないベクトル・テキストを
生成してゆく態様を説明する図である。 1……主記憶装置、2……メモリ制御装置、3
……ベクトル処理プロセツサ、4……チヤネル・
プロセツサ、5……大記憶装置、6……スカラ処
理回路部、7……ベクトル処理回路部、8−0な
いし8−n……浮動小数点データ・レジスタ、9
−0ないし9−n……ベクトル・レジスタ、10
−0ないし10−n……マスク・レジスタ、11
……ベクトル長レジスタ、12−0と12−1…
…メモリ・アクセス・パイプライン、13……加
減算パイプライン、14……乗算処理パイプライ
ン、15……除算処理パイプライン、16……マ
スク処理パイプライン、17……ソース・プログ
ラム、18……コンパイラ、19……目的プログ
ラム、20……ソース解釈部、21……記憶域割
付け部、22……ベクトル化部、23……中間テ
キスト最適化部、24……レジスタ使用決定部、
25……目的プログラム出力部。
に説明する図、第2図はベクトル処理プロセツサ
を有する処理システムの1例を示す図、第3図は
本発明に用いるコンパイラの1実施例構成を示す
図、第4図はソース・プログラムを中間テキスト
に移してゆく態様を説明する図、第5図はソー
ス・プログラムをベクトル化してゆく態様を説明
する図、第6図ないし第8図はIF文を含むソー
ス・プログラムに対して文マスクやパス・マスク
を用意して並列実行可能な形にしてゆく態様を説
明する図、第9図は本発明に用いる条件付の演算
の3つの方式による操作の様子を説明する図、第
10図は本発明に用いる条件付の演算の3つの方
式に基づいてベクトル・テキストを生成してゆく
態様を説明する図、第11図はベクトル化部によ
る本発明の処理の流れを示す図、第12図はマス
クの値がループ内で不変である場合に実行部分迂
回処理を行ないベクトル・テキストを生成してゆ
く態様を説明する図、第13図は真率が0となつ
た場合の迂回処理を行ないベクトル・テキストを
生成してゆく態様を説明する図である。 1……主記憶装置、2……メモリ制御装置、3
……ベクトル処理プロセツサ、4……チヤネル・
プロセツサ、5……大記憶装置、6……スカラ処
理回路部、7……ベクトル処理回路部、8−0な
いし8−n……浮動小数点データ・レジスタ、9
−0ないし9−n……ベクトル・レジスタ、10
−0ないし10−n……マスク・レジスタ、11
……ベクトル長レジスタ、12−0と12−1…
…メモリ・アクセス・パイプライン、13……加
減算パイプライン、14……乗算処理パイプライ
ン、15……除算処理パイプライン、16……マ
スク処理パイプライン、17……ソース・プログ
ラム、18……コンパイラ、19……目的プログ
ラム、20……ソース解釈部、21……記憶域割
付け部、22……ベクトル化部、23……中間テ
キスト最適化部、24……レジスタ使用決定部、
25……目的プログラム出力部。
Claims (1)
- 1 複数の並列演算部をそなえると共に複数個の
レジスタを少なくともそなえてベクトル命令を実
行するベクトル処理プロセツサに対して、与えら
れたソース・プログラムから目的プログラムを生
成して供給するコンパイラにおいて、上記ソー
ス・プログラムの文解釈を行つて中間テキストに
展開するソース解釈部、プログラム中に出現する
各種データに記憶域内番地を割当てる記憶域割付
け部、プログラム中のループ構造を検出して並列
実行可能部分の認識を行いかつ上記中間テキスト
変更を行うベクトル化部、中間テキストのレベル
で上記ベクトル処理プロセツサを有効に利用する
ための最適化を施す中間テキスト最適化部、中間
テキストに現われたデータに実際の資源を割当て
るレジスタ使用決定部、及び目的プログラム出力
部をそなえてなり、更に、上記ベクトル化部は、
ループ内の条件文の存在をチエツクし、条件文が
存在する場合に、ループ内の各文に対応して当該
文を第エレメントに対して実行するか否かをマ
スク情報として与え、当該マスク情報を基に条件
付の演算を行う複数の方式の中から最適な方式を
選び、当該方式によりベクトル・テキストを生成
するように構成されたものであつて、上記複数の
方式の夫々に対応して当該方式によるベクトル・
テキストを生成する複数のテキスト生成部、同一
マスクで実行される中間テキスト群に対して演算
の種類やベクトル・データの種類、当該データの
引用のされ方など実行時間の計算の基礎となる情
報を収集する情報収集部、上記収集された情報を
使つて上記複数の方式の夫々によりベクトル・テ
キストを生成した場合の実行時間を計算する実行
時間計算部、及び夫々の方式による上記実行時間
を比較し、上記複数の方式から適切な方式を選択
する最適方式選択部を少なくとも有し、上記複数
のテキスト生成部は、上記最適方式選択部によつ
て選択された方式に対応するテキスト生成部が選
択され当該選択された方式によるベクトル・テキ
ストを生成するように構成されたことを特徴とす
るコンパイラにおける条件文のベクトル命令化方
式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58040296A JPS59165147A (ja) | 1983-03-11 | 1983-03-11 | コンパイラにおける条件文のベクトル命令化方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58040296A JPS59165147A (ja) | 1983-03-11 | 1983-03-11 | コンパイラにおける条件文のベクトル命令化方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS59165147A JPS59165147A (ja) | 1984-09-18 |
| JPH0346863B2 true JPH0346863B2 (ja) | 1991-07-17 |
Family
ID=12576642
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP58040296A Granted JPS59165147A (ja) | 1983-03-11 | 1983-03-11 | コンパイラにおける条件文のベクトル命令化方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS59165147A (ja) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62248065A (ja) * | 1986-04-22 | 1987-10-29 | Fujitsu Ltd | スパ−ス行列の連立方程式の解法方式 |
| WO2014064798A1 (ja) | 2012-10-25 | 2014-05-01 | 富士通株式会社 | 実行制御方法及び情報処理装置 |
| US9411593B2 (en) | 2013-03-15 | 2016-08-09 | Intel Corporation | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
| JP7006097B2 (ja) * | 2017-09-29 | 2022-01-24 | 富士通株式会社 | コード生成装置、コード生成方法及びコード生成プログラム |
| JP2021093012A (ja) * | 2019-12-11 | 2021-06-17 | 富士通株式会社 | コンパイルプログラム、および情報処理装置 |
-
1983
- 1983-03-11 JP JP58040296A patent/JPS59165147A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS59165147A (ja) | 1984-09-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3311462B2 (ja) | コンパイル処理装置 | |
| US7725883B1 (en) | Program interpreter | |
| Tu | Automatic array privatization and demand-driven symbolic analysis | |
| JPH0695311B2 (ja) | コード最適化方法 | |
| CN104536898B (zh) | C程序并行区域的检测方法 | |
| Anantpur et al. | Taming control divergence in GPUs through control flow linearization | |
| JP2001166949A (ja) | シンボリック実行を用いてソースコードをコンパイルするための方法及び装置 | |
| US12039305B2 (en) | Method for compilation, electronic device and storage medium | |
| JPH07114473A (ja) | コンパイラの命令列最適化方法 | |
| JPH0346863B2 (ja) | ||
| Goubault | Generalized boxings, congruences and partial inlining | |
| Dhamdhere et al. | Characterization of program loops in code optimization | |
| JPH037989B2 (ja) | ||
| JPH0317136B2 (ja) | ||
| US20070118832A1 (en) | Method and apparatus for evolution of custom machine representations | |
| JPS58149567A (ja) | ベクトル・レングス制御範囲融合処理方式 | |
| JPS58149570A (ja) | ベクトル命令のスケジユ−リング処理方式 | |
| Lindahl et al. | Unboxed compilation of floating point arithmetic in a dynamically typed language environment | |
| JPS6321946B2 (ja) | ||
| JPH0152779B2 (ja) | ||
| JPS6319905B2 (ja) | ||
| JPH0142019B2 (ja) | ||
| JPS6319908B2 (ja) | ||
| JPH046020B2 (ja) | ||
| Uehara et al. | An automatic vectorizing/parallelizing Pascal compiler V-Pascal ver. 3 |