Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JPH046992B2 - - Google Patents
[go: Go Back, main page]

JPH046992B2 - - Google Patents

Info

Publication number
JPH046992B2
JPH046992B2 JP22634187A JP22634187A JPH046992B2 JP H046992 B2 JPH046992 B2 JP H046992B2 JP 22634187 A JP22634187 A JP 22634187A JP 22634187 A JP22634187 A JP 22634187A JP H046992 B2 JPH046992 B2 JP H046992B2
Authority
JP
Japan
Prior art keywords
register
vector
instruction
line
output
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
Application number
JP22634187A
Other languages
Japanese (ja)
Other versions
JPS63100573A (en
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 JP22634187A priority Critical patent/JPS63100573A/en
Publication of JPS63100573A publication Critical patent/JPS63100573A/en
Publication of JPH046992B2 publication Critical patent/JPH046992B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】[Detailed description of the invention]

[発明の利用分野] 本発明は、プログラム制御のデジタル計算機、
特にベクトル演算を高速で実行するのに好適なデ
イジタル計算機(以下これをベクトルプロセツサ
とよぶ)に関する。 [従来技術] 科学技術計算に頻繁に現れる大形行列計算など
の高速処理用にベクトルプロセツサが考案されて
いる。 特に、複数個のパイプライン演算器の高速性を
有効に発揮し、演算データの転送能力を向上させ
るため、ベクトル・レジスタとチエイニング機能
を有するベクトルプロセツサが提案されている
(米国特許4128880号)。 A 従来の装置ではチエイニングについて次の問
題点がある。このことをベクトル演算の簡単な
例を挙げて説明する。 FORTRAN文 DO 10 I=1,L 1OY(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 4 Vector Add VR4←VR0 +VR3 4 Vector Store VR4←Y ここでVRiはi番目のベクトルレジスタを表わ
す。各ベクトル命令は、演算、データ転送を、エ
レメントL個分、繰り返して実行する。 上例では、最終結果を求める前の中間結果であ
るベクトルBとCの乗算結果をベクトルレジスタ
VR3へ一時的に格納して、これとベクトルAと
の加算結果Yのみを主記憶にしている。一般的
に、ベクトルレジスタを備えるベクトルプロセツ
サでは、演算の中間結果のベクトルを一時的にベ
クトルVR1へ格納し、最終結果ベクトルのみを
主記憶装置へストアする。これにより、実質的に
主記憶装置との間のデータ転送回数が減少する。
したがつてベクトルレジスタの書込み読出し動作
を高速化すれば、これに比べ主記憶装置のアクセ
ス能力を比較的低くても、演算に必要なデータ転
送能力を十分確保することが可能である。 ところで、上例の第4と5のベクトル命令に着
目してみると、先行命令4の乗算結果を格納する
ベクトルレジスタVR3は、後続のベクトル加算
命令5のオペラントを読出すべきベクトルレジス
タにもなつている。もし、第4のベクトル乗算命
令により、L個の結果が全てベクトルレジスタ
VR3へ書込れるまで待つて、後続のベクトル加
算命令5を起動するように制御すれば、複数の演
算器(例えば乗算器と加算器)を並列に動作させ
たことにならず、処理時間は延びる。このよう
に、先行するベクトル命令の演算結果あるいはフ
エツチ・ベクトルデータを格納するベクトルレジ
スタを、後続のベクトル命令がオペランドとして
続出するために生じる待ち状態は、上例のベクト
ル命令の2または3と4の間、1と5の間、5と
6の間にも存在している。この待ちを減少するの
がチエイニング機能である。従来技術ではチエイ
ニング動作として、先行のベクトル命令で得られ
る演算結果をたとえば、ベクトルレジスタVR1
書込むと同時に、即時に後続のベクトル命令のオ
ペランドとして演算器へ転送している。チエイニ
ングが可能ならば、先行ベクトル命令の最終エレ
メント演算終了まで待ちことなく、先行ベクトル
命令の最初のエレメントの演算結果が出力される
とともに後続ベクトル命令を起動することができ
る。これにより、多項形のベクトル計算において
も、複数の演算器を並列に動作させ、演算の並列
性を高めて高速処理を行なうことができる。 しかし、従来技術でのチエイニングでは、先行
ベクトル命令の演算結果ベクトルあるいはフエツ
チ・ベクトルデータの最初の要素があるベクトル
レジスタへ書込まれる時刻に完全に同期して、後
続ベクトル命令のための当該ベクトルレジスタの
読出しを開始していた。そこで命令起動時に、そ
の命令のオペランドを読出すべきベクトルレジス
タが先行命令により書込みのために用いられるか
の判定をしてこの判定が肯定的のときには上述の
チエイニングの可否を判定する。チエイニングが
可能ならその命令が起動されるが、不可能ならば
その命令は、該先行命令による全エレメントの書
込みが終了して、そのベクトルレジスタが開放さ
れるまで起動を待たされる。チエイニング可能な
命令の起動は、先行ベクトル命令の演算結果ある
いはフエツチ・データの第1番目のエレメントが
そのベクトルレジスタへ到着する時点で行なわれ
る。これはチエイン・スロツト・タイムと呼ぶこ
とがある。したがつて、このチエイン・スロツ
ト・タイムの時刻で、以後全エレメントについ
て、先行命令の書込みが後続命令の読出しと完全
に同期できると予測できるときにのみ、チエイニ
ング可能と判定する。 このような従来のベクトルプロセツサでは、ベ
クトルデータの各要素は連続するクロツク信号に
応答して連続してベクトルレジスタから読み出さ
れ、それに対応する結果ベクトルデータの各要素
も連続するクロツク信号に応答してベクトルレジ
スタに書き込まれるようになつている。しかしな
がら、ベクトルプロセツサとしては、ベクトルレ
ジスタからベクトルデータの各要素を間欠的に、
不等間隔でも読み出すことが望ましい場合がある
ことが分かつた。 たとえば、先行する命令の実行結果ベクトルデ
ータの各要素が何等かの理由により毎クロツク得
られないで不連続に得られる場合、その結果ベク
トルデータの各要素がベクトルレジスタに間欠的
に到着する。このベクトルデータに対して後続の
命令のためのベクトル演算を実行する場合、先行
する命令の結果ベクトルデータの全要素がそのベ
クトルレジスタに書き込まれるのをまたないで、
書き込み済のものから読み出す方法をとること
は、その後続命令の実行開始を早める点で有効で
ある。 このような場合、上記後続命令のためのベクト
ル要素の読み出しは、間欠的に行なわれることに
なる。また、上記のような事情とは別に、演算器
が演算の種類あるいはその構造によつては毎クロ
ツクベクトル要素を受けとることができないこと
も起りうる。このような場合でも、ベクトルレジ
スタからその演算器へのベクトル要素の読み出し
は間欠的にならざるをえない。 しかし、従来のベクトルプロセツサでは、ベク
トルレジスタからのベクトル要素の間欠的な読み
出しはできなかつた。 とくに、間欠的に読み出したベクトル要素に対
して、演算器をどのように動作させるかあるい
は、演算器の有効出力が必然的に間欠的にしかえ
られないため有効出力のみをどのようにしてベク
トルレジスタに書き込むかという解決すべき問題
がある。 [発明の目的] 本発明の目的は、ベクトルレジスタから不等間
隔でオペランドベクトル要素を読み出して、演算
器へ供給し、その結果、演算器から不等間隔で得
られる結果ベクトル要素をベクトルレジスタに書
き込みうるデ−タ処理装置を提供することにあ
る。 〔発明の概要〕 このため本発明では、不等間隔で入力されうる
複数の信号の各々に応答して、第1のベクトルレ
ジスタからオペランドベクトル要素を読み出す手
段と、ベクトル要素の読み出しの有無に関係なく
演算手段を動作させた状態で、ある読み出された
ベクトル要素に対して、該演算手段から出力され
る結果ベクトル要素をその出力のタイミングに同
期して第2のベクトルレジスタに書き込む手段と
を設けた。 この結果、演算器を動作させたままで、不等間
隔の読み出しおよびそれに同期した結果の書き込
みを行いうる。 [発明の実施例] 以下、本発明を実施例を参照にして詳細に説明
する。 概略装置構成 第1図において主記憶制御ユニツトU1は命令
読出しユニツトU2、メモリ・リクエスタU1
0,U11からのメモリ要求(ベクトルデータの
読出しまたは格納およびベクトル命令の読出し)
に応じて所定の動作を行なう。 命令読出しユニツトU2は、主記憶制御ユニツ
トU1に対し、信号線1で命令読出し要求を、
信号線2で命令アドレスを送出する。主記憶制
御ユニツトU1はこれに応答して、この命令アド
レスで指定される複数の命令を読出し、読出した
命令を信号3にそれが有効であることを示す信
号を信号線4に乗せて返す。 命令読出しユニツトU2は、読出された命令を
命令バツフア(図示せず)に入れ、これらの命令
を一つづつ命令制御ユニツトU3に送る、信号線
6には命令が、信号線5には命令有効信号が
のせられる。命令読出しユニツトU2は、命令制
御ユニツトU3から信号線7によつて、命令送
出の停止が要求されない限り、次々と命令を読出
しては、命令制御ユニツトU3に送りこむ。 命令制御ユニツトU3は、命令を解読し、命令
に応じて、メモリ・リクエスタU10,U11、
ベクトルレジスタユニツトU4、演算器U20、
U21に起動信号他を送出する。 概略動作 () 命令実行起動 命令制御ユニツトU3が命令実行を起動すると
きには、信号線11〜14に必要なデータを
セツトし、起動信号線10にセツトし、メモ
リ・リクエスタU10,U11とベクトルレジス
タユニツトU4、または、演算器U20,U21
とベクトルレジスタユニツトU4に起動をかけ
る。 ここで、命令起動の条件は、必要なメモリ・リ
クエスタU10又はU11または演算器U20又
はU212が現在使用中でなく、かつベクトルレ
ジスタユニツトU4内にあるベクトルレジスタ
VRの内、命令に必要なレジスタが使用できる状
態にあるということである。 ここで、あるベクトルレジスタが使用可能か否
かは、後述するようにそのベクトルレジスタが現
在使用中か否かとは異なる。使用中でなくても、
使用できないベクトルレジスタもあり、使用中に
もかかわらず使用可能なものもある。 起動条件が満たされていない命令は、起動待ち
命令列に登録し、その後、起動条件を満す命令が
解読されたとき、この解読された命令を先に起動
する。 信号線11は、実行すべき命令の演算の種
類、たとえば、加算、乗算、ベクトル読出し、ベ
クトル書込み等を指定する命令コードを送出す
る。 信号線12は、命令が使用するレジスタF号
を指定する。ここでは、各命令はレジスタを最大
3つ指定可能とする。本実施例では、ベクトルレ
ジスタユニツトU4に8つのベクトルレジスタ
VR0〜VR7が設けられ、同数のベクトルアドレス
レジスタU5、ベクトルアドレス増分レジスタU
6がメモリ・リクエスタ0,1に接続されてい
る。これらのベクトルレジスタ、ベクトルアドレ
スレジスタ、ベクトルアドレス増分レジスタには
それぞれ番号0〜7,8〜15,16〜23があ
らかじめ割りあてられている。 信号線13は、起動するメモリ・リクエスタ
または演算器の番号を指定する。ここでは信号線
13は3本で、1本はメモリ・リクエスタを指
定、1本は演算器を指定、もう1本は命令が使用
するメモリ・リクエスタ又は演算器のいずいれか
の番号を指定する。メモリ・リクエスタ又は演算
器の数はそれぞれ二つなので、これらの番号を指
定する線は一本でよい。 色信号14は処理すべきベクトル要素数を指
定する。 メモリ・リクエスタU10,U11、ベクトル
レジスタユニツトU4、演算器U20,U21は
線10上の起動信号に応答して次の動作を行
う。 () 主記憶からのベクトルデータの読出し このための命令の実行が線11上の命令コー
ドにより指定されると、たとえばメモリ・リクエ
スタU10は、信号電12で指定される第2、
第3のレジスタ番号に従つて、ベクトルアドレス
レジスタU5およびベクトルアドレス増分レジス
タU6の各々の一つを選択してベクトルアドレス
およびその増分を内部にセツトする。メモリ・リ
クエスタU10は読出しコマンドと、ベクトルア
ドレスとアドレス有効信号とをそれぞれ信号線
20、21、23を介して主記憶制御ユニツ
トU1に送る。主記憶制御ユニツトU1はこのベ
クトルアドレスで指定されるベクトル要素データ
を主記憶(ここでは示されていない)から読出し
で、そのデータFDと、データ有効信号とをそれ
ぞれ信号線24,25を介してメモリ・リク
エスタU10に戻す。メモリ・リクエスタU10
は、このデータとデータ有効信号をそれぞれ信号
線29,30にのせて、ベクトルレジスタユ
ニツトU4に送出する。ベクトルレジスタユニツ
トU4では、信号線12により指定された第1
のレジスタ番号のベクトルレジスタに線29か
ら入力されたベクトル要素データを格納する。メ
モリ・リクエスタU10はセツトしたベクトルア
ドレス増分値に基づきベクトルアドレスを更新
し、更新後のアドレスに基づき、次のベクトル要
素データを同様に読出す。この動作は信号線1
4で指定されたベクトル要素数だけ繰返される。
メモリ・リクエスタU10は最終ベクトル要素ア
ドレスを主記憶制御ユニツトU1に送出するとき
に、線32に最終ベクトルデータ信号を送出す
る。主記憶制御ユニツトU1は最終ベクトル要素
を出力するときに線33にこの信号を送出す
る。メモリ・リクエスタU10は、最終のベクト
ル要素のデータ有効信号の送出と同時に、信号線
26に最終ベクトルデータ信号をのせる。この
信号は、命令制御ユニツトU3に送られて、この
メモリ・リクエスタU10が空いたことを知らせ
るとともに、ベクトルレジスタユニツトU4にも
送られ、ベクトルレジスタ書込みの終了制御にも
使用される。ベクトルレジスタの書込み終了は、
信号線15を経て、ベクトルレジスタユニツト
U4から命令制御ユニツトU3にも知られる。 () 主記憶へのベクトルデータの格納 主記憶へのベクトルデータの格納の命令が実行
される場合も、ベクトルアドレス、その増分は
()と同様にメモリ・リクエスタU10にセツ
トされる。 格納の場合には、ベクトルレジスタユニツトU
4にて信号線12で指示される番号のベクトル
レジスタから次々とベクトルデータがよみ出さ
れ、信号線27に乗せられるとともに、データ
有効信号が線28に乗せられて、たとえばメモ
リ・リクエスタU10に送られる。メモリ・リク
エスタU10はこれらにさらにベクトルアドレス
を付し、書込みコマンド、ベクトルアドレス、ベ
クトル要素データ、データ有効信号をそれぞれ信
号線20,21,22,23にのせて主
記憶制御ユニツトU1に送る。送るべきベクトル
データ要素が最終要素のときにはさらに、線3
2に最終ベクトルデータ信号を送出する。主記憶
制御ユニツトU1はさらに主記憶への格納を制御
する。必要な数のベクトル要素の送出がベクトル
レジスタユニツトU4から行なわれると、最終ベ
クトルデータ信号が信号線31を経てメモリ・
リクエスタU10に送られ、メモリ・リクエスタ
U10は、()の場合と同様、信号線26に
それをのせて、命令制御ユニツトU3に知らせ
る。 () ベクトル演算 ベクトル演算命令実行のために演算U20また
はU21(ここではU20とする)とベクトルレ
ジスタユニツトU4に起動がかかつたときには、
これらは次のように動作する。なお、ここでは各
演算器は種々の命令が必要とする複数種類の演算
を実行可能とする。 ベクトルレジスタユニツトU4は、信号12
で指定される一般には二つのレジスタ番号のベク
トルレジスタから最初の要素データを読出し、そ
れぞれのデータ信号線41,42にのせ、デ
ータ有効信号を信号線43にのせて、演算器U
20に送る。演算器U20では2組のベクトル要
素データを線11上のOPコードに従い演算後、
その結果と、データ有効信号をそれぞれ信号線
45,46に乗せて、ベクトルレジスタユニツ
トU4に送り返す。ベクトルレジスタユニツトU
4では、信号線12で指定される信号のベクト
ルレジスタに結果を格納する。これらの処理が順
次、つぎの要素データについて行なわれる。最後
のベクトル要素になると、最終ベクトルデータ信
号が、信号線40を介してベクトルレジスタユ
ニツトU4から演算器U20に送られ、演算器U
20からの最終結果に同期して、信号線44に
より、再びベクトルレジスタユニツトU4に戻さ
れる。この信号は、同時に、命令正義ユニツトU
3にも知らされ、演算器の空きおよびベクトルレ
ジスタの空きを知らせる。 以上において、ベクトル要素データの転送はマ
シンクロツクに応答してなされるが、ベクトルレ
ジスタユニツトU4は、転送すべき一対のベクト
ル要素データが二つのベクトルレジスタにそろつ
ていないとき、これがそろうまで転送を禁止す
る。したがつて、ベクトル要素の読出しあるいは
格納が間欠的に行なわれる。 なお、メモリ・リクエスタU11、演算器U2
1の構成はそれぞれメモリ・リクエスタU10、
演算器u20と全く同一であり、第1図でプライ
ム(′)の付けた信号線はこれのないものに応答
する。 レジスタ 詳細な動作説明に先立ち、以下において必要な
レジスタの形成を以下に述べる。第2図aは命令
がセツトされる命令レジスタ(レジスタ)の構
成を示す。ここで、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レ
ジスタ)〜メモリリクエスタレジスタレジスタ
(MBレジスタ)、レジスタユニツトレジスタレジ
スタ(RGレジスタ)の形式を示す。ここでVi
(i=1〜3)フイールドはWi,GNiフイールド
に有効データがあるかどうかを指定するフイール
ド、Wiは、次のGNiのフイールドで指定された
ベクトルレジスタが書込みに使用されるか、読出
しに使用されるかを指定するフイールドで書込
み、読出しのときにそれぞれ“1”又は“0”と
なり、GNiフイールドには命令のRiフイールド
そのものがセツトされる。なお、MGレジスタは
GN2,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)、命令読出しユニツト(第2図のU2)は、
二つのメモリ・リクエスタU10,U11からの
アクセス要求に応答し、かつ、これらのリクエス
タから同時にアクセス要求がなされたときには、
その一方を優先して主記憶をアクセスするもので
あり、従来、実現されているものと同等なので、
ここでは説明しない。また、フリツプフロツプレ
ジスタへのタイミング入力は省略する。制御信号
の入つていない、フリツプフロツプ、レジスタは
常にあらかじめ定められたタイミングによつて入
力がセツトされるとする。 第3図を参照するに、命令読出しユニツトU2
にて読出されたベクトル命令と、その命令に対す
る有効信号がそれぞれ線6,5を介して送ら
れて来、命令レジスタ(Iレジスタ)r301に
命令がセツトされ、命令有効信号がフリツプフロ
ツプf301にセツトされる。命令有効信号はレ
ジスタIR,r301へのセツト信号としても使
用される、命令制御ユニツトU3が線7にて、
命令送出停止要求を送出しない限り、命令読出し
ユニツト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フイールドではない。デコーダb30
1はこのOPフイールドがメモリ・リクエスタU
10又は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〜QER2からなる。同様にキユーリ
ソースレジスタ(QSレジスタ)q302はこれ
ら3つのレジスタ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がチエツクし、要求リソ
ースが空いているかどうかを線310に、空い
ているリソース番号を309に出力する。詳細
を第5図をん参照して説明する。 DSレジスタr303中のSフイールドr30
31の出力は、アンドゲートg320,g321
に入力され、これらのアンドゲートg320,g
321にはそれぞれ、さらにRSSWレジスタr3
04中のS0フイールドr3041,S1フイー
ルドr3042の出力がそれぞれ反転ゲートg3
35,g336を介して入力されている。したが
つて、アンドゲートg320,g321の出力そ
れぞれメモリ・リクエスタ0と1の使用が要求さ
れ、かつメモリ・リクエスタ0と1がそれぞれ空
きのときに“1”となる。アンドゲートg32
0,g321の出力はオアゲートg328に入力
される。したがつて、オアゲートg332の出力
は、使用要求されたメモリ・リクエスタ0又は1
が空いているとき“1”となる。また、アンドゲ
ートg320,g321の出力はエンコーダb3
20にも入力され、使用可能なメモリ・リクエス
タ番号が出力される。つまり,アンドゲートg3
20の出力が“1”のときにはアンドゲートg3
21の出力によらず、エンコーダb320の出力
は“0”(メモリ・リクエスタU0の空きを示
す)。アンドゲートg320の出力が“0”、アン
ドゲートg321の出力が“1”のときにはエン
コーダb320の出力は“1”(メモリ・リクエ
スタ1ノ空きを示す)になる(本実施例では、メ
モリ・リクエスタは2つしかないので、エンコー
ダ出力線は1本である)。アンドゲートg329,
g321の出力がともに0のときにはエンコーダ
b321の出力いずれの値でもよい。同様に、演
算器の空きの状態についてもDSレジスタr30
3のAフイールドr3032の出力と、RSSWレ
ジスタr304のA0,A1フイールドr304
3,r3044の出力とから反転ゲートg33
7,g338,アンドゲートg322,g32
3、オアゲートg329、エアコーダb321に
よつてチエツクされ、命令で演算器の使用要求が
なされ、使用要求が出された演算器0又は1があ
いていれば、オアゲートg329の出力が“1”
に演算器番号がエンコーダb321から出力され
る。アオゲートg328,g329の出力の出力
は、オアゲートg332に入力され、この出力線
310は要互されたリソースが空いていること
を指示する。一方、エンコーダb320,b32
1の出力はセレクタS310にていずれかが選択
されて線3093にのせられ、オアゲートg3
28,g309の出力線3091,3092
とあわせて線309として出力される。ここで
は、オアゲートg329の出力によりセレクタS
310を制御することにより、演算器の使用要求
がなされ、かつこれが空きのときには、演算器番
号がそれ以外のときにはメモリ・リクエスタ番号
が選択されたとした。なお、線309の内容は
セレクタS302で選択され、線320に出力
される。線320はメモリ・リクエスタの空きを
示す信号線3201、演算器の空きを示す信号線
3202、メモリ・リクエスタ又は演算器の番号
を示す信号線3203からなり、それぞれに線
3091〜3093の信号がレクタS302に
より選択的に出力される。セレクタS302は線
309と311を入力線321が“0”か
“1”から応じて選択するもので、今の場合は後
述べするように入力線321は“0”である。
こうして線320に要求リソースの内、空いて
いるリソース番号が出力される。線320は、
デコーダb302にも入力されRSSWレジスタr
304の各ビツトのセツトに使用される。ここ
で、デコーダb302は、メモリ・リクエスタ番
号のデコーダb3022と、演算器番号のデコー
ダb3021とから成り、それぞれ、デコーダ有
効端子Eを有していて、Eが“1”のときのみデ
コード入力信号要デコードする。デコーダb32
01のデコード有効端子Eには線320のう
ち、演算器の空きを示す線3202がデコード
される入力信号端子には番号を示す線3203
が接続されている。同様に、デコーダb3022
のデコード有効端子Eには、線320のうち、
メモリ・リクエスタの空きを示す線3201
が、デコードされる信号としては、番号を示す線
3203が接続されている。デコーダb302
1,B3022の出力は対応したRSSWレジスタ
r304を構成する4つのフイールドr3041
〜r3044(これらはいずれもフリツプフロツ
プからなる)のセツト端子Sに接続され、線3
201,3203から入力される空きのリソー
ス番号に対応した、S0,S1,A0,A1の各フイー
ルドのいずれかがセツトされる。こうして、回路
b305によりリソース使用チエツクがなされる
とともに、チエツク結果に応じて、RSSWレジス
タr304が更新される。 次に、第3図に戻つてDIレジスタr302中
にある命令が使用するベクトルレジスタ使用に関
するチエツクについて述べる。第1のチエツク
は、DGレジスタr305中に示される使用要求
ベクトルレジスタ番号、使用形態(読出し/書込
み)と、RGSWレジスタr306中にあるベク
トルレジスタ使用状況により、レジスタ使用チエ
ツク回路b307がDIレジスタr302内の命
令が要求するベクトルレジスタが現在使用可能か
否かをチエツクすることである。今の場合、命令
キユーレジスタq301内に命令がないと仮定し
ている。しかし一般的に命令キユーレジスタq3
01にリソース空き待ち命令が蓄えられており、
DIレジスタr302中にある命令を命令キユー
レジスタq301にすでに貯えられた命令を追越
して実行したとき、ベクトルレジスタ使用順序上
の矛盾がないかをレジスタ競合チエツク回路b3
09〜b311にてチエツクする必要がある。こ
れが第2のチエツクである。なお、本実施例では
この第1、第2のチエツクはベクトルレジスタの
みについて行ない、ベクトルアドレスレジスタU
5、ベクトルアドレス増分レジスタU6について
は行なわない。本実施例では、簡単化のために、
これらのレジスタの内容の変更はなく、二つのメ
モリ・リクエスタが同時にこれらのレジスタを読
出せるように構成されている(詳細後述)。この
ため、これらのレジスタ使用の可否についてチエ
ツクする必要がない。 第6図aは、レジスタ使用チエツク回路b30
7の詳細をDGレジスタr305とRGSWレジス
タr306を含めて表わしたものである。DGレ
ジスタr305中のR1フイールドr3051と、
RGSWレジスタr306の出力に基づき、第1
レジスタ使用チエツクb3071は第6図bに示
す場合のみレジスタ使用可と判断する。すなわ
ち、レジスタの使用要求がベクトルレジスタに対
する書込みのとき(V1=W1=1 GN1<8)に
は、番号GN1のベクトルレジスタが未使用のと
き(Wi=Ri=0,i=GN1)、使用要求がベク
トルレジスタの読出しのとき(V1=1,W1=0
GN1<8)には、その番号GN1のベクトルレ
ジスタが未使用または書込み中のとき(Ri=0,
i=GN1)にのみ使用可と判断し、アンドゲー
トg343に“1”を出力する。V1ビツトが
“0”のときには、ベクトルレジスタが使用可と
し、この場合にもアンドゲートg343に“1”
を出力する。同様に、DGレジスタr305のR2
フイールドr3052,R3フイールドr305
3についてもそれぞれ第2,第3使用チエツク回
路b3072,b3073にて全く同様に基準で
チエツクされ、アントゲートg343に結果が入
力される。こうして、R1,R2,R3フイールドが
指定するベクトルレジスタがいずれも使用可のと
きに、線313にベクトルレジスタ使用可を示
す信号“1”が出力される。 なお、レジスタ使用チエツクb回路307は、
DIレジスタr302内の命令が必要とするベク
トルレジスタが先行する命令により現在書込み中
であつても、そのレジスタが使用可能と判断する
点に特徴がある。これは、後述するように本実施
例においれは、ベクトル要素を書込み中のベクト
ルレジスタに対してこの書込み動作に並行して読
出し動作を行えるように、ベクトルレジスタのチ
エイニングがなされるからである。 第7図はレジスタ競合チエツク回路b309,
b311の詳細を示す。レジスタ競合チエツク回
路b309は第1〜第3のレジスタ競合チエツク
回路b3091〜b3093からなり、それぞれ
によりDGレジスタr305のR1〜R3フイール
ドr3051〜r3053にて指示されるベクト
ルレジスタ使用要求をQGレジスタq303にて
指示されるベクトルレジスタ使用要求の競合をチ
エツクする。これらの回路の出力は競合がないと
きに、“1”となる。(詳細後述)。アンドゲート
g353は、これらのチエツク回路b3091〜
b3093の出力がいずれも“1”をオアゲート
g359を介して線315に出力する。一方オ
アゲートg359には、反転ゲートg356の出
力も入力されている。したがつて、反転ゲートg
356への入力線325が“0”のときも、線
315に競合なしを示す信号“1”が出力され
るようになつている。レジスタ競合チエツク回路
b310,b311も回路b309と同じ構成を
有し、アンドゲートg354,g355又は、反
転ゲートg357,g358,オアゲートg36
0,g361により線316,317上に競
合チエツク結果を出力する。 線323〜325は、フリツプフロツプf
304〜f306(第3図)に接続されている。
これらのフリツプフロツプは、命令キユーレジス
タq301(第7図)中のレジスタQIR0〜QIR
2の各々に対応して設けられ、これらのレジスタ
内に命令が存在するときにセツトされる(詳細後
述)。 今の場合には、命令キユーレジスタq301に
命令はないとしているので、これらのフリツプフ
ロツプはセツトされておれず、その出力線32
3,324,325は“0”となつている。
したがつて、線315〜317の出力はすべ
て1である。こうして命令キユーレジスタq30
1中に命令が内場合には競合チエツク回路b30
9〜b311の出力とは無関係にベクトルレジス
タの競合がないことを示す信号を作り出してい
る。 再び第3図に戻つて説明する。レジスタ競合チ
エツクb309〜b311から出力線、315
〜317は、上述に述べたように“1”になつ
ている。したがつてこれらを入力するアンドゲー
トg301の出力322は1となつている。今
の場合にはレジスタ使用チエツク回路b307の
出力線313も、ベクトルレジスタが使用する
ことが習きるのと前提から、“1”になつており、
したがつてアンドゲートg302の出力も“1”
である。また、リソース使用チエツク回路b30
5の出力線310も、リソースが使用すること
ができるのと前提から“1”になつている。さら
に、DIレジスタr302に有効な命令があるこ
とを示すフリツプフロツプf302の出力線3
02も“1”となつている。後述のように、アン
ドゲートg305の出力は“0”のため、反転ゲ
ートg310の出力は“1”となつている。この
ような状態のとき、アンドゲートg304の出力
も“1”となり、従つて、オアゲートg306の
出力線330を介してフリツプフロツプ,f3
03がセツトされる。このフリツプフロツプf3
03はタイミングのみでセツト/リセツトされる
Dタイプフリツプフロツプで、命令起動信号ST
を線10により、ベクトルレジスタユニツトU
4、メモリ・リクエスタU10、UYY、円鎖器
U20,U21に送出する(第1図参照)。また、
命令キユーレジスタq301中に命令がないこと
から、レジスタQIR0〜QIR2に命令があるとき
に、“1”がセツトされる対応のフリツプフロツ
プf307からf306の出力はいずれも“0”
であり、その出力線323〜325が入力さ
れているセレクタS303の出力もセレクタS3
03の選択動作(詳細後述)に無関係に“0”と
なつている。従つて、この出力線326が入力
されているアンドゲートg305の出力線32
1も“0”となる。セレクタS301,S30
2,S304は、それぞれDIレジスタr302
の出力線303上のオペコード、リソース使用
チエツク回路b305の出口線309上のリソ
ース使用要求(リソース種類、番号)およびDG
レジスタr305の出力線307上のベクトル
レジスタ使用要求(レジスタ番号、使用形態)を
選択して、それぞれEIレジスタr308、ESレ
ジスタr309,EGレジスタr312にセツト
する。セツトは線330により指示される。な
お、ベクトル長レジスタ(VLR)r307には、
あらかじめ別の手段(図示せず)によつて処理す
べきベクトル長(VL)の格納されているとする。
これらのレジスタの内容は、線11〜14に
よつて、ベクトルレジスタユニツトU4、各リソ
ースU10,U11,U20,U21に送出され
る。これにより、命令実行の起動が指令されるこ
とになる。 なお、ここでは、DIレジスタr302中の命
令はすぐに起動可能であるので命令キユーレジス
タq301に入れる必要はない。今の場合、アン
ドゲート、g303の出力が“1”であることか
ら、反転ゲートg308の出力は“0”となり、
この出力が入力されているアンドゲートg303
の出力線327が“0”となつている。こうし
て、この信号線327により制御される命令キ
ユーレジスタq301へのDIレジスタr302
の内容の入力がおさえられる、また同様に、レジ
スタq302,q303への新たな入力も禁止さ
れる。命令キユーレジスタq301中に命令が存
在することを示すフリツプフロツプf304〜f
306へのセツト、次にセツトすべき命令キユー
レジスタq301中の場所を示すインポインタ
aIP,r310等の更新を抑止する。 また、命令の起動にともない、使用するリソー
ス状態を管理するFSSWレジスタr304、ベク
トルレジスタの状態を管理するRGSWレジスタ
r306を変更する必要がある。このうち、
RSSWレジスタr304の変更については、第5
図の説明において述べたRGSWレジスタr30
6の状態の変更については、次のようにする。す
なわち、セレクタ、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から
線15,16を介して入力されたとき、この
信号で指定されるフイールドRj又はWjをリセツ
トする。 (a−2) 命令キユーレジスタq301内に
命令がなく、DIレジスタr302内の命令
に対して起動がかけられず、これを命令キユ
ーレジスタq301に入れる場合。 これはDIレジスタr302中にある命令ぎ必
要とするリソース(演算器または、メモリ・リク
エスタ)またはベクトルレジスタが使用可能でな
いときに生じる。 DIレジスタr302内の命令が使用するリソ
ースおよびベクトルレジスタの使用状況のチエツ
クについては、第5〜7図に従つて、(a−1)
の説明にて述べた通りである。今の場合リソース
およびベクトルレジスタの使用状況のチエツクの
結果、DIレジスタr302中にある命令が要求
するリソースイが使用中のため、リソース使用チ
エツク回路b305の出力310が“0”にな
る。また、DIレジスタr302内の命令が要求
するベクトルレジスタが使用可能の場合には、レ
ジスタ使用チエツク回路b307の出力313
が“0”になる。いずれの場合もアンドゲートg
304の出力は“0”、従つて、反転ゲートg3
08の出力は“1”となる。また、命令キユーレ
ジスタ中に命令がないので、(a−1)の説明で
も述べたように、セレクタS303の出力線3
26は“0”であるから、アンドゲートg305
の出力は“0”である。このため、フリツプフロ
ツプf303は何もセツトされず、命令起動信号
STは線10に出力されない。反転ゲートg3
08の出力が“1”であり、かつフリツプフロツ
プf302の出力も“1”であるのでアンドゲー
トg303の出力線327が“1”となる。こ
れによつて、命令を命令キユーレジスタに入れる
動作が、次のように行なわれる。 命令キユーレジスタq301の詳細を第4図に
示す、第4図において、命令キューレジスタへの
セツト信号Sが線327にセツトすべきレジス
タの番号として、インポインタ(IP)レジスタ
r310の出力IPが線328を介して送られ
てくると、それぞれデコーダb330のデコード
有効端子Eおよびデータ端子に入力され、デコー
ドされる。その結果、線327が“1”のとき
に線328の内容がデコードされ、その結果、
指定されたレジスタr350〜e352のいずれ
かに、入力線303の内容がセツトされる。以
上が命令キユーレジスタq301へのセツトであ
る。なお、後に述べる命令キユーレジスタの読出
し動作についてもここで述べておく。読出しと
は、アウト・ポインタ(OP)レジスタr311(第3
図)の出力OPにより指定される番号のレジスタ
r350〜r351の内容を出力することで、こ
れは、各レジスタr350〜r352の出力が接
続されているセレクタS350の選択制御をOP
レジスタr311の出力線329により行なう
ことで実現できる。 なお、QSレジスタq302はレジスタr35
0〜r352が必要とするビツト数の違いを除い
て、命令キユーレジスタq301と同一構造であ
る。QGレジスタq303は、レジスタr350
〜r352が必要とするビツト数の違いの他に、
レジスタr350〜352からセレクタS350
を介さずに直接出力する信号線がさらに別に設け
られている点で命令キユーレジスタq301と異
なるのみである。 再び第3図に戻つて説明する。こうして命令コ
ード、その命令が使用するリソース種類等、およ
びレジスタの番号等をそれぞれ命令キユーレジス
タq301〜q303に登録すると、これらの命
令キユーレジスタに命令が存在することを示すフ
リツプフロツプf304〜f306のうち、今回
登録したレジスタQIRi(i=0,1or2)に対応す
るフリツプフロツプをセツトする。この動作は、
線327が“1”となり、これがデコーダb3
12のデコード有効端子に入力され、データ端子
に入力された(出力線328)の上のIPで指
定される番号のフリツプフロツプf304〜f3
06のいずれかがデコーダb312によりセツト
されることにより実現される。以上が終了する
と、IPレジスタr310が更新される。IPレジ
スタr310の出力線328は3進カウンタb
314に入力され、次のIPの値が作成され、線
327が“1”となると、IPレジスタr31
0に、次のポインタの値がセツトされる。3進カ
ウンタb314は、入力が0,1,2に従つて、
1,2,0を出力するものである。 なお、命令キューレジスタ(ここでは3つまで
の命令がキューイングできる)のすべてに命令が
入つてしまうと、それ以上命令を入れることはで
きないので、命令読出しユニツトU2(第1図参
照)からの命令送出を抑止する必要がある。これ
は、命令キューレジスタ中に命令が存在すること
を指定するフリツプフロツプf304〜306の
出力をアンドゲートg309に入力し、この出力
線7を命令読出しユニツトU2に送出すること
により実現される。 以上のごとくにして、起動待ちの命令が、それ
らの解読順序にしたがつて、命令キユーレジスタ
q301にストアされる。 (b−1) 命令キユーレジスタにある命令を
起動する場合。 これは、命令キユーレジスタq301内に命令
があり、これが必要とするリソースおよびベクト
ルレジスタが使用可能のときに生じる。 これは、DIレジスタr302中の命令の有無
あるいはその命令の起動可否に関係しない。この
場合、DIレジスタ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から
線318を介して入力される。一方、リソース
の状態がRSSWレジスタr304から入力されて
いる。これらが、アンドゲートg324〜g32
7によつて比較されて、リソースの空きがチエツ
クされ、その結果、オアゲートg330,g33
1,g333、エンコーダb322,b323、
セレクタS311等によつて最終的にはリソース
が空いていることを示す線312と、リソース
の種類、番号を示す線311に結果がのせられ
る。以上の動作は、DSレジスタr303と
RSSWレジスタr304とのチエツクにより、線
310と309に結果がのせるリソース使用チ
エツク回路b305の動作とまつたく同一なの
で、詳細の説明を省く。 レジスタ使用チエツク回路b308の構成はチ
エツク回路b307と同じであり、その動作は、
第6図aにおいて、DGレジスタr305の出力
のかわりに、第3図におけるQGレジスタq30
3の出力線319を接続した場合の回路b30
7の動作と同一である。チエツクの結果は、レジ
スタ使用チエツク回路b308の出力線314
(第3図)に乗せられる。 再び第3図に戻つて説明する。リソース使用チ
エツク回路b306からリソースに空きがあるこ
とを示す信号線312に“1”が出力され、こ
のときのリソースの種類、番号が線311に出
力され、さらに、レジスタ使用チエツク回路b3
08からベクトルレジスタが使用可能であること
を示す信号線314に“1”が出力され、か
つ、フリツプフロツプf304〜f306の出力
をそれぞれアウトポインタOPが0〜2のときに
選択するセレクタS303の出力線326が
“1”(アウトポインタで指定される、命令キユー
レジスタ内のレジスタQIRiに起動可能な命令が
あることを意味する)になると、アンドゲートg
305の出力線321が“1”になる。この出
力線321が“1”になると、セレクタS30
1,S302,S304はそれぞれ命令キユーレ
ジスタq301の出力線304、リソース使用
チエツク回b306からの出力線311および
QGレジスタq303からの出力線319の内
容を選択してそれぞれEIレジスタr308,ES
レジスタr309、EGレジスタr312に命令
コード、リソースの種類と番号およびレジスタ番
号および使用形態をセツトする。したがつて、命
令キユーレジスタq301内の命令の起動可能な
場合には、DIレジスタr302内の命令が起動
可能が否かに無関係に、前者の命令が起動される
ことが分かる。また、線321はオアゲートg
306を介してフリツプフロツプf303をセツ
トし、ベクトルレジスタユニツト、各リソースに
命令の起動信号STを線10を介して送出する。
オアゲートg306の出力線330は、EIレ
ジスタr308 mESレジスタ309、EGレジ
スタr312のセツトの制御にも使用される。命
令起動については、(a−1)の説明とまつたく
同様である。さらに、線321上の“1”の信
号は、反転ゲートg310により、アンドゲート
g301を閉じる。その結果、反転ゲートg30
8の出力が“1”となり、DIレジスタr302
に命令が入つている場合(フリツプフロツプf3
02が“1”の場合)には、線327を“1”
としてその命令を命令キユーレジスタに登録する
ように制御する。この処理は(a−2)に述べた
とおりである。また、線321は、デコーダb
313のデコード有効端子にも接続され、デコー
ダb313はアウトポインタ、OPで指定される
フリツプフロツプf304〜f306のいずれか
をリセツトする。これは、OPで指定される命令
キユーレジスタ中の命令が取出され、起動される
ためである。最後に、線321はOPレジスタ
r311のセツトに使用され、アウトポインタが
更新される。この更新の制御は、インポインタの
場合と同様、3進で行なわれる。3進の値の生成
は回路b314と同じ構成の回路b315にて行
なわれる。 (b−2) 命令キユーレジスタ中に命令があ
るにもかかわらず、DIレジスタr302の
命令が先に起動される場合。 (1) 命令キユーレジスタ中の命令が要求するリソ
ースまたはベクトルレジスタが使用可能で、こ
の命令を鼓動することができない。かつ、 (2) DIレジスタr302中にある命令が要求す
るリソース又はベクトルレジスタが可能であ
り、かつ、命令キユーレジスタq301中に備
えられている命令と、DIレジスタr302中
にある命令間でベクトルレジスタの競合がな
い。 命令キユーレジスタq301中にある命令を追
越して、DIレジスタr302中の命令を先に起
動するには、レジスタの競合がないこと、すなわ
ち、命令キユーレジスタq301中にある命令に
変更するベクトルレジスタを、DIレジスタr3
02中の命令が使用しないこと、また命令キユー
レジスタq301中にある命令にて読出すベクト
ルレジスタについては、DIレジスタr302中
の命令が変更しないことが必要である。命令キユ
ーレジスタ中の命令で読出すのみに用いられるベ
クトルレジスタを、DIレジスタ中の命令で読出
すことについては、命令の追越しをしてもレジス
タの読出す順序が逆転するだけなので、問題はな
い。以上述べたレジスタ競合チエツクを行なう回
路が、第3図の回路b309〜b311である。
この詳細を第7図に基づき説明する。 第7図の回路の詳細は、回路b3091〜b3
093の詳細を除き、すでに説明した。 第1レジスタ競合チエツク回路b3091は
DGレジスタr305のRIフイールドr3051
とQGR0レジスタg3030のR1〜r3フイールド
とを比較し、次の条件のいずれかが満たされない
場合に、レジスタ競合なしを示す信号“1”をア
ンドゲートg353に出力する。 (1) DGレジスタのV1=1,W1=0のとき、
レジスタQGR0の一つのフイールドRjにおい
て VJ=WJ=1、GNJ=DGレジスタのGN1 (2) DGレジスタのV1=1,W1=1のとき、
レジスタQGR0の一つのフイールドRjにおい
て Vi=1、GNj=DGレジスタのGN1 同様に、DGレジスタのR2フイールドr305
2,R3フイールドr3053についてそれぞれ
第2、第3レジスタ競合チエツク回路b309
2,b3093が同様のチエツクをする。 一方、命令キユーレジスタ中に実行可能な命令
が入つていることを示すフリツプフロツプf30
4(第3図参照)の出力が線323を介してア
ンドゲートg353に入力され、アンドゲートg
353の入力がすべて“1”のとき、その出力が
オアゲートg356を経て、線315に乗せら
れる。こうして、DGレジスタr305で指定さ
れるベクトルレジスタが、レジスタQGR0にて
指定されるいずれのベクトルレジスタとも競合し
ないか否かがチエツクされる。これと同様に、
DGレジスタr305で指定されるベクトルレジ
スタと、レジスタQGR1で指定されるベクトル
レジスタの競合関係がチエツク回路b310で、
DGレジスタr305で指定されるベクトルレジ
スタと、レジスタQGR2で指定されるベクトル
レジスタの競合関係がチエツクb311でチエツ
クされ、その結果がそれぞれアンドゲートg35
4,g355を経て、オアゲートg360,g3
61の出力線、316,317にのせられ
る。 DIレジスタr302中にある命令が要求する
リソースおよびレジスタ使用状況のチエツクにつ
いては、(a−1)の処理の説明にて詳細を述べ
たとおりである。 チエツク結果、第3図においてリソース使用チ
エツク回路b305の出力として、線310に
リソースが空いていることを示す“1”の信号
が、線309にリソースの種類、番号がレジス
タ使用チエツク回路b307の出力として、線
313にベクトルレジスタが使用可能であること
を示す“1”の信号が出力される。一方、命令キ
ユーレジスタ中のアウトポインタOPで指定され
る命令が使用するリソースまたはベクトルレジス
タのいずれか一方または双方とも使用可能でない
ので、リソース使用チエツク回路b306の出力
線312または、リソース使用チエツク回路b
308の出力線314の少くともいずれか一方
は“0”になつている。また、命令キユーレジス
タに命令が存在することから、セレクタS303
の出力線326は“1”に、DIレジスタr3
02に命令が存在することから、線302も
“1”になつている。 このような状況のもまで、アンドゲートg30
5の出力線321“1”とはならない。今の場
合、DIレジスタ中の命令と、命令キユーレジス
タ中の命令が要求するレジスタ間で競合がないと
仮定しているので、線315〜317が
“1”となり、アンドゲートg301の出力が
“1”となる、。アンドゲートg301の出力と、
線313が入力されるアンドゲートg302の
出力が“1”となり、この出力“1”と線31
0と、DIレジスタに有効な命令が入つているこ
とを示す線302と、線321を反転ゲート
g310で反転した出力の4つの信号とが入力さ
れているアンドゲートg304の出力が“1”と
なる。以後、命令を起動するまでの処理は(a−
1)のおけるDIレジスタ中の命令起動処理とま
つたく同様である。なお、アンドゲートg304
の出力が“1”のため、その出力を反転ゲートg
308で反転した結果が入力されているアンドゲ
ートg303の出力線327、および先に述べ
た線321はいずれも“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の記憶情報とこのときの命令実行順序の関係
は次の表のとおりである。
[Field of Application of the Invention] The present invention relates to a program-controlled digital computer,
In particular, the present invention relates to a digital computer (hereinafter referred to as a vector processor) suitable for executing vector operations at high speed. [Prior Art] Vector processors have been devised for high-speed processing such as large matrix calculations that frequently appear in scientific and technical calculations. In particular, a vector processor with vector registers and a chaining function has been proposed in order to effectively utilize the high speed of multiple pipeline arithmetic units and improve the transfer ability of arithmetic data (U.S. Pat. No. 4,128,880). . A: Conventional devices have the following problems with chaining. This will be explained using a simple example of vector calculation. FORTRAN statement DO 10 I=1,L 1OY(I)=A(I)+B(I)*C(I) Expressing this process in the form of a vector instruction is 1 Vector Load VR 0 ←A 2 Vector Load VR 1 ←B 3 Vector Load VR 2 ←C 4 Vector Multiply VR 3 ←VR 1 *VR 2 4 Vector Add VR 4 ←VR 0 +VR 3 4 Vector Store VR 4 ←Y Here, VRi represents the i-th vector register. Each vector instruction repeatedly executes calculations and data transfers for L elements. In the above example, the multiplication result of vectors B and C, which is an intermediate result before obtaining the final result, is stored in the vector register.
It is temporarily stored in VR3, and only the addition result Y of this and vector A is kept in main memory. Generally, in a vector processor equipped with a vector register, a vector of intermediate results of an operation is temporarily stored in the vector VR1, and only the final result vector is stored in the main memory. This substantially reduces the number of data transfers to and from the main memory.
Therefore, by speeding up the write and read operations of the vector register, it is possible to ensure sufficient data transfer capacity necessary for calculations even if the access capacity of the main memory device is relatively low compared to this. By the way, if we focus on the fourth and fifth vector instructions in the above example, the vector register VR3 that stores the multiplication result of the preceding instruction 4 also becomes the vector register that should read the operant of the subsequent vector addition instruction 5. ing. If the fourth vector multiplication instruction causes all L results to be stored in vector registers,
If you wait until it is written to VR3 and then start the subsequent vector addition instruction 5, you will not be operating multiple arithmetic units (for example, multipliers and adders) in parallel, and the processing time will be reduced. Extends. In this way, the waiting state that occurs because subsequent vector instructions continue to use the vector register that stores the operation result or fetch vector data of the preceding vector instruction as an operand is the same as in vector instructions 2, 3, and 4 in the above example. It also exists between 1 and 5, and between 5 and 6. The chaining function reduces this waiting time. In the prior art, as a chaining operation, the arithmetic result obtained by the preceding vector instruction is written into the vector register VR 1 , for example, and at the same time, it is immediately transferred to the arithmetic unit as the operand of the subsequent vector instruction. If chaining is possible, the operation result of the first element of the preceding vector instruction can be outputted and the subsequent vector instruction can be started without waiting until the completion of the operation of the last element of the preceding vector instruction. Thereby, even in polynomial vector calculations, a plurality of arithmetic units can be operated in parallel to increase the parallelism of calculations and perform high-speed processing. However, in chaining in the prior art, the vector register for the subsequent vector instruction is completely synchronized with the time when the first element of the operation result vector or fetch vector data of the preceding vector instruction is written to a certain vector register. had started reading. Therefore, when an instruction is activated, it is determined whether the vector register from which the operand of the instruction is to be read is used for writing by the preceding instruction, and if this determination is positive, it is determined whether or not the above-mentioned chaining is possible. If chaining is possible, that instruction is activated, but if not, activation of that instruction is delayed until the writing of all elements by the preceding instruction is completed and the vector register is released. Activation of a chainable instruction occurs when the result of the preceding vector instruction or the first element of fetch data arrives at its vector register. This is sometimes called chain slot time. Therefore, it is determined that chaining is possible only when it is predicted that writing of the preceding instruction can be completely synchronized with reading of the subsequent instruction for all elements at this chain slot time. In such conventional vector processors, each element of vector data is successively read from a vector register in response to successive clock signals, and each element of the corresponding resultant vector data is also read out from a vector register in response to successive clock signals. and written to the vector register. However, as a vector processor, each element of vector data is intermittently read from the vector register.
It has been found that there are cases in which it is desirable to read out data even at irregular intervals. For example, if each element of the execution result vector data of a preceding instruction is not obtained every clock for some reason but is obtained discontinuously, each element of the resulting vector data arrives at the vector register intermittently. When performing a vector operation for a subsequent instruction on this vector data, all elements of the resultant vector data of the preceding instruction are written to the vector register.
Adopting a method of reading from what has already been written is effective in accelerating the start of execution of subsequent instructions. In such a case, reading of vector elements for the subsequent instruction will be performed intermittently. Furthermore, apart from the above-mentioned circumstances, depending on the type of operation or its structure, the arithmetic unit may not be able to receive clock vector elements every time. Even in such a case, vector elements must be read out from the vector register to the arithmetic unit intermittently. However, conventional vector processors cannot read vector elements intermittently from vector registers. In particular, how to operate the arithmetic unit for vector elements that are read out intermittently, or how to store only the effective output in the vector register since the valid output of the arithmetic unit inevitably changes only intermittently. There is a problem to be solved: whether to write to [Object of the Invention] An object of the present invention is to read operand vector elements from a vector register at irregular intervals, supply them to an arithmetic unit, and, as a result, read out operand vector elements from the arithmetic unit at irregular intervals to the vector register. An object of the present invention is to provide a writable data processing device. [Summary of the Invention] Therefore, the present invention provides a means for reading operand vector elements from a first vector register in response to each of a plurality of signals that can be input at unequal intervals, and a means for reading operand vector elements from a first vector register, and a means for reading operand vector elements from a first vector register in response to each of a plurality of signals that can be input at unequal intervals. means for writing a result vector element outputted from the arithmetic means into a second vector register in synchronization with the timing of the output, with respect to a certain read vector element while the arithmetic means is in operation; Established. As a result, it is possible to perform readout at irregular intervals and write results in synchronization with the readout at unequal intervals while the arithmetic unit remains in operation. [Examples of the Invention] The present invention will be described in detail below with reference to Examples. Schematic device configuration In FIG. 1, a main memory control unit U1, an instruction reading unit U2, a memory requester U1
0, memory request from U11 (reading or storing vector data and reading vector instructions)
Performs a predetermined operation depending on the situation. The instruction read unit U2 sends an instruction read request to the main memory control unit U1 via the signal line 1.
The command address is sent via signal line 2. In response, the main memory control unit U1 reads a plurality of instructions specified by the instruction address, and returns the read instructions on signal line 4 with a signal indicating that the instruction is valid. The instruction reading unit U2 puts the read instructions into an instruction buffer (not shown) and sends these instructions one by one to the instruction control unit U3. A signal is placed. The instruction reading unit U2 reads out instructions one after another and sends them to the instruction control unit U3, unless the instruction control unit U3 requests to stop sending the instructions via the signal line 7. The instruction control unit U3 decodes the instruction and, depending on the instruction, sends the memory requesters U10, U11,
Vector register unit U4, arithmetic unit U20,
Sends a start signal etc. to U21. Outline of operation (2) Instruction execution start When the instruction control unit U3 starts instruction execution, it sets the necessary data on the signal lines 11 to 14, sets it on the start signal line 10, and sends the data to the memory requesters U10 and U11 and the vector register unit. U4 or arithmetic unit U20, U21
and activates the vector register unit U4. Here, the conditions for starting the instruction are that the necessary memory requester U10 or U11 or the arithmetic unit U20 or U212 is not currently in use, and the vector register in the vector register unit U4 is
This means that the registers necessary for the instruction in VR are ready for use. Here, whether or not a certain vector register can be used differs from whether or not that vector register is currently in use, as will be described later. Even if it is not in use,
Some vector registers cannot be used, and others can be used even though they are in use. Instructions for which activation conditions are not met are registered in a sequence of instructions waiting to be activated, and subsequently, when an instruction that satisfies the activation conditions is decoded, this decoded instruction is activated first. The signal line 11 sends out an instruction code specifying the type of operation of the instruction to be executed, such as addition, multiplication, vector read, vector write, etc. Signal line 12 specifies register F used by the instruction. Here, each instruction can specify up to three registers. In this embodiment, the vector register unit U4 has eight vector registers.
VR 0 to VR 7 are provided, and the same number of vector address registers U5 and vector address increment registers U are provided.
6 are connected to memory requesters 0 and 1. Numbers 0 to 7, 8 to 15, and 16 to 23 are assigned in advance to these vector registers, vector address registers, and vector address increment registers, respectively. The signal line 13 specifies the number of the memory requester or arithmetic unit to be activated. Here, there are three signal lines 13: one specifies the memory requester, one specifies the arithmetic unit, and the other specifies the number of either the memory requester or the arithmetic unit used by the instruction. do. Since the number of memory requesters or arithmetic units is two each, only one line is required to specify these numbers. Color signal 14 specifies the number of vector elements to be processed. Memory requesters U10 and U11, vector register unit U4, and arithmetic units U20 and U21 perform the following operations in response to the activation signal on line 10. () Reading vector data from main memory When the execution of an instruction for this purpose is specified by the instruction code on line 11, the memory requester U10, for example,
According to the third register number, one of each of vector address register U5 and vector address increment register U6 is selected to set the vector address and its increment therein. Memory requester U10 sends a read command, a vector address, and an address valid signal to main memory control unit U1 via signal lines 20, 21, and 23, respectively. The main memory control unit U1 reads the vector element data specified by this vector address from the main memory (not shown here), and transmits the data FD and a data valid signal via signal lines 24 and 25, respectively. Return to memory requester U10. Memory requester U10
sends this data and a data valid signal to the vector register unit U4 on signal lines 29 and 30, respectively. In the vector register unit U4, the first
The vector element data input from line 29 is stored in the vector register with register number . Memory requester U10 updates the vector address based on the set vector address increment value, and similarly reads the next vector element data based on the updated address. This operation is performed on signal line 1
It is repeated for the number of vector elements specified in 4.
Memory requester U10 sends a final vector data signal on line 32 when sending the final vector element address to main memory control unit U1. Main memory control unit U1 sends this signal on line 33 when outputting the final vector element. Memory requester U10 places the final vector data signal on signal line 26 simultaneously with sending out the data valid signal of the final vector element. This signal is sent to the instruction control unit U3 to inform it that this memory requester U10 is vacant, and is also sent to the vector register unit U4, where it is also used to control the end of vector register writing. To finish writing the vector register,
Via signal line 15, it is also known from the vector register unit U4 to the command control unit U3. () Storing vector data in main memory When an instruction to store vector data in main memory is executed, the vector address and its increment are set in the memory requester U10 as in (). In case of storage, vector register unit U
At step 4, vector data is read out one after another from the vector register with the number indicated by the signal line 12 and placed on the signal line 27, and a data valid signal is placed on the line 28 and sent to, for example, the memory requester U10. It will be done. The memory requester U10 further attaches a vector address to these, and sends a write command, vector address, vector element data, and data valid signal to the main memory control unit U1 on signal lines 20, 21, 22, and 23, respectively. When the vector data element to be sent is the final element, line 3
2, the final vector data signal is sent out. The main memory control unit U1 further controls storage in the main memory. When the required number of vector elements has been sent out from the vector register unit U4, the final vector data signal is sent to the memory via the signal line 31.
It is sent to the requester U10, and the memory requester U10 puts it on the signal line 26 and notifies the instruction control unit U3, as in the case of (). () Vector operation When operation U20 or U21 (here referred to as U20) and vector register unit U4 are activated to execute a vector operation instruction,
These work as follows. Note that each arithmetic unit is capable of executing a plurality of types of operations required by various instructions. Vector register unit U4 receives signal 12
In general, the first element data is read from the vector register with the two register numbers specified by
Send to 20. After calculating the two sets of vector element data according to the OP code on the line 11 in the calculating unit U20,
The result and the data valid signal are sent back to the vector register unit U4 on signal lines 45 and 46, respectively. Vector register unit U
4, the result is stored in the vector register of the signal specified by the signal line 12. These processes are sequentially performed on the next element data. When the last vector element is reached, the final vector data signal is sent from the vector register unit U4 to the arithmetic unit U20 via the signal line 40.
Synchronized with the final result from 20, it is again returned to vector register unit U4 via signal line 44. At the same time, this signal is transmitted to the command justice unit U.
3 is also notified, and is notified of the availability of the arithmetic unit and the availability of the vector register. In the above, vector element data is transferred in response to the machine clock, but if a pair of vector element data to be transferred is not available in two vector registers, the vector register unit U4 prohibits transfer until the pair of vector element data is available. do. Therefore, vector elements are read or stored intermittently. Note that the memory requester U11 and the arithmetic unit U2
1 each have a memory requester U10,
It is exactly the same as the arithmetic unit u20, and the signal lines marked with a prime (') in FIG. 1 respond to those without primes. Register Before explaining the detailed operation, the formation of necessary registers will be described below. FIG. 2a shows the structure of an instruction register (register) in which instructions are set. Here, the OP field instruction code is
R1, R2, and R3 fields indicate register numbers.
Of course, the instruction itself has the fields shown in this figure. The registers indicated by the R1 to R3 fields are a vector register, a vector address register, and a vector address increment register, and which register is specified depends on the type of instruction as follows. () Instructions that perform calculations in the arithmetic unit (addition, multiplication instructions, etc.) R1: Vector register number in which the calculation result vector is to be stored R2: Vector in which the vector data to be calculated (addend, multiplicand, etc.) is stored Register number R3: Vector register number in which vector data to be calculated (addend, multiplier, etc.) is stored Here, different vector registers are specified for the R1, R2, and R3 fields. Note that the R3 field may not be used depending on the instruction. (Transfer orders, etc.). () Instruction to read data from main memory R1: Vector register number where data should be stored R2: Vector address register number R3: Vector address increment register number () Instruction to store data in main memory R1: When data is stored R2: Vector address register number R3: Vector address increment register number Figure 2b is used to control arithmetic units U20, U21 and memory requesters U10, U11 (hereinafter sometimes referred to collectively as resources). The registers involved, namely the decode resource register (DS
register), queue resource register (QS register), executable resource register (ES register),
Indicates the format of the register unit resource register (RS register). Here, the S, A, and N fields specify the use of a memory requester, the use of an arithmetic unit, and the number of the memory requester or arithmetic unit, respectively. Note that the DS register and QS register do not have an N field. Figure 2C shows the format of the registers involved in vector register control, namely the decode register register (DG register), queue register register (QS register), memory requester register register (MB register), and register unit register register (RG register). shows. Here Vi
(i = 1 to 3) The field specifies whether there is valid data in the Wi, GNi field. Wi is a field that specifies whether the vector register specified in the next GNi field is used for writing or reading. This field specifies whether the command is to be executed, and becomes "1" or "0" when writing or reading, respectively, and the Ri field of the instruction itself is set in the GNi field. Furthermore, the MG register is
Has only GN2 and GN3 fields. FIG. 2d shows the format of the resource status word register (RSSW register) that controls the status of resources. Here, the S0 and S1 fields indicate whether the memory requesters U10 and U11 are in use, respectively, and the A0 and A1 fields indicate whether the memory requesters U10 and U11 are in use, respectively.
20, indicates whether U21 is in use (set to "1" when in use). FIG. 2e shows the format of the register status word register (RGSW register) that controls the status of vector registers. Here, the W0-W7 fields indicate whether vector registers VR0-VR7 are in use for writing, respectively, and the R0-R7 fields indicate whether vector registers VR0-VR7, respectively, are in use for reading (not in use). (Set as “1” when Details of Command Control Units The details of each unit shown in FIG. 1 will be explained below. Note that the main memory control unit (U in Figure 1)
1) The instruction reading unit (U2 in Fig. 2) is
In response to access requests from two memory requesters U10 and U11, and when access requests are made by these requesters at the same time,
The main memory is accessed by giving priority to one of them, and it is equivalent to what has been achieved conventionally.
I will not explain it here. Also, timing input to the flip-flop register is omitted. It is assumed that inputs of flip-flops and registers to which no control signals are input are always set at predetermined timings. Referring to FIG. 3, the instruction reading unit U2
The vector instruction read out by the vector instruction and the valid signal for the instruction are sent via lines 6 and 5, respectively, the instruction is set in the instruction register (I register) r301, and the instruction valid signal is set in the flip-flop f301. Ru. The instruction valid signal is also used as a set signal to register IR,r301.
Unless a command transmission stop request is sent, commands are sent one after another from the command reading unit U2. This interval is controlled so that the next instruction is input as soon as the instruction in the I register r301 is transferred to the decode instruction register (DI register) r302. The instruction set in the I register r301 is divided into four routes and transferred. The OP field is transferred to DI register r302.
At this time, the output of flip-flop f301 is
It controls the setting of DI register r302 and is also transferred to flip-flop f302 via AND gate g307. Here, the output of the specified exception detection circuit b316 is input to the AND gate g307 in addition to the output of the flip-flop f301, and this circuit b316 is connected to the I register r3.
R 1 to R 3 of vector instructions set to 01
Checks the field and outputs "1" only if there is no register specification exception. As a result, an instruction valid signal is set in flip-flop f302. The instruction in register IR,r301 is also
It is sent to decoder b301, the resource to be used is determined based on its OP field, and the result is stored in the decoder source register (DS register).
Set to r303. DS register r303
has S and A fields as shown in FIG. 2b. However, it is not an N field. decoder b30
1 means this OP field is memory requester U
10 or U11, enter 1 in the S field, and this instruction
Or, if U21 is used, enter 1 in the A field. The output of AND gate g307 is also used to set these data in DS register r303. The command in I register r301 is further sent to decoder b303, where its OP code and the contents of R1, R2, and R3 fields are decoded, and the result is set in decode register register (DG register) r305. As shown in FIG. 2c, the DG register r305 contains a field GNi (I
= 1 to 3), whether the register is used for continuous output,
The decoder b30 has a field Wi (i=1 to 3) indicating whether it is for writing and a field Vi (i=1 to 3) indicating whether these fields are valid or not.
3 decodes the instruction in the I register r301 and outputs the information in these fields. That is, since it is determined in advance by the OP code of the instruction whether or not fields R1 to R3 of the instruction are valid as register specifications, the decoder b303 determines Vi based on the OP code. Also, whether or not the register field Ri determined to be valid is for writing is also available.
It is predetermined by the code.
Decoder b303 looks at the OP code and
can be determined. The decoder b303 inputs the contents of the field Ri to the GNi field.
In this way, the input to the DS register r303 is determined. Also for setting control to DG register r305,
The output of andgade g307 is used. As is clear from the above explanation, the decoding results set in the DS register r303 and DG register r305 are for the same instruction as the instruction code set in the DI register r302, and below, the decoding results set in the DS register r303 and DG register r305 are for the same instruction. Each piece of data may be called an instruction, or they may be collectively called an instruction in the DI register r302. DI register r302; DS register r
303: When the instruction is set in the DG register r305, it is checked whether the next resource can be activated. Instruction queue register (QI register) q301
stores the OP code of the instruction waiting for execution in the DI register r
It consists of three registers QIR0 to QER2 for receiving and storing from 302. Similarly, the queue resource register (QS register) q302 receives resource use requests for the OP codes in these three registers QIR0 to QIR2 from the DS register r303, and stores them in the three registers QSR0.
~2, and the queue register (QG register) q303 is the register QIR0~2.
Vector register usage request for OP code
It consists of three registers QGR0-3 that receive and store data from DG registers R and r305. in the end,
Three instructions waiting to be executed are stored in registers q301 and q302. Hereinafter, for the sake of simplicity, these three queue registers may be collectively referred to as the instruction queue register or instruction queue register q301. As described above in the DI register r302, whether or not a resource can be activated for a newly set instruction is determined based on different criteria depending on whether or not an instruction is already stored in these instruction queue registers. That is, there are the following cases. (a) When there is no instruction in the instruction queue register (a-1) When the instruction in DI register r302 is activated immediately. (a-2) When the instruction in the DI register r302 cannot be activated immediately and the instruction must be placed in the instruction queue register. (b) When the instruction queue register contains an instruction. (b-1) When starting an instruction in the instruction queue register. (b-2) A case where the instruction in the DI register r302 is activated even though there is an instruction in the instruction queue register. The device operation in each case will be described below. (a-1) When there is no instruction in the instruction queue register q301 and the instruction in the DI register r302 is activated. This indicates the resources (operating unit or memory) required by the instruction in the DI register r302.
Requester) and vector registers are both available. In this embodiment, each resource is configured so that it can be used only by one instruction at a certain time.
Therefore, whether a resource is available or not depends on whether the resource is not in use or in use. The resource availability status is determined as follows. Roughly speaking, the requested resource specified by the DS register r303 and the RSSW register r30
A resource use check circuit b305 checks the status of the resources managed in step 4, and outputs to line 310 whether the requested resource is free, and outputs the vacant resource number to line 309. Details will be explained with reference to FIG. S field r30 in DS register r303
The output of 31 is AND gate g320, g321
and these AND gates g320,g
321 each further has an RSSW register r3.
The outputs of S0 field r3041 and S1 field r3042 in 04 are each inverted gate g3.
35, g336. Therefore, the outputs of AND gates g320 and g321 become "1" when the use of memory requesters 0 and 1 is requested, and when memory requesters 0 and 1 are empty, respectively. and gate g32
The output of 0,g321 is input to OR gate g328. Therefore, the output of OR gate g332 is the memory requester 0 or 1 requested for use.
It becomes "1" when is vacant. In addition, the output of AND gates g320 and g321 is output from encoder b3.
20 is also input, and the available memory requester number is output. In other words, and gate g3
When the output of 20 is “1”, AND gate g3
Regardless of the output of the encoder b320, the output of the encoder b320 is "0" (indicating that the memory requester U0 is empty). When the output of the AND gate g320 is "0" and the output of the AND gate g321 is "1", the output of the encoder b320 becomes "1" (indicating that memory requester 1 is empty) (in this embodiment, the memory requester Since there are only two, there is only one encoder output line). and gate g329,
When the outputs of g321 are both 0, any value of the output of encoder b321 may be used. Similarly, regarding the empty state of the arithmetic unit, the DS register r30
3 A field r3032 output and RSSW register r304 A0, A1 field r304
3, from the output of r3044 to the inverting gate g33
7, g338, and gate g322, g32
3. Checked by OR gate g329 and air coder b321, a command requests the use of the arithmetic unit, and if the requested arithmetic unit 0 or 1 is open, the output of the OR gate g329 becomes "1".
The arithmetic unit number is output from the encoder b321. The outputs of the outputs of OR gates g328 and g329 are input to OR gate g332, whose output line 310 indicates that the alternated resource is free. On the other hand, encoders b320, b32
One of the outputs of 1 is selected by the selector S310 and placed on the line 3093, and the OR gate g3
28, g309 output lines 3091, 3092
It is also output as a line 309. Here, the selector S is selected by the output of the OR gate g329.
310, a request to use the arithmetic unit is made, and when the arithmetic unit is vacant, the memory requester number is selected when the arithmetic unit number is other than that. Note that the contents of line 309 are selected by selector S302 and output to line 320. The line 320 consists of a signal line 3201 indicating the availability of the memory requester, a signal line 3202 indicating the availability of the arithmetic unit, and a signal line 3203 indicating the number of the memory requester or the arithmetic unit. It is selectively output in S302. The selector S302 selects the lines 309 and 311 depending on whether the input line 321 is "0" or "1", and in this case, the input line 321 is "0" as will be described later.
In this way, vacant resource numbers among the requested resources are output on line 320. The line 320 is
Also input to decoder b302 and RSSW register r
It is used to set each bit of 304. Here, the decoder b302 consists of a memory requester number decoder b3022 and an arithmetic unit number decoder b3021, each of which has a decoder valid terminal E, and requires a decode input signal only when E is "1". decode. decoder b32
Of the lines 320, the decode valid terminal E of 01 has a line 3202 indicating the vacant space of the arithmetic unit, and the input signal terminal to be decoded has a line 3203 indicating the number.
is connected. Similarly, decoder b3022
Of the lines 320, the decode valid terminal E of
Line 3201 indicating memory requester availability
However, a line 3203 indicating a number is connected as a signal to be decoded. decoder b302
1. The output of B3022 is the four fields r3041 that make up the corresponding RSSW register r304.
~ r3044 (all of which consist of flip-flops) is connected to the set terminal S of line 3.
One of the fields S0, S1, A0, and A1 corresponding to the vacant resource number input from 201 and 3203 is set. In this way, the resource use check is performed by the circuit b305, and the RSSW register r304 is updated according to the check result. Next, returning to FIG. 3, a check regarding the use of vector registers used by instructions in the DI register r302 will be described. The first check is based on the use request vector register number and usage type (read/write) shown in the DG register r305, and the vector register usage status in the RGSW register r306. The first step is to check whether the vector register required by the instruction is currently available. In this case, it is assumed that there is no instruction in the instruction queue register q301. However, generally the instruction queue register q3
A resource free wait instruction is stored in 01,
When the instruction in the DI register r302 is executed by overtaking the instruction already stored in the instruction queue register q301, the register conflict check circuit b3 checks whether there is any inconsistency in the order of vector register use.
It is necessary to check from 09 to b311. This is the second check. In this embodiment, the first and second checks are performed only on the vector register, and the vector address register U
5. Not performed for vector address increment register U6. In this example, for simplicity,
The contents of these registers are not changed, and the configuration is such that two memory requesters can read these registers simultaneously (details will be described later). Therefore, there is no need to check whether these registers can be used. FIG. 6a shows a check circuit b30 using a register.
7, including the DG register r305 and the RGSW register r306. R1 field r3051 in DG register r305,
Based on the output of RGSW register r306, the first
The register usage check b3071 determines that the register can be used only in the case shown in FIG. 6b. In other words, when the register use request is for writing to a vector register (V1=W1=1 GN1<8), when the vector register with number GN1 is unused (Wi=Ri=0, i=GN1), the use request is When reading the vector register (V1=1, W1=0
GN1<8), the vector register with the number GN1 is unused or is being written to (Ri=0,
i=GN1), and outputs "1" to AND gate g343. When the V1 bit is “0”, the vector register can be used, and in this case, AND gate g343 is set to “1”.
Output. Similarly, R2 of DG register r305
Field r3052, R3 field r305
3 is also checked using the same criteria in the second and third used check circuits b3072 and b3073, respectively, and the result is input to the ant gate g343. In this way, when the vector registers designated by the R1, R2, and R3 fields are all usable, a signal "1" indicating that the vector registers are usable is output to the line 313. Note that the register usage check b circuit 307 is
The feature is that even if a vector register required by an instruction in DI register r302 is currently being written to by a preceding instruction, that register is determined to be usable. This is because, as will be described later, in this embodiment, the vector registers are chained so that a read operation can be performed in parallel with the write operation to the vector register in which a vector element is being written. FIG. 7 shows register conflict check circuit b309,
Details of b311 are shown. The register conflict check circuit b309 consists of first to third register conflict check circuits b3091 to b3093, each of which uses the vector register use request instructed by the R1 to R3 fields r3051 to r3053 of the DG register r305 to the QG register q303. Check for conflicts in directed vector register use requests. The outputs of these circuits become "1" when there is no competition. (Details later). AND gate g353 connects these check circuits b3091 to
Both outputs of b3093 output "1" to line 315 via OR gate g359. On the other hand, the output of the inversion gate g356 is also input to the OR gate g359. Therefore, the inversion gate g
Even when the input line 325 to the input line 356 is "0", a signal "1" indicating no conflict is output to the line 315. Register conflict check circuits b310 and b311 also have the same configuration as circuit b309, and include AND gates g354 and g355, inversion gates g357 and g358, and OR gate g36.
0, g361 outputs the conflict check result on lines 316, 317. Lines 323-325 represent the flip-flop f
304 to f306 (FIG. 3).
These flip-flops are connected to registers QIR0 to QIR in instruction queue register q301 (Figure 7).
2, and is set when an instruction exists in these registers (details will be described later). In this case, it is assumed that there is no instruction in the instruction queue register q301, so these flip-flops are not set, and their output line 32
3,324,325 are "0".
Therefore, the outputs on lines 315-317 are all 1's. In this way, instruction queue register q30
If there is an instruction in 1, the conflict check circuit b30
A signal indicating that there is no vector register conflict is generated regardless of the outputs of 9 to b311. The explanation will be given by returning to FIG. 3 again. Output line from register conflict check b309 to b311, 315
317 is set to "1" as described above. Therefore, the output 322 of the AND gate g301 inputting these is 1. In this case, the output line 313 of the register usage check circuit b307 is also set to "1" on the premise that the vector register can be learned to be used.
Therefore, the output of AND gate g302 is also “1”
It is. In addition, resource usage check circuit b30
The output line 310 of No. 5 is also set to "1" on the premise that the resource can be used. Furthermore, output line 3 of flip-flop f302 indicates that there is a valid instruction in DI register r302.
02 is also "1". As will be described later, since the output of the AND gate g305 is "0", the output of the inversion gate g310 is "1". In this state, the output of the AND gate g304 also becomes "1", and therefore the flip-flop, f3, is output via the output line 330 of the OR gate g306.
03 is set. This flip-flop f3
03 is a D type flip-flop that can be set/reset only by timing, and the instruction start signal ST
By line 10, vector register unit U
4. Send to memory requesters U10, UYY, and chainers U20, U21 (see FIG. 1). Also,
Since there is no instruction in the instruction queue register q301, when there is an instruction in the registers QIR0 to QIR2, the outputs of the corresponding flip-flops f307 to f306, which are set to "1", are all "0".
The output of the selector S303 to which the output lines 323 to 325 are input is also the selector S3.
It is set to "0" regardless of the selection operation of 03 (details will be described later). Therefore, the output line 32 of AND gate g305 to which this output line 326 is input
1 also becomes “0”. Selector S301, S30
2, S304 is each DI register r302
The operation code on the output line 303 of the resource use check circuit b305, the resource use request (resource type, number) on the exit line 309 of the resource use check circuit
The vector register use request (register number, usage type) on the output line 307 of register r305 is selected and set in EI register r308, ES register r309, and EG register r312, respectively. The set is indicated by line 330. In addition, the vector length register (VLR) r307 has the following information:
It is assumed that the vector length (VL) to be processed is stored in advance by another means (not shown).
The contents of these registers are sent by lines 11-14 to vector register unit U4 and to each resource U10, U11, U20, U21. This will issue a command to start executing the command. Note that here, since the instruction in the DI register r302 can be started immediately, there is no need to put it in the instruction queue register q301. In this case, since the output of AND gate g303 is "1", the output of inverting gate g308 is "0",
AND gate g303 to which this output is input
The output line 327 of is set to "0". In this way, the DI register r302 to the instruction queue register q301 controlled by this signal line 327
Input of the contents of is suppressed, and new input to registers q302 and q303 is also prohibited. Flip-flops f304 to f indicating that an instruction exists in the instruction queue register q301
306, an inpointer indicating the location in the instruction queue register q301 to be set next.
Suppress updates to aIP, r310, etc. Furthermore, as the instruction is activated, it is necessary to change the FSSW register r304 that manages the state of the resources to be used and the RGSW register r306 that manages the state of the vector register. this house,
Regarding the change of RSSW register r304, please refer to the fifth
RGSW register r30 mentioned in the explanation of the figure
To change the state in step 6, proceed as follows. That is, the selector selected by S304
The output of DG register r305 is sent to decoder b30
4, where the vector register number,
Reads, writes, etc. are decoded and the corresponding RGSW
The bit in register r306 is set to "1". That is, for each field Ri (i=1 to 3) of the DG register r305, Wj (j=GNi) or Rj of the RGSW register R305 is set depending on whether Wi is 1 or not, on the condition that Vi=1. Set it to 1.
Furthermore, as will be described later, when a signal indicating that writing or reading of the vector register is completed is input from the vector register unit U4 via lines 15 and 16, the RGSW register inputs the field Rj or the field specified by this signal. Reset Wj. (a-2) When there is no instruction in the instruction queue register q301, the instruction in the DI register r302 cannot be activated, and the instruction is placed in the instruction queue register q301. This occurs when the instruction in DI register r302 requires a resource (operator or memory requester) or vector register that is not available. To check the usage status of resources and vector registers used by instructions in DI register r302, follow (a-1) according to Figures 5 to 7.
As stated in the explanation. In this case, as a result of checking the usage status of resources and vector registers, the resource requested by the instruction in the DI register r302 is in use, so the output 310 of the resource usage check circuit b305 becomes "0". In addition, if the vector register required by the instruction in the DI register r302 is usable, the output 313 of the register usage check circuit b307
becomes “0”. In both cases, and gate g
The output of 304 is “0”, therefore, the inverting gate g3
The output of 08 becomes "1". Also, since there is no instruction in the instruction queue register, as described in (a-1), the output line 3 of selector S303
Since 26 is “0”, AND gate g305
The output of is "0". Therefore, flip-flop f303 is not set to anything, and the instruction activation signal is not set.
ST is not output on line 10. Reversing gate g3
Since the output of 08 is "1" and the output of flip-flop f302 is also "1", the output line 327 of AND gate g303 becomes "1". As a result, the operation of putting an instruction into the instruction queue register is performed as follows. Details of the instruction queue register q301 are shown in FIG. 4. In FIG. 4, the set signal S to the instruction queue register is on the line 327, and the output IP of the inpointer (IP) register r310 is on the line 328. When the signals are sent via the decoder b330, they are input to the decoding enable terminal E and the data terminal of the decoder b330, and are decoded. As a result, the contents of line 328 are decoded when line 327 is "1";
The contents of input line 303 are set to one of the designated registers r350 to e352. The above is the setting to the instruction queue register q301. Note that the read operation of the instruction queue register, which will be described later, will also be described here. Reading refers to out pointer (OP) register r311 (third
By outputting the contents of the registers r350 to r351 with the numbers specified by the output OP in Figure), this controls the selection control of the selector S350 to which the outputs of each register r350 to r352 are connected.
This can be realized by using the output line 329 of the register r311. In addition, QS register q302 is register r35.
It has the same structure as the instruction queue register q301 except for the difference in the number of bits required by 0 to r352. QG register q303 is register r350
~In addition to the difference in the number of bits required by r352,
Selector S350 from registers r350 to 352
The only difference from the instruction queue register q301 is that a signal line for direct output without going through the instruction queue register q301 is further provided. The explanation will be given by returning to FIG. 3 again. In this way, when the instruction code, the type of resource used by the instruction, and the register number are registered in the instruction queue registers q301 to q303, the currently registered The flip-flop corresponding to the registered register QIRi (i=0, 1or2) is set. This behavior is
The line 327 becomes “1” and this is the decoder b3.
Flip-flops f304 to f3 whose numbers are input to the decoding enable terminal of 12 and specified by the IP above (output line 328) input to the data terminal.
06 is set by the decoder b312. When the above steps are completed, the IP register r310 is updated. Output line 328 of IP register r310 is ternary counter b
314, the next IP value is created, and when the line 327 becomes "1", the IP register r31
The value of the next pointer is set to 0. The ternary counter b314 has inputs of 0, 1, and 2.
It outputs 1, 2, 0. Note that once all instructions have been placed in the instruction queue register (up to three instructions can be queued here), no more instructions can be placed in the instruction queue register (here, up to three instructions can be queued). It is necessary to suppress instruction sending. This is accomplished by inputting the outputs of flip-flops f304-306, which specify the presence of an instruction in the instruction queue register, to AND gate g309, and sending this output line 7 to instruction reading unit U2. As described above, instructions waiting to be activated are stored in the instruction queue register q301 according to their decoding order. (b-1) When starting an instruction in the instruction queue register. This occurs when there is an instruction in instruction queue register q301 and the resources and vector registers it requires are available. This is regardless of whether there is an instruction in the DI register r302 or whether the instruction can be activated. In this case, if there is an instruction in the DI register r302, that instruction will not be executed, so the instruction in the DI register r302 is registered in the instruction queue register q301 according to the procedure described in (a-2).
The following describes the process of taking out and activating an instruction from the instruction queue register q301. The process of fetching and activating an instruction from the instruction queue register q301 is very similar to the process of activating an instruction in the DI register r302. That is,
The instruction specified by the out pointer register r311 in the instruction queue register r301 and the instruction in the DI register r302 may be exchanged. As mentioned in (a-1), in order to activate an instruction, necessary resources and vector registers must be available for use. Checking for free resources used by instructions in the instruction queue register q301 is performed by the resource usage check circuit b306 in FIG. 3, and checking for availability of vector registers is performed by the register usage check circuit b308, also shown in FIG. . The details of the resource usage check circuit b306 are as follows.
This is the same as the check circuit b305 shown in FIG. The type of resource required by the instruction in the instruction queue register q301 selected by the out pointer, OP, is input via line 318 from the QS register q302. On the other hand, the resource status is input from the RSSW register r304. These are AND gates g324 to g32
7 to check resource availability, and as a result, or gates g330 and g33
1, g333, encoder b322, b323,
The result is finally placed on a line 312 indicating that the resource is vacant and a line 311 indicating the type and number of the resource by the selector S311 and the like. The above operation is performed using DS register r303.
Since the operation is exactly the same as that of the resource use check circuit b305 which places the results on lines 310 and 309 by checking with the RSSW register r304, detailed explanation will be omitted. The configuration of the register-using check circuit b308 is the same as that of the check circuit b307, and its operation is as follows.
In FIG. 6a, instead of the output of DG register r305, QG register q30 in FIG.
Circuit b30 when output line 319 of No. 3 is connected
The operation is the same as No.7. The check result is sent to the output line 314 of the register-using check circuit b308.
(Figure 3). The explanation will be given by returning to FIG. 3 again. "1" is output from the resource usage check circuit b306 to the signal line 312 indicating that there is a vacant resource, and the type and number of the resource at this time is output to the line 311, and further, the register usage check circuit b3
08 outputs "1" to the signal line 314 indicating that the vector register can be used, and the output line of the selector S303 selects the outputs of the flip-flops f304 to f306 when the out pointer OP is 0 to 2. When 326 becomes "1" (meaning that there is an activated instruction in the register QIRi in the instruction queue register specified by the out pointer), the AND gate g
The output line 321 of 305 becomes "1". When this output line 321 becomes "1", the selector S30
1, S302, and S304 are the output line 304 of the instruction queue register q301, the output line 311 from the resource usage check circuit b306, and
Select the contents of output line 319 from QG register q303 and write them to EI register r308 and ES, respectively.
The instruction code, resource type and number, register number, and usage pattern are set in register r309 and EG register r312. Therefore, it can be seen that if the instruction in the instruction queue register q301 is activated, the former instruction will be activated regardless of whether the instruction in the DI register r302 is activated or not. Also, the line 321 is the or gate g
A flip-flop f303 is set via line 10, and an instruction activation signal ST is sent to the vector register unit and each resource via line 10.
The output line 330 of the OR gate g306 is also used to control the settings of the EI register r308, the mES register 309, and the EG register r312. The instruction activation is exactly the same as the explanation in (a-1). Further, the "1" signal on line 321 causes inverting gate g310 to close AND gate g301. As a result, the inversion gate g30
8 becomes “1” and DI register r302
If there is an instruction in (flip-flop f3
02 is “1”), set line 327 to “1”
The instruction is controlled to be registered in the instruction queue register. This process is as described in (a-2). Also, line 321 represents decoder b
The decoder b313 is also connected to the decode valid terminal of the out-pointer OP. This is because the instruction in the instruction queue register specified by OP is taken out and activated. Finally, line 321 is used to set OP register r311 and update the out pointer. This update control is performed in ternary format, as in the case of the inpointer. Generation of the ternary value is performed in a circuit b315 having the same configuration as the circuit b314. (b-2) Even though there is an instruction in the instruction queue register, the instruction in DI register r302 is activated first. (1) The resource or vector register required by the instruction in the instruction queue register is available and cannot be used to service this instruction. and (2) the resource or vector register required by the instruction in the DI register r302 is possible, and the vector register is shared between the instruction provided in the instruction queue register q301 and the instruction in the DI register r302. There is no competition. In order to overtake the instruction in the instruction queue register q301 and start the instruction in the DI register r302 first, it is necessary to make sure that there is no register conflict. r3
It is necessary that the instruction in 02 is not used, and that the vector register read by the instruction in the instruction queue register q301 is not changed by the instruction in the DI register r302. There is no problem with reading a vector register that is only used for reading by an instruction in the instruction queue register with an instruction in the DI register because even if the instruction is overtaken, the register reading order is simply reversed. The circuits that perform the register conflict check described above are circuits b309 to b311 in FIG.
The details will be explained based on FIG. 7. The details of the circuit in FIG. 7 are as follows: circuits b3091 to b3
The details of 093 have already been explained. The first register conflict check circuit b3091
RI field r3051 of DG register r305
and the R1 to R3 fields of the QGR0 register g3030, and if any of the following conditions is not met, a signal "1" indicating no register conflict is output to the AND gate g353. (1) When DG register V1=1, W1=0,
In one field Rj of register QGR0, VJ = WJ = 1, GNJ = GN1 of DG register (2) When V1 = 1, W1 = 1 of DG register,
In one field Rj of register QGR0, Vi=1, GNj=GN1 of DG register Similarly, R2 field r305 of DG register
2nd and 3rd register conflict check circuits b309 for R3 field r3053, respectively
2, b3093 performs a similar check. On the other hand, flip-flop f30 indicates that an executable instruction is contained in the instruction queue register.
4 (see FIG. 3) is input to the AND gate g353 via the line 323, and the AND gate g
When all the inputs of 353 are "1", the output is put on line 315 via OR gate g356. In this way, it is checked whether the vector register specified by DG register r305 does not conflict with any vector register specified by register QGR0. Similarly,
A check circuit b310 checks the competitive relationship between the vector register specified by the DG register r305 and the vector register specified by the register QGR1.
The competitive relationship between the vector register specified by DG register r305 and the vector register specified by register QGR2 is checked in check b311, and the results are respectively applied to AND gate g35.
4, via g355, orgate g360, g3
It is placed on the output lines 316 and 317 of 61. The details of checking the resources and register usage status required by the instruction in the DI register r302 are as described in the description of the process (a-1). As a result of the check, in FIG. 3, as the output of the resource use check circuit b305, a signal of "1" indicating that the resource is available is shown on the line 310, and the type and number of the resource is shown on the line 309 as the output of the register use check circuit b307. As a result, a signal of "1" is output on line 313 indicating that the vector register can be used. On the other hand, since either one or both of the resource and vector register used by the instruction specified by the out pointer OP in the instruction queue register is unavailable, the output line 312 of the resource usage check circuit b306 or the resource usage check circuit b
At least one of the output lines 314 of 308 is set to "0". Also, since there is an instruction in the instruction queue register, the selector S303
The output line 326 of DI register r3 is set to “1”.
Since there is an instruction in 02, the line 302 is also set to "1". Even in this situation, and gate g30
The output line 321 of No. 5 does not become "1". In this case, it is assumed that there is no conflict between the registers required by the instruction in the DI register and the instruction in the instruction queue register, so lines 315 to 317 are "1" and the output of AND gate g301 is "1". ”. The output of AND gate g301,
The output of the AND gate g302 to which the line 313 is input becomes “1”, and this output “1” and the line 31
0, a line 302 indicating that the DI register contains a valid instruction, and the output of the AND gate g304, which is inverted by the inverting gate g310 from the line 321, outputs "1". Become. From then on, the process until starting the instruction is (a-
This is exactly the same as the instruction activation process in the DI register in 1). In addition, and gate g304
Since the output of is “1”, the output is inverting gate g
Since the output line 327 of the AND gate g303 to which the result inverted at 308 is input, and the line 321 mentioned above are both "0", neither IP nor OP is updated, and
The states of flip-flops f304 to f306 indicating that an instruction exists in the instruction queue register do not change either. Modified Example of Instruction Control Unit In this embodiment, in which the details of the instruction control unit U3 (see FIG. 1) have been described above, instruction execution is overtaken only between the DI register r302 and the instruction queue register. Once an instruction enters the instruction queue register, it is taken out using an out pointer in the order in which it entered the instruction queue register, so instruction execution is not overtaken between instruction queue registers. However, overtaking execution between instructions in this instruction queue register also
How can I control overtaking execution between instructions in the DI register and instructions in the queue register?
This can be easily achieved. In this case, it is necessary to remember the execution order of the instructions on the instruction queue register. In addition, registering instructions in the instruction queue register is also done using the interpointer (IP).
It is not registered in the order specified by , but is registered in an empty register. FIG. 8 mainly shows the parts of the circuit for realizing this that are different from the circuit shown in FIG. 3. In the figure, flip-flops f304, f
Reference numerals 305 and f306 indicate that a valid instruction is stored in the instruction queue register. After the output is inverted by the inversion gates g380 to g382, it is input to the Brioliday encoder b395, and the output is the number i of the register with the smallest number among the empty instruction queue registers. Instead of the IP register r310 and ternary counter b314 in Figure 3, the inversion gate g380~
g381 and a priority encoder b395 are used, and the output of the priority encoder is used as an inpointer IP instead of the IP in FIG. Also, it is necessary to remember the starting order of the instructions in the instruction queue register q301.
In this modification, flip-flops f380 to f3
82 and an execution order changing circuit b393 are added to the circuit of FIG. to instruction queue register q301
The instructions set for IP = 0 to 2 are named Q0, Q1, and Q2. These instructions are Q0→Q1→Q2 Q0→Q2→Q1 Q1→Q2→Q0 Q1→Q0→Q2 Q2→Q0 →Q1 It is possible that Q2→Q1→Q0 are activated in this order. These six states are stored in flip-flops f380 to f381. Flip flop f380, g381, f3
The relationship between the storage information of 82 and the instruction execution order at this time is shown in the following table.

