JPH0233188B2 - - Google Patents
Info
- Publication number
- JPH0233188B2 JPH0233188B2 JP58055489A JP5548983A JPH0233188B2 JP H0233188 B2 JPH0233188 B2 JP H0233188B2 JP 58055489 A JP58055489 A JP 58055489A JP 5548983 A JP5548983 A JP 5548983A JP H0233188 B2 JPH0233188 B2 JP H0233188B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- register
- invariant
- instruction
- area
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Devices For Executing Special Programs (AREA)
- Complex Calculations (AREA)
Description
【発明の詳細な説明】
〔発明の技術分野〕
本発明は、プログラムのうち入れ子構造のルー
プを構成する部分、特に内部ループに領域不変ベ
クトルをロードするためのベクトル・ロード命
令、領域不変ベクトル演算するためのベクトル演
算命令および領域不変ベクトルをストアするため
のベクトル・ストア命令を有する入れ子構造のル
ープを構成する部分を最適化する領域不変ベクト
ルの割付方式に関するものである。
プを構成する部分、特に内部ループに領域不変ベ
クトルをロードするためのベクトル・ロード命
令、領域不変ベクトル演算するためのベクトル演
算命令および領域不変ベクトルをストアするため
のベクトル・ストア命令を有する入れ子構造のル
ープを構成する部分を最適化する領域不変ベクト
ルの割付方式に関するものである。
第1図はベクトル命令を実行する計算機システ
ムの概要を示すものであつて、MSUは主記憶装
置、MCUは記憶制御ユニツト、VPはベクトル・
プロセツサ、CHPはチヤネル・プロセツサ、DA
はDASDをそれぞれ示している。
ムの概要を示すものであつて、MSUは主記憶装
置、MCUは記憶制御ユニツト、VPはベクトル・
プロセツサ、CHPはチヤネル・プロセツサ、DA
はDASDをそれぞれ示している。
ベクトル・プロセツサVPは、メモリ・アクセ
ス・パイプライン、加減算パイプライン、乗算パ
イプライン、除算パイプライン及びマスク・パイ
プラインを有している。ベクトル・プロセツサ
VPがメモリ・アクセス要求を発行すると、記憶
制御ユニツトMCUはこのメモリ・アクセス要求
を実行する。
ス・パイプライン、加減算パイプライン、乗算パ
イプライン、除算パイプライン及びマスク・パイ
プラインを有している。ベクトル・プロセツサ
VPがメモリ・アクセス要求を発行すると、記憶
制御ユニツトMCUはこのメモリ・アクセス要求
を実行する。
第2図はベクトル・プロセツサVPのレジス
タ・アーキテクチヤを示すものであつて、FRO
ないしFRngは汎用レジスタ、VR0ないしVRnv
はベクトル・レジスタ、MR0ないしMRnvはマ
スク・レジスタ、VLはベクトル長をそれぞれ示
している。ベクトル・レジスタVR0ないしVRnv
のそれぞれは、演算ベクトルを格納するものであ
り、マスク・レジスタMR0ないしMRnvのそれ
ぞれはマスク・ベクトルを格納するものである。
ベクトル長レジスタVLには、演算ベクトル長が
セツトされる。1回のベクトル長の設定で動作可
能なベクトル命令範囲をVL制御範囲という。VL
制御範囲で使用する最大のベクトル・レジスタ数
をビジー数というが、ベクトル・レジスタの個数
とベクトル・レジスタの長さ(要素数)は、ビジ
ー数で相違する。例えば、ビジー数が1ないし8
の場合は、全ベクトル・レジスタは長さ1024の8
個のベクトル・レジスタに分割される。なお、全
ベクトル・レジスタは1024×8個のエレメントを
有し、1エレメントは8バイトである。ビジー数
が9ないし16の場合には全ベクトル・レジスタは
長さ512の16個のベクトル・レジスタに分割され、
ビジー数が17ないし32の場合には全ベクトル・レ
ジスタは長さ256の32個のベクトル・レジスタに
分割され、ビジー数が33ないし64の場合には全ベ
クトル・レジスタは長さ128の64個のベクトル・
レジスタに分割され、ビジー数が65ないし128の
場合には全ベクトル・レジスタは長さ64の128個
のベクトル・レジスタに分割され、ビジー数が
129以上の場合には全ベクトル・レジスタは長さ
32の256個のベクトル・レジスタに分割される。
ビジー数は、或る演算を行う場合に幾つのベクト
ル・レジスタを必要とするかを示すものであつ
て、コンパイラによつて決定される。
タ・アーキテクチヤを示すものであつて、FRO
ないしFRngは汎用レジスタ、VR0ないしVRnv
はベクトル・レジスタ、MR0ないしMRnvはマ
スク・レジスタ、VLはベクトル長をそれぞれ示
している。ベクトル・レジスタVR0ないしVRnv
のそれぞれは、演算ベクトルを格納するものであ
り、マスク・レジスタMR0ないしMRnvのそれ
ぞれはマスク・ベクトルを格納するものである。
ベクトル長レジスタVLには、演算ベクトル長が
セツトされる。1回のベクトル長の設定で動作可
能なベクトル命令範囲をVL制御範囲という。VL
制御範囲で使用する最大のベクトル・レジスタ数
をビジー数というが、ベクトル・レジスタの個数
とベクトル・レジスタの長さ(要素数)は、ビジ
ー数で相違する。例えば、ビジー数が1ないし8
の場合は、全ベクトル・レジスタは長さ1024の8
個のベクトル・レジスタに分割される。なお、全
ベクトル・レジスタは1024×8個のエレメントを
有し、1エレメントは8バイトである。ビジー数
が9ないし16の場合には全ベクトル・レジスタは
長さ512の16個のベクトル・レジスタに分割され、
ビジー数が17ないし32の場合には全ベクトル・レ
ジスタは長さ256の32個のベクトル・レジスタに
分割され、ビジー数が33ないし64の場合には全ベ
クトル・レジスタは長さ128の64個のベクトル・
レジスタに分割され、ビジー数が65ないし128の
場合には全ベクトル・レジスタは長さ64の128個
のベクトル・レジスタに分割され、ビジー数が
129以上の場合には全ベクトル・レジスタは長さ
32の256個のベクトル・レジスタに分割される。
ビジー数は、或る演算を行う場合に幾つのベクト
ル・レジスタを必要とするかを示すものであつ
て、コンパイラによつて決定される。
第3図はVP用FORTRANコンパイラの概要を
示す図であり、CMPはVP用FORTRANコンパ
イラを示すものである。このコンパイラCMPは、
ソース解釈部、記憶域割付け部、ベクトル化部、
中間コード最適化部、レジスタ使用決定部および
目的プログラム出力部を有している。ソース解釈
部はソース・プログラムをDASDより入力し、文
解釈を行つて中間コードに展開するものであり、
記憶域割付部はプログラム中に出現する各種デー
タに記憶域内番地を割当てるものであり、ベクト
ル化部はプログラムのループ構造を検出し、並列
実行可能部分の記憶と中間コード変更を行うもの
であり、中間コード最適化部は中間コードのレベ
ルでVPハードウエアを有効に利用する最適化を
施すものであり、レジスタ使用決定部は中間コー
ドに現われたデータに実際の資源(レジスタ)を
割当てるものであり、目的プログラム出力部は機
械命令語のDASDへの出力と、機械語レベルでの
最適化を行うものである。
示す図であり、CMPはVP用FORTRANコンパ
イラを示すものである。このコンパイラCMPは、
ソース解釈部、記憶域割付け部、ベクトル化部、
中間コード最適化部、レジスタ使用決定部および
目的プログラム出力部を有している。ソース解釈
部はソース・プログラムをDASDより入力し、文
解釈を行つて中間コードに展開するものであり、
記憶域割付部はプログラム中に出現する各種デー
タに記憶域内番地を割当てるものであり、ベクト
ル化部はプログラムのループ構造を検出し、並列
実行可能部分の記憶と中間コード変更を行うもの
であり、中間コード最適化部は中間コードのレベ
ルでVPハードウエアを有効に利用する最適化を
施すものであり、レジスタ使用決定部は中間コー
ドに現われたデータに実際の資源(レジスタ)を
割当てるものであり、目的プログラム出力部は機
械命令語のDASDへの出力と、機械語レベルでの
最適化を行うものである。
第4図は、入れ子構造のループをなし、内部ル
ープに配列Bと配列Cとを加算し、これを配列A
とするためのベクトル命令列を有する中間テキス
トの1例を示すものである。内部ループのベクト
ル命令列は、ベクトルBをベクトル・レジスタvt
1にロードし、ベクトルCをベクトル・レジスタ
vt2にロードし、ベクトル・レジスタvt1のベク
トルとベクトル・レジスタvt2のベクトルを加算
して加算結果をベクトル・レジスタvt3にセツト
し、ベクトル・レジスタvt3のベクトルをベクト
ルAにストアするためのものである。この内部ル
ープをm回実行した後、制御変数Jの値は更新さ
れる。制御変数Jの値が定められた値になると、
入れ子構造のループの処理は終了したことにな
る。ベクトルA、B、Cが制御変数Jに無関係な
場合、これを領域不変ベクトルという。
ープに配列Bと配列Cとを加算し、これを配列A
とするためのベクトル命令列を有する中間テキス
トの1例を示すものである。内部ループのベクト
ル命令列は、ベクトルBをベクトル・レジスタvt
1にロードし、ベクトルCをベクトル・レジスタ
vt2にロードし、ベクトル・レジスタvt1のベク
トルとベクトル・レジスタvt2のベクトルを加算
して加算結果をベクトル・レジスタvt3にセツト
し、ベクトル・レジスタvt3のベクトルをベクト
ルAにストアするためのものである。この内部ル
ープをm回実行した後、制御変数Jの値は更新さ
れる。制御変数Jの値が定められた値になると、
入れ子構造のループの処理は終了したことにな
る。ベクトルA、B、Cが制御変数Jに無関係な
場合、これを領域不変ベクトルという。
第5図は配列Bと配列Cと加算して配列Aを作
る処理を説明するものである。いま、配列A、
B、Cの要素数をn、ベクトル・レジスタの長さ
を512、nを512で割つたときの商をSとし、剰余
をxとする。この場合、ベクトル長レジスタVL
には512がセツトされ、また、回転数mはS+1
となる。先ず、配列Bの第0番地(先頭)ないし
第x−1番地のベクトルを取り出してベクトル・
レジスタvt1にロードし、配列Cの第0番地ない
し第x−1番地のベクトルを取り出してベクト
ル・レジスタvt2にロードし、ベクトル・レジス
タvt1とベクトル・レジスタvt2を加算して加算
結果をベクトル・レジスタvt3に入れ、ベクト
ル・レジスタvt3の中のベクトル配列Aの第0番
地ないし第x−1番地にストアする。次に、配列
Bの第x番地ないし第x+511番地のベクトルを
ベクトル・レジスタvt1にロードし、配列Cの第
x番地ないし第x+511番地のベクトルをベクト
ル・レジスタvt2にロードし、ベクトル・レジス
タvt1とベクトル・レジスタvt2の加算結果をベ
クトル・レジスタvt3にセツトし、ベクトル・レ
ジスタvt3のベクトルを配列Aの第x番地ないし
第x+511番地にストアする。以下、同様な処理
を繰返し数がmになるまで行う。
る処理を説明するものである。いま、配列A、
B、Cの要素数をn、ベクトル・レジスタの長さ
を512、nを512で割つたときの商をSとし、剰余
をxとする。この場合、ベクトル長レジスタVL
には512がセツトされ、また、回転数mはS+1
となる。先ず、配列Bの第0番地(先頭)ないし
第x−1番地のベクトルを取り出してベクトル・
レジスタvt1にロードし、配列Cの第0番地ない
し第x−1番地のベクトルを取り出してベクト
ル・レジスタvt2にロードし、ベクトル・レジス
タvt1とベクトル・レジスタvt2を加算して加算
結果をベクトル・レジスタvt3に入れ、ベクト
ル・レジスタvt3の中のベクトル配列Aの第0番
地ないし第x−1番地にストアする。次に、配列
Bの第x番地ないし第x+511番地のベクトルを
ベクトル・レジスタvt1にロードし、配列Cの第
x番地ないし第x+511番地のベクトルをベクト
ル・レジスタvt2にロードし、ベクトル・レジス
タvt1とベクトル・レジスタvt2の加算結果をベ
クトル・レジスタvt3にセツトし、ベクトル・レ
ジスタvt3のベクトルを配列Aの第x番地ないし
第x+511番地にストアする。以下、同様な処理
を繰返し数がmになるまで行う。
第4図に示されているような入れ子構造ループ
は、制御変数Jの回転数をNとすると、ロードの
回数は、 N×m×2 となり、ストアの回数は N×m となる。ベクトル・プロセツサVPの処理効率を
向上させるためには、主記憶装置をアクセスする
回数は可能な限り少なくすることが望まれる。
は、制御変数Jの回転数をNとすると、ロードの
回数は、 N×m×2 となり、ストアの回数は N×m となる。ベクトル・プロセツサVPの処理効率を
向上させるためには、主記憶装置をアクセスする
回数は可能な限り少なくすることが望まれる。
本発明は、上記の考察の基づくものであつて、
入れ子構造をなし且つ内部ループに領域不変ベク
トルをロード/ストアするベクトル命令を有する
プログラムを効率のよいプログラムに変換する領
域不変ベクトルの割付方式を提供することを目的
としている。
入れ子構造をなし且つ内部ループに領域不変ベク
トルをロード/ストアするベクトル命令を有する
プログラムを効率のよいプログラムに変換する領
域不変ベクトルの割付方式を提供することを目的
としている。
そしてそのため、本発明の領域不変ベクトルの
割付方式は入れ子構造のループを構成し、且つ内
側ループに領域不変ベクトルをベクトル・レジス
タにロードするためのベクトル・ロード命令、ベ
クトル・レジスタ内の領域不変ベクトルを演算す
るためのベクトル命令およびベクトル・レジスタ
内の領域不変ベクトルをストアするためのベクト
ル・ストア命令を有するプログラムを最適化する
領域不変ベクトルの割付方式において、演算対象
となる領域不変ベクトルの全要素数をベクトル・
レジスタのベクトル長で割つたときの商をm、剰
余をxとするとき、外側のループのバツク・ター
ゲツトに、ベクトル長レジスタに値xを設定する
ための命令、領域不変ベクトルをループ中で恒久
割付可能なレジスタgvtにロードするための命令
を配置し、内側ループに、ベクトル長レジスタに
値xを設定するための命令、上記の恒久割付可能
なレジスタgvt同志の演算を行わせるための命令、
回転数をmとする命令、ベクトル長レジスタにベ
クトル・レジスタのベクトル長を設定するための
命令、領域不変ベクトルをベクトル・レジスタに
ロードするためのベクトル・ロード命令、ベクト
ル・レジスタ内の領域不変ベクトル演算するベク
トル演算命令およびベクトル・レジスタ内の領域
不変ベクトルをストアするためのベクトル・スト
ア命令を配置し、外側ループのフオワード・ター
ゲツトに、ベクトル長レジスタに値xを設定する
命令、恒久割付可能なレジスタgvt内の領域不変
ベクトルをストアするためのストア命令を配置す
ることを特徴とするものである。
割付方式は入れ子構造のループを構成し、且つ内
側ループに領域不変ベクトルをベクトル・レジス
タにロードするためのベクトル・ロード命令、ベ
クトル・レジスタ内の領域不変ベクトルを演算す
るためのベクトル命令およびベクトル・レジスタ
内の領域不変ベクトルをストアするためのベクト
ル・ストア命令を有するプログラムを最適化する
領域不変ベクトルの割付方式において、演算対象
となる領域不変ベクトルの全要素数をベクトル・
レジスタのベクトル長で割つたときの商をm、剰
余をxとするとき、外側のループのバツク・ター
ゲツトに、ベクトル長レジスタに値xを設定する
ための命令、領域不変ベクトルをループ中で恒久
割付可能なレジスタgvtにロードするための命令
を配置し、内側ループに、ベクトル長レジスタに
値xを設定するための命令、上記の恒久割付可能
なレジスタgvt同志の演算を行わせるための命令、
回転数をmとする命令、ベクトル長レジスタにベ
クトル・レジスタのベクトル長を設定するための
命令、領域不変ベクトルをベクトル・レジスタに
ロードするためのベクトル・ロード命令、ベクト
ル・レジスタ内の領域不変ベクトル演算するベク
トル演算命令およびベクトル・レジスタ内の領域
不変ベクトルをストアするためのベクトル・スト
ア命令を配置し、外側ループのフオワード・ター
ゲツトに、ベクトル長レジスタに値xを設定する
命令、恒久割付可能なレジスタgvt内の領域不変
ベクトルをストアするためのストア命令を配置す
ることを特徴とするものである。
以下、本発明の図面を参照しつつ説明する。第
6図は本発明の概要を示す図である。本発明にお
いては、先ず、領域不変ベクトルのgvt化が行わ
れる。gvtとは、GLOBAL VECTOR
TEMPORARYの略であり、gvtレジスタとはル
ープ中で恒久割付可能なベクトル・レジスタ(以
下、単にgvtという)を意味している。領域不変
ベクトルのgvt化を行つた後、VL制御範囲をmod
部とLoop部に分割する。modはModulusの略で
あり、剰余のことである。VL制御範囲をmod部
とloop部に分割した後、mod部の領域不変ベクト
ルの移動を行う。なお、本発明は第3図の中間コ
ード最適化部に関するものである。
6図は本発明の概要を示す図である。本発明にお
いては、先ず、領域不変ベクトルのgvt化が行わ
れる。gvtとは、GLOBAL VECTOR
TEMPORARYの略であり、gvtレジスタとはル
ープ中で恒久割付可能なベクトル・レジスタ(以
下、単にgvtという)を意味している。領域不変
ベクトルのgvt化を行つた後、VL制御範囲をmod
部とLoop部に分割する。modはModulusの略で
あり、剰余のことである。VL制御範囲をmod部
とloop部に分割した後、mod部の領域不変ベクト
ルの移動を行う。なお、本発明は第3図の中間コ
ード最適化部に関するものである。
領域不変ベクトルgvt化は、下記のような手順
で行われる。
で行われる。
(1) SCR(Strongly Connected Region)内で参
照のみの領域不変ベクトルをgvt化の候補とし
て選出する(ロード命令に対応)。なお、SCR
とはDOルーポに対応するものと考えてよい。
照のみの領域不変ベクトルをgvt化の候補とし
て選出する(ロード命令に対応)。なお、SCR
とはDOルーポに対応するものと考えてよい。
(2) SCR内で定義有りの領域不変ベクトルをgvt
化の候補として選出する(ストア命令に対応)。
化の候補として選出する(ストア命令に対応)。
(3) 使用頻度の多い順に、選出されたgvt候補の
順序付を行う。
順序付を行う。
(4) gvt候補からgvtを決定する。
(5) gvtの割付けを行うと共に、領域不変ベクト
ルに対応するvtの引用をgvtで置き換える。
ルに対応するvtの引用をgvtで置き換える。
第7図はベクトル加算命令を含む入れ子構造の
DOループと、これに対応する中間テキストを示
すものである。配列A、B、CはJに対して不変
である。B(*)、C(*)、A(*)の*は1ない
しnの全部を意味する。第7図において、B
(*)、C(*)、A(*)が領域不変ベクトルであ
る。
DOループと、これに対応する中間テキストを示
すものである。配列A、B、CはJに対して不変
である。B(*)、C(*)、A(*)の*は1ない
しnの全部を意味する。第7図において、B
(*)、C(*)、A(*)が領域不変ベクトルであ
る。
第8図はgvtの割付けと、領域不変ベクトルに
対するvtのgvtへの置き換えを説明するものであ
る。vt1がgvt1に、vt2がgvt2に、vt3がgvt
3に置き換えられる。
対するvtのgvtへの置き換えを説明するものであ
る。vt1がgvt1に、vt2がgvt2に、vt3がgvt
3に置き換えられる。
次にVL制御範囲をmod部とLoop部に分割す
る。いま、配列A、B、Cの要素数を1500、ベク
トル・レジスタの長さを512とする。剰余xは x=mod(1500、512)=476 商Sは S=(1500/512)=2 となる。なお、回転数mはSと等しく、2とな
る。配列A、B、Cの要素数を1500、ベクトル・
レジスタの長さを512とした場合、第8図のgvt化
された中間テキストは、第9図に示すようにmod
部とloop部に分割される。
る。いま、配列A、B、Cの要素数を1500、ベク
トル・レジスタの長さを512とする。剰余xは x=mod(1500、512)=476 商Sは S=(1500/512)=2 となる。なお、回転数mはSと等しく、2とな
る。配列A、B、Cの要素数を1500、ベクトル・
レジスタの長さを512とした場合、第8図のgvt化
された中間テキストは、第9図に示すようにmod
部とloop部に分割される。
最後に、mod部の領域不変ベクトルの移動につ
いて説明する。第10図に示すように、mod部の
領域不変ベクトルのロード命令をSCRのバツ
ク・ターゲツトに移動し、次にmod部の領域不変
ベクトルのストア命令をSCRのフオワード・タ
ーゲツトに移動し、最後にloop部のgvtをvtで置
き換える。第9図の中間テキストに対して上記の
処理を施すと、第11図のような中間テキストが
得られる。
いて説明する。第10図に示すように、mod部の
領域不変ベクトルのロード命令をSCRのバツ
ク・ターゲツトに移動し、次にmod部の領域不変
ベクトルのストア命令をSCRのフオワード・タ
ーゲツトに移動し、最後にloop部のgvtをvtで置
き換える。第9図の中間テキストに対して上記の
処理を施すと、第11図のような中間テキストが
得られる。
第12図はバツク・ターゲツト及びフオワー
ド・ターゲツトを説明する図である。同図におい
て、→は制御(プログラムの流れ)を意味する。
SCR(J)は1つ以上のブロツク(命令列の集合)
で構成されているが、バツク・ターゲツトとは、
そのSCR(J)に入る前に必ず実行される直前のブ
ロツクを示す。フオワード・ターゲツトとは、
SCR(J)を実行後、最初に実行されるブロツクを
示す。このブロツクは、SCR(J)からの流れのみ
で、他ブロツクからの流れはない。
ド・ターゲツトを説明する図である。同図におい
て、→は制御(プログラムの流れ)を意味する。
SCR(J)は1つ以上のブロツク(命令列の集合)
で構成されているが、バツク・ターゲツトとは、
そのSCR(J)に入る前に必ず実行される直前のブ
ロツクを示す。フオワード・ターゲツトとは、
SCR(J)を実行後、最初に実行されるブロツクを
示す。このブロツクは、SCR(J)からの流れのみ
で、他ブロツクからの流れはない。
以上の説明から明らかなように、本発明によれ
ば、ロード/ストア命令の実行回数を従来方式に
比し減すことが出来る。本発明によつて主記憶ア
クセス回数を減らすことができる理由を、第9図
を例にして説明する。mod部に着目した場合、
mod部内のB(*)のロード、C(*)のロード及
びA(*)のストアが第11図ではSCR(J)の外側
に移動されている。これは、SCR(J)の中を実行
する場合にB(*)のロード、C(*)のロード及
びA(*)のストアが減つたことを意味する。例
えば、SCR(J)の回転数を10とした場合、mod部
のB(*)のロード、C(*)のロード及びA(*)
のストア回数は、 本発明を採用した場合 :0回 本発明を採用しない場合 :10回 となる。すなわち、mod部における命令は B(*)+C(*) だけになり、主記憶アクセス(B(*)のロード、
C(*)のロード及A(*)のストア)回数は削減
されたことになる。SCR(J)の回転数が1回の場
合は、A(*)に対するロードが余分に出るが、
通常のプログラムでは余り存在しない。mod部内
の主記憶アクセス回数をm、SCR(J)の回転数を
nとすると、 m×n−ストア回数+m) だけ主記憶アクセス回数が削減されたことにな
る。
ば、ロード/ストア命令の実行回数を従来方式に
比し減すことが出来る。本発明によつて主記憶ア
クセス回数を減らすことができる理由を、第9図
を例にして説明する。mod部に着目した場合、
mod部内のB(*)のロード、C(*)のロード及
びA(*)のストアが第11図ではSCR(J)の外側
に移動されている。これは、SCR(J)の中を実行
する場合にB(*)のロード、C(*)のロード及
びA(*)のストアが減つたことを意味する。例
えば、SCR(J)の回転数を10とした場合、mod部
のB(*)のロード、C(*)のロード及びA(*)
のストア回数は、 本発明を採用した場合 :0回 本発明を採用しない場合 :10回 となる。すなわち、mod部における命令は B(*)+C(*) だけになり、主記憶アクセス(B(*)のロード、
C(*)のロード及A(*)のストア)回数は削減
されたことになる。SCR(J)の回転数が1回の場
合は、A(*)に対するロードが余分に出るが、
通常のプログラムでは余り存在しない。mod部内
の主記憶アクセス回数をm、SCR(J)の回転数を
nとすると、 m×n−ストア回数+m) だけ主記憶アクセス回数が削減されたことにな
る。
第1図はベクトル命令を実行する計算機システ
ムの1例を示す図、第2図はベクトル・プロセツ
サのレジスタ・アーキテクチヤを示す図、第3図
はVP用FORTRANコンパイラの概要を示す図、
第4図は入れ子構造のループをもつ中間テキスト
の1例を示す図、第5図は配列Bと配列Cと加算
して配列Aを作る処理を説明する図、第6図は本
発明の概要を示す図、第7図はベクトル加算命令
を含む入れ子構造のDOループとこれに対応する
中間テキストを示す図、第8図はgvtの割付とvt
のgvtへの置き換えを説明する図、第9図はmod
部とloopの分割を説明する図、第10図はmod部
の領域不変ベクトル移動するための手順を示す
図、第11図はmod部の領域不変ベクトルの移動
が行われた後の中間テキストの1例を示す図、第
12図はバツク・ターゲツト及びフオワード・タ
ーゲツトを説明する図である。 MSU……主記憶ユニツト、MCU……記憶制御
ユニツト、VP……ベクトル・プロセツサ、DA
……DASD、FROないしFRng……汎用レジス
タ、VL……ベクトル長レジスタ、VROないし
VRnv……ベクトル・レジスタ、MROないし
MRnv……マスク・レジスタ。
ムの1例を示す図、第2図はベクトル・プロセツ
サのレジスタ・アーキテクチヤを示す図、第3図
はVP用FORTRANコンパイラの概要を示す図、
第4図は入れ子構造のループをもつ中間テキスト
の1例を示す図、第5図は配列Bと配列Cと加算
して配列Aを作る処理を説明する図、第6図は本
発明の概要を示す図、第7図はベクトル加算命令
を含む入れ子構造のDOループとこれに対応する
中間テキストを示す図、第8図はgvtの割付とvt
のgvtへの置き換えを説明する図、第9図はmod
部とloopの分割を説明する図、第10図はmod部
の領域不変ベクトル移動するための手順を示す
図、第11図はmod部の領域不変ベクトルの移動
が行われた後の中間テキストの1例を示す図、第
12図はバツク・ターゲツト及びフオワード・タ
ーゲツトを説明する図である。 MSU……主記憶ユニツト、MCU……記憶制御
ユニツト、VP……ベクトル・プロセツサ、DA
……DASD、FROないしFRng……汎用レジス
タ、VL……ベクトル長レジスタ、VROないし
VRnv……ベクトル・レジスタ、MROないし
MRnv……マスク・レジスタ。
Claims (1)
- 1 入れ子構造のループを構成し、且つ内側ルー
プに領域不変ベクトルをベクトル・レジスタにロ
ードするためのベクトル・ロード命令、ベクト
ル・レジスタ内の領域不変ベクトルを演算するた
めのベクトル命令およびベクトル・レジスタ内の
領域不変ベクトルをストアするためのベクトル・
ストア命令を有するプログラムを最適化する領域
不変ベクトルの割付方式において、演算対象とな
る領域不変ベクトルの全要素数をベクトル・レジ
スタのベクトル長で割つたときの商をm、剰余を
xとするとき、外側のループのバツク・ターゲツ
トに、ベクトル長レジスタに値xを設定するため
の命令、領域不変ベクトルをループ中で恒久割付
可能なレジスタgvtにロードするための命令を配
置し、内側ループに、ベクトル長レジスタに値x
を設定するための命令、上記の恒久割付可能なレ
ジスタgvt同士の演算を行わせるための命令、回
転数をmとする命令、ベクトル長レジスタにベク
トル・レジスタのベクトル長を設定するための命
令、領域不変ベクトルをベクトル・レジスタにロ
ードするためのベクトル・ロード命令、ベクト
ル・レジスタ内の領域不変ベクトル演算するベク
トル演算命令およびベクトル・レジスタ内の領域
不変ベクトルをストアするためのベクトル・スト
ア命令を配置し、外側ループのフオワード・ター
ゲツトに、ベクトル長レジスタに値xを設定する
命令、恒久割付可能なレジスタgvt内の領域不変
ベクトルをストアするためのストア命令を配置す
ることを特徴とする領域不変ベクトルの割付方
式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58055489A JPS59180669A (ja) | 1983-03-31 | 1983-03-31 | 領域不変ベクトルの割付方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58055489A JPS59180669A (ja) | 1983-03-31 | 1983-03-31 | 領域不変ベクトルの割付方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS59180669A JPS59180669A (ja) | 1984-10-13 |
| JPH0233188B2 true JPH0233188B2 (ja) | 1990-07-25 |
Family
ID=13000038
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP58055489A Granted JPS59180669A (ja) | 1983-03-31 | 1983-03-31 | 領域不変ベクトルの割付方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS59180669A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0632278U (ja) * | 1992-10-06 | 1994-04-26 | ヤンマー農機株式会社 | 移動作業機の車高調節装置 |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5143542B2 (ja) * | 2007-12-19 | 2013-02-13 | Kddi株式会社 | プロセッサデバイスに基づくソースコード変換プログラム及び装置 |
-
1983
- 1983-03-31 JP JP58055489A patent/JPS59180669A/ja active Granted
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0632278U (ja) * | 1992-10-06 | 1994-04-26 | ヤンマー農機株式会社 | 移動作業機の車高調節装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPS59180669A (ja) | 1984-10-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5958048A (en) | Architectural support for software pipelining of nested loops | |
| US6367071B1 (en) | Compiler optimization techniques for exploiting a zero overhead loop mechanism | |
| US7926046B2 (en) | Compiler method for extracting and accelerator template program | |
| JP3983857B2 (ja) | ベクトルレジスタの複数バンクを用いた単一命令複数データ処理 | |
| US6675374B2 (en) | Insertion of prefetch instructions into computer program code | |
| US5303357A (en) | Loop optimization system | |
| JP3120152B2 (ja) | コンピューターシステム | |
| US6826677B2 (en) | Renaming registers to values produced by instructions according to assigned produce sequence number | |
| US7631305B2 (en) | Methods and products for processing loop nests | |
| US5983336A (en) | Method and apparatus for packing and unpacking wide instruction word using pointers and masks to shift word syllables to designated execution units groups | |
| US6202143B1 (en) | System for fetching unit instructions and multi instructions from memories of different bit widths and converting unit instructions to multi instructions by adding NOP instructions | |
| US4677547A (en) | Vector processor | |
| CN110073332B (zh) | 数据处理装置和方法 | |
| US6738893B1 (en) | Method and apparatus for scheduling to reduce space and increase speed of microprocessor operations | |
| JPS63132338A (ja) | コード生成方法 | |
| JPH10293692A (ja) | 多重ループ向けデータプリフェッチ方法、プロセッサおよびプログラム生成方法 | |
| US6687808B2 (en) | Data processor using indirect register addressing | |
| JPH11194948A (ja) | コンパイラ最適化アルゴリズム | |
| JPH0477347B2 (ja) | ||
| US5390306A (en) | Pipeline processing system and microprocessor using the system | |
| Bi et al. | Efficiently running SpMV on multi-core DSPs for block sparse matrix | |
| CN100395709C (zh) | 一种用于指令转换的数据处理方法及其系统 | |
| JPH0233188B2 (ja) | ||
| KR19980018071A (ko) | 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리 | |
| JPH10187460A (ja) | バイナリ・プログラム変換装置および方法 |