JP2839499B2 - ベクトル処理装置 - Google Patents
ベクトル処理装置Info
- Publication number
- JP2839499B2 JP2839499B2 JP2750588A JP2750588A JP2839499B2 JP 2839499 B2 JP2839499 B2 JP 2839499B2 JP 2750588 A JP2750588 A JP 2750588A JP 2750588 A JP2750588 A JP 2750588A JP 2839499 B2 JP2839499 B2 JP 2839499B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- instruction
- processing
- data
- partial
- 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
Landscapes
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明はベクトル・データの処理に係り、特に複数の
ベクトルが連なつた形式のデータに好適なベクトル・レ
ジスタへのロードとデータの統合を行なうベクトル処理
装置に関する。
ベクトルが連なつた形式のデータに好適なベクトル・レ
ジスタへのロードとデータの統合を行なうベクトル処理
装置に関する。
複数のベクトルが連なつた形式のデータについては、
特開昭62−104244号において論じられている。その特許
内に記載されている図を、第9図に示す。第9図は
(a)に複数のベクトルが連なつた形式のデータ900
(以下このデータをマルチ・ベクトルと呼ぶ)を、
(b)にこのマルチ・ベクトル900を一つのベクトルに
統合(以下この処理をマージ処理と呼ぶ)したベクトル
(以下このマージされたマルチ・ベクトル910をマージ
・ベクトルと呼ぶ)を表わす。
特開昭62−104244号において論じられている。その特許
内に記載されている図を、第9図に示す。第9図は
(a)に複数のベクトルが連なつた形式のデータ900
(以下このデータをマルチ・ベクトルと呼ぶ)を、
(b)にこのマルチ・ベクトル900を一つのベクトルに
統合(以下この処理をマージ処理と呼ぶ)したベクトル
(以下このマージされたマルチ・ベクトル910をマージ
・ベクトルと呼ぶ)を表わす。
前記特許では、マルチ・ベクトル900をマージ・ベク
トル910にマージするに当り、特開昭61−52512号に記載
されたベクトル処理装置を用いている。以下に、この第
9図と第5図を用いて、従来技術を簡単に説明する。
トル910にマージするに当り、特開昭61−52512号に記載
されたベクトル処理装置を用いている。以下に、この第
9図と第5図を用いて、従来技術を簡単に説明する。
第9図の(a)に示すように、マルチ・ベクトル900
として連ねられた個々のベクトルを部分ベクトル901〜9
03と呼ぶ。部分ベクトル901は図のように、次の部分ベ
クトル902へのポインタ(次の部分ベクトルの先頭アド
レス)を格納した要素と、部分ベクトルの長さ(以下部
分ベクトル長と呼ぶ)を格納した要素を持つ。これらの
次の部分ベクトルへのポインタと、部分ベクトル長を格
納した要素をヘツダ部904と呼び、部分ベクトルの残り
の部分を実データ部905と呼ぶ。
として連ねられた個々のベクトルを部分ベクトル901〜9
03と呼ぶ。部分ベクトル901は図のように、次の部分ベ
クトル902へのポインタ(次の部分ベクトルの先頭アド
レス)を格納した要素と、部分ベクトルの長さ(以下部
分ベクトル長と呼ぶ)を格納した要素を持つ。これらの
次の部分ベクトルへのポインタと、部分ベクトル長を格
納した要素をヘツダ部904と呼び、部分ベクトルの残り
の部分を実データ部905と呼ぶ。
第9図の(b)に示すように、マージ・ベクトル910
は、マルチ・ベクトル900内の全部分ベクトル901〜903
の実データ部の要素のみを部分ベクトルの連なつた順に
一列に並べ、先頭の要素に実データ部の全要素数(全部
分ベクトルのベクトル長の累積)を格納したベクトルで
ある。この実データ部の全要素数をマージ・ベクトル長
と呼ぶ。
は、マルチ・ベクトル900内の全部分ベクトル901〜903
の実データ部の要素のみを部分ベクトルの連なつた順に
一列に並べ、先頭の要素に実データ部の全要素数(全部
分ベクトルのベクトル長の累積)を格納したベクトルで
ある。この実データ部の全要素数をマージ・ベクトル長
と呼ぶ。
第5図は、第9図(a)に示したマルチ・ベクトル90
0をマージして第9図(b)に示したマージ・ベクトル9
10を作製し、このマージ・ベクトル910とスカラ・デー
タとの比較を行ないマスク・ベクトルを作成し、そのマ
スク・ベクトルに基づきマージ・ベクトル910を圧縮す
る処理の概略の手続きを、PAD(Problem Analysis Diag
ram)で表現したものである。この第5図に示した処理
方式が、前記従来装置(特開昭61−52512号)を用いた
前記従来方式(特開昭62−104244号)である。
0をマージして第9図(b)に示したマージ・ベクトル9
10を作製し、このマージ・ベクトル910とスカラ・デー
タとの比較を行ないマスク・ベクトルを作成し、そのマ
スク・ベクトルに基づきマージ・ベクトル910を圧縮す
る処理の概略の手続きを、PAD(Problem Analysis Diag
ram)で表現したものである。この第5図に示した処理
方式が、前記従来装置(特開昭61−52512号)を用いた
前記従来方式(特開昭62−104244号)である。
この一連の処理の中で、マージ処理に対応する部分が
処理501〜503である。処理502と503のループはベクトル
処理で、主記憶装置上に存在する部分ベクトル901〜903
内の一つの部分ベクトルの実データ部の要素のみを、ま
ず主記憶装置からベクトル・レジスタへロードし、次に
主記憶装置上の別の領域へベクトル・レジスタからスト
アする。この時、ストアする先の主記憶装置上の領域
は、全部分ベクトルの実データに関して連続している。
このように、ベクトル・レジスタを用いたベクトル処理
により、主記憶装置上に離れて点在する部分ベクトル
を、その実データ部を主記憶装置上で複写することで、
マルチ・ベクトル900を一つのマージ・ベクトル910へマ
ージする。
処理501〜503である。処理502と503のループはベクトル
処理で、主記憶装置上に存在する部分ベクトル901〜903
内の一つの部分ベクトルの実データ部の要素のみを、ま
ず主記憶装置からベクトル・レジスタへロードし、次に
主記憶装置上の別の領域へベクトル・レジスタからスト
アする。この時、ストアする先の主記憶装置上の領域
は、全部分ベクトルの実データに関して連続している。
このように、ベクトル・レジスタを用いたベクトル処理
により、主記憶装置上に離れて点在する部分ベクトル
を、その実データ部を主記憶装置上で複写することで、
マルチ・ベクトル900を一つのマージ・ベクトル910へマ
ージする。
このマージ処理は第5図のPADより明らかなように、
各部分ベクトル901〜903内の実データ部の要素を処理
(複写)する内側のループ502と、マルチ・ベクトル900
内の各部分ベクトル901〜903を処理する外側のループ50
1から成つている。従つて、内側のループ502を一つのベ
クトル命令で処理し、一つの部分ベクトルの処理が終わ
る毎に次の部分ベクトルのベクトル長をスカラ命令で新
たにセツトし直すことにより、このマージ処理のベクト
ル命令への適用を図つている。ベクトル命令で処理する
ベクトル長(以下処理ベクトル長と呼ぶ)などを一度ス
カラ命令でセツトアツプした後に、一続きで行なうベク
トル命令列の実行を1ベクトル処理と定義する。する
と、従来技術では部分ベクトル毎にこのベクトル処理を
分割してマージ処理を行なう。
各部分ベクトル901〜903内の実データ部の要素を処理
(複写)する内側のループ502と、マルチ・ベクトル900
内の各部分ベクトル901〜903を処理する外側のループ50
1から成つている。従つて、内側のループ502を一つのベ
クトル命令で処理し、一つの部分ベクトルの処理が終わ
る毎に次の部分ベクトルのベクトル長をスカラ命令で新
たにセツトし直すことにより、このマージ処理のベクト
ル命令への適用を図つている。ベクトル命令で処理する
ベクトル長(以下処理ベクトル長と呼ぶ)などを一度ス
カラ命令でセツトアツプした後に、一続きで行なうベク
トル命令列の実行を1ベクトル処理と定義する。する
と、従来技術では部分ベクトル毎にこのベクトル処理を
分割してマージ処理を行なう。
このマージ処理501〜503を終えてから、スカラ命令で
マージ・ベクトル910のベクトル長を求めセツトアツプ
し、次の比較506や圧縮507などの他のベクトル処理504
〜507を行なう。
マージ・ベクトル910のベクトル長を求めセツトアツプ
し、次の比較506や圧縮507などの他のベクトル処理504
〜507を行なう。
上記従来技術では、従来装置(従来のベクトル計算
機)における以下に述べる3つの問題点による制約のた
めに部分ベクトル毎にマージのためのベクトル処理を分
割するなどの必要があつた。このために、マージ処理に
ベクトル命令を適用してベクトル要素のパイプライン実
行により処理の高速化を図つても、処理ベクトル長が短
いなどの理由によりベクトル処理に必要なオーバヘツド
がパイプライン実行による処理の高速化の効果を打ち消
してしまい、結局マージ処理全体としては大きな処理の
高速化が期待できないという問題があつた。
機)における以下に述べる3つの問題点による制約のた
めに部分ベクトル毎にマージのためのベクトル処理を分
割するなどの必要があつた。このために、マージ処理に
ベクトル命令を適用してベクトル要素のパイプライン実
行により処理の高速化を図つても、処理ベクトル長が短
いなどの理由によりベクトル処理に必要なオーバヘツド
がパイプライン実行による処理の高速化の効果を打ち消
してしまい、結局マージ処理全体としては大きな処理の
高速化が期待できないという問題があつた。
この従来装置の3つの問題点とは、 (1)一つのベクトル処理は、一つの処理ベクトル長で
しか実行できない。
しか実行できない。
(2)ベクトル・レジスタへのデータの格納は、レジス
タの途中からは始められない。
タの途中からは始められない。
(3)処理ベクトル長は、ベクトル命令実行前に確定し
ている必要がある。
ている必要がある。
である。以下に、これらの問題点を先の二つの図を用い
て、具体的に説明する。
て、具体的に説明する。
まず、第1の問題点に関して説明する。第9図に示す
ように、マルチ・ベクトル900を構成する部分ベクトル9
01〜903の各ベクトル長は、部分ベクトル毎に可変であ
る。従つて、第5図のマージ処理の内側のループ502の
ループ回数は、毎回一定ではない。一方、従来技術(特
開昭61−52512号)に記載された従来装置(従来のベク
トル計算機である日立製作所のS−810)のベクトル命
令は、処理ベクトル長を命令開始時にセツトアツプして
その長さの回数だけループすることによりベクトル処理
を行なうものである。このため、先に記したように、マ
ルチ・ベクトル900のマージ処理501〜503は、部分ベク
トル毎にベクトル処理を分割して行なつていた。しか
し、内側のループ502は、ループ回数すなわち処理ベク
トル長が短い。ベクトル処理の実行は一般に起動と終了
に時間がかかるため、ベクトル長が短かい場合にはベク
トル処理は十分な性能を発揮できない。従つて、処理速
度の向上のためにマージ処理501〜503にベクトル命令を
使用しても、内側ループ502のみにベクトル命令を適用
しただけでは大きな効果は期待できない。
ように、マルチ・ベクトル900を構成する部分ベクトル9
01〜903の各ベクトル長は、部分ベクトル毎に可変であ
る。従つて、第5図のマージ処理の内側のループ502の
ループ回数は、毎回一定ではない。一方、従来技術(特
開昭61−52512号)に記載された従来装置(従来のベク
トル計算機である日立製作所のS−810)のベクトル命
令は、処理ベクトル長を命令開始時にセツトアツプして
その長さの回数だけループすることによりベクトル処理
を行なうものである。このため、先に記したように、マ
ルチ・ベクトル900のマージ処理501〜503は、部分ベク
トル毎にベクトル処理を分割して行なつていた。しか
し、内側のループ502は、ループ回数すなわち処理ベク
トル長が短い。ベクトル処理の実行は一般に起動と終了
に時間がかかるため、ベクトル長が短かい場合にはベク
トル処理は十分な性能を発揮できない。従つて、処理速
度の向上のためにマージ処理501〜503にベクトル命令を
使用しても、内側ループ502のみにベクトル命令を適用
しただけでは大きな効果は期待できない。
次に、第2の問題点に関して説明する。従来のベクト
ル計算機のベクトル・レジスタは、読み出しの場合も格
納の場合もレジスタの先頭の要素から始めねばならず、
途中の要素から行なうことはマスク・レジスタを使用し
ない限り不可能であつた。従つて、マルチ・ベクトル90
0のマージ処理501〜503も、部分ベクトル901〜903毎の
ベクトル処理において、一つのベクトル・レジスタに累
積的に要素を格納することができないため、一旦主記憶
装置上にストアしなければならなかつた。そのために、
各部分ベクトルのマージ処理毎に、ストア命令が増える
上に、マージ・ベクトル910に他のベクトル処理を施す
ためには、マージ・ベクトル910を主記憶装置からベク
トル・レジスタへ一回ロードする必要が生じた。
ル計算機のベクトル・レジスタは、読み出しの場合も格
納の場合もレジスタの先頭の要素から始めねばならず、
途中の要素から行なうことはマスク・レジスタを使用し
ない限り不可能であつた。従つて、マルチ・ベクトル90
0のマージ処理501〜503も、部分ベクトル901〜903毎の
ベクトル処理において、一つのベクトル・レジスタに累
積的に要素を格納することができないため、一旦主記憶
装置上にストアしなければならなかつた。そのために、
各部分ベクトルのマージ処理毎に、ストア命令が増える
上に、マージ・ベクトル910に他のベクトル処理を施す
ためには、マージ・ベクトル910を主記憶装置からベク
トル・レジスタへ一回ロードする必要が生じた。
最後に、第3の問題点に関して説明する。従来のベク
トル計算機はベクトル命令開始時に処理するベクトル長
をセツトアツプするために、処理ベクトル長はベクトル
命令実行前に決定している必要があつた。しかし、マー
ジ・ベクトル910のベクトル長は、全部分ベクトルを処
理し終わつてからでなければ判明しない。従つて、第5
図に示すように、マルチ・ベクトル900のマージ処理501
〜503と、マージ・ベクトル910への他のベクトル命令50
4〜507の実行を分けて、別のベクトル処理としていた。
このため、ここでもベクトル処理が中断することにより
ベクトル処理の終了と起動に時間を要してしまい、実行
性能が低下してしまう。
トル計算機はベクトル命令開始時に処理するベクトル長
をセツトアツプするために、処理ベクトル長はベクトル
命令実行前に決定している必要があつた。しかし、マー
ジ・ベクトル910のベクトル長は、全部分ベクトルを処
理し終わつてからでなければ判明しない。従つて、第5
図に示すように、マルチ・ベクトル900のマージ処理501
〜503と、マージ・ベクトル910への他のベクトル命令50
4〜507の実行を分けて、別のベクトル処理としていた。
このため、ここでもベクトル処理が中断することにより
ベクトル処理の終了と起動に時間を要してしまい、実行
性能が低下してしまう。
本発明の目的は、マルチ・ベクトル900のマージ処理5
01〜503において以上のような問題点を解決し、1ベク
トル処理でマルチ・ベクトル900のマージ処理501〜503
を行ない、直接ベクトル・レジスタ上にマージ・ベクト
ル910を作成し、その時に求まつたベクトル長を用いて
一つのベクトル処理内で次に続くベクトル命令504〜507
を行なうことが可能なベクトル処理装置を提供し、マル
チ・ベクトル900のマージ処理を高速化することであ
る。
01〜503において以上のような問題点を解決し、1ベク
トル処理でマルチ・ベクトル900のマージ処理501〜503
を行ない、直接ベクトル・レジスタ上にマージ・ベクト
ル910を作成し、その時に求まつたベクトル長を用いて
一つのベクトル処理内で次に続くベクトル命令504〜507
を行なうことが可能なベクトル処理装置を提供し、マル
チ・ベクトル900のマージ処理を高速化することであ
る。
上記目的は、マルチ・ベクトル900内の各部分ベクト
ル901〜903の先頭要素アドレスを元に先の要素を先読み
する先読みアドレス発生回路と、アドレス発生回路の読
み出し要求により読み出されたマルチ・ベクトル900を
各部分ベクトル901〜903毎に部分ベクトル長が格納され
ている要素と次の部分ベクトルのアドレスが格納されて
いる要素と実データ部の要素に分類するデータ分配回路
と、データ分配回路より分配された部分ベクトル長を元
に先読みアドレス発生回路とデータ分配回路の動作をそ
れぞれ先読みアドレスの発生回数とデータ分配のタイミ
ングを指定することにより制御する先読み制御回路と、
ベクトル命令の実行前にベクトル長が確定していなくて
もデータ分配回路により分配された実データ部の要素を
格納できるベクトル・レジスタと、各部分ベクトル901
〜903の部分ベクトル長を合計した累積ベクトル長を命
令実行中でも設定できるベクトル長レジスタとを設ける
ことにより、達成される。
ル901〜903の先頭要素アドレスを元に先の要素を先読み
する先読みアドレス発生回路と、アドレス発生回路の読
み出し要求により読み出されたマルチ・ベクトル900を
各部分ベクトル901〜903毎に部分ベクトル長が格納され
ている要素と次の部分ベクトルのアドレスが格納されて
いる要素と実データ部の要素に分類するデータ分配回路
と、データ分配回路より分配された部分ベクトル長を元
に先読みアドレス発生回路とデータ分配回路の動作をそ
れぞれ先読みアドレスの発生回数とデータ分配のタイミ
ングを指定することにより制御する先読み制御回路と、
ベクトル命令の実行前にベクトル長が確定していなくて
もデータ分配回路により分配された実データ部の要素を
格納できるベクトル・レジスタと、各部分ベクトル901
〜903の部分ベクトル長を合計した累積ベクトル長を命
令実行中でも設定できるベクトル長レジスタとを設ける
ことにより、達成される。
本発明の作用を、先に使用した第9図を用いて以下に
簡単に説明する。まず、ベクトル命令のオペランドによ
りマルチ・ベクトル900のアドレス(最初に連なつてい
る部分ベクトル901の先頭要素のアドレス)が求められ
る。この時点では、最初の部分ベクトル901のベクトル
長は未だ求まらない。しかし、ベクトル・データは次の
要素が主記憶装置上に規則正しく連続して並んでいるた
め、1要素の長さ分ずつアドレスを増加させてフエツチ
すれば、ベクトルのより先の要素を次々と得ることが可
能である。そこで、最初の部分ベクトル901の先頭アド
レスが求まつた時点で、ベクトル長が不明のまま先読み
アドレス発生回路から主記憶装置に対して、次々と先の
要素のフエツチ要求を出す。つまり、ベクトルの要素の
先読みを行なう。
簡単に説明する。まず、ベクトル命令のオペランドによ
りマルチ・ベクトル900のアドレス(最初に連なつてい
る部分ベクトル901の先頭要素のアドレス)が求められ
る。この時点では、最初の部分ベクトル901のベクトル
長は未だ求まらない。しかし、ベクトル・データは次の
要素が主記憶装置上に規則正しく連続して並んでいるた
め、1要素の長さ分ずつアドレスを増加させてフエツチ
すれば、ベクトルのより先の要素を次々と得ることが可
能である。そこで、最初の部分ベクトル901の先頭アド
レスが求まつた時点で、ベクトル長が不明のまま先読み
アドレス発生回路から主記憶装置に対して、次々と先の
要素のフエツチ要求を出す。つまり、ベクトルの要素の
先読みを行なう。
主記憶装置からフエツチされてきたデータである部分
ベクトル901の要素群が連続して到着すると、データ分
配回路でデータを分類し、次の部分ベクトル902のアド
レスは先読みアドレス発生回路へ、部分ベクトル長は先
読み制御回路へ、実データ部の要素はベクトル・レジス
タへ、それぞれ分配する。部分ベクトル長を受け取つた
先読み制御回路は、受け取つた部分ベクトル長と既に主
記憶装置送出したフエツチ要求数を比較することで、先
読みするアドレスの数やアドレス発生の基準となる部分
ベクトルのアドレスの切り替えのタイミングに関して先
読みアドレス発生回路を制御し、データを分類するタイ
ミングや次の部分ベクトルのデータが到着するタイミン
グに関してデータ分配回路を制御する。
ベクトル901の要素群が連続して到着すると、データ分
配回路でデータを分類し、次の部分ベクトル902のアド
レスは先読みアドレス発生回路へ、部分ベクトル長は先
読み制御回路へ、実データ部の要素はベクトル・レジス
タへ、それぞれ分配する。部分ベクトル長を受け取つた
先読み制御回路は、受け取つた部分ベクトル長と既に主
記憶装置送出したフエツチ要求数を比較することで、先
読みするアドレスの数やアドレス発生の基準となる部分
ベクトルのアドレスの切り替えのタイミングに関して先
読みアドレス発生回路を制御し、データを分類するタイ
ミングや次の部分ベクトルのデータが到着するタイミン
グに関してデータ分配回路を制御する。
この制御動作をより詳しく説明すると、フエツチ要求
の数がベクトル長の値よりも多い場合は、多い分は無効
データであるので、データ分配回路からベクトル・レジ
スタへ無効データを送らないようにする。逆にベクトル
長の値がフエツチ要求の数よりも多い場合は、ベクトル
長の値になるまで先読みアドレス発生回路から主記憶へ
フエツチ要求を出し続け、その後連続して、今度は先に
データ分配回路から先読みアドレス発生回路に送られた
次の部分ベクトル902のアドレスを用いて、次の部分ベ
クトル902の要素に対し次々にフエツチ要求を出す。こ
の場合も、最初の部分ベクトルのフエツチ要求を出した
場合と同様に、ベクトル長が不明のまま先読みを行な
う。
の数がベクトル長の値よりも多い場合は、多い分は無効
データであるので、データ分配回路からベクトル・レジ
スタへ無効データを送らないようにする。逆にベクトル
長の値がフエツチ要求の数よりも多い場合は、ベクトル
長の値になるまで先読みアドレス発生回路から主記憶へ
フエツチ要求を出し続け、その後連続して、今度は先に
データ分配回路から先読みアドレス発生回路に送られた
次の部分ベクトル902のアドレスを用いて、次の部分ベ
クトル902の要素に対し次々にフエツチ要求を出す。こ
の場合も、最初の部分ベクトルのフエツチ要求を出した
場合と同様に、ベクトル長が不明のまま先読みを行な
う。
ベクトル・レジスタは、先読み制御回路により制御さ
れてデータ分配回路から送られてくる各部分ベクトル90
1〜903の実データ部の要素を、送られてくる順に連続し
て格納する。以上の動作を全部分ベクトルに対して繰り
返す。このベクトル・レジスタへの格納は、レジスタの
先頭から始めて、各部分ベクトルの実データが部分ベク
トルが連なつている順に連続するように行なう。これに
より、ベクトル・レジスタには、各部分ベクトル内の実
データ部の要素のみがその連なつた順に無効データを含
まずに格納される。
れてデータ分配回路から送られてくる各部分ベクトル90
1〜903の実データ部の要素を、送られてくる順に連続し
て格納する。以上の動作を全部分ベクトルに対して繰り
返す。このベクトル・レジスタへの格納は、レジスタの
先頭から始めて、各部分ベクトルの実データが部分ベク
トルが連なつている順に連続するように行なう。これに
より、ベクトル・レジスタには、各部分ベクトル内の実
データ部の要素のみがその連なつた順に無効データを含
まずに格納される。
先読みアドレス発生回路にデータ分配回路から送られ
てきた要素が、次の部分ベクトルのアドレスではなく終
了を示すデータ(値)であつた場合は、その部分ベクト
ルがマルチ・ベクトル900に連なつた最後の部分ベクト
ル903である。この時、先読みアドレス発生回路から先
読み制御回路に、最後の部分ベクトル903のデータが到
着した信号を送る。先読み制御回路内には、データ分配
回路から送られてきた部分ベクトル長を累積するカウン
タがある。先読みアドレス発生回路から、最後の部分ベ
クトル903のデータが到着した信号が先読み制御回路に
届くと、先読み制御回路はカウンタ内の累積部分ベクト
ル長をベクトル長レジスタへ送る。この累積部分ベクト
ル長がマージ・ベクトル910のベクトル長(マージ・ベ
クトル長)である。この時点でこのベクトル処理の処理
ベクトル長が初めてベクトル長レジスタにセツトされた
ことになる。
てきた要素が、次の部分ベクトルのアドレスではなく終
了を示すデータ(値)であつた場合は、その部分ベクト
ルがマルチ・ベクトル900に連なつた最後の部分ベクト
ル903である。この時、先読みアドレス発生回路から先
読み制御回路に、最後の部分ベクトル903のデータが到
着した信号を送る。先読み制御回路内には、データ分配
回路から送られてきた部分ベクトル長を累積するカウン
タがある。先読みアドレス発生回路から、最後の部分ベ
クトル903のデータが到着した信号が先読み制御回路に
届くと、先読み制御回路はカウンタ内の累積部分ベクト
ル長をベクトル長レジスタへ送る。この累積部分ベクト
ル長がマージ・ベクトル910のベクトル長(マージ・ベ
クトル長)である。この時点でこのベクトル処理の処理
ベクトル長が初めてベクトル長レジスタにセツトされた
ことになる。
最後の部分ベクトル903の実データ部の最後の要素を
ベクトル・レジスタに格納し終わると、ベクトル・レジ
スタ内にマージ・ベクトル910が完成する。このマージ
処理の実行を指示するベクトル命令に続く他のベクトル
命令も、マージ処理ベクトル命令にチエインして実行さ
れる。このようにして、1ベクトル処理でマージ処理が
行なわれ、同一の1ベクトル処理内でマージ処理に続く
他のベクトル命令504〜507の処理も行なえる。
ベクトル・レジスタに格納し終わると、ベクトル・レジ
スタ内にマージ・ベクトル910が完成する。このマージ
処理の実行を指示するベクトル命令に続く他のベクトル
命令も、マージ処理ベクトル命令にチエインして実行さ
れる。このようにして、1ベクトル処理でマージ処理が
行なわれ、同一の1ベクトル処理内でマージ処理に続く
他のベクトル命令504〜507の処理も行なえる。
以上のようにこの方法によれば、マージのためのベク
トル処理を部分ベクトル毎に分ける必要がなく1ベクト
ル処理で実行できるため実行ベクトル長が長くなり、し
かも続くベクトル命令も同一の1ベクトル処理内で行な
えることも合わせて、ベクトル命令の起動のためのオー
バヘツドに比較しベクトル要素をパイプライン処理する
ことによる処理の高速化の分が大きくなる。これによつ
て、マルチ・ベクトル900のマージのための処理を高速
化することが可能となる。
トル処理を部分ベクトル毎に分ける必要がなく1ベクト
ル処理で実行できるため実行ベクトル長が長くなり、し
かも続くベクトル命令も同一の1ベクトル処理内で行な
えることも合わせて、ベクトル命令の起動のためのオー
バヘツドに比較しベクトル要素をパイプライン処理する
ことによる処理の高速化の分が大きくなる。これによつ
て、マルチ・ベクトル900のマージのための処理を高速
化することが可能となる。
以下、本発明の一実施例を図に従つて説明する。本発
明の一実施例であるベクトル処理装置の構成と動作の概
略を第1図を用いて説明するのに先立つて、第1図の中
で処理する様々なベクトル・データを、第3図,第4
図,第6図を用いて説明する。
明の一実施例であるベクトル処理装置の構成と動作の概
略を第1図を用いて説明するのに先立つて、第1図の中
で処理する様々なベクトル・データを、第3図,第4
図,第6図を用いて説明する。
まず第3図は、本発明のベクトル処理装置でマージ処
理をするマルチ・ベクトルの例を示す図である。図のよ
うに、マルチ・ベクトルは複数の部分ベクトルが次に連
なる部分ベクトルを指すことで一列に連なつたベクトル
である。各部分ベクトルは総て同じ形式であるが、その
長さは一定ではない。先頭の要素には、その部分ベクト
ルのベクトル長が格納されている。先頭から2番目の要
素には、次に連なる部分ベクトルのアドレスが格納され
ており、最後に連なる部分ベクトル303の場合には、最
後の部分ベクトルであることを示すデータ‘NIL'が格納
されている。これら部分ベクトル長を格納した要素と次
の部分ベクトルのアドレスを格納した要素の二つの要素
を、部分ベクトルのヘツダ部と呼ぶ。部分ベクトルのヘ
ツダ部を除いた残りの部分を、部分ベクトルの実データ
部と呼ぶ。先の部分ベクトル長とは、この部分ベクトル
の実データ部の要素数である。
理をするマルチ・ベクトルの例を示す図である。図のよ
うに、マルチ・ベクトルは複数の部分ベクトルが次に連
なる部分ベクトルを指すことで一列に連なつたベクトル
である。各部分ベクトルは総て同じ形式であるが、その
長さは一定ではない。先頭の要素には、その部分ベクト
ルのベクトル長が格納されている。先頭から2番目の要
素には、次に連なる部分ベクトルのアドレスが格納され
ており、最後に連なる部分ベクトル303の場合には、最
後の部分ベクトルであることを示すデータ‘NIL'が格納
されている。これら部分ベクトル長を格納した要素と次
の部分ベクトルのアドレスを格納した要素の二つの要素
を、部分ベクトルのヘツダ部と呼ぶ。部分ベクトルのヘ
ツダ部を除いた残りの部分を、部分ベクトルの実データ
部と呼ぶ。先の部分ベクトル長とは、この部分ベクトル
の実データ部の要素数である。
部分ベクトルの各要素は1要素が8バイト長で、実デ
ータ部の要素は8バイトの内の前部4バイトをタグ部
に、後部4バイトを値部に用いる。つまり、部分ベクト
ル301の第1要素は、タグが‘ATOM'で、値が‘a'という
データを表わす。
ータ部の要素は8バイトの内の前部4バイトをタグ部
に、後部4バイトを値部に用いる。つまり、部分ベクト
ル301の第1要素は、タグが‘ATOM'で、値が‘a'という
データを表わす。
マルチ・ベクトル300は主記憶装置上に存在し、その
アドレスは、最初に連なつている部分ベクトル301の先
頭の要素(ヘツダ部の第1要素で部分ベクトル長を格納
した要素)のアドレス(MVA)で表現する。部分ベクト
ル内の各要素は、アドレスが8バイト毎の連続した領域
に存在する。
アドレスは、最初に連なつている部分ベクトル301の先
頭の要素(ヘツダ部の第1要素で部分ベクトル長を格納
した要素)のアドレス(MVA)で表現する。部分ベクト
ル内の各要素は、アドレスが8バイト毎の連続した領域
に存在する。
第4図は、第3図に示したマルチ・ベクトル300を一
つのベクトルにマージしたマージ・ベクトルを示す図で
ある。図のように、マージ・ベクトルはマルチ・ベクト
ル300の部分ベクトル301〜303内の実データ部の要素の
みを、部分ベクトル301〜303が連なつている順に一列に
並べて、一つのベクトルを形成したものである。マージ
・ベクトルの一要素の長さや要素内の形式(タグ部と値
部)などは、マルチ・ベクトルと同一である。本発明で
は、マージ・ベクトルはベクトル・レジスタ(VR)内に
作成され、例では0番のVR(VR0)400内に作成される。
つのベクトルにマージしたマージ・ベクトルを示す図で
ある。図のように、マージ・ベクトルはマルチ・ベクト
ル300の部分ベクトル301〜303内の実データ部の要素の
みを、部分ベクトル301〜303が連なつている順に一列に
並べて、一つのベクトルを形成したものである。マージ
・ベクトルの一要素の長さや要素内の形式(タグ部と値
部)などは、マルチ・ベクトルと同一である。本発明で
は、マージ・ベクトルはベクトル・レジスタ(VR)内に
作成され、例では0番のVR(VR0)400内に作成される。
第6図は、本発明の処理の中で用いるデータと、本発
明の処理によつて作成されたデータを示す図である。
明の処理によつて作成されたデータを示す図である。
まず(a)は、ベクトルの比較命令で使用する比較の
基準となるデータで、スカラ・レジスタ内に格納されて
いる。例では、スカラ・レジスタSR0(601)内に格納さ
れており、データ形式はマルチ・ベクトル300の要素と
同一でタグ部が‘LIST'でデータ部分は比較されないた
め不定であり(内容は保証されない)‘*’を用いてこ
のことを表わす。つまり、比較命令はマージ・ベクトル
の各要素のタグ部が‘LIST'であるか否かをチエツクす
る訳である。
基準となるデータで、スカラ・レジスタ内に格納されて
いる。例では、スカラ・レジスタSR0(601)内に格納さ
れており、データ形式はマルチ・ベクトル300の要素と
同一でタグ部が‘LIST'でデータ部分は比較されないた
め不定であり(内容は保証されない)‘*’を用いてこ
のことを表わす。つまり、比較命令はマージ・ベクトル
の各要素のタグ部が‘LIST'であるか否かをチエツクす
る訳である。
(b)は、比較命令の結果により作成されたマージ・
ベクトルで、マスク・レジスタの0番(VMR0)602内に
作成される。マージ・ベクトルのタグ部の値が‘LIST'
である要素に対応したマスク・ベクトルの要素が‘1'と
なり、他の要素には‘0'が格納される。ベクトル長はマ
ージ・ベクトルと同一であり、1要素の長さは1ビツト
である。
ベクトルで、マスク・レジスタの0番(VMR0)602内に
作成される。マージ・ベクトルのタグ部の値が‘LIST'
である要素に対応したマスク・ベクトルの要素が‘1'と
なり、他の要素には‘0'が格納される。ベクトル長はマ
ージ・ベクトルと同一であり、1要素の長さは1ビツト
である。
(c)は、マスク・ベクトルの内容に基づいて、マー
ジ・ベクトルが主記憶装置上に圧縮ストアされた結果ベ
クトル603である。先頭に要素の数であるベクトル長を
格納するヘツダが付いており、ヘツダは要素数に含めな
い。ベクトル長は、マスク・ベクトル内の‘1'の数と同
じであり、例では10から4へ圧縮されたことになる。要
素の形式はマルチ・ベクトル300の要素と同一である。
図のように、例ではタグ部が‘LIST'の要素のみで構成
され、値部はそれぞれ異なつていてもかまわない。先頭
アドレス(RVA)は、圧縮ストアを指示するベクトル命
令で指定される。図に要素番号の右に括弧付きで示した
数字は、マージ・ベクトル内での要素番号である。値部
の‘LA2'とは、‘2番目のリスト・のアドレス’を意味
し、主記憶装置上に存在するリストのアドレスを表わ
す。
ジ・ベクトルが主記憶装置上に圧縮ストアされた結果ベ
クトル603である。先頭に要素の数であるベクトル長を
格納するヘツダが付いており、ヘツダは要素数に含めな
い。ベクトル長は、マスク・ベクトル内の‘1'の数と同
じであり、例では10から4へ圧縮されたことになる。要
素の形式はマルチ・ベクトル300の要素と同一である。
図のように、例ではタグ部が‘LIST'の要素のみで構成
され、値部はそれぞれ異なつていてもかまわない。先頭
アドレス(RVA)は、圧縮ストアを指示するベクトル命
令で指定される。図に要素番号の右に括弧付きで示した
数字は、マージ・ベクトル内での要素番号である。値部
の‘LA2'とは、‘2番目のリスト・のアドレス’を意味
し、主記憶装置上に存在するリストのアドレスを表わ
す。
このように、第3図に示した主記憶装置上に存在する
マルチ・ベクトル300が、VR0(400)内にマージされ第
4図に示したマージ・ベクトルとなり、それをSR0(60
1)の内のデータと比較することでマージ・ベクトルが
作られ、それに基づき主記憶装置上に圧縮された結果ベ
クトル603が完成する。
マルチ・ベクトル300が、VR0(400)内にマージされ第
4図に示したマージ・ベクトルとなり、それをSR0(60
1)の内のデータと比較することでマージ・ベクトルが
作られ、それに基づき主記憶装置上に圧縮された結果ベ
クトル603が完成する。
次に、本発明の一実施例であり、先に図を用いて説明
したデータを処理する、ベクトル処理装置の構成と動作
の概略を第1図を用いて説明する。
したデータを処理する、ベクトル処理装置の構成と動作
の概略を第1図を用いて説明する。
第1図はベクトル処理装置の概略構成を示す図であ
る。主記憶装置100に格納されたベクトル命令を読み出
すために、命令制御回路102から、制御信号103を介して
フエツチ要求を、データ・パス104を介してフエツチ・
アドレスを、それぞれ主記憶装置100に送出する。フエ
ツチ要求並びにアドレスを受け取つた主記憶装置100
は、データ・パス105を介して、読み出した4バイトの
ベクトル命令列を命令制御回路102へ転送する。
る。主記憶装置100に格納されたベクトル命令を読み出
すために、命令制御回路102から、制御信号103を介して
フエツチ要求を、データ・パス104を介してフエツチ・
アドレスを、それぞれ主記憶装置100に送出する。フエ
ツチ要求並びにアドレスを受け取つた主記憶装置100
は、データ・パス105を介して、読み出した4バイトの
ベクトル命令列を命令制御回路102へ転送する。
命令制御回路102は、受け取つたベクトル命令を解読
する。ベクトル命令は、4バイトの内、上位1バイトが
ベクトル命令の種類を表わし、残りの3バイトがベクト
ル命令のオペランドを表わす。ベクトル命令が、マルチ
・ベクトル300をマージする命令(VMMG命令)であるこ
とが判明すると、その旨を示す制御信号(IS)106が先
読み制御回路107へ送られる。
する。ベクトル命令は、4バイトの内、上位1バイトが
ベクトル命令の種類を表わし、残りの3バイトがベクト
ル命令のオペランドを表わす。ベクトル命令が、マルチ
・ベクトル300をマージする命令(VMMG命令)であるこ
とが判明すると、その旨を示す制御信号(IS)106が先
読み制御回路107へ送られる。
これと並行してベクトル命令のオペランドも解読さ
れ、命令が指定するレジスタの番号(例ではVRの0番)
が、データ・パス108を介してパス・セレクタ109へ送ら
れる。パス・セレクタ109は、ベクトル命令のオペラン
ドに従い、レジスタとデータ・パスや信号線を接続す
る。パス・セレクタ109から読み出し要求が制御信号11
0,111を介してベクトル・アドレス・レジスタ(VAR)、
ベクトル・インクリメント・レジスタ(VIR)112と、ベ
クトル・ベース・レジスタ(VBR)113へ送られる。VAR,
VBR112とVBT113からは、読み出し要求に答えて、データ
線114,115を介してパス・セレクタ109へ、マルチ・ベク
トル300のフエツチに必要な、アドレスやインクリメン
ト値を転送する。この送られてきたアドレスやインクリ
メント値を、パス・セレクタ109からデータ・パス116を
介して、さらにアドレス生成回路117へ送る。アドレス
生成回路117では、送られてきたアドレスから、アドレ
ス変換等のアドレス計算を行ない、マルチ・ベクトル30
0のアドレス(MVA)を求め、データ・パス118を介して
命令制御回路102へ転送する。これにより命令制御回路1
02は、ベクトル命令のオペランドよりマルチ・ベクトル
300のアドレスMVAを求めることができ、このMVAをデー
タ・パス119を介し先読みアドレス回路120へ送る。
れ、命令が指定するレジスタの番号(例ではVRの0番)
が、データ・パス108を介してパス・セレクタ109へ送ら
れる。パス・セレクタ109は、ベクトル命令のオペラン
ドに従い、レジスタとデータ・パスや信号線を接続す
る。パス・セレクタ109から読み出し要求が制御信号11
0,111を介してベクトル・アドレス・レジスタ(VAR)、
ベクトル・インクリメント・レジスタ(VIR)112と、ベ
クトル・ベース・レジスタ(VBR)113へ送られる。VAR,
VBR112とVBT113からは、読み出し要求に答えて、データ
線114,115を介してパス・セレクタ109へ、マルチ・ベク
トル300のフエツチに必要な、アドレスやインクリメン
ト値を転送する。この送られてきたアドレスやインクリ
メント値を、パス・セレクタ109からデータ・パス116を
介して、さらにアドレス生成回路117へ送る。アドレス
生成回路117では、送られてきたアドレスから、アドレ
ス変換等のアドレス計算を行ない、マルチ・ベクトル30
0のアドレス(MVA)を求め、データ・パス118を介して
命令制御回路102へ転送する。これにより命令制御回路1
02は、ベクトル命令のオペランドよりマルチ・ベクトル
300のアドレスMVAを求めることができ、このMVAをデー
タ・パス119を介し先読みアドレス回路120へ送る。
MVAが求まり先読みアドレス発生回路120へ送られた時
点で、先読み制御回路107から制御信号121を介して、先
読み開始の指示が先読みアドレス発生回路120へ送られ
る。MVAと先読み開始の指示が得られた時点で先読みア
ドレス発生回路120は、マルチ・ベクトル300として最初
に連なつた部分ベクトル301をフエツチするために、制
御信号122を介してフエツチ要求を、データ・パス123を
介してフエツチ・アドレスを、それぞれ主記憶装置100
に送出する。フエツチ要求は1クロツクに1回ずつ連続
して送出し、フエツチ・アドレスは1クロツク毎に、VI
Rで指定された値8バイトをMVAに加えながら連続して送
出する。
点で、先読み制御回路107から制御信号121を介して、先
読み開始の指示が先読みアドレス発生回路120へ送られ
る。MVAと先読み開始の指示が得られた時点で先読みア
ドレス発生回路120は、マルチ・ベクトル300として最初
に連なつた部分ベクトル301をフエツチするために、制
御信号122を介してフエツチ要求を、データ・パス123を
介してフエツチ・アドレスを、それぞれ主記憶装置100
に送出する。フエツチ要求は1クロツクに1回ずつ連続
して送出し、フエツチ・アドレスは1クロツク毎に、VI
Rで指定された値8バイトをMVAに加えながら連続して送
出する。
フエツチ要求並びにアドレスを連続して受け取つた主
記憶装置100は、MVAに続く部分ベクトル301の8バイト
長の要素(FD)を、データ・パス124を介して1クロツ
ク毎に続々とデータ分配回路126へ送信し続ける。同時
に、主記憶装置100は、要素の送出に同期させて1クロ
ツク毎に1回データ・アドバンス信号(DA)125をデー
タ分配回路126へ送る。
記憶装置100は、MVAに続く部分ベクトル301の8バイト
長の要素(FD)を、データ・パス124を介して1クロツ
ク毎に続々とデータ分配回路126へ送信し続ける。同時
に、主記憶装置100は、要素の送出に同期させて1クロ
ツク毎に1回データ・アドバンス信号(DA)125をデー
タ分配回路126へ送る。
データ分配回路126は、送られてきたデータを分類
し、部分ベクトル301のベクトル長が格納された要素は
データ・パス127を介して先読み制御回路107へ、次の部
分ベクトル302のアドレスが格納された要素はデータ・
パス128を介して先読みアドレス発生回路120へ、実デー
タ部の要素(RFD)はデータ・パス129を介してパス・セ
レクタ109へ送信する。この時データ分配回路126はパス
・セレクタ109に対しては、実データ部の要素の送信129
に同期させて1クロツク毎に1回実データ・アドバンス
信号(RDA)130も送る。パス・セレクタ109は、送られ
てきた実データ部の要素(RFD)と実データ・アドバン
ス信号(RDA)130を、それぞれデータ・パス131、制御
信号132を介してベクトル・レジスタ(例では0番レジ
スタVR0(400)とする)へ送る。VR0(400)は、実デー
タ・アドバンス信号(RDA)130,132が送られて来る毎
に、同時に送られて来た実データ部の要素(RFD)を、
レジスタの先頭から連続して順次格納する。こうして、
部分ベクトル301の実データ部は、要素の並んだ順にVR0
(400)へ格納される。
し、部分ベクトル301のベクトル長が格納された要素は
データ・パス127を介して先読み制御回路107へ、次の部
分ベクトル302のアドレスが格納された要素はデータ・
パス128を介して先読みアドレス発生回路120へ、実デー
タ部の要素(RFD)はデータ・パス129を介してパス・セ
レクタ109へ送信する。この時データ分配回路126はパス
・セレクタ109に対しては、実データ部の要素の送信129
に同期させて1クロツク毎に1回実データ・アドバンス
信号(RDA)130も送る。パス・セレクタ109は、送られ
てきた実データ部の要素(RFD)と実データ・アドバン
ス信号(RDA)130を、それぞれデータ・パス131、制御
信号132を介してベクトル・レジスタ(例では0番レジ
スタVR0(400)とする)へ送る。VR0(400)は、実デー
タ・アドバンス信号(RDA)130,132が送られて来る毎
に、同時に送られて来た実データ部の要素(RFD)を、
レジスタの先頭から連続して順次格納する。こうして、
部分ベクトル301の実データ部は、要素の並んだ順にVR0
(400)へ格納される。
先読み制御回路107には、先読みアドレス発生回路120
から主記憶装置100へ送出したフエツチ要求の数をカウ
ントするカウンタがある。そこで、先読み制御回路107
は、データ分配回路126から送られてきた部分ベクトル9
01のベクトル長と、カウンタの送出フエツチ要求数を比
較することで、先読みアドレス発生回路120とデータ分
配回路126の動作を以下のように制御する。
から主記憶装置100へ送出したフエツチ要求の数をカウ
ントするカウンタがある。そこで、先読み制御回路107
は、データ分配回路126から送られてきた部分ベクトル9
01のベクトル長と、カウンタの送出フエツチ要求数を比
較することで、先読みアドレス発生回路120とデータ分
配回路126の動作を以下のように制御する。
まず送出フエツチ要求数nが部分ベクトル長lよりも
大きい(n>l)場合は、その差(n−l)は無駄に先
読みをした数であるので、制御信号121を介して先読み
制御回路107から先読みアドレス発生回路120へ先読み停
止/次部分ベクトル先読み開始信号を送る。この時点
で、先読みアドレス発生回路120は部分ベクトル301の先
頭アドレス(MVA)から要素の先読みをしていたのを中
止し、次の部分ベクトル302の先頭アドレス(A2)から
要素の先読みを始める。またこの場合、無駄に先読みを
した分(n−l)だけ主記憶装置100からデータ分配回
路126へ、無効要素のデータが送信されてくる。そこ
で、先読み制御回路107は制御信号133を介してデータ分
配回路126へ無効データ読み捨て信号を送り、データ分
配回路126が無効データをパス・セレクタ109やベクトル
・レジスタ(VR0)400へ送らないよう制御する。この
時、実データ・アドバンス信号(RDA)130に対しても同
様に制御する。さらに、次の部分ベクトル302の有効デ
ータが到着するタイミングも、先読み制御回路107から
制御信号133を介してデータ分配回路126へ伝える。
大きい(n>l)場合は、その差(n−l)は無駄に先
読みをした数であるので、制御信号121を介して先読み
制御回路107から先読みアドレス発生回路120へ先読み停
止/次部分ベクトル先読み開始信号を送る。この時点
で、先読みアドレス発生回路120は部分ベクトル301の先
頭アドレス(MVA)から要素の先読みをしていたのを中
止し、次の部分ベクトル302の先頭アドレス(A2)から
要素の先読みを始める。またこの場合、無駄に先読みを
した分(n−l)だけ主記憶装置100からデータ分配回
路126へ、無効要素のデータが送信されてくる。そこ
で、先読み制御回路107は制御信号133を介してデータ分
配回路126へ無効データ読み捨て信号を送り、データ分
配回路126が無効データをパス・セレクタ109やベクトル
・レジスタ(VR0)400へ送らないよう制御する。この
時、実データ・アドバンス信号(RDA)130に対しても同
様に制御する。さらに、次の部分ベクトル302の有効デ
ータが到着するタイミングも、先読み制御回路107から
制御信号133を介してデータ分配回路126へ伝える。
逆に部分ベクトル長lが送出フエツチ要求数nよりも
大きい(l>n)場合は、その差(l−n)はフエツチ
要求を送出する数が足りないのであるから、nがlに達
するまで先読みアドレス発生回路120から主記憶装置100
へフエツチ要求を送出し続ける。部分ベクトル長lと送
出フエツチ要求数nが等しくなつた(l=n)時点で、
先程の場合と同様に先読み制御回路107から制御信号121
を介して先読みアドレス発生回路120へ、先読み停止/
次部分ベクトル先読み開始信号を送る。その後の先読み
アドレス発生回路120の動作は同様である。しかし今度
の場合は、主記憶装置100からデータ分配回路126へ無効
要素のデータは送信されず、データ分配回路126に到着
するデータは総てが有効要素のデータである。ただし、
次の部分ベクトル302のデータが到着するタイミング
は、先程の場合と同様に先読み制御回路107から制御信
号133を介してデータ分配回路126へ伝えられる。
大きい(l>n)場合は、その差(l−n)はフエツチ
要求を送出する数が足りないのであるから、nがlに達
するまで先読みアドレス発生回路120から主記憶装置100
へフエツチ要求を送出し続ける。部分ベクトル長lと送
出フエツチ要求数nが等しくなつた(l=n)時点で、
先程の場合と同様に先読み制御回路107から制御信号121
を介して先読みアドレス発生回路120へ、先読み停止/
次部分ベクトル先読み開始信号を送る。その後の先読み
アドレス発生回路120の動作は同様である。しかし今度
の場合は、主記憶装置100からデータ分配回路126へ無効
要素のデータは送信されず、データ分配回路126に到着
するデータは総てが有効要素のデータである。ただし、
次の部分ベクトル302のデータが到着するタイミング
は、先程の場合と同様に先読み制御回路107から制御信
号133を介してデータ分配回路126へ伝えられる。
以上の処理を、今回の例では最初の部分ベクトル301
から最後の部分ベクトル303までの3つの部分ベクトル
に対して繰り返す。
から最後の部分ベクトル303までの3つの部分ベクトル
に対して繰り返す。
最後の部分ベクトル303は、次の部分ベクトルのアド
レスが格納されるべき要素に、次の部分ベクトルは存在
しないためにこの部分ベクトルが最後の部分ベクトルで
あることを示すデータ(NIL)が格納されている。先読
みアドレス発生回路120では、データ分配回路126から送
られてくる次の部分ベクトルのアドレスが‘NIL'と一致
した時に制御信号134を介して先読み制御回路107へマル
チ・ベクトル終了信号を送信する。先読み制御回路107
には、データ分配回路126から送られてきた各部分ベク
トル301〜303のベクトル長を累積しておくカウンタが存
在する。そこで、先読みアドレス発生回路120からマル
チ・ベクトル終了信号を受け取ると、先読み制御回路10
7は、カウンタの累積ベクトル長をデータ・パス135を介
してベクトル長レジスタVLR136へ送出する。このVLR136
の値が、全部分ベクトルの実データ部の要素を合計した
値であり、これがマージ・ベクトル長である。この時点
で、初めてベクトル処理の処理ベクトル長が確定しVLR1
36にセツトされたことになる。以降はこのVLR136を元
に、マルチ・ベクトル・マージ命令(VMMG命令)に続く
ベクトル命令が、チエインされ実行される。
レスが格納されるべき要素に、次の部分ベクトルは存在
しないためにこの部分ベクトルが最後の部分ベクトルで
あることを示すデータ(NIL)が格納されている。先読
みアドレス発生回路120では、データ分配回路126から送
られてくる次の部分ベクトルのアドレスが‘NIL'と一致
した時に制御信号134を介して先読み制御回路107へマル
チ・ベクトル終了信号を送信する。先読み制御回路107
には、データ分配回路126から送られてきた各部分ベク
トル301〜303のベクトル長を累積しておくカウンタが存
在する。そこで、先読みアドレス発生回路120からマル
チ・ベクトル終了信号を受け取ると、先読み制御回路10
7は、カウンタの累積ベクトル長をデータ・パス135を介
してベクトル長レジスタVLR136へ送出する。このVLR136
の値が、全部分ベクトルの実データ部の要素を合計した
値であり、これがマージ・ベクトル長である。この時点
で、初めてベクトル処理の処理ベクトル長が確定しVLR1
36にセツトされたことになる。以降はこのVLR136を元
に、マルチ・ベクトル・マージ命令(VMMG命令)に続く
ベクトル命令が、チエインされ実行される。
最後の部分ベクトル303の実データ部の最後の要素
を、データ選択回路126が主記憶装置100から受け取りパ
ス・セレクタへ送出すると、データ選択回路126から制
御信号137を介して先読み制御回路107へ、マルチ・ベク
トルのマージが終了したことを知らせる。この時点で、
VR0(400)内にマージ・ベクトルが完成する。先読み制
御回路107からは、制御信号138を介して命令制御回路10
2へマルチ・ベクトル終了(MVE)が伝えられる。ただし
この時、命令制御回路102では先に記したように、後の
ベクトル命令をチエインして先に実行している。
を、データ選択回路126が主記憶装置100から受け取りパ
ス・セレクタへ送出すると、データ選択回路126から制
御信号137を介して先読み制御回路107へ、マルチ・ベク
トルのマージが終了したことを知らせる。この時点で、
VR0(400)内にマージ・ベクトルが完成する。先読み制
御回路107からは、制御信号138を介して命令制御回路10
2へマルチ・ベクトル終了(MVE)が伝えられる。ただし
この時、命令制御回路102では先に記したように、後の
ベクトル命令をチエインして先に実行している。
時間は戻るが、VMMG命令に続く他のベクトル命令の動
作も、以下に第1図上で簡単に説明する。VMMG命令の場
合と同様に、主記憶装置100は、命令制御回路102から制
御信号103とデータ・パス104を介して送られたフエツチ
要求に答えて、データ・パス105を介して次のベクトル
命令を送り返す。命令制御回路102では、ベクトル命令
の種類とオペランドを解読し、それらの解読結果をデー
タ・パス108を介してパス・セレクタ109へ送信する。パ
ス・セレクタ109では、送られてきたデータに基づい
て、比較用データが格納されているスカラ・レジスタ
(SR0)601と比較用の演算器(比較器)139とを、マー
ジ・ベクトルの格納されたVR0(400)と比較器139と
を、マージ・ベクトル(VMR0)602と比較139とを接続す
る。接続が完了すると命令が実行され、上記のように命
令に従つて接続されたパス・セレクタ109を介して、VR0
(400)の要素が上から順番に比較器139へ送られ、SR0
(601)からやはりパス・セレクタ109を介して送られて
きた比較用データと比較される。その比較結果に従い、
VMR0(602)のVR0(400)に対応する要素に‘1'または
‘0'を格納していく。
作も、以下に第1図上で簡単に説明する。VMMG命令の場
合と同様に、主記憶装置100は、命令制御回路102から制
御信号103とデータ・パス104を介して送られたフエツチ
要求に答えて、データ・パス105を介して次のベクトル
命令を送り返す。命令制御回路102では、ベクトル命令
の種類とオペランドを解読し、それらの解読結果をデー
タ・パス108を介してパス・セレクタ109へ送信する。パ
ス・セレクタ109では、送られてきたデータに基づい
て、比較用データが格納されているスカラ・レジスタ
(SR0)601と比較用の演算器(比較器)139とを、マー
ジ・ベクトルの格納されたVR0(400)と比較器139と
を、マージ・ベクトル(VMR0)602と比較139とを接続す
る。接続が完了すると命令が実行され、上記のように命
令に従つて接続されたパス・セレクタ109を介して、VR0
(400)の要素が上から順番に比較器139へ送られ、SR0
(601)からやはりパス・セレクタ109を介して送られて
きた比較用データと比較される。その比較結果に従い、
VMR0(602)のVR0(400)に対応する要素に‘1'または
‘0'を格納していく。
同様な仕組みでさらに後に続く命令もチエインして実
行する。圧縮ストアにおいては、VR0(400)内のマージ
・ベクトルがVMR0(602)の内容に従つて、フエツチ/
ストア制御回路140を介して主記憶装置100内の連続した
領域に格納される。この時、VMR0(602)の要素の値が
‘1'である要素に対応したVR0(400)内の要素のみが格
納されるために、VR0(400)内のマージ・ベクトルは圧
縮されベクトル長が小さくなる。
行する。圧縮ストアにおいては、VR0(400)内のマージ
・ベクトルがVMR0(602)の内容に従つて、フエツチ/
ストア制御回路140を介して主記憶装置100内の連続した
領域に格納される。この時、VMR0(602)の要素の値が
‘1'である要素に対応したVR0(400)内の要素のみが格
納されるために、VR0(400)内のマージ・ベクトルは圧
縮されベクトル長が小さくなる。
その後ベクトル命令列の終了を示す命令(VEND命令)
が実行され、このベクトル命令列の実行は終わり、ベク
トル処理ユニツト101からスカラ処理ユニツト141へ制御
が移る。
が実行され、このベクトル命令列の実行は終わり、ベク
トル処理ユニツト101からスカラ処理ユニツト141へ制御
が移る。
次に本発明の一実施例である第1図に示したベクトル
処理装置の詳細な動作を、第2図に従つて説明する。
処理装置の詳細な動作を、第2図に従つて説明する。
第2図は、フエツチ/ストア制御回路140の構成を示
す図である。この回路は、第1図に示したベクトル処理
装置の中での、主要発明部である。図に示すように、本
ベクトル処理装置ではCK0およびCK1の2相のクロツク信
号を同期用に使用している。
す図である。この回路は、第1図に示したベクトル処理
装置の中での、主要発明部である。図に示すように、本
ベクトル処理装置ではCK0およびCK1の2相のクロツク信
号を同期用に使用している。
命令制御回路102で解読されたベクトル命令が、マル
チ・ベクトル・マージ命令(VMMG命令)であることが判
明すると、その旨を示す命令開始信号IS(106)が、命
令のオペランドより求めたマルチ・ベクトル300のアド
レス(MVA)119と同期して、フエツチ/ストア制御回路
140に送られる。MVA(119)は、IS信号(106)によりセ
レクタ202を通じて、部分ベクトル・アドレス・レジス
タ(PVA)203へ格納される。PVA(203)内のMVA(119)
は、セレクタ204を通じてリクエスト・アドレス・カウ
ンタ(RA)205に格納される。RA(205)内のMVA(119)
は、フエツチ・リクエスト信号(FR)122に同期して、
1クロツク毎に8を加算して先読みのためのフエツチ・
アドレス(FA)123となり、FR信号122と共に主記憶装置
100へ送られる。
チ・ベクトル・マージ命令(VMMG命令)であることが判
明すると、その旨を示す命令開始信号IS(106)が、命
令のオペランドより求めたマルチ・ベクトル300のアド
レス(MVA)119と同期して、フエツチ/ストア制御回路
140に送られる。MVA(119)は、IS信号(106)によりセ
レクタ202を通じて、部分ベクトル・アドレス・レジス
タ(PVA)203へ格納される。PVA(203)内のMVA(119)
は、セレクタ204を通じてリクエスト・アドレス・カウ
ンタ(RA)205に格納される。RA(205)内のMVA(119)
は、フエツチ・リクエスト信号(FR)122に同期して、
1クロツク毎に8を加算して先読みのためのフエツチ・
アドレス(FA)123となり、FR信号122と共に主記憶装置
100へ送られる。
IS信号106は、セレクタ206へ送られデータ・アドバン
ス・カウンタ(DAC)207を−1に初期化する。−1とい
う値は、部分ベクトルには先頭に2要素分のヘツダ部が
あり、それに続く実データの第1要素を0とカウントす
るためである。主記憶装置100からは、データ・アドバ
ンス信号DA(124)と同期してフエツチ・データ(FD)1
24が、FR信号122に答えて次々とフエツチ/ストア制御
回路140へ到着する。DAC(207)はDA信号125が到着する
毎にカウント・アツプされる。DAC(207)の値は複数の
比較器208〜212へ送られる。比較器208から送られた信
号により、セレクタ201を通じてFD(124)が部分ベクト
ル長レジスタ(PVL)213に格納される。比較器208で比
較されるデータは−1であるため、FD(124)がPVL(21
3)へ格納される時は、FDには部分ベクトルの先頭の要
素データが乗つている。つまり、これは部分ベクトルの
ベクトル長であり、PVL(213)には最初の部分ベクトル
301のベクトル長がセツトアツプされる。0とDAC(20
7)の値を比較する比較器209から送られた信号により、
セレクタ202を通じてPVA(203)へFD(124)が格納され
る。DAC(207)が0のタイミングであるので、この値は
次の部分ベクトル302のアドレスである。比較器210では
リクエスト・カウント・レジスタ(RC)215の値とDAC
(207)の値を比較し、等しくなつたらDAC(207)を−
1に初期化することにより、カウンタのリセツトを行な
う。RC(215)の値は、部分ベクトル長がPVL(213)に
格納された時のPVL(213)の値(部分ベクトル長)とフ
エツチ・リクエスト・カウンタ(FRC)216の値によつて
決まる。PVL(213)の値がFRC(216)の値より大きい場
合は、FRC(216)の値がPVL(213)と等しくなつた時点
でFRC(216)の値がRC(215)に格納される。逆に、FRC
(216)の値がPVL(213)の値より大きい場合は、その
時点のFRC(216)の値がRC(215)に格納される。つま
りRC(215)の値により、フエツチ/ストア制御回路140
に次の部分ベクトルが到着するタイミングを制御する。
FRC(216)の値は、FR信号(122)を送出する毎に+1
されるカウンタで、命令開始時と次の部分ベクトルのフ
エツチ開始時に−1に初期化される。比較器211は、DAC
(207)の値が1になつた時にホールド・タイプのフリ
ツプ・フロツプ217をセツトする。比較器212は、DAC(2
07)の値がPVL(213)の値と等しくなつた時に、比較器
211がセツトしたフリツプ・フロツプ217をリセツトす
る。このフリツプ・フロツプ217により、パス・セレク
タ109を通じてVR0(400)へ送られる実フエツチ・デー
タ(RFD)129と実データ・アドバンス信号(RDA)130の
送出のタイミングを制御し、有効なデータのみを送る。
ス・カウンタ(DAC)207を−1に初期化する。−1とい
う値は、部分ベクトルには先頭に2要素分のヘツダ部が
あり、それに続く実データの第1要素を0とカウントす
るためである。主記憶装置100からは、データ・アドバ
ンス信号DA(124)と同期してフエツチ・データ(FD)1
24が、FR信号122に答えて次々とフエツチ/ストア制御
回路140へ到着する。DAC(207)はDA信号125が到着する
毎にカウント・アツプされる。DAC(207)の値は複数の
比較器208〜212へ送られる。比較器208から送られた信
号により、セレクタ201を通じてFD(124)が部分ベクト
ル長レジスタ(PVL)213に格納される。比較器208で比
較されるデータは−1であるため、FD(124)がPVL(21
3)へ格納される時は、FDには部分ベクトルの先頭の要
素データが乗つている。つまり、これは部分ベクトルの
ベクトル長であり、PVL(213)には最初の部分ベクトル
301のベクトル長がセツトアツプされる。0とDAC(20
7)の値を比較する比較器209から送られた信号により、
セレクタ202を通じてPVA(203)へFD(124)が格納され
る。DAC(207)が0のタイミングであるので、この値は
次の部分ベクトル302のアドレスである。比較器210では
リクエスト・カウント・レジスタ(RC)215の値とDAC
(207)の値を比較し、等しくなつたらDAC(207)を−
1に初期化することにより、カウンタのリセツトを行な
う。RC(215)の値は、部分ベクトル長がPVL(213)に
格納された時のPVL(213)の値(部分ベクトル長)とフ
エツチ・リクエスト・カウンタ(FRC)216の値によつて
決まる。PVL(213)の値がFRC(216)の値より大きい場
合は、FRC(216)の値がPVL(213)と等しくなつた時点
でFRC(216)の値がRC(215)に格納される。逆に、FRC
(216)の値がPVL(213)の値より大きい場合は、その
時点のFRC(216)の値がRC(215)に格納される。つま
りRC(215)の値により、フエツチ/ストア制御回路140
に次の部分ベクトルが到着するタイミングを制御する。
FRC(216)の値は、FR信号(122)を送出する毎に+1
されるカウンタで、命令開始時と次の部分ベクトルのフ
エツチ開始時に−1に初期化される。比較器211は、DAC
(207)の値が1になつた時にホールド・タイプのフリ
ツプ・フロツプ217をセツトする。比較器212は、DAC(2
07)の値がPVL(213)の値と等しくなつた時に、比較器
211がセツトしたフリツプ・フロツプ217をリセツトす
る。このフリツプ・フロツプ217により、パス・セレク
タ109を通じてVR0(400)へ送られる実フエツチ・デー
タ(RFD)129と実データ・アドバンス信号(RDA)130の
送出のタイミングを制御し、有効なデータのみを送る。
DAC(207)のリセツトに用いるRC(215)の値を格納
するために、PVL(213)の値とFRC(216)の値を比較し
たが、この比較は比較器218で行なう。PVL(213)の値
がFRC(216)の値以上となり、比較の条件を満足する
と、比較器218より部分ベクトル・フエツチ要求終了信
号(PVRE)219がホールド・タイプのフリツプ・フロツ
プ220などへ送出される。PVRE信号により、フリツプ・
フロツプ220をセツトする。比較器209からの信号も、ホ
ールド・タイプのフリツプ・フロツプ221をセツトし、
これらのフリツプ・フロツプ220と221により、FR信号
(122)の送出のタイミングを制御する。
するために、PVL(213)の値とFRC(216)の値を比較し
たが、この比較は比較器218で行なう。PVL(213)の値
がFRC(216)の値以上となり、比較の条件を満足する
と、比較器218より部分ベクトル・フエツチ要求終了信
号(PVRE)219がホールド・タイプのフリツプ・フロツ
プ220などへ送出される。PVRE信号により、フリツプ・
フロツプ220をセツトする。比較器209からの信号も、ホ
ールド・タイプのフリツプ・フロツプ221をセツトし、
これらのフリツプ・フロツプ220と221により、FR信号
(122)の送出のタイミングを制御する。
セレクタ201と214には、部分ベクトル長や送出フエツ
チ要求数が求まるまで、ダミーとして最大ベクトル長
(MV)222として、処理装置のベクトル・レジスタの最
大長(S−810では256)を格納する。
チ要求数が求まるまで、ダミーとして最大ベクトル長
(MV)222として、処理装置のベクトル・レジスタの最
大長(S−810では256)を格納する。
比較器208から送られてきた信号から累積ベクトル長
セツト信号(CVLS)223が作られ、この信号によりPVL
(213)の値が累積ベクトル長レジスタ(CVL)224に累
積されていく。CVL(224)の値は、命令開始時にIS信号
106によりセレクタ225を通じて0に初期化される。
セツト信号(CVLS)223が作られ、この信号によりPVL
(213)の値が累積ベクトル長レジスタ(CVL)224に累
積されていく。CVL(224)の値は、命令開始時にIS信号
106によりセレクタ225を通じて0に初期化される。
RA(205)の値が‘NIL'になると、比較器226はホール
ド・タイプのフリツプ・フロツプ227をリセツトする。
このフリツプ・フロツプ227は、IS信号106により命令開
始時にセツトされており、これをリセツトすることによ
つてもう存在しない次の部分ベクトルへのフエツチ要求
を止める。この比較器226の信号は、同時にマルチ・ベ
クトル終了信号(MVE)138を作るホールド・タイプのフ
リツプ・フロツプ228もセツトすると共に、CVL(225)
の値をマージ・ベクトル長レジスタ(MVL)229に格納す
る。このMVL(229)の値は、データ・パス(MVL)135を
介してベクトル長レジスタ(VLR)136へ送出される。比
較器212は、DAC(207)の値がPVL(213)の値よりも大
きいという比較の条件を満足すると、部分ベクトル・デ
ータ終了信号(PVDE)230を送出する。このPVDE信号(2
30)とフリツプ・フロツプ228より、マルチ・ベクトル
終了信号(MVE)138が作成され命令制御回路102へ送出
される。
ド・タイプのフリツプ・フロツプ227をリセツトする。
このフリツプ・フロツプ227は、IS信号106により命令開
始時にセツトされており、これをリセツトすることによ
つてもう存在しない次の部分ベクトルへのフエツチ要求
を止める。この比較器226の信号は、同時にマルチ・ベ
クトル終了信号(MVE)138を作るホールド・タイプのフ
リツプ・フロツプ228もセツトすると共に、CVL(225)
の値をマージ・ベクトル長レジスタ(MVL)229に格納す
る。このMVL(229)の値は、データ・パス(MVL)135を
介してベクトル長レジスタ(VLR)136へ送出される。比
較器212は、DAC(207)の値がPVL(213)の値よりも大
きいという比較の条件を満足すると、部分ベクトル・デ
ータ終了信号(PVDE)230を送出する。このPVDE信号(2
30)とフリツプ・フロツプ228より、マルチ・ベクトル
終了信号(MVE)138が作成され命令制御回路102へ送出
される。
以上のように、フエツチ/ストア制御回路140は、命
令制御回路102からの命令開始信号(IS)106を受けて主
記憶装置100上のマルチ・ベクトル300をベクトル・レジ
スタ(VR0)400にマージし、マージしたベクトル長をベ
クトル長レジスタ(VLR)136にセツトして命令終了信号
(MVE)138を命令制御回路102に返すことでその動作を
終える。
令制御回路102からの命令開始信号(IS)106を受けて主
記憶装置100上のマルチ・ベクトル300をベクトル・レジ
スタ(VR0)400にマージし、マージしたベクトル長をベ
クトル長レジスタ(VLR)136にセツトして命令終了信号
(MVE)138を命令制御回路102に返すことでその動作を
終える。
第7図は、本発明のベクトル処理装置でマルチ・ベク
トルのマージ処理を行なう場合の、スカラ命令列および
ベクトル命令列を示す図である。これらは、共に主記憶
装置100内に格納されている。
トルのマージ処理を行なう場合の、スカラ命令列および
ベクトル命令列を示す図である。これらは、共に主記憶
装置100内に格納されている。
以下にこれらの命令列が第1図に示すベクトル処理装
置でどう処理されるかを説明する。第7図のベクトル命
令の内で新規な命令は、命令704の‘VMMG'のみである。
置でどう処理されるかを説明する。第7図のベクトル命
令の内で新規な命令は、命令704の‘VMMG'のみである。
まずスカラ処理ユニツト141は主記憶装置100から第7
図(a)のスカラ命令列701内の命令702を取り出して実
行する。命令702の‘EXVPベクトル命令列1'は従来のEXV
P命令と少し異なり、処理ベクトル長(処理要素数)を
指定していない。これは、処理ベクトル長が未定のまま
でベクトル命令列1(703)の実行を開始するように、
ベクトル処理ユニツト101に指示してこれを起動する命
令である。スカラ命令702の実行によつて、ベクトル処
理ユニツト101の命令制御回路102は第7図(b)のベク
トル命令列1(703)の処理を開始する。
図(a)のスカラ命令列701内の命令702を取り出して実
行する。命令702の‘EXVPベクトル命令列1'は従来のEXV
P命令と少し異なり、処理ベクトル長(処理要素数)を
指定していない。これは、処理ベクトル長が未定のまま
でベクトル命令列1(703)の実行を開始するように、
ベクトル処理ユニツト101に指示してこれを起動する命
令である。スカラ命令702の実行によつて、ベクトル処
理ユニツト101の命令制御回路102は第7図(b)のベク
トル命令列1(703)の処理を開始する。
ベクトル命令列1(703)の最初のベクトル命令704
‘VMMG VR0,MVA'は従来のベクトル計算機には無い命令
であり、本発明の特徴部分であるフエツチ/ストア制御
回路140内の先読み制御回路107、先読みアドレス発生回
路120、及びデータ分配回路126を動作させる命令であ
る。ベクトル命令704は、主記憶装置100内のアドレスMV
Aから始まるマルチ・ベクトル300の総ての実データ部の
要素をVR0(400)内にマージして格納し、その全要素数
を処理ベクトル長としてVLR136に格納する命令である。
命令704の実行が終了すると、その旨がベクトル命令制
御回路102に伝えられる。
‘VMMG VR0,MVA'は従来のベクトル計算機には無い命令
であり、本発明の特徴部分であるフエツチ/ストア制御
回路140内の先読み制御回路107、先読みアドレス発生回
路120、及びデータ分配回路126を動作させる命令であ
る。ベクトル命令704は、主記憶装置100内のアドレスMV
Aから始まるマルチ・ベクトル300の総ての実データ部の
要素をVR0(400)内にマージして格納し、その全要素数
を処理ベクトル長としてVLR136に格納する命令である。
命令704の実行が終了すると、その旨がベクトル命令制
御回路102に伝えられる。
これに続くベクトル命令705〜707は、先の命令704の
実行終了を待たずに、命令704の実行にチエインして行
なわれる。命令705〜706の実行は、命令704の実行で求
まつた処理ベクトル長(VLR136の値)により制御され
る。
実行終了を待たずに、命令704の実行にチエインして行
なわれる。命令705〜706の実行は、命令704の実行で求
まつた処理ベクトル長(VLR136の値)により制御され
る。
命令705‘VCEQ VMR0,VR0,SR0'は、VR0(400)の内の
各要素の値とSR0(601)の値のそれぞれ上位4バイトの
みを比較器139内で比較し、その結果をVMR0(602)内に
格納する命令である。
各要素の値とSR0(601)の値のそれぞれ上位4バイトの
みを比較器139内で比較し、その結果をVMR0(602)内に
格納する命令である。
命令706‘VSTCD VR0,RVA'は、命令705で作成したVMR0
(602)の内容に基づいて、マージ・ベクトルVR0(40
0)の要素を、‘RVA'で示された主記憶装置100内のアド
レスから順に圧縮格納する命令である。
(602)の内容に基づいて、マージ・ベクトルVR0(40
0)の要素を、‘RVA'で示された主記憶装置100内のアド
レスから順に圧縮格納する命令である。
命令707‘VEND'を実行すると、ベクトル命令列1(70
3)の全処理が終了した旨が、ベクトル処理ユニツト101
からスカラ処理ユニツト141に伝えられる。
3)の全処理が終了した旨が、ベクトル処理ユニツト101
からスカラ処理ユニツト141に伝えられる。
以上で第7図(a)のスカラ命令702で起動される処
理が終了し、スカラ処理ユニツト141では、命令702に続
くスカラ命令を主記憶装置100から取り出して実行し、
処理を進めていく。
理が終了し、スカラ処理ユニツト141では、命令702に続
くスカラ命令を主記憶装置100から取り出して実行し、
処理を進めていく。
従来のベクトル・レジスタを有するベクトル計算機、
例えばS−810では、マルチ・ベクトルのマージ処理で
は各部分ベクトル毎にEXVP命令によつてベクトル処理を
起動する必要があり、処理ベクトル長も部分ベクトル長
にしか取ることができなかつた。それに対し、第1図に
示した実施例では、以上の第7図の命令列で説明したよ
うに、マルチ・ベクトルを総ての部分ベクトルに渡つて
1ベクトル処理で連続にマージできるために、処理ベク
トル長をマルチ・ベクトル全体の長さとすることがで
き、ベクトル処理ユニツト101の起動オーバヘツドが減
少する。
例えばS−810では、マルチ・ベクトルのマージ処理で
は各部分ベクトル毎にEXVP命令によつてベクトル処理を
起動する必要があり、処理ベクトル長も部分ベクトル長
にしか取ることができなかつた。それに対し、第1図に
示した実施例では、以上の第7図の命令列で説明したよ
うに、マルチ・ベクトルを総ての部分ベクトルに渡つて
1ベクトル処理で連続にマージできるために、処理ベク
トル長をマルチ・ベクトル全体の長さとすることがで
き、ベクトル処理ユニツト101の起動オーバヘツドが減
少する。
なお上述の実施例では、一つのマルチ・ベクトルの処
理し行なつていない。しかし、ベクトル処理ユニツト10
1は複数のVRやSRと複数の演算器を自由に柔軟に結合で
きるため、同じ長さであれば複数のマルチ・ベクトルを
一つのベクトル命令列内で処理することもできる。こう
すれば、一つのベクトル命令列の長と(連なつた命令の
数)が大きくなり、命令がチエインされることの効果が
より大きくなる。これにより、ベクトル処理の利点であ
る要素のパイプライン実行の効果が強調され、処理が高
速化される。
理し行なつていない。しかし、ベクトル処理ユニツト10
1は複数のVRやSRと複数の演算器を自由に柔軟に結合で
きるため、同じ長さであれば複数のマルチ・ベクトルを
一つのベクトル命令列内で処理することもできる。こう
すれば、一つのベクトル命令列の長と(連なつた命令の
数)が大きくなり、命令がチエインされることの効果が
より大きくなる。これにより、ベクトル処理の利点であ
る要素のパイプライン実行の効果が強調され、処理が高
速化される。
第8図は、第5図に示した従来法と比較するために、
本発明のマルチ・ベクトルを処理する手続きを説明する
図である。この図は、第1図で示したベクトル処理装置
を用いて、第7図で示したベクトル命令列を実行する手
続きを、PADで表現したものである。図に示した手続き8
00は、従来のベクトル計算機では実行できない。
本発明のマルチ・ベクトルを処理する手続きを説明する
図である。この図は、第1図で示したベクトル処理装置
を用いて、第7図で示したベクトル命令列を実行する手
続きを、PADで表現したものである。図に示した手続き8
00は、従来のベクトル計算機では実行できない。
第8図を第7図のベクトル命令と対応させると、ルー
プ801全体がベクトル命令列1(703)に、処理802がベ
クトル命令704に、処理803がベクトル命令705に、処理8
04がベクトル命令706にそれぞれ対応する。従つて、第
8図の各処理の詳細は第7図の説明で代用し、ここでは
省略する。
プ801全体がベクトル命令列1(703)に、処理802がベ
クトル命令704に、処理803がベクトル命令705に、処理8
04がベクトル命令706にそれぞれ対応する。従つて、第
8図の各処理の詳細は第7図の説明で代用し、ここでは
省略する。
第8図を、従来法の手続きを示した第5図と比較する
と、第5図内の2重ループ処理501〜503が無くなつてい
る。第5図で説明したように、この2重ループ501〜503
は、マルチ・ベクトルのマージ処理に当たり、内側のル
ープ502にしかベクトル処理が適用できず処理の負荷が
大きい。以上のことから、本発明の実施例のベクトル処
理装置によつて、処理が高速化されることが解る。
と、第5図内の2重ループ処理501〜503が無くなつてい
る。第5図で説明したように、この2重ループ501〜503
は、マルチ・ベクトルのマージ処理に当たり、内側のル
ープ502にしかベクトル処理が適用できず処理の負荷が
大きい。以上のことから、本発明の実施例のベクトル処
理装置によつて、処理が高速化されることが解る。
本発明によれば、複数のベクトルが一列に連なつたデ
ータ(マルチ・ベクトル)でも1ベクトル処理で一つの
ベクトルに統合(マージ)でき、後に続く他のベクトル
命令も同一ベクトル処理内で実行できるので、長い処理
ベクトル長でかつ長いベクトル命令列でのベクトル処理
が可能となり、論理型言語で記述されたプログラムの実
行を高速化できる効果がある。
ータ(マルチ・ベクトル)でも1ベクトル処理で一つの
ベクトルに統合(マージ)でき、後に続く他のベクトル
命令も同一ベクトル処理内で実行できるので、長い処理
ベクトル長でかつ長いベクトル命令列でのベクトル処理
が可能となり、論理型言語で記述されたプログラムの実
行を高速化できる効果がある。
例えば、マルチ・ベクトル内の一列に連なつた部分ベ
クトルの数をN、各部分ベクトルの長さをそれぞれM1,
M2,…,MNとすると、従来のベクトル計算機では各部分
ベクトル毎にしかベクトル処理できないため、処理ベク
トル長をM1,M2,…,MNとしてN回ベクトル命令を起動
して一つのベクトルにマージする必要があつた。その
後、処理ベクトル長M1+M2+…MNでもう一回ベクトル命
令を起動して、マージの後に続く他のベクトル命令を実
行していた。これに対し本発明によれば、上記全処理の
実行に関して処理ベクトル長M1+M2+…MNのベクトル命
令を1回起動すれば良い。従つて、ベクトル命令の起動
/終了オーバヘツドの平均時間を○クロツクとすると、
○×Nクロツクのオーバヘツドが、1マージ処理毎に削
減された処理は高速化する。この連なつたベクトル(マ
ルチ・ベクトル)を一つのベクトルにマージする処理
は、論理型言語で記述されたプログラムをベクトル計算
機を用いて実行する場合に数多く行なわれるため、プロ
グラム実行全体の実行速度も向上する。
クトルの数をN、各部分ベクトルの長さをそれぞれM1,
M2,…,MNとすると、従来のベクトル計算機では各部分
ベクトル毎にしかベクトル処理できないため、処理ベク
トル長をM1,M2,…,MNとしてN回ベクトル命令を起動
して一つのベクトルにマージする必要があつた。その
後、処理ベクトル長M1+M2+…MNでもう一回ベクトル命
令を起動して、マージの後に続く他のベクトル命令を実
行していた。これに対し本発明によれば、上記全処理の
実行に関して処理ベクトル長M1+M2+…MNのベクトル命
令を1回起動すれば良い。従つて、ベクトル命令の起動
/終了オーバヘツドの平均時間を○クロツクとすると、
○×Nクロツクのオーバヘツドが、1マージ処理毎に削
減された処理は高速化する。この連なつたベクトル(マ
ルチ・ベクトル)を一つのベクトルにマージする処理
は、論理型言語で記述されたプログラムをベクトル計算
機を用いて実行する場合に数多く行なわれるため、プロ
グラム実行全体の実行速度も向上する。
第1図は本発明の一実施例であるベクトル処理装置の概
略構成を示す図、第2図は第1図に示したフエツチ/ス
トア制御回路の構成を示す図、第3図は本発明のベクト
ル処理装置で処理するベクトル・データの形式(マルチ
・ベクトル)を示す図、第4図は本発明のベクトル処理
装置で第3図に示したマルチ・ベクトルを一つに統合
(マージ)したベクトル(マージ・ベクトル)を示す
図、第5図は第9図に示したマルチ・ベクトルを処理す
る従来の方法を説明する図、第6図は本発明の処理で用
いるデータと処理によつて作成されたデータを示す図、
第7図はマルチ・ベクトルのマージ処理とそれに続ベク
トル処理を行なう場合のスカラ命令列およびベクトル命
令列を示す図、第8図は第5図に示した従来法と比較す
るための本発明のマルチ・ベクトルを処理する手続きを
説明する図、第9図は従来技術の公知例(特開昭62−10
4244号)内に記載されているマルチ・ベクトルを示す図
である。 107…先読み制御回路、120…先読みアドレス発生回路、
126…データ分配回路、137…ベクトル長レジスタ(VL
R)、140…フエツチ/ストア制御回路、400…ベクトル
・レジスタ(VR0)。
略構成を示す図、第2図は第1図に示したフエツチ/ス
トア制御回路の構成を示す図、第3図は本発明のベクト
ル処理装置で処理するベクトル・データの形式(マルチ
・ベクトル)を示す図、第4図は本発明のベクトル処理
装置で第3図に示したマルチ・ベクトルを一つに統合
(マージ)したベクトル(マージ・ベクトル)を示す
図、第5図は第9図に示したマルチ・ベクトルを処理す
る従来の方法を説明する図、第6図は本発明の処理で用
いるデータと処理によつて作成されたデータを示す図、
第7図はマルチ・ベクトルのマージ処理とそれに続ベク
トル処理を行なう場合のスカラ命令列およびベクトル命
令列を示す図、第8図は第5図に示した従来法と比較す
るための本発明のマルチ・ベクトルを処理する手続きを
説明する図、第9図は従来技術の公知例(特開昭62−10
4244号)内に記載されているマルチ・ベクトルを示す図
である。 107…先読み制御回路、120…先読みアドレス発生回路、
126…データ分配回路、137…ベクトル長レジスタ(VL
R)、140…フエツチ/ストア制御回路、400…ベクトル
・レジスタ(VR0)。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭61−296471(JP,A) 特開 昭62−160568(JP,A) 特開 昭63−251835(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 17/16
Claims (1)
- 【請求項1】複数の要素からなるベクトル内の一要素が
次に連なるベクトルのアドレスを指し示すことにより複
数のベクトルが一列に連なったマルチ・ベクトルを処理
するベクトル処理装置であって、該マルチ・ベクトル内
の各ベクトルの先頭要素アドレスにもとづいて先の要素
を先読みする先読みアドレス発生回路と、該アドレス発
生回路の読み出し要素により読み出された該マルチ・ベ
クトルを各ベクトル毎に各ベクトルの長さが格納されて
いる第1の要素と次のベクトルのアドレスが格納されて
いる第2の要素とその他の要素である実データに分類す
るデータ分配回路と、該データ分配回路により分配され
た各ベクトルの該第1の要素である各ベクトルの長さに
もとづいて上記先読みアドレス発生回路と該データ分配
回路の動作を制御する先読み制御回路と、ベクトル命令
の実行前にベクトル長が確定していなくても該データ分
配回路から分配された上記実データを格納するベクトル
・レジスタと、上記マルチ・ベクトル内の各ベクトルの
上記第1の要素である各ベクトルの長さを合計すること
により求めた累積ベクトル長をベクトル命令実行途中で
も設定するベクトル長レジスタと、上記ベクトル命令の
オペランドより上記マルチ・ベクトルの主記憶上におけ
るアドレスを生成するアドレス生成回路と、受け取った
ベクトル命令を解読し命令が指定する上記ベクトル・レ
ジスタの内容を参照して上記生成されたアドレスを上記
先読みアドレス発生回路へ送出することにより上記マル
チ・ベクトルを1個のベクトルに統合するように上記各
回路を制御する命令制御回路とを設けたことを特徴とす
るベクトル処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2750588A JP2839499B2 (ja) | 1988-02-10 | 1988-02-10 | ベクトル処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2750588A JP2839499B2 (ja) | 1988-02-10 | 1988-02-10 | ベクトル処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01205269A JPH01205269A (ja) | 1989-08-17 |
JP2839499B2 true JP2839499B2 (ja) | 1998-12-16 |
Family
ID=12222996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2750588A Expired - Lifetime JP2839499B2 (ja) | 1988-02-10 | 1988-02-10 | ベクトル処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2839499B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579083B (zh) * | 2022-05-09 | 2022-08-05 | 上海擎昆信息科技有限公司 | 一种基于矢量处理器的数据处理装置和方法 |
-
1988
- 1988-02-10 JP JP2750588A patent/JP2839499B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH01205269A (ja) | 1989-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4374409A (en) | Method of and system using P and V instructions on semaphores for transferring data among processes in a multiprocessing system | |
US4369494A (en) | Apparatus and method for providing synchronization between processes and events occurring at different times in a data processing system | |
US4316245A (en) | Apparatus and method for semaphore initialization in a multiprocessing computer system for process synchronization | |
US4395757A (en) | Process synchronization utilizing semaphores | |
US3573854A (en) | Look-ahead control for operation of program loops | |
US4868735A (en) | Interruptible structured microprogrammed sixteen-bit address sequence controller | |
US4594682A (en) | Vector processing | |
US4541046A (en) | Data processing system including scalar data processor and vector data processor | |
US4881168A (en) | Vector processor with vector data compression/expansion capability | |
US4961162A (en) | Multiprocessing system for performing floating point arithmetic operations | |
US4447873A (en) | Input-output buffers for a digital signal processing system | |
US4208716A (en) | Cache arrangement for performing simultaneous read/write operations | |
US20020116595A1 (en) | Digital signal processor integrated circuit | |
KR920006275B1 (ko) | 데이타 처리 장치 | |
US4371924A (en) | Computer system apparatus for prefetching data requested by a peripheral device from memory | |
US4980819A (en) | Mechanism for automatically updating multiple unit register file memories in successive cycles for a pipelined processing system | |
JPH06236268A (ja) | 命令の長さを判定する装置と方法 | |
US4994962A (en) | Variable length cache fill | |
US4054945A (en) | Electronic computer capable of searching a queue in response to a single instruction | |
US4677547A (en) | Vector processor | |
EP0234038A2 (en) | Apparatus for identifying the LRU storage unit in a memory | |
US4710867A (en) | Vector processing system | |
US3573853A (en) | Look-ahead control for operation of program loops | |
US4325118A (en) | Instruction fetch circuitry for computers | |
JP2839499B2 (ja) | ベクトル処理装置 |