JPH0291766A - 制御依存解析方式 - Google Patents

制御依存解析方式

Info

Publication number
JPH0291766A
JPH0291766A JP24250688A JP24250688A JPH0291766A JP H0291766 A JPH0291766 A JP H0291766A JP 24250688 A JP24250688 A JP 24250688A JP 24250688 A JP24250688 A JP 24250688A JP H0291766 A JPH0291766 A JP H0291766A
Authority
JP
Japan
Prior art keywords
control
branch
basic block
conditional
vector
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
Application number
JP24250688A
Other languages
English (en)
Inventor
Toshihiko Manabe
俊彦 真鍋
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP24250688A priority Critical patent/JPH0291766A/ja
Publication of JPH0291766A publication Critical patent/JPH0291766A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [発明の目的] (産業上の利用分野) 本発明はデータのベクトル化を行なうコンパイル処理機
能を有するデータ処理システムの制御依存解析方式に関
する。
(従来の技術) 近年、科学技術の進歩に伴ない大規模な数値計算を高速
に行なう必要性が高まり、この大規模な数値計算を効果
的に行なうために、いわゆるスーパーコンピュータが開
発され酋及してきている。
このスーパーコンピュータの多くはベクトル演算を基本
とすることにより、その高い性能を達成するベクトル計
算機であって、このベクトル計算機は、ベクトル演算機
能を持つベクトルプロセッサによって数値計算等のデー
タ処理が行なわれる。
またこのベクトル演算機能には、F ortran等の
言語で書かれたソースプログラムを自動的にベクトル演
算に変換する自動ベクトル化コンパイラが必須のものと
なっている。
また多くのスーパーコンピュータはマスクベクトルやリ
ストベクトルを用いて、各種条件に依存して実行される
文を処理している。換言すると自動ベクトル化コンパイ
ラは各文がどの条件に依存して実行されるかを示す関係
、すなわち制御関係を解析すると、この制御依存関係を
反映したマスクベクトルやリスクベクトルの生成と、そ
れらを利用した条件付きベクトル演算を生成するように
している。
従って、制御依存解析が正確に行なわれないと冗長なコ
ードが生成され、オブジェクトプログラムの実行効率は
大幅に低下する。
そのため、自動ベクトル化コンパイラにおいては、条件
分岐を含む各種のプログラムの正確な制御依存関係を解
析する処理方式が重要となる。
従来、制御依存解析として行なわれていたのは、I F
 −conversionと呼ばれる方式である。IF
−convers ionの方式では、条件分岐のとこ
ろを条件変数と呼ばれる変数に条件の結果を代入する式
に書き換え、条件分岐のかかる各文を条件変数を用いた
IF分に置き換えて解析するようにしている。
例えば、 do  100i−1,rl H<a  (i  )  、  (It、10.0) 
0Ot0 80a  (i  )  −a  (i  
)  +10.Oif (b  (i  ) 、  Q
C,10,0) goto 60b  (i  )  
−b  (i  )  +10.060  a  (i
  )=a  (i  )+b  (i  )80  
