JP4144153B2 - ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング - Google Patents

ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング Download PDF

Info

Publication number
JP4144153B2
JP4144153B2 JP2000055714A JP2000055714A JP4144153B2 JP 4144153 B2 JP4144153 B2 JP 4144153B2 JP 2000055714 A JP2000055714 A JP 2000055714A JP 2000055714 A JP2000055714 A JP 2000055714A JP 4144153 B2 JP4144153 B2 JP 4144153B2
Authority
JP
Japan
Prior art keywords
vector
vector register
signal
address
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2000055714A
Other languages
English (en)
Other versions
JP2000207389A (ja
Inventor
スィーモアー・アール・クレイ
ジェイムズ・リチャード・ベデル
デニス・ダブリュー・クバ
ウィリアム・ティ・ムーア・ジュニア
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.)
Silicon Graphics Inc
Original Assignee
Silicon Graphics Inc
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 Silicon Graphics Inc filed Critical Silicon Graphics Inc
Publication of JP2000207389A publication Critical patent/JP2000207389A/ja
Application granted granted Critical
Publication of JP4144153B2 publication Critical patent/JP4144153B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

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

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)
  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、高性能ベクトルコンピュータの分野に関するもので、特に、ベクトル算定における性能上のゲインを与える為に、本明細書で「テールゲーティング」と呼ぶ処理におけるベクトルレジスタの使用を制御する装置、並びに、その方法に関するものである。
