JPH03260865A - ベクトル化処理方式 - Google Patents
ベクトル化処理方式Info
- Publication number
- JPH03260865A JPH03260865A JP2060716A JP6071690A JPH03260865A JP H03260865 A JPH03260865 A JP H03260865A JP 2060716 A JP2060716 A JP 2060716A JP 6071690 A JP6071690 A JP 6071690A JP H03260865 A JPH03260865 A JP H03260865A
- Authority
- JP
- Japan
- Prior art keywords
- intermediate text
- array element
- parallel execution
- vector
- data
- 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.)
- Granted
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Complex Calculations (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はベクトル化処理方式に関し、特にベクトル処理
プロセンサに対するコンパイラにおいて並列実行の可能
性の判定および並列実行可能部分のベクトル化処理を行
うベクトル化処理方式に関する。
プロセンサに対するコンパイラにおいて並列実行の可能
性の判定および並列実行可能部分のベクトル化処理を行
うベクトル化処理方式に関する。
〔従来の技術)
ベクトル命令によるベクトル演算機能を有するベクトル
処理プロセッサでは、ソースプログラム中のループ構造
(例えば、第2図に示すFORTRANソースプログラ
ム中のDO小ループ中に2度以上現れる配列要素に関す
る実行は、スカラ命令により順次実行した場合とベクト
ル命令により並列実行した場合とで、同一配列要素への
定義の順序が異なることから実行結果に違いが生しる(
その配列要素に関して、並列実行に矛盾するデータ依存
関係がある)ことがある。
処理プロセッサでは、ソースプログラム中のループ構造
(例えば、第2図に示すFORTRANソースプログラ
ム中のDO小ループ中に2度以上現れる配列要素に関す
る実行は、スカラ命令により順次実行した場合とベクト
ル命令により並列実行した場合とで、同一配列要素への
定義の順序が異なることから実行結果に違いが生しる(
その配列要素に関して、並列実行に矛盾するデータ依存
関係がある)ことがある。
従来、ベクトル処理プロセッサに対するコンパイラでは
、並列実行に矛盾するデータ依存関係がある配列要素が
ループ構造中に存在する場合には、そのループ構造中の
文群をベクトル化する(それらの文群をオブジェクトプ
ログラム内のベクトル命令で実行する)ことはできなか
った(文の入れ換えにより並列実行に矛盾するデータ依
存関係を解消するコンパイラも存在するが、このような
コンパイラであっても文の入れ換えでは並列実行に矛盾
するデータ依存関係を解消することができない場合には
そのループ構造中の文群をベクトル化することはできな
かった)。
、並列実行に矛盾するデータ依存関係がある配列要素が
ループ構造中に存在する場合には、そのループ構造中の
文群をベクトル化する(それらの文群をオブジェクトプ
ログラム内のベクトル命令で実行する)ことはできなか
った(文の入れ換えにより並列実行に矛盾するデータ依
存関係を解消するコンパイラも存在するが、このような
コンパイラであっても文の入れ換えでは並列実行に矛盾
するデータ依存関係を解消することができない場合には
そのループ構造中の文群をベクトル化することはできな
かった)。
ベクトル演算機能を有するベクトル処理プロセッサにお
いては、−aにオブジェクトプログラム内のベクトル命
令によって実行される部分の割合を大きくすればするほ
ど実行時間を短縮することができる。
いては、−aにオブジェクトプログラム内のベクトル命
令によって実行される部分の割合を大きくすればするほ
ど実行時間を短縮することができる。
ところが、上述した従来のベクトル化処理方式では、並
列実行に矛盾するデータ依存関係がある配列要素が存在
するループ構造中の文群をベクトル化することができな
いので、ベクトル処理プロセンサの実行時間を十分に短
縮することができないという欠点がある。
列実行に矛盾するデータ依存関係がある配列要素が存在
するループ構造中の文群をベクトル化することができな
いので、ベクトル処理プロセンサの実行時間を十分に短
縮することができないという欠点がある。
本発明の目的は、上述の点に鑑み、並列実行に矛盾する
データ依存関係(特に、文の入れ換えでは解消できない
並列実行に矛盾するデータ依存関係)がある配列要素が
存在するループ構造中の文群をベクトル化することを可
能とし、ベクトル処理プロセッサの実行時間を短縮する
ことができるベクトル化処理方式を提供することにある
。
データ依存関係(特に、文の入れ換えでは解消できない
並列実行に矛盾するデータ依存関係)がある配列要素が
存在するループ構造中の文群をベクトル化することを可
能とし、ベクトル処理プロセッサの実行時間を短縮する
ことができるベクトル化処理方式を提供することにある
。
本発明のベクトル化処理方式は、ベクトル演算機能を有
するベクトル処理プロセッサに対するコンパイラにおい
て、ソースプログラムを読み込み構文解析を行って中間
テキストを生成する横文解析手段と、この構文解析手段
にまり生成された中間テキストを入力してソースプログ
ラム中のループ構造を検出しそのループ構造中において
並列実行に矛盾するデータ依存関係がある配列要素が存
在するか否かを判定するデータ依存関係判定手段と、こ
のデータ依存関係判定手段において並列実行に矛盾する
データ依存関係があると判定された配列要素に対してデ
ータ依存関係が並列実行に矛盾する要因を検査するデー
タ依存関係矛盾要因検査手段と、このデータ依存関係矛
盾要因検査手段による検査に基づいてベクトル長の再設
定が可能と判定した場合にベクトル長を再設定し同一配
列要素へのアクセスが重複しないように配列要素の添字
式を変形することにより並列実行に矛盾するデータ依存
関係の解消を行うベクトル長再設定手段と、このベクト
ル長再設定手段による並列実行に矛盾するデータ依存関
係の解消に基づいて前記構文解析手段により生成された
中間テキストをベクトル命令を適用するための形式に変
形する中間テキスト変形手段と、この中間テキスト変形
手段により変形された中間テキストに基づいてオブジェ
クトプログラムを生成するコード生成手段とを有する。
するベクトル処理プロセッサに対するコンパイラにおい
て、ソースプログラムを読み込み構文解析を行って中間
テキストを生成する横文解析手段と、この構文解析手段
にまり生成された中間テキストを入力してソースプログ
ラム中のループ構造を検出しそのループ構造中において
並列実行に矛盾するデータ依存関係がある配列要素が存
在するか否かを判定するデータ依存関係判定手段と、こ
のデータ依存関係判定手段において並列実行に矛盾する
データ依存関係があると判定された配列要素に対してデ
ータ依存関係が並列実行に矛盾する要因を検査するデー
タ依存関係矛盾要因検査手段と、このデータ依存関係矛
盾要因検査手段による検査に基づいてベクトル長の再設
定が可能と判定した場合にベクトル長を再設定し同一配
列要素へのアクセスが重複しないように配列要素の添字
式を変形することにより並列実行に矛盾するデータ依存
関係の解消を行うベクトル長再設定手段と、このベクト
ル長再設定手段による並列実行に矛盾するデータ依存関
係の解消に基づいて前記構文解析手段により生成された
中間テキストをベクトル命令を適用するための形式に変
形する中間テキスト変形手段と、この中間テキスト変形
手段により変形された中間テキストに基づいてオブジェ
クトプログラムを生成するコード生成手段とを有する。
本発明のベクトル化処理方式では、構文解析手段がソー
スプログラムを読み込み構文解析を行って中間テキスト
を生成し、データ依存関係判定手段が構文解析手段によ
り生成された中間テキストを入力してソースプログラム
中のループ構造を検出しそのループ構造中において並列
実行に矛盾するデータ依存関係がある配列要素が存在す
るか否かを判定し、データ依存関係矛盾要因検査手段が
データ依存関係判定手段において並列実行に矛盾するデ
ータ依存関係があると判定された配列要素に対してデー
タ依存関係が並列実行に矛盾する要因を検査し、ベクト
ル長再設定手段がデータ依存関係矛盾要因検査手段によ
る検査に基づいてベクトル長の再設定が可能と判定した
場合にベクトル長を再設定し同一配列要素へのアクセス
が重複しないように配列要素の添字式を変形することに
より並列実行に矛盾するデータ依存関係の解消を行い、
中間テキスト変形手段がベクトル長再設定手段による並
列実行に矛盾するデータ依存関係の解消に基づいて構文
解析手段により生成された中間テキストをベクトル命令
を適用するた、めの形式に変形し、コード生成手段が中
間テキスト変形手段により変形された中間テキストに基
づいてオブジェクトプログラムを生成する。
スプログラムを読み込み構文解析を行って中間テキスト
を生成し、データ依存関係判定手段が構文解析手段によ
り生成された中間テキストを入力してソースプログラム
中のループ構造を検出しそのループ構造中において並列
実行に矛盾するデータ依存関係がある配列要素が存在す
るか否かを判定し、データ依存関係矛盾要因検査手段が
データ依存関係判定手段において並列実行に矛盾するデ
ータ依存関係があると判定された配列要素に対してデー
タ依存関係が並列実行に矛盾する要因を検査し、ベクト
ル長再設定手段がデータ依存関係矛盾要因検査手段によ
る検査に基づいてベクトル長の再設定が可能と判定した
場合にベクトル長を再設定し同一配列要素へのアクセス
が重複しないように配列要素の添字式を変形することに
より並列実行に矛盾するデータ依存関係の解消を行い、
中間テキスト変形手段がベクトル長再設定手段による並
列実行に矛盾するデータ依存関係の解消に基づいて構文
解析手段により生成された中間テキストをベクトル命令
を適用するた、めの形式に変形し、コード生成手段が中
間テキスト変形手段により変形された中間テキストに基
づいてオブジェクトプログラムを生成する。
次に、本発明について図面を参照して詳細に説明する。
第1図は、本発明のベクトル化処理方式の一実施例の構
成を示すブロフク図である0本実施例のベクトル化処理
方式は、高級言語で書かれたソースプログラムlと、コ
ンパイラ2と、ベクトル処理プロセンサで実行されるオ
ブジェクトプログラム3とを含んで構成されている。
成を示すブロフク図である0本実施例のベクトル化処理
方式は、高級言語で書かれたソースプログラムlと、コ
ンパイラ2と、ベクトル処理プロセンサで実行されるオ
ブジェクトプログラム3とを含んで構成されている。
コンパイラ2は、ベクトル化処理手段4と、構文解析手
段21と、コード生成手段26と、中間テキスト27と
を含んで構成されている。
段21と、コード生成手段26と、中間テキスト27と
を含んで構成されている。
ベクトル化処理手段4は、データ依存関係判定手段22
と、データ依存関係矛盾要因検査手段23と、ベクトル
長再設定手段24と、中間テキスト変形手段25とを含
んで構成されている。
と、データ依存関係矛盾要因検査手段23と、ベクトル
長再設定手段24と、中間テキスト変形手段25とを含
んで構成されている。
なお、第1図中の太い矢線は制御の流れを示しており、
細い矢線はデータの流れを示している。
細い矢線はデータの流れを示している。
次に、このように構成された本実施例のベクトル化処理
方式の動作について説明する。
方式の動作について説明する。
コンパイラ2内の構文解析手段21は、ソースプログラ
ムlを読み込み、構文解析を行い、中間テキスト27を
生成する0例えば、第2図に示すようなソースプログラ
ムl (FORTRANソースプログラム〉を読み込
み、第4図に示すような中間テキスト27 (形式1中
間テキスト)を生成する。
ムlを読み込み、構文解析を行い、中間テキスト27を
生成する0例えば、第2図に示すようなソースプログラ
ムl (FORTRANソースプログラム〉を読み込
み、第4図に示すような中間テキスト27 (形式1中
間テキスト)を生成する。
ベクトル化処理手段4内のデータ依存関係判定手段22
は、構文解析手段21にまり生成された中間テキスト2
7に基づいてソースプログラムl中のループ構造を検出
すると、そのループ構造中に並列実行に矛盾するデータ
依存関係がある配列要素が存在するか否かを次の手順で
判定する。
は、構文解析手段21にまり生成された中間テキスト2
7に基づいてソースプログラムl中のループ構造を検出
すると、そのループ構造中に並列実行に矛盾するデータ
依存関係がある配列要素が存在するか否かを次の手順で
判定する。
+11 ループ構造中に含まれる全ての配列要素を検
出し、当該配列要素に対して第6図に示すような配列テ
ーブルおよび配列要素テーブルを作成する。
出し、当該配列要素に対して第6図に示すような配列テ
ーブルおよび配列要素テーブルを作成する。
例えば、第2図のDOループ(第2図に示すソースプロ
グラムlにおけるループ構造)の場合には、配列要素A
(1)、 A (1+10)、 B (1)、 B
(1)、 B (1) 、 C(1)およびD(+)
に対して、配列テーブルおよび配列要素テーブルを作成
する。
グラムlにおけるループ構造)の場合には、配列要素A
(1)、 A (1+10)、 B (1)、 B
(1)、 B (1) 、 C(1)およびD(+)
に対して、配列テーブルおよび配列要素テーブルを作成
する。
配列テーブルについては、「次の配列テーブルへのポイ
ンタ」フィールド、「配列名」フィールドおよび「最初
の配列要素テーブルへのポインタ」フィールドを設定す
る。
ンタ」フィールド、「配列名」フィールドおよび「最初
の配列要素テーブルへのポインタ」フィールドを設定す
る。
配列要素テーブルについては、対応する配列要素の添字
式を初期値および増分値を表す形に変形し、これらを対
応するフィールド(「添字式」フィールド、「添字式の
初期値」フィールドおよび「添字式の増分値」フィール
ド)に設定する。また、対応する配列要素が含まれるソ
ース行(文)の行番号を対応するフィールド(「ソース
行番号」フィールド)に設定する。さらに、対応する配
列要素がループ構造中で定義される場合には定義配列要
素フラグ(「定義配列要素フラグ」フィールドにおける
フラグ)をオンにし、対応する配列要素がループ構造中
で引用される場合には定義配列要素フラグをオフにする
。
式を初期値および増分値を表す形に変形し、これらを対
応するフィールド(「添字式」フィールド、「添字式の
初期値」フィールドおよび「添字式の増分値」フィール
ド)に設定する。また、対応する配列要素が含まれるソ
ース行(文)の行番号を対応するフィールド(「ソース
行番号」フィールド)に設定する。さらに、対応する配
列要素がループ構造中で定義される場合には定義配列要
素フラグ(「定義配列要素フラグ」フィールドにおける
フラグ)をオンにし、対応する配列要素がループ構造中
で引用される場合には定義配列要素フラグをオフにする
。
なお、各配列要素テーブル内のデータ依存フラグ(「デ
ータ依存フラグ」フィールドにおけるフラグ)をオフに
する。
ータ依存フラグ」フィールドにおけるフラグ)をオフに
する。
(2) 中間テキスト27 (形式l中間テキスト)
。
。
配列テーブルおよび配列要素テーブルから、ループ構造
中に2度以上現れる配列要素について、スカラ命令によ
り順次実行した場合とベクトル命令により並列実行した
場合とで同一配列要素への定義の順序または定義・引用
の順序が異なることから実行結果に違いが生じるか否か
を調べる。
中に2度以上現れる配列要素について、スカラ命令によ
り順次実行した場合とベクトル命令により並列実行した
場合とで同一配列要素への定義の順序または定義・引用
の順序が異なることから実行結果に違いが生じるか否か
を調べる。
この調査で実行結果に違いが生しる場合には、その配列
要素に関して並列実行に矛盾するデータ依存関係がある
と判定する。
要素に関して並列実行に矛盾するデータ依存関係がある
と判定する。
このように、並列実行に矛盾するデータ依存関係がある
配列要素が存在すると判定した場合には、当該配列要素
の配列要素テーブルのデータ依存フラグをオンにし、第
6図に示すようなデータ依存スタックを作成し、そのデ
ータ依存スタック内の「矛盾するデータ依存関係にある
配列要素テーブルへのポインタ」フィールドに当該配列
要素に対して並列実行に矛盾するデータ依存関係がある
配列要素の配列要素テーブルへのポインタを格納する。
配列要素が存在すると判定した場合には、当該配列要素
の配列要素テーブルのデータ依存フラグをオンにし、第
6図に示すようなデータ依存スタックを作成し、そのデ
ータ依存スタック内の「矛盾するデータ依存関係にある
配列要素テーブルへのポインタ」フィールドに当該配列
要素に対して並列実行に矛盾するデータ依存関係がある
配列要素の配列要素テーブルへのポインタを格納する。
例えば、第2図のDo小ループ場合には、D。
ループ中に2度以上現れる配列A(配列要素A(門およ
びA(1+10))および配列B(配列要素B(1))
がデータ依存関係の検査の対象とされる。
びA(1+10))および配列B(配列要素B(1))
がデータ依存関係の検査の対象とされる。
ここで、配列要素A (1)およびA(++10〉に対
しては、スカラ命令により順次実行した場合とベクトル
命令により並列実行した場合とで、同一配列要素への定
義の順序が異なるために、実行結果に違いが生じる。よ
って、並列実行に矛盾するデータ依存関係があると判定
され、配列要素A(1)およびA(++10)の配列要
素テーブルに対応するデータ依存スタックが作成される
。
しては、スカラ命令により順次実行した場合とベクトル
命令により並列実行した場合とで、同一配列要素への定
義の順序が異なるために、実行結果に違いが生じる。よ
って、並列実行に矛盾するデータ依存関係があると判定
され、配列要素A(1)およびA(++10)の配列要
素テーブルに対応するデータ依存スタックが作成される
。
配列要素B (1)に対しては、並列実行に矛盾するデ
ータ依存関係がないと判定され、データ依存スタックは
作成されない。
ータ依存関係がないと判定され、データ依存スタックは
作成されない。
データ依存関係矛盾要因検査手段23は、データ依存関
係判定手段22によりデータ依存フラグがオンにされた
配列要素テーブルと当該配列要素テーブルに対応するデ
ータ依存スタックとから、以下の条件(a)〜(C)が
全て満たされているか否かを調べ、データ依存関係が並
列実行に矛盾する要因を検査する。
係判定手段22によりデータ依存フラグがオンにされた
配列要素テーブルと当該配列要素テーブルに対応するデ
ータ依存スタックとから、以下の条件(a)〜(C)が
全て満たされているか否かを調べ、データ依存関係が並
列実行に矛盾する要因を検査する。
条件(a) 並列実行に矛盾するデータ依存関係があ
る2つの配列要素が共に定義されている。
る2つの配列要素が共に定義されている。
条件(b) 並列実行に矛盾するデータ依存関係があ
る2つの配列要素の添字式の増分値が等しい。
る2つの配列要素の添字式の増分値が等しい。
条件(C) 並列実行に矛盾するデータ依存関係があ
る2つの配列要素間の添字式の初期値の差が各配列要素
の添字式の増分値の倍数である。
る2つの配列要素間の添字式の初期値の差が各配列要素
の添字式の増分値の倍数である。
以上の条件(a)〜(C)が全て満たされている場合に
は、データ依存関係矛盾要因検査手段23は、次式によ
ってデータ依存回次数の値を求め、その値をデータ依存
スタック内の「データ依存回次数」フィールドに設定す
る。
は、データ依存関係矛盾要因検査手段23は、次式によ
ってデータ依存回次数の値を求め、その値をデータ依存
スタック内の「データ依存回次数」フィールドに設定す
る。
データ依存回次数=配列要素間の添字式の初期値の差/
配列要素の添字式の増分値 第7図は、このような設定が行われた後における、第2
図のDo小ループ場合の配列への配列テーブル、配列要
素A (1)およびA(++10)の配列要素テーブル
ならびに当該配列要素テーブルに対応するデータ依存ス
タックの状態を示す図である。
配列要素の添字式の増分値 第7図は、このような設定が行われた後における、第2
図のDo小ループ場合の配列への配列テーブル、配列要
素A (1)およびA(++10)の配列要素テーブル
ならびに当該配列要素テーブルに対応するデータ依存ス
タックの状態を示す図である。
ベクトル長再設定手段24は、並列実行に矛盾するデー
タ依存関係を解消するために、次のような処理を行う。
タ依存関係を解消するために、次のような処理を行う。
(11配列テーブル、配列要素テーブルおよびデータ依
存スタックから、ベクトル長の再設定が可能であるか否
かを検査する。以下の条件(d)および(e)が全て満
たされている場合には、ベクトル長の再設定が可能であ
ると判定する。
存スタックから、ベクトル長の再設定が可能であるか否
かを検査する。以下の条件(d)および(e)が全て満
たされている場合には、ベクトル長の再設定が可能であ
ると判定する。
条件(d) 並列実行に矛盾するデータ依存関係があ
る配列要素の組に対するデータ依存スタ・7り中の「デ
ータ依存回次数」フィールド内の値(データ依存回次数
)が2以上の正定数である。
る配列要素の組に対するデータ依存スタ・7り中の「デ
ータ依存回次数」フィールド内の値(データ依存回次数
)が2以上の正定数である。
条件(e) 条件(d)を満たす並列実行に矛盾する
データ依存関係がある配列要素の組の他に、データ依存
フラグがオンの配列要素テーブルに係る配列要素が存在
しない。
データ依存関係がある配列要素の組の他に、データ依存
フラグがオンの配列要素テーブルに係る配列要素が存在
しない。
第2図のDO小ループ場合には、第7図に示すように、
配列要素A (1)およびA(1+10)に対するデー
タ依存スタックのデータ依存回次数は2以上の正定数で
あり、当該配列要素の組の他に並列実行に矛盾するデー
タ依存関係がある(配列要素テーブルのデータ依存フラ
グがオンである)配列要素は存在しないために、ベクト
ル長の再設定が可能であると判定される。
配列要素A (1)およびA(1+10)に対するデー
タ依存スタックのデータ依存回次数は2以上の正定数で
あり、当該配列要素の組の他に並列実行に矛盾するデー
タ依存関係がある(配列要素テーブルのデータ依存フラ
グがオンである)配列要素は存在しないために、ベクト
ル長の再設定が可能であると判定される。
(21illでベクトル長の再設定が可能と判定した場
合には、ベクトル長を再設定するための中間テキスト2
7(形式2中間テキスト)を生成する。
合には、ベクトル長を再設定するための中間テキスト2
7(形式2中間テキスト)を生成する。
第2図のDO小ループ場合には、配列要素A(■)およ
びA(++10)に対するデータ依存スタックのデータ
依存回次数の10を再設定ベクトル長とする中間テキス
ト27が生成される。
びA(++10)に対するデータ依存スタックのデータ
依存回次数の10を再設定ベクトル長とする中間テキス
ト27が生成される。
(31111でベクトル長の再設定が可能と判定した場
合には、ベクトル長を再設定することから、同一配列要
素へのアクセスが重複しないように、以下の手順(+)
および(ii)で配列要素の添字式を変形する。
合には、ベクトル長を再設定することから、同一配列要
素へのアクセスが重複しないように、以下の手順(+)
および(ii)で配列要素の添字式を変形する。
手順(i) データ依存スタック中の「矛盾するデー
タ依存関係にある配列要素テーブルへのポインタ」フィ
ールドが指している配列要素テーブルの「ソース行番号
」フィールド内の値と等しいソース行番号のソース行(
文〉において変形を要する添字式を持つ配列要素を選出
する。
タ依存関係にある配列要素テーブルへのポインタ」フィ
ールドが指している配列要素テーブルの「ソース行番号
」フィールド内の値と等しいソース行番号のソース行(
文〉において変形を要する添字式を持つ配列要素を選出
する。
第2図のDO小ループ場合には、■の文中の配列要素A
(1+10)と配列要素B (1)とが添字式の変形の
対象となる配列要素として選出される。
(1+10)と配列要素B (1)とが添字式の変形の
対象となる配列要素として選出される。
手順(ii) 手順(1)で選出された配列要素に対
して、再設定前のベクトル長とデータ依存回次数とを用
いて、同一配列要素へのアクセスが重複しないように添
字式を変形する。
して、再設定前のベクトル長とデータ依存回次数とを用
いて、同一配列要素へのアクセスが重複しないように添
字式を変形する。
また、変形した添字式に基づき、配列要素の初期値を求
め、対応する配列要素テーブルの各フィールドを更新す
る。
め、対応する配列要素テーブルの各フィールドを更新す
る。
第8図は、このような変形が行われた後における、第2
図のDo小ループ場合の配列要素A(++10)と配列
要素B(りとに対する配列テーブル、配列要素テーブル
およびデータ依存スタック等の状態を示す図である。
図のDo小ループ場合の配列要素A(++10)と配列
要素B(りとに対する配列テーブル、配列要素テーブル
およびデータ依存スタック等の状態を示す図である。
このようにして、第2図のDo小ループおける配列要素
A (1)と配列要素A(1+10)との間の並列実行
に矛盾するデータ依存関係が解消される。
A (1)と配列要素A(1+10)との間の並列実行
に矛盾するデータ依存関係が解消される。
中間テキスト変形手段25は、更新後の配列要素テーブ
ル等を用いて、中間テキスト27をベクトル命令を適用
するための形式に変形する。
ル等を用いて、中間テキスト27をベクトル命令を適用
するための形式に変形する。
例えば、第2図に示すようなソースプログラムlがあた
かもベクトル化が可能な第3図に示すようなりoループ
が2つに分割されたソースプログラムと等価になるよう
に、第4図に示すような中間テキスト27(形式1中間
テキスト)を第5図に示すような中間テキスト27 (
形式2中間テキスト)に変形する。
かもベクトル化が可能な第3図に示すようなりoループ
が2つに分割されたソースプログラムと等価になるよう
に、第4図に示すような中間テキスト27(形式1中間
テキスト)を第5図に示すような中間テキスト27 (
形式2中間テキスト)に変形する。
コード生成手段26は、ベクトル化処理手段4から制御
を渡され、中間テキスト変形手段25により変形された
中間テキスト27(例えば、第5図に示すような形式2
中間テキスト)を人力し、その中間テキスト27に基づ
いてオブジェクトプログラム3を生成する。
を渡され、中間テキスト変形手段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図中のデータ依存関係矛盾要
因検査手段の処理の態様を説明するための図ミ 第8図は配列テーブル、配列要素テーブルおよびデータ
依存スタックに対する第1図中のベクトル長再設定手段
の処理の態様を説明するための図である。 図において、 l・・・ソースプログラム、 2・・・コンパイラ、 3・・・オブジェクトプログラム、 4・・・ベクトル化処理手段、 21・・構文解析手段、 22・・データ依存関係判定手段、 23 ・ 24 ・ 25 ・ 26 ・ 27 ・ データ依存関係矛盾要因検査手段、 ベクトル長再設定手段、 中間テキスト変形手段、 コード生成手段、 中間テキストである。
行に矛盾するデータ依存関係を解消するためのソースプ
ログラムの修正の態様を示す図、第4図は第2図に示す
ソースプログラムに対応する第1図中の中間テキスト(
第1図中の構文解析手段により生成される形式1中間テ
キスト)を示す図、 第5図は第3図に示すソースプログラムに対応する第1
図中の中間テキスト(第1図中のコード生成手段により
入力される形式2中間テキスト)を示す図、 第6図は第1図中のデータ依存関係判定手段により作成
される配列テーブル、配列要素テーブルおよびデータ依
存スタックを示す図、 第7図は配列テーブル、配列要素テーブルおよびデータ
依存スタックに対する第1図中のデータ依存関係矛盾要
因検査手段の処理の態様を説明するための図ミ 第8図は配列テーブル、配列要素テーブルおよびデータ
依存スタックに対する第1図中のベクトル長再設定手段
の処理の態様を説明するための図である。 図において、 l・・・ソースプログラム、 2・・・コンパイラ、 3・・・オブジェクトプログラム、 4・・・ベクトル化処理手段、 21・・構文解析手段、 22・・データ依存関係判定手段、 23 ・ 24 ・ 25 ・ 26 ・ 27 ・ データ依存関係矛盾要因検査手段、 ベクトル長再設定手段、 中間テキスト変形手段、 コード生成手段、 中間テキストである。
Claims (1)
- 【特許請求の範囲】 ベクトル演算機能を有するベクトル処理プロセッサに対
するコンパイラにおいて、 ソースプログラムを読み込み構文解析を行って中間テキ
ストを生成する構文解析手段と、 この構文解析手段により生成された中間テキストを入力
してソースプログラム中のループ構造を検出しそのルー
プ構造中において並列実行に矛盾するデータ依存関係が
ある配列要素が存在するか否かを判定するデータ依存関
係判定手段と、このデータ依存関係判定手段において並
列実行に矛盾するデータ依存関係があると判定された配
列要素に対してデータ依存関係が並列実行に矛盾する要
因を検査するデータ依存関係矛盾要因検査手段と、 このデータ依存関係矛盾要因検査手段による検査に基づ
いてベクトル長の再設定が可能と判定した場合にベクト
ル長を再設定し同一配列要素へのアクセスが重複しない
ように配列要素の添字式を変形することにより並列実行
に矛盾するデータ依存関係の解消を行うベクトル長再設
定手段と、このベクトル長再設定手段による並列実行に
矛盾するデータ依存関係の解消に基づいて前記構文解析
手段により生成された中間テキストをベクトル命令を適
用するための形式に変形する中間テキスト変形手段と、 この中間テキスト変形手段により変形された中間テキス
トに基づいてオブジェクトプログラムを生成するコード
生成手段と を有することを特徴とするベクトル化処理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2060716A JP2621555B2 (ja) | 1990-03-12 | 1990-03-12 | ベクトル化処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2060716A JP2621555B2 (ja) | 1990-03-12 | 1990-03-12 | ベクトル化処理方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH03260865A true JPH03260865A (ja) | 1991-11-20 |
| JP2621555B2 JP2621555B2 (ja) | 1997-06-18 |
Family
ID=13150295
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2060716A Expired - Lifetime JP2621555B2 (ja) | 1990-03-12 | 1990-03-12 | ベクトル化処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2621555B2 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2016028351A (ja) * | 2010-12-22 | 2016-02-25 | インテル・コーポレーション | ベクトルコンフリクト命令 |
| JP2019049771A (ja) * | 2017-09-07 | 2019-03-28 | 株式会社デンソー | 並列化方法、並列化ツール、車載装置 |
-
1990
- 1990-03-12 JP JP2060716A patent/JP2621555B2/ja not_active Expired - Lifetime
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2016028351A (ja) * | 2010-12-22 | 2016-02-25 | インテル・コーポレーション | ベクトルコンフリクト命令 |
| JP2019049771A (ja) * | 2017-09-07 | 2019-03-28 | 株式会社デンソー | 並列化方法、並列化ツール、車載装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2621555B2 (ja) | 1997-06-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9280442B1 (en) | System and method for generating coverage reports for software unit tests | |
| CN111104335B (zh) | 一种基于多层次分析的c语言缺陷检测方法及装置 | |
| Lei et al. | Fast and precise handling of positive weight cycles for field-sensitive pointer analysis | |
| JPH05257709A (ja) | 並列化判別方法およびそれを用いた並列化支援方法 | |
| US20020062476A1 (en) | Case-reduced verification condition generation system and method by use of dynamic single assumption and assigning labels to variables at control join points | |
| Agarwal et al. | Copilot evaluation harness: Evaluating llm-guided software programming | |
| CN104536883A (zh) | 一种静态缺陷检测方法及其系统 | |
| CN117555811B (zh) | 基于静态符号执行的嵌入式软件分析方法、装置及存储介质 | |
| JP2009211458A (ja) | コンパイラ、変数最適化装置、方法、及び、プログラム | |
| Muroya et al. | Term evaluation systems with refinements: First-order, second-order, and contextual improvement | |
| JPH03260865A (ja) | ベクトル化処理方式 | |
| JP3047418B2 (ja) | ベクトル化処理方式 | |
| Ramamoorthy et al. | A higher level language for micro-programming | |
| JPH01177165A (ja) | 配列の定義/引用関係検査方式 | |
| JPH09282173A (ja) | プログラムの静的解析方法 | |
| JP3094475B2 (ja) | プログラム検証方法 | |
| JPH08272623A (ja) | プログラム解析装置及びプログラム解析方法 | |
| Omar et al. | Binary-level data dependence analysis of hot execution regions using abstract interpretation at runtime | |
| US20120117546A1 (en) | Run-time Module Interdependency Verification | |
| Fernandez | A compiler-driven approach to monitoring integrity constraints | |
| Norman | IOGen: toward an automated tool for production of reliable and valid test suites | |
| CN120803904A (zh) | 基于蜕变关系的测试断言评估方法、装置、设备及介质 | |
| JP3167386B2 (ja) | プログラム自動並列化方法 | |
| Husein | A Type-inferencing Mechanism for Automatically Detecting Variable Types in System Requirements Specifications | |
| JPH02148330A (ja) | 添字の不正使用検査方式 |