JPH0452986B2 - - Google Patents

Info

Publication number
JPH0452986B2
JPH0452986B2 JP61002006A JP200686A JPH0452986B2 JP H0452986 B2 JPH0452986 B2 JP H0452986B2 JP 61002006 A JP61002006 A JP 61002006A JP 200686 A JP200686 A JP 200686A JP H0452986 B2 JPH0452986 B2 JP H0452986B2
Authority
JP
Japan
Prior art keywords
register
instruction
vector
output
line
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
Application number
JP61002006A
Other languages
English (en)
Other versions
JPS61180370A (ja
Inventor
Shigeo Nagashima
Hitoshi Abe
Yasuhiko Hatakeyama
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP200686A priority Critical patent/JPS61180370A/ja
Publication of JPS61180370A publication Critical patent/JPS61180370A/ja
Publication of JPH0452986B2 publication Critical patent/JPH0452986B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors

Description

【発明の詳細な説明】
〔発明の利用分野〕 本発明は、プログラム制御のデジタル計算機、
特にベクトル演算を高速で実行するのに好適なデ
イジタル計算機(以下これをベクトルプロセツサ
とよぶ)に関する。 〔従来技術〕 科学技術計算に頻繁に現れる大形行列計算など
の高速処理用にベクトルプロセツサが考案されて
いる。 特に、複数個のパイプライン演算器の高速性を
有効に発揮し、演算データの転送能力を向上させ
るため、ベクトル・レジスタとチエイニング機能
を有するベクトルプロセツサが提案されている
(米国特許4128880号)。 A 従来の装置ではチエイニングについて次の問
題点がある。このことをベクトル演算の簡単な
例を挙げて説明する。 FORTRAN文 DO 10 I=1,L 10 Y(I)=A(I)+B(I)*C(I) この処理を、ベクトル命令の形式に表現すると 1 Vector Load VR0←A 2 Vector Load VR1←B 3 Vector Load VR2←C 4 Vector Multiply VR3←VR1 *VR2 5 Vector Add VR4←VR0 +VR3 6 Vector Store VR4→Y ここでVRiはi番目のベクトルレジスタを表わ
す。各ベクトル命令は、演算、データ転送を、エ
レメントL個分、繰り返して実行する。 上例では、最終結果を求める前の中間結果であ
るベクトルBとCの乗算結果をベクトルレジスタ
VR3へ一時的に格納して、これとベクトルAと
の加算結果Yのみを主記憶にしている。一般的
に、ベクトルレジスタを備えるベクトルプロセツ
サでは、演算の中間結果のベクトルを一時的にベ
クトルVR1へ格納し、最終結果ベクトルのみを
主記憶装置へストアする。これにより、実質的に
主記憶装置との間のデータ転送回数が減少する。
したがつてベクトルレジスタの書込み読出し動作
を高速化すれば、これに比べ主記憶装置のアクセ
ス能力は比較的に低くても、演算に必要なデータ
転送能力を十分確保することが可能である。 このように従来のベクトルプロセツサは、演算
器を複数個設け、それらを同時に実行させる方式
を採用しているが、ここで設けられている演算器
は、加算器あるいは乗算器という一つの種類につ
いてはそれぞれ一つづつである。しかしながら、
実際のプログラムの実行性能を調べてみると、ベ
クトル加算を必要とする加算命令が頻発すること
が多いことが分かつた。しかし、これらのベクト
ル加算命令は利用しうる加算器が一つしかないた
め、加算器が利用可能になるまで実行を待たされ
ることが生じることが分かつた。この問題を解決
するために、加算器及び乗算器の数を増大させた
場合、これらとベクトルレジスタとを接続するた
めのスイツチ回路が演算器の数に比例して複雑に
なる。特に、ベクトルレジスタに保持されるベク
トル要素の各々は、大きなビツト巾を有し、しか
もベクトルレジスタの数も多い。このような状態
で演算器の数が増大すると、スイツチ回路は、さ
らに複雑となる。 〔発明の目的〕 本発明の目的は、このように頻発するベクトル
演算を高速に実行しうる、構造の比較的簡単なデ
ータ処理装置を提供することにある。 〔発明の概要〕 このため本発明によるデータ処理装置では、 複数のベクトルレジスタと、 それぞれ、複数のベクトル要素に対してパイプ
ライン的に演算を行う複数の演算手段と、 該複数のベクトルレジスタと該複数の演算手段
を接続するスイツチ手段と、 実行すべき命令が必要とする演算を実行可能な
一つの演算手段を選択し、その演算手段によりそ
の命令を実行させる制御手段と、 該制御手段により実行させられた命令に応答し
て、第1のベクトルレジスタから演算を受けるべ
きオペランドベクトル要素を読み出し、該複数の
演算手段のうち、該一つの演算手段へ供給し、該
一つの演算手段からそれらのオペランドベクトル
要素に対する演算結果として出力される複数の結
合ベクトル要素を、第2のベクトルレジスタに書
き込む制御回路とを有し、 該複数の演算手段は、それぞれ、少なくとも複
数の特定の演算を実行可能な複数の特定の演算手
段を含み、 該制御手段は、該特定の複数の演算のいずれか
一つを必要とする命令のために、該特定の複数の
演算手段の内の一つを選択し、その命令が要求す
る演算の種別を選択された演算手段に通知する手
段を有する。 特に具体的には、該制御手段は、該特定の複数
の演算のいずれか一つを必要とする命令のため
に、該複数の演算手段の内、先行する命令により
使用中でない一つの演算手段を選択する。 この特定の演算手段が実行する上記複数の演算
として、加算及び乗算のように頻繁に使用される
演算を用いれば、これらの演算は、複数の演算手
で実行可能なため、同じ演算を要求する複数の命
令をこれらの特定の演算手段の異なるものを利用
して並行に実行出来る。しかも、これらの得点の
演算器は、特定の複数の演算を実行できるので、
演算器の数は、単独の演算を実行する演算器を多
数設けた場合より少ない。従つて、これらの特定
の演算器とベクトルレジスタとを接続するスイツ
チ回路がそれほど複雑にならない。 〔発明の実施例〕 以下、本発明を実施例を参照して詳細に説明す
る。 概略装置構成 第1図において主記憶制御ユニツトU1は命令
読出しユニツトU2、メモリ・リクエスタU1
0,U11からのメモリ要求(ベクトルデータの
読出しまたは格納およびベクトル命令の読出し)
に応じて所定の動作を行なう。 命令読出しユニツトU2は、主記憶制御ユニツ
トU1に対し、信号線l1で命令読出し要求を、
信号線l2で命令アドレスを送出する。主記憶制
御ユニツトU1はこれに応答して、この命令アド
レスで指定される複数の命令を読出し、読出した
命令を信号線l3にそれが有効であることを示す
信号を信号線l4に乗せて返す。 命令読出しユニツトU2は、読出された命令を
命令バツフア(図示せず)に入れ、これらの命令
を一つづつ命令制御ユニツトU3に送る。信号線
l6には命令が、信号線l5には命令有効信号が
のせられる。命令読出しユニツトU2は、命令制
御ユニツトU3から信号線l7によつて、命令送
出の停止が要求されない限り、次々と命令を読出
しては、命令制御ユニツトU3に送りこむ。 命令制御ユニツトU3は、命令を解読し、命令
に応じて、メモリ・リクエスタU10,U11、
ベクトルレジスタユニツトU4、演算器U20,
U21に起動信号他を送出する。 概略動作 (1) 命令実行起動 命令制御ユニツトU3が命令実行を起動すると
きには、信号線l11〜l14に必要なデータを
セツトし、起動信号を線l10にセツトし、メモ
リ・リクエスタU10,U11とベクトルレジス
タユニツトU4、または、演算器U20,U21
とベクトルレジスタユニツトU4に起動をかけ
る。 ここで、命令起動の条件は、必要なメモリ・リ
クエスタU10又はU11または演算器U20は
又はU21が現在使用中でなく、かつベクトルレ
ジスタユニツトU4内にあるベクトルレジスタ
VRの内、命令に必要なレジスタが使用できる状
態にあるということである。 ここで、あるベクトルレジスタが使用可能か否
かは、後述するようにそのベクトルレジスタが現
在使用中か否かとは異なる。使用中でなくても、
使用できないベクトルレジスタもあり、使用中に
もかかわらず使用可能なものもある。 起動条件が満たされていない命令は、起動待ち
命令列に登録し、その後、起動条件を満す命令が
解読されたとき、この解読された命令を先に起動
する。 信号線l11は、実行すべき命令の演算の種
類、たとえば、加算、乗算、ベクトル読出し、ベ
クトル書込み等を指定する命令コードを送出す
る。 信号線l12は、命令が使用するレジスタ番号
を指定する。ここでは、各命令はレジスタを最大
3つ指定可能とする。本実施例では、ベクトルレ
ジスタユニツトU4に8つのベクトルレジスタ
VR0〜VR7が設けられ、同数のベクトルアド
レスレジスタU5、ベクトルアドレス増分レジス
タU6がメモリ・リクエスタ0,1に接続されて
いる。これらのベクトルレジスタ、ベクトルアド
レスレジスタ、ベクトルアドレス増分レジスタに
はそれぞれ番号0〜7,8〜15,16〜23があらか
じめ割りあてられている。 信号線l13は、起動するメモリ・リクエスタ
または演算器の番号を指定する。ここでは信号線
l13は3本で、1本はメモリ・リクエスタを指
定、1本は演算器を指定、もう1本は命令が使用
するメモリ・リクエスタ又は演算器のいずれかの
番号を指定する。メモリ・リクエスタ又は演算器
の数はそれぞれ二つなので、これらの番号を指定
する線は一本でよい。 信号線l14は処理すべきベクトル要素数を指
定する。 メモリ・リクエスタU10,U11、ベクトル
レジスタユニツトU4、演算器U20,U21は
線l10上の起動信号に応答して次の動作を行
う。 () 主記憶からのベクトルデータの読出し このための命令の実行が線l11上の命令コー
ドにより指定されると、たとえばメモリ・リクエ
スタU10は、信号線l12で指定される第2、
第3のレジスタ番号に従つて、ベクトルアドレス
レジスタU5およびベクトルアドレス増分レジス
タU6の各々一つを選択してベクトルアドレスお
よびその増分を内部にセツトする。メモリ・リク
エスタU10は読出しコマンドと、ベクトルアド
レスとアドレス有効信号とをそれぞれ信号線l2
0,l21,l23を介して主記憶制御ユニツト
U1に送る。主記憶制御ユニツトU1はこのベク
トルアドレスで指定されるベクトル要素データを
主記憶(ここでは示されていない)から読出し
て、そのデータFDと、データ有効信号とをそれ
ぞれ信号線l24,l25を介してメモリ・リク
エスタU10に戻す。メモリ・リクエスタU10
は、このデータとデータ有効信号をそれぞれ信号
線l29,l30にのせて、ベクトルレジスタユ
ニツトU4に送出する。ベクトルレジスタユニツ
トU4では、信号線l12により指定された第1
のレジスタ番号のベクトルレジスタ線l29から
入力されたベクトル要素データを格納する。メモ
リ・リクエスタU10はセツトしたベクトルアド
レス増分値に基づきベクトルアドレスを更新し、
更新後のアドレスに基づき、次のベクトル要素デ
ータを同様に読出す。この動作は信号線l14で
指定されたベクトル要素数だけ繰返される。メモ
リ・リクエスタU10は最終ベクトル要素アドレ
スを主記憶制御ユニツトU1に送出するときに、
線l32に最終ベクトルデータ信号を送出する。
主記憶制御ユニツトU1は最終ベクトル要素を出
力するときに線l33にこの信号を送出する。メ
モリ・リクエスタU10は、最終のベクトル要素
のデータ有効信号の送出と同時に、信号線l26
に最終ベクトルデータ信号をのせる。この信号
は、命令制御ユニツトU3に送られて、このメモ
リ・リクエスタU10が空いたことを知らせると
ともに、ベクトルレジスタユニツトU4にも送ら
れ、ベクトルレジスタ書込みの終了制御にも使用
される。ベクトルレジスタの書込み終了は、信号
線l15を経て、ベクトルレジスタユニツトU4
から命令制御ユニツトU3にも知られる。 () 主記憶へのベクトルデータの格納 主記憶へのベクトルデータの格納の命令が実行
される場合も、ベクトルアドレス、その増分は
()と同様にメモリ・リクエスタU10にセツ
トされる。 格納の場合には、ベクトルレジスタユニツトU
4にて信号線l12で指示される番号のベクトル
レジスタから次々とベクトルデータがよみ出さ
れ、信号線l27に乗せられるとともに、データ
有効信号が線l28に乗せられて、たとえばメモ
リ・リクエスタU10に送られる。メモリ・リク
エスタU10はこれらにさらにベクトルアドレス
を付し、書込みコマンド、ベクトルアドレス、ベ
クトル要素データ、データ有効信号をそれぞれ信
号線l20,l21,l22,l23にのせて主
記憶制御ユニツトU1に送る。送るべきベクトル
データ要素が最終要素のときにはさらに、線l3
2に最終ベクトルデータ信号を送出する。主記憶
制御ユニツトU1はさらに主記憶への格納を制御
する。必要な数のベクトル要素の送出がベクトル
レジスタユニツトU4から行なわれると、最終ベ
クトルデータ信号が信号線l31を経てメモリ・
リクエスタU10に送られ、メモリ・リクエスタ
U10は、()の場合と同様、信号線l26に
それをのせて、命令制御ユニツトU3に知らせ
る。 () ベクトル演算 ベクトル演算命令実行のために演算器U20ま
たはU21(ここではU20とする)とベクトル
レジスタユニツトU4に起動がかかつたときに
は、これらは次のように動作する。なお、ここで
は各演算器は種々の命令が必要とする複数種類の
演算を実行可能とする。 ベクトルレジスタユニツトU4は、信号線l1
2で指定される一般には二つのレジスタ番号のベ
クトルレジスタから最初の要素データを読出し、
それぞれのデータを信号線l41,l42にの
せ、データ有効信号を信号線l43にのせて、演
算器U20に送る。演算器U20では2組のベク
トル要素データを線l11上のOPコードに従が
い演算後、その結果と、データ有効信号をそれぞ
れ信号線l45,l46に乗せて、ベクトルレジ
スタユニツトU4に送り返す。ベクトルレジスタ
ユニツトU4では、信号線l12で指定される信
号のベクトルレジスタに結果を格納する。これら
の処理が順次、次の要素データについて行なわれ
る。最後のベクトル要素になると、最終ベクトル
データ信号が、信号線l40を介してベクトルレ
ジスタユニツトU4から演算器U20に送られ、
演算器U20からの最終結果に同期して、信号線
l44により、再びベクトルレジスタユニツトU
4に戻される。この信号は、同時に、命令制御ユ
ニツトU3にも知らされ、演算器の空きおよびベ
クトルレジスタの空きを知らせる。 以上において、ベクトル要素データの転送はマ
シンクロツクに応答してなされるが、ベクトルレ
ジスタユニツトU4は、転送すべき一対のベクト
ル要素データが二つのベクトルレジスタにそろつ
ていないとき、これがそろうまで転送を禁止す
る。したがつて、ベクトル要素の読出しあるいは
格納が間欠的に行なわれる。 なお、メモリ・リクエスタU11,演算器U2
1の構成はそれぞれメモリ・リクエスタ10、演
算器U20と全く同一であり、第1図でプライム
(″)の付けた信号線はこれのないものに応答す
る。 レジスタ 詳細な動作説明に先立ち、以下において必要な
レジスタの形成を以下に述べる。第2図aは、命
令がセツトされる命令レジスタ(Iレジスタ)の
構成を示す。ここで、OPフイールドは命令コー
ドを、R1,R2,R3フイールドはレジスタ番号を
示す。勿論、命令自身この図に示すフイールドを
有する。R1〜R3フイールドによつて示されるレ
ジスタはベクトルレジスタ、ベクトル・アドレス
レジスタ、ベクトルアドレス増分レジスタであ
り、いずれのレジスタが指定されるかは命令の種
類により次のようになる。 () 演算器にて演算を行う命令(加算、乗算
命令等) R1:演算結果ベクトルを格納すべきベクトル
レジスタ番号 R2:演算されるベクトルデータ(被加数、被
乗数等)が格納されているベクトルレジスタ
番号 R3:演算すべきベクトルデータ(加数、乗数
等)が格納されているベクトルレジスタ番号 ここでは、R1,R2,R3フイールドではすべて
異なるベクトルレジスタを指定することとする。 なお、命令によつては、R3フイールドが使用
されない場合がある(転送命令等)。 () 主記憶からデータを読出す命令 R1:データを格納すべきベクトルレジスタ番
号 R2:ベクトルアドレスレジスタ番号 R3:ベクトルアドレス増分レジスタ番号 () 主記憶にデータをストアする命令 R1:データが格納されているベクトルレジス
タ番号 R2:ベクトルアドレスレジスタ番号 R3:ベクトルアドレス増分レジスタ番号 第2図bは演算器U20,U21、メモリ・リ
クエスタU10,U11(以下、これらをまとめ
てリソースとよぶことがある)の制御にかかわる
レジスタ、すなわち、デコードリソースレジスタ
(DSレジスタ)、キユーリソースレジスタ(QSレ
ジスタ)、実行可能リソースレジスタ(ESレジス
タ)、レジスタユニツトリソースレジスタ(RSレ
ジスタ)の形式を示す。ここで、S,A,Nフイ
ールドはそれぞれメモリ・リクエスタの使用演算
器の使用、メモリ・リクエスタまたは演算器の番
号をそれぞれ指定する。なお、DSレジスタ、QS
レジスタにはNフイールドはない。 第2図cはベクトルレジスタの制御にかかわる
レジスタ、すなわち、デコードレジスタ(DGレ
ジスタ)キユーレジスタレジスタ(QSレジスタ)
〜メモリリクエスタレジスタ(MGレジスタ)、
レジスタユニツトレジスタレジスタ(RGレジス
タ)の形式を示す。ここでVi(i=1〜3)フイ
ールドはWi,GNiフイールドに有効データがあ
るかどうかを指定するフイールド、Wiは、次の
GNiのフイールドで指定されたベクトルレジスタ
が書込みに使用されるか、読出しに使用されるか
を指定するフイールドで書込み、読出しのときに
それぞれ“1”又は“0”となり、GNiフイール
ドには命令のRiフイールドそのものがセツトさ
れる。なお、MGレジスタはGN1,GN3フイー
ルドのみを持つ。 第2図dはリソースの状態を制御するリソース
状態語レジスタ(RSSWレジスタ)の形式を示
す。ここで、S0,S1フイールドはそれぞれメモ
リ・リクエスタU10,U11が使用中かどうか
を示し、A0,A1フイールドはそれぞれ演算器U
20,U21が使用中かどうかを示す(使用中の
とき“1”とする)。 第2図eはベクトルレジスタの状態を制御する
レジスタ状態語レジスタ(RGSWレジスタ)の
形式を示す。ここでW0〜W7フイールドはそれぞ
れベクトルレジスタVR0〜VR7が書込みのた
めに使用中かどうかを示し、R0〜R7フイールド
はそれぞれベクトルレジスタVR0〜VR7が読
出しのために使用中かどうかを示す(使用中のと
き“1”とする)。 命令制御ユニツトの詳細 以下に、第1図に述べた各ユニツトの詳細を説
明する。なお、主記憶制御ユニツト(第1図のU
1)、命令読出しユニツト(第1図のU2)は、
二つのメモリ・リクエスタU10,U11からの
アクセス要求に応答し、かつ、これらのリクエス
タから同時にアクセス要求がなされたときには、
その一方を優先して主記憶をアクセスするもので
あり、従来、実現されているものと同等なので、
ここでは説明しない。また、フリツプフロツプ、
レジスタへのタイミング入力は省略する。制御信
号の入つていない、フリツプフロツプ、レジスタ
は常にあらかじめ定められたタイミングによつて
入力がセツトされるとする。 第3図を参照するに、命令読出しユニツトU2
にて読出されたベクトル命令と、その命令に対す
る有効信号がそれぞれ線l6,l5を介して送ら
れて来、命令レジスタ(Iレジスタ)r301に
命令がセツトされ、命令有効信号がフリツプフロ
ツプf301にセツトされる。命令有効信号はレ
ジスタIR,r301へのセツト信号としても使
用される。命令制御ユニツトU3が線l7にて、
命令送出停止要求を送出しない限り、命令読出し
ユニツトU2から次々と命令が送られてくる。こ
の間隔は、Iレジスタr301の命令が、デコー
ド命令レジスタ(DIレジスタ)r302に移さ
れるとすぐ、次の命令が入力されるように制御さ
れる。Iレジスタr301にセツトされた命令
は、4つのルートに分けて転送される。DIレジ
スタr302にはOPフイールドが転送される。
このときフリツプフロツプf301の出力が、
DIレジスタr302のセツトを制御するととも
に、フリツプフロツプf302へもアンドゲート
g307を経て転送される。ここでアンドゲート
g307には、フリツプフロツプf301の出力
のほかに指定例外検出回路b316の出力が入力
されており、この回路b316はIレジスタr3
01にセツトされているベクトル命令のR1〜R3
フイールドをチエツクし、レジスタ指定例外がな
い場合にのみ、“1”を出力する。この結果フリ
ツプフロツプf302に命令有効信号がセツトさ
れる。レジスタIR,r301内の命令はまた、
デコーダb301へ送られ、そのOPフイールド
により、使用するリソースが判別されて、その結
果がデコードリソースレジスタ(DSレジスタ)
r303にセツトされる。DSレジスタr303
は第2図bに示すごとくS,Aフイールドを有
す。但しNフイールドはない。デコーダb301
はこのOPフイールドがメモリ・リクエスタU1
0又はU11を使用するもののときは、Sフイー
ルドに1を入力し、又この命令が演算器U20又
はU21を使用するもののときはAフイールドに
1を入力する。DSレジスタr303のこれらの
データのセツトにも、アンドゲートg307の出
力が使用される。Iレジスタr301の命令はさ
らにデコーダb303へも送られ、そのOPコー
ド、R1,R2,R3フイールドの内容ががデコード
されて、その結果がデコードレジスタレジスタ
(DGレジスタ)r305にセツトされる。DGレ
ジスタr305は第2図cに示すようにIレジス
タr301にセツトされている命令が使用するベ
クトルレジスタの番号を示すフイールドGNi(i
=1〜3)、そのレジスタの用途が読出し用か、
書込み用かを示すフイールドWi(i=1〜3)お
よびこれらのフイールドが有効か否かを示すフイ
ールドVi(i=1〜3)を有し、デコーダb30
3はIレジスタr301の命令を解読してれらの
フイールドの情報を出力する。すなわち、命令の
OPコードにより、命令のR1〜R3のフイールドが
レジスタ指定として有効か否かがあらかじめ定め
られているので、デコーダb303はOPコード
によりViを定める。また、有効と判定されたレ
ジスタフイールドRiが書込み用か否かもOPコー
ドによりあらかじめ定められているので、デコー
ダb303はOPコードをみて、ピツトWiを定め
ることができる。デコーダb303はフイールド
Riの内容をGNiフイールドに入力する。こうし
て、DSレジスタr303への入力が定まる。DG
レジスタr305へのセツト制御にも、アンドゲ
ートg307の出力が使用される。 以上の説明から明らかなとおり、DSレジスタ
r303とDGレジスタr305にセツトされた
デコード結果はDIレジスタr302にセツトさ
れた命令コードとともに同一の命令に対するもの
であり、以下では、これらのレジスタにセツトさ
れたデータの各々を命令と呼びあるいはこれらを
まとめてDIレジスタr302内の命令と呼ぶこ
とがある。DIレジスタr302;DSレジスタr
303;DGレジスタr305に命令がセツトさ
れると、次はリソースの起動の可否がチエツクさ
れる。 命令キユーレジスタ(QIレジスタ)q301
は、実行待ちの命令のOPコードをDIレジスタr
302から受けとりストアするための三つのレジ
スタQIR0〜QIR2からなる。同様にキユーリソ
ースレジスタ(QSレジスタ)q302はこれら
三つのレジスタQIR0〜2内のOPコードに対す
るリソース使用要求をDSレジスタr303から
受けとり、ストアする三つのレジスタQSR0〜
2からなり、キユーレジスタレジスタ(QGレジ
スタ)q303は、レジスタQIR0〜2内のOP
コードに対するベクトルレジスタ使用要求をDG
レジスタR,r305から受けとり、ストアする
三つのレジスタQGR0〜3からなる。結局、レ
ジスタq301〜q302により三つの実行待ち
の命令がストアされることになる。以下では簡単
化のためにこれらの三つのキユーレジスタをまと
めて命令キユーレジスタあるいは命令キユーレジ
スタq301と呼ぶことがある。 DIレジスタr302に上述のごとく、新たに
セツトされた命令に対するリソースの起動可否に
これらの命令キユーレジスタ内にすでに命令がス
トアされているか否か等に依存して異なる基準に
て判断される。 すなわち、次の場合がある。 (a) 命令キユーレジスタに命令が入つていない場
合。 (a−1) DIレジスタr302内の命令に
対してすぐに起動がかけられる場合。 (a−2) DIレジスタr302内の命令に
対してすぐに起動がかけられず、命令キユー
トレジスタに命令を入れなければならない場
合。 (b) 命令キユーレジスタに命令が入つている場
合。 (b−1) 命令キユーレジスタ内の命令を起
動する場合。 (b−2) 命令キユーレジスタに命令がある
にもかかわらず、DIレジスタr302にある
命令を起動する場合。 各々の場合の装置動作を以下に述べる。 (a−1) 命令キユーレジスタq301中に命
令がなくDIレジスタr302内の命令を起動
する場合。 これは、DIレジスタr302内の命令が必要
とするリソース(演算器またはメモリ・リクエス
タ)およびベクトルレジスタがともに使用可能で
あるときに生じる。 本実施例では各リソースは、ある時期には一つ
の命令によつてものみ使用可能に構成されてお
り、したがつて、リソースが使用可能か否かはリ
ソースが使用中でないかあるいは使用中かにより
きまる。 リソースの空きの状況の判断は、次のように行
なう。概略的には、DSレジスタr303にて指
定される要求リソースと、RSSWレジスタr30
4にて管理しているリソースの状態をリソース使
用チエツク回路b305がチエツクし、要求リソ
ースが空いているかどうかを線l310に、空い
ているリソース番号をl309に出力する。詳細
を第5図を参照して説明する。 DSレジスタr303中のSフイールドr30
31の出力は、アンドゲートg320,g321
に入力され、これらのアンドゲートg320,g
321にはそれぞれ、さらにRSSWレジスタr3
04中のS0フイールドr3041,S1フイール
ドr3042の出力がそれぞれ反転ゲートg33
5,g336を介して入力されている。したがつ
て、アンドゲートg320,g321の出力はそ
れぞれメモリ・リクエスタ0と1の使用が要求さ
れ、かつメモリ・リクエスタ0と1がそれぞれ空
きのときに“1”となる。アンドゲートg32
0,g321の出力はオアゲートg328に入力
される。したがつて、オアゲートg332の出力
は、使用要求されたメモリ・リクエスタ0又は1
のが空いているとき“1”となる。また、アンド
ゲートg320,g321の出力はエンコーダb
320にも入力され、使用可能なメモリ・リクエ
スタ番号が出力される。つまり、アンドゲートg
320の出力が“1”のときにはアンドゲートg
321の出力によらず、エンコーダb320の出
力は“0”(メモリ・リクエスタ0の空きを示
す)、アンドゲートg320の出力が“0”、アン
ドゲートg321の出力が“1”のときにはエン
コーダb320の出力は“1”(メモリ・リクエ
スタ1の空きを示す)になる(本実施例では、メ
モリ・リクエスタは2つしかないので、エンコー
ダの出力線は1本である)。アンドゲートg32
0,g321の出力がともに0のときにはエンコ
ーダb321の出力はいずれの値でもよい。同様
に、演算器の空きの状態についてもDSレジスタ
r303のAフイールドr3032の出力と、
RSSWレジスタr304のA0,A1フイールドr
3043,r3044の出力とから反転ゲートg
337,g338、アンドゲートg322,g3
23、オアゲートg329、エンコーダb321
によつてチエツクされ、命令で演算器の使用要求
がなされ、使用要求が出された演算器0又は1が
あいていれば、オアゲートg329の出力が
“1”に演算器番号がエンコーダb321から出
力される。オアゲートg328,g329の出力
は、オアゲートg332に入力され、この出力線
l310は要求されたリソースが空いていること
を指示する。一方、エンコーダb320,b32
1の出力はセレクタS310にていずれかが選択
されて線l3093にのせられ、オアゲートg3
28,g329の出力線l3091,l3092
とあわせて線l309として出力される。ここで
は、オアゲートg329の出力によりセレクタS
310を制御することにより、演算器の使用要求
がなされ、かつこれが空きのときには、演算器番
号がそれ以外のときにはメモリ・リクエスタ番号
が選択されるとした。なお、線l309の内容は
セレクタS302で選択され、線l320に出力
される。線320はメモリ・リクエスタの空きを
示す信号線3201、演算器の空きを示す信号線
3202、メモリ・リクエスタ又は演算器の番号
を示す信号線3203からなり、それぞれに線l
3091〜l3093の信号がセレクタS302
により選択的に出力される。セレクタS302は
線l309とl311を入力線l321が“0”
か“1”かに応じて選択するもので、今の場合は
後述するように入力線l321は“0”である。
こうして線l320に要求リソースの内、空いて
いるリソース番号が出力される。線l320は、
デコーダb302にも入力され、RSSWレジスタ
Y304の各ビツトのセツトに使用される。ここ
で、デコーダb302は、メモリ・リクエスタ番
号のデコーダb3022と、演算器番号のデコー
ダb3021とから成り、それぞれ、デコード有
効端子Eを有していて、Eが“1”のときのみデ
コード入力信号をデコードする。デコーダb30
21のデコード有効端子Eには線l320のう
ち、演算器の空きを示す線l3202がデコーダ
される入力信号端子には番号を示す線l3203
が接続されている。同様に、デコーダb3022
のデコード有効端子Eには、線l320のうち、
メモリ・リクエスタの空きを示す線l3201
が、デコーにされる信号としては、番号を示す線
l3203が接続されている。デコーダb302
1,b3022の出力は対応したRSSWレジスタ
r304を構成する4つのフイールドr3041
〜r3044(これらはいずれもフリツプフロツ
プからなる)のセツト端子Sに接続され、線l3
201,l3203から入力される空きのリソー
ス番号に対応した、S0,S1,A0,A1の各フイー
ルドのいずれかがセツトされる。こうして、回路
b305によりリソース使用チエツクがなされる
とともに、チエツク結果に応じて、RSSWレジス
タr304が更新される。 次に、第3図に戻つてDIレジスタr302中
にある命令が使用するベクトルレジスタ使用に関
するチエツクについて述べる。第1のチエツク
は、DGレジスタr305中に示される使用要求
ベクトルレジスタ番号、使用形態(読出し/書込
み)と、RGSWレジスタr306中にあるベク
トルレジスタ使用状況により、レジスタ使用チエ
ツク回路b307がDIレジスタr302内の命
令が要求するベクトルレジスタが現在使用可能か
否かをチエツクすることである。今の場合、命令
キユーレジスタq301内に命令がないと仮定し
ている。しかし一般的には命令キユーレジスタq
301にリソース空き待ちの命令が蓄えられてお
り、DIレジスタr302中にある命令を命令キ
ユーレジスタq301にすでに貯えられた命令を
追越して実行したとき、ベクトルレジスタ使用順
序上の矛盾がないかをレジスタ競合チエツク回路
b309〜b311にてチエツクする必要があ
る。これが第2のチエツクである。なお、本実施
例ではこの第1、第2のチエツクはベクトルレジ
スタのみについて行ない、ベクトルアドレスレジ
スタU5、ベクトルアドレス増分レジスタU6に
ついては行なわない。本実施例では、簡単化のた
めに、これらのレジスタの内容の変更はなく、二
つのメモリ・リクエスタが同時にこれらのレジス
タを読出せるように構成されている(詳細後述)。
このため、これらのレジスタ使用の可否について
チエツクする必要がない。 第6a図は、レジスタ使用チエツク回路b30
7の詳細をDGレジスタr305とRSSWレジス
タr306を含めて表わしたものである。DGレ
ジスタr305中のRIフイールドr3051と、
RGSWレジスタr306の出力に基つき、第1
レジスタ使用チエツク回路b3071は第6図b
に示す場合のみレジスタ使用可と判断する。すな
わち、レジスタの使用要求がベクトルレジスタに
対する書込みのとき(V1=W1=1 GN1<8)
には、番号GN1のベクトルレジスタが未使用の
とき(Wi=Ri=0,i=GN1)、使用要求がベ
クトルレジスタの読出しのとき、その番号GN1
のベクトルレジスタが未使用または書込み中のと
き(Ri=0,i=GN1)にのみ使用可と判断し、
アンドゲートg343に“1”を出力する。V1
ビツトが“0”のときには、ベクトルレジスタが
使用可とし、この場合にもアンドゲートg343
に“1”を出力する。同様に、DGレジスタr3
05のR2フイールドr3052,R3フイールド
r3053についてもそれぞれ第2、第3使用チ
エツク回路b3072,b3073にて全く同様
の基準でチエツクされ、アンドゲートg343に
結果が入力される。こうして、R1,R2,R3フイ
ールドが指定するベクトルレジスタがいずれも使
用可のときに、線l313にベクトルレジスタ使
用可を示す信号“1”が出力される。 なお、レジスタ使用チエツク回路b305は、
DIレジスタr302内の命令が必要とするベク
トルレジスタが先行する命令により現在書込み中
であつても、そのレジスタが使用可能と判断する
点に特徴がある。これは、後述するように本実施
例においては、ベクトル要素を書込み中のベクト
ルレジスタに対してこの書込み動作に並行して読
出し動作を行えるように、ベクトルレジスタのチ
エイニングがなされるからである。 第7図aはレジスタ競合チエツク回路b309
〜b311の詳細を示す。レジスタ競合チエツク
回路b309は第1〜第3のレジスタ競合チエツ
ク回路b3091〜b3093からなり、それぞ
れによりDGレジスタr305のR1〜R3フイー
ルドr3051〜r3053にて指示されるベク
トルレジスタ使用要求とQGレジスタq303に
て指示されるベクトルレジスタ使用要求の競合を
チエツクする。これらの回路の出力は競合がない
ときに“1”となる(詳細後述)。アンドゲート
g353は、これらのチエツク回路b3091〜
b3093の出力がいずれも“1”をオアゲート
g359を介して線l315に出力する。一方オ
アゲートg359には、反転ゲートg356の出
力も入力されている。したがつて、反転ゲートg
356への入力線l325が“0”のときも、線
l315に競合なしを示す信号“1”が出力され
るようになつている。レジスタ競合チエツク回路
b310,b311も回路b309と同じ構成を
有し、アンドゲートg354,g355又は、反
転ゲートg357,g358、オアゲートg36
0,g361により、線l316,l317上に
競合チエツク結果を出力する。 線l323〜l325は、フリツプフロツプf
304〜f306(第3図)に接続されている。
これらのフリツプフロツプは、命令キユーレジス
タq301(第7図)中のレジスタQIR0〜QIR
2の各々に対応して設けられ、これらのレジスタ
内に命令が存在するときにセツトされる(詳細後
述)。 今の場合には、命令キユーレジスタq301に
命令はないとしているので、これらのフリツプフ
ロツプはセツトされておらず、その出力線l32
3,l324,l325は“0”となつている。
したがつて、線l315〜l317の出力はすべ
て1である。こうして命令キユーレジスタq30
1中に命令がない場合には競合チエツク回路b3
09〜b311の出力とは無関係にベクトルレジ
スタの競合がないことを示す信号を作り出してい
る。 再び第3図に戻つて説明する。レジスタ競合チ
エツク回路b309〜b311からの出力線l3
15〜l317は、上記に述べたように“1”に
なつている。したがつてこれらを入力とするアン
ドゲートg301の出力l322は1となつてい
る。今の場合にはレジスタ使用チエツク回路b3
07の出力線l313も、ベクトルレジスタが使
用することができるとの前提から“1”になつて
おり、したがつてアンドゲートg302の出力も
“1”である。また、リソース使用チエツク回路
b305の出力線l310も、リソースが使用す
ることができるとの前提から“1”になつてい
る。さらに、DIレジスタr302に有効な命令
があることを示すフリツプフロツプf302の出
力線l302も“1”となつている。後述のよう
に、アンドゲートg305の出力は“0”のた
め、反転ゲートg310の出力は“1”となつて
いる。このような状態のとき、アンドゲートg3
04の出力も“1”となり、従つて、オアゲート
g306の出力線l330を介してフリツプフロ
ツプ、f303がセツトされる。このフリツプフ
ロツプf303はタイミングのみでセツト/リセ
ツトされるDタイプフリツプフロツプで、命令起
動信号STを線l10により、ベクトルレジスタ
ユニツトU4、メモリ・リクエスタU10,U1
1,演算器U20,U21に送出する(第1図参
照)。また、命令キユーレジスタq301中に命
令がないことから、レジスタQIR0〜OIR2に命
令があるときに“1”がセツトされる対応のフリ
ツプフロツプf304〜f306の出力はいずれ
も“0”であり、その出力線l323〜l325
が入力されているセレクタS303の出力もセレ
クタS303の選択動作(詳細後述)に無関係に
“0”となつている。従つて、この出力線l32
6が入力されているアンドゲートg305の出力
線l321も“0”となる。セレクタS301,
S302,S304は、それぞれDIレジスタr
302の出力線l303上のオペコード、リソー
ス使用チエツク回路b305の出口線l309上
のリソース使用要求(リソース種類、番号)およ
びDGレジスタr305の出力線l307上のベ
クトルレジスタ使用要求(レジスタ番号、使用形
態)を選択して、それぞれEIレジスタr308、
ESレジスタr309、EGレジスタr312にセ
ツトする。セツトは線l330により指示され
る。なお、ベクトル長レジスタ(VLR)r30
7には、あらかじめ別の手段(図示せず)によつ
て処理すべきベクトル長(VL)が格納されてい
るとする。これらのレジスタの内容は、線l11
〜l14によつて、ベクトルレジスタユニツトU
4、各リソースU10,U11,U20,U21
に送出される。これにより、命令実行の起動が指
令されたことになる。 なお、ここでは、DIレジスタr302中の命
令はすぐに起動可能であるので命令キユーレジス
タq301に入れる必要はない。今の場合、アン
ドゲート、g304の出力が“1”であることか
ら、反転ゲートg308の出力は“0”となり、
この出力が入力されているアンドゲートg303
の出力線l327が“0”となつている。こうし
て、この信号線l327により制御される命令キ
ユーレジスタq301へのDIレジスタr302
の内容の入力がおさえられる。また、同様に、レ
ジスタq302,q303への新たな入力も禁止
される。命令キユーレジスタg301中に命令が
存在することを示すフリツプフロツプf304〜
f306へのセツト、次にセツトすべき命令キユ
ーレジスタg301中の場所を示すインポイン
タ、IP,r310等の更新を抑止する。 また、命令の起動にともない、使用するリソー
ス状態を管理するRSSWレジスタr304、ベク
トルレジスタの状態を管理するRGSWレジスタ
r306を変更する必要がある。このうち、
RSSWレジスタr304の変更については、第5
図の説明において述べた。RGSWレジスタr3
06の状態の変更については、次のようにする。
すなわち、セレクタ、S304により選択された
DGレジスタr305の出力が、デコーダb30
4に送られて、そこでベクトルレジスタの番号、
読出し、書込み等が解読され、対応するRGSW
レジスタr306中のビツトが“1”にセツトさ
れる。すなわち、DGレジスタr305のフイー
ルドRi(i=1〜3)ごとに、Vi=1であること
を条件に、Wiが1か否かに応じたRGSWレジス
タr305のWj(j=GNi)又はRjを1にする。
また、RGSWレジスタは後述するように、ベク
トルレジスタの書込み又は読出しが終了したこと
を示す信号がベクトルレジスタユニツトU4から
線l15,l16を介して入力されたとき、この
信号で指定されるフイールドRj又はWjをリセツ
トする。 (a−2) 命令キユーレジスタq301内に命
令がなく、DIレジスタr302内の命令に対
して起動がかけられず、これを命令キユーレジ
スタq301に入れる場合。 これは、DIレジスタr302中にある命令が
必要とするリソース(演算器または、メモリ・リ
クエスタ)またはベクトルレジスタが使用可能で
ないときに生じる。 DIレジスタr302内の命令が使用するリソ
ースおよびベクトルレジスタの使用状況のチエツ
クについては、第5〜7図に従つて、(a−1)
の説明にて述べた通りである。今の場合リソース
およびベクトルレジスタの使用状況のチエツクの
結果、DIレジスタr302中にある命令が要求
するリソースが使用中のため、リソース使用チエ
ツク回路b305の出力l310が“0”にな
る。また、DIレジスタr302内の命令が要求
するベクトルレジスタが使用不可の場合には、レ
ジスタ使用チエツク回路b307の出力l313
が“0”になる。いずれの場合もアンドゲートg
304の出力は“0”、従つて、反転ゲートg3
08の出力は“1”となる。また、命令キユーレ
ジスタ中に命令がないので、(a−1)の説明で
も述べたように、セレクタS303の出力線l3
26は“0”であるから、アンドゲートg305
の出力は“0”である。このため、フリツプフロ
ツプf303は何もセツトされず、命令起動信号
STは線l10に出力されない。反転ゲートg3
08の出力が“1”であり、かつフリツプフロツ
プf302の出力も“1”であるのでアンドゲー
トg303の出力線l327が“1”となる。こ
れによつて、命令を命令キユーレジスタに入れる
動作が、次のように行なわれる。 命令キユーレジスタq310の詳細を第4図に
示す。第4図において、命令キユーレジスタへの
セツト信号Sが線l327にセツトすべきレジス
タの番号として、インポインタ(IP)レジスタ
r310の出力IPが線l328を介して送られ
てくると、それぞれデコーダb330のデコード
有効端子Eおよびデータ端子に入力され、デコー
ドされる。その結果、線l327が“1”のとき
に線l328の内容がデコーダされ、その結果、
指定されたレジスタr350〜r352のいずれ
かに、入力線(第3図における線l303,l3
05、またはl307)の内容がセツトされる。
以上が命令キユーレジスタq301へのセツトで
ある。なお、後に述べる命令キユーレジスタの読
出し動作についてもここで述べておく。読出しと
は、アウト・ポインタ(OP)レジスタr311
(第3図)の出力OPにより指定される番号のレジ
スタr350〜r351の内容を出力すること
で、これは、各レジスタr350〜r352の出
力が接続されているセレクタS350の選択制御
をOPレジスタr311の出力線l329により
行なうことで実現できる。 なお、QSレジスタq302はレジスタr35
0〜352が必要とするビツト数の違いを除い
て、命令キユーレジスタq301と同一構造であ
る。QGレジスタq303は、レジスタr350
〜r352が必要とするビツト数の違いの他に、
レジスタr350〜r352からセレクタS35
0を介さずに直接出力する信号線がさらに別に設
けられている点で命令キユーレジスタq301と
異なるのみである。 再び第3図に戻つて説明する。こうして命令コ
ード、その命令が使用するリソースの種類等、お
よびレジスタの番号等をそれぞれ命令キユーレジ
スタq301〜q303に登録すると、これらの
命令キユーレジスタに命令が存在することを示す
フリツプフロツプf304〜f306のうち、今
回登録したレジスタQIRi(i=0,1or2)に対応
するフリツプフロツプをセツトする。この動作
は、線l327が“1”となり、これがデコーダ
b312のデコード有効端子に入力され、データ
端子に入力された(出力線l328)上のIPで
指定される番号のフリツプフロツプf304〜f
306のいずれかがデコーダb312によりセツ
トされることにより実現される。以上が終了する
と、IPレジスタr310が更新される。IPレジ
スタr310の出力線l328は3進カウンタb
314に入力されて、次のIPの値が作成され、
線l327が“1”となると、IPレジスタr3
10に、次のポインタの値がセツトされる。3進
カウンタb314は、入力が0,1,2に従つ
て、1,2,0を出力するものである。 なお、命令キユーレジスタ(ここでは3つまで
の命令がキユーイングできる)のすべてに命令が
入つてしまうと、それ以上命令を入れることはで
きないので、命令読出しユニツトU2(第1図参
照)からの命令送出を抑止する必要がある。これ
は、命令キユーレジスタ中に命令が存在すること
を指定するフリツプフロツプf304〜306の
出力をアンドゲートg309に入力し、この出力
線l7を命令読出しユニツトU2に送出すること
により実現される。 以上のごとくにして、起動待ちの命令が、それ
らの解読順序にしたがつて、命令キユーレジスタ
q301にストアされる。 (b−1) 命令キユーレジスタにある命令を起
動する場合。 これは、命令キユーレジスタq301内に命令
があり、これが必要とするリソースおよびベクト
ルレジスタが使用可能のときに生じる。 これは、DIレジスタr302中の命令の有無
あるいはその命令の起動可否に関係しない。この
場合、しにレジスタr302中に命令がある場合
にはその命令は実行されないので(a−2)に述
べた手順に従つて、DIレジスタr302中の命
令が命令キユーレジスタq301に登録される。
以下では、命令キユーレジスタq301から命令
をとり出して起動する処理について述べる。 命令キユーレジスタq301から命令を取出し
て起動する処理は、DIレジスタr302中の命
令を起動する場合とよく似ている。すなわち、命
令キユーレジスタr301中のアウトポインタレ
ジスタr311で指定される命令と、DIレジス
タr302中の命令を入れ替えて考えればよい。 命令を起動するには、必要なリソースおよびベ
クトルレジスタが使用可能状態にあることが必要
であることは(a−1)でも述べた。 命令キユーレジスタq301内の命令が使用す
るリソースの空きのチエツクは、第3図のリソー
ス使用チエツク回路b306で、ベクトルレジス
タ使用可否のチエツクは、同じく第3図のレジス
タ使用チエツク回路b308にて行なわれる。 リソース使用チエツク回路b306の詳細は、
第5図に示した通りチエツク回路b305と同じ
である。アウトポインタ、OPによつて選択され
た命令キユーレジスタq301中の命令が要求す
るリソースの種類は、QSレジスタq302から
線l318を介して入力される。一方。リソース
の状態がRSSWレジスタr304から入力されて
いる。これらが、アンドゲートg324〜g32
7によつて比較されて、リソースの空きがチエツ
クされ、その結果、オアゲートg330,g33
1,g333、エンコーダb322,b323、
セレクタS311等によつて最終的にはリソース
が空いていることを示す線l312と、リソース
の種類、番号を示す線l311に結果がのせられ
る。以上の動作は、DSレジスタr303と
RSSWレジスタr304とのチエツクにより、線
l310とl309に結果がのせるリソース使用
チエツク回路b305の動作とまつたく同一なの
で、詳細の説明は省く。 レジスタ使用チエツク回路b308の構成はチ
エツク回路b307と同じであり、その動作は、
第6図aにおいて、DGレジスタr305の出力
のかわりに、第3図におけるQGレジスタq30
3の出力線l319を接続した場合のb307の
動作と同一である。チエツクの結果は、レジスタ
使用チエツク回路b308の出力線l314(第
3図)に乗せられる。 再び第3図に戻つて説明する。リソース使用チ
エツク回路b306からリソースに空きがあるこ
とを示す信号線l312に“1”が出力され、そ
のときのリソースの種類、番号が線l311に出
力され、さらに、レジスタ使用チエツク回路b3
08からベクトルレジスタが使用可能であること
を示す信号線l314に“1”が出力され、か
つ、フリツプフロツプf304〜f306の出力
をぞれぞれアウトポインタOPが0〜2のときに
選択するセレクタS303の出力線l326が
“1”(アウトポインタで指定される、命令キユー
レジスタ内のレジスタOIRiに起動可能な命令が
あることを意味する)になると、アンドゲートg
305の出力線l321が“1”になる。この出
力線l321が“1”になると、セレクタS30
1,S302,S304はそれぞれ命令キユーレ
ジスタq301の出力線l304、リソース使用
チエツク回路b306からの出力線l311およ
びQGレジスタq303からの出力線l319の
内容を選択してそれぞれEIレジスタr308、
ESレジスタr309、EGレジスタr312に命
令コード、リソースの種類と番号およびレジスタ
番号および使用形態をセツトする。したがつて、
命令キユーレジスタq301内の命令の起動可能
な場合には、DIレジスタr302内の命令が起
動可能か否かに無関係に、前者の命令が起動され
ることが分かる。また、線l321はオアゲート
g306を介してフリツプフロツプf303をセ
ツトし、ベクトルレジスタユニツト、各リソース
に命令の起動信号STを線l10を介して送出す
る。オアゲートg306の出力線l330は、
EIレジスタr308、ESレジスタr309、EG
レジスタr312のセツトの制御にも使用され
る。命令起動については、(a−1)の説明とま
つたく同様である。さらに、線l321上の
“1”の信号は、反転ゲートg310により、ア
ンドゲートg301を閉じる。その結果、反転ゲ
ートg308の出力が“1”となり、DIレジス
タr302に命令が入つている場合(フリツプフ
ロツプf302が“1”の場合)には、線l32
7を“1”としてその命令を命令キユーレジスタ
に登録するように制御する。この処理は(a−
2)に述べたとおりである。また、線l321
は、デコーダb313のデコード有効端子にも接
続され、デコーダb313はアウトポインタ、
OPで指定されるフリツプフロツプf304〜f
306のいずれかをリセツトする。これは、OP
で指定される命令キユーレジスタ中の命令が取出
され、起動されるためである。最後に、線l32
1はOPレジスタr311のセツトに使用され、
アウトポインタが更新される。この更新の制御
は、インポインタの場合と同様、3進で行なわれ
る。3進値の生成は回路b314と同じ構成の回
路b315にて行なわれる。 (b−2) 命令キユーレジスタ中に命令がある
にもかかわらず、DIレジスタr302の命令
が先に起動される場合。 これは、次のような場合に生じうる。 (1) 命令キユーレジスタ中の命令が要求するリソ
ースまたはベクトルレジスタが使用不可能で、
この命令を起動することができない。かつ、 (2) DIレジスタr302中にある命令が要求す
るリソース又はベクトルレジスタが使用可能で
あり、かつ、命令キユーレジスタq301中に
蓄えられている命令と、DIレジスタr302
中にある命令間でベクトルレジスタの競合がな
い。 命令キユーレジスタq301中にある命令を追
越して、DIレジスタr302中の命令を先に起
動するには、レジスタの競合がないこと、すなわ
ち、命令キユーレジスタq301中にある命令に
て変更するベクトルレジスタを、DIレジスタr
302中の命令が使用しないこと、また命令キユ
ーレジスタq301中にある命令にて読出すべベ
クトルレジスタについては、DIレジスタr30
2中の命令が変更しないことが必要である。命令
キユーレジスタ中の命令で読出すのみに用いられ
るベクトルレジスタを、DIレジスタ中の命令で
読出すことについては、命令の追越しをしてもレ
ジスタの読出す順序が逆転するだけなので、問題
はない。以上述べたレジスタ競合チエツクを行な
う回路が、第3図の回路b309〜b311であ
る。この詳細を第7図に基づき説明する。 第7図の回路の詳細は、回路b3091〜b3
093の詳細を除き、すでに説明した。 第1レジスタ競合チエツク回路b3091は
DGレジスタr305のR1フイールドr3051
とQGR0レジスタg3030のR1〜R3フイール
ドとを比較し、次の条件のいずれかが満たされな
い場合に、レジスタ競合なしを示す信号“1”を
アンドゲートg353に出力する。 (1) DCレジスタのV1=1,W1=0のとき、レ
ジスタQGR0の一つのフイールドRjにおいて Vj=Wj=1,GNj=DGレジスタのGN1 (2) DGレジスタのV1=1,W1=1のとき、レ
ジスタQGR0の一つのフイールドRjにおいて Vj=1,GNj=DGレジスタのGN1同様に、
DGレジスタのR2フイールドr3052、R3フ
イールドr3053についてそれぞれ第2、第3
レジスタ競合チエツク回路b3092,b309
3が同様のチエツクをする。 一方、命令キユーレジスタ中に実行可能な命令
が入つていることを示すフリツプフロツプf30
4(第3図参照)の出力が線l323を介してア
ンドゲートg353に入力され、アンドゲートg
353の入力がすべてが“1”のとき、その出力
がオアゲートg356を経て、線l315に乗せ
られる。こうして、DGレジスタr305で指定
されるベクトルレジスタが、レジスタQGR0中
にて指定されるいずれのベクトルレジスタとも競
合しないか否かがチエツクされる。これと同様
に、DGレジスタr305で指定されるベクトル
レジスタと、レジスタQGR1で指定されるベク
トルレジスタの競合関係がチエツク回路b310
で、DGレジスタr305で指定されるベクトル
レジスタと、レジスタQGR2で指定されるベク
トルレジスタの競合関係がチエツク回路b311
でチエツクされ、その結果がそれぞれアンドゲー
トg354,g355を経て、オアゲートg36
0,g361の出力線、l316,l317にの
せられる。 DIレジスタr302中にある命令が要求する
リソースおよびレジスタの使用状況のチエツクに
ついては、(a−1)の処理の説明にて詳細を述
べたとおりである。 チエツクの結果、第3図において、リソース使
用チエツク回路b305の出力として、線l31
0にリソースが空いていることを示す“1”の信
号が、線l309にリソースの種類、番号がレジ
スタ使用チエツク回路b307の出力として、線
l313にベクトルレジスタが使用可能であるこ
とを示す“1”の信号が出力される。一方、命令
キユーレジスタ中のアウトポインタOPで指定さ
れる命令が使用するリソースまたはベクトルレジ
スタのいずれか一方または双方とも使用可能でな
いので、リソース使用チエツク回路b306の出
力線l312または、レジスタ使用チエツク回路
b308の出力線l314の少くともいずれか一
方は“0”になつている。また、命令キユーレジ
スタに命令が存在することから、セレクタS30
3の出力線l326は“1”に、DIレジスタr
302に命令が存在することから、線l302も
“1”になつている。 このような状況のもとで、アンドゲートg30
5の出力線l321は“1”とはならない。今の
場合、DIレジスタ中の命令と、命令キユーレジ
スタ中の命令が要求するレジスタ間で競合がない
と仮定しているので、線l315〜l317が
“1”となり、アンドゲートg301の出力が
“1”となる。アンドゲートg301の出力と、
線l313が入力されるアンドゲートg302の
出力が“1”となり、この出力“1”と線l31
0と、DIレジスタに有効な命令が入つているこ
とを示す線l302と、線l321を反転ゲート
g310で反転した出力の4つの信号とが入力さ
れている。アンドゲートg304の出力が“1”
となる。以後、命令を起動するまでの処理は(a
−1)におけるDIレジスタ中の命令起動処理と
まつたく同様である。なお、アンドゲートg30
4の出力が“1”のため、その出力を反転ゲート
g308で反転した結果が入力されているアンド
ゲートg303の出力線l327、および先に述
べた線l321はいずれも“0”のため、IPお
よびOPはいずれも更新されることはなく、また、
命令キユーレジスタに命令が存在することを示す
フリツプフロツプf304〜f306の状態も変
らない。 命令制御ユニツトの変形例 以上、命令制御ユニツトU3(第1図参照)の
詳細を述べた。本実施例においては、命令実行の
追越しは、DIレジスタr302と命令キユーレ
ジスタとの間でのみ行なわれ、命令が一旦、命令
キユーレジスタに入つてしまうと、命令キユーレ
ジスタに入つた順にアウトポインタでとり出され
ていくので、命令キユーレジスタの間での命令実
行の追越しはおこなわれない。しかし、この命令
キユーレジスタ内の命令の間の追越し実行も、
DIレジスタ内の命令と命令キユーレジスタ内の
命令の間の追越し実行と同様に制御すれば、容易
に実現することができる。この場合には、命令キ
ユーレジスタ上の命令について、実行順序を記憶
しておく必要がある。また、命令キユーレジスタ
への命令の登録も、インポインタ(IP)による
順序通りの登録ではなく、空いたレジスタへの登
録となる。 第8図は、これを実現するための回路の内、第
3図の回路と相異する部分を主に示したものであ
る。図において、フリツプフロツプf304,f
305,f306は、命令キユーレジスタに有効
な命令が入つていることを示す(入つているとき
に“1”とするフリツプフロツプで、第3図のフ
リツプフロツプf304〜f306と同一のもの
である。このフリツプフロツプの出力を反転ゲー
トg380〜g382で反転後、プライオリテ
イ・エンコーダb395に入力すると、出力に
は、空きの命令キユー内レジスタのうち、もつと
も番号の小さなものの番号iが出力される。本変
形例では、第3図のIPレジスタr310、3進
カウンタb314にかえ、反転ゲートg380〜
g381、プライオリテイエンコーダb395を
用い、プライオリテイエンコーダの出力をインポ
インタIPとして、第3図のIPのかわりに使用す
る。 また、命令キユーレジスタq301中の命令の
起動順序を記憶しておく必要があり、このため、
本変形例では、フリツプフロツプf380〜f3
82と実行順序変更回路b393が第3図の回路
に追加される。命令キユーレジスタq301に
IP=0〜2でもつてそれぞれセツトされた命令
をQ0,Q1,Q2と名づけると、これらの命令を、 Q0→Q1→Q2 Q0→Q2→Q1 Q1→Q2→Q0 Q1→Q0→Q2 Q2→Q0→Q1 Q2→Q1→Q0 の順に起動する場合があり得る。この6つの状態
をフリツプフロツプf380〜f381で記憶す
る。フリツプフロツプf380,g381,f3
82の記憶情報とこのときの命令実行順序の関係
は次の表のとおりである。
【表】 命令の実行順序の変更は、フリツプフロツプf
304〜f306が“1”から“0”(使用中か
ら非使用中)になつたときに行なわれる。この変
更を制御するのが変更制御回路b393である。
回路b393には、フリツプフロツプf304〜
f306の出力l323〜l325と現在の起動
状態を表わすフリツプフロツプf380〜f38
2の出力l396〜l398が入力され、次の起
動状態が線l376〜l378に出力されて、再
びフリツプフロツプf380〜f382にセツト
される。回路b393の内部では、命令キユーレ
ジスタq301内の一つの命令が起動され線l3
23〜l325が“1”から“0”に変化した時
点をとらえ、次のように線l396〜l398の
内容から、出力を作成し、線l376〜l378
にのせる。 すなわち、命令キユーレジスタq301内の残
りの二つの命令を先ず起動し、かつ、このとき、
この二つの命令の起動順序はそれまでにフリツプ
フロツプf380〜f382が指定していた順序
とし、これらの二つの命令の起動後に、今回起動
された命令のかわりに新たに命令キユーレジスタ
にストアされた命令を起動するように、フリツプ
フロツプf380〜f382をセツトする。 (1) 線l323が“1”→“0”となつたとき、
【表】 (2) 線l324が“1”→“0”となつたとき、
【表】 (3) 線l325が“1”→“0”となつたとき、
【表】 なお、線l323〜l325が同時に“1”→
“0”になるこはない。なぜならば一命令ずつ起
動するからである。 命令キユーレジスタq301中のいずれの命令
をも起動可能とするためには、命令キユーレジス
タ中のすべての命令について、リソースおよびベ
クトルレジスタの使用状況のチエツクを行ない、
かつ、命令キユーレジスタ上のすべての命令間の
ベクトルレジスタの競合チエツクを行なう必要が
ある。第8図においてレジスタq3020〜q3
022(QSR0/1/2)は命令キユーレジス
タq301中の命令が要求するリソースの種類を
保持するのもので、第3図のQSレジスタq30
2中にあるものである。ただし、本変形例におい
ては、各レジスタq3020〜q3030から、
OPとは無関係に直接リソース使用要求を送出す
る信号線が設けられている。この各命令のリソー
ス要求と、リソースの状態を管理するRSSWレジ
スタr304の内容が、第3図のリソース使用チ
エツク回路b306にかえて本変形例で設けられ
たリソース使用チエツク回路b380〜b382
でチエツクされ、それぞれからリソースが空いて
いるかどうかを示す信号が線l380〜l382
に、使用可能なリソースの種類と番号が線l38
3〜l385に出力さる。リソース使用チエツク
回路b380〜b382は、第5図で説明した回
路b305とまつたく同一構成を有する。第8図
において、QGR1〜QGR2レジスタq3030
〜q3032は、命令キユー中の各命令が要求す
るレジスタの番号等を記憶しているもので、第3
図のQGレジスタq303中にあるものである。
この各命令のレジスタ要求と、ベクトルレジスタ
の状態を管理するRGSWレジスタr306の内
容が、本変形例において新たに設けられたレジス
タ使用チエツク回路b383〜b385でチエツ
クされ、要求するすべてのベクトルレジスタが使
用可能かどうかを示す信号がl386〜l388
に出力される。これらのレジスタ使用チエツク回
路は、第6図で説明した回路b307とまつたく
同一である。また、各命令の要求するベクトルレ
ジスタ間の競合をチエツクするために、本変形例
で新たに設けられたレジスタ競合チエツク回路b
386〜b391が使用される。命令キユーレジ
スタ中の各命令の実行順序はどのようなものでも
許されるようにしたい。命令キユーレジスタ中に
3命令分保持できる場合には、ある命令が他の2
命令に優先して起動させるために2つのチエツク
回路が必要で、それが3命令分必要であるから、
計6個のレジスタ競合チエツク回路b386〜b
391が必要となる。回路b386は、QGR0
のR1〜R3フイールドとQGR1のR1〜R3フイー
ルドとが入力され、前者が後者の各々に対してレ
ジスタ競合チエツクを行い、いずれのフイールド
にもレジスタ競合が検出されないとき、線l39
0に“1”を出力する。第7図のレジスタ競合チ
エツク回路b309と同一構成を有する。回路b
386には、フリツプフロツプf305の出力線
l324も入力されており、回路b309(第7
図)と同様に、この信号線l324が“0”のと
きには、無条件に線l390に“1”を出力す
る。同様に回路b387は、QGR1の各フイー
ルドがQGR0の各フイールドに対してレジスタ
競合を有しないかをチエツクする回路である。同
様に回路b688〜b391はそれぞれQGR2
に対してQGR1の、QGR1に対してQGR2の、
QGR0に対してQGR2の、QGR2に対して
QGR0の、レジスタ競合をチエツクするもので
ある。これらのレジスタ競合チエツク回路b38
6〜b391の出力線l390〜l395は命令
選択回路b394に入力される。命令選択回路b
394には、先に述べた、リソース使用チエツク
回路b380〜b382の出力線l380〜l3
82、レジスタ使用チエツク回路b383〜b3
85の出力線l386〜l388、命令の起動順
序を指定するフリツプフロツプf380〜f38
2の出力および命令キユーレジスタ中に実行可能
な命令が入つていることを示すフリツプフロツプ
f304〜f306の出力線l323〜l325
も入力され、ベクトルレジスタ、リソースに空き
があり、かつベクトルレジスタの使用上、競合が
生じない命令キユーレジスタ中の命令が命令選択
回路、b394にて選択されて、選択された命令
の命令キユーレジスタ中の番号がアウトポインタ
OPとしてl329に、命令キユーレジスタ中の
命令が選択されたことを示す信号が線l321に
出力される。 命令選択回路b394の詳細を第9図に示す。
アンドゲートg383には、フリツプフロツプf
304の出力線l323、リソース使用チエツク
回路b380の出力線l380、レジスタ使用チ
エツク回路b383の出力線l386、レジスタ
競合チエツク回路b386,b391の出力線l
390,395が入力され、これらの入力がすべ
てが“1”のときに、アンドゲートg383の出
力線l370が“1”になる。これは、命令キユ
ーレジスタ中の第0番の命令Q0が実行してよい
ことを示す。同様に、アンドゲートg384,g
385にも命令キユーレジスタの第1、第2番に
関する信号線が入力され、線l371,l372
に出力される。線l370〜l372は、同時に
“1”になることもありうる。後l370−l3
72はオアゲートg387に入力され、いずれか
1つでも命令実行が可能のときには、オアゲート
g387の出力線l321を“1”とする。線l
370〜l372に出力された命令実行可能を示
す信号から、いずれを選択するかは命令実行順序
判定回路b395にて行なわれる。回路b395
には、線l370〜l372のほかに、命令実行
順序を示すフリツプフロツプf380〜f382
の出力線l396〜l398が入力され、次のよ
うにして実行すべき命令キユーレジスタ上の番号
が線l329に出力される。線l329は実際に
は2本の線l3290(上位)、l3291(下
位)からなり、2本で2進数00,01,10をあらわ
して、命令キユーレジスタ内の命令の番号を示す
こととする。 (1) 線l396〜l398が“0”“0”“0”の
とき
【表】 (2) 線l396〜l398が“0”“0”“1”の
とき
【表】 (3) 線l396〜l398が“0”“1”“0”の
とき
【表】 (4) 線l396〜l398が“0”“1”“1”の
とき
【表】 (5) 線l396〜l398が“1”“0”“0”の
とき
【表】 (6) 線l396〜l398が“1”“0”“1”の
とき
〔発明の効果〕
以上説明したごとく、本発明によれば、頻発す
るベクトル演算を並列に実行するのに適した、構
造の比較的簡単なデータ処理装置が得られる。
【図面の簡単な説明】
第1図は、本発明によるベクトルプロセツサの
概略構成図、第2図は、本発明にて使用する各種
レジスタの構造を示す図、第3図は、命令制御ユ
ニツトの詳細を示す図、第4図は、命令キユーレ
ジスタの詳細を示す図、第5図は、リソース使用
チエツク回路の詳細を示す図、第6図aは、レジ
スタ使用チエツク回路の詳細を示す図、bはチエ
ツク条件を示す図、第7図は、レジスタ競合チエ
ツク回路の詳細を示す図、第8図は、命令制御ユ
ニツトの変形例を示す図、第9図は、第8図のセ
レクタb394の詳細ブロツク図、第10図は、
ベクトルレジスタユニツトの構成を示す図、第1
1図は、ベクトルレジスタ制御ユニツトの詳細
図、第12図は、命令起動制御回路の詳細を示す
図、第13図は、S−G変換回路の詳細を示す
図、第14図は、G−S変換回路の詳細を示す
図、第15図は、ベクトルレジスタ制御回路の詳
細を示す図、第16図は、オペランド制御回路の
詳細を示す図、第17図は第16図のタイミング
制御回路の動作のタイムチヤート、第18図は、
ベクトルレジスタデータユニツトの詳細を示す
図、第19図は第18図の回路のタイムチヤー
ト、第20図は、メモリ・リクエスタの詳細を示
す図、第21図は、演算器の詳細を示す図であ
る。

Claims (1)

  1. 【特許請求の範囲】 1 複数のベクトルレジスタと、 それぞれ、複数のベクトル要素に対してパイプ
    ライン的に演算を行う複数の演算手段と、 該複数のベクトルレジスタと該複数の演算器を
    接続するスイツチ手段と 実行すべき命令が必要とする演算を実行可能な
    一つの演算手段を選択し、その演算手段によりそ
    の命令を実行させる制御手段と、 該制御手段により実行させられた命令に応答し
    て、第1のベクトルレジスタから演算を受けるべ
    きオペランドベクトル要素を読み出し、該複数の
    演算手段のうち、該一つの演算手段へ供給し、該
    一つの演算手段からそれらのオペランドベクトル
    要素に対する演算結果として出力される複数の結
    果ベクトル要素を、第2のベクトルレジスタに書
    き込む制御回路とを有し、 該複数の演算手段は、それぞれ、少なくとも複
    数の特定の演算を実行可能な複数の特定の演算手
    段を含み、 該制御手段は、該特定の複数の演算のいずれか
    一つを必要とする命令のために、該特定の複数の
    演算手段の内の一つを選択し、その命令が要求す
    る演算の種別を選択された演算手段に通知する手
    段を有するデータ処理装置。 2 該制御手段は、該特定の複数の演算のいずれ
    か一つを必要とする命令のために、該複数の演算
    手段の内、先行する命令により使用中でない一つ
    の演算手段を選択する手段を有する第1項のデー
    タ処理装置。
JP200686A 1986-01-10 1986-01-10 データ処理装置 Granted JPS61180370A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP200686A JPS61180370A (ja) 1986-01-10 1986-01-10 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP200686A JPS61180370A (ja) 1986-01-10 1986-01-10 データ処理装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP56210392A Division JPS58114274A (ja) 1981-12-28 1981-12-28 デ−タ処理装置

Publications (2)

Publication Number Publication Date
JPS61180370A JPS61180370A (ja) 1986-08-13
JPH0452986B2 true JPH0452986B2 (ja) 1992-08-25

Family

ID=11517306

Family Applications (1)

Application Number Title Priority Date Filing Date
JP200686A Granted JPS61180370A (ja) 1986-01-10 1986-01-10 データ処理装置

Country Status (1)

Country Link
JP (1) JPS61180370A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5031096A (en) * 1988-06-30 1991-07-09 International Business Machines Corporation Method and apparatus for compressing the execution time of an instruction stream executing in a pipelined processor
GB9412439D0 (en) * 1994-06-21 1994-08-10 Inmos Ltd Computer instruction pipelining
JP4985452B2 (ja) * 2008-02-14 2012-07-25 エヌイーシーコンピュータテクノ株式会社 ベクトル処理装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56157538A (en) * 1980-05-09 1981-12-04 Fujitsu Ltd Data processing system of advanced mode control

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56157538A (en) * 1980-05-09 1981-12-04 Fujitsu Ltd Data processing system of advanced mode control

Also Published As

Publication number Publication date
JPS61180370A (ja) 1986-08-13

Similar Documents

Publication Publication Date Title
US4617625A (en) Vector processor
CA1176757A (en) Data processing system for parallel processings
JP2550213B2 (ja) 並列処理装置および並列処理方法
JPH0622035B2 (ja) ベクトル処理装置
JPS62197830A (ja) デ−タ処理システム
JPH05508495A (ja) 多重プロセッサ用大域レジスタ
JP3237858B2 (ja) 演算装置
US6327648B1 (en) Multiprocessor system for digital signal processing
JPS5911921B2 (ja) 数値制御装置
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
JPH0452986B2 (ja)
US8200943B2 (en) Microprocessor
US5363490A (en) Apparatus for and method of conditionally aborting an instruction within a pipelined architecture
GB2366426A (en) Multi-processor system with registers having a common address map
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
JP5145659B2 (ja) ベクトルリネーミング方式およびベクトル型計算機
JP2636821B2 (ja) 並列処理装置
JPH033047A (ja) 演算機能付きメモリ
JP2622026B2 (ja) 中央処理装置におけるレジスタ書込制御方式
JP3102399B2 (ja) データ処理装置及び方法
JPH0241770B2 (ja)
JP2942449B2 (ja) データ処理装置
JPH0454262B2 (ja)
JPH0319570B2 (ja)
JPH03104087A (ja) 演算機能付きメモリ