b  (i  )  −a  (i  )  −5,0
1oo  continue で表わされるプログラムは、 do 100 i−1,n bN −a  (i ) 、 Qt、10.0br2−
b  (i ) 、 (It、 10.Of(、brl
) a  (i ) −a  (i >+10.0if(1
br1. and 、 br2)b  (i ) −b
  (i )+10.0if(brl 、 or、  
(−、brl 、 and 、 、br2 ) )a 
 (i )=a  (i )+b  (i )if(b
rl、 or、  (−、brl、 and 、 br
2) 。
or、  (−、brl 、and 、 −1br2 
) )b  (i  )  −a  (i  )  −
5,01oo    Continue で示されるプログラムに書き換えられる。
この後、各文にかかる条件が複雑であるので、条件式の
簡単化が行われ、その結果に基づき、条件付きベクトル
コードの生成が行われる。尚、IF −convers
ionにツイテハ、J、R,A11enらによる” C
onversion  of  Control  D
 cpendence  to  D ata  D 
ependence″と題する論文に詳しい。
(発明が解決しようとする課題) しかしながら、従来性なわれていた[1”−C0nve
rsionによる手法においては、次に示すような課題
が残されていた。
(+)  I F −conversionで導入した
条件変数は論理式により表現されている。そのため、二
方向分岐の条件分岐はそのままの形で条件変数の表現に
置き換えることができるが、F ortranの算術I
F文や計尊型GOTO文のように多方向に分岐する条件
分岐は、二方向単位の条件分岐に分解しなくてはならな
い。したがって、多方向に分岐する条件分岐が存在する
と、複数の条件分岐に分けて処理する分、制御依存解析
に時間がかかり、さらには、冗長なコードを生成する危
険性も生じる。
(2)  各文にかかる条件変数の論理式を簡単化しな
ければならない。このとき、簡単化の処理を行なわない
ときには、冗長な条件を何回も調べるような非常に効率
の悪いコードが生成される虞れがある。しかし、論理式
の簡単化はいわゆるNP完全問題といえるものであるた
め、この簡単化の処理はコンパイル時間を増加させ、さ
らには、処理時間の制約から、十分な簡単化が行えない
場合さえある。
本発明は、上記事情に鑑みてなされたもので、その目的
としては、入力するソースプログラムに多方向の条件分
岐が存在するような場合であっても、高速かつ正確に制
御依存の解析を行ない、さらに最適な条件付きベクトル
コードの生成を可能とする制御依存解析方式を提供する
ことにある。
[発明の構成コ 〈課題を解決するための手段) 上記目的を達成するため、本発明はプログラム内の条件
によって設定される制御の分岐および合流を境目とする
基本ブロックに、当該プログラムを分割する基本ブロッ
ク生成手段と、この基本ブロック生成手段によって生成
される基本ブロック毎に、前記条件による分岐に係る制
御依存情報を生成する制御依存情報生成手段と、この制
御依存情報生成手段によって生成される制御依存情報に
従って、前記基本ブロック毎にベクトルコードを生成す
るベクトルコード生成手段と有して構成した。
(作用) 上記構成を備えた制御依存解析方式においては、まず入
力するプログラムを基本ブロック生成手段が当該プログ
ラム内の条件に従って設定される分岐および合流を境目
とする基本ブロックに分割する。このとき制御依存情報
生成手段によって逐次的にかつ効率的に制御依存関係が
解析され前記プログラムの条件による分岐に係る制御依
存情報が生成されるので、ベクトルコード生成手段は、
この制御依存情報に従って条件分岐を含むプログラムの
°ベクトル化を効率良く行なうことができる。
(実施例) 以下、図面を用いて本発明の一実施例を詳細に説明する
第1図は本発明に係る一制御依存解析方式の構成を示す
図である。以下、各構成要素毎に説明する。
基本ブロック生成部1はベクトル化の対象となるDoル
ープAを、IF文等の条件分岐や文番号のついた文で分
割して、制御の分岐のない基本ブロックを生成する。
基本ブロック情報記憶部3は、基本ブロック生成部1で
生成される基本ブロックとプログラム中の各文の対応関
係を記憶する。
ill依存情報記憶部5は、基本ブロック生成部1で生
成された基本ブロックの個数の行とループの中に含まれ
る条件分岐の個数の列をもつ、例えば第3図に示される
表の形式でIIJ l依存情報を記憶する。この第3図
に示される表を行単位で見ると各基本ブロックの制御依
存情報のリストになっている。すなわちこの表の各欄は
3ビツトからなり、プログラム中の3方向分岐まで対応
できるようになっている。この3ビツトの中の各ビット
は対応する条件分岐の何番目の分岐のl1tlllの下
にあるかを示す。msb側が一番目の分岐に対応し、I
sb側が三番目の分岐に対応する。
例えば、第4図を参照するにビットの値が1のとぎ当該
分岐の制御の下にあり、0であれば当該分岐の制御下に
ないのであるから、10.01の条件1の制御下にあり
、100,010.001は条件20制御下にあること
が示される。また、例えば、OOOはどの分岐の制御の
下にもないことを示す。
制御依存情報生成部5は各基本ブロックに対して、制御
依存情報を生成し、制御依存情報記憶部7に前記表形式
で登録する。すなわち、制御依存情報生成部5は、まず
この表のすべての欄をOOOの値に初期化しておく。次
に、先頭の基本ブロックに着目し、もしその末尾が条件
分岐であったならば、そこから分岐する基本ブロックに
対して、先頭の基本ブロックの末尾の条件分岐の何番目
の分岐の制御の下にあるかを表に登録する。
例えば、先頭の基本ブロックB1の末尾の条件分岐C1
の一番目の分岐の制御の基本ブロックB2が、また二番
目の分岐の制御の下に基本ブロックB3があるとすると
、この段階で基本ブロックB2と基本ブロックB3の制
御依存情報のリストは、 C1C2C3・・・ B2  100  000  000  ・・・B3 
 010  000  000  ・・・となる。また
、基本ブロックB1の末尾が条件分岐ではないときには
処理を行なわない。このようにして、順次基本ブロック
B1の後に続く基本ブロックについて同様に処理を繰り
返していく。
なお、制御依存情報のリストを登録するときには、条件
分岐の合流の様子を把持するために、すでに登録されて
いる古いリストとのORをとっていく。例えば、上記の
例で、基本ブロックB2の末尾の条件分岐C2の一番目
の分岐の制御の下に基本ブロックB3があるとき、その
ことを表現する Ci   C2C3・・・ B3  000  100  000  ・・・という
リストと、すでに登録されている古いリストとのORを
とった。
CI  C2C3・・・ 83  010 100 000  ・・・が基本ブロ
ックB3の制御依存情報の新しいリストとなる。この新
しいリストは、基本ブロックB3で条件分岐C1の二番
目の分岐と条件分岐C2の一番目の分岐が合流している
ことを表現している。また、ORをとったときに、二方
向分岐の条件分岐に対して1101三方向分岐の条件分
岐に対して111となる欄があった場合、その欄の値を
000に戻し、その欄に対応する条件のある基本ブロッ
クの条件分岐リストとORをする。それぞれの条件分岐
の所属する基本ブロックは基本プロツク情報記憶部2を
用いて調べる。例えば、上記の例で、C2の三方向の条
件分岐で、基本ブロックB3のリストのC2の欄が11
1になったとすると、リストのC2の欄を000に戻し
たCI  C2C3・・・ 83 010 000 000  ・・・と02のある
基本ブロックB2のリストとのORをとった CI   C2C3・・・ B3  110  000  000  ・・・が基本
ブロックB3の新しい制御依存情報のリストとなる。
この操作は、着目している基本ブロックですべての分岐
が合流する条件分岐があれば、その条件分岐がある基本
ブロックへかかる制御依存がそのまま着目している基本
ブロックにかかることを反映させるためものである。そ
して、この操作により、冗長なl1la依存情報は削除
される。
ベクトルコード生成部9は、制御依存情報生成部5がす
べての基本ブロックについて処理を終えたあと、基本ブ
ロック情報記憶部3と制御依存情報記憶部7の内容にし
たがって、条件付きベクトルコードを生成する。この実
施例では、リストベクトルを利用した”条件付きベクト
ルコードを生成する。また、この実施例のコンパイラの
対象となるマシンではリストベクトルの分類の機能があ
り、その機能は次のように表現される。
11V 1+−a  (1:n )、 let、  0
.0−(1)nv 2←b(nv 1 )、 it、 
 0.0−<2)(1)  式はベクトルaの連続する
n個の要素に関する条件から、その条件を満たす添字の
集合をリストベクトルΩv1として定義している。(2
)式は、(1)式で生成したリストベクトルQv1がさ
しているベクトルbの要素に関する条件から、その条件
を満たす添字の集合をリストベクトル1lV2として定
義している。
ベクトルコード生成部9は、プログラム中の各文を先頭
から一つずつ処理していく。すなわち、最初に着目して
いる文の所属する基本ブロックを基本ブロック情報記憶
部3の内容から調べ、次に制御依存情報記憶部7を用い
てその基本ブロックの制御依存情報のリストを参照する
。そして、そのリスト中で1であるところの分岐に対応
するリストベクトルを用いて条件付きベクトルコードを
生成する。着目している文が代入文であれば、通常のベ
クトル演算のコードが生成され、また、11文等の条件
分岐の文であれば、リストベクトル定義用コードが生成
される。
このとき、多方向分岐の場合は、二分岐の条件分岐のネ
ストに展開してからリストベクトル定義用コードを生成
する。
第2図はベクトル化対象のループのソースプログラムの
例である。枠で囲まれた文の集合が基本ブロック生成部
で分割される基本ブロックを構成する。第2図に示され
るプログラムでは81−86の6個の基本ブロックとC
l−02の2個の条件分岐がある。特に、C2は算術I
F文で三方向に分岐している。
第3図はベクトル対象のループのソースプログラムに対
して、111m依存情報生成部5が生成し、制御依存情
報記憶部7が記憶する、各基本プロッりの表形式の一制
御依存情報である。
この中で、基本ブロックB6は、条件分岐C2のすべて
の分岐が合流し、i、l] m依存情報の02の欄が1
11になる。そこで、C2の欄を000にもどした CI   C2 B6  000  000 というリストと、C2のある基本ブロックB2のリスト 1  C2 B2  010 000 のORをとった l  C2 が最終的なり6のtilltHI依存情報のリストにな
る。
第3図の内容にしたがってベクトルコード生成部におい
て条件付きベクトルコード jV 14−C(1:n ) 、 Iit 、0,0I
lv 2←a  (fly 1)、 9t  、0.0
jv 3←a  (jv 2)、 eo  、  0.
01iV  4←a  (QV  3)、  Qt  
、  0.Oa  HV  2) −a  (QV  
2)X  2.Oa  (nV 3) −(a(DV 
3) +10.0) X  2.Oa  (14) =
−a  (jv 4)x  2,0但し、Ωv1〜1v
4:リストベクトルを生成する。
算術IF文のところは 1t(a  (+ )、 Qt、 0.0) then
gOtO10 8iSe  it  (a  (i )、 eq、o、
o) thengoto  20 1se QOtO30 に展開してコードを生成している。
本実施例にれよれば、制御依存解析を行なう際に多方向
分岐の条件を変形することなく扱うので、余計な条件の
ネストや基本ブロックを生成しないで済み、また制御依
存情報を求める際にも簡単なビット単位の演算だけで行
なっているので、容易かつ効率良く制御依存関係の解析
を行なうことができる。
また、I F −conversionによる方式と異
なり、本実施例では逐次的な処理で冗長なtill′I
A依存関係を効率良く削除するため、制御依存関係の解
析の後に論理式の簡単化のための処理が不要となり、条
件分岐が多重にネストするようなプログラムであっても
高速に制御依存関係を解析することができる。さらに条
件付きベクトルコードの生成においても同様に複雑な処
理を必要としていない。
尚、本実施例では、リストベクトルにより条件付きベク
トルコードを生成するようにしたが、これに限定される
ことなく、マスクベクトルを利用した場合も同様に処理
を行ない得ることはいうまでもない。
[発明の効果] 以上説明したように、本発明によればF ortran
の算術IF文や割当て型GOTO文のように、多方向の
分岐が行われる文に対しても、制御依存を行う段階でそ
れを二分岐の条件分岐に分解していない。そのため、条
件分岐のネストを増やすこと無く制御依存の解析を行え
るので、多方向分岐の多い70グラムに対しても効率よ
くコンパイルすることができる。
また、I F−Conversionと異なり、制御依
存関係の解析の後で論理式の簡単化の処理が不要である
。そのような簡単化を行わなくても、解析の過程で、最
適な条件付きベクトルコードを生成するために必要な十
分な情報が得られる。そのため、条件分岐が多重にネス
トしたプログラムに対しても、効率よく制御依存関係の
解析が行え、さらにこれらの効果を非常に簡単な処理に
より実現することができる等の効果を奏する。
【図面の簡単な説明】
第1図は本発明の一実施例の構成を示すブロック図、第
2図は算術IF文を含んだプログラムの例、第3図は第
2図に示したプログラムの制御依存情報のリスト、第4
図は1ljtlO依存情報の生成を説明するための図で
ある。 1・・・基本ブロック生成部 3・・・基本ブロック情報記憶部 5・・・l1lIIl依存情報生成部 7・・・制御依存情報記憶部 9・・・ベクトルコード生成部 A・・・ベクトル化対象Doループ B・・・条件付きベクトルコード

