JP3047418B2 - ベクトル化処理方式 - Google Patents

ベクトル化処理方式

Info

Publication number
JP3047418B2
JP3047418B2 JP5171990A JP5171990A JP3047418B2 JP 3047418 B2 JP3047418 B2 JP 3047418B2 JP 5171990 A JP5171990 A JP 5171990A JP 5171990 A JP5171990 A JP 5171990A JP 3047418 B2 JP3047418 B2 JP 3047418B2
Authority
JP
Japan
Prior art keywords
array element
intermediate text
data dependency
inconsistent
parallel execution
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 - Lifetime
Application number
JP5171990A
Other languages
English (en)
Other versions
JPH03253969A (ja
Inventor
緑 藤巻
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP5171990A priority Critical patent/JP3047418B2/ja
Publication of JPH03253969A publication Critical patent/JPH03253969A/ja
Application granted granted Critical
Publication of JP3047418B2 publication Critical patent/JP3047418B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はベクトル化処理方式に関し、特にベクトル処
理プロセッサに対するコンパイラにおいて並列実行の可
能性の判定および並列実行可能部分のベクトル化処理を
行うベクトル化処理方式に関する。
〔従来の技術〕
ベクトル命令によるベクトル演算機能を有するベクト
ル処理プロセッサでは、ソースプログラム中のループ構
造(例えば、第2図に示すFORTRANソースプログラム中
のDOループ)中に2度以上現れる配列要素に関する実行
は、スカラ命令により順次実行した場合とベクトル命令
により並列実行した場合とで、同一配列要素への定義の
順序が異なることから実行結果に違いが生じる(その配
列要素に関して、並列実行に矛盾するデータ依存関係が
ある)ことがある。
従来、ベクトル処理プロセッサに対するコンパイラで
は、並列実行に矛盾するデータ依存関係がある配列要素
がループ構造中に存在する場合には、そのループ構造中
の文群をベクトル化する(それらの文群をオブジェクト
プログラム内のベクトル命令で実行する)ことはできな
かった(文の入れ換えにより並列実行に矛盾するデータ
依存関係を解消するコンパイラも存在するが、このよう
なコンパイラであっても文の入れ換えでは並列実行に矛
盾するデータ依存関係を解消することができない場合に
はそのループ構造中の文群をベクトル化することはでき
なかった)。
〔発明が解決しようとする課題〕
ベクトル演算機能を有するベクトル処理プロセッサに
おいては、一般にオブジェクトプログラム内のベクトル
命令によって実行される部分の割合を大きくすればする
ほど実行時間を短縮することができる。
ところが、上述した従来のベクトル化処理方式では、
並列実行に矛盾するデータ依存関係がある配列要素が存
在するループ構造中の文群をベクトル化することができ
ないので、ベクトル処理プロセッサの実行時間を十分に
短縮することができないという欠点がある。
本発明の目的は、上述の点に鑑み、並列実行に矛盾す
るデータ依存関係(特に、文の入れ換えでは解消できな
い並列実行に矛盾するデータ依存関係)がある配列要素
が存在するループ構造中の文群をベクトル化することを
可能とし、ベクトル処理プロセッサの実行時間を短縮す
ることができるベクトル化処理方式を提供することにあ
る。
〔課題を解決するための手段〕
本発明のベクトル化処理方式は、ベクトル演算機能を
有するベクトル処理プロセッサに対するコンパイラにお
いて、ソースプログラムを読み込み構文解析を行って中
間テキストを生成する構文解析手段と、この構文解析手
段により生成された中間テキストを入力してソースプロ
グラム中のループ構造を検出しそのループ構造中におい
て並列実行に矛盾するデータ依存関係がある配列要素が
存在するか否かを判定するデータ依存関係判定手段と、
このデータ依存関係判定手段において並列実行に矛盾す
るデータ依存関係があると判定された配列要素に対して
データ依存関係が並列実行に矛盾する要因を検査するデ
ータ依存関係矛盾要因検査手段と、このデータ依存関係
矛盾要因検査手段による検査に基づいて配列要素の添字
式の展開(ループ内で値が変化する式を配列要素の添字
式として持つ文を、ループ内不変式を配列要素の添字式
として持つ文に変形すること)が可能と判定した場合に
その展開により並列実行に矛盾するデータ依存関係の解
消を行う配列要素添字式展開処理手段と、この配列要素
添字式展開処理手段による並列実行に矛盾するデータ依
存関係の解消に基づいて前記構文解析手段により生成さ
れた中間テキストをベクトル命令を適用するための形式
に変形する中間テキスト変形手段と、この中間テキスト
変形手段により変形された中間テキストに基づいてオブ
ジェクトプログラムを生成するコード生成手段とを有す
る。
〔作用〕
本発明のベクトル化処理方式では、構文解析手段がソ
ースプログラムを読み込み構文解析を行って中間テキス
トを生成し、データ依存関係判定手段が構文解析手段に
より生成された中間テキストを入力してソースプログラ
ム中のループ構造を検出しそのループ構造中において並
列実行に矛盾するデータ依存関係がある配列要素が存在
するか否かを判定し、データ依存関係矛盾要因検査手段
がデータ依存関係判定手段において並列実行に矛盾する
データ依存関係があると判定された配列要素に対してデ
ータ依存関係が並列実行に矛盾する要因を検査し、配列
要素添字式展開処理手段がデータ依存関係矛盾要因検査
手段による検査に基づいて配列要素の添字式の展開(ル
ープ内で値が変化する式を配列要素の添字式として持つ
文を、ループ内不変式を配列要素の添字式として持つ文
に変形すること)が可能と判定した場合にその展開によ
り並列実行に矛盾するデータ依存関係の解消を行い、中
間テキスト変形手段が配列要素添字式展開処理手段によ
る並列実行に矛盾するデータ依存関係の解消に基づいて
構文解析手段により生成された中間テキストをベクトル
命令を適用するための形式に変形し、コード生成手段が
中間テキスト変形手段により変形された中間テキストに
基づいてオブジェクトプログラムを生成する。
〔実施例〕
次に、本発明について図面を参照して詳細に説明す
る。
第1図は、本発明のベクトル化処理方式の一実施例の
構成を示すブロック図である。本実施例のベクトル化処
理方式は、高級言語で書かれたソースプログラム1と、
コンパイラ2と、ベクトル処理プロセッサで実行される
オブジェクトプログラム3とを含んで構成されている。
コンパイラ2は、ベクトル化処理手段4と、構文解析
手段21と、コード生成手段26と、中間テキスト27とを含
んで構成されている。
ベクトル化処理手段4は、データ依存関係判定手段22
と、データ依存関係矛盾要因検査手段23と、配列要素添
字式展開処理手段24と、中間テキスト変形手段25とを含
んで構成されている。
なお、第1図中の太い矢線は制御の流れを示してお
り、細い矢線はデータの流れを示している。
次に、このように構成された本実施例のベクトル化処
理方式の動作について説明する。
コンパイラ2内の構文解析手段21は、ソースプログラ
ム1を読み込み、構文解析を行い、中間テキスト27を生
成する。例えば、第2図に示すようなソースプログラム
1(FORTRANソースプログラム)を読み込み、第4図に
示すような中間テキスト27(形式1中間テキスト)を生
成する。
ベクトル化処理手段4内のデータ依存関係判定手段22
は、構文解析手段21により生成された中間テキスト27に
基づいてソースプログラム1中のループ構造を検出する
と、そのループ構造中に並列実行に矛盾するデータ依存
関係がある配列要素が存在するか否かを次の手順で判定
する。
(1) ループ構造中に含まれる全ての配列要素を検出
し、各配列要素について第6図に示すような配列要素テ
ーブルを作成する。
例えば、第2図のDOループ(第2図に示すソースプロ
グラム1におけるループ構造)の場合には、配列要素A
(I),A(I+1),B(I),B(I),B(I),C(I)
およびD(I)に対して各々配列要素テーブルを作成す
る。
さらに、各配列要素の添字式を初期値,増分値および
終値を表す形に変形し、これらを対応する配列要素テー
ブルの対応するフィールド(「添字式」フィールド,
「添字式の初期値」フィールド,「添字式の増分値」フ
ィールドおよび「添字式の終値」フィールド)に設定す
る。
また、各配列要素テーブル内のデータ依存フラグ
(「データ依存フラグ」フィールドにおけるフラグ)を
オフとする。
(2) 形式1中間テキストおよび配列要素テーブルか
ら、ループ構造中に2度以上現れる配列要素について、
スカラ命令により順次実行した場合とベクトル命令によ
り並列実行した場合とで同一配列要素への定義の順序ま
たは定義・引用の順序が異なることから実行結果に違い
が生じるか否かを調べる。
この調査で実行結果に違いが生じる場合には、その配
列要素に関して並列実行に矛盾するデータ依存関係があ
ると判定する。
このように、並列実行に矛盾するデータ依存関係があ
る配列要素が存在すると判定した場合には、当該配列要
素の配列要素テーブルのデータ依存フラグをオンにし、
第6図に示すようなデータ依存スタックを作成し、その
データ依存スタック内の「矛盾するデータ依存関係にあ
る配列要素テーブルへのポインタ」フィールドに当該配
列要素に対して並列実行に矛盾するデータ依存関係があ
る配列要素の配列テーブルへのポインタを格納する。
例えば、第2図のDOループの場合には、DOループ中に
2度以上現れる配列要素A(I)およびA(I+1)な
らびに配列要素B(I)がデータ依存関係の検査の対象
とされる。ここで、配列要素A(I)およびA(I+
1)に対しては、スカラ命令により順次実行した場合と
ベクトル命令により並列実行した場合とで、同一配列要
素への定義の順次が異なるために、実行結果に違いが生
じる。よって、並列実行に矛盾するデータ依存関係があ
ると判定し、配列要素A(I)およびA(I+1)の配
列要素テーブルに対応するデータ依存スタックが作成さ
れる。
データ依存関係矛盾要因検査手段23は、データ依存関
係判定手段22によりデータ依存フラグがオンにされた配
列要素テーブルと当該配列要素テーブルに対応するデー
タ依存スタックとから、以下の条件(a)〜(c)が全
て満たされているか否かを調べ、データ依存関係が並列
実行に矛盾する要因を検査する。
条件(a) 並列実行に矛盾するデータ依存関係がある
2つの配列要素が共に定義されている。
条件(b) 並列実行に矛盾するデータ依存関係がある
2つの配列要素の添字式の増分値が等しい。
条件(c) 並列実行に矛盾するデータ依存関係がある
2つの配列要素間の添字式の初期値の差が各配列要素の
添字式の増分値の倍数である。
以上の条件(a)〜(c)が全て満たされている場合
には、次式によってデータ依存回次数の値を求め、その
値をデータ依存スタック内の「データ依存回次数」フィ
ールドに設定する。
データ依存回次数=配列要素間の添字式の初期値の差
/配列要素の添字式の増分値 第7図は、このような設定が行われた後における、第
2図のDOループの場合の配列要素A(I)およびA(I
+1)の配列要素テーブルおよび当該配列要素テーブル
に対応するデータ依存スタックの状態を示す図である。
配列要素添字式展開処理手段24は、次のような処理を
行う。
(1) データ依存フラグがオンの配列要素テーブルに
対応するデータ依存スタック内の「データ依存回次数」
フィールドを調べ、そのデータ依存回次数が1の場合に
はその配列要素の添字式が展開可能であると判定する。
(2) (1)で配列要素の添字式が展開可能と判定さ
れた場合には、その配列要素の添字式の終値を用いてデ
ータ依存スタック内の「矛盾するデータ依存関係にある
配列要素テーブルへのポインタ」フィールドが指してい
る配列要素テーブルに対する配列要素を含む文の添字式
を展開してループ内不変式に変形する。
例えば、第2図のDOループの場合には、配列要素A
(I)およびA(I+1)の配列要素テーブルに対応す
るデータ依存スタックのデータ依存回次数は1であるた
め、第2図のの文中の配列要素の添字式が展開可能と
判断され、第2図のの文が第3図のの文(添字式が
ループ内不変式である配列要素を含む文)のように変形
される。これにより、配列要素A(I)と配列要素A
(I+1)との間の並列実行に矛盾するデータ依存関係
が解消される。
中間テキスト変形手段25は、中間テキスト27をベクト
ル命令を適用するための形式に変形する。
例えば、第2図に示すようなソースプログラム1の入
力があたかも第3図に示すようなソースプログラムの入
力と等価となるように、第4図に示すような中間テキス
ト27(形式1中間テキスト)を第5図に示すような中間
テキスト27(形式2中間テキスト)に変形する。
コード生成手段26は、ベクトル化処理手段4から制御
を渡され、中間テキスト変形手段25により変形された中
間テキスト27(例えば、第5図に示すような形式2中間
テキスト)を入力し、その中間テキスト27に基づいてオ
ブジェクトプログラム3を生成する。
〔発明の効果〕
以上説明したように本発明は、ベクトル処理プロセッ
サにおいて、従来ベクトル化が不可能であったループ構
造中の文群のベクトル化が可能となることにより、ベク
トル処理プロセッサの実行時間を短縮することができる
という効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例の構成を示すブロック図、 第2図は第1図中のソースプログラムの一例を示す図、 第3図は第2図に示すソースプログラムにおける並列実
行に矛盾するデータ依存関係を解消するためのソースプ
ログラムの修正の態様を示す図、 第4図は第2図に示すソースプログラムに対応する第1
図中の中間テキスト(第1図中の構文解析手段により生
成される形式1中間テキスト)を示す図、 第5図は第3図に示すソースプログラムに対応する第1
図中の中間テキスト(第1図中のコード生成手段により
入力される形式2中間テキスト)を示す図、 第6図は第1図中のデータ依存関係判定手段により作成
される配列要素テーブルおよびデータ依存スタックを示
す図、 第7図は配列要素テーブルおよびデータ依存スタックに
対する第1図中のデータ依存関係矛盾要因検査手段の処
理の態様を説明するための図である。 図において、 1……ソースプログラム、 2……コンパイラ、 3……オブジェクトプログラム、 4……ベクトル化処理手段、 21……構文解析手段、 22……データ依存関係判定手段、 23……データ依存関係矛盾要因検査手段、 24……配列要素添字式展開処理手段、 25……中間テキスト変形手段、 26……コード生成手段、 27……中間テキストである。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】ベクトル演算機能を有するベクトル処理プ
    ロセッサに対するコンパイラにおいて、 ソースプログラムを読み込み構文解析を行って中間テキ
    ストを生成する構文解析手段と、 この構文解析手段により生成された中間テキストを入力
    してソースプログラム中のループ構造を検出しそのルー
    プ構造中において並列実行に矛盾するデータ依存関係が
    ある配列要素が存在するか否かを判定するデータ依存関
    係判定手段と、 このデータ依存関係判定手段において並列実行に矛盾す
    るデータ依存関係があると判定された配列要素に対して
    データ依存関係が並列実行に矛盾する要因を検査するデ
    ータ依存関係矛盾要因検査手段と、 このデータ依存関係矛盾要因検査手段による検査に基づ
    いて「ループ内で値が変化する式を配列要素の添字式と
    して持つ文を、ループ内不変式を配列要素の添字式とし
    て持つ文に変形すること」という内容の配列要素の添字
    式の展開が可能と判定した場合にその展開により並列実
    行に矛盾するデータ依存関係の解消を行う配列要素添字
    式展開処理手段と、 この配列要素添字式展開処理手段による並列実行に矛盾
    するデータ依存関係の解消に基づいて前記構文解析手段
    により生成された中間テキストをベクトル命令を適用す
    るための形式に変形する中間テキスト変形手段と、 この中間テキスト変形手段により変形された中間テキス
    トに基づいてオブジェクトプログラムを生成するコード
    生成手段と を有することを特徴とするベクトル化処理方式。
JP5171990A 1990-03-05 1990-03-05 ベクトル化処理方式 Expired - Lifetime JP3047418B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5171990A JP3047418B2 (ja) 1990-03-05 1990-03-05 ベクトル化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5171990A JP3047418B2 (ja) 1990-03-05 1990-03-05 ベクトル化処理方式

Publications (2)

Publication Number Publication Date
JPH03253969A JPH03253969A (ja) 1991-11-13
JP3047418B2 true JP3047418B2 (ja) 2000-05-29

Family

ID=12894700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5171990A Expired - Lifetime JP3047418B2 (ja) 1990-03-05 1990-03-05 ベクトル化処理方式

Country Status (1)

Country Link
JP (1) JP3047418B2 (ja)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
情報処理学会第32回全国大会講演論文集,p.407−408

Also Published As

Publication number Publication date
JPH03253969A (ja) 1991-11-13

Similar Documents

Publication Publication Date Title
US5651111A (en) Method and apparatus for producing a software test system using complementary code to resolve external dependencies
US6553362B2 (en) Case-reduced verification condition generation system and method using weakest precondition operator expressed using strongest postcondition operators
US8122440B1 (en) Method and apparatus for enumerating external program code dependencies
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
Namjoshi et al. A self-certifying compilation framework for webassembly
JP3047418B2 (ja) ベクトル化処理方式
JP2621555B2 (ja) ベクトル化処理方式
US20140173572A1 (en) Constraint derivation in context following for use with object code insertion
JPH01177165A (ja) 配列の定義/引用関係検査方式
JPH09282173A (ja) プログラムの静的解析方法
JP2864589B2 (ja) 関数値差異出力システム
JPS63296171A (ja) ベクトル化処理方式
JPH10312312A (ja) 仕様によって動作が変わるc言語の計算機プログラム検査処理方法およびプログラム記憶媒体
Wang et al. Three Algorithms for Converting Control Flow Statements from Python to XD-M
JPH09319591A (ja) ループ外への条件付き飛び出しがあるループの並列化方式
JP3367438B2 (ja) 条件実行処理装置
JP3167386B2 (ja) プログラム自動並列化方法
JPS6358574A (ja) ベクトル化処理方式
JPH04364537A (ja) 並列処理用プログラム最適化方法、装置およびコンパイラ
JPS58169637A (ja) コンパイル処理方式
JPH10207738A (ja) 言語処理システム
KLINT AFDELING INFORMATICA
JPH03116241A (ja) コンパイラ
JPH10333919A (ja) 言語処理装置、計算機およびプログラムを記録した媒体
JPH02214974A (ja) ベクトル化処理方式