【0002】
【従来の技術】
通常スーパコンピュータと呼ばれる、大型で極めて高性能のコンピュータの分野では、オーダされた複数の組のデータ、又は、ベクトルを含む計算において、非常に高いデータ処理速度を達成する為に、普通、ベクトル処理構成が設けられる。Seymour R.Crayに与えられ、Cray Research, Inc.に譲渡された米国特許第4,128,880号には、非常に好結果のスーパコンピュータベクトル処理構成が開示されている。上記の構成においては、オペランドとして機能ユニットに送り、かつ、機能ユニットからの結果としてのベクトルを受け取り、かつ、保持する様に、複数のベクトルレジスタが、ベクトルを保持する為に設けられている。最大の速度を得る為に、完全にセグメント化された機能ユニットが設けられ、その内部では、機能ユニットに達するか、又は、機能ユニット内で移動する全ての情報は、各時間ピリオドの終わりにおいて捕捉され、かつ、保持される。所定のベクトルプロセスの為のオペランドレジスタとして用いたベクトルレジスタは、時間ピリオド当り1要素の割合で機能ユニットに個々の要素を伝送する。一たびスタートアップタイム、又は、機能ユニットタイムが過ぎると、機能ユニットは連続する時間ピリオドでの連続的結果要素を与え、そして、これらの要素は、その特定のベクトルプロセスの結果レジスタとして働いているベクトルレジスタに、結果ベクトルの要素として伝達される。ベクトルレジスタと主メモリとの間のベクトル転送も又、時間ピリオド当り1要素の割合で達成できる。
【0003】
【発明が解決しようとする課題】
いずれも、プログラム命令制御により、どの機能ユニット、又はメモリと連係させてもよい、いくつかの機能ユニット(例えば、浮動小数点乗算、整数加算、ロジカル演算等)や、いくつかのベクトルレジスタ(例えば、8個)を設けることにより、米国特許第4,128,880号によるコンピュータに、多数の同時に進行するベクトルプロセスを付与し、それによって、極めて高いデータ処理速度を達成することができる。
【0004】
【課題を解決するための手段】
請求項1においては、オーダされた1組のデータの複数の要素を貯える為の手段を含む少なくとも第1のベクトルレジスタを有するコンピュータ用ベクトル処理装置であって、
(イ)コンピュータ内で第1の操作を行うための手段であって、この第1の操作で使用されるために、オペランド要素が順次第1のベクトルレジスタから読み取られるようになっている第1の操作手段と、
(ロ)コンピュータ内で第2の操作を行う為の手段であって、この第2の操作により発生された結果としての要素が、順次第1のベクトルレジスタに貯えられるようになっている第2の操作手段と、
(ハ)第1のベクトルレジスタからのオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに応じて、第2の操作により発生した結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次第1のベクトルレジスタに記憶するために、前記第1と第2の操作手段に結合し、前記第 1 の操作の発令時と、第 2 操作の発令時の時間差に、第 2 操作の機能ユニットの遅れ時間を加えた和に基づき、前記第2の操作により発生された結果としての要素の貯え動作を、第1の操作のためのオペランド要素の読み取り動作に対して同期させる同期化手段とを備えることを特徴とする処理装置である。
【0005】
請求項2においては、少なくとも第1のベクトルレジスタを備えたコンピュータでのベクトル処理方法であって、
(イ)コンピュータ内で第1の操作を行うステップとして、
(ロ)前記第1の操作で用いる為に第1のベクトルレジスタから少なくとも1つのオペランド要素を順次読み出すステップと、
(ハ)第1のベクトルレジスタからのオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに応じて、第2の操作からの結果としての要素を、要素のアドレス時間の少なくとも 1 つ分遅らせ、要素のアドレス順番に従い、順次第1のベクトルレジスタに記憶するために、前記第 1 の操作の発令時と、第 2 操作の発令時の時間差に、第 2 操作の機能ユニットの遅れ時間を加えた和に基づき、前記第2の操作により発生された結果としての要素の貯え動作を、第1の操作のためのオペランド要素の読み取り動作に対して同期させるステップとを含み、
(ニ)前記第2の操作をコンピュータ内で行うステップとして、
(ホ)前記第2の操作よりの結果としての要素を、第1のベクトルレジスタに順次記憶させるステップを含むことを特徴とする処理方法である。
【0006】
請求項3においては、請求項2に記載の処理方法であって、更に、コンピュータ内で少なくとも1つの中間操作を行うステップを設け、該中間操作は、第1の操作の後で、かつ、第2の操作の前に行われることを特徴とする処理方法である。
【0008】
【発明の実施の形態】
以下の好ましい実施の形態の詳細な説明においては、説明の1部を構成すると共に、本発明を実施する2つの特有な実施の形態を図示する添付の図面を参照する。両実施の形態共、ブロック図とタイミングダイヤグラムに関して説明され、それに基づいて、当業者に一般に知られている様に、詳細なロジックデザイン(図示せず)が構成される。更に、本発明の範囲内で、他の実施の形態を利用できることや、構成上の変形を実施することも可能であることが了解されるべきである。
【0009】
本発明にかかるベクトル処理及び制御手段の形態と作動は、本発明を用いるコンピュータシステムの組織の大略の解説で説明を始めると最も了解が容易であると考えられる。次に、本発明の形態と作動の詳細を説明する。
【0010】
図1および図2のブロック図において、コンピュータシステムの計算部が詳細に示される。計算部は、全体的に参照番号100で示す1組のベクトルレジスタよりなる。ベクトルレジスタはデータの高速処理を与えるので、コンピュータの主要計算レジスタを構成する。好ましい両実施の形態において、図1に、V0からV7として示す、8個の個別ベクトルレジスタがある。各ベクトルレジスタは、ベクトルレジスタV0において、要素00より77を8進数字で示している様に、64の個々の要素よりなっている。各要素は、64ビットのワードを保持している。
【0011】
ベクトル処理に3個の機能ユニットが提供されている。それらは、整数ユニット110と、ロジカルユニット120と、シフトユニットは130である。更に、2個の機能ユニットが、コンピュータのベクトルとスカラ量部分の間で共用されている。これらは、加算140と掛算150用の浮動小数点機能ユニットである。
【0012】
ベクトル演算は、1つ、又は、それ以上のベクトルレジスタの第1要素からオペランドを得、それらを機能ユニットに配送することにより始められる。各タイムピリオドにおいて、連続的要素が与えられ、各演算が行われるにつれて、結果は、宛先ベクトルレジスタの連続要素に送られる。ベクトル演算は、命令により行われた演算の数が、ベクトルレングスレジスタ160の内容により規定されるカウントと等しくなる迄続けられる。
【0013】
本発明の図面及び明細書を含むベクトル演算の記号的表現では、ベクトルレジスタは、サブスクリプトi、j及び kにより識別される。サブスクリプトiは、宛先ベクトルレジスタを識別するのに用いられる。サブスクリプトjとkは、オペランドベクトルレジスタを識別するのに用いられる。例えば、
Vi=Vj+Vk
ベクトルレジスタの要素は、数字的サブスクリプト(例えば、V46は、ベクトルレジスタ4の要素6)で識別される。
【0014】
ベクトルレジスタの要素は、オペランドとして機能ユニットに伝達され、次いで、後続のタイムピリオドで前の演算の結果の宛先を与える。レジスタをオペランドレジスタと、それに次いで、宛先レジスタの両方に用いることにより、2つ、又は、それ以上のベクトル演算の「テールゲーティング」を一緒に行うことが可能となる。このモードでは、タイムピリオド毎に、2つ、又は、それ以上の結果が作り出される。これらのベクトル演算のタイムピリオドは、通常、単一システムクロックピリオドである。
【0015】
このテールゲーティングモードを除いて、ベクトルレジスタは、それらがベクトル計算の含まれるタイムピリオドの間予約される。同じベクトルレジスタを必要とするがテールゲーティングモードで実行できない他の指令は、前の指令が完成し、予約が外される迄、発せられない。しかし、全ての機能ユニットが独立しているので、多様な関係のないベクトル処理演算を、異なる機能ユニットや、異なるオペランドや結果ベクトルレジスタを用いて同時に行うことができる。
【0016】
好ましい第1の実施の形態
本発明の好ましい第1の実施の形態を、図3ないし図6に図示する。
第1の実施の形態のベクトルレジスタ制御の概略ブロック図を図5に示す。Issueとラベル付した回路301は、その入力として、アンドゲート302と303からの反転信号を、その入力とする。両出力は、指令を発し得る前に待つ必要があることを示すものである。
アンドゲート302への入力は、回路305の出力と、ラッチ304に保持される信号VjリードリクエストとVkリードリクエストとよりなる。回路305は、VjとVkリードビジイ及びライトビジイビットを調べる。1リードビジイビット及び1ライトビジイビットが、各ベクトルレジスタに与えられる。これらのビットは、必要とされるオペランドベクトルレジスタが、以前のリード又はライト演算に対して、現在ビジイであるか否かを示す。もし、要求されるオペランドベクトルレジスタがビジイでない場合は、アンドゲート302からの反転信号が、指令の発令を可能とする。
【0017】
アンドゲート303からの反転信号は、指令の発令が行われる迄に、アンドゲート302からの反転信号に関して調べる必要がある。アンドゲート303への入力は、回路307よりの出力と、ラッチ306における信号Viライトリクエストである。回路307は、要求された宛先ベクトルレジスタか、現在書き込み動作でビジイであるかどうかを決定する為に、Viライトビジイビットを調べる。指令の発令には、宛先ベクトルレジスタが、前の指令の宛先としてビジイでないことが必要である。
【0018】
指令の発令が行われると、回路301は、313の信号を、Vjリードビジイ及びVkリードビジイを設定する為に、又、314の信号を、Viライトビジイを設定する為に送り出す。又、信号312が、回路301から、ベクトルシーケンス制御308へ送られる。代わって、ベクトルシーケンス制御308は、ゴウリードVj及びゴウリードVk信号316を発生する。これらの信号は、図6に示す様に、Vj/Vkリードアドレスカウンタ401への入力として働く。信号316は8ビットよりなる(各ベクトルレジスタについて1ビット)信号316は、ベクトルレジスタの内のどれがリード動作の為に用いられるべきかを示している。代表的に言えば、リード動作の間は、VjはVkと異なるであろう。しかし、本実施の形態では、VjはVkと同じベクトルレジスタとしてもよいので、ゴウリードVjとゴウリードVkは、同じ信号であってもよい。
【0019】
ベクトルシーケンス制御308は、又、図5に、参照番号310で表わされるVj/Vkベクトルレングスカウンタをトリガする為に、信号323を送る。信号323は、8ビットよりなる。(ベクトルレジスタと連係する各ベクトルレングスカウンタ310に対して1ビット)。
【0020】
代表的に言えば、ベクトルリード動作の間は、VjはVkと異なるであろう。しかし、本実施の形態では、VjはVkと同じベクトルレジスタとしてもよいので、VjベクトルレングスカウンタとVkベクトルレングスカウンタは、同じ装置であってもよい。
【0021】
Vj/Vkベクトルレングスカウンタ310は、応用ソフトウエアにより発せられるプロセサ指令、ロードベクトルレングスによって初期化される。Vj/Vkベクトルレングスカウンタ310がゼロに減じると、それは、図6のVj/Vkリードアドレスカウンタ401をクリアするエンドリードVj/Vk信号317を送り出す。又、Vj/Vkベクトルレングスカウンタ310は、対応するリードビジイビットをクリアする為に、リリースVj/Vk信号318を送り出す。
【0022】
ベクトルシーケンス制御308も、又、Viライトディレイカウンタ309を作動さす為に信号315を発する。信号315は、8ビットよりなる(ベクトルレジスタと連係する各ライトディレイカウンタ309に対して1ビット)。Viライトディレイカウンタ309により受けられたゴウ機能ユニット信号322は、使用中の機能ユニットと、宛先ベクトルレジスタに書き込む前に要求されるディレイの量を示す。どの機能ユニットのディレイが必要かを決定する知能は、Viライトディレイカウンタ309に含まれている。
【0023】
Viライトディレイカウンタ309がゼロに減じると、それは、Viベクトルレングスカウンタ311をトリガする信号ゴウライト321を発する。Viベクトルレングスカウンタ311は、図6に示すViライトアドレスカウンタ402とViライトイネイブルラッチ403に入力されるゴウライトVi信号319を送り出す。
【0024】
Viベクトルレングスカウンタ311は、応用ソフトウエアにより発せられるプロセサ指令、ロードベクトルレングスにより初期化される。リリースVi信号320と、エンドライトVi信号324は、カウンタがゼロに減じた時、Viベクトルレングスカウンタ311により送り出される。リリースVi信号320は、Viライトビジイビットをクリアする。その後、そのベクトルレジスタを用いて別の指示を発することができる。エンドライトVi信号324は、図6のViライトアドレスカウンタ402をクリアする。
【0025】
第1の実施の形態の為のベクトルレジスタメモリの概略ブロック図を図6に示す。ベクトルレジスタ404は、3つの入力を含む。即ち、6ビットリードアドレス406と、6ビットライトアドレス407と、ライト0/1信号408である。ベクトルレジスタ404は、代表的メモリ装置が、唯一のアドレス入力を持つのみであるという点で独特なものである。この装置は、2つの別々のアドレス入力、即ち、リードに対して1つ、そして、ライトに対して1つの入力を有する。各レジスタチップは、64×4ビットである。16のこの様なチップは、各要素が64ビットを含む64要素のベクトルレジスタを構成する。
【0026】
Vj/Vkリードアドレスカウンタ401は、ゴウリードVj/Vk信号316を受けると、1だけ増分し、それが、エンドリードVj/Vk信号317を受ける迄、タイムピリオド毎に増加しつづける。Viライトアドレスカウンタ402は、アクテブゴウライトVi信号319がある場合、各タイムピリオド毎に1づつ増分する。ゴウライトVi信号319は、又、Viライトイネイブル403で、結果データ410に合併している。この合併の為、ライト0/1信号408が生じる。この信号408は、単にライトストローブであるばかりではなく、又、ベクトルレジスタ404が貯える様に指示された、全64ビットのワードを提供する。
【0027】
ベクトルレジスタ404からのリードデータ409は、それが書き込まれる為に戻って来る前に機能ユニット405へ行く必要がある。その為、リードアドレス406は、常にライトアドレス407より進んでいる。リードアドレスカウンタ401が、ライトアドレスカウンタ402より少なくとも1だけ大きい限りは、回路は、テールゲーティングモードで作動することができる。
【0028】
指令V0=V0+V0のタイミングダイヤグラムであるFig−2は、テールゲーティングの観念を明らかにする助けとなるであろう。水平軸に沿うグラデーションは、タイムユニットを表わす。ダイヤグラムの上半分は、オペランドベクトルレジスタの制御シーケンスを表わす。又、ダイヤグラムの下半分は、宛先ベクトルレジスタの制御シーケンスを表わす。
【0029】
加算指令を実行する為には、オペランドベクトルレジスタを読み取り、その内容を、処理の為、機能ユニットに伝達する必要がある。タイムピリオドt0において、V0リードリクエストの信号が発せられる。この信号は、指令が発せられる前に、指令デューダにより発生される。
【0030】
V0リードリクエスト信号に関連して、所望のベクトルの為の2つの状況ビット、即ち、リードビジイビット及びライトビジイビットを調べる必要がある。V0リードビジイ及びV0ライトビジイが、ベクトルレジスタV0がオペランドとしても、又、宛先としても用いられていないことを示すと、シグナルイッシュV0リードが、指令の進行を許す様に指令デコーダに送り戻される。
【0031】
ベクトルレジスタV0をオペランドとして用い得る様にするには、該ベクトルレジスタは、リード又はライト操作で、すでにビジイの状態であってはならない。もし、他のベクトルレジスタが、オペランドとして用いられているならば、制御シーケンスは、ダイヤグラムの上半分の様な状態になるであろう。しかし、ダイヤグラムは、シーケンスV0=V0+V0に対して完了している。
【0032】
タイムピリオドt0において、V0ライトリクエストの信号も発信される。ベクトルレジスタV0は、加算指令の結果の宛先を与える。ライトビジイビットを介して、チェックする必要があるものは、ベクトルレジスタが、すでに、以前の指令の宛先になっていないということである。次いで、シグナルイッシュV0ライトが、指令イッシュ制御へ送り返される。
【0033】
タイムピリオドt3において、指令の発行によりV0ベクトルシーケンス制御(タイミングダイヤグラム中V0制御とラベル付)が、ゴウリードV0という信号を送り、V0リードビジイをセットする。V0リードアドレスカウンタ(タイミングダイヤグラム中V0リードアドレスとラベル付)は、すでに、要素0の為に初期化されている。ゴウリードV0信号は、V0リードアドレスカウンタを、タイムピリオドt4で増分させる。その為、要素0は、ベクトルレジスタから読み取られ、タイムピリオドt5は、要素1の為のアドレスを提供する。この読み取り及び増分動作は、全ての要素が読み取られてしまうまで、後続するタイムピリオドを通じて続けられる。タイムピリオドt67で全ての64の要素が読み取られると、V0ベクトルシーケンス制御は、V0リードビジイをクリアする。エンドリードV0信号が同じピリオドの間に、要素アドレスをゼロにリセットするV0リードアドレスカウンタに送られる。
【0034】
オペランドは、機能ユニットに伝送される。いくらかのタイムピリオドの後に、結果のデータが、その宛先であるV0ベクトルレジスタに送り戻される。理論的には、ベクトルレジスタより読み取られた要素は、後続するタイムピリオドで新しいデータで書き込むことができる。
【0035】
図3および図4の下半分を参照して、タイムピリオドt3では、V0ライトアドレスカウンタ(タイミングダイヤグラム中V0ライトアドレスとしてラベル付)は、エレメントアドレスOを含む。指令の発行により、V0ライトビジイをセットし、V0ベクトルシーケンス制御は、ゴウライトV0信号を発するV0ライトアドレスカウンタは、2つのタイムピリオドt3とt4の間、要素0のままとなる。V0リードアドレスカウンタが1で、V0ライトアドレスカウンタが0(タイムピリオドt5)になると直に、要素0が新しいデータで書き込まれる。その為、読み取りと書き込みとの動作の間に、1タイムピリオドの差がある。通常、読み取りと書き込み動作の間に、機能ユニットタイムがある。
【0036】
機能ユニット遅れ時間により、読み取られている要素は、同じタイムピリオドには書き込まれないということが保償される。図3および図4において、V0ライトアドレスカウンタは、要素アドレス0で、2つのタイムピリオドの間、保持されているのが示されている。実際において、Viライトアドレスカウンタは、図5のViライトディレイカウンタ309により示されるタイムピリオドの数の間、要素アドレスゼロに保持される。
【0037】
タイムピリオドt5において、一たび書き込み動作がはじまると、V0ライトアドレスカウンタは、V0リードアドレスカウンタと同じ様に、各タイムピリオド毎に、歩進する。各要素が、宛先ベクトルレジスタに入って来ると、それは、読み取られているアドレスよりも常に少なくとも1カウントおくれている、現在アドレスされている要素内に書き込まれる。V0ライトアドレスカウンタは、全64要素を通じて、その時点で、V0ベクトルシーケンス制御がV0ライトビジイをクリアし、要素アドレスをゼロにリセットするV0ライトアドレスカウンタにエンドライトV0信号を伝達する時点である、タイムピリオドt68迄増分する。
【0038】
この実施の形態では、共通メモリは、テールゲーティングの目的で、機能ユニットとして取り扱うことができる。共通メモリからベクトルレジスタへ送られつつあるベクトルは、以前の指令で用いられているベクトルをテールゲートすることができる。機能ユニット時間に基づいて、テールゲーティング動作のタイミングを取るかわりに、メモリトランスファータイムが用いられる。
【0039】
第2の実施の形態
本発明の第2の実施の形態を図7、図8、図9、図10、図11、図12、図13、図14、図15、図16、図17、図18、図19、図20に示す。
【0040】
第2の実施の形態におけるベクトルレジスターは、4バンクに区画されている。図15および図16に示すように、これらの4バンクは、それぞれバンク0、バンク1、バンク2、バンク3として識別してある。また、図15および図16に示すように、各バンクは、4番目毎のエレメントを得ている。即ち、バンク0の場合では、エレメント0、エレメント4、エレメント8、・・・・のようにエレメントを得ている。
【0041】
レジスターチップは、高速型16x4メモリーである。レジスターチップのサイクル時間は、2期間(time period)である。レジスターの各バンクには、4期間おきにアクセスがなされる。従って、テールゲートモードで動作しているのでもなければ、バンクは2期間アクティブになり、2期間休止する。この2期間アクティブ、2期間休止のシーケンスは無期限に繰り返される。
【0042】
各バンクにはそれなりのアドレスレジスターがあって、図15および図16ではそれをチップアドレス1001から1004として示してある。エレメントアドレスカウンター1005は、6−ビットアドレスカウンターである。レジスターがアクセスされていると、そのカウンターは各期間毎にそのカウント値を順次カウントアップする。アドレスの最下位の2ビットはバンクセレクトビット1006である。最上位の4ビットは、チップアドレスビット1007である。チップアドレス1008は、最上位の4ビットを他のバンクに論理出力するレジスターにすぎない。バンクセレクトデコーダー1009は、チップアドレス信号1020がアクセスすべきバンクを選択するようになっている。
【0043】
テールゲート作用(tailgating)を行うためには、テールゲート命令のために書込みアドレスを発生すべく、ベクトルアドレスオフセット1010として示した下方のパスが利用される。このベクトルアドレスオフセット1010は4ビットであって、発生時にレジスター1011に送られる。レジスター1011の論理出力は、アンドゲート1027を介して各ベクトルレジスター毎のレジスター1012に供給される。テールゲートV0信号1025も発生時に送られる。テールゲートV0信号1025がアクティブになれば、ベクトルアドレスオフセットはアンドゲート1028を介して、選択されたベクトルレジスターに対応するベクトルアドレスオフセットレジスター1012に保持される。
【0044】
テールゲート命令のためにアドレスを発生するには、チップアドレス1008からの4ビット出力を減算器1013に供給して、レジスター1012に保持されているベクトルアドレスオフセットと減算する。減算器1013の出力は、調整済みアドレス1019と呼ばれるもので、チップアドレス1001に戻される。このオフセットは機能ユニットの遅延時間とテールゲート作用に伴う二つの命令が発生される間に経過する時間とに関係のあるものである。
【0045】
バンクサイクル期間は4期間であるから、エレメント0のアドレスは最初の2期間の間にチップアドレス1001に記憶される。調整済みアドレス1019は、後の2期間の間にチップアドレス1001に記憶される。減算は、4エレメンとの各グループ毎に一回実行されるだけで充分である。次のバンクにアクセスするためには、最初の調整済みアドレス1019を次のバンクのチップアドレスに伝送する。各期間毎にエレメンとが書き込まれるから、減算器は各バンク毎に用意する必要はない。チップアドレスは最初の4つの標準(reference)に付き同一になることになっていて、次の4つのアドレスに付き1だけインクレメントされる。エレメントアドレスカウンター1005からのバンクセレクトビット1006は、どのバンクを選択したかを判定するようになっている。本実施の形態におけるテールゲート作用に必要な条件の一つとして、ベクトルレジスターに結果が各期間毎に順次供給されている必要がある。各期間毎に結果を順次供給しないような操作では、テールゲート作用が行われない。
【0046】
本実施の形態では、テールゲート作用はマルチプレックス操作である。2期間おきに新たなアドレスが、最初は読出し信号が、その後には書込みアドレスがチップアドレス1001から1004に順次送り込まれる。操作がテールゲート作用でない場合、シーケンスは、2期間読出し叉は書込みアドレス、2期間「構わない」("don't care")、2期間読出し叉は書込みアドレス、などと言った具合になる。
前述の第1の実施の形態とは異なって、第2の実施の形態では読出しビジーや書込みビジーの間、各ベクトル毎に別々の予約ビットを含んでいない。その代わりに、二つの考えられるバンクサイクルの内の一つが使われることで予約の代用をなしている。つまり、最初のバンクサイクルにある予約フラグがあり、後のバンクサイクルにも別の予約フラグがあるのである。
【0047】
図17は、一つのベクトルレジスターのためのベクトルレジスター予約回路を示している。1101、1102、1103はそれぞれビジーフラグないし予約フラグを示す。前述したように、各ベクトルレジスターバンクのサイクル時間は2期間であって、4期間おきにバンクに対してアクセスがなされる。テールゲート作用時には、最初のサイクルが読出しであり、後のサイクルは書込みである。
【0048】
V0ビジー−1として示したラッチ1101は、4期間サイクルの内の最初の2期間を予約したことを示すために使われる。V0ビジー−2として示したラッチ1103は、後の2期間を予約するのに用いられる。このラッチは、ベクトルレジスターがテールゲートモードで動作しているときにセットされる。V0ビジー−3として示したラッチ1102は、タイミングのために用いられるコンポジットである。
【0049】
V0ビジー−1は、命令発生時(V0ビジー−2 1103はまだセットされていないとして)にベクトルレジスターのリクエストをオンにする。V0ビジー−2 1103は、V0ビジー−1 1101が既にセットされている場合に命令発生時にベクトルレジスターのリクエストをオンにする。V0ビジー−3 1102は、V0ビジー−1 1101がセットされている間にホールドされており、スロット時が発生するときには、V0ビジー3は1期間クリアーされる。V0ビジー−2 1103が一旦セットされると、リリースV0信号1104がベクトルアドレスコントロールから入るまで、セットされたままである。テールゲート作用時には、二つのV0リリース信号1104が用いられる。二番目のリリース信号は、最初のリリース信号がV0ビジー−1 1101をクリアーしている間に、V0ビジー−2 1103をクリアーする。V0ビジー−2 1101とV0ビジー−2 1103との両方がクリアーされていると、V0ビジー−3
1102もクリアーされる。
【0050】
V0ビジー−1は、アンドゲート1107と1109との論理和の出力に応じて1108によりセットされる。アンドゲート1107は、リリースV0信号1104の反転信号がそれをクリアーするまで、V0ビジー−1の内容をホールドする。他方、アンドゲート1109は、1105で示すリクエストV0が報知され、V0ビジー−1 1101が用いられていないときに、V0ビジー−1 1101を命令発生時にセットさせる。
【0051】
V0ビジー−3は、アンドゲート1110、1112、1113との論理和の出力に応じて111によりセットされる。アンドゲート1110には、V0ビジー−1 1101の出力と信号V0スロット時1208の反転信号とが入力されている。また、アンドゲート1112は、1105で示すリクエストV0が報知されると命令発生時1106にV0ビジー−3 1102をセットする。アンドゲート1113は、V0ビジー−2 1103がセットされ、且つ、V0ビジー−1 1101がセットされるか、叉は、1104で示すリリースV0が報知されていないときに、V0ビジー−3 1102をホールドする。
【0052】
V0ビジー−2 1103は、アンドゲート1116と1113との論理和の出力に応じて1115によりセットされる。アンドゲート1116は、V0ビジー−1 1103がセットされ、1105で示すリクエストV0が報知されると命令発生時1106にV0ビジー−2 1103をセットする。他方、アンドゲート1113は、オアゲート1114の出力が1の時にV0ビジー−1 1103をホールドする。オアゲート1114には、V0ビジー−1 1101とリリースV0信号1104の反転信号とが入力されるようになっている。
【0053】
図18は、テールゲートスロット時回路を示したものである。テールゲート命令の機能ユニット時間に応じて、書込み作用がベクトルレジスターに対して現に進行している読出し作用と同期する頃に命令が発生していなければならない。図18の回路では、ラッチ1201、1202、1203、1204を用いてこの同期機能を達成するために、4つの異なったスロットを利用している。各スロットは、記憶サイクルにおける4期間のいずれかの期間に対応している。
【0054】
最初の命令が発生した後の2期間において、ラッチ1201、1202、1203、1204からなるスロットカウンターは、スロット2において計数を開始する。ラッチ1205、1206は、次の命令が早まって発生することがないようにしている。即ち、テールゲート作用時に次の命令に対して2期間の遅延が与えられている。
スロットカウンターは、アンドゲート1215からの出力によりセットされる。このアンドゲート1215には、1105で示すリクエストV0、V0書込みリクエスト1317の反転信号、リクエストメモリー1207の反転信号、V0ビジー−1 1101の反転信号、発生が入力されるようになっている。リクエストV0信号1105は、ベクトルレジスターが最初にリクエストされると時のみ、スロットカウンターをして計数開始させる。書込みリクエスト信号1317の反転信号を利用することにより、ベクトルレジスターリクエストが読出し動作のためになされるのであれば、スロットカウンターは計数を開始する。リクエストメモリー信号1207の反転信号は、共通の記憶動作時にテールゲート作用を阻止するものであって、これが本実施の形態における唯一の制限である。V0ビジー−1信号1101の反転信号は、スロットカウンターが動作時に再び初期化されるのを防いでいる。発生信号1106は、命令発生時のみにスロットカウンターが初期化されるようにしている。
【0055】
最初の命令が発生された後、テールゲート命令が解読、発生されるものと仮定する。この場合、テールゲート命令は、最初の命令の直後に実行される必要はない。最初の命令の発生時とテールゲート命令の発生時との間に、いくつかの関係のない命令が実行されることがある。命令の種類によっては、4つの「リクエストスロット」信号の内の何れか一つ(例えば、リクエストV0スロットO信号1216)が命令解読器により伝送される。例えば、ベクトル論理積命令は、スロットOをリクエストするようになっている。従って、解読プロセスにおいては、リクエストV0スロットO信号1216が伝送される。異なった機能ユニット動作により、書込み動作を同期させるために別のスロットリクエストがなされることがある。
【0056】
図17におけるV0ビジー−3 1102により発生された信号は命令の発生を阻止しているから、この信号はテールゲート命令が発生されるためにも、1期間だけ中断しなければならない。図18の下半分に示したように、リクエストV0スロットO信号1216は、1209によりラッチ1201からのV0スロットO信号と論理積がとられて、V0スロット時信号1208を発生する。同様に、他のスロットに対するリクエストもそれに対応するラッチ1201、1202、1203、1204からの出力との論理積がとられるようになっている。それに伴って得られる信号はオアゲート1214を介してV0スロット時信号1208をセットするようになっている。
【0057】
このV0スロット時信号1208は、図17に示したベクトルレジスター予約回路に入力される。V0スロット時信号1208の反転信号は、1110によりV0ビジー−1 1101からの出力と論理積がとられ、その後1111によりV0ビジー−3 1102への入力として論理和がとられる。前述のようにV0ビジー−3 1102により伝送された信号は命令発生をホールドする。V0スロット時信号1208の反転信号は、1期間だけV0ビジー−3 1101をクリアーするので、他と抵触するものがなければ命令が発生される。
【0058】
テールゲート命令が発生すると、V0ビジー−2 1103が、発生信号1106とV0ビジー−1 1101からの出力とに応じて1116による論理積演算を介してセットされる。V0ビジー−2 1103は次のテールゲート作用が同一ベクトルレジスターに対して行われるのを防いでいる。V0ビジー−2 1103の内容はV0ビジー−1 1101の内容との論理積がとられて、V0ビジー−3 1102に対する入力を発生するから、V0ビジー−3 1102が次のV0スロット時信号1208に応じてクリアーできなくなっている。
【0059】
図19において、ベクトルアドレスコントロール回路には、エレメントアドレスカウンター1005と、可変遅延回路1304と、ノーマルベクトル長カウンター1302と、テールゲートベクトル長カウンター1301とが含まれている。
【0060】
可変遅延回路1304は、命令発生時に生ずる書込みV0信号1317によりトリガーされる。遅延量は、どの機能ユニットを用いるべきかを示す機能ユニット実行信号(Go Functional Unit signal)1315とテールゲート信号1330とによって決められる。ノーマル対テールゲート命令(normal vs. tailgating instructions)に対して異なった遅延量が使われている。適当な時間だけ遅延させると、可変遅延回路1304から書込み開始信号1328が発生する。ラッチ1328はこの書込み開始信号1318によってセットされて、ベクトルレジスターに書込みモード信号を供給する。ラッチ1328からのこの書込みモード信号は、伝送されたエレメントアドレスが書込み動作のためのものであると示している。
【0061】
書込み開始信号1318は、1309により命令解読器からの読取り実行V0信号1319との論理和がとられる。オアゲート1309からの出力はラッチ1305をセットするようになっている。従って、ラッチ1305は、読出し動作実行直後か、叉は、ノーマル書込み動作のための所定遅延時間後にセットされる。ノーマルベクトル長カウンター1302の動作は、ラッチ1305からの出力によりイネーブルされる。ノーマルベクトル長カウンター1302が値1をホールとすると、ラッチ1305がそれによりリセットされて、ノーマルベクトル長カウンター1302を不動作にする。ノーマルベクトル長カウンター1302は、前述のイネーブルが取り消されるまでに0へとカウントダウンする。
【0062】
テールゲート作用の最中に、書込み開始信号1318が1314によりテールゲート信号1330との論理積がとられ、アンドゲート1314からの出力によりラッチ1306がセットされる。ラッチ1306からの出力により、テールゲートベクトル長カウンター1301がイネーブルされる。テーブルゲートベクトル長カウンター1301が値1をホールドするようになると、ラッチ1306がそれによってリセットされて、テールゲートベクトル長カウンター1301を不動作にする。テールゲートベクトル長カウンター1301は、前述のイネーブルが取り消されるまでに0へとカウントダウンする。
【0063】
ノーマルベクトル長カウンター1302とテールゲートベクトル長カウンター1301とは、何れかのカウンターが値1に達するとオアゲート1312を介してリリースV0信号1104を供給する。入力1322と1323とで示したように、両方のカウンターは各期間毎にカウントダウンする。回路1324は、両方のカウンターが同時に1へとカウントダウンすると、余分のリリースV0信号1104を発生する。
【0064】
テールゲートベクトル長カウンター1301は、テールゲート作用のみに厳格に利用する。このテールゲートベクトル長カウンター1301は、ノーマルベクトル長カウンター1302と基本的には同一の機能をなす。ノーマルベクトル長カウンター1302についていえば、、テールゲート信号の反転信号1330は、アンドゲート1310を介してベクトル長データ1326をそのカウンターにロードする。それに対して、テールゲート信号1310は、アンドゲート1313を介してベクトル長データ1326をテールゲートベクトル長カウンター1301にロードする。実行V0信号1325は、両方のアンドゲート1310と1313での命令発生を示す。 ベルト長カウンタ1301又は1302は、両カウントがゼロでない限りは、エレメントアドレスカウンタ1005を使用可能とする。ノーマルベクトル長カウンタ1302からの出力は、1329のラッチ1305からの出力と論理積(AND)される。テールゲートベクトル長カウンタ1301からの出力は、1311のラッチ1306の出力と論理積される。アンドゲート1329と1311からの出力は、オアゲート1307に入力を与え、該オアゲートは、代わって、エレメントアドレスカウンタ1005とステップV0ラッチ1308の両方へ使用可能信号を送る。1308で示すステップV0よりの出力は、エレメントアドレスカウンタ1005の値が有効であることをベクトルレジスタメモリに指示する。
【0065】
ノーマルベクトルレングスカウンタ1302は、カウントが値7以下になるといつでも、禁止テールゲート信号1321を発信する。信号1321は、命令発行に関する問題を防止する為に用いられる。もし、読み取りカウントが余りにも小さくなると、信号1321は、テールゲーティング命令の開始を禁止する。その時点でテールゲーティング命令が進行中の場合は、該命令は、信号1321により影響を受けない。
【0066】
エレメントアドレスカウンタ1005は、入力1327により指示された各タイムピリオドにおいて増分する。エレメントアドレスカウンタ1005はリリースV0信号1104によってクリアされる。テールゲーティングを行う場合は、第1のリリースV0信号1104は、エレメントアドレスカウンタ1005により無視される。 テールゲートベクトル長カウンタ1301からのイネーブル信号1307は、エレメントアドレスカウンタ1005に、最初の命令に使われた長さを超えてカウントさせることができる。この為、テールゲーティング命令が、エレメントアドレスカウンタ1005の値からアドレスオフセットを差し引くことにより、ベクトルレジスタにデータを書きこむことを可能にする。
【0067】
図20は、ベクトルアドレスオフセット回路を示す。4ビットレジスタV0アドレスオフセット1409は、オアゲート1419によりセットされる。オアゲート1419は、その入力に、アンドゲート1418,1420,及び1421からの出力を受ける。アンドゲート1421は、命令発行時に、V0アドレスオフセットレジスタ1409を初期化する。アンドゲート1421への入力は、アンドゲート1422からの出力によりゲートされる値2である。アンドゲート1422は、その入力に、信号,1105で示すリクエストV0,発生(Issue)1106、及びV0ビジー−1 1101の補数を受ける。かくして、V0アドレスオフセット1409は、命令発令時に、ベクトルレジスタV0にリクエストがなされ、又、V0がすでにビジーでない限りは、値2で初期化される。
【0068】
V0アドレスオフセット1409の内容は、アンドゲート1420の出力により保持される。アンドゲート1420への他の2つの入力は、信号V0ビジー−1 1101とV0スロット1 1202の補数である。その為、V0アドレスオフセット1409の「ラップ アラウンド」(wrap around)を生じ、一方、ベクトルレジスタV0は、ビジーのままであり、V0スロットカウンタは、スロット1を指示しない。
【0069】
V0アドレスオフセット1409に保持された値は、V0スロットカウンタがスロット1を指示する度毎に増分される。アンドゲート1418は、その入力に、信号V0スロット1 1202と、加算器1408により、1つだけ増分されたV0アドレスオフセット1409からの値を受ける。
【0070】
全てのベクトルレジスタに対するアドレスオフセットは、単一の選定ネットワーク1401にファンイン(fan in)される。所望のアドレスオフセットは、宛先ベクトルレジスタを識別するi−デジダネータ信号1417によって選ばれる。アドレスオフセットは、送出され、レジスタ1407に保持される。ベクトルアドレスオフセット1010は、命令発令時においてのみ送られるので、唯一つのアドレスオフセットを1401で選ぶ必要があるのみである。次いで、ベクトルアドレスオフセット1011に保持された値は、図15および図16に示す様に、全ての8個のベクトルレジスタにファンアウト(fan out)される。ベクトルアドレスオフセットレジスタ1012(8個の中の1つ)は、対応するテールゲート信号1025(8個の内の1つ)が存在しさえすれば、命令発令時に、ロードされる。
【0071】
レジスタ1407からの出力は、4つのアダー1402,1403,1404及び1405に送られる。これらのアダーからの出力は、選定ネットワーク1406に入力を与える。命令発令時に、4つの信号の1つは、アダー出力のうちのどれを選ぶかを指示する。これらの信号は、図20では、調整オフセット+3 1423、調整オフセット+2 1424、調整オフセット+1 1425、及び調整オフセット+0 1426として、ラベル付されている。1つの信号のみが、常にアクチブとなっている。次いで、各信号は、1組のラッチ1415に保持され、信号1416を介して、選定ネットワーク1406を制御する。
【0072】
図15および図16にも示される、結果としてのベクトルアドレスオフセット1010は、テールゲーティング演算で調整アドレス1019に到達する為にチップアドレス1020から差し引く必要がある数である。調整アドレス1019により測定されるものは、第1命令の発令とテールゲーティング命令の発令との間の時間の量と、テールゲーティング命令の機能ユニットの遅れ時間との和である。その間に、命令が如何なる回数でも発せられる可能性がある。図20に示す様に、第1の命令が発せられると、ベクトルアドレス1409は、値2で初期化され、スロット1信号1202によって4期間毎に増分される。最終時に、テールゲーティング命令が発せられる。テールゲーティング命令の発令時に、アドレスオフセット1409は、値0,1,2,又は3により調整される。この最終調整は、テールゲーティング命令の機能ユニットタイムに左右される。
【0073】
図7ないし図14のタイミングダイヤグラムは、第2の実施の形態において実施されたテールゲーティングに関する発明の説明の助けとなるであろう。
【0074】
図7は、代表的なテールゲーティング動作を図示するタイミングダイヤグラムである。ダイヤグラムは、第1命令(V2=V0+V1)をテールゲートする第2命令(V0=V3&V4)、及び、第2命令をテールゲートする第3命令(V3=V5>Ak)を示す。図7のタイミングダイヤグラムでは、水平軸心に沿ったグラデーションは、期間を表わす。3セグメント(ダッシュ、実線、ダッシュ)に分断された水平方向の線は、それぞれ、オペランドを機能ユニットに送るのに要する時間、機能ユニットが必要とするタイムピリオドの数、及び、結果を宛先ベクトルへ送るのに要するタイムピリオドの数を表わす。伝達時間は、機能ユニットが、ベクトルレジスタと同じモジュールにあるかどうかによって変動する場合がある。これは、例えば、ロジカル機能ユニットを用いる第2命令において、そうである。
【0075】
図7のタイムピリオドでは、ベクトルレジスタV0とV1は、オペランドを整数機能ユニットへ供給しはじめる。図7の続く線は、後続の要素及び命令を介するサイクルを示している。オペランドは、期間当り1要素の割合で供給される。期間t14において、結果が、第2命令、V0テールゲーティング命令から戻り始める。その為、ベクトルレジスタV0は、期間t14において、書き込み動作の準備ができている必要がある。第1の結果である要素ゼロは、第1命令に対して要素8を読み取るのに続くピリオドの間に書き込まれる。要素9が読み取られた後で、要素1が書き込まれる。要素10が読み取られた後で、要素2が書き込まれる。これは、テールゲーティング操作の間、ベクトルレジスタV0への、又は、ベクトルレジスタV0からのデータの基本的な流れを示す。
【0076】
命令発行制御では、テールゲーティング命令を調べて機能ユニットが起す遅れの量を知り、どの期間で、第1の結果が、要素ゼロでベクトルレジスタに貯えられる様に戻るかを決定する必要がある。この情報に基づいて、ベクトルレジスタ制御は、それが、ベクトルレジスタのバンクサイクル(bank cycle)と同期化する迄第2の命令を遅らせる。
【0077】
第2の好ましい実施の形態では、最も速い場合、コンピュータは、2つの期間毎に、1度命令を発することができる。テールゲーティング命令の場合、第2の命令が発し得る最も早い期間は、期間t5である。図7の例では、第2の命令は、それが、バンクサイクルと同期化していることを確認する為に、更に追加のもう1期間の間、保持される。これにより、ベクトルレジスタ要素の読み取りと、書き込みが、正しい、シーケンスで行われることが確実となる。図7は、テールゲーティングに対して同期化する為の保持命令発行に関して画くことができる。
【0078】
テールゲーティングが無い場合は、第1命令の全結果要素が貯えられる迄、第2命令の発行を押える様にするレジスタの衝突が生じるであろう。
【0079】
図8および図9の命令発行タイミングダイヤグラムでは、タイムt0で、加算命令が発せられる。加算命令は、V0ビジー−1とV0のビジー−3とをセットする。V0ビジー−3が、テールゲーティング命令を発令させる単一の期間の間クリアする場合を除いて、両者は、加算操作の間セットされたままとなる。第3のラインは、テールゲートスロットタイム操作を示す。2つの初期遅れを生じ、ついで、V0スロットカウンタは、リングカウンタとして作動を始める。第4のラインは、V0アドレスオフセットを示す。それは、常に2の値で初期化され、次いで、V0スロット1がV0スロットカウンタにより指示される度毎に、V0オフセットは、1だけ増分される。第5のラインは、信号リクエストV0スロット3を示す。リクエストV0スロット3の信号は、発行を待っているテールゲート命令により発生される。信号ゴウリードV0は、加算命令により発生され、ベクトルレジスタV0の各要素を読み取る様に、エレメントアドレスカウンタ(タイミングダイヤグラム中V0エレメントアドレスとラベル付)をトリガする。最後のラインは、ベクトルレジスタから各エレメントが読み取られるにつれて、減少するノーマルベルトル長カウンタ(タイミングダイヤグラム中V0長カウンタとラベル付)内の100(オクタル−octal)のベルトル長を仮定する。
【0080】
タイムピリオドt4で、V0スロット3が示され、信号リクエストV0スロット3がアクチブとなる。これらの2つの信号の論理和により、他の全発行条件が合致すれば、テールゲーティング命令の発令を可能とする単一期間の間、V0ビジー−3がクリアされる。この命令の発行によりV0ビジー−2、ライトV0がセットされ、期間t7でテールゲートベクトル長カウンタ(タイミングダイヤグラム中V0T.G.長カウンタとラベル付)が初期化される。
【0081】
期間t5のスロット0の表示V0は、もう一度V0ビジー−3をセットし、V0アドレスオフセットを1カウントだけ増分する。1たび、第2命令が発せられると、調整V0アドレスオフセットはベクトルレジスタへ伝送される。調整は、命令の発行と同じ期間に行われる。かくして、調整アドレスに用いられるV0アドレスオフセットは、値2を含む前の期間からのV0アドレスオフセットである。この点から、スロットカウンタとV0アドレスオフセットは重要ではない。 次に、図10および図11を参照して、期間t4までに、エレメントアドレスカウンタは、エレメントアドレス2にある。同じ期間に、ノーマルベクトル長カウンタは、値75(オクタル)迄減じている。ダイヤグラムの上部の4ラインは、4つのベクトルレジスタバンクの各々に生じるベクトルレジスタメモリ作動を図示する。初めの2つの期間の間、データは、ベクトルレジスタバンクから読み取られる。次の2つの期間の間では、バンクは、休止状態にあるが、又は、テールゲーティング動作が生じるにつれて新しいデータを書き込んでいる。期間t8,t9及びt10は、テールゲートベクトル長カウンタが、減少を始める前に、3期間の間保持されていることを示している。図10および図11にも示す期間t9のボックスは、V0アドレスオフセットである。伝播(propagation)及びファンアウト(fan out)の遅れにより、調整オフセットの実際の発行と、それが、ラッチされ保持される迄の間には、期間が存在する。
【0082】
次いで図12および図13を参照して、期間t14では、最初の書き込み動作が開始される。期間t13に示す減算は、有効な減算を示し、他の時点でも減算は行われているが、それは、ただ使用されないままとなっている。後続の書き込み動作の為の正しいV0チップアドレスを与える為に、4期間毎に、V0チップアドレスから、V0アドレスオフセットが差し引かれている。期間t14から前方では、ベクトルレジスタバンクは、同じ期間で読み取り及び書き込みを行い、それにより、本発明のテールゲーティングが図示されている。此の例では、読み取り動作は、書き込み動作の前に完了するが、読み取りと書き込みのベクトル長は、完全に別個のものであるので、読み取り動作の前に、書き込み動作を完了することもできる。
【0083】
次に図14を参照して、ベクトルレジスタの予約は、2つの動作の最後が完了する迄保持される。両長カウンタは、独立して、ゼロに減じ、ついでリリースV0信号を送出する。この例では、読み取り動作により発生した最初のリリース信号は、V0ビジー−1をクリヤする。又、この例では、書き込み動作により発生した第2のリリースV0信号は、V0ビジー−2及びV0ビジー−3をクリヤする。
【0084】
本明細書に開示のテールゲーティング技術は、代表的な応用において遭遇するタイプの計算において、処理スピードの向上に有意義な改善をもたらす。テールゲーティングは、前述の米国特許第4,128,880に開示した連鎖(chaining)技術とは別個の独立したものであるが、必要に応じて、又、論理的スペースが許容されるならば、性能を更に改良する為連鎖(chaining)に関連して用いてもよい。
【0085】
以上、2つの特定のコンピュータハードウエアの形状を、本明細書における本発明の好ましい実施の形態とに図示し、かつ、説明したが、同様の目的を達成する様に計画されたコンピュータハードウエアのどの様な構成でも、図示の形状に、かえて用いることができることは、当業者に明らかであろう。したがって、ここに開示した本発明は、"発明の詳細な説明"において述べた部品と異なる部品を用いても実施できるものである。本出願は、本発明の種々の適応、又は、変形等を包含することを意図している。それ故、本発明が、請求の範囲及びその同等項によってのみ限定されるということが明らかに意図されているものである。
【0086】
【発明の効果】
本発明は、本明細書中では、テールゲーティングと呼ぶ技術により、上述のタイプのベクトルレジスタコンピュータの処理速度を、更に、改良するものである。簡単に述べると、テールゲーティングは、ベクトルレジスタの更に能率的な利用技術に関し、該技術においては、ベクトルレジスタに前もって貯えられた他のベクトルを、該ベクトルレジスタから読み出すと同時に、ベクトルを、その中に書き込むこともできる。レジスタに書き込まれるテールゲーティングベクトルは、機能ユニット、又は、共通メモリから取りこんでもよい。上記技術は、時間ピリオド当りの1ベクトル要素の読み取り及び書き込みを用い、書き込みは、未だ読み取られていない要素を書き込みすぎない様に、読み取り動作よりも、1又はそれ以上の要素分だけおくれて行われる様にする。この技術により、所定のベクトルレジスタを、同じベクトル演算に対して、オペランドレジスタ及び結果レジスタの両者として用いることができる。換言すれば、ベクトルレジスタは、以前にロードされたベクトルが、未だ用いられ、要素毎にベクトルレジスタから読み出されている間に、要素毎にベクトルをロードすることができる。この技術によれば、以前に発せられたベクトル指令中に含まれる特別なベクトルレジスタの使用を求めるプログラム中のベクトル指令を、以前のベクトル指令の完了を待たずに直に発することができる。1ベクトルを、要素毎に読みとると、ベクトルレジスタの各要素は、他のベクトルの要素毎の書き込みに利用できる様になる。
【図面の簡単な説明】
【図1】 本発明を組み込んだコンピュータの計算部の詳細ブロックダイヤグラムの一部
【図2】 本発明を組み込んだコンピュータの計算部の詳細ブロックダイヤグラムの一部
【図3】 第1の実施の形態において実施したテールゲーティング指令V0=V0+V0のタイミングダイヤグラムの一部
【図4】 第1の実施の形態において実施したテールゲーティング指令V0=V0+V0のタイミングダイヤグラムの一部
【図5】 第1の実施の形態のベクトルレジスタ制御の概略ブロック図
【図6】 第1の実施の形態のベクトルレジスタメモリの概略ブロック図
【図7】 第2の実施の形態において実施した3指令テールゲーティングシーケンスのタイミングダイヤグラム
【図8】 組合せると、図7の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図9】 組合せると、図7の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図10】 組合せると、図7の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図11】 組合せると、図7の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図12】 組合せると、図7の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図13】 組合せると、図7の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図14】 組合せると、図7の指令シーケンスの間に起るイベントを、更に示すタイミングダイヤグラム
【図15】 第2の実施の形態のベクトルレジスタメモリの概略ブロック図の一部
【図16】 第2の実施の形態のベクトルレジスタメモリの概略ブロック図の一部
【図17】 第2の実施の形態のベクトルレジスタ予約制御の概略ブロック図
【図18】 第2の実施の形態のテールゲートスロットタイム制御の概略ブロック図
【図19】 第2の実施の形態のベクトルアドレス制御の概略ブロック図
【図20】第2の実施の形態のベクトルアドレスオフセット制御の概略ブロック図