【表】【table】

【表】 命令の実行順序の変更は、フリツプフロツプf
304〜f306が“1”から“0”(使用中か
ら非使用知)になつたときに行なわれる。この変
更を制御するのが変更制御回路b393である。回
路b393には、フリツプフロツプf304〜f
306の出力323〜325と現在の起動状
態を表わすフリツプフロツプf380〜f382
の出力396〜398が入力され、次の起動
状態が線376〜378に出力されて、再び
フリツプフロツプf380〜382にセツトされ
る。回路b393の内部では、命令キユーレジス
タq301内の一つの命令が起動され線323
〜325が“1”から“0”に変化した時点を
とらえ、次のように線396〜398の内容
から、出力を作成し、線376〜378にの
せる。 すなわち、命令キユーレジスタq301内の残
りの二つの命令を先ず起動し、かつ、このとき、
この二つの命令の起動順序はそれまでにフリツプ
フロツプf380〜f382が指定していた順序
とし、これらの二つの命令の起動後に、今回起動
された命令のかわりに新たに命令キユーレジスタ
にストアされた命令を起動するように、フリツプ
フロツプf380〜f382をセツトする。
[Table] To change the execution order of instructions, use the flip-flop f.
This is performed when 304 to f306 change from "1" to "0" (from being in use to not in use). The change control circuit b393 controls this change. The circuit b393 includes flip-flops f304 to f.
Outputs 323-325 of 306 and flip-flops f380-f382 representing the current activation state
The next activation state is output on lines 376-378 and is again set in flip-flops f380-382. Inside the circuit b393, one instruction in the instruction queue register q301 is activated and the line 323
-325 changes from "1" to "0", output is created from the contents of lines 396-398 as follows, and placed on lines 376-378. That is, the remaining two instructions in the instruction queue register q301 are activated first, and at this time,
The activation order of these two instructions is the order previously specified by flip-flops f380 to f382, and after the activation of these two instructions, the newly stored instruction in the instruction queue register is executed in place of the currently activated instruction. Set flip-flops f380-f382 to activate.