Claims (1)

  1. 【特許請求の範囲】  プログラム内の条件によって設定される制御の分岐お
    よび合流を境目とする基本ブロックに当該プログラムを
    分割する基本ブロック生成手段と、この基本ブロック生
    成手段によって生成される基本ブロック毎に、分岐の性
    状を変更することなく前記条件による分岐に係る制御依
    存情報を生成する制御依存情報生成手段と、 この制御依存情報生成手段によつて生成される制御依存
    情報に従って、前記基本ブロック毎にベクトルコードを
    生成するベクトルコード生成手段と を有して、入力されるプログラムをベクトル化する際に
    制御依存関係を解析することを特徴とする制御依存解析
    方式。
JP24250688A 1988-09-29 1988-09-29 制御依存解析方式 Pending JPH0291766A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24250688A JPH0291766A (ja) 1988-09-29 1988-09-29 制御依存解析方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24250688A JPH0291766A (ja) 1988-09-29 1988-09-29 制御依存解析方式

Publications (1)

Publication Number Publication Date
JPH0291766A true JPH0291766A (ja) 1990-03-30

Family

ID=17090116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24250688A Pending JPH0291766A (ja) 1988-09-29 1988-09-29 制御依存解析方式

Country Status (1)

Country Link
JP (1) JPH0291766A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007072652A1 (ja) * 2005-12-22 2007-06-28 Syunichi Niihara プログラム処理パターン自動解析処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007072652A1 (ja) * 2005-12-22 2007-06-28 Syunichi Niihara プログラム処理パターン自動解析処理装置