Claims (3)

  1. オーダされた1組のデータの複数の要素を貯える為の手段を含む少なくとも第1のベクトルレジスタを有するコンピュータ用ベクトル処理装置であって、
    (イ)コンピュータ内で第1の操作を行うための手段であって、この第1の操作で使用されるために、オペランド要素が順次第1のベクトルレジスタから読み取られるようになっている第1の操作手段と、
    (ロ)コンピュータ内で第2の操作を行う為の手段であって、この第2の操作により発生された結果としての要素が、順次第1のベクトルレジスタに貯えられるようになっている第2の操作手段と、
    (ハ)第1のベクトルレジスタからのオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに応じて、第2の操作により発生した結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次第1のベクトルレジスタに記憶するために、前記第1と第2の操作手段に結合し、前記第1の操作の発令時と、第2操作の発令時の時間差に、第2操作の機能ユニットの遅れ時間を加えた和に基づき、前記第2の操作により発生された結果としての要素の貯え動作を、第1の操作のためのオペランド要素の読み取り動作に対して同期させる同期化手段とを備えることを特徴とする処理装置。
  2. 少なくとも第1のベクトルレジスタを備えたコンピュータでのベクトル処理方法であって、
    (イ)コンピュータ内で第1の操作を行うステップとして、
    (ロ)前記第1の操作で用いる為に第1のベクトルレジスタから少なくとも1つのオペランド要素を順次読み出すステップと、
    (ハ)第1のベクトルレジスタからのオペランド要素の順次読み出しに用いられるアドレスの順次読み出しに応じて、第2の操作からの結果としての要素を、要素のアドレス時間の少なくとも1つ分遅らせ、要素のアドレス順番に従い、順次第1のベクトルレジスタに記憶するために、前記第1の操作の発令時と、第2操作の発令時の時間差に、第2操作の機能ユニットの遅れ時間を加えた和に基づき、前記第2の操作により発生された結果としての要素の貯え動作を、第1の操作のためのオペランド要素の読み取り動作に対して同期させるステップとを含み
    (ニ)前記第2の操作をコンピュータ内で行うステップとして、
    (ホ)前記第2の操作よりの結果としての要素を、第1のベクトルレジスタに順次記憶させるステップを含むことを特徴とする処理方法。
  3. 請求項2に記載の処理方法であって、更に、コンピュータ内で少なくとも1つの中間操作を行うステップを設け、該中間操作は、第1の操作の開始の後で、かつ、第2の操作の開始の前に行われることを特徴とする処理方法。