【表】【table】

【表】 なお、線323〜325が同時に“1”→
“0”になることはない。なぜならば一命令ずつ
起動するからである。 命令キユーレジスタq301中のいずれの命令
をも起動可能とするためには、命令キユーレジス
タ中のすべての命令について、リソースおよびベ
クトルレジスタの使用状況のチエツクを行ない、
かつ、命令キユーレジスタ上のすべての命令間の
ベクトルレジスタの競合のチエツクを行なう必要
がある、第8図においてレジスタq3020〜q
3022(QSR0/1/2)は命令キユーレジスタ
q301中の命令が要求するリソースの種類を保
持するもので、第3図のQSレジスタq302中
にあるものである。ただし、本変形例において
は、各レジスタq3020〜Q3030から、
OPとは無関係に直接リソース使用要求を送出す
る信号線が設けられている。この各命令のリソー
ス要求と、リソース状態を管理する。RSSWレジ
スタr304の内容が、第3図のリソース使用チ
エツク回路b306にかえて本変形例で設けられ
たリソース使用チエツク回路b380〜b382
でチエツクされ、それぞれからリソースが空いて
いるかどうかを示す信号が線380〜382
に、使用可能がリソースの種類と番号が線38
3〜385に出力される。リソース使用チエツ
ク回路b380〜b382は、第5図で説明した
回路b305とまつたく同一構成を有する。第8
図において、QGR0〜QGR2レジスタq303
0〜q3032は、命令キユー中の各命令が要求
するレジスタの番号等を記憶しているもので、第
3図のQGレジスタq303中にあるものであ
る。この各命令のレジスタ要求と、ベクトルレジ
スタの状態を管理するRGSWレジスタr306
の内容が、本変形例において新たに設けられたレ
ジスタ使用チエツク回路b383〜b385でチ
エツクされ、要求するすべてのベクトルレジスタ
が使用可能かどうかを示す信号が386〜3
88に出力される。これらのレジスタ使用チエツ
ク回路は、第6図で説明した回路b307とまつ
たく同一である。また、各命令の要求するベクト
ルレジスタ間の競合をチエツクするために、本変
形例で新たに設けられたレジスタ競合チエツク回
路b386〜b391が使用される。命令キユー
レジスタ中の各命令の実行順序がどのようなもの
でも許されるようにしたい。命令キユーレジスタ
中に3命令分保持できる場合には、ある命令が極
の2命令に優先して起動させるために2つのチエ
ツク回路が必要で、それが3命令分必要であるか
ら、計6個のレジスタ競合チエツク回路b386
〜b391が必要となる。回路b386は、
QGR0のR1〜R3フイールドとQGR1のR1〜R3
フイールドとが入力され、前者が後者の各々に対
してレジスタ競合チエツクを行い、いずれのフイ
ールドにもレジスタ競合が検出されないとき、線
390に“1”を出力する。第7図のレジスタ
競合チエツク回路b309と同一構成を有する。
回路b386には、フリツプフロツプf305の
出力線324も入力されており、回路b309
(第7図)と同様に、この信号線324が“0”
のときには、無条件に線390に“1”を出力
する。同様に回路b387は、QGR1の各フイ
ールドがQFR0の各フイールドに対してレジス
タ競合を有しないかをチエツクする回路である。
同様に回路b688〜b391はそれぞQGR2
に対してQGR1の、QGR1に対してQGR2の、
QGR0に対してQGR2のQGR2に対してQGR
0の、レジスタ競合をチエツクするものである。
これらのレジスタ競合チエツク回路b386〜b
391の出力線390〜395は命令選択回
路b394に入力される。命令選択回路b394
には、先に述べた、リソース使用チエツク回路b
380〜b382の出力線383〜b385の
出力線386〜388、命令の起動順序を指
定するフリツプフロツプf380〜f382の出
力および命令キユーレジスタ中に実行可能な命令
が入つていることを示すフリツプフロツプf30
4〜f306の出力線323〜325も入力
され、ベクトルレジスタ、リソースに空きがあ
り、かつベクトルレジスタに使用上、競合が生じ
ない命令キユーレジスタ中の命令が命令選択回
路、b394にて選択されて、選択された命令の
命令キユーレジスタ中の番号がアウトポインタ
OPとして329に、命令キユーレジスタ中に
命令が選択されたことを示す信号が線321に
出力される。 命令選択回路b394の詳細を第9図に示す。
アンドゲートg383には、フリツプフロツプf
304の出力線323、リソース使用チエツク
回路b383の出力線386、レジスタ競合チ
エツク回路b386,b391の出力線39
0,395が入力され、これらの入力がすべてが
“1”のときに、アンドゲートg383の出力線
370が“1”になる。これは命令キユーレジ
スタ中の第0番の命令Q0が実行してよいことを
示す。同様に、アンドゲートg384,g385
にも命令キユーレジスタの第1、第2番に関する
信号線が入力され、線371,372に出力
される。線370〜327は、同時に“1”
になることもありうる。後370〜372はオ
アゲートg387に入力され、いずれか1つでも
命令実行が可能のときには、オアゲートg387
の出力線321を“1”とする。線370〜
372に出力された命令実行可能を示す信号か
ら、いずれを選択するかは命令実行順序判定回路
b395にて行なわれる。回路b395には、線
370〜372のほかに、命令実行順序を示
すフリツプフロツプf380〜f382の出力線
396〜398が入力され、次のようにして
実行すべき命令キユーレジスタ上の番号が線3
29に出力される。線329は実際には2本の
線3290(上位)、3291(下位)から
なり、2本での2進数00,01,10をあらわして、
命令キユーレジスタ内の命令の番号を示すことと
する。
[Table] Note that lines 323 to 325 are “1” at the same time →
It never becomes “0”. This is because each instruction is activated one by one. In order to enable any instruction in the instruction queue register q301 to be activated, the usage status of resources and vector registers is checked for all instructions in the instruction queue register,
In addition, it is necessary to check for vector register conflicts among all instructions on the instruction queue register.
3022 (QSR0/1/2) holds the type of resource required by the instruction in the instruction queue register q301, and is located in the QS register q302 in FIG. However, in this modification, from each register q3020 to Q3030,
A signal line is provided that directly sends a resource use request regardless of the OP. The resource requests and resource status of each instruction are managed. The contents of the RSSW register r304 are the resource usage check circuits b380 to b382 provided in this modification instead of the resource usage check circuit b306 in FIG.
and a signal indicating whether the resource is free is sent from each line 380 to 382.
The available resource types and numbers are line 38.
3 to 385. Resource use check circuits b380 to b382 have exactly the same configuration as circuit b305 explained in FIG. 5. 8th
In the figure, QGR0 to QGR2 register q303
0 to q3032 store the register numbers required by each instruction in the instruction queue, and are in the QG register q303 in FIG. RGSW register r306 that manages register requests for each instruction and the state of vector registers
The contents of are checked by register usage check circuits b383 to b385 newly provided in this modification, and signals indicating whether or not all requested vector registers are available are checked by register usage check circuits b383 to b385, which are newly provided in this modification.
88. These register use check circuits are exactly the same as the circuit b307 explained in FIG. Further, in order to check conflicts between vector registers required by each instruction, register conflict check circuits b386 to b391 newly provided in this modification are used. We want to allow the execution of each instruction in the instruction queue register in any order. If three instructions can be held in the instruction queue register, two check circuits are required to activate one instruction with priority over the next two instructions, and these check circuits are required for three instructions, so a total of six check circuits are required. Register conflict check circuit b386
~b391 is required. The circuit b386 is
R1 to R3 fields of QGR0 and R1 to R3 of QGR1
fields are input, the former performs a register conflict check on each of the latter, and outputs a "1" on line 390 when no register conflict is detected in any field. It has the same configuration as the register conflict check circuit b309 in FIG.
The output line 324 of the flip-flop f305 is also input to the circuit b386, and the circuit b309
(FIG. 7), this signal line 324 is “0”
When , "1" is outputted to line 390 unconditionally. Similarly, circuit b387 is a circuit that checks whether each field of QGR1 has register conflict with each field of QFR0.
Similarly, circuits b688 to b391 are each QGR2
QGR1 for QGR1, QGR2 for QGR1,
QGR2 for QGR0 QGR2 for QGR2
0, to check for register contention.
These register conflict check circuits b386-b
Output lines 390 to 395 of 391 are input to an instruction selection circuit b394. Instruction selection circuit b394
In this case, the resource usage check circuit b mentioned above is used.
Output lines 386 to 388 of output lines 383 to b385 of 380 to b382, outputs of flipflops f380 to f382 that specify the order of starting instructions, and flipflop f30 that indicates that an executable instruction is contained in the instruction queue register.
The output lines 323 to 325 of 4 to f306 are also input, and the instruction selection circuit b394 selects an instruction in the instruction queue register in which the vector register and resources are free and there is no conflict in use of the vector register. The number in the instruction queue register of the selected instruction is an out pointer.
As OP 329, a signal is output on line 321 indicating that an instruction has been selected in the instruction queue register. Details of the instruction selection circuit b394 are shown in FIG.
The AND gate g383 has a flip-flop f
Output line 323 of 304, output line 386 of resource usage check circuit b383, output line 39 of register conflict check circuits b386 and b391
0,395 are input, and when these inputs are all "1", the output line 370 of AND gate g383 becomes "1". This indicates that the 0th instruction Q0 in the instruction queue register may be executed. Similarly, and gate g384, g385
Signal lines relating to the first and second instruction queue registers are inputted to the signal lines 371 and 372, respectively, and outputted to lines 371 and 372. Lines 370-327 are “1” at the same time
It is possible that it will become. The latter 370 to 372 are input to the OR gate g387, and when any one of the instructions can be executed, the OR gate g387
The output line 321 of is set to "1". Line 370~
The instruction execution order determining circuit b395 determines which one is selected from among the signals outputted to the instruction executable 372. In addition to lines 370 to 372, output lines 396 to 398 of flip-flops f380 to f382, which indicate the instruction execution order, are input to circuit b395.
29. The line 329 actually consists of two lines 3290 (upper) and 3291 (lower), and the two lines represent the binary numbers 00, 01, 10,
It indicates the number of the instruction in the instruction queue register.

