(57)【要約】【課題】テールゲーテリング技術により、ベクトルレジスタコンピュータの処理速度を改良することを目的とする。【解決手段】オペランド要素の順次読み出しに用いられるアドレスの順次読み出しに同期して、第２の操作により発生した結果としての要素を、要素のアドレスの少なくとも１つ分遅らせ、要素のアドレス順番に従い、順次ベクトルレジスタに記憶する。これにより、オペランド要素をベクトルレジスタから順次読み出し、この順次読み出しに同期して、操作結果の要素をベクトルレジスタに順次書き込むようにする。また、順次読み出しアドレス指定と、順次書き込みアドレス指定は、同じアドレスが指定されないように、計算されたアドレスオフセットで、両者のアドレス指定は、ずらして行なう。【選択図】図５
2008181551.tif 000002
【特許請求の範囲】
【請求項１】
オーダされた１組のデータの複数の要素を貯える為の手段を含む少なくとも１つのベクトルレジスタを有するコンピュータ用ベクトル処理装置であって、
（イ）コンピュータ内で第１の操作を行うための手段であって、この第１の操作で使用されるために、オペランド要素が順次ベクトルレジスタから読み取られるようになっている第１の操作手段と、
（ロ）コンピュータ内で第２の操作を行う為の手段であって、この第２の操作により発生された結果としての要素が、順次ベクトルレジスタに貯えられるようになっている第２の操作手段と、
（ハ）ベクトルレジスタからのオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに同期して、第２の操作により発生した結果としての要素を、要素のアドレス時間の少なくとも１つ分遅らせ、要素のアドレス順番に従い、順次ベクトルレジスタに記憶するために、前記第１と第２の操作手段に結合し、前記第２の操作の開始を第１の操作に対して同期させる同期化手段とを備えたことを特徴とする処理装置。
【請求項２】
少なくとも１つのベクトルレジスタを備えたコンピュータでのベクトル処理方法であって、
（イ）コンピュータ内で第１の操作を行うステップと、
（ロ）前記第１の操作で用いる為にベクトルレジスタから少なくとも１つのオペランド要素を順次読み出すステップと、
（ハ）ベクトルレジスタからのオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに同期して、第２の操作からの少なくとも１つの結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次ベクトルレジスタに記憶するために、前記第２の操作の開始を、第１の操作に対して同期させるステップと、
（ニ）前記第２の操作をコンピュータ内で行うステップと、
（ホ）前記第２の操作よりの結果としての要素を、ベクトルレジスタに順次記憶させるステップとを含むことを特徴とする処理方法。
【請求項３】
請求項２に記載の処理方法であって、更に、コンピュータ内で少なくとも１つの中間操作を行うステップを設け、該中間操作は、第１の操作の後で、かつ、第２の操作の前に行われることを特徴とする処理方法。
【請求項４】
複数のベクトルレジスタを有するコンピュータでのベクトルテールゲーティング(vector tailgating)多重操作方法であって、
（イ）コンピュータ内で第１の操作を行うステップと、
（ロ）前記第１の操作で用いる為に、第１のベクトルレジスタから、少なくとも１つの第１オペランド要素を順次読み取るステップと、
（ハ）少なくとも１つの第２の結果としての要素を作り出す為に、コンピュータ内で第２の操作を行うステップと、
（ニ）前記第２の操作で用いるために、第２のベクトルレジスタから少なくとも１つの第２のオペランド要素を順次読み出すステップと、
（ホ）第１のベクトルレジスタからの第１のオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに同期して、第２の結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次第１のベクトルレジスタに記憶するステップと、
（ヘ）少なくとも１つの第３の結果としての要素を作り出す為に、コンピュータ内での第３の操作を行うステップと、
（ト）第３の結果としての要素を、少なくとも１つの要素を遅らせて、第２のベクトルレジスタからの第２のオペランド要素の順次の読み出しに同期して、順次第２のベクトルレジスタに記憶させるステップとを含むことを特徴とする操作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高性能ベクトルコンピュータの分野に関するもので、特に、ベクトル算定における性能上のゲインを与える為に、本明細書で「テールゲーティング」と呼ぶ処理におけるベクトルレジスタの使用を制御する装置、並びに、その方法に関するものである。
【背景技術】
【０００２】
通常スーパコンピュータと呼ばれる、大型で極めて高性能のコンピュータの分野では、オーダされた複数の組のデータ、又は、ベクトルを含む計算において、非常に高いデータ処理速度を達成する為に、普通、ベクトル処理構成が設けられる。Ｓeymour  Ｒ．Ｃrayに与えられ、Ｃray  Ｒesearch, Ｉnc．に譲渡された米国特許第４,１２８,８８０号には、非常に好結果のスーパコンピュータベクトル処理構成が開示されている。上記の構成においては、オペランドとして機能ユニットに送り、かつ、機能ユニットからの結果としてのベクトルを受け取り、かつ、保持する様に、複数のベクトルレジスタが、ベクトルを保持する為に設けられている。最大の速度を得る為に、完全にセグメント化された機能ユニットが設けられ、その内部では、機能ユニットに達するか、又は、機能ユニット内で移動する全ての情報は、各時間ピリオドの終わりにおいて捕捉され、かつ、保持される。所定のベクトルプロセスの為のオペランドレジスタとして用いたベクトルレジスタは、時間ピリオド当り１要素の割合で機能ユニットに個々の要素を伝送する。一たびスタートアップタイム、又は、機能ユニットタイムが過ぎると、機能ユニットは連続する時間ピリオドでの連続的結果要素を与え、そして、これらの要素は、その特定のベクトルプロセスの結果レジスタとして働いているベクトルレジスタに、結果ベクトルの要素として伝達される。ベクトルレジスタと主メモリとの間のベクトル転送も又、時間ピリオド当り１要素の割合で達成できる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
いずれも、プログラム命令制御により、どの機能ユニット、又はメモリと連係させてもよい、いくつかの機能ユニット(例えば、浮動小数点乗算、整数加算、ロジカル演算等)や、いくつかのベクトルレジスタ(例えば、８個)を設けることにより、米国特許第４,１２８,８８０号によるコンピュータに、多数の同時に進行するベクトルプロセスを付与し、それによって、極めて高いデータ処理速度を達成することができる。
【課題を解決するための手段】
【０００４】
請求項１においては、オーダされた１組のデータの複数の要素を貯える為の手段を含む少なくとも１つのベクトルレジスタを有するコンピュータ用ベクトル処理装置であって、
（イ）コンピュータ内で第１の操作を行うための手段であって、この第１の操作で使用されるために、オペランド要素が順次ベクトルレジスタから読み取られるようになっている第１の操作手段と、
（ロ）コンピュータ内で第２の操作を行う為の手段であって、この第２の操作により発生された結果としての要素が、順次ベクトルレジスタに貯えられるようになっている第２の操作手段と、
（ハ）ベクトルレジスタからのオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに同期して、第２の操作により発生した結果としての要素を、要素のアドレス時間の少なくとも１つ分遅らせ、要素のアドレス順番に従い、順次ベクトルレジスタに記憶するために、前記第１と第２の操作手段に結合し、前記第２の操作の開始を第１の操作に対して同期させる同期化手段とを備えたことを特徴とする処理装置である。
【０００５】
請求項２においては、少なくとも１つのベクトルレジスタを備えたコンピュータでのベクトル処理方法であって、
（イ）コンピュータ内で第１の操作を行うステップと、
（ロ）前記第１の操作で用いる為にベクトルレジスタから少なくとも１つのオペランド要素を順次読み出すステップと、
（ハ）ベクトルレジスタからのオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに同期して、第２の操作からの少なくとも１つの結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次ベクトルレジスタに記憶するために、前記第２の操作の開始を、第１の操作に対して同期させるステップと、
（ニ）前記第２の操作をコンピュータ内で行うステップと、
（ホ）前記第２の操作よりの結果としての要素を、ベクトルレジスタに順次記憶させるステップとを含むことを特徴とする処理方法である。
【０００６】
請求項３においては、請求項２に記載の処理方法であって、更に、コンピュータ内で少なくとも１つの中間操作を行うステップを設け、該中間操作は、第１の操作の後で、かつ、第２の操作の前に行われることを特徴とする処理方法である。
【０００７】
請求項４においては、複数のベクトルレジスタを有するコンピュータでのベクトルテールゲーティング(vector tailgating)多重操作方法であって、
（イ）コンピュータ内で第１の操作を行うステップと、
（ロ）前記第１の操作で用いる為に、第１のベクトルレジスタから、少なくとも１つの第１オペランド要素を順次読み取るステップと、
（ハ）少なくとも１つの第２の結果としての要素を作り出す為に、コンピュータ内で第２の操作を行うステップと、
（ニ）前記第２の操作で用いるために、第２のベクトルレジスタから少なくとも１つの第２のオペランド要素を順次読み出すステップと、
（ホ）第１のベクトルレジスタからの第１のオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに同期して、第２の結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次第１のベクトルレジスタに記憶するステップと、
（ヘ）少なくとも１つの第３の結果としての要素を作り出す為に、コンピュータ内での第３の操作を行うステップと、
（ト）第３の結果としての要素を、少なくとも１つの要素を遅らせて、第２のベクトルレジスタからの第２のオペランド要素の順次の読み出しに同期して、順次第２のベクトルレジスタに記憶させるステップとを含むことを特徴とする操作方法である。
【発明の効果】
【０００８】
本発明は、本明細書中では、テールゲーティングと呼ぶ技術により、上述のタイプのベクトルレジスタコンピュータの処理速度を、更に、改良するものである。簡単に述べると、テールゲーティングは、ベクトルレジスタの更に能率的な利用技術に関し、該技術においては、ベクトルレジスタに前もって貯えられた他のベクトルを、該ベクトルレジスタから読み出すと同時に、ベクトルを、その中に書き込むこともできる。レジスタに書き込まれるテールゲーティングベクトルは、機能ユニット、又は、共通メモリから取りこんでもよい。上記技術は、時間ピリオド当りの１ベクトル要素の読み取り及び書き込みを用い、書き込みは、未だ読み取られていない要素を書き込みすぎない様に、読み取り動作よりも、１又はそれ以上の要素分だけおくれて行われる様にする。この技術により、所定のベクトルレジスタを、同じベクトル演算に対して、オペランドレジスタ及び結果レジスタの両者として用いることができる。換言すれば、ベクトルレジスタは、以前にロードされたベクトルが、未だ用いられ、要素毎にベクトルレジスタから読み出されている間に、要素毎にベクトルをロードすることができる。この技術によれば、以前に発せられたベクトル指令中に含まれる特別なベクトルレジスタの使用を求めるプログラム中のベクトル指令を、以前のベクトル指令の完了を待たずに直に発することができる。１ベクトルを、要素毎に読みとると、ベクトルレジスタの各要素は、他のベクトルの要素毎の書き込みに利用できる様になる。
【発明を実施するための最良の形態】
【０００９】
以下の好ましい実施の形態の詳細な説明においては、説明の１部を構成すると共に、本発明を実施する２つの特有な実施の形態を図示する添付の図面を参照する。両実施の形態共、ブロック図とタイミングダイヤグラムに関して説明され、それに基づいて、当業者に一般に知られている様に、詳細なロジックデザイン(図示せず)が構成される。更に、本発明の範囲内で、他の実施の形態を利用できることや、構成上の変形を実施することも可能であることが了解されるべきである。
【００１０】
本発明にかかるベクトル処理及び制御手段の形態と作動は、本発明を用いるコンピュータシステムの組織の大略の解説で説明を始めると最も了解が容易であると考えられる。次に、本発明の形態と作動の詳細を説明する。
【００１１】
図１および図２のブロック図において、コンピュータシステムの計算部が詳細に示される。計算部は、全体的に参照番号１００で示す１組のベクトルレジスタよりなる。ベクトルレジスタはデータの高速処理を与えるので、コンピュータの主要計算レジスタを構成する。好ましい両実施の形態において、図１に、Ｖ０からＶ７として示す、８個の個別ベクトルレジスタがある。各ベクトルレジスタは、ベクトルレジスタＶ０において、要素００より７７を８進数字で示している様に、６４の個々の要素よりなっている。各要素は、６４ビットのワードを保持している。
【００１２】
ベクトル処理に３個の機能ユニットが提供されている。それらは、整数ユニット１１０と、ロジカルユニット１２０と、シフトユニットは１３０である。更に、２個の機能ユニットが、コンピュータのベクトルとスカラ量部分の間で共用されている。これらは、加算１４０と掛算１５０用の浮動小数点機能ユニットである。
【００１３】
ベクトル演算は、１つ、又は、それ以上のベクトルレジスタの第１要素からオペランドを得、それらを機能ユニットに配送することにより始められる。各タイムピリオドにおいて、連続的要素が与えられ、各演算が行われるにつれて、結果は、宛先ベクトルレジスタの連続要素に送られる。ベクトル演算は、命令により行われた演算の数が、ベクトルレングスレジスタ１６０の内容により規定されるカウントと等しくなる迄続けられる。
【００１４】
本発明の図面及び明細書を含むベクトル演算の記号的表現では、ベクトルレジスタは、サブスクリプトi、j及び kにより識別される。サブスクリプトiは、宛先ベクトルレジスタを識別するのに用いられる。サブスクリプトjとkは、オペランドベクトルレジスタを識別するのに用いられる。例えば、
Ｖi＝Ｖj＋Ｖk
ベクトルレジスタの要素は、数字的サブスクリプト(例えば、Ｖ４6は、ベクトルレジスタ４の要素６)で識別される。
【００１５】
ベクトルレジスタの要素は、オペランドとして機能ユニットに伝達され、次いで、後続のタイムピリオドで前の演算の結果の宛先を与える。レジスタをオペランドレジスタと、それに次いで、宛先レジスタの両方に用いることにより、２つ、又は、それ以上のベクトル演算の「テールゲーティング」を一緒に行うことが可能となる。このモードでは、タイムピリオド毎に、２つ、又は、それ以上の結果が作り出される。これらのベクトル演算のタイムピリオドは、通常、単一システムクロックピリオドである。
【００１６】
このテールゲーティングモードを除いて、ベクトルレジスタは、それらがベクトル計算の含まれるタイムピリオドの間予約される。同じベクトルレジスタを必要とするがテールゲーティングモードで実行できない他の指令は、前の指令が完成し、予約が外される迄、発せられない。しかし、全ての機能ユニットが独立しているので、多様な関係のないベクトル処理演算を、異なる機能ユニットや、異なるオペランドや結果ベクトルレジスタを用いて同時に行うことができる。
【００１７】
好ましい第１の実施の形態
本発明の好ましい第１の実施の形態を、図３ないし図６に図示する。
第１の実施の形態のベクトルレジスタ制御の概略ブロック図を図５に示す。Ｉssueとラベル付した回路３０１は、その入力として、アンドゲート３０２と３０３からの反転信号を、その入力とする。両出力は、指令を発し得る前に待つ必要があることを示すものである。
アンドゲート３０２への入力は、回路３０５の出力と、ラッチ３０４に保持される信号ＶjリードリクエストとＶkリードリクエストとよりなる。回路３０５は、ＶjとＶkリードビジイ及びライトビジイビットを調べる。１リードビジイビット及び１ライトビジイビットが、各ベクトルレジスタに与えられる。これらのビットは、必要とされるオペランドベクトルレジスタが、以前のリード又はライト演算に対して、現在ビジイであるか否かを示す。もし、要求されるオペランドベクトルレジスタがビジイでない場合は、アンドゲート３０２からの反転信号が、指令の発令を可能とする。
【００１８】
アンドゲート３０３からの反転信号は、指令の発令が行われる迄に、アンドゲート３０２からの反転信号に関して調べる必要がある。アンドゲート３０３への入力は、回路３０７よりの出力と、ラッチ３０６における信号Ｖiライトリクエストである。回路３０７は、要求された宛先ベクトルレジスタか、現在書き込み動作でビジイであるかどうかを決定する為に、Ｖiライトビジイビットを調べる。指令の発令には、宛先ベクトルレジスタが、前の指令の宛先としてビジイでないことが必要である。
【００１９】
指令の発令が行われると、回路３０１は、３１３の信号を、Ｖjリードビジイ及びＶkリードビジイを設定する為に、又、３１４の信号を、Ｖiライトビジイを設定する為に送り出す。又、信号３１２が、回路３０１から、ベクトルシーケンス制御３０８へ送られる。代わって、ベクトルシーケンス制御３０８は、ゴウリードＶj及びゴウリードＶk信号３１６を発生する。これらの信号は、図６に示す様に、Ｖj／Ｖkリードアドレスカウンタ４０１への入力として働く。信号３１６は８ビットよりなる(各ベクトルレジスタについて１ビット)信号３１６は、ベクトルレジスタの内のどれがリード動作の為に用いられるべきかを示している。代表的に言えば、リード動作の間は、ＶjはＶkと異なるであろう。しかし、本実施の形態では、ＶjはＶkと同じベクトルレジスタとしてもよいので、ゴウリードＶjとゴウリードＶkは、同じ信号であってもよい。
【００２０】
ベクトルシーケンス制御３０８は、又、図５に、参照番号３１０で表わされるＶj／Ｖkベクトルレングスカウンタをトリガする為に、信号３２３を送る。信号３２３は、８ビットよりなる。(ベクトルレジスタと連係する各ベクトルレングスカウンタ３１０に対して１ビット)。
【００２１】
代表的に言えば、ベクトルリード動作の間は、ＶjはＶkと異なるであろう。しかし、本実施の形態では、ＶjはＶkと同じベクトルレジスタとしてもよいので、ＶjベクトルレングスカウンタとＶkベクトルレングスカウンタは、同じ装置であってもよい。
【００２２】
Ｖj／Ｖkベクトルレングスカウンタ３１０は、応用ソフトウエアにより発せられるプロセサ指令、ロードベクトルレングスによって初期化される。Ｖj／Ｖkベクトルレングスカウンタ３１０がゼロに減じると、それは、図６のＶj／Ｖkリードアドレスカウンタ４０１をクリアするエンドリードＶj／Ｖk信号３１７を送り出す。又、Ｖj／Ｖkベクトルレングスカウンタ３１０は、対応するリードビジイビットをクリアする為に、リリースＶj／Ｖk信号３１８を送り出す。
【００２３】
ベクトルシーケンス制御３０８も、又、Ｖiライトディレイカウンタ３０９を作動さす為に信号３１５を発する。信号３１５は、８ビットよりなる(ベクトルレジスタと連係する各ライトディレイカウンタ３０９に対して１ビット)。Ｖiライトディレイカウンタ３０９により受けられたゴウ機能ユニット信号３２２は、使用中の機能ユニットと、宛先ベクトルレジスタに書き込む前に要求されるディレイの量を示す。どの機能ユニットのディレイが必要かを決定する知能は、Ｖiライトディレイカウンタ３０９に含まれている。
【００２４】
Ｖiライトディレイカウンタ３０９がゼロに減じると、それは、Ｖiベクトルレングスカウンタ３１１をトリガする信号ゴウライト３２１を発する。Ｖiベクトルレングスカウンタ３１１は、図６に示すＶiライトアドレスカウンタ４０２とＶiライトイネイブルラッチ４０３に入力されるゴウライトＶi信号３１９を送り出す。
【００２５】
Ｖiベクトルレングスカウンタ３１１は、応用ソフトウエアにより発せられるプロセサ指令、ロードベクトルレングスにより初期化される。リリースＶi信号３２０と、エンドライトＶi信号３２４は、カウンタがゼロに減じた時、Ｖiベクトルレングスカウンタ３１１により送り出される。リリースＶi信号３２０は、Ｖiライトビジイビットをクリアする。その後、そのベクトルレジスタを用いて別の指示を発することができる。エンドライトＶi信号３２４は、図６のＶiライトアドレスカウンタ４０２をクリアする。
【００２６】
第１の実施の形態の為のベクトルレジスタメモリの概略ブロック図を図６に示す。ベクトルレジスタ４０４は、３つの入力を含む。即ち、６ビットリードアドレス４０６と、６ビットライトアドレス４０７と、ライト０／１信号４０８である。ベクトルレジスタ４０４は、代表的メモリ装置が、唯一のアドレス入力を持つのみであるという点で独特なものである。この装置は、２つの別々のアドレス入力、即ち、リードに対して１つ、そして、ライトに対して１つの入力を有する。各レジスタチップは、６４×４ビットである。１６のこの様なチップは、各要素が６４ビットを含む６４要素のベクトルレジスタを構成する。
【００２７】
Ｖj／Ｖkリードアドレスカウンタ４０１は、ゴウリードＶj／Ｖk信号３１６を受けると、１だけ増分し、それが、エンドリードＶj／Ｖk信号３１７を受ける迄、タイムピリオド毎に増加しつづける。Ｖiライトアドレスカウンタ４０２は、アクテブゴウライトＶi信号３１９がある場合、各タイムピリオド毎に１づつ増分する。ゴウライトＶi信号３１９は、又、Ｖiライトイネイブル４０３で、結果データ４１０に合併している。この合併の為、ライト０／１信号４０８が生じる。この信号４０８は、単にライトストローブであるばかりではなく、又、ベクトルレジスタ４０４が貯える様に指示された、全６４ビットのワードを提供する。
【００２８】
ベクトルレジスタ４０４からのリードデータ４０９は、それが書き込まれる為に戻って来る前に機能ユニット４０５へ行く必要がある。その為、リードアドレス４０６は、常にライトアドレス４０７より進んでいる。リードアドレスカウンタ４０１が、ライトアドレスカウンタ４０２より少なくとも１だけ大きい限りは、回路は、テールゲーティングモードで作動することができる。
【００２９】
指令Ｖ０＝Ｖ０＋Ｖ０のタイミングダイヤグラムであるＦig−２は、テールゲーティングの観念を明らかにする助けとなるであろう。水平軸に沿うグラデーションは、タイムユニットを表わす。ダイヤグラムの上半分は、オペランドベクトルレジスタの制御シーケンスを表わす。又、ダイヤグラムの下半分は、宛先ベクトルレジスタの制御シーケンスを表わす。
【００３０】
加算指令を実行する為には、オペランドベクトルレジスタを読み取り、その内容を、処理の為、機能ユニットに伝達する必要がある。タイムピリオドt０において、Ｖ０リードリクエストの信号が発せられる。この信号は、指令が発せられる前に、指令デューダにより発生される。
【００３１】
Ｖ０リードリクエスト信号に関連して、所望のベクトルの為の２つの状況ビット、即ち、リードビジイビット及びライトビジイビットを調べる必要がある。Ｖ０リードビジイ及びＶ０ライトビジイが、ベクトルレジスタＶ０がオペランドとしても、又、宛先としても用いられていないことを示すと、シグナルイッシュＶ０リードが、指令の進行を許す様に指令デコーダに送り戻される。
【００３２】
ベクトルレジスタＶ０をオペランドとして用い得る様にするには、該ベクトルレジスタは、リード又はライト操作で、すでにビジイの状態であってはならない。もし、他のベクトルレジスタが、オペランドとして用いられているならば、制御シーケンスは、ダイヤグラムの上半分の様な状態になるであろう。しかし、ダイヤグラムは、シーケンスＶ０＝Ｖ０＋Ｖ０に対して完了している。
【００３３】
タイムピリオドt０において、Ｖ０ライトリクエストの信号も発信される。ベクトルレジスタＶ０は、加算指令の結果の宛先を与える。ライトビジイビットを介して、チェックする必要があるものは、ベクトルレジスタが、すでに、以前の指令の宛先になっていないということである。次いで、シグナルイッシュＶ０ライトが、指令イッシュ制御へ送り返される。
【００３４】
タイムピリオドt３において、指令の発行によりＶ０ベクトルシーケンス制御(タイミングダイヤグラム中Ｖ０制御とラベル付)が、ゴウリードＶ０という信号を送り、Ｖ０リードビジイをセットする。Ｖ０リードアドレスカウンタ(タイミングダイヤグラム中Ｖ０リードアドレスとラベル付)は、すでに、要素０の為に初期化されている。ゴウリードＶ０信号は、Ｖ０リードアドレスカウンタを、タイムピリオドt４で増分させる。その為、要素０は、ベクトルレジスタから読み取られ、タイムピリオドt５は、要素１の為のアドレスを提供する。この読み取り及び増分動作は、全ての要素が読み取られてしまうまで、後続するタイムピリオドを通じて続けられる。タイムピリオドt６７で全ての６４の要素が読み取られると、Ｖ０ベクトルシーケンス制御は、Ｖ０リードビジイをクリアする。エンドリードＶ０信号が同じピリオドの間に、要素アドレスをゼロにリセットするＶ０リードアドレスカウンタに送られる。
【００３５】
オペランドは、機能ユニットに伝送される。いくらかのタイムピリオドの後に、結果のデータが、その宛先であるＶ０ベクトルレジスタに送り戻される。理論的には、ベクトルレジスタより読み取られた要素は、後続するタイムピリオドで新しいデータで書き込むことができる。
【００３６】
図３および図４の下半分を参照して、タイムピリオドt３では、Ｖ０ライトアドレスカウンタ(タイミングダイヤグラム中Ｖ０ライトアドレスとしてラベル付)は、エレメントアドレスＯを含む。指令の発行により、Ｖ０ライトビジイをセットし、Ｖ０ベクトルシーケンス制御は、ゴウライトＶ０信号を発するＶ０ライトアドレスカウンタは、２つのタイムピリオドt３とt４の間、要素０のままとなる。Ｖ０リードアドレスカウンタが１で、Ｖ０ライトアドレスカウンタが０(タイムピリオドt５)になると直に、要素０が新しいデータで書き込まれる。その為、読み取りと書き込みとの動作の間に、１タイムピリオドの差がある。通常、読み取りと書き込み動作の間に、機能ユニットタイムがある。
【００３７】
機能ユニット遅れ時間により、読み取られている要素は、同じタイムピリオドには書き込まれないということが保償される。図３および図４において、Ｖ０ライトアドレスカウンタは、要素アドレス０で、２つのタイムピリオドの間、保持されているのが示されている。実際において、Ｖiライトアドレスカウンタは、図５のＶiライトディレイカウンタ３０９により示されるタイムピリオドの数の間、要素アドレスゼロに保持される。
【００３８】
タイムピリオドt５において、一たび書き込み動作がはじまると、Ｖ０ライトアドレスカウンタは、Ｖ０リードアドレスカウンタと同じ様に、各タイムピリオド毎に、歩進する。各要素が、宛先ベクトルレジスタに入って来ると、それは、読み取られているアドレスよりも常に少なくとも１カウントおくれている、現在アドレスされている要素内に書き込まれる。Ｖ０ライトアドレスカウンタは、全６４要素を通じて、その時点で、Ｖ０ベクトルシーケンス制御がＶ０ライトビジイをクリアし、要素アドレスをゼロにリセットするＶ０ライトアドレスカウンタにエンドライトＶ０信号を伝達する時点である、タイムピリオドt６８迄増分する。
【００３９】
この実施の形態では、共通メモリは、テールゲーティングの目的で、機能ユニットとして取り扱うことができる。共通メモリからベクトルレジスタへ送られつつあるベクトルは、以前の指令で用いられているベクトルをテールゲートすることができる。機能ユニット時間に基づいて、テールゲーティング動作のタイミングを取るかわりに、メモリトランスファータイムが用いられる。
【００４０】
第２の実施の形態
本発明の第２の実施の形態を図７、図８、図９、図１０、図１１、図１２、図１３、図１４、図１５、図１６、図１７、図１８、図１９、図２０に示す。
【００４１】
第２の実施の形態におけるベクトルレジスターは、４バンクに区画されている。図１５および図１６に示すように、これらの４バンクは、それぞれバンク０、バンク１、バンク２、バンク３として識別してある。また、図１５および図１６に示すように、各バンクは、４番目毎のエレメントを得ている。即ち、バンク０の場合では、エレメント０、エレメント４、エレメント８、・・・・のようにエレメントを得ている。
【００４２】
レジスターチップは、高速型１６x４メモリーである。レジスターチップのサイクル時間は、２期間(time period)である。レジスターの各バンクには、４期間おきにアクセスがなされる。従って、テールゲートモードで動作しているのでもなければ、バンクは２期間アクティブになり、２期間休止する。この２期間アクティブ、２期間休止のシーケンスは無期限に繰り返される。
【００４３】
各バンクにはそれなりのアドレスレジスターがあって、図１５および図１６ではそれをチップアドレス１００１から１００４として示してある。エレメントアドレスカウンター１００５は、６−ビットアドレスカウンターである。レジスターがアクセスされていると、そのカウンターは各期間毎にそのカウント値を順次カウントアップする。アドレスの最下位の２ビットはバンクセレクトビット１００６である。最上位の４ビットは、チップアドレスビット１００７である。チップアドレス１００８は、最上位の４ビットを他のバンクに論理出力するレジスターにすぎない。バンクセレクトデコーダー１００９は、チップアドレス信号１０２０がアクセスすべきバンクを選択するようになっている。
【００４４】
テールゲート作用(tailgating)を行うためには、テールゲート命令のために書込みアドレスを発生すべく、ベクトルアドレスオフセット１０１０として示した下方のパスが利用される。このベクトルアドレスオフセット１０１０は４ビットであって、発生時にレジスター１０１１に送られる。レジスター１０１１の論理出力は、アンドゲート１０２７を介して各ベクトルレジスター毎のレジスター１０１２に供給される。テールゲートＶ０信号１０２５も発生時に送られる。テールゲートＶ０信号１０２５がアクティブになれば、ベクトルアドレスオフセットはアンドゲート１０２８を介して、選択されたベクトルレジスターに対応するベクトルアドレスオフセットレジスター１０１２に保持される。
【００４５】
テールゲート命令のためにアドレスを発生するには、チップアドレス１００８からの４ビット出力を減算器１０１３に供給して、レジスター１０１２に保持されているベクトルアドレスオフセットと減算する。減算器１０１３の出力は、調整済みアドレス１０１９と呼ばれるもので、チップアドレス１００１に戻される。このオフセットは機能ユニットの遅延時間とテールゲート作用に伴う二つの命令が発生される間に経過する時間とに関係のあるものである。
【００４６】
バンクサイクル期間は４期間であるから、エレメント０のアドレスは最初の２期間の間にチップアドレス１００１に記憶される。調整済みアドレス１０１９は、後の２期間の間にチップアドレス１００１に記憶される。減算は、４エレメンとの各グループ毎に一回実行されるだけで充分である。次のバンクにアクセスするためには、最初の調整済みアドレス１０１９を次のバンクのチップアドレスに伝送する。各期間毎にエレメンとが書き込まれるから、減算器は各バンク毎に用意する必要はない。チップアドレスは最初の４つの標準(reference)に付き同一になることになっていて、次の４つのアドレスに付き１だけインクレメントされる。エレメントアドレスカウンター１００５からのバンクセレクトビット１００６は、どのバンクを選択したかを判定するようになっている。本実施の形態におけるテールゲート作用に必要な条件の一つとして、ベクトルレジスターに結果が各期間毎に順次供給されている必要がある。各期間毎に結果を順次供給しないような操作では、テールゲート作用が行われない。
【００４７】
本実施の形態では、テールゲート作用はマルチプレックス操作である。２期間おきに新たなアドレスが、最初は読出し信号が、その後には書込みアドレスがチップアドレス１００１から１００４に順次送り込まれる。操作がテールゲート作用でない場合、シーケンスは、２期間読出し叉は書込みアドレス、２期間「構わない」("don't care")、２期間読出し叉は書込みアドレス、などと言った具合になる。
前述の第１の実施の形態とは異なって、第２の実施の形態では読出しビジーや書込みビジーの間、各ベクトル毎に別々の予約ビットを含んでいない。その代わりに、二つの考えられるバンクサイクルの内の一つが使われることで予約の代用をなしている。つまり、最初のバンクサイクルにある予約フラグがあり、後のバンクサイクルにも別の予約フラグがあるのである。
【００４８】
図１７は、一つのベクトルレジスターのためのベクトルレジスター予約回路を示している。１１０１、１１０２、１１０３はそれぞれビジーフラグないし予約フラグを示す。前述したように、各ベクトルレジスターバンクのサイクル時間は２期間であって、４期間おきにバンクに対してアクセスがなされる。テールゲート作用時には、最初のサイクルが読出しであり、後のサイクルは書込みである。
【００４９】
Ｖ０ビジー−１として示したラッチ１１０１は、４期間サイクルの内の最初の２期間を予約したことを示すために使われる。Ｖ０ビジー−２として示したラッチ１１０３は、後の２期間を予約するのに用いられる。このラッチは、ベクトルレジスターがテールゲートモードで動作しているときにセットされる。Ｖ０ビジー−３として示したラッチ１１０２は、タイミングのために用いられるコンポジットである。
【００５０】
Ｖ０ビジー−１は、命令発生時（Ｖ０ビジー−２  １１０３はまだセットされていないとして）にベクトルレジスターのリクエストをオンにする。Ｖ０ビジー−２  １１０３は、Ｖ０ビジー−１  １１０１が既にセットされている場合に命令発生時にベクトルレジスターのリクエストをオンにする。Ｖ０ビジー−３  １１０２は、Ｖ０ビジー−１  １１０１がセットされている間にホールドされており、スロット時が発生するときには、Ｖ０ビジー３は１期間クリアーされる。Ｖ０ビジー−２  １１０３が一旦セットされると、リリースＶ０信号１１０４がベクトルアドレスコントロールから入るまで、セットされたままである。テールゲート作用時には、二つのＶ０リリース信号１１０４が用いられる。二番目のリリース信号は、最初のリリース信号がＶ０ビジー−１  １１０１をクリアーしている間に、Ｖ０ビジー−２  １１０３をクリアーする。Ｖ０ビジー−２  １１０１とＶ０ビジー−２  １１０３との両方がクリアーされていると、Ｖ０ビジー−３  １１０２もクリアーされる。
【００５１】
Ｖ０ビジー−１は、アンドゲート１１０７と１１０９との論理和の出力に応じて１１０８によりセットされる。アンドゲート１１０７は、リリースＶ０信号１１０４の反転信号がそれをクリアーするまで、Ｖ０ビジー−１の内容をホールドする。他方、アンドゲート１１０９は、１１０５で示すリクエストＶ０が報知され、Ｖ０ビジー−１  １１０１が用いられていないときに、Ｖ０ビジー−１  １１０１を命令発生時にセットさせる。
【００５２】
Ｖ０ビジー−３は、アンドゲート１１１０、１１１２、１１１３との論理和の出力に応じて１１１によりセットされる。アンドゲート１１１０には、Ｖ０ビジー−１  １１０１の出力と信号Ｖ０スロット時１２０８の反転信号とが入力されている。また、アンドゲート１１１２は、１１０５で示すリクエストＶ０が報知されると命令発生時１１０６にＶ０ビジー−３  １１０２をセットする。アンドゲート１１１３は、Ｖ０ビジー−２  １１０３がセットされ、且つ、Ｖ０ビジー−１  １１０１がセットされるか、叉は、１１０４で示すリリースＶ０が報知されていないときに、Ｖ０ビジー−３  １１０２をホールドする。
【００５３】
Ｖ０ビジー−２  １１０３は、アンドゲート１１１６と１１１３との論理和の出力に応じて１１１５によりセットされる。アンドゲート１１１６は、Ｖ０ビジー−１  １１０３がセットされ、１１０５で示すリクエストＶ０が報知されると命令発生時１１０６にＶ０ビジー−２  １１０３をセットする。他方、アンドゲート１１１３は、オアゲート１１１４の出力が１の時にＶ０ビジー−１  １１０３をホールドする。オアゲート１１１４には、Ｖ０ビジー−１  １１０１とリリースＶ０信号１１０４の反転信号とが入力されるようになっている。
【００５４】
図１８は、テールゲートスロット時回路を示したものである。テールゲート命令の機能ユニット時間に応じて、書込み作用がベクトルレジスターに対して現に進行している読出し作用と同期する頃に命令が発生していなければならない。図１８の回路では、ラッチ１２０１、１２０２、１２０３、１２０４を用いてこの同期機能を達成するために、４つの異なったスロットを利用している。各スロットは、記憶サイクルにおける４期間のいずれかの期間に対応している。
【００５５】
最初の命令が発生した後の２期間において、ラッチ１２０１、１２０２、１２０３、１２０４からなるスロットカウンターは、スロット２において計数を開始する。ラッチ１２０５、１２０６は、次の命令が早まって発生することがないようにしている。即ち、テールゲート作用時に次の命令に対して２期間の遅延が与えられている。
スロットカウンターは、アンドゲート１２１５からの出力によりセットされる。このアンドゲート１２１５には、１１０５で示すリクエストＶ０、Ｖ０書込みリクエスト１３１７の反転信号、リクエストメモリー１２０７の反転信号、Ｖ０ビジー−１  １１０１の反転信号、発生が入力されるようになっている。リクエストＶ０信号１１０５は、ベクトルレジスターが最初にリクエストされると時のみ、スロットカウンターをして計数開始させる。書込みリクエスト信号１３１７の反転信号を利用することにより、ベクトルレジスターリクエストが読出し動作のためになされるのであれば、スロットカウンターは計数を開始する。リクエストメモリー信号１２０７の反転信号は、共通の記憶動作時にテールゲート作用を阻止するものであって、これが本実施の形態における唯一の制限である。Ｖ０ビジー−１信号１１０１の反転信号は、スロットカウンターが動作時に再び初期化されるのを防いでいる。発生信号１１０６は、命令発生時のみにスロットカウンターが初期化されるようにしている。
【００５６】
最初の命令が発生された後、テールゲート命令が解読、発生されるものと仮定する。この場合、テールゲート命令は、最初の命令の直後に実行される必要はない。最初の命令の発生時とテールゲート命令の発生時との間に、いくつかの関係のない命令が実行されることがある。命令の種類によっては、４つの「リクエストスロット」信号の内の何れか一つ（例えば、リクエストＶ０スロットＯ信号１２１６）が命令解読器により伝送される。例えば、ベクトル論理積命令は、スロットＯをリクエストするようになっている。従って、解読プロセスにおいては、リクエストＶ０スロットＯ信号１２１６が伝送される。異なった機能ユニット動作により、書込み動作を同期させるために別のスロットリクエストがなされることがある。
【００５７】
図１７におけるＶ０ビジー−３  １１０２により発生された信号は命令の発生を阻止しているから、この信号はテールゲート命令が発生されるためにも、１期間だけ中断しなければならない。図１８の下半分に示したように、リクエストＶ０スロットＯ信号１２１６は、１２０９によりラッチ１２０１からのＶ０スロットＯ信号と論理積がとられて、Ｖ０スロット時信号1208を発生する。同様に、他のスロットに対するリクエストもそれに対応するラッチ１２０１、１２０２、１２０３、１２０４からの出力との論理積がとられるようになっている。それに伴って得られる信号はオアゲート１２１４を介してＶ０スロット時信号１２０８をセットするようになっている。
【００５８】
このＶ０スロット時信号１２０８は、図１７に示したベクトルレジスター予約回路に入力される。Ｖ０スロット時信号１２０８の反転信号は、１１１０によりＶ０ビジー−１  １１０１からの出力と論理積がとられ、その後１１１１によりＶ０ビジー−３  １１０２への入力として論理和がとられる。前述のようにＶ０ビジー−３  １１０２により伝送された信号は命令発生をホールドする。Ｖ０スロット時信号１２０８の反転信号は、１期間だけＶ０ビジー−３  １１０１をクリアーするので、他と抵触するものがなければ命令が発生される。
【００５９】
テールゲート命令が発生すると、Ｖ０ビジー−２  １１０３が、発生信号１１０６とＶ０ビジー−１  １１０１からの出力とに応じて１１１６による論理積演算を介してセットされる。Ｖ０ビジー−２  １１０３は次のテールゲート作用が同一ベクトルレジスターに対して行われるのを防いでいる。Ｖ０ビジー−２  １１０３の内容はＶ０ビジー−１  １１０１の内容との論理積がとられて、Ｖ０ビジー−３  １１０２に対する入力を発生するから、Ｖ０ビジー−３  １１０２が次のＶ０スロット時信号１２０８に応じてクリアーできなくなっている。
【００６０】
図１９において、ベクトルアドレスコントロール回路には、エレメントアドレスカウンター１００５と、可変遅延回路１３０４と、ノーマルベクトル長カウンター１３０２と、テールゲートベクトル長カウンター１３０１とが含まれている。
【００６１】
可変遅延回路１３０４は、命令発生時に生ずる書込みＶ０信号１３１７によりトリガーされる。遅延量は、どの機能ユニットを用いるべきかを示す機能ユニット実行信号(Go Functional Unit signal)１３１５とテールゲート信号１３３０とによって決められる。ノーマル対テールゲート命令(normal vs. tailgating instructions)に対して異なった遅延量が使われている。適当な時間だけ遅延させると、可変遅延回路１３０４から書込み開始信号１３２８が発生する。ラッチ１３２８はこの書込み開始信号１３１８によってセットされて、ベクトルレジスターに書込みモード信号を供給する。ラッチ１３２８からのこの書込みモード信号は、伝送されたエレメントアドレスが書込み動作のためのものであると示している。
【００６２】
書込み開始信号１３１８は、１３０９により命令解読器からの読取り実行Ｖ０信号１３１９との論理和がとられる。オアゲート１３０９からの出力はラッチ１３０５をセットするようになっている。従って、ラッチ１３０５は、読出し動作実行直後か、叉は、ノーマル書込み動作のための所定遅延時間後にセットされる。ノーマルベクトル長カウンター１３０２の動作は、ラッチ１３０５からの出力によりイネーブルされる。ノーマルベクトル長カウンター１３０２が値１をホールとすると、ラッチ１３０５がそれによりリセットされて、ノーマルベクトル長カウンター１３０２を不動作にする。ノーマルベクトル長カウンター１３０２は、前述のイネーブルが取り消されるまでに０へとカウントダウンする。
【００６３】
テールゲート作用の最中に、書込み開始信号１３１８が１３１４によりテールゲート信号１３３０との論理積がとられ、アンドゲート１３１４からの出力によりラッチ１３０６がセットされる。ラッチ１３０６からの出力により、テールゲートベクトル長カウンター１３０１がイネーブルされる。テーブルゲートベクトル長カウンター１３０１が値１をホールドするようになると、ラッチ１３０６がそれによってリセットされて、テールゲートベクトル長カウンター１３０１を不動作にする。テールゲートベクトル長カウンター１３０１は、前述のイネーブルが取り消されるまでに０へとカウントダウンする。
【００６４】
ノーマルベクトル長カウンター１３０２とテールゲートベクトル長カウンター１３０１とは、何れかのカウンターが値１に達するとオアゲート１３１２を介してリリースＶ０信号１１０４を供給する。入力１３２２と１３２３とで示したように、両方のカウンターは各期間毎にカウントダウンする。回路１３２４は、両方のカウンターが同時に１へとカウントダウンすると、余分のリリースＶ０信号１１０４を発生する。
【００６５】
テールゲートベクトル長カウンター１３０１は、テールゲート作用のみに厳格に利用する。このテールゲートベクトル長カウンター１３０１は、ノーマルベクトル長カウンター１３０２と基本的には同一の機能をなす。ノーマルベクトル長カウンター１３０２についていえば、、テールゲート信号の反転信号１３３０は、アンドゲート１３１０を介してベクトル長データ１３２６をそのカウンターにロードする。それに対して、テールゲート信号１３１０は、アンドゲート１３１３を介してベクトル長データ１３２６をテールゲートベクトル長カウンター１３０１にロードする。実行Ｖ０信号１３２５は、両方のアンドゲート１３１０と１３１３での命令発生を示す。  ベルト長カウンタ１３０１又は１３０２は、両カウントがゼロでない限りは、エレメントアドレスカウンタ１００５を使用可能とする。ノーマルベクトル長カウンタ１３０２からの出力は、１３２９のラッチ１３０５からの出力と論理積(ＡＮＤ)される。テールゲートベクトル長カウンタ１３０１からの出力は、１３１１のラッチ１３０６の出力と論理積される。アンドゲート１３２９と１３１１からの出力は、オアゲート１３０７に入力を与え、該オアゲートは、代わって、エレメントアドレスカウンタ１００５とステップＶ０ラッチ１３０８の両方へ使用可能信号を送る。１３０８で示すステップＶ０よりの出力は、エレメントアドレスカウンタ１００５の値が有効であることをベクトルレジスタメモリに指示する。
【００６６】
ノーマルベクトルレングスカウンタ１３０２は、カウントが値７以下になるといつでも、禁止テールゲート信号１３２１を発信する。信号１３２１は、命令発行に関する問題を防止する為に用いられる。もし、読み取りカウントが余りにも小さくなると、信号１３２１は、テールゲーティング命令の開始を禁止する。その時点でテールゲーティング命令が進行中の場合は、該命令は、信号１３２１により影響を受けない。
【００６７】
エレメントアドレスカウンタ１００５は、入力１３２７により指示された各タイムピリオドにおいて増分する。エレメントアドレスカウンタ１００５はリリースＶ０信号１１０４によってクリアされる。テールゲーティングを行う場合は、第１のリリースＶ０信号１１０４は、エレメントアドレスカウンタ１００５により無視される。  テールゲートベクトル長カウンタ１３０１からのイネーブル信号１３０７は、エレメントアドレスカウンタ１００５に、最初の命令に使われた長さを超えてカウントさせることができる。この為、テールゲーティング命令が、エレメントアドレスカウンタ１００５の値からアドレスオフセットを差し引くことにより、ベクトルレジスタにデータを書きこむことを可能にする。
【００６８】
図２０は、ベクトルアドレスオフセット回路を示す。４ビットレジスタＶ０アドレスオフセット１４０９は、オアゲート１４１９によりセットされる。オアゲート１４１９は、その入力に、アンドゲート１４１８,１４２０,及び１４２１からの出力を受ける。アンドゲート１４２１は、命令発行時に、Ｖ０アドレスオフセットレジスタ１４０９を初期化する。アンドゲート１４２１への入力は、アンドゲート１４２２からの出力によりゲートされる値２である。アンドゲート１４２２は、その入力に、信号,１１０５で示すリクエストＶ０,発生(Issue)１１０６、及びＶ０ビジー−１  １１０１の補数を受ける。かくして、Ｖ０アドレスオフセット１４０９は、命令発令時に、ベクトルレジスタＶ０にリクエストがなされ、又、Ｖ０がすでにビジーでない限りは、値２で初期化される。
【００６９】
Ｖ０アドレスオフセット１４０９の内容は、アンドゲート１４２０の出力により保持される。アンドゲート１４２０への他の２つの入力は、信号Ｖ０ビジー−１  １１０１とＶ０スロット１  １２０２の補数である。その為、Ｖ０アドレスオフセット１４０９の「ラップ  アラウンド」(wrap around)を生じ、一方、ベクトルレジスタＶ０は、ビジーのままであり、Ｖ０スロットカウンタは、スロット１を指示しない。
【００７０】
Ｖ０アドレスオフセット１４０９に保持された値は、Ｖ０スロットカウンタがスロット１を指示する度毎に増分される。アンドゲート１４１８は、その入力に、信号Ｖ０スロット１  １２０２と、加算器１４０８により、１つだけ増分されたＶ０アドレスオフセット１４０９からの値を受ける。
【００７１】
全てのベクトルレジスタに対するアドレスオフセットは、単一の選定ネットワーク１４０１にファンイン(fan in)される。所望のアドレスオフセットは、宛先ベクトルレジスタを識別するi−デジダネータ信号１４１７によって選ばれる。アドレスオフセットは、送出され、レジスタ１４０７に保持される。ベクトルアドレスオフセット１０１０は、命令発令時においてのみ送られるので、唯一つのアドレスオフセットを１４０１で選ぶ必要があるのみである。次いで、ベクトルアドレスオフセット１０１１に保持された値は、図１５および図１６に示す様に、全ての８個のベクトルレジスタにファンアウト(fan out)される。ベクトルアドレスオフセットレジスタ１０１２(８個の中の１つ)は、対応するテールゲート信号１０２５(８個の内の１つ)が存在しさえすれば、命令発令時に、ロードされる。
【００７２】
レジスタ１４０７からの出力は、４つのアダー１４０２,１４０３,１４０４及び１４０５に送られる。これらのアダーからの出力は、選定ネットワーク１４０６に入力を与える。命令発令時に、４つの信号の１つは、アダー出力のうちのどれを選ぶかを指示する。これらの信号は、図２０では、調整オフセット＋３  １４２３、調整オフセット＋２  １４２４、調整オフセット＋１  １４２５、及び調整オフセット＋０  １４２６として、ラベル付されている。１つの信号のみが、常にアクチブとなっている。次いで、各信号は、１組のラッチ１４１５に保持され、信号１４１６を介して、選定ネットワーク１４０６を制御する。
【００７３】
図１５および図１６にも示される、結果としてのベクトルアドレスオフセット１０１０は、テールゲーティング演算で調整アドレス１０１９に到達する為にチップアドレス１０２０から差し引く必要がある数である。調整アドレス１０１９により測定されるものは、第１命令の発令とテールゲーティング命令の発令との間の時間の量と、テールゲーティング命令の機能ユニットの遅れ時間との和である。その間に、命令が如何なる回数でも発せられる可能性がある。図２０に示す様に、第１の命令が発せられると、ベクトルアドレス１４０９は、値２で初期化され、スロット１信号１２０２によって４期間毎に増分される。最終時に、テールゲーティング命令が発せられる。テールゲーティング命令の発令時に、アドレスオフセット１４０９は、値０,１,２,又は３により調整される。この最終調整は、テールゲーティング命令の機能ユニットタイムに左右される。
【００７４】
図７ないし図１４のタイミングダイヤグラムは、第２の実施の形態において実施されたテールゲーティングに関する発明の説明の助けとなるであろう。
【００７５】
図７は、代表的なテールゲーティング動作を図示するタイミングダイヤグラムである。ダイヤグラムは、第１命令(Ｖ2＝Ｖ0＋Ｖ1)をテールゲートする第２命令(Ｖ0＝Ｖ3＆Ｖ4)、及び、第２命令をテールゲートする第３命令(Ｖ3＝Ｖ5＞Ａk)を示す。図７のタイミングダイヤグラムでは、水平軸心に沿ったグラデーションは、期間を表わす。３セグメント(ダッシュ、実線、ダッシュ)に分断された水平方向の線は、それぞれ、オペランドを機能ユニットに送るのに要する時間、機能ユニットが必要とするタイムピリオドの数、及び、結果を宛先ベクトルへ送るのに要するタイムピリオドの数を表わす。伝達時間は、機能ユニットが、ベクトルレジスタと同じモジュールにあるかどうかによって変動する場合がある。これは、例えば、ロジカル機能ユニットを用いる第２命令において、そうである。
【００７６】
図７のタイムピリオドでは、ベクトルレジスタＶ０とＶ1は、オペランドを整数機能ユニットへ供給しはじめる。図７の続く線は、後続の要素及び命令を介するサイクルを示している。オペランドは、期間当り１要素の割合で供給される。期間t１４において、結果が、第２命令、Ｖ０テールゲーティング命令から戻り始める。その為、ベクトルレジスタＶ０は、期間t１４において、書き込み動作の準備ができている必要がある。第１の結果である要素ゼロは、第１命令に対して要素８を読み取るのに続くピリオドの間に書き込まれる。要素９が読み取られた後で、要素１が書き込まれる。要素１０が読み取られた後で、要素２が書き込まれる。これは、テールゲーティング操作の間、ベクトルレジスタＶ０への、又は、ベクトルレジスタＶ０からのデータの基本的な流れを示す。
【００７７】
命令発行制御では、テールゲーティング命令を調べて機能ユニットが起す遅れの量を知り、どの期間で、第１の結果が、要素ゼロでベクトルレジスタに貯えられる様に戻るかを決定する必要がある。この情報に基づいて、ベクトルレジスタ制御は、それが、ベクトルレジスタのバンクサイクル(bank cycle)と同期化する迄第２の命令を遅らせる。
【００７８】
第２の好ましい実施の形態では、最も速い場合、コンピュータは、２つの期間毎に、１度命令を発することができる。テールゲーティング命令の場合、第２の命令が発し得る最も早い期間は、期間t５である。図７の例では、第２の命令は、それが、バンクサイクルと同期化していることを確認する為に、更に追加のもう１期間の間、保持される。これにより、ベクトルレジスタ要素の読み取りと、書き込みが、正しい、シーケンスで行われることが確実となる。図７は、テールゲーティングに対して同期化する為の保持命令発行に関して画くことができる。
【００７９】
テールゲーティングが無い場合は、第１命令の全結果要素が貯えられる迄、第２命令の発行を押える様にするレジスタの衝突が生じるであろう。
【００８０】
図８および図９の命令発行タイミングダイヤグラムでは、タイムt０で、加算命令が発せられる。加算命令は、Ｖ０ビジー−１とＶ０のビジー−３とをセットする。Ｖ０ビジー−３が、テールゲーティング命令を発令させる単一の期間の間クリアする場合を除いて、両者は、加算操作の間セットされたままとなる。第３のラインは、テールゲートスロットタイム操作を示す。２つの初期遅れを生じ、ついで、Ｖ０スロットカウンタは、リングカウンタとして作動を始める。第４のラインは、Ｖ０アドレスオフセットを示す。それは、常に２の値で初期化され、次いで、Ｖ０スロット１がＶ０スロットカウンタにより指示される度毎に、Ｖ０オフセットは、１だけ増分される。第５のラインは、信号リクエストＶ０スロット３を示す。リクエストＶ０スロット３の信号は、発行を待っているテールゲート命令により発生される。信号ゴウリードＶ０は、加算命令により発生され、ベクトルレジスタＶ０の各要素を読み取る様に、エレメントアドレスカウンタ(タイミングダイヤグラム中Ｖ０エレメントアドレスとラベル付)をトリガする。最後のラインは、ベクトルレジスタから各エレメントが読み取られるにつれて、減少するノーマルベルトル長カウンタ(タイミングダイヤグラム中Ｖ０長カウンタとラベル付)内の１００(オクタル−octal)のベルトル長を仮定する。
【００８１】
タイムピリオドt４で、Ｖ０スロット３が示され、信号リクエストＶ０スロット３がアクチブとなる。これらの２つの信号の論理和により、他の全発行条件が合致すれば、テールゲーティング命令の発令を可能とする単一期間の間、Ｖ０ビジー−３がクリアされる。この命令の発行によりＶ０ビジー−２、ライトＶ０がセットされ、期間t７でテールゲートベクトル長カウンタ(タイミングダイヤグラム中Ｖ０Ｔ.Ｇ.長カウンタとラベル付)が初期化される。
【００８２】
期間t５のスロット０の表示Ｖ０は、もう一度Ｖ０ビジー−３をセットし、Ｖ０アドレスオフセットを１カウントだけ増分する。１たび、第２命令が発せられると、調整Ｖ０アドレスオフセットはベクトルレジスタへ伝送される。調整は、命令の発行と同じ期間に行われる。かくして、調整アドレスに用いられるＶ０アドレスオフセットは、値２を含む前の期間からのＶ０アドレスオフセットである。この点から、スロットカウンタとＶ０アドレスオフセットは重要ではない。  次に、図１０および図１１を参照して、期間t４までに、エレメントアドレスカウンタは、エレメントアドレス２にある。同じ期間に、ノーマルベクトル長カウンタは、値７５(オクタル)迄減じている。ダイヤグラムの上部の４ラインは、４つのベクトルレジスタバンクの各々に生じるベクトルレジスタメモリ作動を図示する。初めの２つの期間の間、データは、ベクトルレジスタバンクから読み取られる。次の２つの期間の間では、バンクは、休止状態にあるが、又は、テールゲーティング動作が生じるにつれて新しいデータを書き込んでいる。期間t８,t９及びt１０は、テールゲートベクトル長カウンタが、減少を始める前に、３期間の間保持されていることを示している。図１０および図１１にも示す期間t９のボックスは、Ｖ０アドレスオフセットである。伝播(propagation)及びファンアウト(fan out)の遅れにより、調整オフセットの実際の発行と、それが、ラッチされ保持される迄の間には、期間が存在する。
【００８３】
次いで図１２および図１３を参照して、期間t１４では、最初の書き込み動作が開始される。期間t１３に示す減算は、有効な減算を示し、他の時点でも減算は行われているが、それは、ただ使用されないままとなっている。後続の書き込み動作の為の正しいＶ０チップアドレスを与える為に、４期間毎に、Ｖ０チップアドレスから、Ｖ０アドレスオフセットが差し引かれている。期間t１４から前方では、ベクトルレジスタバンクは、同じ期間で読み取り及び書き込みを行い、それにより、本発明のテールゲーティングが図示されている。此の例では、読み取り動作は、書き込み動作の前に完了するが、読み取りと書き込みのベクトル長は、完全に別個のものであるので、読み取り動作の前に、書き込み動作を完了することもできる。
【００８４】
次に図１４を参照して、ベクトルレジスタの予約は、２つの動作の最後が完了する迄保持される。両長カウンタは、独立して、ゼロに減じ、ついでリリースＶ０信号を送出する。この例では、読み取り動作により発生した最初のリリース信号は、Ｖ０ビジー−１をクリヤする。又、この例では、書き込み動作により発生した第２のリリースＶ０信号は、Ｖ０ビジー−２及びＶ０ビジー−３をクリヤする。
【００８５】
本明細書に開示のテールゲーティング技術は、代表的な応用において遭遇するタイプの計算において、処理スピードの向上に有意義な改善をもたらす。テールゲーティングは、前述の米国特許第４,１２８,８８０に開示した連鎖(chaining)技術とは別個の独立したものであるが、必要に応じて、又、論理的スペースが許容されるならば、性能を更に改良する為連鎖(chaining)に関連して用いてもよい。
【００８６】
以上、２つの特定のコンピュータハードウエアの形状を、本明細書における本発明の好ましい実施の形態とに図示し、かつ、説明したが、同様の目的を達成する様に計画されたコンピュータハードウエアのどの様な構成でも、図示の形状に、かえて用いることができることは、当業者に明らかであろう。したがって、ここに開示した本発明は、"発明の詳細な説明"において述べた部品と異なる部品を用いても実施できるものである。本出願は、本発明の種々の適応、又は、変形等を包含することを意図している。それ故、本発明が、請求の範囲及びその同等項によってのみ限定されるということが明らかに意図されているものである。
【図面の簡単な説明】
【００８７】
【図１】本発明を組み込んだコンピュータの計算部の詳細ブロックダイヤグラムの一部
【図２】本発明を組み込んだコンピュータの計算部の詳細ブロックダイヤグラムの一部
【図３】第１の実施の形態において実施したテールゲーティング指令Ｖ０＝Ｖ０＋Ｖ０のタイミングダイヤグラムの一部
【図４】第１の実施の形態において実施したテールゲーティング指令Ｖ０＝Ｖ０＋Ｖ０のタイミングダイヤグラムの一部
【図５】第１の実施の形態のベクトルレジスタ制御の概略ブロック図
【図６】第１の実施の形態のベクトルレジスタメモリの概略ブロック図
【図７】第２の実施の形態において実施した３指令テールゲーティングシーケンスのタイミングダイヤグラム
【図８】組合せると、図７の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図９】組合せると、図７の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図１０】組合せると、図７の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図１１】組合せると、図７の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図１２】組合せると、図７の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図１３】組合せると、図７の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図１４】組合せると、図７の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図１５】第２の実施の形態のベクトルレジスタメモリの概略ブロック図の一部
【図１６】第２の実施の形態のベクトルレジスタメモリの概略ブロック図の一部
【図１７】第２の実施の形態のベクトルレジスタ予約制御の概略ブロック図
【図１８】第２の実施の形態のテールゲートスロットタイム制御の概略ブロック図
【図１９】第２の実施の形態のベクトルアドレス制御の概略ブロック図
【図２０】第２の実施の形態のベクトルアドレスオフセット制御の概略ブロック図
【図１】
2008181551.tif 000003
【図２】
2008181551.tif 000004
【図３】
2008181551.tif 000005
【図４】
2008181551.tif 000006
【図５】
2008181551.tif 000007
【図６】
2008181551.tif 000008
【図７】
2008181551.tif 000009
【図８】
2008181551.tif 000010
【図９】
2008181551.tif 000011
【図１０】
2008181551.tif 000012
【図１１】
2008181551.tif 000013
【図１２】
2008181551.tif 000014
【図１３】
2008181551.tif 000015
【図１４】
2008181551.tif 000016
【図１５】
2008181551.tif 000017
【図１６】
2008181551.tif 000018
【図１７】
2008181551.tif 000019
【図１８】
2008181551.tif 000020
【図１９】
2008181551.tif 000021
【図２０】
2008181551.tif 000022
【手続補正書】
【提出日】平成20年3月19日(2008.3.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のベクトルレジスタを有するコンピュータでのベクトルテールゲーティング(vector tailgating)多重操作方法であって、
（イ）コンピュータ内で第１の操作を行うステップとして、
（ロ）前記第１の操作で用いる為に、第１のベクトルレジスタから、少なくとも１つの第１オペランド要素を順次読み取るステップを含み、
（ハ）少なくとも１つの第２の結果としての要素を作り出す為に、コンピュータ内で第２の操作を行うステップとして、
（ニ）前記第２の操作で用いるために、第２のベクトルレジスタから少なくとも１つの第２のオペランド要素を順次読み出すステップと、
（ホ）第２の結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次第１のベクトルレジスタに記憶するステップとを含み、上記第１オペランド要素は、上記第１の操作のために読み出され、
（ヘ）少なくとも１つの第３の結果としての要素を作り出す為に、コンピュータ内での第３の操作を行うステップとして、
（ト）第３の結果としての要素を、要素のアドレス時間の少なくとも１つ分遅らせて、順次第２のベクトルレジスタに記憶させるステップを含み、上記第２オペランド要素は、上記第２の操作のために読み出されることを特徴とする操作方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】削除
【補正の内容】
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
本発明においては、複数のベクトルレジスタを有するコンピュータでのベクトルテールゲーティング(vector tailgating)多重操作方法であって、
（イ）コンピュータ内で第１の操作を行うステップとして、
（ロ）前記第１の操作で用いる為に、第１のベクトルレジスタから、少なくとも１つの第１オペランド要素を順次読み取るステップを含み、
（ハ）少なくとも１つの第２の結果としての要素を作り出す為に、コンピュータ内で第２の操作を行うステップとして、
（ニ）前記第２の操作で用いるために、第２のベクトルレジスタから少なくとも１つの第２のオペランド要素を順次読み出すステップと、
（ホ）第２の結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次第１のベクトルレジスタに記憶するステップとを含み、上記第１オペランド要素は、上記第１の操作のために読み出され、
（ヘ）少なくとも１つの第３の結果としての要素を作り出す為に、コンピュータ内での第３の操作を行うステップとして、
（ト）第３の結果としての要素を、要素のアドレス時間の少なくとも１つ分遅らせて、順次第２のベクトルレジスタに記憶させるステップを含み、上記第２オペランド要素は、上記第２の操作のために読み出されることを特徴とする操作方法である。