JPH0468664B2 - - Google Patents
Info
- Publication number
- JPH0468664B2 JPH0468664B2 JP62019696A JP1969687A JPH0468664B2 JP H0468664 B2 JPH0468664 B2 JP H0468664B2 JP 62019696 A JP62019696 A JP 62019696A JP 1969687 A JP1969687 A JP 1969687A JP H0468664 B2 JPH0468664 B2 JP H0468664B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- loop
- index
- variable
- index variable
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は指標変数ベクトル化コンパイル方式に
関し、特に記憶域上に規則的に並んでいるデータ
に対して直接演算を行う形式のベクトル命令をも
つベクトル処理プロセツサに対するコンパイラに
おけるプログラムの並列実行可能性の判定方式お
よび並列実行可能部分の処理方式に関する。
関し、特に記憶域上に規則的に並んでいるデータ
に対して直接演算を行う形式のベクトル命令をも
つベクトル処理プロセツサに対するコンパイラに
おけるプログラムの並列実行可能性の判定方式お
よび並列実行可能部分の処理方式に関する。
記憶域上に規則的に並んでいるデータに対して
直接演算を行う形式のベクトル命令をもつベクト
ル処理プロセツサにおいては、一般的に目的プロ
グラムのうちのベクトル命令によつて実行される
部分の割合を大きくすればするほどプログラムの
実行時間を短縮することができる。したがつて、
このようなベクトル処理プロセツサに対するコン
パイラでは、与えられた原始プログラムを可能な
限り並列実行可能な形で目的プログラムに変換す
ることが望まれる。
直接演算を行う形式のベクトル命令をもつベクト
ル処理プロセツサにおいては、一般的に目的プロ
グラムのうちのベクトル命令によつて実行される
部分の割合を大きくすればするほどプログラムの
実行時間を短縮することができる。したがつて、
このようなベクトル処理プロセツサに対するコン
パイラでは、与えられた原始プログラムを可能な
限り並列実行可能な形で目的プログラムに変換す
ることが望まれる。
ところで、記憶域上に規則的に並んでいるデー
タに対して直接演算を行う形式のベクトル命令を
もつベクトル処理プロセツサに対する従来のコン
パイラは、高級言語で記述された原始プログラム
を読み込み構文解析を行つて第1中間テキストを
生成する構文解析部と、第1中間テキストから原
始プログラム中のループ構造を検出してベクトル
化可能部分の認識を行いベクトル処理用の第2中
間テキストを生成するベクトル化処理部と、第2
中間テキストから目的プログラムを生成して出力
するコード生成部とから、その主要部が構成され
ていた。
タに対して直接演算を行う形式のベクトル命令を
もつベクトル処理プロセツサに対する従来のコン
パイラは、高級言語で記述された原始プログラム
を読み込み構文解析を行つて第1中間テキストを
生成する構文解析部と、第1中間テキストから原
始プログラム中のループ構造を検出してベクトル
化可能部分の認識を行いベクトル処理用の第2中
間テキストを生成するベクトル化処理部と、第2
中間テキストから目的プログラムを生成して出力
するコード生成部とから、その主要部が構成され
ていた。
このような従来のこの種のコンパイラは、例え
ば第2図に示すような原始プログラムが与えられ
た場合には、構文解析部がこの原始プログラムを
読み込んで第3図の流れ図に示すような第1中間
テキスト(ステツプ31〜34)を生成し、ベクトル
化処理部が第1中間テキストを読み込み原始プロ
グラム中のループ構造を検出して並列実行可能部
分の認識を行い並列実行可能部分について第1中
間テキストを変更した第4図の流れ図に示すよう
な第2中間テキスト(ステツプ41および42)を生
成し、コード生成部が第2中間テキストを読み込
み並列実行可能部分をベクトル化した目的プログ
ラムを生成していた。
ば第2図に示すような原始プログラムが与えられ
た場合には、構文解析部がこの原始プログラムを
読み込んで第3図の流れ図に示すような第1中間
テキスト(ステツプ31〜34)を生成し、ベクトル
化処理部が第1中間テキストを読み込み原始プロ
グラム中のループ構造を検出して並列実行可能部
分の認識を行い並列実行可能部分について第1中
間テキストを変更した第4図の流れ図に示すよう
な第2中間テキスト(ステツプ41および42)を生
成し、コード生成部が第2中間テキストを読み込
み並列実行可能部分をベクトル化した目的プログ
ラムを生成していた。
ところが、従来のこの種のコンパイラでは、第
5図に示すような原始プログラムが与えられた場
合には、DO文のDO変数およびループ中の1箇
所だけで定義されループ中で一様に値が変化する
整数型の変数である指標変数を添字以外に含む代
入文は並列実行可能なベクトル命令に直接変換で
きず、ベクトル化不可能な文として処理してい
た。このため、ベクトル処理プロセツサは、指標
変数を添字以外に含む代入文をスカラ命令により
順次実行することを余儀なくされていた。
5図に示すような原始プログラムが与えられた場
合には、DO文のDO変数およびループ中の1箇
所だけで定義されループ中で一様に値が変化する
整数型の変数である指標変数を添字以外に含む代
入文は並列実行可能なベクトル命令に直接変換で
きず、ベクトル化不可能な文として処理してい
た。このため、ベクトル処理プロセツサは、指標
変数を添字以外に含む代入文をスカラ命令により
順次実行することを余儀なくされていた。
上述した従来のコンパイラでは、指標変数を添
字以外に含む代入文は一般的にはベクトル化でき
ず並列実行不可能として処理されていたので、ベ
クトル処理プロセツサにおいて指標変数を添字以
外に含む代入文がスカラ命令で実行され、プログ
ラムの実行時間を短縮することができないという
欠点がある。
字以外に含む代入文は一般的にはベクトル化でき
ず並列実行不可能として処理されていたので、ベ
クトル処理プロセツサにおいて指標変数を添字以
外に含む代入文がスカラ命令で実行され、プログ
ラムの実行時間を短縮することができないという
欠点がある。
本発明の目的は、上述の点に鑑み、ループ中で
添字以外で引用されている指標変数を含む代入文
を配列の一次漸化式に変形しベクトル命令を適用
して並列実行可能とすることにより、ベクトル処
理プロセツサにおけるプログラムの実行時間を短
縮できるようにした指標変数ベクトル化コンパイ
ル方式を提供することにある。
添字以外で引用されている指標変数を含む代入文
を配列の一次漸化式に変形しベクトル命令を適用
して並列実行可能とすることにより、ベクトル処
理プロセツサにおけるプログラムの実行時間を短
縮できるようにした指標変数ベクトル化コンパイ
ル方式を提供することにある。
本発明の指標変数ベクトル化コンパイル方式
は、記憶域上に規則的に並んでいるデータに対し
て直接演算を行う形式のベクトル命令をもちその
命令に一次漸化式を処理するものを含むベクトル
処理プロセツサに対して与えられた原始プログラ
ムから目的プログラムを生成して出力するコンパ
イラにおいて、前記原始プログラムを読み込み構
文解析を行つて第1中間テキストを生成する構文
解析部と、前記第1中間テキストから前記原始プ
ログラムのループ中の制御の流れを解析する構造
解析手段と、DO文のDO変数およびループ中の
1箇所だけで定義されループ中で一様に値が変化
する整数型の変数である指標変数の検索および情
報の収集を行う指標変数検索手段と、ループ中に
並列実行に矛盾するデータ依存関係があるか否か
を判定するデータ依存関係判定手段と、前記構造
解析手段および前記データ依存関係判定手段によ
り並列実行可能と判定された部分のベクトル処理
用の第2中間テキストを生成するベクトルテキス
ト生成手段とを備え、前記指標変数検索手段によ
り検索された指標変数および収集された情報に基
づいて前記ベクトルテキスト生成手段によりルー
プ中で添字以外で引用されている指標変数を含む
代入文を配列の一次漸化式に変形しベクトル命令
を適用して並列実行可能とするベクトル化処理部
と、このベクトル化処理部により生成された前記
第2中間テキストから目的プログラムを生成して
出力するコード生成部とを有する。
は、記憶域上に規則的に並んでいるデータに対し
て直接演算を行う形式のベクトル命令をもちその
命令に一次漸化式を処理するものを含むベクトル
処理プロセツサに対して与えられた原始プログラ
ムから目的プログラムを生成して出力するコンパ
イラにおいて、前記原始プログラムを読み込み構
文解析を行つて第1中間テキストを生成する構文
解析部と、前記第1中間テキストから前記原始プ
ログラムのループ中の制御の流れを解析する構造
解析手段と、DO文のDO変数およびループ中の
1箇所だけで定義されループ中で一様に値が変化
する整数型の変数である指標変数の検索および情
報の収集を行う指標変数検索手段と、ループ中に
並列実行に矛盾するデータ依存関係があるか否か
を判定するデータ依存関係判定手段と、前記構造
解析手段および前記データ依存関係判定手段によ
り並列実行可能と判定された部分のベクトル処理
用の第2中間テキストを生成するベクトルテキス
ト生成手段とを備え、前記指標変数検索手段によ
り検索された指標変数および収集された情報に基
づいて前記ベクトルテキスト生成手段によりルー
プ中で添字以外で引用されている指標変数を含む
代入文を配列の一次漸化式に変形しベクトル命令
を適用して並列実行可能とするベクトル化処理部
と、このベクトル化処理部により生成された前記
第2中間テキストから目的プログラムを生成して
出力するコード生成部とを有する。
本発明の指標変数ベクトル化コンパイル方式で
は、構文解析部が原始プログラムを読み込み構文
解析を行つて第1中間テキストを生成し、ベクト
ル化処理部が第1中間テキストから原始プログラ
ムのループ中の制御の流れを解析する構造解析手
段と、DO文のDO変数およびループ中の1箇所
だけで定義されループ中で一様に値が変化する整
数型の変数である指標変数の検索および情報の収
集を行う指標変数検索手段と、ループ中に並列実
行に矛盾するデータ依存関係があるか否かを判定
するデータ依存関係判定手段と、構造解析手段お
よびデータ依存関係判定手段により並列実行可能
と判定された部分のベクトル処理用の第2中間テ
キストを生成するベクトルテキスト生成手段とを
備え、指標変数検索手段により検索された指標変
数および収集された情報に基づいてベクトルテキ
スト生成手段によりループ中で添字以外で引用さ
れている指標変数を含む代入文を配列の一次漸化
式に変形しベクトル命令を適用して並列実行可能
とし、コード生成部がベクトル化処理部により生
成された第2中間テキストから目的プログラムを
生成して出力する。
は、構文解析部が原始プログラムを読み込み構文
解析を行つて第1中間テキストを生成し、ベクト
ル化処理部が第1中間テキストから原始プログラ
ムのループ中の制御の流れを解析する構造解析手
段と、DO文のDO変数およびループ中の1箇所
だけで定義されループ中で一様に値が変化する整
数型の変数である指標変数の検索および情報の収
集を行う指標変数検索手段と、ループ中に並列実
行に矛盾するデータ依存関係があるか否かを判定
するデータ依存関係判定手段と、構造解析手段お
よびデータ依存関係判定手段により並列実行可能
と判定された部分のベクトル処理用の第2中間テ
キストを生成するベクトルテキスト生成手段とを
備え、指標変数検索手段により検索された指標変
数および収集された情報に基づいてベクトルテキ
スト生成手段によりループ中で添字以外で引用さ
れている指標変数を含む代入文を配列の一次漸化
式に変形しベクトル命令を適用して並列実行可能
とし、コード生成部がベクトル化処理部により生
成された第2中間テキストから目的プログラムを
生成して出力する。
次に、本発明について図面を参照して詳細に説
明する。
明する。
第1図は、本発明の一実施例の指標変数ベクト
ル化コンパイル方式が適用されたコンパイラ2を
示す機能ブロツク図である。このコンパイラ2
は、記憶域上に規則的に並んでいるデータに対し
て直接演算を行う形式のベクトル命令をもちその
命令に一次漸化式を処理するものを含むベクトル
処理プロセツサに対して与えられた高級言語で記
述された原始プログラム1から目的プログラム3
を生成して出力するコンパイラであり、原始プロ
グラム1を読み込んで構文解析を行い第1中間テ
キスト24を生成する構文解析部21と、第1中
間テキスト24から原始プログラム1中のループ
構造を検出してベクトル化可能部分の認識を行い
ベクトル処理用の第2中間テキスト25を生成す
るベクトル化処理部22と、第2中間テキスト2
5から目的プログラム3を生成して出力するコー
ド生成部23とから構成されている。
ル化コンパイル方式が適用されたコンパイラ2を
示す機能ブロツク図である。このコンパイラ2
は、記憶域上に規則的に並んでいるデータに対し
て直接演算を行う形式のベクトル命令をもちその
命令に一次漸化式を処理するものを含むベクトル
処理プロセツサに対して与えられた高級言語で記
述された原始プログラム1から目的プログラム3
を生成して出力するコンパイラであり、原始プロ
グラム1を読み込んで構文解析を行い第1中間テ
キスト24を生成する構文解析部21と、第1中
間テキスト24から原始プログラム1中のループ
構造を検出してベクトル化可能部分の認識を行い
ベクトル処理用の第2中間テキスト25を生成す
るベクトル化処理部22と、第2中間テキスト2
5から目的プログラム3を生成して出力するコー
ド生成部23とから構成されている。
ベクトル化処理部22は、第1中間テキスト2
4を読み込んで原始プログラム1のループ中の制
御の流れを解析する構造解析手段221と、指標
変数の検索および情報の収集を行う指標変数検索
手段222と、ループ中に並列実行に矛盾するデ
ータ依存関係があるか否かを判定するデータ依存
関係判定手段223と、構造解析手段221およ
びデータ依存関係判定手段223によりベクトル
化可能と判定された部分の第2中間テキスト25
を生成するベクトルテキスト生成手段224とを
含んで構成されている。
4を読み込んで原始プログラム1のループ中の制
御の流れを解析する構造解析手段221と、指標
変数の検索および情報の収集を行う指標変数検索
手段222と、ループ中に並列実行に矛盾するデ
ータ依存関係があるか否かを判定するデータ依存
関係判定手段223と、構造解析手段221およ
びデータ依存関係判定手段223によりベクトル
化可能と判定された部分の第2中間テキスト25
を生成するベクトルテキスト生成手段224とを
含んで構成されている。
第9図を参照すると、指標変数検索手段222
で作成されベクトルテキスト生成手段224で参
照される指標変数テーブル90は、次の指標変数
テーブルへのポインタ91と、変数テーブルへの
ポインタ92と、指標変数引用フラグ93と、変
換後の配列テーブルへのポインタ94と、指標変
数の初期値95と、指標変数の増分値96と、指
標変数の終値97とを含んで構成されている。
で作成されベクトルテキスト生成手段224で参
照される指標変数テーブル90は、次の指標変数
テーブルへのポインタ91と、変数テーブルへの
ポインタ92と、指標変数引用フラグ93と、変
換後の配列テーブルへのポインタ94と、指標変
数の初期値95と、指標変数の増分値96と、指
標変数の終値97とを含んで構成されている。
第10図を参照すると、指標変数テーブル90
はDO変数およびループ中の1箇所だけで定義さ
れループ中で一様に値が変化する整数型の変数で
ある指標変数毎に作成され、各指標変数テーブル
90は次の指標変数テーブルへのポインタ91に
より順次連鎖されている。また、各指標変数テー
ブル90は、変数テーブルへのポインタ92によ
り変数テーブル98を指示し、変換後の配列テー
ブルへのポインタ94により配列テーブル99を
指示している。
はDO変数およびループ中の1箇所だけで定義さ
れループ中で一様に値が変化する整数型の変数で
ある指標変数毎に作成され、各指標変数テーブル
90は次の指標変数テーブルへのポインタ91に
より順次連鎖されている。また、各指標変数テー
ブル90は、変数テーブルへのポインタ92によ
り変数テーブル98を指示し、変換後の配列テー
ブルへのポインタ94により配列テーブル99を
指示している。
次に、このように構成された本実施例の指標変
数ベクトル化コンパイル方式の動作について説明
する。なお、ここでは、第5図に示すようなDO
変数でなる指標変数Iとループ中の1箇所だけで
定義されループ中で一様に値が変化する整数型の
変数である指標変数Jとをループ中の代入文に添
字以外で引用している原始プログラム1が与えら
れた場合に、原始プログラム1の指標変数Iおよ
びJを第6図に例示するような代入文により作成
される配列であると認識することにより、第7図
に示すような配列の一次漸化式を含む形式に変形
して、第11図の流れ図に示すような第2中間テ
キスト25(ステツプ111〜119)を生成する例を
参考にしながら説明する。
数ベクトル化コンパイル方式の動作について説明
する。なお、ここでは、第5図に示すようなDO
変数でなる指標変数Iとループ中の1箇所だけで
定義されループ中で一様に値が変化する整数型の
変数である指標変数Jとをループ中の代入文に添
字以外で引用している原始プログラム1が与えら
れた場合に、原始プログラム1の指標変数Iおよ
びJを第6図に例示するような代入文により作成
される配列であると認識することにより、第7図
に示すような配列の一次漸化式を含む形式に変形
して、第11図の流れ図に示すような第2中間テ
キスト25(ステツプ111〜119)を生成する例を
参考にしながら説明する。
原始プログラム1が与えられてコンパイラ2が
起動されると、まず構文解析部21が原始プログ
ラム1を読み込んで第8図の流れ図に示すような
第1中間テキスト24(ステツプ81〜86)を生成
する。
起動されると、まず構文解析部21が原始プログ
ラム1を読み込んで第8図の流れ図に示すような
第1中間テキスト24(ステツプ81〜86)を生成
する。
次に、ベクトル化処理部22が第1中間テキス
ト24を入力すると、 (1) まず、構造解析手段221が起動され、以下
の処理〜を行う。
ト24を入力すると、 (1) まず、構造解析手段221が起動され、以下
の処理〜を行う。
構造解析手段221は、まず第1中間テキ
スト24よりループ部分を取り出す。
スト24よりループ部分を取り出す。
次に、取り出したループ部分を文単位のブ
ロツクに分割する。
ロツクに分割する。
続いて、第1中間テキスト24からループ
中の制御の流れを解析して各ブロツクの関係
を求め、ループ中で必ず実行されるブロツク
を取り出す。第8図に示す第1中間テキスト
24の場合には、A(I)=I,J=J+4,
B(J)=J+2およびI=I+1(ステツプ
83〜86)の各文単位のブロツクが取り出され
る。
中の制御の流れを解析して各ブロツクの関係
を求め、ループ中で必ず実行されるブロツク
を取り出す。第8図に示す第1中間テキスト
24の場合には、A(I)=I,J=J+4,
B(J)=J+2およびI=I+1(ステツプ
83〜86)の各文単位のブロツクが取り出され
る。
(2) 次に、指標変数検索手段222が起動され、
以下の処理〜を行う。
以下の処理〜を行う。
指標変数検索手段222は、まずループ中
で必ず実行されるブロツクにある整数型変数
への代入文およびその変数がループ内でどの
ように利用されているかを検索し、左辺の整
数型変数が指標変数でありかつこの代入文が
指標変数を定義する式であるか否かを判定す
る。第8図の第1中間テキスト24の場合に
は、J=J+4(ステツプ84)およびI=I
+1(ステツプ86)を指標変数JおよびIを
定義する式としてそれぞれ判定する。
で必ず実行されるブロツクにある整数型変数
への代入文およびその変数がループ内でどの
ように利用されているかを検索し、左辺の整
数型変数が指標変数でありかつこの代入文が
指標変数を定義する式であるか否かを判定す
る。第8図の第1中間テキスト24の場合に
は、J=J+4(ステツプ84)およびI=I
+1(ステツプ86)を指標変数JおよびIを
定義する式としてそれぞれ判定する。
次に、指標変数を定義する式であると判定
された代入文より、この指標変数のループ内
での状態を初期値、増分値および終値に分解
して指標変数テーブル90を作成する。第8
図の第1中間テキスト24の場合には、第1
0図に示すような指標変数IおよびJの指標
変数テーブル90がそれぞれ作成される。
された代入文より、この指標変数のループ内
での状態を初期値、増分値および終値に分解
して指標変数テーブル90を作成する。第8
図の第1中間テキスト24の場合には、第1
0図に示すような指標変数IおよびJの指標
変数テーブル90がそれぞれ作成される。
続いて、指標変数のうちにループ中で添字
以外で引用されているものがあるか否かを調
べ、添字以外で引用されている指標変数があ
る場合には、対応する指標変数テーブル90
中の指標変数引用フラグ93をオンにする。
第8図の第1中間テキスト24の場合には、
指標変数IはA(I)=I(ステツプ83)で添
字以外で引用され、指標変数JはB(J)=J
+2(ステツプ85)で添字以外で引用されて
いるので、指標変数IおよびJのいずれに対
応する指標変数テーブル90の指標変数引用
フラグ93もオンにされる(第10図参照)。
以外で引用されているものがあるか否かを調
べ、添字以外で引用されている指標変数があ
る場合には、対応する指標変数テーブル90
中の指標変数引用フラグ93をオンにする。
第8図の第1中間テキスト24の場合には、
指標変数IはA(I)=I(ステツプ83)で添
字以外で引用され、指標変数JはB(J)=J
+2(ステツプ85)で添字以外で引用されて
いるので、指標変数IおよびJのいずれに対
応する指標変数テーブル90の指標変数引用
フラグ93もオンにされる(第10図参照)。
(3) 次に、データ依存関係判定手段223が起動
され、ループ中に並列実行に矛盾するデータ依
存関係があるか否かを判定する。第8図の第1
中間テキスト24の場合には、ループ中に並列
実行に矛盾するデータ依存関係がないので、デ
ータ依存関係なしと判定される。
され、ループ中に並列実行に矛盾するデータ依
存関係があるか否かを判定する。第8図の第1
中間テキスト24の場合には、ループ中に並列
実行に矛盾するデータ依存関係がないので、デ
ータ依存関係なしと判定される。
(4) 続いて、ベクトルテキスト生成手段224が
起動され、以下の処理〜を行う。
起動され、以下の処理〜を行う。
まず、ベクトルテキスト生成手段224
は、並列実行可能部分をベクトル処理するた
めに必要となるベクトル長設定用の第2中間
テキスト25を生成する。第11図に示す第
2中間テキスト25の場合には、DO変数で
ある指標変数Iの指標変数テーブル90(第
10図参照)を参照し、終値97の値100よ
り増分値96の値1だけ少ない値99をベクト
ル長として設定するV=99(ステツプ111)
が生成される。
は、並列実行可能部分をベクトル処理するた
めに必要となるベクトル長設定用の第2中間
テキスト25を生成する。第11図に示す第
2中間テキスト25の場合には、DO変数で
ある指標変数Iの指標変数テーブル90(第
10図参照)を参照し、終値97の値100よ
り増分値96の値1だけ少ない値99をベクト
ル長として設定するV=99(ステツプ111)
が生成される。
次に、各指標変数テーブル90を検索して
指標変数引用フラグ93が添字以外での引用
ありとしてオンされている指標変数を取り出
し、値を格納する配列領域の確保を次の
()または()のように行う。
指標変数引用フラグ93が添字以外での引用
ありとしてオンされている指標変数を取り出
し、値を格納する配列領域の確保を次の
()または()のように行う。
() 指標変数の添字以外での引用が1回
であり、指標変数の代入文で定義されてい
る配列を指標変数を変換する配列としてそ
のまま使える場合には、変換後の配列テー
ブルへのポインタ94を指標変数の代入文
で定義されている配列の配列テーブル99
に指示させて配列領域としてこの配列を使
用することとし、指標変数を配列に置き換
える。第8図の第1中間テキスト24の場
合には、指標変数IおよびJはともに添字
以外での引用が1回であるので、指標変数
の代入により配列を定義している式A(I)
=I(ステツプ83)およびB(J)=J+2
(ステツプ85)の指標変数IおよびJを配
列AおよびBに置き換える。
であり、指標変数の代入文で定義されてい
る配列を指標変数を変換する配列としてそ
のまま使える場合には、変換後の配列テー
ブルへのポインタ94を指標変数の代入文
で定義されている配列の配列テーブル99
に指示させて配列領域としてこの配列を使
用することとし、指標変数を配列に置き換
える。第8図の第1中間テキスト24の場
合には、指標変数IおよびJはともに添字
以外での引用が1回であるので、指標変数
の代入により配列を定義している式A(I)
=I(ステツプ83)およびB(J)=J+2
(ステツプ85)の指標変数IおよびJを配
列AおよびBに置き換える。
() 添字以外での引用が2回以上であ
り、代入文で定義されている配列がそのま
ま使えない場合には、例えば第6図に例示
した配列WOのような作業用の配列領域の
確保を行い、添字以外で引用されている指
標変数をこの配列に置き換える。第8図の
第1中間テキスト24の場合には、指標変
数IおよびJはともに添字以外での引用が
1回であるので、作業用配列領域の確保は
行われない。
り、代入文で定義されている配列がそのま
ま使えない場合には、例えば第6図に例示
した配列WOのような作業用の配列領域の
確保を行い、添字以外で引用されている指
標変数をこの配列に置き換える。第8図の
第1中間テキスト24の場合には、指標変
数IおよびJはともに添字以外での引用が
1回であるので、作業用配列領域の確保は
行われない。
続いて、指標変数テーブル90より変換数
の配列テーブルへのポインタ94および指標
変数の初期値95を取り出し、変換後の配列
の先頭要素に初期値を代入するための第2中
間テキスト25を生成する。第11図の第2
中間テキスト25の場合には、指標変数Iに
ついては変換後の配列Aの先頭要素A(1)
に初期値1を代入するA(1)=1.0(ステツプ
112)を生成する。なお、変換後の配列Aが
実数型であるので、初期値1は1.0として代
入する。指標変数Jについても、同様に変換
後の配列Bの先頭要素B(J+4)に初期値
J+4+2を代入するB(J+4)=REAL
(J+4+2)(ステツプ113)を生成する。
なお、変換後の配列Bが実数型であるので、
初期値J+4+2は実数型の値REAL(J+
4+2)として代入する。
の配列テーブルへのポインタ94および指標
変数の初期値95を取り出し、変換後の配列
の先頭要素に初期値を代入するための第2中
間テキスト25を生成する。第11図の第2
中間テキスト25の場合には、指標変数Iに
ついては変換後の配列Aの先頭要素A(1)
に初期値1を代入するA(1)=1.0(ステツプ
112)を生成する。なお、変換後の配列Aが
実数型であるので、初期値1は1.0として代
入する。指標変数Jについても、同様に変換
後の配列Bの先頭要素B(J+4)に初期値
J+4+2を代入するB(J+4)=REAL
(J+4+2)(ステツプ113)を生成する。
なお、変換後の配列Bが実数型であるので、
初期値J+4+2は実数型の値REAL(J+
4+2)として代入する。
次に、指標変数に対して指標変数テーブル
90より指標変数の初期値および増分値を取
り出し、指標変数の初期値を増分値の値だけ
増加させる第2中間テキスト25を生成す
る。第11図の第2中間テキスト25の場合
には、指標変数Iに初期値1と増分値1との
和を代入するI=1+1(ステツプ114)およ
び指標変数Jに初期値Jと増分値4との和を
代入するJ=J+4(ステツプ115)が生成さ
れる。
90より指標変数の初期値および増分値を取
り出し、指標変数の初期値を増分値の値だけ
増加させる第2中間テキスト25を生成す
る。第11図の第2中間テキスト25の場合
には、指標変数Iに初期値1と増分値1との
和を代入するI=1+1(ステツプ114)およ
び指標変数Jに初期値Jと増分値4との和を
代入するJ=J+4(ステツプ115)が生成さ
れる。
続いて、指標変数テーブル90を参照して
ループ中の並列実行可能な部分の第2中間テ
キスト25を生成する。第11図の第2中間
テキスト25の場合には、A(I)=A(I−
1)+1.0(ステツプ116)およびB(J)=B
(J−4)+4.0(ステツプ117)が生成される。
ループ中の並列実行可能な部分の第2中間テ
キスト25を生成する。第11図の第2中間
テキスト25の場合には、A(I)=A(I−
1)+1.0(ステツプ116)およびB(J)=B
(J−4)+4.0(ステツプ117)が生成される。
次に、指標変数テーブル90を参照してル
ープ中の並列実行可能な部分をベクトル処理
したときの指標変数の終値を保証するための
第2中間テキスト25を生成する。第11図
の第2中間テキスト25の場合には、指標変
数Iについては初期値がI=1+1(ステツ
プ114)であるのでI=I+99(ステツプ119)
が生成され、指標変数Jについては初期値が
J=J+4(ステツプ115)であるのでJ=J
+4*99(ステツプ119)が生成される。
ープ中の並列実行可能な部分をベクトル処理
したときの指標変数の終値を保証するための
第2中間テキスト25を生成する。第11図
の第2中間テキスト25の場合には、指標変
数Iについては初期値がI=1+1(ステツ
プ114)であるのでI=I+99(ステツプ119)
が生成され、指標変数Jについては初期値が
J=J+4(ステツプ115)であるのでJ=J
+4*99(ステツプ119)が生成される。
ベクトル化処理部22のベクトルテキスト生成
手段224における処理が終了すると、コード生
成部23が起動され第2中間テキスト25に基づ
いて目的プログラム3が生成される。
手段224における処理が終了すると、コード生
成部23が起動され第2中間テキスト25に基づ
いて目的プログラム3が生成される。
この結果、ベクトル処理プロセツサは、指標変
数をループ中で添字以外で引用している代入文を
ベクトル命令で実行することができ、プログラム
の実行時間が短縮される。
数をループ中で添字以外で引用している代入文を
ベクトル命令で実行することができ、プログラム
の実行時間が短縮される。
以上説明したように本発明は、指標変数を添字
以外で引用している代入文に含まれる指標変数を
代入文により作成される配列であると認識して代
入文を一次漸化式の形式に変形しベクトル命令を
適用可能とすることにより、記憶域上に規則的に
並んでいるデータに対して直接演算を行う形式の
ベクトル命令をもちその命令に一次漸化式を処理
するものを含むベクトル処理プロセツサにおいて
指標変数を添字以外で引用している代入文を含む
プログラムの実行時間を短縮できるという効果が
ある。
以外で引用している代入文に含まれる指標変数を
代入文により作成される配列であると認識して代
入文を一次漸化式の形式に変形しベクトル命令を
適用可能とすることにより、記憶域上に規則的に
並んでいるデータに対して直接演算を行う形式の
ベクトル命令をもちその命令に一次漸化式を処理
するものを含むベクトル処理プロセツサにおいて
指標変数を添字以外で引用している代入文を含む
プログラムの実行時間を短縮できるという効果が
ある。
第1図は本発明の一実施例の指標変数ベクトル
化コンパイル方式が適用されたコンパイラの機能
ブロツク図、第2図は第1図中の原始プログラム
の一例を示す図、第3図は第2図に例示した原始
プログラムから生成される第1中間テキストの一
例を示す流れ図、第4図は第3図に例示した第1
中間テキストから生成される第2中間テキストの
一例を示す流れ図、第5図は第1図中の原始プロ
グラムの他の例を示す図、第6図は本実施例の指
標変数ベクトル化コンパイル方式において指標変
数を並列実行可能として処理する場合にコンパイ
ラが行う変形を原始プログラムの形式で例示した
図、第7図は第5図に例示した原始プログラムを
並列実行可能として処理する場合にコンパイラが
行う変形を原始プログラムの形式で例示した図、
第8図は第5図に例示した原始プログラムから生
成される第1中間テキストの一例を示す流れ図、
第9図は本実施例の指標変数ベクトル化コンパイ
ル方式において用いられる指標変数テーブルの構
成を示す図、第10図は本実施例の指標変数ベク
トル化コンパイル方式で第5図に例示した原始プ
ログラムを処理したときの指標変数テーブルの内
容を例示する図、第11図は第8図に例示した第
1中間テキストから生成される第2中間テキスト
を示す流れ図である。 図において、1……原始プログラム、2……コ
ンパイラ、3……目的プログラム、21……構文
解析部、22……ベクトル化処理部、23……コ
ード生成部、24……第1中間テキスト、25…
…第2中間テキスト、90……指標変数テーブ
ル、91……次の指標変数テーブルへのポイン
タ、92……変数テーブルへのポインタ、93…
…指標変数引用フラグ、94……変換後の配列テ
ーブルへのポインタ、95……指標変数の初期
値、96……指標変数の増分値、97……指標変
数の終値、98……変数テーブル、99……配列
テーブル、221……構造解析手段、222……
指標変数検索手段、223……データ依存関係判
定手段、224……ベクトルテキスト生成手段で
ある。
化コンパイル方式が適用されたコンパイラの機能
ブロツク図、第2図は第1図中の原始プログラム
の一例を示す図、第3図は第2図に例示した原始
プログラムから生成される第1中間テキストの一
例を示す流れ図、第4図は第3図に例示した第1
中間テキストから生成される第2中間テキストの
一例を示す流れ図、第5図は第1図中の原始プロ
グラムの他の例を示す図、第6図は本実施例の指
標変数ベクトル化コンパイル方式において指標変
数を並列実行可能として処理する場合にコンパイ
ラが行う変形を原始プログラムの形式で例示した
図、第7図は第5図に例示した原始プログラムを
並列実行可能として処理する場合にコンパイラが
行う変形を原始プログラムの形式で例示した図、
第8図は第5図に例示した原始プログラムから生
成される第1中間テキストの一例を示す流れ図、
第9図は本実施例の指標変数ベクトル化コンパイ
ル方式において用いられる指標変数テーブルの構
成を示す図、第10図は本実施例の指標変数ベク
トル化コンパイル方式で第5図に例示した原始プ
ログラムを処理したときの指標変数テーブルの内
容を例示する図、第11図は第8図に例示した第
1中間テキストから生成される第2中間テキスト
を示す流れ図である。 図において、1……原始プログラム、2……コ
ンパイラ、3……目的プログラム、21……構文
解析部、22……ベクトル化処理部、23……コ
ード生成部、24……第1中間テキスト、25…
…第2中間テキスト、90……指標変数テーブ
ル、91……次の指標変数テーブルへのポイン
タ、92……変数テーブルへのポインタ、93…
…指標変数引用フラグ、94……変換後の配列テ
ーブルへのポインタ、95……指標変数の初期
値、96……指標変数の増分値、97……指標変
数の終値、98……変数テーブル、99……配列
テーブル、221……構造解析手段、222……
指標変数検索手段、223……データ依存関係判
定手段、224……ベクトルテキスト生成手段で
ある。
Claims (1)
- 【特許請求の範囲】 1 記憶域上に規則的に並んでいるデータに対し
て直接演算を行う形式のベクトル命令をもちその
命令に一次漸化式を処理するものを含むベクトル
処理プロセツサに対して与えられた原始プログラ
ムから目的プログラムを生成して出力するコンパ
イラにおいて、 前記原始プログラムを読み込み構文解析を行つ
て第1中間テキストを生成する構文解析部と、 前記第1中間テキストから前記原始プログラム
のループ中の制御の流れを解析する構造解析手段
と、DO文のDO変数およびループ中の1箇所だ
けで定義されループ中で一様に値が変化する整数
型の変数である指標変数の検索および情報の収集
を行う指標変数検索手段と、ループ中に並列実行
に矛盾するデータ依存関係があるか否かを判定す
るデータ依存関係判定手段と、前記構造解析手段
および前記データ依存関係判定手段により並列実
行可能と判定された部分のベクトル処理用の第2
中間テキストを生成するベクトルテキスト生成手
段とを備え、前記指標変数検索手段により検索さ
れた指標変数および収集された情報に基づいて前
記ベクトルテキスト生成手段によりループ中で添
字以外で引用されている指標変数を含む代入文を
配列の一次漸化式に変形しベクトル命令を適用し
て並列実行可能とするベクトル化処理部と、 このベクトル化処理部により生成された前記第
2中間テキストから目的プログラムを生成して出
力するコード生成部と、 を有することを特徴とする指標変数ベクトル化コ
ンパイル方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP62019696A JPS63187364A (ja) | 1987-01-30 | 1987-01-30 | 指標変数ベクトル化コンパイル方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP62019696A JPS63187364A (ja) | 1987-01-30 | 1987-01-30 | 指標変数ベクトル化コンパイル方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS63187364A JPS63187364A (ja) | 1988-08-02 |
| JPH0468664B2 true JPH0468664B2 (ja) | 1992-11-04 |
Family
ID=12006425
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP62019696A Granted JPS63187364A (ja) | 1987-01-30 | 1987-01-30 | 指標変数ベクトル化コンパイル方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS63187364A (ja) |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS54127689U (ja) * | 1979-01-08 | 1979-09-05 | ||
| JPS60172619U (ja) * | 1984-04-20 | 1985-11-15 | 三菱マテリアル株式会社 | 転削工具用スロ−アウエイチツプ |
-
1987
- 1987-01-30 JP JP62019696A patent/JPS63187364A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS63187364A (ja) | 1988-08-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Bischof et al. | Combining source transformation and operator overloading techniques to compute derivatives for MATLAB programs | |
| US5485619A (en) | Array variable transformation system employing subscript table mapping to scalar loop indices | |
| Fauth et al. | Automated generation of DSP program development tools using a machine description formalism | |
| JPH0468664B2 (ja) | ||
| Krohn | A parallel approach to code generation for Fortran like compilers | |
| JP3057904B2 (ja) | ベクトル化方式 | |
| Lecarme et al. | Computer‐aided production of language implementation systems: A review and classification | |
| Abramov et al. | Semantics Modifiers: An Approach to Non-Standard Semantics of Programming Languages. | |
| JPH0425969A (ja) | If文下定義配列ベクトル化コンパイル方式 | |
| JPS63187365A (ja) | If文下定義変数ベクトル化コンパイル方式 | |
| JPH02214974A (ja) | ベクトル化処理方式 | |
| JPH0795275B2 (ja) | コンパイル処理装置 | |
| McNeil et al. | PL/I program efficiency | |
| Taylor et al. | The Westinghouse signal processor (WSP) microcompiler | |
| JP2533938B2 (ja) | ベクトル演算処理方式 | |
| Dritz | Multiple program realizations using the tampr system | |
| JPH03144832A (ja) | プリコンパイラ言語プログラムのシンボリックデバッグ装置 | |
| JPH02101577A (ja) | ベクトル化処理方式 | |
| JPH0414144A (ja) | コンパイル処理方法 | |
| JPH06290206A (ja) | ベクトル化変換システム | |
| JPH0290266A (ja) | 依存関係解析方式 | |
| GLÜCK | Program Systems Institute, Russian Academy of Sciences, RU-152140 Pereslaul-Zalessky, Russia | |
| JPH0269832A (ja) | 式処理における定義演算子処理方式 | |
| JPH0256639A (ja) | 簡易言語処理方式 | |
| JPH0950429A (ja) | コンパイラにおけるポインタベクトル化システム |