【表】 命令選択回路b394の出力である線32
9、線321を、第3図においてそれぞれアウ
トポインタ(OP)レジスタr311の出力、線
329およびアンドゲートg305の出力線
321のかわりに使用すればよい。したがつて、
第3図のアウトポインタレジスタr311、3進
カウンタb315、セレクタS303、アンドゲ
ートg305は不用となる。 なお、第8図中のセレクタS380は命令キユ
ーレジスタ中の命令が要求するリソースの種類、
番号をアウトポインタ(線329上にある)に
従つて選択するもので、この出力線311が、
第3図のリソース使用チエツク回路b306の出
力線のかわりに使用される。 以上のべたように、本発明により命令制御ユニ
ツトでは、読出された命令を次々と解読し、起動
できる命令は次々と起動し、起動できない命令は
命令キユーレジスタに入れていく。かつ、リソー
スが空きベクトルレジスタが使用可能となると、
ベクトルレジスタの使用順序に制約がないことを
条件に、解読した順序に関係なく命令を起動して
いくことにより、リソース、ボクトルレジスタが
空いている時間を短縮させ、より短時間に命令を
処理させることができる。 ベクトルレジスタユニツト (1) 概要 第10図は、ベクトルレジスタユニツトU4
は、ベクトルレジスタ制御ユニツトU40と、ベ
クトルレジスタデータユニツトU41に分けられ
る。 ベクトルレジスタ制御ユニツトU40では命令
制御ユニツトU3よりの指令にもとづいて、ベク
トルレジスタデータユニツトU41中にあるベク
トルレジスタVRから必要なデータを読出し、演
算器U20,U21、メモリ・リクエスタU1
0,U11(第5図)に送出する制御、および演
算器U20,U21、メモリ・リクエスタU1
0,U11から送出されてくるデータをベクトル
レジスタVRに書込む制御を行なう。また、ベク
トルレジスタVRの使用の終了を命令制御ユニツ
トU3に知らせる。 ベクトルレジスタVRの各々は多数のベクトル
要素を保持するものであるが、ここでは従来技術
と同様、メモリ素子で構成されることとする。こ
のため、書込みまたは読出しアドレスを指示する
ためのアドレスカウンタ(詳細後述)がベクトル
レジスタVRごとに存在する。これらのアドレス
カウンタは、ベクトルレジスタ制御ユニツトU4
0より制御される。 ベクトルレジスタVRからのベクトル要素の読
み出しは、ベクトルレジスタ制御ユニツトU40
の制御下で、次のように行なわれるのに注意すべ
きである。本実施例では、ある命令の実行によ
り、あるベクトルレジスタVRにベクトルデータ
の要素を書込み中のときに、そのベクトルレジス
タを読出したい後続の命令があれば、このベクト
ルレジスタへ任意数の要素が書込まれた時点で、
書込み動作と並行して読出し動作が開始されるよ
うに、ベクトルレジスタのチエイニングを行う。
しかも、このチエイニングでは、先行する命令に
よる書込み動作が間欠的に行なわれる場合には、
それに応じて後続の命令による読出しも間欠的に
行なわれる。さらに、ある命令が読出し用に二つ
のベクトルレジスタを用いる場合にあつては、こ
れらのベクトルレジスタの少くとも一方に一部の
ベクトルレジスタ要素しか書込みれていない場合
であつても、これらのベクトルレジスタに書込ま
れたベクトル要素の内、同一番号の要素を対にし
て読出す動作を開始する。しかも、これらのベク
トルレジスタへの残りの要素が間欠的に書込まれ
る場合には、同一番号の一対の要素が同時に読出
し可能になるごとに、この一対の要素を読出す。 演算器に供給されるベクトルデータは、通常、
主記憶から読出され、一旦ベクトルレジスタに入
れられ、そこから演算器に供給される。データの
読出しはマシンクロツクに同期して行なわれる
が、主記憶から読出されるベクトル要素は、主記
憶上の読出しの競合(たとえば2つのメモリ・リ
クエスタの同時動作時に生ずる)からマシンサイ
クルごとにベクトルレジスタに連続して書込まれ
るとは限らない。このとき、演算器に供給すべき
ベクトル要素データは、間欠的にベクトルレジス
タに到着し、書込まれていく。このような条件の
もとでも、書込みと並行して読出し動作(チエイ
ニング)を行ない、また、命令が二つのベクトル
レジスタを必要とするときには演算器に対し、2
つのベクトルレジスタの同一のベクトル要素番号
のベクトルデータを同時に供給するようにするこ
とにより、命令の実行開始を早めることができ
る。 () ベクトルレジスタ制御ユニツトの概要 ベクトルレジスタ制御ユニツトU40は第11
図に示すように、命令起動制御回路b400と、
ベクトルレジスタVR0〜VR7の各々に対応し
たベクトルレジスタ制御回路b410〜b417
と、演算器U20,U21とメモリ・リクエスタ
U10,U11の各々に対応したオペランド制御
回路b420,b423と、オペランド制御回路
b420,b423からの出力をそれぞれ保持す
るフリツプフロツプf400〜f407、およ
び、リソース−レジスタ変換回路(以下S−G変
換回路とよぶ)b401,b404,b405、
レジスタ−リソース変換回路(以下G−S変換回
路とよぶ)b402,b403から成る。G−S
変換回路b402,b403は、命令制御ユニツ
トU3により指定される読出し用一つ又は二つの
ベクトルレジスタ番号に対する、ベクトルレジス
タ制御回路b410〜b417のいずれか二つか
らの信号を、命令制御ユニツトU3により指定さ
れるリソース番号に対する、オペランド制御回路
b420〜b427の一つへ送出するものであ
り、S−G変換回路b401(又は404とb4
05)は命令制御ユニトU3により指定された番
号のリソース(又はこれに対するオペランド制御
回路b420〜b427)から送られてくる信号
を、命令制御ユニツトU3により指定された書込
み用のベクトルレジスタ番号に対応するベクトル
レジスタ制御回路b460〜b467の一つ(又
はこの番号のベクトルレジスタ)へ送出するもの
である。 まず、命令起動制御回路b400が命令制御ユ
ニツトU3より、起動信号(線10上)、命令
コード(線11上)、レジスタ番号(線12
上)、リソース種類番号(線13上)、処理ベク
トル長(線14上)を受けとり、命令コードが
ベクトルレジスタの使用を必要とするもののとき
には、次のように動作する。 (1) S−G変換回路、b401,b404,b4
05,G−S変換回路、b402,b403に
変換に必要なリソース番号とベクトルレジスタ
番号、および、それらのセツト信号を送出す
る。 (2) ベクトルレジスタ制御回路b410〜b41
7のうち、指定されたベクトルレジスタ番号の
ものに、書込み、または読出しの起動信号を出
す。 (3) オペランド制御回路b420〜b423のう
ち、指定されたリソースの種類と番号に対する
回路に、ベクトル長データと、そのセツト信
号、および、オペランドを1つしか使用しない
命令においては、それを指示する信号を出す。 命令実行時には、次のように制御信号が伝達さ
れる。ここでは、ベクトルレジスタ0および1か
らデータを読出して演算器0で演算し、結果をベ
クトルレジスタ7に書込み命令の実行時の動作に
ついて説明する。 ベクトルレジスタ0にてあるベクトル要素の読
出しが可能になると、ベクトルレジスタ制御回路
br10からベクトルレジスタ読出し許可信号が線
480に出力される。同じく、ベクトルレジス
タ制御回路b411からも線481に、ベクト
ルレジスタ1でのベクトルレジスタ読出し許可信
号が出力される。G−S変換回路b402,b4
03にて線480,481の信号は、演算器
0に対する出力線490,500に対えら
れ、オペランド制御回路b420に入力される。
オペランド制御回路b420は、これらのベクト
ルレジスタ読出し許可信号が同時に存在すること
を条件に1ベクトル要素ごと派ベクトルデータ送
出信号を作成し、線520に出力する。この信
号は、フリツプフロツプf401で一旦受けた
後、線43にて演算器0にデータ有効信号とし
て送られる。一方、線520上のデータ送出信
号はS−G変換回路b404,b405にも入力
され、それぞれによりベクトルレジスタ番号0,
1に対応した線540,551に出力され、
それぞれ、オアゲートg400又は401および
線470と471により、ベクトルレジスタ
データユニツトU41(第10図参照)中にある
ベクトルレジスタ0と1に対する読出しアドレス
カウンタ(後述)の更新に使用される。本発明で
は、ベクトル要素データ送出信号(線520上
にある)を作成した後、はじめて、ベクトルデー
タの読出し用のアドレスカウンタ(後述)を、次
のアドレスに更新する点が特長の一つである。実
際にデータをよみ出す動作は、2つ(ここではベ
クトルレジスタ0と1)のオペランドのデータ読
出しが可能になつたことを確認しなから行なうわ
けである。 さて、データ有効信号V(線43上)と、ベ
クトル要素データが演算器0に送られ、演算され
る演算結果が線45(第10図)を介してベク
トルレジスタデータユニツトU41に、データ有
効信号Vが線46を介してベクトルレジスタ制
御ユニツトU40に戻される。このデータ有効信
号Vは、S−G変換回路b401により書込みベ
クトルレジスタ#7に対応する線437に伝え
られる。線437の信号に応答して、ベクトル
レジスタ制御回路b417は、ベクトルレジスタ
7への書込みアドレスカウンタ更新信号を線4
27を介してベクトルレジスタデータユニツトU
41に伝えるとともに、ベクトルレジスタ制御回
路b417内にあり、ベクトルレジスタ#7中の
どのベクトル要素まで書込みを行なつたのかポイ
ンタ(後述)の管理に使用する。このポインタ
は、ベクトルレジスタ7を書込みながら、後続の
命令でこのベクトルレジスタ読出しに使用する際
に、書込んだベクトル要素までを読出すように制
御するために使用される。 最終ベクトル要素を演算器0に送出する際に、
それが最終であることを指定するために、オペラ
ンド制御回路b420から、ベクトルデータ送出
信号と同期して最終ベクトルデータ信号Eが線
510に出される。つまり、回路b420は、命
令実行開始時にセツトされる処理ベクトル長を憶
えておき、この数だけ、ベクトルデータ送出信号
を出すと、最終ベクトルデータ信号を出すように
構成されている。この信号は、フリツプフロツプ
f400で一旦記憶された後演算器0に線40
により送出され、最終演算結果と同期して、線
44によりS−G変換回路b401に戻されてく
る。線44はS−G変換回路b401によりベ
クトルレジスタ7に対応する線427に伝達さ
れ、ベクトルレジスタ制御回路b417に入力
る。制御回路b417はベクトルレジスタ7への
書込み動作を終了させるとともに、線16に
て、命令制御ユニツトU3に、ベクトルレジスタ
7の書込が終了したことを伝える。一方、オペラ
ンド制御回路b420からの出力線510上の
最終ベクトルデータ信号EはS−G変換回路b4
04,b405にも入力されて、ベクトルレジス
タ0,1に対応する線530および531に
出力され、さらにオアゲートg410,g411
を経て、線460,461により、ベクトル
レジスタ制御回路b410,b411に入力さ
れ、ベクトルレジスタの読出し動作を終了させる
とともに、線15にて、命令制御ユニツトU3
に、ベクトルレジスタ0,1の読出しが終了した
ことを伝える。 () 命令起動制御回路 第12図に示すように、命令起動制御回路b4
00は命令制御ユニツトU3よりそれぞれ線1
0〜14を介して入力される命令起動信号ST、
命令コード使用レジスタ番号と使用形確、使用リ
ソース種類と番号、処理ベクトル長をそれぞれフ
リツプフロツプf410、レジスタRGR,r4
00,RIG,r401,RST,r402,
RVIR,r403にいずれも命令起動信号STに
応答してセツトする。 フリツプフロツプf410の出力は、S−G/
G−S本換回路b402〜405(第14図)他
への情報のセツト信号として、線419により
送り出されるとともに、内部での各種データ信号
の作成に使用される。 RGR,r400の内容から、S−G変換回路、
G−S変換回路(第11図)に与えるレジスタ番
号と、ベクトルレジスタ制御回路、ベクトルレジ
スタデータユニツトに与える初期化/起動信号を
作成する。通常のベクトル命令では、R1フイー
ルドで書込みベクトルレジスタ、R2/R3フイー
ルドで読出しベクトルレジスタを使用する。この
ため、第11図のS−G変換回路b401には、
R1フイールドのレジスタ番号を、G−S変換回
路b402,S−G変換回路b404にはR″フ
イールドレジスタ番号を、G−S変換回路b40
3,S−G変換回路b405には、R3フイール
ドのレジスタ番号を与えればよい。しかし、第2
図での説明に述べたように、主記憶にベクトルデ
ータを格納する命令においては、R1フイールド
は読出し用のベクトルレジスタ番号を指定するの
でR1フイールドのレジスタ番号を、通常のR2フ
イールドのレジスタ番号を送出する信号線に乗せ
替える必要がある。このために、RGRr400の
GN1フイールドとV1フイールドは併せて線4
39を介して、S−G変換回路b401に送出さ
れるとともに、セレクタS400に第1の組とし
て入力される。一方、レジスタr400のGn2と
V2フイールドは第2の組としてセレクタS40
0に入力され、このいずれかが選択されて、線
449にて、S−G変換回路b404、G−S変
換回路b402に送出される。このセクタS40
0の選択制御はデコーダb438が行い、RIRr
401内の命令コードに対するものか否かに応じ
て前者又は後者が選択されるようにレクタS40
0が制御される。RGRr400のGN3とV3フイ
ールドは線459により、そのまま、S−G変
換回路b405,G−S変換回路b403に送ら
れる。 ベクトルレジスタ制御回路b410〜b417
およびベクトルレジスタに対し、書込みの起動を
行なうために、RGR,r400のR1〜R3フイー
ルドはデコーダb430に送られる。デコーダb
430は、アンドゲートA付デコード有効端子E
を有し、アンドゲートAへの入力線がすべて
“1”のときに、デコーダが有効になる。デコー
ダb430のアンドゲートAには、V1フイール
ド、W1フイールド、およびフリツプフロツプf
410の出力がそれぞれ線580,581,
419が接続されており、またデコードされる
信号として、GN1フイールドが線439を介
して入力されている。デコードが有効すなわち、
GN1フイールドのデータに意味があり(V1フイ
ールド=“1”)、書込みが指定されており(W1フ
イールド=“1”)かつ命令起動(419=
“1”)時に線582を介して入力されGN1フイー
ルドの内容がデコードされ、このGN1フイール
ドがベクトルレジスタ0〜7のいずれかの番号を
有しているときには、出力線8本410〜4
17のうちの1つが“1”になる。ここでは、
GN1フイールドが“0”のとき、出力線41
0が“1”,“1”のとき出力線411が“1”,
“2”のとき出力線412が“1”というようにデ
コードされるとする。今、例として考えている命
令ではRGR,r400内のR1フイールドがベク
トルレジスタ0への書込みを指示(W1=1,
GN1=0)しているので線410のみが“1”
となる。デコーダb430の出力線410〜
417は、ベクトルレジスタ制御回路b410〜
b417(第11図)およびベクトルレジスタデ
ータユニツトU41に送出される。デコーダb4
33〜b435は、ベクトルレジスタの読出しの
起動を行なうためのものである。これらのデコー
ダには、アンドゲートA付デコード有効端子へ、
W1,W2,W3フイールドではなく、それぞれを
反転ゲートg420〜g422で反転ゲートg4
20〜g422で反転した出力が線580,5
91を介して入力され、RGR,r400のフイ
ールドRiが読出し用のとき(Wi=0)のみ、デ
コードが有効となる点が異なるのみで、あとはま
つたくデコーダb430と同様である。デコーダ
b433〜b435の出力は、オアゲートg44
0〜g447を経て、線400〜407によ
り、それぞれベクトルレジスタ制御回路b410
〜b417およびベクトルレジスタデータユニツ
トU41に読出し起動信号として送出される。以
上の実施例においてデコーダb433を省略し、
セレクタS400の出力をデコーダb434に入
力されてもよい。このときには、セレクタS40
0には、さらに、W1フイールドとW2フイールド
の出力もそれぞれGN1,GN2フイールドととも
に入力され、選択されるようにしておく必要があ
る。 デコーダb436は、オペランド制御回路b4
20〜b423に対する起動信号を送出するもの
である。デコーダ有効端子Eには、線419
が、データ端子DIには、RSR,r402からリ
ソース種類、番号が入力され、これらがデコード
されて線440〜443のいずれかが“1”
となる。この線440〜443の信号“1”
は、それぞれオペランド制御回路b420〜b4
23に対する起動信号となる。 デコーダb437は、オペランド制御回路b4
20〜b423にて2つのベクトル要素の同期を
とる必要のない場合を指示するためにある。2つ
のオペランドの同期が不要な場合とは、たとえば
一つのベクトルレジスタから主記憶へのベクトル
データの格納や、一対のベクトルレジスタ間での
ベクトルデータの転送、一つのベクトルレジスタ
内のベクトルデータを変換して他の一つのベクト
ルレジスタに格納するベクトルデータの変換のよ
うに、読出すべきベクトルレジスタが一つであ
り、命令のR3フイールドが不要の場合であり、
このときには、RGR,r400のV3フイールド
が“0”になつている。デコーダb437は2入
力アンドゲートA付デコード有効端子Eがあり、
そこには、線419の他に、RGR,r400
のV3フイールドの出力を反転ゲートg423で
反転させた出力が入力される。デコーダb437
は、RSR,r402から与えられるリソースの
種類、番号を解読して、線450〜453の内の一つ
に“1”を出力する。デコーダb437の出力は、
線450〜453を介してそれぞれオペラン
ド制御回路b420〜b423に接続される。 RSR,r402内のリソース種類番号はまた
線429を介したS−G変換回路b401,b
404,b405,G−S変換回路b402,b
403に共通に入力される。 RVLR,r403内の処理ベクトル長は、線
469により、各オペランド制御回路b420
〜b423に共通に入力される。 () S−G変換回路 第13図は、S−G変換回路b401の内、各
リソースから与えられるデータ有効信号を、命令
制御ユニツトU3により指定されるレジスタ番号
に対するベクトルレジスタ制御回路に供給する回
路を示している。 第13図において、リソース種類番号が線4
29によりデコーダb439のデータ端子に入力
され、書込み用のベクトルレジスタ番号が線4
39を介してリソース対応に設けたレジスタr4
10〜r413に入力され、命令起動信号STが、
線419によりデコーダb439のデコード有
効端子Eに入力される。レジスタr410〜r4
13は、それぞれメモリ・リクエスタ0,1およ
び演算器0,1に対応して設けられている。線
439上にはレジスタ番号GN1の他に、第12
図の説明でも述べたように、レジスタ番号が有効
であるかどうかを指示する信号Vも含まれてい
る。これらの信号はレジスタr410,r413
の内線429上にあるリソース種類、番号に対
応するものにデコーダb439によりリセツトさ
れる。レジスタr410〜r413内のレジスタ
番号GN1は、それぞれデコーダb440〜b4
43のデコード入力端子に、Vビツトはデコーダ
b440〜b443のアンドゲートA付デコーダ
有効端子Eの一方の入力端子に入力される。これ
らの端子Eの他方の入力端子には、それぞれメモ
リ・リクエスタ0,1、演算器0,1からデータ
有効信号がそれぞれ線46,46′,29,
29′を介して入力される。たとえば、レジス
タr410にあるVフイールドの出力“1”がデ
コーダb440のアンドゲートに入力されている
条件下では線46から“1”が入力されるとデ
コーダb440がデコード有効状態となり、レジ
スタr410のGNフイールドの出力がデコード
されて、デコーダの出力端子0〜7のいずれかが
“1”となり、各出力端子に接続して設けられた
オアゲートg430〜g437の出力線420
〜427のいずれかが“1”となる。この出力
線420〜427はベクトルレジスタ0〜7
に対応していて、それぞれベクトルレジスタ制御
回路0〜7にデータ有効信号を供給する。 こうして、一度、レジスタr410〜r413
にデータがセツトされた後、線46の“1”、
“0”の変化が、そのまま、線420〜427
のいずれかに伝えられる。ここで、注意したいこ
とは、レジスタr410〜r413内のレジスタ
番号が異なり限り、線46,46′,29,
29′の信号を同時にそれぞれ線420〜
427の内の対応する線に供給することができる
ことである。この同時供給は最大4つのレジスタ
番号に対して可能である。こうして、4つのリソ
ースを並列に動作させることが可能となる。 なお、S−G変換回路b401の内、各リソー
スから供給される最終ベクトルデータ信号を命令
制御ユニツトU3により指定されるレジスタ番号
に対するベクトルレジスタ制御回路0〜7に供給
する回路部分は、第13図の線46,46′,
29,29′をそれぞれ線44,44′,
26,26′により置換し、線420〜
427を線430〜437により置換すれば
得られる。 S−G変換回路b404は、各リソース対応の
オペランド制御回路0〜3からそれぞれ線52
0〜523を介して入力されるベクトルデータ
送出信号を命令制御ユニツトU3により指定され
るレジスタ番号のベクトルレジスタへ線540
〜543のいずれかを介して送出する回路部分
と、オペランド制御回路0,3から線510〜
513を介して入力される最終ベクトルデータ
信号を、命令制御ユニツトU3により指定される
リソース番号に対するベクトルレジスタ制御回路
0,7に線530,537を介して送出する
回路部分とからなる。前者は、第13図におい
て、線439を線449により置換し、線
46,46′,29,29′をそれぞれ、線
520〜523により置換し、線420〜
427をそれぞれ線540〜547により
置換することにより得られる。後者は、第13図
において、同様に線459、線510〜5
13および530〜537を用いることによ
り得られる。S−G変換回路b405も、回路b
404と同様に形成されるので、詳細は省略す
る、なお、これらの置換後の信号線番号を、第1
3図において信号線番号46,46′,2
9,29′,420〜427の後のカツコ
にて示してある。 () G−S変換回路 第14図は、G−S変換回路b402(第11
図)の詳細を示したものである。命令起動制御回
路b400から線429を介してリソースの種
類、番号が入力され、線449を介してレジス
タ番号が入力され、線419を介してセツト信
号が入力される。線429上のリソースの種
類、番号は、ベクトルレジスタ対応のレジスタr
420〜r427の内、線449上のレジスタ
番号に対応するものにセツトされる。セツトすべ
きレジスタの指定は、線449上のレジスタ番
号がデータ端子に入力され、線419上のセツ
ト信号と、線449上のレジスタ番号の有効を
示す信号Vをデコーダb449のアンドゲートA
に入力されるデコーダb449により制御され
る。レジスタr420〜r427の出力は、それ
ぞれに対応したデコーダb450〜b457に入
力されている。デコーダb450〜b457は、
それぞれベクトルレジスタ制御回路0〜7から信
号線480〜487を介してデコード有効端
子Eに入力されるベクトルレジスタ読出許可信号
が“1”になると、データ入力端子より入力され
ているリソース種類、番号に対応した出力端子の
いずれか1つから“1”を出力する。この結果、
デコーダb450〜b457の0〜3番号の出力
端子にそれぞれ接続されたオアゲートg440〜
g443のいずれかにより、線490〜49
3の内指定されたリソース対応の線が“1”とな
る。線480〜487のいずれかが“0”に
なると、デコーダb450〜b457の内の対応
するものがデコード有効でなくなるので、線4
80〜487の“1”,“0”が対応する信号線
490〜493へ“1”,“0”として伝達さ
れることになる。 なお、一度、レジスタr420〜r427にセ
ツトされたリソース番号種類が相互に異なるとき
は、線480〜487の“1”信号をそれぞ
れ線490〜493内の対応する線に同時に
供給可能であり、この同時供給は最大4つのリソ
ースに対して行いうる。これにより4つのリソー
スの並列動作を可能にする。 なお、第11図のG−S変換回路b403は、
第14図の信号線449を線459により置
換し、線490〜497をそれぞれ線50
0〜507により置換すれば得られる。なお、
第14図には、この置換後の信号線番号を置換す
べき信号線の番号の後にカツコをつけて示してあ
る。 () ベクトルレジスタ制御回路 第15図は、ベクトルレジスタ制御回路b41
0の詳細を示したものである。他のベクトルレジ
スタ制御回路1〜7も全く同一構造で、この図の
線400,410,420,430,
460,480がこれらの信号番号の後のカツ
コ内に記載してある線信号に置換することにより
得られる。この制御回路では、書込み又は読出し
のみの動作と、チエイニング動作(書込み、読出
しの同時動作)の3動作を行なう。 (a) 書込みのみの動作 ベクトルレジスタ0への書込み起動指示が命令
起動制御回路b400(第14図)により線4
10を介して伝えられると、書込み中を示すフリ
ツプフロツプf420がセツトされ、アツプ/ダ
ウンカウンタ(以下U/Dカウンタ)C400が
クリアされる。U/DカウンタC400は、U,
D端子の入力に対して次のような出力を供給す
る。 入 力 出 力 U D (カウンタの内容) 0 0 変らず 0 1 −1される 1 0 +1される 1 1 変らず 線420を介してS−G変換回路b401よ
りデータ有効信号が入力されると、この信号は、
フリツプフロツプf420の出力“1”により開
かれているアンドゲートg420を経て、U/D
カウンタC400のU端子に入力され、カウント
の内容を+1するとともに、そのままベクトルレ
ジスタデータユニツトU41(第10図)に送出
される。S−G変換回路b401から線430
により、最終ベクトルデータ信号がつたえられる
と、この信号はフリツプフロツプf420をリセ
ツトし、書込み中の状態を停止するとともに、直
接線430を介して命令制御ユニツトU3(第1
図)にも送出され、RGSW,r306(第3図)
内の書込み用ベクトルレジスタ番号(たとえば
j)に対応するビツト(Wj)をリセツトする。
なお、線430を他のベクトルレジスタ制御回
路1〜7の対応する出力線431〜437と
一緒に束ねたものが第1図の線15である。 (b) 読出しのみの動作 ベクトルレジスタ0の書込み動作が起動されて
いない状態で、このベクトルレジスタの読出しの
起動指示が命令起動制御回路b400(第11
図)より線400を介して伝えられると、読出
し中を示すフリツプフロツプf421がセツトさ
れる。フリツプフロツプf420はリセツトされ
た状態にあるので、その出力を反転ゲートg45
1、オアゲートg452を介して入力され、また
フリツプフロツプf421の出力が入力される。
アンドゲートg453の出力線480は“1”
となる。線480は読出し可能信号として、G
−S変換回路b402(第11図)に供給され
る。したがつて、命令制御ユニツトU3に関して
説明したように、ある命令においてベクトルレジ
スタが読出し用に使用されているときには、この
ベクトルレジスタを書込み用に用いる後読の命令
はこの読出しが終わるまで起動されない。したが
つて、フリツプフロツプf420は、この読出し
が終了するまでセツトされることはないので、線
480にはフリツプフロツプf421がリセツ
トされるまで読出し可能信号が送出されつづける
ことになる。こうして、ベクルレジスタ0の全要
素の読出しが終了すると、線460を介してS
−G変換回路b404から最終ベクトルデータ信
号が入力され、この信号によりフリツプフロツプ
f421がリセツトされる。 なお、線460は、他のベクトルレジスタ制
御回路b411〜b417内の対応する信号線
461〜467と一緒にして、線16とし
て、命令制御ユニツトU3内のRGSW,r30
6(第3図)に送られ、ベクトルレジスタ0の読
出しが終了したことを知らせ、このレジスタのビ
ツトROをリセツトするのに用いられる。 (c) チエイニング動作 チエイニング動作は、あるベクトルレジスタに
対してはじめにある命令のために書込み動作が指
示され、その動作が終了する前に他の命令のため
に読出し動作が指示されたときに生ずる。書込み
動作が指示されても、データ有効信号と書込みデ
ータがリソースから到達しないと、実際にはベク
トルレジスタには書込みがおこなわれないが、こ
のデータ有効信号の到着と、読出し動作の指示の
時間的関係はどうでもよい。 (c−1) たとえば、書込み動作が線41
0により指示され、フリロツプフロツプf4
20がセツトされ、U/DカウウンタC40
0がリセツトされた後、線420からのデ
ータ有効信号の到着前に、読出し動作が線
400により指示され、フリツプフロツプ5
421がセツトされると、U/DカウンタC
400の出力に接続されているカウンタの内
容が1以上になつていることを検出する正検
出回路b406の出力は“0”であり、反転
ゲートg451の出力も“0”なので、アン
ドゲートg453の出力線480も“0”
のままである。ここで、あるマシンサイクル
nにおいて線420にデータ有効信号がく
ると、アントゲートg450を経て、U/D
カウンタC400に、この信号が入り、この
マシンサイクルnにおいて、U/Dカウンタ
C400の内容は+1になる。すると、正検
出回路b460の出力が“1”となり、オア
ゲートg452、アンドゲートg453を経
て、線480にベクトルレジスタ読出し可
能信号が出力される。線480は、U/D
カウンタC400のD端子に接続されてお
り、マシンサイクル(n+1)において次の
データ有効信号線420から入つてこない
ときには、マシンサイクル(n+1)以降で
はカウンタC400の値は0に戻る。したが
つて、読出し可能信号は線480に1回の
み出力されることになる。その後も、データ
有効信号が間けつ的に入力される場合には、
その都度読出し可能信号線480に出力さ
れる。一方、マシンサイクル(n+1)以降
もデータ有効信号が連続して入力されると、
U端子とD端子に“1”が入力されるのでカ
ウンタC400の値は変化せず“1”のまま
となり、線480には続けて“1”が出力
されることになる。 (c−2) 書込み動作が線410により指
示され、フリツプフロツプf420がセツト
され、U/DカウンタC400がリセツトさ
れた後、データ有効信号が複数マシンサイク
ルにわたり到着して、その都度U/Dカウン
タC400がカウントアツプされて、0でな
い値を表示している状態で、マシンサイクル
nにおいて読出し起動によりフリツプフロツ
プf421がセツトされると仮定する。U/
DカウンタC400の出力に接続されている
正検出回路b460の出力は“1”となつて
いるので、ベクトルレジスタ読出し可能信号
が線480に出力される。線480が
U/DカウンタC400の端子に入力されて
いるので、線420からデータ有効信号が
次のマシンサイクル(n+1)においては入
力されなければ−1され、入力されれば値は
変らない。C/DカウンタC400の内容が
0になるまで、上記動作が繰返し行なわれ
る。読出し起動後あるマシンサイクルまでの
間に線480に出力される読出し可能信号
の数は、フリツプフロツプf421がセツト
される前のU/DカウンタC400の内容
と、その後420から入力されたデータ有
効信号の数の和となる。このように、(c−
1),(c−2)のいずれの場合においてもベ
クトルレジスタに書込まれたベクトル要素数
をこえては読出しがなされないように保証さ
れる。なお、U/DカウンタC400の内容
は、ベクトルレジスタに書込んだベクトル要
素数とそこから読出しベクトル要素数の差分
を表現していると考えることができる。 チエイニング動作中に書込みが完了して、フリ
ツプフロツプf420がリセツトされると、U/
Dカウンタの内容は意味をもたなくなり、(b)の読
出しのみの動作と同等となる。 () オペランド制御回路 第16図は、オペランド制御回路0,b420
の詳細を示したものである。他のオペランド制御
回路1〜3の構成も同じで、この図の信号線番号
を、その後のカツコ内に記した信号線番号に変更
すればよい。 命令起動制御回路b400から起動信号が線
440を介して出されると、セレクタS410に
て、線469上の処理ベクトル長(VL)(必ず
1以上であると仮定する)が選択され、ベクトル
長カウンタ(VLCTR)C403にセツトされ
る。また、この起動信号によりU/DカウンタC
401,C402の内容がクリアされる。さら
に、フリツプフロツプf431がセツトされて、
本オペランド制御回路0の処理が有効になつてこ
とを記憶する。オペランド制御回路0に対応する
メモリ・リクエスタ0を必要とする命令が一つの
ベクトルレジスタの読出ししか必要としない場合
(ここでは命令のR3フイールドがベクトルレジス
タの読出しを指定しないと仮定する)はそれを指
示する信号が命令起動制御回路b400から線
450を介して伝えられて、フリツプフロツプf
430をセツトする。 ここでは、最初に、演算器0を必要とする命令
のR2,R3フイールドともベクトルレジスタの読
出しを指定している場合について説明する。この
場合には、フリツプフロツプf430は“0”で
ある。線490,500はそれぞれG−S変
換回路b402,b403からベクトルレジスタ
読出し許可信号をそれぞれカウンタC401,C
402のU端子に入力する信号線で、この信号の
入力され方には、いろいろのケースがある。 各マシンサイクルごとにこれらのケースに応じ
た動作がなされる。ここでカウンタC401,C
402は、カウンタC400(第15図)と同じ
もので、正検出回路b461,b462は正検出
回路b460(第15図)と同じものである。 (a) 両方とも入力されないケース このケースはさらに、次の4つのケースがあ
る。 (a−1) U/DカウンタC401,C40
2のいずれも0のとき、 (a−2) U/DカウンタC401のみ正の
とき、 (a−3) U/DカウンタC402のみ正の
とき、 (a−4) U/DカウンタC401,C40
2のいずれも正のとき、 (a−1)〜(a−3)のケース これらのケースでは、アンドゲースg461〜
G464のいずれの出力も“1”とはならず、何
らの出力も出されない。 (a−4)のケース このケースはすでに、線490,500を
介してベクトルレジスタ読出し許可信号が送られ
た後に生じる。このときには正検出回路b46
0、b462の出力が“1”になり前者は直接
に、後者はオアゲートg460を経てアンドゲー
トg464に入力される。このアンドゲートg4
64の出力“1”はオアゲートg465を経て、
アンドゲートg466に入力される。アンドゲー
トg466には、フリツプフロツプf431の出
力“1”が入力されている。また、アンドゲート
g466には線630,631が入力されて
いるが、これについては後述する。ここではいず
れも“1”であるとする。アンドゲートg466
の出力線520らベクトルデータ送出信号が出
される。出力線520は、U/DカウンタC4
01,C402のD端子に入力され、カウンタ内
容が1だけ減少される。 また、出力線520は、VLCTR,C403
のセツト信号として入力され、カウンタの値を1
だけ減ずる。すなわち、VLCTR,C403の出
力が−1減算回路b463に接続されて−1さ値
がセレクタS410に入力されている。このとき
もはやセレクタS410の制御端子には、線4
40を介して命令起動信号ができていないので−
1減算回路b463の出力が選択され、
VLCTR,C403にセツトされる。この次の回
路動作は、U/DカウンタC401,C402の
内容に応じて、また、線490〜500から
のベクトルレジスタ読出し許可信号の入力状況に
応じて異なる。 なお、ベクトルデータ送出信号が線520に
出力された場合、1検出回路b464により、
VLCTR,C403の、1減じる前の元の内容が
“1”であることが検出されると、その信号はア
ンドゲートg467にてベクトルデータ送出信号
とアンドがとられた後、最終ベクトルデータ信号
として、線510に乗せられる。また、この線
510上の信号によつて、フリツプフロツプf
431,f430をリセツトする。 (b) 線490の方のみ入力されるケース又は (c) 線500の方のみ入力されるース いずれのケースも動作は同様であるので、ここ
では(b)のケースについて説明する。このケースで
は、さらに、次の二つのケースがある。 (b−1) U/DカウンタC402が“0”
のとき、 (b−2) U/DカウンタC402が“正”
のとき、 (b−1)のケース このときには、正検出回路b462の出力は
“0”であるので、アンドゲートg461〜g4
64のいずれの出力は“1”とならず、従つてオ
アゲートg465の出力、アンドゲートg466
の出力も“0”ではU/DカウンタC401,C
402のD端子入力は“0”のままである。ベク
トルデータ送出信号は線520には出力されな
い。U/DカウンタC401のU端子には、線
490からベクトルレジスタ読出し許可信号が入
力されているので、U/DカウンタC401は+
1される。 (b−1)のケース このときには、正検出回路b462の出力は
“1”であるので、アンドゲートg462の出力
が“1”となり、オアゲートg465、アンドゲ
ートg466を経て、ベクトルデータ送出信号が
線520に送られる。VLCTR,C403、フ
リツプフロツプf430,f431のリセツト等
の動作は(a−4)のケースと同一であるので、
ここでは省略する。線520が“1”となるの
で、U/DカウンタC401,C402のD端子
はいずれも“1”となる。U/DカウンタC40
1のU端子には“1”が入力されているので、カ
ウンタの内容は変らない。U/DカウンタC40
2のU端子には、“0”が入力されているので、
カウンタの内容は−1される。 (d) 線490,500のいずれも同時に入力
されるケース このケースはさらに次の4つのケースに分けら
れる。 (d−1) U/DカウンタC401,C402がい
ずれも0のとき、 (d−2) U/DカウンタC401のみ正のと
き、 (d−3) U/DカウンタC402のみ正のと
き、 (d−4) U/DカウンタC401,C402がい
ずれも正のとき、 (d−1)のケース このケースでは、線490,500上のベ
クトルレジスタ読出し許可信号によりアンドゲー
トg461の出力信号が“1”となり、この結果
ベクトルデータ送出信号が線520に出力され
る。U/DカウンタC401,C402のU端子
は“1”であり、D端子も線520の上の
“1”が入力されるのでカウンタの内容はかわら
ない。VLCTR,C403の制御等の動作は(a
−4)のケースの説明と同一である。 (d−2),(d−3)のケース この両ケースの動作は同様であるので、(d−
2)のケースについて述べる。 (d−2)のケースでは、U/DカウンタC4
01のみ内容が正であるから、正検出器路b46
01のみ内容が正であるから、正検出器路b46
1の出力が“1”となり、アンドゲートg461
およびg463の出力が“1”となる。従互たオ
アゲートg465、アンドゲートg466を経
て、線520に、ベクトルデータ送出信号が送
出されることになる。VLCTR,C403等の制
御は、(a−4)のケースと同一なので、説明は
省略する。U/DカウンタC401,C402の
内容は、(d−1)のケースでの動作と同様なの
で変化しない。 (d−4)のケース このケースでは、U/DカウンタC401,C
402の内容は正であるから、正検出回路b46
1,b462の出力が“1”となり、アンドゲー
トg461〜g464のすべての出力が“1”と
なる。以下の動作は(d−2)のケースと同様
で、ベクトルデータ送出信号が線520に送出
される。U/DカウンタC401,C402の内
容は同様に変化しない。 以上の動作の説明からわかるように、U/Dカ
ウンタC401,C402は2つのオペランド
(ベクトルデータ)の送出に関し同期をとる役割
を果たす。一方のみしかベクトルレジスタ読出し
許可信号がこないときには、それをカウンタ記憶
し(カウンタ+1する)、それを取り出すとカウ
ンター−1していく。ベクトルレジスタ読出し許
可信号が同時に到着したときにはカウンタの内容
は変化しない。 次に、オペランドを一方しか使用しない場合に
ついて説明する。この場合には、オペランド制御
回路の起動時に、オペランドを一方しか使用しな
いことを示すフリツプフロツプf430がセツト
される。この出力は、正検出回路b462の出力
に接続されるオアゲートg460のもう一方の入
力端子に入力され、オアゲートg460の出力を
U/DカウンタC402の内容の如何にかかわら
ず“1”としてしまう。こうすると、線490
から入力されるベクトルレジスタ読出し許可信号
のみによつて、先と同様に、ベクトルデータ送出
信号が作成される。 なお、第16図中に示した線630は、ベク
トルデータ送出信号の送出を許可するベクトルで
ある。これは、たとえば、演算器に対し、一定間
隔以上はなしてベクトルデータ(従つてデータ有
効信号)を送出したいとき(たとえば演算器が連
続してデータを受取ることができないとき)に使
用される。この場合には、この許可信号はオペラ
ンド制御回路内で作成される。たとえば、データ
有効信号によつてリセツトされ、データ有効信号
から一定時間後にセツトされるフリツプフロツプ
の出力がこの許可信号となる。また、メモリ・リ
クエスタに送出するベクトルデータを一時停止す
るとき(主記憶格納がまたされるとき)などにも
使用される。この場合には、この許可信号に主記
憶制御ユニツトU1(第5図参照)、またはメモ
リ・リクエスタにて作成される。線630に
て、ベクトルデータ送出が不許可のとき、線4
90,500から入力されるベクトルレジスタ
読出し許可信号はU/DカウンタC401,C4
02に入力されてカウンタが更新される。線6
30から許可信号が入力されると、線490,
500から信号の入力がなくても、U/Dカウ
ンタC401,C402の内容が正であるため、
アンドゲートg464の出力が“1”となつて、
ベクトルデータ送出信号が線520に出される
ことになる。同時に、U/DカウンタC401,
C402は−1される。 また、タイミング制御回路b465はベクトル
データ送出信号の送出タイミングを制御する回路
である。第18図の説明にて詳述するように、ベ
クトルレジスタに対し読出し書込みをみかけ上同
時に行なうために各ベクトルレジスタを二つのメ
モリ素子にて構成し、各メモリ素子に対して読出
し書込みを交互に行なう。すなわち、あるメモリ
素子に書込みを行なうときには、もう一方のメモ
リ素子は読出しを、次のサイクルにはその逆を行
なうというように制御する。従つて、書込みを行
なつているメモリ素子に対しては同時に読出しを
行なうことはできないので、そのサイクルは読出
しを待たせ、次のサイクルにて読出すように制御
する必要がある。このために、ベクトルデータ送
出信号の送出を一旦またせるように制御する。こ
の役割を相当するのがタイミング制御回路b46
5で、次のサイクルでは、ベクトルデータ送出信
号を送出してはならないと判断されると、タイミ
ング制御回路b465は出力線631をを
“0”としてアンドゲートg466の出力を抑止
する。 具体的には、タイミング制御回路b465は、
次のような動作をする。すなわち、あるマシンサ
イクルにベクトルデータ送出信号が入力される
と、次のマシンサイクル、その2サイクル、4サ
イクル……後のマシンサイクルに“1”を出力す
る。1サイクル、3サイクル……後のマシンサイ
クルには“0”を出力する。このタイミングを第
17図に示す。連続してベクトルデータ送出信号
が入力されると、次のマシンサイクルは“1”が
出力されることから、タイミング制御回路b46
5から連続して“1”が出力されることに注意さ
れたい。 本実施例においては、オペランド制御回路は、
2つのベクトルレジスタの読出し可能信号を入力
した場合について述べているが、3つ以上のベク
トルレジスタの読出し可能信号を入力して、ベク
トルデータ送出信号を作成することも同様に容易
に実現できる。 () ベクトルレジスタデータユニツト 第18図において、8個のベクトルレジスタの
各々はそれぞれベクトルレジスタ回路b470〜
b477中にある各ベクトルレジスタは、その容
量が大きいために、メモリ素子にて構成される。
メモリ素子は、アドレスを与えて、その個所にデ
ータを書込むか、または、その箇所のデータを読
出すが、同時に異なるアドレスについて読出し、
書込みを行なうことはできない。チエイニング動
作を実現するには、あるベクトル要素を書込み、
同時に他のベクトルデータを読出す必要があるの
で、本実施例では、1つのベクトルレジスタに対
し2つのメモリ素子m400,m401にて二つ
のベクトルレジスタを構成し、これらに対して交
互に読出しと書込みを行なう。こうすると異なる
アドレスに対し同時に読出しと書込みを行うこと
ができる。 ベクトル要素の番号付けは偶数番目のベクトル
要素と、奇数番目のベクトル要素がそれぞれ同一
のメモリ素子になるように配置されるとする。 以下に動作の詳細を説明する。ここではベクト
ルレジスタ0に対する書込みおよび読出しについ
て説明するが、他のベクトルレジスタへの動作に
ついてもまったく同様である。 命令が起動されると、ベクトルレジスタ制御ユ
ニツトU40中の命令起動制御回路b400(第
12図)より、S−G変換回路b480、G−S
変換回路b481,b482にリソース種類、番
号が線439を介して、書込みベクトルレジス
タ番号が線439を介して、書込みベクトルレジ
スタ番号(2つオペランドがあるので双方の番
号)が線449,459を介して、以上のセ
ツト信号が線419を介して送られてきて、S
−G変換回路b480、G−S変換回路b48
1,b482中にセツトされる。S−G/G−S
変換回路b480,b481,b482は第13
図、第14図にて説明したものと同一である。 ベクトルレジスタ0への書込みは、次のように
動作する。まず、ベクトルレジスタ0への書込み
開始を指示する信号が、線410を介して命令
起動制御回路b400より送出されてくる。この
信号によつて書込みアドレスカウンタC411を
0にクリアする。書込みアドレスカウンタC41
1の出力は、セレクタS420,s421に入力
される。セレクタS420,s421の他の入力
は読出しアドレスカウンタC410の出力であ
り、これらのセレクタの制御端子にはそれぞれタ
イミング制御回路b482の出力およびそれを反
転ゲートg480で反転した出力が入力される。
タイミング制御回路b482は、1マシンサイク
ルごとに出されるクロツクをトリガタイプフリツ
プフロツプ(図示せず)にて受信するように構成
されており、1マシンサイクルごとに“0”と
“1”を交互に出力する。従つて、タイミング制
御回路b482は、これらのセレクタを、セレク
タs420にて、読出しアドレスカウンタC41
0の出力を選択するときには、セレクタs421
では、書込みアドレスカウンタc411の出力を
選択し、次のマシンサイクルでは、その逆を選択
するように制御する。セレクタs420の出力が
メモリ素子m400のアドレスとして、セレクタ
s421の出力がメモリ素子m401のアドレス
として与えられる。さて、演算器0,1またはメ
モリ・リクエスタ0,1から線45,45′,
29,29′を介して書込みデータがS−G
変換回路b480に到着すると、このデータは線
429で指定されたリソースから線439で
指定されたベクトルレジスタに対応するベクトル
レジスタ回路b470〜b477のいずれかに入
力される。ここでは、ベクトルレジスタ0に書込
むとしているので、回路b470に入力される。
書込みデータは、回路b470の入口に設けられ
たレジスタVRIRE,r430,VRIRO,r44
0にVRIR入力制御回路b484の指示により、
交互にセツトされる。VRIR入力制御回路b48
4には、データ有効信号420が入力され、デ
ータ有効信号420が入力され、データ有効信
号の偶数番目、奇数番目ごとにそれぞれVRIRE,
r430,VRIRO,r440にそれぞれデータ
をセツトするように制御する。書込みを行なうべ
きサイクルが2つのメモリ素子m400,m40
1に交互に割当てられており(詳細後述)、任意
サイクルに任意のベクトル要素に書込みを行なう
ことはできず、1サイクル待たされることがあ
り、このときに、同じベクトルレジスタ回路b4
70に次の書込みデータが到着することが慰るの
で、2つのレジスタVRIRE,VRIROを設け、相
続く二つの書込みデータに異なるメモリ素子m4
00,m401に書込めるようにした。書込みの
指示は、ベクトルレジスタ制御回路0、(第14
図)から線420を介して入力されるデータ有
効信号によりなされる。この信号は、書込みタイ
ミング制御回路b483に入力される。回路48
3は偶数番目/奇数番目の書込み指示に従つて2
マシンサイクル間保持した信号第19図に示すよ
うなタイミングで2本出力し、この出力はそれぞ
れアンドゲートg481,g482に入力され
る。一方、これらのアンゲートには、タイミング
制御回路b482の出力、およびそれを反転ゲー
トg480で反転させた出力が入力され、その出
力がそれぞれメモリ素子m400,m401の書
込み有効信号となる。書込みアドレスカウンタc
411は次のアドレスをさすように+1回路b4
81を経て+1される。この制御はアンドゲート
g481,g482の出力をオアゲートg48で
オアした出力により行なわれる。なお、書込みは
メモリ素子m400,m401に交互に書いてい
くので、書込みアドレスカウンタc411は、メ
モリ素子m400,m401の双方に書込んだ後
に+1すればよいことになるが、ここでは、書込
みアドレスカウンタの下1ビツトを無視した値を
書込みアドレスとして、セレクタs420,s4
21に入力される。これは、読出しアドレスカウ
ンタc410についても同様である。以上述べた
ように、ベクトル要素はメモリ素子m400,m
401に交互に書込まれていく。以上の動作のタ
イムチヤートにして第19図に示す。 ベクトルレジスタ0からの読出しは、次のよう
に動作する。最初に、ベクトルレジスタ0からの
読出し開始を指示する信号が、線400を介し
て命令起動制御回路b400より送出されてく
る。この信号によつて、読出しアドレスカウンタ
c410をクリアする。最初は、読出しアドレス
カウンタc410は0にクルアされているので、
セレクタs420,s421を経て、アドレスが
メモリ素子m400,m401に与えられ、0番
地のデータが読出されて、セレクタs422に入
力される。セレクタs422の制御端子には、タ
イミング制御回路b482の出力を反転ゲートg
480で反転した出力が入力され、いずれのメモ
リ素子から読出されたデータを選択するかが指示
されてメモリm400のよみ出しサイクルにはメ
モリm400の出力を、次のサイクルにはメモリ
m401の出力と交互に選択するように制御され
る。これによつて選択されたデータは、レジスタ
(VROR)r450にて一旦セツトされた後、G
−S変換回路b481,b482により、リソー
ス対応のデータに変換され、たとえば演算器0へ
の被演算数のデータならば、線41によつて、
演算器0へ送出される。メモリ・リクエスタへの
データ(主記憶への格納データ)は1つでよいの
でG−S変換回路を1つ使用すればよい。ここで
は回路b481にて、G−S変換を行なうように
している。ベクトルデータのうち1ベクトル要素
を送出するごとに、ベクトルレジスタ制御ユニツ
トU40より、ベクトルレジスタの読出しアドレ
スカウンタc410の更新信号が、線470を
介して送出される。これによつて、読出しアドレ
スカウンタc410が1ずつ更新される。更新
は、カウンタc410の出力を+1加算回路b4
80を経てカウンタc410の入力に戻すことに
よつて行なう。 以上述べてきたように、ベクトルレジスタユニ
ツトでは、リソースに供給するベクトルデータの
読出し、およびリソースから送出されてくるベク
トルデータの格納を行なう。ここでリソースに供
給するデータは、演算には2つの必要なので、2
つのベクトルデータを揃えてから送出しなければ
ならない。しかも、チエイニング動作によつて、
各ベクトルレジスタに不等間隔で格納される任意
の2つのベクトルレジスタ上のベクトル要素につ
いて、2つともデータが揃つたことを確認した上
で、読出す必要がある。このために、ベクトルレ
ジスタの各々が、読出し可能か否かを検出する回
路と、リソース対応に、2つのデータが読出し可
能を検出する回路を設け、読出し可能のときはじ
めて、ベクトルレジスタからデータを読出す(実
際には、すでにデータが読出されており、その読
出しのために、読出しアドレスカウンタを更新す
る)。 メモリ・リクエスタ メモリ・リクエスタ0の回路の詳細を第20図
に示す。メモリ・リクエスタの動作は、命令起動
時の初期化動作、主記憶からの読出し動作、主記
憶への格納動作の3つに分けられる。 () 命令起動時の初期化動作 第20図において、命令制御ユニツトU3によ
り、線10を介して命令起動信号が、線13
を介して、リソース種類、番号が線11を介し
て、命令コードが、線12を介してレジスタ番
号が、線14を介して、処理ベクトル長が送ら
れてくる。線13上のリソース種類、番号は、
デコーダb100でデコードされ、自メモリ・リ
クエスタであることが指定されていると、デコー
ダb100より“1”が出力され、線10上の
命令起動信号とともに、アンドゲートg100に
入力され、その出力線100に“1”が出力さ
れる。線100はフリツプフロツプf100に
入力されてフリツプフロツプをセツトするととも
に、レジスタMIR,r100,MGR,r101
のセツト端子に入力されて、それぞれ、命令コー
ド、およびレジスタ番号をMIR,MGRにセツト
する。また線100はセレクタs103の制御
端子に入力されて、線14上の処理ベクトル長
を選択し、処理ベクトル長カウンタ
(MVLCTR)、c100に処理ベクトル長にセツ
トする。MVLCTR,c100のセツト端子に
も、線100が接続されている。以上で初期化
動作を終了する。 () 主記憶から読出し動作 主記憶からの読出し動作であることは、命令コ
ードがセツトされているMIR,r100の出力
をデコーダb101でデコードすることによつて
知る。デコーダb101の出力線20は主記憶
制御ユニツトU1(第1図参照)に送られて、読
出しか、格納かの動作指定をするとともに、セレ
クタs104,s105,s106,s107の
制御端子に入力され、それぞれのセレクタの
“F”と記入されている側を選択する。なお、主
記憶への格納がMIR,r100にて指定してい
る場合には、セレクタの“S”と記入されている
側を選択する。 ベクトルアドレスレジスタU5、およびベクト
ルアドレス増分レジスタU6(第1図参照)の出
力がそれぞれ線18、線19に介してそれぞ
れセレクタs100,s101に入力されて、レ
ジスタ番号がセツトされているMGR,r101
の出力により指定されたベクトルアドレスレジス
タU5、およびベクトルアドレス増分レジスタU
6の内容が選択され、さらに、ベクトルアドレス
はセレクタs102を経て作業用ベクトルアドレ
スレジスタ(WVAR)r100、および作業用
ベクトルアドレス増分レジスタ(WVAIR)r1
11にセツトされる。両レジスタへのセツトは、
フリツプフロツプf100に出力線101によ
り制御される。また、セレクタs102の制御端
子にも線101が接続され、セレクタs100
の出力を選択するように制御する。ベクトルアド
レスWVAR,r110にセツトされると、線
21により、主記憶制御ユニツトU1(第1図)
に最初のベクトル要素アドレスが送られる。同時
に、MVLCTR,c100の出力に接続された非
零検出回路b104より(処理ベクトル長として
1以上がMVLCTR)にセツトされているとする
と)“1”が出力され、セレクタs107を経て、
線23によりアドレス有効信号として、主記憶
制御ユニツトU1により送られる。線23はま
た、MVLCTR,c100の制御端子に入力され
て、MVLCTR,c100に内容を−1する。1
減じた値はMVLCTR,c100の出力に接続さ
れた1減算回路b103により作成され、セレク
タs103を経て、MVLCTR,r100に入力
される。さらに、線23は、WVAR,r11
0の制御端子にも入力され、WVAR,r110
と、WVAIR,r111の内容を加算器b102
で加算した結果を、セレクタs102を経て再び
WVAIR,r110にセツトするように制御す
る。これによつて、次のベクトル要素アドレスが
WVAR,r110にセツトされたことになる。
これを次々と繰返して、ベクトルアドレスを求め
てはアドレス有効信号(線23)とともに、主
記憶制御ユニツトU1に線21を介して送出
し、主記憶の読出し動作が行なわれる。 主記憶での読出し動作が完了すると、主記憶制
御ユニツトU1より線24を介して読出しデー
タが、線25を介して、データ有効信号が返さ
れる。線24上の読出しデータは、セレクタs
105を経て、データレジスタDR,r120に
入力され、線25がセレクタs104を経て、
DR,r120のセツト端子に入力されて、読出
しデータが、DR,r120にセツトされ、その
出力が線29を介してベクトルレジスタデータ
ユニツトU41(第10図)に送られる。また、
線25上のデータ有効信号はフリツプフロツ
プ、f102に一旦セツトされ、線30によ
り、ベクトルレジスタ制御ユニツトU40に送ら
れる。 MVLCTR,c100が減算していき、内容が
“1”になると、1検出回路b105によつて、
最終ベクトル要素であることが検出され、線3
2によつて、最終レジスタデータ信号が、主記憶
制御ユニツトU1にベクトルアドレス(線2
1)、アドレス有効信号(線23)とともに送
出され、線33によつて、読出しデータと同期
して戻される。線33上の最終ベクトルデータ
信号は、フリツプフロツプf103にて一旦セツ
トされ、セレクタs106を経て、線26によ
り、ベクトルレジスタ制御ユニツトU4(第10
図)に送られたが、MVLCTR,c100の内容
は、1減算回路b103を経て“0”になると、
非零検出回路b104は“0”を出力し、アドレ
ス有効信号の送出が停止される。以上で、ベクト
ルデータの読出し動作が終了する。 () ベクトルデータの格納動作 ベクトルデータの格納においては、先ず、格納
できることを指定する信号が、線20を介して
主記憶制御ユニツトU1に送られる。この信号は
MIR,r100の内容をデコーダb101でデ
コードすることにより作成される。格納すべきデ
ータの主記憶アドレスの送出は、読出し動作とま
つたく同じである。すなわち、ベクトルアドレス
レジスタおよびベクトルアドレス増分レジスタ中
の指定された1つがセレクタs100,s101
により選択されて、それぞれWVAR,r110,
WVAIR,r120にセツトされる。WVAR,
r110の出力線21により主記憶制御ユニツ
トU1にベクトルアドレスが送られることも読出
し動作と同様である。 格納されるデータは、線27により、データ
有効信号(線28上)とともに、ベクトルレジ
スタユニツトU4より送られてくる。ベクトルデ
ータはセレクタs105を経て、DR,r120
にセツトされる。DR,r120へのセツトの制
御は、線28上のデータ有効信号をセレクタs
105を経てDR,r120のセツト端子に入力
することにより行なう。線28上のデータ有効
信号はまた、フリツプフロツプ、f101にも入
力され、一旦セツトされた後、その出力は、セレ
クタs107を経て、線23によりDR,r1
20上の格納すべきベクトルデータとともに主記
憶制御ユニツトU1へおくられる。これによつ
て、主記憶制御ユニツトは、主記憶への書込み動
作を行なう。線23上のアドレス有効信号は、
WVAR,r110のセツト端子に入力されて、
WVAR,r110の更新に使用されることは読
出し動作と同様である。以上のようにして、ベク
トルレジスタユニツトから格納すべきデータとデ
ータ有効信号が送られてくるたびに、そのアドレ
スを付して主記憶制御ユニツトへ送出すると同時
に、WVAR,r110を更新して、次のベクト
ルデータの格納にそなえる。これを、ベクトルレ
ジスタユニツトからデータが送られてくる限り繰
返し行なう。 なお、格納動作においては、MVLCTR,c1
00は、読出し動作と同様に動作はするが、意味
はもたない。最終ベクトルデータ信号が線32
により主記憶制御ユニツトにおくられても、格納
動作時は無視される。 演算器 第21図は、演算器0の概略を示したものであ
る。演算器1も同一構造である。本実施例におい
ては、演算回路b210〜b213はすでに公知
のごとく、各々への入力に対する部分演算を演算
制御回路b201〜b204の制御の下で行なう
ものである。ここで、パイプライン演算は4つの
ステージに分けて実行されると仮定しているが、
このステージ数に特に制限はない。又、演算器
0,1は命令で指定される各種の演算を行いうる
ものとする。本実施例においては、入力オペラン
ドとしてベクトルデータ、およびそのデータ有効
信号が入力されると、パイプライン・ステージに
よつて演算され、結果のベクトルデータと、デー
タ有効信号が同期して出力されること、最終ベク
トルデータ信号が入力されたときには、この信号
もデータ有効信号と同期して出力されることが特
長である。 動作の概略を以下に説明する。 命令制御ユニツトU3より線10を介して命
令起動信号がアンドゲートg200に入力され、
線13を介してリソース種類、番号がデコーダ
b200に入力され、線11を介して命令コー
ドがレジスタr200に入力される。デコーダb
200の出力は、それへの入力が自演算器に対す
るものであるときに、“1”となり、アンドゲー
トg200を介してレジスタAIR,r200に線
11上の命令コードのセツトを指示する。
AIR,r200の出力は、演算制御回路b201
〜b204に入力されて、各ステージにおける演
算回路b210〜b213の動作を制御する。 一方、ベクトルレジスタユニツトから、演算す
べきベクトルデータが線43により送出されて
くると、ベクトルデータはレジスタr210,r
220に、データ有効信号はフリツプフロツプf
200にセツトされる。データ有効信号(4
3)はレジスタr210,r220へのセツト信
号としても使用される。レジスタr210,r2
20上の内容は、演算回路b210にて演算され
て、次のサイクルにはレジスタr211,r22
1に中間結果がセツトされる。レジスタへのセツ
トはフリツプフロツプf200の出力が使用さ
れ、この出力はまたフリツプフロツプf210に
伝えられる。同様に、レジスタr211,r21
2の出力は、演算回路b211に入力されて演算
を行ない、次のサイクルには、レジスタr21
2,r222に中間結果がセツトされる。これと
同期して、フリツプフロツプf201の出力は、
フリツプフロツプf202に移される。以下、こ
れを繰返して、演算回路b212、レジスタr2
13,演算回路b213とデータが移動するとと
もに演算が進行し、最終結果がレジスタr214
にセツトされる。データ有効信号もフリツプフロ
ツプf202からフリツプフロツプf203、フ
リツプフロツプf204と移される。演算結果
と、そのデータが有効であることを示すデータ有
効信号は、それぞれ、線45と線46によ
り、ベクトルレジスタユニツトに戻される。 演算すべきデータがレジスタr210,r22
0から、レジスタr211,r221に移される
と、次の演算すべきデータがレジスタr210,
r220にセツトされることは、一般のパイプラ
イン演算器と同様である。 最終ベクトルデータ信号線40により、フリ
ツプフロツプf210に入力されると、レジスタ
へのセツトと同様にして、フリツプフロツプf2
10にセツトされる。データ有効信号が、フリツ
プフロツプf200〜f204を移動するのと同
期して、最終ベクトルデータ信号がフリツプフロ
ツプf210〜f214を移動し、線44に出
力され、ベクトルレジスタユニツトU4に戻され
る。 以上述べたように、本発明における演算器では
ベクトルデータと、データ有効信号が同期して入
力され、データ有効信号のパイプラインステージ
を移動するのと同期して、データが演算され、結
果がデータ有効信号と同期に出力されることが特
長である。最終ベクトルデータ信号についても同
様である。 以上のごこく、本発明によれば、演算器を動作
させたままで、不等間隔の読み出しおよびそれに
同期した結果の書き込みを行いうる。
[Table] Line 32 which is the output of the instruction selection circuit b394
9. Line 321 may be used in place of the output of out pointer (OP) register r311, line 329, and output line 321 of AND gate g305 in FIG. 3, respectively. Therefore,
The out pointer register r311, ternary counter b315, selector S303, and AND gate g305 shown in FIG. 3 are no longer needed. Note that the selector S380 in FIG. 8 indicates the type of resource required by the instruction in the instruction queue register;
The number is selected according to the out pointer (on line 329), and this output line 311 is
It is used in place of the output line of the resource use check circuit b306 in FIG. As described above, the instruction control unit according to the present invention decodes read instructions one after another, activates instructions that can be activated one after another, and places instructions that cannot be activated into the instruction queue register. And when the resource is free and the vector register becomes available,
By activating instructions regardless of the order in which they are decoded, provided that there are no restrictions on the order in which vector registers are used, the time that resources and vector registers are free is shortened, and instructions can be processed in a shorter time. can be done. Vector register unit (1) Overview Figure 10 shows vector register unit U4.
is divided into a vector register control unit U40 and a vector register data unit U41. The vector register control unit U40 reads necessary data from the vector register VR in the vector register data unit U41 based on the command from the instruction control unit U3, and then outputs the data to the arithmetic units U20, U21 and the memory requester U1.
0, U11 (FIG. 5), arithmetic units U20, U21, and memory requester U1.
Control is performed to write the data sent from 0 and U11 into the vector register VR. It also notifies the instruction control unit U3 of the end of use of the vector register VR. Each of the vector registers VR holds a large number of vector elements, and here it is assumed that it is composed of a memory element as in the prior art. Therefore, an address counter (details will be described later) for indicating a write or read address is provided for each vector register VR. These address counters are controlled by the vector register control unit U4.
Controlled from 0. Reading of vector elements from vector register VR is performed by vector register control unit U40.
It should be noted that under the control of In this embodiment, when an element of vector data is being written to a certain vector register VR by executing a certain instruction, if there is a subsequent instruction that wants to read that vector register, any number of elements will be written to this vector register. When it is inserted,
Vector register chaining is performed so that a read operation is started in parallel with a write operation.
Moreover, with this chaining, if the write operation by the preceding instruction is performed intermittently,
Accordingly, reading by subsequent instructions is also performed intermittently. Furthermore, if an instruction uses two vector registers for reading, even if only some vector register elements have been written to at least one of these vector registers, these vector registers are Among the vector elements written in the vector element, the operation of reading elements with the same number as a pair is started. Furthermore, if the remaining elements to these vector registers are written intermittently, a pair of elements with the same number is read out every time the pair of elements becomes readable simultaneously. The vector data supplied to the arithmetic unit is usually
It is read from the main memory, temporarily stored in a vector register, and then supplied to the arithmetic unit from there. Data reading is performed in synchronization with the machine clock, but vector elements read from main memory are stored in vector registers every machine cycle due to read contention on main memory (for example, occurring when two memory requesters operate simultaneously). may not be written consecutively. At this time, vector element data to be supplied to the arithmetic unit intermittently arrives at the vector register and is written therein. Even under these conditions, read operations (chaining) are performed in parallel with writes, and when an instruction requires two vector registers, two
By simultaneously supplying vector data of the same vector element number of two vector registers, execution of an instruction can be started earlier. () Overview of vector register control unit The vector register control unit U40 is the 11th
As shown in the figure, an instruction activation control circuit b400,
Vector register control circuits b410 to b417 corresponding to vector registers VR0 to VR7, respectively
, operand control circuits b420 and b423 corresponding to the arithmetic units U20 and U21 and memory requesters U10 and U11, respectively, flip-flops f400 to f407 that hold outputs from the operand control circuits b420 and b423, respectively, and resource registers. Conversion circuit (hereinafter referred to as SG conversion circuit) b401, b404, b405,
It consists of a register-resource conversion circuit (hereinafter referred to as a G-S conversion circuit) b402 and b403. G-S
The conversion circuits b402 and b403 convert signals from any two of the vector register control circuits b410 to b417 to one or two vector register numbers for reading specified by the instruction control unit U3. It is sent to one of the operand control circuits b420 to b427 for the resource number to be sent to the SG conversion circuit b401 (or 404 and b4
05) corresponds to the vector register number for writing specified by the instruction control unit U3, in response to the signal sent from the resource with the number specified by the instruction control unit U3 (or the operand control circuits b420 to b427 for this). It is sent to one of the vector register control circuits b460 to b467 (or the vector register with this number). First, the instruction activation control circuit b400 receives an activation signal (on line 10), an instruction code (on line 11), a register number (on line 12) from the instruction control unit U3.
above), a resource type number (on line 13), and a processing vector length (on line 14), and when the instruction code requires the use of a vector register, the operation is as follows. (1) SG conversion circuit, b401, b404, b4
05, G-S conversion circuit, sends the resource number and vector register number necessary for conversion, and their set signals to b402 and b403. (2) Vector register control circuit b410 to b41
7, a write or read activation signal is issued to the specified vector register number. (3) Out of the operand control circuits b420 to b423, instruct the circuit for the specified resource type and number to receive the vector length data, its set signal, and for instructions that use only one operand. give a signal. When executing an instruction, control signals are transmitted as follows. Here, an explanation will be given of the operation when executing an instruction to read data from vector registers 0 and 1, perform arithmetic operations on arithmetic unit 0, and write the result to vector register 7. When it becomes possible to read a certain vector element in vector register 0, the vector register control circuit
A vector register read enable signal is output from br10 to line 480. Similarly, a vector register read permission signal for vector register 1 is outputted to line 481 from vector register control circuit b411. G-S conversion circuit b402, b4
At 03, signals on lines 480 and 481 are connected to output lines 490 and 500 for arithmetic unit 0, and are input to operand control circuit b420.
The operand control circuit b420 creates a vector data sending signal for each vector element and outputs it to the line 520 on the condition that these vector register read permission signals are present at the same time. This signal is once received by the flip-flop f401 and then sent to the arithmetic unit 0 via a line 43 as a data valid signal. On the other hand, the data sending signal on line 520 is also input to SG conversion circuits b404 and b405, and vector register numbers 0,
It is output to lines 540 and 551 corresponding to 1,
Or gates g400 or 401 and lines 470 and 471, respectively, are used to update read address counters (described below) for vector registers 0 and 1 in vector register data unit U41 (see FIG. 10). One of the features of the present invention is that the address counter (described later) for reading vector data is updated to the next address only after the vector element data sending signal (on line 520) is created. . The actual data reading operation is performed after confirming that it is now possible to read data from the two operands (vector registers 0 and 1 in this case). Now, the data valid signal V (on the line 43) and the vector element data are sent to the arithmetic unit 0, and the result of the operation is sent to the vector register data unit U41 via the line 45 (FIG. 10) as the data valid signal. V is returned via line 46 to vector register control unit U40. This data valid signal V is transmitted by the SG conversion circuit b401 to the line 437 corresponding to write vector register #7. In response to the signal on line 437, vector register control circuit b417 sends a write address counter update signal to vector register 7 to line 4.
27 to the vector register data unit U
It is located in the vector register control circuit b417 and is used to manage a pointer (described later) to indicate which vector element in vector register #7 has been written. This pointer is used to control reading up to the written vector element when the vector register 7 is written and used for reading this vector register in a subsequent instruction. When sending the final vector element to arithmetic unit 0,
To designate that it is final, operand control circuit b420 issues a final vector data signal E on line 510 in synchronization with the vector data send signal. That is, the circuit b420 is configured to memorize the processing vector length that is set at the start of instruction execution, and output the final vector data signal after outputting this number of vector data output signals. This signal is once stored in flip-flop f400 and then sent to arithmetic unit 0 via line 40.
It is sent back to the SG conversion circuit b401 via line 44 in synchronization with the final calculation result. The line 44 is transmitted to the line 427 corresponding to the vector register 7 by the SG conversion circuit b401, and is input to the vector register control circuit b417. The control circuit b417 terminates the write operation to the vector register 7, and notifies the instruction control unit U3 via line 16 that the write operation to the vector register 7 has been completed. On the other hand, the final vector data signal E on the output line 510 from the operand control circuit b420 is transmitted to the S-G conversion circuit b4.
04, b405 and output to lines 530 and 531 corresponding to vector registers 0, 1, and further OR gates g410, g411
It is then input to the vector register control circuits b410 and b411 via lines 460 and 461 to complete the read operation of the vector register, and is input to the instruction control unit U3 via line 15.
is notified that reading of vector registers 0 and 1 has been completed. () Instruction activation control circuit As shown in FIG. 12, instruction activation control circuit b4
00 is each line 1 from the command control unit U3.
a command activation signal ST input via 0 to 14;
The register number and type used by the instruction code, the type and number of resources used, and the processing vector length are stored in flip-flop f410 and registers RGR and r4, respectively.
00, RIG, r401, RST, r402,
Both RVIR and r403 are set in response to the instruction activation signal ST. The output of flip-flop f410 is S-G/
It is sent out via a line 419 as an information set signal to the G-S switching circuits b402 to b405 (FIG. 14) and others, and is also used to create various data signals internally. From the contents of RGR, r400, the SG conversion circuit,
A register number to be given to the G-S conversion circuit (FIG. 11) and an initialization/activation signal to be given to the vector register control circuit and vector register data unit are created. In a normal vector instruction, the R1 field uses the write vector register, and the R2/R3 fields use the read vector register. Therefore, the SG conversion circuit b401 in FIG.
R1 field register number, G-S conversion circuit b402, S-G conversion circuit b404, R'' field register number, G-S conversion circuit b40
3. The register number of the R3 field may be given to the SG conversion circuit b405. However, the second
As mentioned in the explanation with the figure, in the instruction to store vector data in main memory, the R1 field specifies the vector register number for reading, so the register number of the R1 field and the register number of the normal R2 field are used. It is necessary to transfer it to the outgoing signal line. For this purpose, RGRr400
GN1 field and V1 field together are line 4
39, it is sent to the SG conversion circuit b401, and is also input to the selector S400 as the first set. On the other hand, Gn2 of register r400 and
V2 field has selector S40 as the second set
0, one of them is selected and sent on a line 449 to the SG conversion circuit b404 and the GS conversion circuit b402. This sector S40
Decoder b438 performs selection control of 0, and RIRr
The director S40 selects the former or the latter depending on whether it is for an instruction code in 401 or not.
0 is controlled. The GN3 and V3 fields of the RGRr 400 are sent as they are to the SG conversion circuit b405 and the GS conversion circuit b403 via a line 459. Vector register control circuit b410 to b417
The R1-R3 fields of RGR, r400 are sent to decoder b430 to initiate a write to the vector register. decoder b
430 is a decode enable terminal E with AND gate A
The decoder is enabled when all input lines to AND gate A are "1". AND gate A of decoder b430 contains the V1 field, the W1 field, and the flip-flop f
The outputs of 410 are connected to lines 580, 581, and
419 is connected, and the GN1 field is input via line 439 as a signal to be decoded. decoding is enabled i.e.
The data in the GN1 field has meaning (V1 field = “1”), writing is specified (W1 field = “1”), and the instruction is activated (419 =
1), the contents of the GN1 field input via line 582 are decoded, and when this GN1 field has a number from one of vector registers 0 to 7, eight output lines 410 to 4 are input.
One of the 17 becomes "1". here,
When GN1 field is “0”, output line 41
When 0 is “1”, the output line 411 is “1”,
Assume that the output line 412 is decoded as "1" when it is "2". In the instruction we are currently considering as an example, the R1 field in RGR, r400 instructs writing to vector register 0 (W1 = 1,
GN1=0), so only line 410 is “1”
becomes. Output line 410 of decoder b430~
417 is a vector register control circuit b410~
b417 (FIG. 11) and the vector register data unit U41. decoder b4
33 to b435 are for starting reading of the vector register. These decoders have a decode enable terminal with AND gate A,
Instead of W1, W2, W3 fields, each is inverted gate g4 with inverted gates g420 to g422.
The inverted output from 20 to g422 is line 580,5
91 and the decoding is valid only when the field Ri of RGR, r400 is for reading (Wi=0), and the rest is the same as the Matsutaku decoder b430. The outputs of decoders b433 to b435 are output from OR gate g44.
0 to g447, and lines 400 to 407 respectively to the vector register control circuit b410.
~b417 and the vector register data unit U41 as a read start signal. In the above embodiment, the decoder b433 is omitted,
The output of selector S400 may be input to decoder b434. At this time, selector S40
0, the outputs of the W1 field and W2 field must also be input and selected together with the GN1 and GN2 fields, respectively. Decoder b436 is operand control circuit b4
20 to b423. Decoder valid terminal E has line 419
However, the resource type and number are input from RSR, r402 to the data terminal DI, and these are decoded and one of the lines 440 to 443 becomes "1".
becomes. Signal “1” on this line 440-443
are operand control circuits b420 to b4, respectively.
This serves as an activation signal for 23. Decoder b437 is operand control circuit b4
20 to b423 are provided to indicate cases where it is not necessary to synchronize two vector elements. Cases where synchronization of two operands is not required include, for example, storing vector data from one vector register to main memory, transferring vector data between a pair of vector registers, or converting vector data in one vector register. When there is only one vector register to read and the R3 field of the instruction is not required, such as when converting vector data to be stored in one other vector register,
At this time, the V3 field of RGR, r400 is "0". The decoder b437 has a decode enable terminal E with a 2-input AND gate A.
There, in addition to line 419, RGR, r400
An output obtained by inverting the output of the V3 field of 1 by an inverting gate g423 is input. decoder b437
deciphers the resource type and number given from RSR,r 402 and outputs "1" to one of lines 450 to 453. The output of decoder b437 is
They are connected to operand control circuits b420 to b423 via lines 450 to 453, respectively. The resource type number in RSR, r402 is also the SG conversion circuit b401, b via line 429.
404, b405, G-S conversion circuit b402, b
403 is commonly input. The processing vector length in RVLR, r403 is determined by line 469 for each operand control circuit b420.
~b423 are commonly input. () SG conversion circuit FIG. 13 shows a circuit in the SG conversion circuit b401 that supplies the data valid signal given from each resource to the vector register control circuit for the register number specified by the instruction control unit U3. It shows. In Figure 13, the resource type number is line 4.
29 is input to the data terminal of decoder b439, and the vector register number for writing is input to line 4.
Register r4 provided for resource via 39
10 to r413, and the command activation signal ST is
It is inputted to the decode valid terminal E of the decoder b439 through a line 419. Registers r410 to r4
13 are provided corresponding to memory requesters 0 and 1 and arithmetic units 0 and 1, respectively. On the line 439, in addition to the register number GN1, there is also the 12th register number.
As mentioned in the explanation of the figure, a signal V indicating whether the register number is valid is also included. These signals are in registers r410 and r413.
The resource type and number on the extension 429 are reset by the decoder b439. Register numbers GN1 in registers r410 to r413 correspond to decoders b440 to b4, respectively.
The V bit is input to one input terminal of the decoder valid terminal E with AND gate A of the decoders b440 to b443. The other input terminals of these terminals E receive data valid signals from memory requesters 0 and 1 and arithmetic units 0 and 1, respectively, through lines 46, 46', 29, and
29'. For example, under the condition that the output "1" of the V field in the register r410 is input to the AND gate of the decoder b440, when "1" is input from the line 46, the decoder b440 enters the decoding enabled state, and the GN of the register r410 The output of the field is decoded and any of the output terminals 0 to 7 of the decoder becomes "1", and the output line 420 of the OR gates g430 to g437 connected to each output terminal is output.
-427 becomes "1". These output lines 420-427 are vector registers 0-7
, and supply data valid signals to vector register control circuits 0 to 7, respectively. In this way, once registers r410 to r413
After the data is set to “1” on line 46,
The change of “0” is as it is, lines 420 to 427
can be communicated to either. What should be noted here is that as long as the register numbers in registers r410 to r413 are different, lines 46, 46', 29,
29' signals simultaneously on lines 420 to 420, respectively.
427 to the corresponding line. This simultaneous supply is possible for up to four register numbers. In this way, it becomes possible to operate four resources in parallel. The circuit portion of the SG conversion circuit b401 that supplies the final vector data signal supplied from each resource to the vector register control circuits 0 to 7 corresponding to the register number designated by the instruction control unit U3 is shown in FIG. lines 46, 46',
29 and 29' are connected to lines 44 and 44', respectively.
26,26', line 420~
It can be obtained by replacing 427 with lines 430-437. The SG conversion circuit b404 connects lines 52 from the operand control circuits 0 to 3 corresponding to each resource.
The vector data sending signal input via lines 0 to 523 is sent to the vector register of the register number specified by the instruction control unit U3 via line 540.
~ 543, and from the operand control circuits 0, 3 to lines 510 ~
513 to the vector register control circuits 0 and 7 for the resource number designated by the instruction control unit U3 via lines 530 and 537. In the former case, in FIG. 13, line 439 is replaced by line 449, lines 46, 46', 29, and 29' are respectively replaced by lines 520 to 523, and lines 420 to
427 by lines 540 to 547, respectively. The latter is similarly indicated by line 459 and lines 510 to 5 in FIG.
13 and 530-537. The SG conversion circuit b405 is also the circuit b
404, so the details are omitted.The signal line numbers after these replacements are
In Figure 3, signal line numbers 46, 46', 2
It is shown in the bracket after 9, 29', 420-427. () G-S conversion circuit Fig. 14 shows the G-S conversion circuit b402 (11th
Figure) shows the details. The resource type and number are input from the instruction activation control circuit b400 via line 429, the register number is input via line 449, and the set signal is input via line 419. The type and number of the resource on the line 429 are the register r corresponding to the vector register.
420 to r427, which corresponds to the register number on line 449. To specify the register to be set, the register number on the line 449 is input to the data terminal, and the set signal on the line 419 and the signal V indicating the validity of the register number on the line 449 are input to the AND gate A of the decoder b449.
It is controlled by a decoder b449 input to. The outputs of registers r420 to r427 are input to corresponding decoders b450 to b457, respectively. Decoders b450 to b457 are
When the vector register read permission signal input from the vector register control circuits 0 to 7 to the decode valid terminal E via the signal lines 480 to 487 becomes "1", the resource type and number input from the data input terminal are changed. Output "1" from any one of the corresponding output terminals. As a result,
OR gates g440~ connected to output terminals numbered 0~3 of decoders b450~b457, respectively
Lines 490-49 by any of g443
The line corresponding to the specified resource among 3 becomes "1". When any of the lines 480 to 487 becomes "0", the corresponding one of the decoders b450 to b457 is no longer valid for decoding, so the line 4
"1" and "0" of 80 to 487 are transmitted to corresponding signal lines 490 to 493 as "1" and "0". Note that once the resource number types set in the registers r420 to r427 are different from each other, the "1" signals on the lines 480 to 487 can be simultaneously supplied to the corresponding lines in the lines 490 to 493, respectively. Simultaneous provisioning can be performed for up to four resources. This allows parallel operation of four resources. Note that the G-S conversion circuit b403 in FIG.
Signal line 449 in FIG. 14 is replaced by line 459, and lines 490-497 are each replaced by line 50.
It can be obtained by substitution with 0 to 507. In addition,
In FIG. 14, the signal line numbers after the replacement are shown in brackets after the number of the signal line to be replaced. () Vector register control circuit Figure 15 shows the vector register control circuit b41.
This shows the details of 0. The other vector register control circuits 1 to 7 have exactly the same structure, and the lines 400, 410, 420, 430 in this figure,
460 and 480 can be obtained by replacing them with the line signals listed in brackets after these signal numbers. This control circuit performs three operations: a write or read only operation and a chaining operation (simultaneous write and read operations). (a) Write-only operation A write start instruction to vector register 0 is sent to line 4 by the instruction start control circuit b400 (Fig. 14).
10, flip-flop F420 indicating that writing is in progress is set, and up/down counter (hereinafter referred to as U/D counter) C400 is cleared. The U/D counter C400 has U,
The following output is supplied to the input of the D terminal. Input Output UD (Counter contents) 0 0 Unchanged 0 1 -1 1 0 +1 1 1 Unchanged When a data valid signal is input from the S-G conversion circuit b401 via the line 420 , this signal is
Through the AND gate g420 opened by the output “1” of the flip-flop f420, the U/D
It is input to the U terminal of the counter C400, increments the count by 1, and sends it as is to the vector register data unit U41 (FIG. 10). Line 430 from SG conversion circuit b401
When the final vector data signal is passed, this signal resets the flip-flop f420, halts the write operation, and sends it via direct line 430 to the instruction control unit U3 (first
RGSW, r306 (Figure 3)
The bit (Wj) corresponding to the write vector register number (for example, j) is reset.
Note that line 15 in FIG. 1 is obtained by bundling line 430 together with corresponding output lines 431 to 437 of other vector register control circuits 1 to 7. (b) Read-only operation When the write operation of vector register 0 has not been activated, a read activation instruction for this vector register is issued by the instruction activation control circuit b400 (11th
When the signal is transmitted through the twisted wire 400, the flip-flop f421 indicating that reading is in progress is set. Since flip-flop f420 is in a reset state, its output is connected to inverting gate g45.
1, is input via OR gate g452, and the output of flip-flop f421 is also input.
The output line 480 of AND gate g453 is “1”
becomes. Line 480 is a G
-S conversion circuit b402 (FIG. 11). Therefore, as explained with respect to the instruction control unit U3, when a vector register is used for reading in a certain instruction, a read-behind instruction that uses this vector register for writing is not activated until this reading is completed. Therefore, since flip-flop f420 is not set until this reading is completed, the read enable signal continues to be sent to line 480 until flip-flop f421 is reset. In this way, when all elements of veccle register 0 have been read out, S
A final vector data signal is input from the -G conversion circuit b404, and the flip-flop f421 is reset by this signal. Note that the line 460 is combined with the corresponding signal lines 461 to 467 in the other vector register control circuits b411 to b417 to form the line 16, which is connected to RGSW, r30 in the instruction control unit U3.
6 (FIG. 3) and is used to signal the completion of reading vector register 0 and to reset bit RO of this register. (c) Chaining Operation A chaining operation occurs when a write operation is first instructed to a certain vector register for a certain instruction, and then a read operation is instructed for another instruction before that operation is completed. Even if a write operation is instructed, the vector register will not actually be written unless a data valid signal and write data arrive from the resource. I don't care about the relationship. (c-1) For example, if a write operation is
0, the flip flop f4
20 is set, and the U/D counter C40
After zero is reset and before the arrival of the data valid signal from line 420, a read operation is indicated by line 400 and flip-flop 5
When 421 is set, U/D counter C
The output of the positive detection circuit b406, which detects that the content of the counter connected to the output of the AND gate g453 is 1 or more, is "0", and the output of the inverting gate g451 is also "0", so the output of the AND gate g453 is Output line 480 is also “0”
It remains as it is. Here, when a data valid signal comes to the line 420 in a certain machine cycle n, it passes through the ant gate g450 to the U/D
This signal is input to the counter C400, and the contents of the U/D counter C400 become +1 in this machine cycle n. Then, the output of the positive detection circuit b460 becomes "1", and a vector register read enable signal is outputted to the line 480 via the OR gate g452 and the AND gate g453. Line 480 is U/D
It is connected to the D terminal of the counter C400, and when no data is input from the next valid signal line 420 in the machine cycle (n+1), the value of the counter C400 returns to 0 after the machine cycle (n+1). Therefore, the read enable signal will be output on line 480 only once. Even after that, if the data valid signal is input intermittently,
Each time, it is output to the readable signal line 480. On the other hand, if the data valid signal is continuously input after machine cycle (n+1),
Since "1" is input to the U terminal and the D terminal, the value of the counter C400 does not change and remains "1", and "1" is continuously output to the line 480. (c-2) After a write operation is commanded by line 410, flip-flop f420 is set, and U/D counter C400 is reset, the data valid signal arrives over multiple machine cycles and each time U/D counter C400 is reset. Assume that the flip-flop f421 is set by read activation in machine cycle n while F421 is being counted up and displaying a non-zero value. U/
Since the output of the positive detection circuit b460 connected to the output of the D counter C400 is "1", a vector register read enable signal is outputted to the line 480. Since line 480 is input to the terminal of U/D counter C400, if the data valid signal from line 420 is not input in the next machine cycle (n+1), it will be -1, and if it is input, the value will not change. The above operation is repeated until the content of C/D counter C400 becomes 0. The number of read enable signals output on line 480 during a machine cycle after read activation is determined by the contents of U/D counter C400 before flip-flop f421 is set and the data valid signal input from 420 thereafter. It becomes the sum of numbers. In this way, (c-
In either case 1) or (c-2), it is guaranteed that the number of vector elements written in the vector register will not be read out. Note that the contents of the U/D counter C400 can be considered to represent the difference between the number of vector elements written into the vector register and the number of vector elements read from there. When writing is completed during chaining operation and flip-flop f420 is reset, U/
The contents of the D counter no longer have any meaning, and the operation is equivalent to the read-only operation in (b). () Operand control circuit Figure 16 shows operand control circuit 0, b420.
The details are shown below. The configurations of the other operand control circuits 1 to 3 are the same, and the signal line numbers in this diagram can be changed to the signal line numbers written in the brackets below. When the start signal is output from the instruction start control circuit b400 via the line 440, the processing vector length (VL) on the line 469 (assumed to be 1 or more) is selected by the selector S410, and the vector length counter (VLCTR) Set to C403. Also, this activation signal causes the U/D counter C to
The contents of 401 and C402 are cleared. Furthermore, flip-flop f431 is set,
It is stored that the processing of this operand control circuit 0 has become effective. If an instruction that requires memory requester 0, which corresponds to operand control circuit 0, only requires reading one vector register (assuming here that the instruction's R3 field does not specify a vector register read), then An instructing signal is transmitted from the instruction activation control circuit b400 via a line 450 to the flip-flop f.
Set 430. First, a case will be described in which both the R2 and R3 fields of an instruction requiring arithmetic unit 0 specify reading of a vector register. In this case, flip-flop f430 is "0". Lines 490 and 500 transmit vector register read permission signals from G-S conversion circuits b402 and b403 to counters C401 and C, respectively.
There are various ways in which this signal can be input using the signal line that is input to the U terminal of 402. Operations are performed in accordance with these cases for each machine cycle. Here, counter C401, C
402 is the same as the counter C400 (FIG. 15), and positive detection circuits b461 and b462 are the same as the positive detection circuit b460 (FIG. 15). (a) Case where both are not input This case has the following four cases. (a-1) U/D counter C401, C40
(a-2) When only U/D counter C401 is positive, (a-3) When only U/D counter C402 is positive, (a-4) When U/D counter C401, C40
When both of 2 are positive, cases (a-1) to (a-3) In these cases, andges g461 to
None of the outputs of G464 becomes "1" and no output is produced. Case (a-4) This case occurs already after the vector register read enable signal has been sent via lines 490, 500. At this time, the positive detection circuit b46
The outputs of 0 and b462 become "1", and the former is directly input, and the latter is input to AND gate g464 via OR gate g460. this and gate g4
The output “1” of 64 passes through OR gate g465,
It is input to AND gate g466. The output "1" of the flip-flop f431 is input to the AND gate g466. Furthermore, lines 630 and 631 are input to the AND gate g466, which will be described later. Here, it is assumed that both are "1". and gate g466
A vector data sending signal is output from the output line 520 of. Output line 520 is U/D counter C4
01, is input to the D terminal of C402, and the counter contents are decremented by 1. In addition, the output line 520 is VLCTR, C403
is input as a set signal and sets the counter value to 1.
only decreases. That is, the output of VLCTR,C403 is connected to the -1 subtraction circuit b463, and the -1 value is input to the selector S410. At this time, the control terminal of selector S410 no longer has line 4.
Since the command activation signal is not generated through 40, -
The output of the 1 subtraction circuit b463 is selected,
VLCTR, set in C403. This next circuit operation differs depending on the contents of U/D counters C401 and C402 and the input status of the vector register read enable signal from lines 490-500. Note that when the vector data sending signal is output to the line 520, the 1 detection circuit b464
When it is detected that the original content of VLCTR,C403 before being subtracted by 1 is "1", that signal is ANDed with the vector data sending signal in AND gate g467, and then is used as the final vector data signal. , is placed on line 510. The signal on line 510 also causes the flip-flop f
431 and f430. (b) A case in which only the line 490 is input; or (c) A case in which only the line 500 is input. Since the operation is the same in both cases, case (b) will be explained here. In this case, there are two further cases: (b-1) U/D counter C402 is “0”
When (b-2) U/D counter C402 is “positive”
Case (b-1) At this time, the output of the positive detection circuit b462 is "0", so the AND gates g461 to g4
64 does not become "1", therefore, the output of OR gate g465 and AND gate g466
If the output is also “0”, the U/D counter C401, C
The D terminal input of 402 remains at "0". No vector data send signal is output on line 520. Since the vector register read permission signal is input from the line 490 to the U terminal of the U/D counter C401, the U/D counter C401 is +
1 will be given. Case (b-1) At this time, since the output of the positive detection circuit b462 is "1", the output of the AND gate g462 becomes "1", and the vector data sending signal is transmitted via the OR gate g465 and the AND gate g466. 520. Since the operations such as resetting VLCTR, C403 and flip-flops f430 and f431 are the same as in case (a-4),
It is omitted here. Since the line 520 becomes "1", both the D terminals of the U/D counters C401 and C402 become "1". U/D counter C40
Since "1" is input to the U terminal of 1, the contents of the counter do not change. U/D counter C40
Since "0" is input to the U terminal of 2,
The contents of the counter are decremented by 1. (d) Case where both lines 490 and 500 are input at the same time This case can be further divided into the following four cases. (d-1) When both U/D counters C401 and C402 are 0, (d-2) When only U/D counter C401 is positive, (d-3) When only U/D counter C402 is positive, ( d-4) Case (d-1) when both U/D counters C401 and C402 are positive In this case, the output signal of AND gate g461 is set to “1” by the vector register read permission signals on lines 490 and 500. ”, and as a result, a vector data sending signal is output on line 520. The U terminals of the U/D counters C401 and C402 are "1", and the D terminal also receives "1" on the line 520, so the contents of the counters do not change. Operations such as control of VLCTR and C403 are (a
This is the same as the explanation for case -4). Cases (d-2) and (d-3) The operations in both cases are similar, so (d-2) and (d-3) are the same.
Let us discuss case 2). In case (d-2), U/D counter C4
Since the content of only 01 is positive, the positive detector path b46
Since the content of only 01 is positive, the positive detector path b46
The output of 1 becomes “1” and the AND gate g461
And the output of g463 becomes "1". A vector data sending signal is sent to line 520 via OR gate g465 and AND gate g466. The control of VLCTR, C403, etc. is the same as in case (a-4), so the explanation will be omitted. The contents of the U/D counters C401 and C402 do not change because they operate the same as in case (d-1). Case (d-4) In this case, U/D counters C401, C
Since the content of 402 is positive, the positive detection circuit b46
1, the output of b462 becomes "1", and all the outputs of AND gates g461 to g464 become "1". The following operation is similar to case (d-2), and a vector data sending signal is sent out on line 520. Similarly, the contents of U/D counters C401 and C402 do not change. As can be seen from the above description of the operation, the U/D counters C401 and C402 play a role in synchronizing the sending of two operands (vector data). When only one vector register read permission signal comes, it is stored in a counter (the counter is incremented by +1), and when it is taken out, the counter is incremented by -1. When the vector register read permission signals arrive at the same time, the contents of the counter do not change. Next, a case where only one operand is used will be explained. In this case, when the operand control circuit is activated, a flip-flop f430 is set to indicate that only one of the operands is used. This output is input to the other input terminal of OR gate g460 connected to the output of positive detection circuit b462, and the output of OR gate g460 is set to "1" regardless of the contents of U/D counter C402. In this way, line 490
As before, a vector data sending signal is generated only by the vector register read permission signal inputted from the vector register read permission signal. Note that a line 630 shown in FIG. 16 is a vector that permits transmission of a vector data transmission signal. This is used, for example, when it is desired to send vector data (therefore, a data valid signal) to the arithmetic unit at intervals longer than a certain interval (for example, when the arithmetic unit cannot receive data continuously). In this case, this enable signal is created within the operand control circuit. For example, the enable signal may be the output of a flip-flop that is reset by the data valid signal and set a certain time after the data valid signal. It is also used when temporarily stopping vector data sent to a memory requester (when storing data in the main memory again). In this case, this permission signal is generated by the main memory control unit U1 (see FIG. 5) or the memory requester. At line 630, when vector data transmission is not permitted, line 4
The vector register read permission signal input from 90,500 is sent to U/D counters C401, C4.
02 and the counter is updated. line 6
When a permission signal is input from line 30, line 490,
Even if there is no signal input from 500, the contents of U/D counters C401 and C402 are positive, so
The output of AND gate g464 becomes “1”,
A vector data send signal will be placed on line 520. At the same time, U/D counter C401,
C402 is set to -1. Further, the timing control circuit b465 is a circuit that controls the sending timing of the vector data sending signal. As will be explained in detail in the explanation of FIG. 18, each vector register is configured with two memory elements in order to perform reading and writing to the vector registers at the same time, and reading and writing to each memory element are alternately performed. Let's do it. That is, when writing to one memory element, the other memory element is controlled to read, and vice versa in the next cycle. Therefore, it is not possible to simultaneously read from a memory element that is being written to, so it is necessary to make the reading wait for that cycle and control the reading in the next cycle. For this purpose, control is performed so that the transmission of the vector data transmission signal is temporarily stopped. The timing control circuit b46 corresponds to this role.
In step 5, when it is determined that the vector data sending signal should not be sent in the next cycle, the timing control circuit b465 sets the output line 631 to "0" and suppresses the output of the AND gate g466. Specifically, the timing control circuit b465
It works like this: That is, when a vector data sending signal is input in a certain machine cycle, "1" is output in the next machine cycle, the second cycle, the fourth cycle, and so on. 1st cycle, 3rd cycle... Outputs "0" in the subsequent machine cycles. This timing is shown in FIG. When the vector data sending signal is input continuously, “1” is output in the next machine cycle, so the timing control circuit b46
Note that "1" is output continuously from 5 onwards. In this embodiment, the operand control circuit is
Although a case has been described in which read enable signals of two vector registers are input, it is also easily possible to create a vector data sending signal by inputting read enable signals of three or more vector registers. () Vector register data unit In FIG. 18, each of the eight vector registers is connected to a vector register circuit b470 to
Each vector register in b477 is configured with a memory element because of its large capacity.
A memory element can be given an address to write data to that location or read data from that location, but at the same time read data at different addresses.
Writing is not possible. To achieve chaining operation, write a certain vector element,
Since it is necessary to read other vector data at the same time, in this embodiment, two vector registers are configured with two memory elements m400 and m401 for one vector register, and reading and writing are performed alternately to these registers. Do this. This allows simultaneous reading and writing to different addresses. The numbering of vector elements is assumed to be such that even-numbered vector elements and odd-numbered vector elements are arranged in the same memory element. The details of the operation will be explained below. Writing and reading to vector register 0 will be described here, but operations to other vector registers are exactly the same. When the instruction is activated, the instruction activation control circuit b400 (FIG. 12) in the vector register control unit U40 causes the S-G conversion circuit b480, the G-S
The resource type and number are sent to conversion circuits b481 and b482 via line 439, the write vector register number is sent via line 439, and the write vector register number (both numbers since there are two operands) is sent via lines 449 and 459. Then, the above set signal is sent via line 419, and S
-G conversion circuit b480, G-S conversion circuit b48
1, set in b482. S-G/G-S
Conversion circuits b480, b481, b482 are the 13th
This is the same as that explained with reference to FIGS. Writing to vector register 0 operates as follows. First, a signal instructing to start writing to vector register 0 is sent from instruction activation control circuit b400 via line 410. This signal clears the write address counter C411 to 0. Write address counter C41
The output of 1 is input to selectors S420 and s421. The other inputs of the selectors S420 and s421 are the outputs of the read address counter C410, and the output of the timing control circuit b482 and the output obtained by inverting the same with the inverting gate g480 are input to the control terminals of these selectors, respectively.
The timing control circuit b482 is configured to receive a clock output every machine cycle using a trigger type flip-flop (not shown), and outputs "0" and "1" every machine cycle. Output alternately. Therefore, the timing control circuit b482 selects these selectors from the read address counter C41 at the selector s420.
When selecting an output of 0, selector s421
In this case, the output of the write address counter c411 is selected, and the opposite is selected in the next machine cycle. The output of selector s420 is given as the address of memory element m400, and the output of selector s421 is given as the address of memory element m401. Now, lines 45, 45' from arithmetic units 0, 1 or memory requesters 0, 1,
The write data is sent to S-G via 29, 29'.
Upon arrival at conversion circuit b480, this data is input from the resource specified on line 429 to one of vector register circuits b470 to b477 corresponding to the vector register specified on line 439. Here, since it is written to vector register 0, it is input to circuit b470.
The write data is stored in registers VRIRE, r430, VRIRO, r44 provided at the entrance of circuit b470.
0 according to instructions from VRIR input control circuit b484.
are set alternately. VRIR input control circuit b48
4, a data valid signal 420 is inputted, and VRIRE and VRIRE are input for each even and odd data valid signal.
Control is performed to set data in r430, VRIRO, and r440, respectively. There are two memory elements m400 and m40 in which cycles to write.
1 (details will be described later), it is not possible to write to any vector element in any cycle, and one cycle may be required. At this time, the same vector register circuit b4
Since it is convenient that the next write data arrives at 70, two registers VRIRE and VRIRO are provided, and different memory elements m4 are used for two successive write data.
It is now possible to write to 00, m401. The write instruction is given to vector register control circuit 0, (14th
This is done by a data valid signal input via line 420 from FIG. This signal is input to the write timing control circuit b483. circuit 48
3 is 2 according to even/odd write instructions
Two signals held during the machine cycle are output at the timing shown in FIG. 19, and these outputs are input to AND gates g481 and g482, respectively. On the other hand, the output of the timing control circuit b482 and the output obtained by inverting it by the inverting gate g480 are input to these ungates, and the outputs become write enable signals for the memory elements m400 and m401, respectively. Write address counter c
411 indicates the next address +1 circuit b4
+1 after 81. This control is performed by the output obtained by ORing the outputs of AND gates g481 and g482 with OR gate g48. Note that since writing is performed alternately to memory elements m400 and m401, the write address counter c411 only needs to be incremented by 1 after writing to both memory elements m400 and m401. Selector s420, s4 uses the value ignoring the lower 1 bit as the write address.
21. The same applies to the read address counter c410. As mentioned above, vector elements are memory elements m400, m
401 alternately. A time chart of the above operation is shown in FIG. Reading from vector register 0 operates as follows. First, a signal instructing to start reading from vector register 0 is sent from instruction activation control circuit b400 via line 400. This signal clears the read address counter c410. Initially, the read address counter c410 is cleared to 0, so
The address is given to memory elements m400 and m401 via selectors s420 and s421, and data at address 0 is read out and input to selector s422. The output of the timing control circuit b482 is connected to the control terminal of the selector s422 by an inverting gate g.
The inverted output is input at 480, which instructs which memory element to select the data read out from, and the output of memory m400 is used in the reading cycle of memory m400, and the output of memory m401 is used in the next cycle. Controlled to select alternately. The data selected by this is once set in the register (VROR) r450, and then
-S conversion circuits b481 and b482 convert the data into data corresponding to the resource. For example, if the data is the operand to the arithmetic unit 0, the data is
It is sent to arithmetic unit 0. Since only one data is required to be sent to the memory requester (data stored in the main memory), it is sufficient to use one G-S conversion circuit. Here, the circuit b481 performs G-S conversion. Every time one vector element of the vector data is sent out, the vector register control unit U40 sends out an update signal for the vector register read address counter c410 via the line 470. As a result, the read address counter c410 is updated by one. The update is performed by adding 1 to the output of the counter c410 by adding circuit b4.
This is done by returning it to the input of the counter c410 via the counter c410. As described above, the vector register unit reads vector data supplied to the resource and stores vector data sent from the resource. Here, the data to be supplied to the resource is 2 because two are required for the operation.
The two vector data must be aligned before being sent. Moreover, due to chaining action,
It is necessary to read vector elements on any two vector registers that are stored at unequal intervals in each vector register after confirming that the data for both are complete. To this end, we provide a circuit that detects whether each vector register can be read or not, and a circuit that detects whether the two data can be read for each resource. Data is read from the vector register only when it is readable. (Actually, the data has already been read, and the read address counter is updated for the read.) Memory Requester The circuit details of memory requester 0 are shown in FIG. The operations of the memory requester are divided into three: initialization operation at the time of instruction activation, read operation from main memory, and storage operation to main memory. () Initialization operation at the time of command activation In FIG.
The resource type and number are sent through line 11, the instruction code is sent through line 12, the register number is sent through line 12, and the processing vector length is sent through line 14. The resource type and number on line 13 are
When the decoder b100 decodes and specifies that it is the own memory requester, the decoder b100 outputs "1" and inputs it together with the instruction start signal on the line 10 to the AND gate g100, and the output line 100 “1” is output. Line 100 is input to flip-flop f100 to set the flip-flop and registers MIR, r100, MGR, r101.
The instruction code and register number are input to MIR and MGR, respectively. Line 100 is also input to the control terminal of selector s103, which selects the processing vector length on line 14, and sets the processing vector length counter (MVLCTR), c100, to the processing vector length. A line 100 is also connected to the set terminal of MVLCTR, c100. This completes the initialization operation. () Read operation from main memory It is known that the read operation is from the main memory by decoding the output of MIR, r100, in which the instruction code is set, by decoder b101. The output line 20 of the decoder b101 is sent to the main memory control unit U1 (see FIG. 1) to designate read or store operations, and is also input to the control terminals of selectors s104, s105, s106, and s107. Select the side marked “F” of each selector. Note that if storage in the main memory is specified by MIR, r100, the side of the selector marked with "S" is selected. The outputs of vector address register U5 and vector address increment register U6 (see FIG. 1) are input to selectors s100 and s101 via lines 18 and 19, respectively, and register numbers are set to MGR and r101.
the vector address register U5 specified by the output of the vector address register U5, and the vector address increment register U
6 is selected, and the vector address is passed through the selector s102 to the working vector address register (WVAR) r100 and the working vector address increment register (WVAIR) r1.
It is set to 11. Setting both registers is
It is controlled by an output line 101 to flip-flop f100. The line 101 is also connected to the control terminal of the selector s102, and the selector s100
control to select the output of When set to vector address WVAR, r110, line 21 connects main memory control unit U1 (FIG. 1).
The first vector element address is sent to At the same time, "1" is output from the non-zero detection circuit b104 connected to the output of MVLCTR, c100 (assuming that MVLCTR is set to 1 or more as the processing vector length), and via the selector s107,
It is sent by the main memory control unit U1 as an address valid signal on line 23. Line 23 is also input to the control terminal of MVLCTR,c100, causing the contents of MVLCTR,c100 to be -1. 1
The subtracted value is created by a 1 subtraction circuit b103 connected to the output of MVLCTR, c100, and is input to MVLCTR, r100 via selector s103. Furthermore, line 23 is WVAR,r11
It is also input to the control terminal of 0, WVAR, r110
and the contents of WVAIR, r111 are added to adder b102.
The result added in is passed through selector s102 again.
Control is performed to set WVAIR, r110. This makes the next vector element address
This means that WVAR, r110 is set.
By repeating this one after another, the vector address is determined and sent to the main memory control unit U1 via the line 21 together with the address valid signal (line 23), thereby performing the main memory read operation. When the read operation in the main memory is completed, the read data is returned via the line 24 and the data valid signal is returned via the line 25 from the main memory control unit U1. The read data on line 24 is sent to selector s
105, it is input to the data register DR, r120, and the line 25 passes through the selector s104,
Read data is input to the set terminal of DR,r 120 and is set in DR,r 120, the output of which is sent via line 29 to vector register data unit U41 (FIG. 10). Also,
The data valid signal on line 25 is once set in flip-flop f102 and sent via line 30 to vector register control unit U40. When MVLCTR,c100 is subtracted and the content becomes "1", the 1 detection circuit b105
is detected to be the final vector element, line 3
2, the final register data signal is sent to the main memory control unit U1 at the vector address (line 2
1), sent out with the address valid signal (line 23) and returned by line 33 synchronously with the read data. The final vector data signal on line 33 is once set in flip-flop f103, passes through selector s106, and is sent to vector register control unit U4 (10th
(Figure), but when the contents of MVLCTR,c100 become “0” after passing through the 1 subtraction circuit b103,
The non-zero detection circuit b104 outputs "0" and the sending of the address valid signal is stopped. This completes the vector data read operation. () Vector data storage operation In storing vector data, first, a signal specifying that storage is possible is sent to the main memory control unit U1 via line 20. This signal is
It is created by decoding the contents of MIR, r100 with a decoder b101. Sending out the main memory address of the data to be stored is exactly the same as the read operation. That is, a designated one of the vector address register and vector address increment register is selected by selectors s100 and s101.
selected by WVAR, r110, respectively.
WVAIR, set to r120. WVAR,
Similarly to the read operation, the vector address is sent to the main memory control unit U1 via the output line 21 of r110. The data to be stored comes from the vector register unit U4 on line 27 together with the data valid signal (on line 28). The vector data passes through the selector s105 and is sent to DR, r120.
is set to DR, r120 is controlled by connecting the data valid signal on line 28 to selector s.
This is done by inputting it to the set terminal of DR, r120 via 105. The data valid signal on line 28 is also input to a flip-flop, f101, whose output, once set, passes through selector s107 to DR, r1 on line 23.
It is sent to main memory control unit U1 together with the vector data to be stored on 20. As a result, the main memory control unit performs a write operation to the main memory. The address valid signal on line 23 is
WVAR, input to the set terminal of r110,
The use for updating WVAR,r110 is similar to the read operation. As described above, each time data to be stored and a data valid signal are sent from the vector register unit, the address is attached and sent to the main memory control unit, and at the same time, WVAR, r110 is updated and the next Provides storage of vector data. This is repeated as long as data is sent from the vector register unit. In addition, in the storage operation, MVLCTR,c1
00 operates similarly to a read operation, but has no meaning. The final vector data signal is line 32
Even if the data is sent to the main memory control unit due to the data processing, it is ignored during the storage operation. Arithmetic unit FIG. 21 shows an outline of the arithmetic unit 0. Arithmetic unit 1 also has the same structure. In this embodiment, the arithmetic circuits b210 to b213 perform partial arithmetic operations on inputs to each one under the control of arithmetic control circuits b201 to b204, as is already known. Here, we assume that the pipeline operation is executed in four stages.
There is no particular limit to the number of stages. Further, it is assumed that arithmetic units 0 and 1 can perform various operations specified by instructions. In this embodiment, when vector data and its data valid signal are input as input operands, they are operated on by the pipeline stage, and the resulting vector data and data valid signal are output in synchronization. , when the final vector data signal is input, this signal is also output in synchronization with the data valid signal. An outline of the operation will be explained below. An instruction start signal is input to the AND gate g200 via the line 10 from the instruction control unit U3,
The resource type and number are input to the decoder b200 via the line 13, and the instruction code is input to the register r200 via the line 11. decoder b
The output of 200 becomes "1" when the input thereto is for the own processor, and instructs register AIR, r200 to set the instruction code on line 11 via AND gate g200.
The output of AIR, r200 is the arithmetic control circuit b201
~b204 to control the operation of arithmetic circuits b210 to b213 in each stage. On the other hand, when vector data to be operated on is sent from the vector register unit via line 43, the vector data is transferred to registers r210 and r210.
At 220, the data valid signal is applied to the flip-flop f.
Set to 200. Data valid signal (4
3) is also used as a set signal to registers r210 and r220. Register r210, r2
The contents on 20 are calculated in the calculation circuit b210, and in the next cycle, the contents are stored in registers r211 and r22.
The intermediate result is set to 1. The output of flip-flop f200 is used to set the register, and this output is also transmitted to flip-flop f210. Similarly, registers r211, r21
The output of 2 is input to the arithmetic circuit b211 to perform arithmetic operations, and in the next cycle, the output is input to the register r21.
2, the intermediate result is set in r222. In synchronization with this, the output of flip-flop f201 is
It is transferred to flip-flop f202. Hereafter, by repeating this, the arithmetic circuit b212 and the register r2
13. As the data moves to the arithmetic circuit b213, the arithmetic operation progresses, and the final result is sent to the register r214.
is set to The data valid signal is also transferred from flip-flop f202 to flip-flop f203 to flip-flop f204. The result of the operation and a data valid signal indicating that the data is valid are returned to the vector register unit by lines 45 and 46, respectively. The data to be calculated is in registers r210 and r22
0 to registers r211 and r221, the next data to be operated on is transferred to registers r210 and r221.
The setting to r220 is the same as in a general pipeline arithmetic unit. When input to the flip-flop f210 by the final vector data signal line 40, the data is input to the flip-flop f210 in the same way as setting in the register.
Set to 10. Synchronous with the data valid signal moving through flip-flops f200-f204, the final vector data signal moves through flip-flops f210-f214 and is output on line 44 and returned to vector register unit U4. As described above, in the arithmetic unit of the present invention, vector data and a data valid signal are input synchronously, the data is operated in synchronization with the movement of the data valid signal through the pipeline stage, and the result is transferred to the data valid signal. Its feature is that it is output in synchronization with the valid signal. The same applies to the final vector data signal. As described above, according to the present invention, reading at irregular intervals and writing of results in synchronization with the reading at irregular intervals can be performed while the arithmetic unit is kept operating.

【図面の簡単な説明】[Brief explanation of drawings]

第1図は、本発明によるベクトルプロセツサの
概略構成図、第2図は、本発明にて使用する各種
レジスタの形式を示す図、第3図は、命令制御ユ
ニツトの詳細を示す図、第4図は、命令キユーの
詳細を示す図、第5図は、リソース使用チエツク
回路の詳細を示す図、第6図aは、レジスタ使用
チエツク回路の詳細を示す図、bはチエツク条件
を示す図、第7図は、レジスタ競合チエツク回路
の詳細を示す図、第8図は、命令制御ユニツトの
変形例を示す図、第9図は、第8図のb394の
詳細ブロツク図、第10図は、ベクトルレジスタ
ユニツトの構成を示す図、第11図は、ベクトル
レジスタ制御ユニツトの詳細図、第12図は、命
令起動制御回路の詳細を示す図、第13図は、S
−G変換回路の詳細を示す図、第14図は、G−
S変換回路の詳細を示す図、第15図は、ベクト
ルレジスタ制御回路の詳細を示す図、第16図
は、オペランド制御回路の詳細を示す図、第17
図は第16図のタイミング制御回路の動作のタイ
ムチヤート、第18図は、ベクトルレジスタデー
タユニツトの詳細を示す図、第19図は第18図
の回路のタイムチヤート、第20図は、メモリ・
リクエスタの詳細を示す図、第21図は、演算器
の詳細を示す図である。
FIG. 1 is a schematic configuration diagram of a vector processor according to the present invention, FIG. 2 is a diagram showing the formats of various registers used in the present invention, FIG. 3 is a diagram showing details of the instruction control unit, and FIG. 4 shows the details of the instruction queue, FIG. 5 shows the details of the resource usage check circuit, FIG. 6a shows the details of the register usage check circuit, and FIG. 6b shows the check conditions. , FIG. 7 is a diagram showing details of the register conflict check circuit, FIG. 8 is a diagram showing a modification of the instruction control unit, FIG. 9 is a detailed block diagram of b394 in FIG. 8, and FIG. 10 is a diagram showing a modification of the instruction control unit. , FIG. 11 is a detailed diagram of the vector register control unit, FIG. 12 is a diagram showing details of the instruction activation control circuit, and FIG. 13 is a diagram showing the configuration of the vector register control unit.
FIG. 14 is a diagram showing details of the G-G conversion circuit.
FIG. 15 is a diagram showing details of the S conversion circuit, FIG. 15 is a diagram showing details of the vector register control circuit, FIG. 16 is a diagram showing details of the operand control circuit, and FIG. 17 is a diagram showing details of the operand control circuit.
The figure is a time chart of the operation of the timing control circuit of FIG. 16, FIG. 18 is a diagram showing details of the vector register data unit, FIG. 19 is a time chart of the circuit of FIG. 18, and FIG. 20 is a diagram showing the details of the vector register data unit.
FIG. 21 is a diagram showing details of the requester, and FIG. 21 is a diagram showing details of the arithmetic unit.

Claims (1)

【特許請求の範囲】 1 主記憶装置と、 複数のベクトルレジスタと、 それぞれパイプライン的に演算を行う複数の演
算手段と、 ベクトル演算を要求する命令に応答して、第1
のベクトルレジスタから演算を受けるべきオペラ
ンドベクトル要素を読み出し、該複数の演算手段
のうち、該ベクトル演算を実行する一つの演算手
段へ供給し、該一つの演算手段からそれらのオペ
ランドベクトル要素に対する演算結果として出力
される複数の結果ベクトル要素を、第2のベクト
ルレジスタに書き込む制御回路とを有し、 該制御回路は、不等間隔で入力されうる複数の
信号の各々に応答して、該第1のベクトルレジス
タからオペランドベクトル要素を読み出す手段
と、該読み出し手段による、該第1のベクトルレ
ジスタからのベクトル要素の読み出しの有無に関
係なく、該一つの演算手段を動作させ、あるオペ
ランドベクトル要素の読み出し後該一つの演算手
段による演算時間に依存して定まる一定時間経過
したタイミングに同期して、該一つの演算手段か
ら出力される結果ベクトル要素を、該第2のベク
トルレジスタに書き込む手段とを有するデータ処
理装置。 2 該読み出し手段は、該第1のベクトルレジス
タからのベクトル要素の読み出しと同期して読み
出し有効信号を出力する手段を有し、該書き込み
手段は、あるオペランドベクトル要素に対して出
力された読み出し有効信号を、該一つの演算手段
による演算時間に依存する一定の時間の間遅延す
る手段と、その遅延手段から出力された読み出し
有効信号に応答してそのオペランドベクトル要素
に対して該一つの演算手段から供給される結果ベ
クトル要素を該第2のベクトルレジスタに書き込
む手段とを有する第1項のデータ処理装置。 3 該遅延手段は、複数の記憶手段を縦続接続し
たものである第2項のデータ処理装置。
[Claims] 1. A main storage device, a plurality of vector registers, a plurality of arithmetic means each of which performs an operation in a pipeline manner, and a first
Reads the operand vector elements to be operated on from the vector register of the computer, supplies them to one of the plurality of operation means that executes the vector operation, and receives the operation results for those operand vector elements from the one operation means. a control circuit for writing a plurality of result vector elements outputted as a second vector register into a second vector register; means for reading an operand vector element from a vector register, and operating the one calculation means to read a certain operand vector element regardless of whether or not the reading means reads the vector element from the first vector register. and means for writing a result vector element outputted from the one calculation means into the second vector register in synchronization with a timing at which a certain period of time determined depending on the calculation time by the one calculation means has elapsed. Data processing equipment. 2. The reading means includes means for outputting a read valid signal in synchronization with reading of a vector element from the first vector register, and the writing means outputs a read valid signal output for a certain operand vector element. means for delaying a signal for a fixed time depending on the calculation time by the one calculation means; and the one calculation means for the operand vector element in response to a read valid signal output from the delay means. and means for writing result vector elements supplied from the second vector register into the second vector register. 3. The data processing device according to item 2, wherein the delay means is a plurality of storage means connected in cascade.
JP22634187A 1987-09-11 1987-09-11 data processing equipment Granted JPS63100573A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22634187A JPS63100573A (en) 1987-09-11 1987-09-11 data processing equipment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22634187A JPS63100573A (en) 1987-09-11 1987-09-11 data processing equipment

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP56210392A Division JPS58114274A (en) 1981-12-28 1981-12-28 data processing equipment

Publications (2)

Publication Number Publication Date
JPS63100573A JPS63100573A (en) 1988-05-02
JPH046992B2 true JPH046992B2 (en) 1992-02-07

Family

ID=16843649

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22634187A Granted JPS63100573A (en) 1987-09-11 1987-09-11 data processing equipment

Country Status (1)

Country Link
JP (1) JPS63100573A (en)

Also Published As

Publication number Publication date
JPS63100573A (en) 1988-05-02

Similar Documents

Publication Publication Date Title
JPS6152512B2 (en)
JP5474014B2 (en) Method and apparatus for supporting conditional execution in a VLIW based array processor using subword execution
US4794517A (en) Three phased pipelined signal processor
CA1176757A (en) Data processing system for parallel processings
JP6660991B2 (en) Scheduling tasks on multi-threaded processors
US4745544A (en) Master/slave sequencing processor with forced I/O
US5073970A (en) Vector processing apparatus allowing succeeding vector instruction chain processing upon completion of decoding of a preceding vector instruction chain
JPS61248135A (en) Pipeline type processor and control thereof
JPS6239780B2 (en)
KR102458467B1 (en) vector creation command
JPS59128670A (en) Vector processor
JPS60136870A (en) vector processing device
JPH046992B2 (en)
US5479620A (en) Control unit modifying micro instructions for one cycle execution
US8200943B2 (en) Microprocessor
JPH0454262B2 (en)
JPS61180370A (en) Data processor
JPH0522935B2 (en)
JP5145659B2 (en) Vector renaming method and vector computer
JP2926045B2 (en) Microprocessor
JPH05143447A (en) Digital processor and control method for the processor
JP2556083B2 (en) Complex arithmetic pipeline circuit
JP2859921B2 (en) Instruction queue controller
JPH0437456B2 (en)
GB2069198A (en) Pipelined data processor