Similar Documents

Publication Publication Date Title
JPH10228382A (ja) コンパイル方式
JPH06507990A (ja) コンピュータのための最適化コンパイラ
JPH0795274B2 (ja) 配列添字解析方法
Fauth et al. Automated generation of DSP program development tools using a machine description formalism
Schmidt et al. cuDTW++: ultra-fast dynamic time warping on CUDA-enabled GPUs
Walsh et al. Paragen: a novel technique for the autoparallelisation of sequential programs using gp
JPH0291766A (ja) 制御依存解析方式
Blech et al. A formal correctness proof for code generation from SSA form in Isabelle/HOL
WO2011090032A1 (ja) 並列処理プログラム生成方法、並列処理プログラム生成プログラム、及び並列処理プログラム生成装置
Shao et al. A survey of available information recovery of binary programs based on machine learning
Gurd et al. Generation of dataflow graphical object code for the lapse programming language
EP0244928A1 (en) Improvements relating to control flow in computers
Srikant et al. A new parallel algorithm for parsing arithmetic infix expressions
JPH02236638A (ja) レジスタ割付け管理方式
JP2000089964A (ja) 情報処理装置および方法、並びに提供媒体
Mihajlenko et al. A method for decompilation of AMD GCN kernels to OpenCL
JPH02132525A (ja) コンパイル方法
Treleaven Towards a decentralised general-purpose computer
JP3658771B2 (ja) コンパイラ装置
JP3057904B2 (ja) ベクトル化方式
CN114840555A (zh) 脚本优化方法、装置、设备及存储介质
JP2865694B2 (ja) コンパイル方法
Brabec Procedural code integration in streaming environments
Patnaik et al. DFL: a data flow language
Shriver et al. Dataflow