JPH05120323A - If文下ベクトル演算最適化方式 - Google Patents
If文下ベクトル演算最適化方式Info
- Publication number
- JPH05120323A JPH05120323A JP3308376A JP30837691A JPH05120323A JP H05120323 A JPH05120323 A JP H05120323A JP 3308376 A JP3308376 A JP 3308376A JP 30837691 A JP30837691 A JP 30837691A JP H05120323 A JPH05120323 A JP H05120323A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- text
- intermediate text
- condition
- statement
- 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
Links
Landscapes
- Advance Control (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 DOループ内のIF文下においてTHEN節
およびELSE節で行われていた同一の演算を、マスク
なしの1回の演算で置き換える。 【構成】 構文解析部21は原始プログラム1の構文解
析を行って第1中間テキスト24を生成する。構造解析
手段211は第1中間テキスト24から原始プログラム
1のループの制御の流れを解析し、IF文下条件解析手
段222はループ中のIF文の条件を解析し、データ依
存関係判定手段223はループ中に並列実行に矛盾する
データ依存関係があるか否かを判定し、ベクトルテキス
ト生成手段224は並列実行可能と判定された部分のベ
クトル処理用の第2中間テキスト25を生成し、ベクト
ル演算最適化処理手段225はマスク付きベクトルテキ
ストの共通式削除処理を行う。コード生成部23は第2
中間テキスト25から目的プログラム3を生成して出力
する。
およびELSE節で行われていた同一の演算を、マスク
なしの1回の演算で置き換える。 【構成】 構文解析部21は原始プログラム1の構文解
析を行って第1中間テキスト24を生成する。構造解析
手段211は第1中間テキスト24から原始プログラム
1のループの制御の流れを解析し、IF文下条件解析手
段222はループ中のIF文の条件を解析し、データ依
存関係判定手段223はループ中に並列実行に矛盾する
データ依存関係があるか否かを判定し、ベクトルテキス
ト生成手段224は並列実行可能と判定された部分のベ
クトル処理用の第2中間テキスト25を生成し、ベクト
ル演算最適化処理手段225はマスク付きベクトルテキ
ストの共通式削除処理を行う。コード生成部23は第2
中間テキスト25から目的プログラム3を生成して出力
する。
Description
【0001】
【産業上の利用分野】本発明は記憶域上に規則的に並ん
でいるデータに対して一度に演算を行うベクトル命令を
もち、ベクトル命令にマスクのオンまたはオフにより対
応する要素の処理を行うか否かを制御する機能をもつベ
クトル処理プロセッサに対するコンパイラにおけるプロ
グラムの並列実行可能部分の最適化方式に関し、特にI
F文下ベクトル演算最適化方式に関する。
でいるデータに対して一度に演算を行うベクトル命令を
もち、ベクトル命令にマスクのオンまたはオフにより対
応する要素の処理を行うか否かを制御する機能をもつベ
クトル処理プロセッサに対するコンパイラにおけるプロ
グラムの並列実行可能部分の最適化方式に関し、特にI
F文下ベクトル演算最適化方式に関する。
【0002】
【従来の技術】記憶域上に規則的に並んでいるデータに
対して一度に演算を行うベクトル命令をもつベクトル処
理プロセッサにおいては、一般的に目的プログラムのう
ちのベクトル命令によって実行される部分の割合を大き
くすればするほどプログラムの実行時間を短縮すること
ができる。したがって、このようなベクトル処理プロセ
ッサに対するコンパイラでは、与えられた原始プログラ
ムを可能な限り並列実行可能な形で目的プログラムに変
換することが望まれる。
対して一度に演算を行うベクトル命令をもつベクトル処
理プロセッサにおいては、一般的に目的プログラムのう
ちのベクトル命令によって実行される部分の割合を大き
くすればするほどプログラムの実行時間を短縮すること
ができる。したがって、このようなベクトル処理プロセ
ッサに対するコンパイラでは、与えられた原始プログラ
ムを可能な限り並列実行可能な形で目的プログラムに変
換することが望まれる。
【0003】ところで、ベクトル命令をもつベクトル処
理プロセッサに対する従来のコンパイラは、高級言語で
記述された原始プログラムを読み込み構文解析を行って
第1中間テキストを生成する構文解析部と、第1中間テ
キストから原始プログラム中のループ構造を検出して並
列処理可能部分の認識を行いベクトル処理用の第2中間
テキストを生成するベクトル化処理部と、第2中間テキ
ストから目的プログラムを生成して出力するコード生成
部とから、その主要部が構成されていた。
理プロセッサに対する従来のコンパイラは、高級言語で
記述された原始プログラムを読み込み構文解析を行って
第1中間テキストを生成する構文解析部と、第1中間テ
キストから原始プログラム中のループ構造を検出して並
列処理可能部分の認識を行いベクトル処理用の第2中間
テキストを生成するベクトル化処理部と、第2中間テキ
ストから目的プログラムを生成して出力するコード生成
部とから、その主要部が構成されていた。
【0004】このような従来のコンパイラは、例えば図
2に示すような原始プログラムが与えられた場合に、構
文解析部がこの原始プログラムを読み込んで図3の流れ
図に示すような第1中間テキスト(ステップ31〜3
4)を生成し、ベクトル化処理部が第1中間テキストを
変更した図4の流れ図に示すような第2中間テキスト
(ステップ41および42)を生成し、コード生成部が
第2中間テキストを読み込み並列実行可能部分をベクト
ル化した目的プログラムを生成していた。
2に示すような原始プログラムが与えられた場合に、構
文解析部がこの原始プログラムを読み込んで図3の流れ
図に示すような第1中間テキスト(ステップ31〜3
4)を生成し、ベクトル化処理部が第1中間テキストを
変更した図4の流れ図に示すような第2中間テキスト
(ステップ41および42)を生成し、コード生成部が
第2中間テキストを読み込み並列実行可能部分をベクト
ル化した目的プログラムを生成していた。
【0005】ところが、従来のコンパイラでは、図5に
示すような原始プログラムが与えられた場合には、DO
ループ内のIF文下にTHEN節とELSE節とが存在
するので、その演算は図6に示すように別々のIF文下
の演算としてベクトル化を行っていた。このため、TH
EN節およびELSE節の両方にある演算は常に2回演
算が行われ、ベクトル化による実行時間の短縮が十分で
はなかった。
示すような原始プログラムが与えられた場合には、DO
ループ内のIF文下にTHEN節とELSE節とが存在
するので、その演算は図6に示すように別々のIF文下
の演算としてベクトル化を行っていた。このため、TH
EN節およびELSE節の両方にある演算は常に2回演
算が行われ、ベクトル化による実行時間の短縮が十分で
はなかった。
【0006】
【発明が解決しようとする課題】上述した従来のコンパ
イラでは、DOループ内のIF文下にTHEN節とEL
SE節とが存在する場合、その演算は別々のIF文下の
演算としてベクトル化を行っていたので、THEN節お
よびELSE節の両方にある演算は常に2回演算が行わ
れ、ベクトル処理プロセッサにおいてはプログラムの実
行時間を十分に短縮することができないという欠点があ
る。
イラでは、DOループ内のIF文下にTHEN節とEL
SE節とが存在する場合、その演算は別々のIF文下の
演算としてベクトル化を行っていたので、THEN節お
よびELSE節の両方にある演算は常に2回演算が行わ
れ、ベクトル処理プロセッサにおいてはプログラムの実
行時間を十分に短縮することができないという欠点があ
る。
【0007】本発明の目的は、上述の点に鑑み、DOル
ープ内のIF文下においてTHEN節およびELSE節
の両方に現れる同一の演算は条件に関係なしに演算され
るとしてマスクなしで一度演算しその結果をマスク付き
(条件を満足する部分のみ)で引用することにより、ベ
クトル処理プロセッサにおけるプログラムの実行時間を
短縮できるようにしたIF文下ベクトル演算最適化方式
を提供することにある。
ープ内のIF文下においてTHEN節およびELSE節
の両方に現れる同一の演算は条件に関係なしに演算され
るとしてマスクなしで一度演算しその結果をマスク付き
(条件を満足する部分のみ)で引用することにより、ベ
クトル処理プロセッサにおけるプログラムの実行時間を
短縮できるようにしたIF文下ベクトル演算最適化方式
を提供することにある。
【0008】
【課題を解決するための手段】本発明のIF文下ベクト
ル演算最適化方式は、記憶域上に規則的に並んでいるデ
ータに対して一度に演算を行うベクトル命令をもち、そ
の命令にマスクのオンまたはオフにより対応する要素の
処理を行うか否かを制御する機能をもつベクトル処理プ
ロセッサに対して、与えられた原始プログラムから目的
プログラムを生成し出力するコンパイラにおいて、前記
原始プログラムを読み込み構文解析を行って第1中間テ
キストを生成する構文解析部と、この構文解析部により
生成された前記第1中間テキストから前記原始プログラ
ムのループ中の制御の流れを解析する構造解析手段と、
ループ中のIF文の条件を解析するIF文下条件解析手
段と、ループ中に並列実行に矛盾するデータ依存関係が
あるか否かを判定するデータ依存関係判定手段と、前記
IF文下条件解析手段および前記データ依存関係判定手
段により並列実行可能と判定された部分のベクトル処理
用の第2中間テキストを生成するベクトルテキスト生成
手段と、前記IF文下条件解析手段による解析結果に基
づいてマスク付きベクトルテキストの共通式削除処理を
行うベクトル演算最適化処理手段とを備え、前記ベクト
ル演算最適化処理手段によりIF文のTHEN節とEL
SE節とが別々の条件としてマスク付きでベクトル演算
を2回行っていた部分を条件なしとしてベクトル演算を
1回行うように前記第2中間テキストを変形することで
並列実行可能部分を最適化するベクトル化処理部と、こ
のベクトル化処理部により生成された前記第2中間テキ
ストから目的プログラムを生成して出力するコード生成
部とを有する。
ル演算最適化方式は、記憶域上に規則的に並んでいるデ
ータに対して一度に演算を行うベクトル命令をもち、そ
の命令にマスクのオンまたはオフにより対応する要素の
処理を行うか否かを制御する機能をもつベクトル処理プ
ロセッサに対して、与えられた原始プログラムから目的
プログラムを生成し出力するコンパイラにおいて、前記
原始プログラムを読み込み構文解析を行って第1中間テ
キストを生成する構文解析部と、この構文解析部により
生成された前記第1中間テキストから前記原始プログラ
ムのループ中の制御の流れを解析する構造解析手段と、
ループ中のIF文の条件を解析するIF文下条件解析手
段と、ループ中に並列実行に矛盾するデータ依存関係が
あるか否かを判定するデータ依存関係判定手段と、前記
IF文下条件解析手段および前記データ依存関係判定手
段により並列実行可能と判定された部分のベクトル処理
用の第2中間テキストを生成するベクトルテキスト生成
手段と、前記IF文下条件解析手段による解析結果に基
づいてマスク付きベクトルテキストの共通式削除処理を
行うベクトル演算最適化処理手段とを備え、前記ベクト
ル演算最適化処理手段によりIF文のTHEN節とEL
SE節とが別々の条件としてマスク付きでベクトル演算
を2回行っていた部分を条件なしとしてベクトル演算を
1回行うように前記第2中間テキストを変形することで
並列実行可能部分を最適化するベクトル化処理部と、こ
のベクトル化処理部により生成された前記第2中間テキ
ストから目的プログラムを生成して出力するコード生成
部とを有する。
【0009】
【作用】本発明のIF文下ベクトル演算最適化方式で
は、構文解析部が原始プログラムを読み込み構文解析を
行って第1中間テキストを生成し、ベクトル化処理部が
構文解析部により生成された第1中間テキストから原始
プログラムのループ中の制御の流れを解析する構造解析
手段と、ループ中のIF文の条件を解析するIF文下条
件解析手段と、ループ中に並列実行に矛盾するデータ依
存関係があるか否かを判定するデータ依存関係判定手段
と、IF文下条件解析手段およびデータ依存関係判定手
段により並列実行可能と判定された部分のベクトル処理
用の第2中間テキストを生成するベクトルテキスト生成
手段と、IF文下条件解析手段による解析結果に基づい
てマスク付きベクトルテキストの共通式削除処理を行う
ベクトル演算最適化処理手段とを備え、ベクトル演算最
適化処理手段によりIF文のTHEN節とELSE節と
が別々の条件としてマスク付きでベクトル演算を2回行
っていた部分を条件なしとしてベクトル演算を1回行う
ように第2中間テキストを変形することで並列実行可能
部分を最適化し、コード生成部がベクトル化処理部によ
り生成された第2中間テキストから目的プログラムを生
成して出力する。
は、構文解析部が原始プログラムを読み込み構文解析を
行って第1中間テキストを生成し、ベクトル化処理部が
構文解析部により生成された第1中間テキストから原始
プログラムのループ中の制御の流れを解析する構造解析
手段と、ループ中のIF文の条件を解析するIF文下条
件解析手段と、ループ中に並列実行に矛盾するデータ依
存関係があるか否かを判定するデータ依存関係判定手段
と、IF文下条件解析手段およびデータ依存関係判定手
段により並列実行可能と判定された部分のベクトル処理
用の第2中間テキストを生成するベクトルテキスト生成
手段と、IF文下条件解析手段による解析結果に基づい
てマスク付きベクトルテキストの共通式削除処理を行う
ベクトル演算最適化処理手段とを備え、ベクトル演算最
適化処理手段によりIF文のTHEN節とELSE節と
が別々の条件としてマスク付きでベクトル演算を2回行
っていた部分を条件なしとしてベクトル演算を1回行う
ように第2中間テキストを変形することで並列実行可能
部分を最適化し、コード生成部がベクトル化処理部によ
り生成された第2中間テキストから目的プログラムを生
成して出力する。
【0010】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
説明する。
【0011】図1は、本発明の一実施例に係るIF文下
ベクトル演算最適化方式が適用されたコンパイラ2の構
成を示す機能ブロック図である。このコンパイラ2は、
記憶域上に規則的に並んでいるデータに対して一度に演
算を行うベクトル命令を持つベクトル処理プロセッサに
対して、与えられた高級言語で記述された原始プログラ
ム1から目的プログラム3を生成して出力するコンパイ
ラであり、原始プログラム1を読み込んで構文解析を行
い第1中間テキスト24を生成する構文解析部21と、
第1中間テキスト24から原始プログラム1中のループ
構造を検出して並列実行可能部分の認識を行いベクトル
処理用の第2中間テキスト25を生成するベクトル化処
理部22と、第2中間テキスト25から目的プログラム
3を生成して出力するコード生成部23とから、その主
要部が構成されている。
ベクトル演算最適化方式が適用されたコンパイラ2の構
成を示す機能ブロック図である。このコンパイラ2は、
記憶域上に規則的に並んでいるデータに対して一度に演
算を行うベクトル命令を持つベクトル処理プロセッサに
対して、与えられた高級言語で記述された原始プログラ
ム1から目的プログラム3を生成して出力するコンパイ
ラであり、原始プログラム1を読み込んで構文解析を行
い第1中間テキスト24を生成する構文解析部21と、
第1中間テキスト24から原始プログラム1中のループ
構造を検出して並列実行可能部分の認識を行いベクトル
処理用の第2中間テキスト25を生成するベクトル化処
理部22と、第2中間テキスト25から目的プログラム
3を生成して出力するコード生成部23とから、その主
要部が構成されている。
【0012】ベクトル化処理部22は、第1中間テキス
ト24を読み込んで原始プログラム1のループ中の制御
の流れを解析する構造解析手段221と、ループ中のI
F文の条件を解析するIF文下条件解析手段222と、
ループ中に並列実行に矛盾するデータ依存関係があるか
否かを判定するデータ依存関係判定手段223と、IF
文下条件解析手段222およびデータ依存関係判定手段
223により並列実行可能と判定された部分のベクトル
処理用の第2中間テキスト25を生成するベクトルテキ
スト生成手段224と、IF文下条件解析手段222に
よる解析結果に基づいてマスク付きベクトルテキストの
共通式削除処理を行うベクトル演算最適化処理手段22
5とを含んで構成されている。
ト24を読み込んで原始プログラム1のループ中の制御
の流れを解析する構造解析手段221と、ループ中のI
F文の条件を解析するIF文下条件解析手段222と、
ループ中に並列実行に矛盾するデータ依存関係があるか
否かを判定するデータ依存関係判定手段223と、IF
文下条件解析手段222およびデータ依存関係判定手段
223により並列実行可能と判定された部分のベクトル
処理用の第2中間テキスト25を生成するベクトルテキ
スト生成手段224と、IF文下条件解析手段222に
よる解析結果に基づいてマスク付きベクトルテキストの
共通式削除処理を行うベクトル演算最適化処理手段22
5とを含んで構成されている。
【0013】図9(a)を参照すると、IF文下条件解
析手段222で作成されデータ依存関係判定手段223
およびベクトルテキスト生成手段224で参照される条
件テーブル910は、次の条件テーブルへのポインタ9
11と、IF文下THEN節のマスク情報テーブルへの
ポインタ912と、IF文下ELSE節のマスク情報テ
ーブルへのポインタ913と、条件式のトライァド91
4とから構成されている。
析手段222で作成されデータ依存関係判定手段223
およびベクトルテキスト生成手段224で参照される条
件テーブル910は、次の条件テーブルへのポインタ9
11と、IF文下THEN節のマスク情報テーブルへの
ポインタ912と、IF文下ELSE節のマスク情報テ
ーブルへのポインタ913と、条件式のトライァド91
4とから構成されている。
【0014】また、図9(b)を参照すると、マスク情
報テーブル920は、次のマスク情報テーブルへのポイ
ンタ921と、条件テーブルへのポインタ922と、マ
スクテーブルへのポインタ923とから構成されてい
る。
報テーブル920は、次のマスク情報テーブルへのポイ
ンタ921と、条件テーブルへのポインタ922と、マ
スクテーブルへのポインタ923とから構成されてい
る。
【0015】次に、このように構成された本実施例のI
F文下ベクトル演算最適化方式の動作について説明す
る。なお、ここでは、図5に示すような配列要素の引用
を行っている原始プログラム1が与えられた場合に、通
常は図11に示されるような第2中間テキストを作成す
ることでベクトル化処理部22を終了するが、原始プロ
グラム1のIF文下のTHEN節およびELSE節の両
方で演算される式の部分を共通式として処理でき、図7
に示すようなループ群として処理することが可能とな
り、その結果、マスクなしのベクトル演算1回で処理を
行うことができ、図12の流れ図に示すような第2中間
テキスト25(ステップ1201〜1208)が生成さ
れる例を参考にしながら説明する。
F文下ベクトル演算最適化方式の動作について説明す
る。なお、ここでは、図5に示すような配列要素の引用
を行っている原始プログラム1が与えられた場合に、通
常は図11に示されるような第2中間テキストを作成す
ることでベクトル化処理部22を終了するが、原始プロ
グラム1のIF文下のTHEN節およびELSE節の両
方で演算される式の部分を共通式として処理でき、図7
に示すようなループ群として処理することが可能とな
り、その結果、マスクなしのベクトル演算1回で処理を
行うことができ、図12の流れ図に示すような第2中間
テキスト25(ステップ1201〜1208)が生成さ
れる例を参考にしながら説明する。
【0016】原始プログラム1が与えられてコンパイラ
2が起動されると、まず構文解析部21が、原始プログ
ラム1を読み込んで図8の流れ図に示すような第1中間
テキスト24(ステップ81〜86)を生成する。
2が起動されると、まず構文解析部21が、原始プログ
ラム1を読み込んで図8の流れ図に示すような第1中間
テキスト24(ステップ81〜86)を生成する。
【0017】次に、ベクトル化処理部22が第1中間テ
キスト24を入力すると、
キスト24を入力すると、
【0018】(1) まず、構造解析手段221が起動
され、以下の処理〜を行う。
され、以下の処理〜を行う。
【0019】 構造解析手段221は、まず第1中間
テキスト24を分岐を単位としたブロックに分割する。
テキスト24を分岐を単位としたブロックに分割する。
【0020】 次に、構造解析手段221は、対象と
なるループ部分を文単位のブロックに分割する。
なるループ部分を文単位のブロックに分割する。
【0021】 続いて、構造解析手段221は、第1
中間テキスト24からプログラム全体の制御の流れを解
析して各ブロックの関係を求める。
中間テキスト24からプログラム全体の制御の流れを解
析して各ブロックの関係を求める。
【0022】 最後に、構造解析手段221は、各々
のブロックで定義参照されている配列および変数に対し
て、その生死情報を収集する。
のブロックで定義参照されている配列および変数に対し
て、その生死情報を収集する。
【0023】(2) 次に、IF文下条件解析手段22
2が起動され、以下の処理−を行う。
2が起動され、以下の処理−を行う。
【0024】 IF文下条件解析手段222は、まず
ループ中のIF文を検索し、条件テーブル910を作成
する。
ループ中のIF文を検索し、条件テーブル910を作成
する。
【0025】 次に、IF文下条件解析手段222
は、THEN節のみが存在する場合にはTHEN節のマ
スク情報テーブル920を作成し、THEN節およびE
LSE節が存在する場合にはTHEN節のマスク情報テ
ーブル920およびELSE節のマスク情報テーブル9
20を作成する。また、それぞれのマスク情報テーブル
920と条件テーブル910との間のチェーンを張る。
は、THEN節のみが存在する場合にはTHEN節のマ
スク情報テーブル920を作成し、THEN節およびE
LSE節が存在する場合にはTHEN節のマスク情報テ
ーブル920およびELSE節のマスク情報テーブル9
20を作成する。また、それぞれのマスク情報テーブル
920と条件テーブル910との間のチェーンを張る。
【0026】(3) 次に、データ依存関係判定手段2
23が起動され、ループ中に並列実行に矛盾するデータ
依存関係があるか否かを判定する。
23が起動され、ループ中に並列実行に矛盾するデータ
依存関係があるか否かを判定する。
【0027】(4) 続いて、ベクトルテキスト生成手
段224が起動され、以下の処理〜を行う。
段224が起動され、以下の処理〜を行う。
【0028】 ベクトルテキスト生成手段224は、
まず並列実行可能部分をベクトル処理するために必要と
なるベクトル長設定用の第2中間テキスト25を生成す
る。図11に示す第2中間テキスト25の場合には、ル
ープの繰返し数をベクトル長として設定するステップ1
101が生成される。
まず並列実行可能部分をベクトル処理するために必要と
なるベクトル長設定用の第2中間テキスト25を生成す
る。図11に示す第2中間テキスト25の場合には、ル
ープの繰返し数をベクトル長として設定するステップ1
101が生成される。
【0029】 次に、ベクトルテキスト生成手段22
4は、並列実行可能部分に対してベクトル処理用の第2
中間テキスト25を生成する。図11の第2中間テキス
ト25の場合には、ステップ1102〜1107が生成
される。
4は、並列実行可能部分に対してベクトル処理用の第2
中間テキスト25を生成する。図11の第2中間テキス
ト25の場合には、ステップ1102〜1107が生成
される。
【0030】 最後に、ベクトルテキスト生成手段2
24は、並列実行可能部分をベクトル処理するために必
要となる後処理用の第2中間テキスト25を生成する。
図11の第2中間テキスト25の場合には、ステップ1
108が生成される。
24は、並列実行可能部分をベクトル処理するために必
要となる後処理用の第2中間テキスト25を生成する。
図11の第2中間テキスト25の場合には、ステップ1
108が生成される。
【0031】(5) 続いて、ベクトル演算最適化処理
手段225が起動され、以下の処理〜を行う。
手段225が起動され、以下の処理〜を行う。
【0032】 まず、ベクトル演算最適化処理手段2
25は、通常の演算テキストの共通式削除処理と同様
に、第2中間テキスト25から共通式を捜す。このと
き、マスク部分が異なっているものを取り出す。図11
の第2中間テキスト25の場合には、ステップ1103
および1106が取り出される。
25は、通常の演算テキストの共通式削除処理と同様
に、第2中間テキスト25から共通式を捜す。このと
き、マスク部分が異なっているものを取り出す。図11
の第2中間テキスト25の場合には、ステップ1103
および1106が取り出される。
【0033】 次に、ベクトル演算最適化処理手段2
25は、マスク情報テーブル920より条件テーブル9
10を取り出し、対応するマスク情報テーブル920
(先のマスク情報テーブル920がTHEN節のもので
あればELSE節のマスク情報テーブル920、ELS
E節のものあればTHEN節のマスク情報テーブル92
0)からマスクテーブルへのポインタ923を取り出
し、これをたどってマスク情報を取り出す。図11の第
2中間テキスト25の場合には、ステップ1106より
マスク情報M2が取り出され、対応するマスク情報テー
ブル920から図10に示すようにマスク情報M1が取
り出される。
25は、マスク情報テーブル920より条件テーブル9
10を取り出し、対応するマスク情報テーブル920
(先のマスク情報テーブル920がTHEN節のもので
あればELSE節のマスク情報テーブル920、ELS
E節のものあればTHEN節のマスク情報テーブル92
0)からマスクテーブルへのポインタ923を取り出
し、これをたどってマスク情報を取り出す。図11の第
2中間テキスト25の場合には、ステップ1106より
マスク情報M2が取り出され、対応するマスク情報テー
ブル920から図10に示すようにマスク情報M1が取
り出される。
【0034】 続いて、ベクトル演算最適化処理手段
225は、共通式の相手方のマスク情報テーブル920
がで取り出したものと同一であれば、共通式処理可能
として、相手方のテキストをマスクなしの演算に変更す
る。また、検索したテキストは削除する。図11の第2
中間テキスト25の場合、ステップ1103および11
06は条件を満足するため、変換が行われる。この結
果、図12に示すような第2中間テキスト25が生成さ
れる。
225は、共通式の相手方のマスク情報テーブル920
がで取り出したものと同一であれば、共通式処理可能
として、相手方のテキストをマスクなしの演算に変更す
る。また、検索したテキストは削除する。図11の第2
中間テキスト25の場合、ステップ1103および11
06は条件を満足するため、変換が行われる。この結
果、図12に示すような第2中間テキスト25が生成さ
れる。
【0035】ベクトル化処理部22のベクトル演算最適
化処理手段225における処理が終了すると、コード生
成部23が起動され、第2中間テキスト25に基づいて
目的プログラム3が生成される。
化処理手段225における処理が終了すると、コード生
成部23が起動され、第2中間テキスト25に基づいて
目的プログラム3が生成される。
【0036】この結果、ベクトル処理プロセッサは、従
来マスク付きの状態でベクトル演算を2回行っていたも
のが、マスクなしでベクトル演算を1回行えばよくな
り、プログラムの実行時間が短縮される。
来マスク付きの状態でベクトル演算を2回行っていたも
のが、マスクなしでベクトル演算を1回行えばよくな
り、プログラムの実行時間が短縮される。
【0037】
【発明の効果】以上説明したように本発明は、コンパイ
ラのベクトル化処理部に構造解析手段,IF文下条件解
析手段,データ依存関係判定手段,ベクトルテキスト生
成手段およびベクトル演算最適化処理手段を設け、IF
文の条件下で2回(IF文のTHEN節およびELSE
節)行われていたベクトル演算を1回のベクトル演算に
まとめることにより、ベクトル処理プロセッサにおける
プログラムの実行時間を短縮できるという効果がある。
ラのベクトル化処理部に構造解析手段,IF文下条件解
析手段,データ依存関係判定手段,ベクトルテキスト生
成手段およびベクトル演算最適化処理手段を設け、IF
文の条件下で2回(IF文のTHEN節およびELSE
節)行われていたベクトル演算を1回のベクトル演算に
まとめることにより、ベクトル処理プロセッサにおける
プログラムの実行時間を短縮できるという効果がある。
【図1】本発明の一実施例に係るIF文下ベクトル演算
最適化方式が適用されたコンパイラの機能ブロック図で
ある。
最適化方式が適用されたコンパイラの機能ブロック図で
ある。
【図2】図1中の原始プログラムの一例を示す図であ
る。
る。
【図3】図2に例示した原始プログラムから生成される
第1中間テキストの一例を示す流れ図である。
第1中間テキストの一例を示す流れ図である。
【図4】図3に例示した第1中間テキストから生成され
る第2中間テキストの一例を示す流れ図である。
る第2中間テキストの一例を示す流れ図である。
【図5】本実施例のIF文下ベクトル演算最適化方式が
適用される原始プログラムの具体例を示す図である。
適用される原始プログラムの具体例を示す図である。
【図6】図5に例示した原始プログラムを並列実行可能
として処理する場合に従来のコンパイラが第2中間テキ
ストの作成時に行う変形を原始プログラムの形式で例示
した図である。
として処理する場合に従来のコンパイラが第2中間テキ
ストの作成時に行う変形を原始プログラムの形式で例示
した図である。
【図7】図5に例示した原始プログラムを並列実行可能
として処理する場合に本実施例のIF文ベクトル演算最
適化方式が適用されたコンパイラが第2中間テキストの
作成時に行う変形を原始プログラムの形式で例示した図
である。
として処理する場合に本実施例のIF文ベクトル演算最
適化方式が適用されたコンパイラが第2中間テキストの
作成時に行う変形を原始プログラムの形式で例示した図
である。
【図8】図5に例示した原始プログラムから生成される
第1中間テキストの一例を示す流れ図である。
第1中間テキストの一例を示す流れ図である。
【図9】本実施例のIF文下ベクトル演算最適化方式に
おいて用いられる条件テーブルおよびマスク情報テーブ
ルの構成を示す図である。
おいて用いられる条件テーブルおよびマスク情報テーブ
ルの構成を示す図である。
【図10】本実施例のIF文下ベクトル演算最適化方式
で図5に例示した原始プログラムを処理したときの条件
テーブルおよびマスク情報テーブルの内容を例示する図
である。
で図5に例示した原始プログラムを処理したときの条件
テーブルおよびマスク情報テーブルの内容を例示する図
である。
【図11】図8に例示した第1中間テキストから生成さ
れる第2中間テキストを示す流れ図である。
れる第2中間テキストを示す流れ図である。
【図12】図11に例示した第2中間テキストから本実
施例のIF文下ベクトル演算最適化方式により変形を行
った第2中間テキストを示す流れ図である。
施例のIF文下ベクトル演算最適化方式により変形を行
った第2中間テキストを示す流れ図である。
1 原始プログラム 2 コンパイラ 3 目的プログラム 21 構文解析部 22 ベクトル化処理部 23 コード生成部 24 第1中間テキスト 25 第2中間テキスト 221 構造解析手段 222 IF文下条件解析手段 223 データ依存関係判定手段 224 ベクトルテキスト生成手段 225 ベクトル演算最適化処理手段 910 条件テーブル 911 次の条件テーブルへのポインタ 912 IF文下THEN節のマスク情報テーブルへの
ポインタ 913 IF文下ELSE節のマスク情報テーブルへの
ポインタ 914 条件式のトライァド 920 マスク情報テーブル 921 次のマスク情報テーブルへのポインタ 922 条件テーブルへのポインタ 923 マスクテーブルへのポインタ
ポインタ 913 IF文下ELSE節のマスク情報テーブルへの
ポインタ 914 条件式のトライァド 920 マスク情報テーブル 921 次のマスク情報テーブルへのポインタ 922 条件テーブルへのポインタ 923 マスクテーブルへのポインタ
Claims (1)
- 【請求項1】 記憶域上に規則的に並んでいるデータに
対して一度に演算を行うベクトル命令をもち、ベクトル
命令にマスクのオンまたはオフにより対応する要素の処
理を行うか否かを制御する機能をもつベクトル処理プロ
セッサに対して、与えられた原始プログラムから目的プ
ログラムを生成し出力するコンパイラにおいて、 前記原始プログラムを読み込み構文解析を行って第1中
間テキストを生成する構文解析部と、 この構文解析部により生成された前記第1中間テキスト
から前記原始プログラムのループ中の制御の流れを解析
する構造解析手段と、ループ中のIF文の条件を解析す
るIF文下条件解析手段と、ループ中に並列実行に矛盾
するデータ依存関係があるか否かを判定するデータ依存
関係判定手段と、前記IF文下条件解析手段および前記
データ依存関係判定手段により並列実行可能と判定され
た部分のベクトル処理用の第2中間テキストを生成する
ベクトルテキスト生成手段と、前記IF文下条件解析手
段による解析結果に基づいてマスク付きベクトルテキス
トの共通式削除処理を行うベクトル演算最適化処理手段
とを備え、前記ベクトル演算最適化処理手段によりIF
文のTHEN節とELSE節とが別々の条件としてマス
ク付きでベクトル演算を2回行っていた部分を条件なし
としてベクトル演算を1回行うように前記第2中間テキ
ストを変形することで並列実行可能部分を最適化するベ
クトル化処理部と、 このベクトル化処理部により生成された前記第2中間テ
キストから目的プログラムを生成して出力するコード生
成部とを有することを特徴とするIF文下ベクトル演算
最適化方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3308376A JPH05120323A (ja) | 1991-10-28 | 1991-10-28 | If文下ベクトル演算最適化方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3308376A JPH05120323A (ja) | 1991-10-28 | 1991-10-28 | If文下ベクトル演算最適化方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05120323A true JPH05120323A (ja) | 1993-05-18 |
Family
ID=17980326
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3308376A Pending JPH05120323A (ja) | 1991-10-28 | 1991-10-28 | If文下ベクトル演算最適化方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH05120323A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11120166A (ja) * | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | ベクトル化装置および記録媒体 |
| JP2018049461A (ja) * | 2016-09-21 | 2018-03-29 | 日本電気株式会社 | コンパイル装置、コンパイル方法、および、コンパイルプログラム |
-
1991
- 1991-10-28 JP JP3308376A patent/JPH05120323A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11120166A (ja) * | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | ベクトル化装置および記録媒体 |
| JP2018049461A (ja) * | 2016-09-21 | 2018-03-29 | 日本電気株式会社 | コンパイル装置、コンパイル方法、および、コンパイルプログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4860203A (en) | Apparatus and method for extracting documentation text from a source code program | |
| JP4448881B2 (ja) | コンピュータプログラムを発生する方法及びシステム | |
| JPH06103463B2 (ja) | コード生成方法 | |
| JP2002259134A (ja) | ポストリンク・コードの最適化方法及び装置 | |
| JPH0721033A (ja) | 言語処理装置及びその方法 | |
| CN117851101A (zh) | 一种基于大语言模型的仓库级别代码缺陷自动修复的方法 | |
| JP2007511834A (ja) | リバーシブルなデザイン・ツリーの変換のための方法とシステム | |
| GB2420638A (en) | Method of substituting code fragments in Internal Representation | |
| JPH0756745A (ja) | 言語処理プログラムのコンパイラ処理方式 | |
| JPH06251054A (ja) | If文下ベクトル演算最適化方法 | |
| JPH05134882A (ja) | 言語翻訳処理装置および方法 | |
| JPH11242598A (ja) | コンパイル方法およびコンパイル装置ならびにオブジェクトプログラム実行方法およびオブジェクトプログラム実行装置ならびにプログラム記憶媒体 | |
| JPH11195011A (ja) | 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体 | |
| JP3417960B2 (ja) | 文章校正支援方法および装置 | |
| JP2827724B2 (ja) | プログラムデバッグ処理方法 | |
| JP2008015665A (ja) | プログラム解析方法及びプログラム解析装置 | |
| JPS59231649A (ja) | コンパイルリスト出力処理方式 | |
| JPH02253443A (ja) | プログラム生成方法 | |
| JPH0425969A (ja) | If文下定義配列ベクトル化コンパイル方式 | |
| JP3226172B2 (ja) | インライン展開システム | |
| JP2674489B2 (ja) | ベクトル化処理装置 | |
| CN121560331A (zh) | 基于多级中间表示的参数化编译优化方法及系统 | |
| JPH0950429A (ja) | コンパイラにおけるポインタベクトル化システム | |
| JPH03220669A (ja) | 多重ループベクトル化コンパイル方式 | |
| JPS63187365A (ja) | If文下定義変数ベクトル化コンパイル方式 |