JP2000055714A 1988-05-10 2000-03-01 ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング Expired - Lifetime JP4144153B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US19221088A 1988-05-10 1988-05-10
US192,210 1988-05-10

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP01505020A Division JP3095393B2 (ja) 1988-05-10 1989-04-07 ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008065320A Division JP2008181551A (ja) 1988-05-10 2008-03-14 ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング

Publications (2)

Publication Number Publication Date
JP2000207389A JP2000207389A (ja) 2000-07-28
JP4144153B2 true JP4144153B2 (ja) 2008-09-03

Family

ID=22708706

Family Applications (3)

Application Number Title Priority Date Filing Date
JP01505020A Expired - Fee Related JP3095393B2 (ja) 1988-05-10 1989-04-07 ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング
JP2000055714A Expired - Lifetime JP4144153B2 (ja) 1988-05-10 2000-03-01 ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング
JP2008065320A Pending JP2008181551A (ja) 1988-05-10 2008-03-14 ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP01505020A Expired - Fee Related JP3095393B2 (ja) 1988-05-10 1989-04-07 ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2008065320A Pending JP2008181551A (ja) 1988-05-10 2008-03-14 ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング

Country Status (7)

Country Link
US (1) US5349677A (ja)
EP (1) EP0419499B1 (ja)
JP (3) JP3095393B2 (ja)
AT (1) ATE81731T1 (ja)
CA (1) CA1321027C (ja)
DE (1) DE68903280T2 (ja)
WO (1) WO1989011129A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992009968A1 (en) * 1990-11-27 1992-06-11 Cray Research, Inc. VECTOR WORD SHIFT BY Vo SHIFT COUNT IN VECTOR SUPERCOMPUTER PROCESSOR
US5669013A (en) * 1993-10-05 1997-09-16 Fujitsu Limited System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions
US5848286A (en) * 1994-03-29 1998-12-08 Cray Research, Inc. Vector word shift by vo shift count in vector supercomputer processor
US5623685A (en) * 1994-12-01 1997-04-22 Cray Research, Inc. Vector register validity indication to handle out-of-order element arrival for a vector computer with variable memory latency
US6922760B2 (en) * 2002-12-05 2005-07-26 Lsi Logic Corporation Distributed result system for high-performance wide-issue superscalar processor
JP2004302647A (ja) * 2003-03-28 2004-10-28 Seiko Epson Corp ベクトルプロセッサおよびレジスタのアドレス指定方法
US7845820B2 (en) 2008-10-02 2010-12-07 Life+Gear, Inc. Multipurpose lighting device with electronic glow stick
US8113682B2 (en) 2008-10-02 2012-02-14 Life+Gear, Inc. Multipurpose waterproof lighting device with electronic glow stick
BRPI0920805A2 (pt) 2008-10-02 2015-12-22 Life & Gear Inc dispositivo de iluminação de múltiplas finalidades e método para operar um dispositivo de iluminação.
EP2757468A1 (en) * 2013-01-22 2014-07-23 Siemens Aktiengesellschaft Apparatus and method for managing a software development and maintenance system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5725069A (en) * 1980-07-21 1982-02-09 Hitachi Ltd Vector data processing equipment
JPH0652530B2 (ja) * 1982-10-25 1994-07-06 株式会社日立製作所 ベクトル・プロセッサ
JPS5998365A (ja) * 1982-11-27 1984-06-06 Shigeto Suzuki 複数同時アクセス型記憶装置
US4674032A (en) * 1984-04-02 1987-06-16 Unisys Corporation High-performance pipelined stack with over-write protection
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4766535A (en) * 1985-12-20 1988-08-23 International Business Machines Corporation High-performance multiple port memory
US4760518A (en) * 1986-02-28 1988-07-26 Scientific Computer Systems Corporation Bi-directional databus system for supporting superposition of vector and scalar operations in a computer

Also Published As

Publication number Publication date
JP2008181551A (ja) 2008-08-07
JP2000207389A (ja) 2000-07-28
JPH03504293A (ja) 1991-09-19
EP0419499A1 (en) 1991-04-03
EP0419499B1 (en) 1992-10-21
DE68903280D1 (de) 1992-11-26
JP3095393B2 (ja) 2000-10-03
ATE81731T1 (de) 1992-11-15
US5349677A (en) 1994-09-20
CA1321027C (en) 1993-08-03
DE68903280T2 (de) 1993-05-27
WO1989011129A1 (en) 1989-11-16

Similar Documents

Publication Publication Date Title
JP2008181551A (ja) ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング
US4507728A (en) Data processing system for parallel processing of different instructions
US5295252A (en) Data storage device
US4524416A (en) Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system
US4149242A (en) Data interface apparatus for multiple sequential processors
US4725973A (en) Vector processor
US4980819A (en) Mechanism for automatically updating multiple unit register file memories in successive cycles for a pipelined processing system
US5440717A (en) Computer pipeline including dual-ported, content-addressable writebuffer
US5471607A (en) Multi-phase multi-access pipeline memory system
JP3797570B2 (ja) セマフォ命令用のセマフォ・バッファを用いた装置と方法
US6513125B1 (en) Multi-phase multi-access pipeline memory system in which the pipeline memory can decode addresses issued by one processor while simultaneously accessing memory array by other processor
JPS62147546A (ja) マルチ・ポ−ト・メモリ装置
US5237702A (en) System for prefetching vector data based on the status of the vector registers
US4958274A (en) System with a N stages timing silo and P stages information silo for soloing information
US5420997A (en) Memory having concurrent read and writing from different addresses
JPH06318178A (ja) キャッシュタグメモリ用キャッシュタグ制御装置及び制御方法
EP0797803B1 (en) Chunk chaining for a vector processor
US6963961B1 (en) Increasing DSP efficiency by independent issuance of store address and data
JPH06180684A (ja) 高速データアクセスオペレーション実行システム
JPS62251829A (ja) シンボリツク処理システムおよび方法
JP2842024B2 (ja) レジスタファイル回路
JPS6120905B2 (ja)
JPH0364903B2 (ja)
JPH04175949A (ja) キャッシュ制御方式
JPH01196643A (ja) アドレス変換方式

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20031209

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20031215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040308

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060412

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060718

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080314

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080314

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080609

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090627

Year of fee payment: 1

EXPY Cancellation because of completion of term