JP2532300B2 - 並列処理装置における命令供給装置 - Google Patents
並列処理装置における命令供給装置Info
- Publication number
- JP2532300B2 JP2532300B2 JP2279654A JP27965490A JP2532300B2 JP 2532300 B2 JP2532300 B2 JP 2532300B2 JP 2279654 A JP2279654 A JP 2279654A JP 27965490 A JP27965490 A JP 27965490A JP 2532300 B2 JP2532300 B2 JP 2532300B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- queue
- address
- state
- instructions
- 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 - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 43
- 230000004044 response Effects 0.000 claims description 57
- 238000010586 diagram Methods 0.000 description 58
- 238000000034 method Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 9
- STECJAGHUSJQJN-USLFZFAMSA-N LSM-4015 Chemical compound C1([C@@H](CO)C(=O)OC2C[C@@H]3N([C@H](C2)[C@@H]2[C@H]3O2)C)=CC=CC=C1 STECJAGHUSJQJN-USLFZFAMSA-N 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- XMEVHPAGJVLHIG-FMZCEJRJSA-N chembl454950 Chemical compound [Cl-].C1=CC=C2[C@](O)(C)[C@H]3C[C@H]4[C@H]([NH+](C)C)C(O)=C(C(N)=O)C(=O)[C@@]4(O)C(O)=C3C(=O)C2=C1O XMEVHPAGJVLHIG-FMZCEJRJSA-N 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000001771 impaired effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
【発明の詳細な説明】 [産業上の利用分野] この発明は並列処理装置に関し、特に、スーパースカ
ラー型プロセサの命令供給方式の効率化に関する。
ラー型プロセサの命令供給方式の効率化に関する。
[従来の技術] 近年のマイクロプロセサの進歩には目覚ましいものが
あり、その高性能化とともに動作速度も高速化されてき
ている。一方、半導体メモリの高速化がこのマイクロプ
ロセサの高速化に追随することができず、半導体メモリ
のアクセスがプロセサの高速化に対するボトルネックと
なっている。このため、並列処理を行なうことによりマ
イクロプロセサの性能向上を図ることが行なわれてい
る。
あり、その高性能化とともに動作速度も高速化されてき
ている。一方、半導体メモリの高速化がこのマイクロプ
ロセサの高速化に追随することができず、半導体メモリ
のアクセスがプロセサの高速化に対するボトルネックと
なっている。このため、並列処理を行なうことによりマ
イクロプロセサの性能向上を図ることが行なわれてい
る。
このような並列処理を実現する方式の1つに、スーパ
ースカラーと呼ばれる処理方式がある。このスーパース
カラー型のプロセサ(以下、単にスーパースカラーと称
す)は、第30図に示すように、スーパースカラー内部の
スケジューラ200が、命令ストリーム中の並列性を検出
し、並列処理可能な命令を並列に設けられたパイプライ
ンP1、P2およびP3へ供給する方式である。すなわち、ス
ーパースカラーは以下の特徴をもつ処理装置であるとい
える。
ースカラーと呼ばれる処理方式がある。このスーパース
カラー型のプロセサ(以下、単にスーパースカラーと称
す)は、第30図に示すように、スーパースカラー内部の
スケジューラ200が、命令ストリーム中の並列性を検出
し、並列処理可能な命令を並列に設けられたパイプライ
ンP1、P2およびP3へ供給する方式である。すなわち、ス
ーパースカラーは以下の特徴をもつ処理装置であるとい
える。
(1) 命令を複数個同時にフェッチする。
(2) 複数の機能ユニット(パイプライン) を有しており、複数の命令を同時に実行することができ
る。
る。
(3) フェッチされた複数の命令の中から同時に実行
可能な命令を見つけ出し、この同時に実行可能な命令を
関連の機能ユニット(パイプライン)へ同時に投入す
る。
可能な命令を見つけ出し、この同時に実行可能な命令を
関連の機能ユニット(パイプライン)へ同時に投入す
る。
第31図はスーパースカラーの一般的構成を示す図であ
る。第31図において、スーパースカラーは、各々が所定
の機能を実行する複数の機能ユニット4,5,6および7
と、命令を格納する命令メモリ1と、命令メモリ1から
複数の命令を同時にフェッチする命令フェッチ(IF)ス
テージ2と、命令フェッチステージ2によりフェッチさ
れた複数の命令を同時に受け、この中から同時に実行処
理可能な命令を見出して対応の機能ユニットへ投入する
命令デコード(ID)ステージ3と、演算処理結果等を格
納するためのデータメモリ8とを含む。命令メモリ1
は、キャッシュメモリおよび外部メモリを含み、キャッ
シュヒット(キャッシュメモリ内に要求されたメモリが
存在する状態)の場合には高速で命令を読出すことがで
きる。
る。第31図において、スーパースカラーは、各々が所定
の機能を実行する複数の機能ユニット4,5,6および7
と、命令を格納する命令メモリ1と、命令メモリ1から
複数の命令を同時にフェッチする命令フェッチ(IF)ス
テージ2と、命令フェッチステージ2によりフェッチさ
れた複数の命令を同時に受け、この中から同時に実行処
理可能な命令を見出して対応の機能ユニットへ投入する
命令デコード(ID)ステージ3と、演算処理結果等を格
納するためのデータメモリ8とを含む。命令メモリ1
は、キャッシュメモリおよび外部メモリを含み、キャッ
シュヒット(キャッシュメモリ内に要求されたメモリが
存在する状態)の場合には高速で命令を読出すことがで
きる。
命令フェッチステージ2は、命令メモリ2へ命令ポイ
ンタIF PCを与え、この命令ポインタIF PCに対応する
複数の命令を命令メモリ1からフェッチする。
ンタIF PCを与え、この命令ポインタIF PCに対応する
複数の命令を命令メモリ1からフェッチする。
命令デコードステージ3は、命令デコーダおよびパイ
プラインシーケンサを含む。命令デコーダは命令フェッ
チステージ2によりフェッチされた複数の命令を受けて
解読する。パイプラインシーケンサ(命令スケジュー
ラ)はこのデコードされた複数の命令のたとえばマシン
タイプを識別し、異なるマシンタイプの命令を同時に対
応の機能ユニットへ投入する。ここで、マシンタイプと
は、命令がどの機能ユニットで処理されるべきかを示す
情報である。
プラインシーケンサを含む。命令デコーダは命令フェッ
チステージ2によりフェッチされた複数の命令を受けて
解読する。パイプラインシーケンサ(命令スケジュー
ラ)はこのデコードされた複数の命令のたとえばマシン
タイプを識別し、異なるマシンタイプの命令を同時に対
応の機能ユニットへ投入する。ここで、マシンタイプと
は、命令がどの機能ユニットで処理されるべきかを示す
情報である。
機能ユニット4ないし7は、それぞれパイプライン化
されており、与えられた命令をクロック信号に応答して
実行する。この第31図においては、4つの機能ユニット
が一例として示されており、最大4つの命令が並列処理
可能である。機能ユニット4および5は整数加算などを
行なうための整数演算ユニットであり、整数演算を行な
う実行ステージ(EX)および書込ステージ(WB)を含
む。書込ステージ(WB)は、処理の実行結果をデータレ
ジスタ(図示せず)へ書込む。
されており、与えられた命令をクロック信号に応答して
実行する。この第31図においては、4つの機能ユニット
が一例として示されており、最大4つの命令が並列処理
可能である。機能ユニット4および5は整数加算などを
行なうための整数演算ユニットであり、整数演算を行な
う実行ステージ(EX)および書込ステージ(WB)を含
む。書込ステージ(WB)は、処理の実行結果をデータレ
ジスタ(図示せず)へ書込む。
機能ユニット6は、データメモリ8へのアクセス(デ
ータのロードまたはストア)を実行するユニットであ
り、アドレス生成ステージ(ADR)、データメモリ8へ
のアクセス実行ステージ(MEM)およびデータレジスタ
(図示せず)へのデータの書込ステージ(WB)である。
ここで書込ステージ(WB)においてはデータのロードま
たはデータのストアが行なわれる。
ータのロードまたはストア)を実行するユニットであ
り、アドレス生成ステージ(ADR)、データメモリ8へ
のアクセス実行ステージ(MEM)およびデータレジスタ
(図示せず)へのデータの書込ステージ(WB)である。
ここで書込ステージ(WB)においてはデータのロードま
たはデータのストアが行なわれる。
機能ユニット7は、浮動小数点加算などを実行するた
めのユニットであり、3段の実行ステージ(EX1、EX2お
よびEX3)と、実行結果のデータレジスタへの書込を行
なう書込ステージ(WB)とを含む。浮動小数点数は指数
と仮数とを用いて表わされ、その小数点の位置が一定し
ない数であり、浮動小数点演算は整数演算などに比べて
その実行により多くのサイクルが必要とされる。
めのユニットであり、3段の実行ステージ(EX1、EX2お
よびEX3)と、実行結果のデータレジスタへの書込を行
なう書込ステージ(WB)とを含む。浮動小数点数は指数
と仮数とを用いて表わされ、その小数点の位置が一定し
ない数であり、浮動小数点演算は整数演算などに比べて
その実行により多くのサイクルが必要とされる。
この並列処理装置においては、各段はすべてパイプラ
イン化されており、命令フェッチ、命令デコードおよび
命令実行ならびにデータが書込が互いにオーバラップし
つつ実行される。したがって、命令メモリからフェッチ
された命令が次のサイクルで命令デコードステージでデ
コードされる。次に動作について簡単に説明する。
イン化されており、命令フェッチ、命令デコードおよび
命令実行ならびにデータが書込が互いにオーバラップし
つつ実行される。したがって、命令メモリからフェッチ
された命令が次のサイクルで命令デコードステージでデ
コードされる。次に動作について簡単に説明する。
命令デコードステージ3は、命令フェッチステージ2
へ命令フェッチ要求を出力する。命令フェッチステージ
2は、この命令フェッチ要求に応答して命令ポインタIF
PCを命令メモリ1へ与え、命令メモリ1からその命令
ポインタIF PCに対応する複数の命令をフェッチする。
このフェッチされた複数の命令は命令デコードステージ
3へ同時に与えられる。命令デコードステージ3はこの
与えられた複数の命令を同時にデコードする。この命令
デコードステージ3はさらに、デコードされた命令か
ら、計算リソースおよびデータレジスタが競合しない、
並列処理可能な命令を検出し、この並列処理可能な命令
を対応の機能ユニットへ発行(投入)する。命令を与え
られた機能ユニットはこの与えられた命令に従って処理
を並列に実行する。機能ユニット4ないし7の処理の実
行は、パイプライン化されており、この第31図に示す各
ステージに従って処理が実行される。また、命令フェッ
チステージ2および命令デコードステージおよび命令実
行ステージ(機能ユニット4ないし7)の動作はパイプ
ライン化されており、それぞれ互いにオーバラップしな
がら所定の動作を実行している。
へ命令フェッチ要求を出力する。命令フェッチステージ
2は、この命令フェッチ要求に応答して命令ポインタIF
PCを命令メモリ1へ与え、命令メモリ1からその命令
ポインタIF PCに対応する複数の命令をフェッチする。
このフェッチされた複数の命令は命令デコードステージ
3へ同時に与えられる。命令デコードステージ3はこの
与えられた複数の命令を同時にデコードする。この命令
デコードステージ3はさらに、デコードされた命令か
ら、計算リソースおよびデータレジスタが競合しない、
並列処理可能な命令を検出し、この並列処理可能な命令
を対応の機能ユニットへ発行(投入)する。命令を与え
られた機能ユニットはこの与えられた命令に従って処理
を並列に実行する。機能ユニット4ないし7の処理の実
行は、パイプライン化されており、この第31図に示す各
ステージに従って処理が実行される。また、命令フェッ
チステージ2および命令デコードステージおよび命令実
行ステージ(機能ユニット4ないし7)の動作はパイプ
ライン化されており、それぞれ互いにオーバラップしな
がら所定の動作を実行している。
上述のように各ステージの動作をパイプライン化し、
かつ複数の機能ユニットで処理を並列に実行することに
より高速で命令を実行することができる。
かつ複数の機能ユニットで処理を並列に実行することに
より高速で命令を実行することができる。
[発明が解決しようとする課題] 上述のように、スーパースカラーにおいては、複数の
命令がフェッチされ、かつ同時に複数の命令が実行され
るため、通常のコンピュータに比べて処理速度の向上を
図ることができる。たとえば、第31図に示す構成におい
て、同時にフェッチされた4つの命令が4つの機能ユニ
ット4ないし7で並列に実行された場合、4クロックサ
イクルで4命令を処理することができる。(機能ユニッ
ト4、5および6のパイプラインが機能ユニット7の処
理完了まで待ち合わせ状態となる場合)。
命令がフェッチされ、かつ同時に複数の命令が実行され
るため、通常のコンピュータに比べて処理速度の向上を
図ることができる。たとえば、第31図に示す構成におい
て、同時にフェッチされた4つの命令が4つの機能ユニ
ット4ないし7で並列に実行された場合、4クロックサ
イクルで4命令を処理することができる。(機能ユニッ
ト4、5および6のパイプラインが機能ユニット7の処
理完了まで待ち合わせ状態となる場合)。
命令スケジューラ(または命令デコードステージに含
まれるパイプラインシーケンサ)は、効率的に並列処理
が実行されるように命令のスケジューリングを実行する
が、同時にフェッチされた命令が常に同時に処理される
とは限らない。たとえば、以下のようなデータ依存関係
がある命令を考える。
まれるパイプラインシーケンサ)は、効率的に並列処理
が実行されるように命令のスケジューリングを実行する
が、同時にフェッチされた命令が常に同時に処理される
とは限らない。たとえば、以下のようなデータ依存関係
がある命令を考える。
add R1,R2,R3 ;R2+R3=R1 sub R4,R1,R5 ;R1−R5=R4) 命令はレジスタR2の内容にレジスタR3の内容を加
え、その加算結果をレジスタR1に書込む命令である。
え、その加算結果をレジスタR1に書込む命令である。
命令はレジスタR1の内容からレジスタR5の内容を減
算し、この減算結果をレジスタR4に書込む命令である。
このような命令およびの演算はたとえば「x+y−
z」という処理に対応する。
算し、この減算結果をレジスタR4に書込む命令である。
このような命令およびの演算はたとえば「x+y−
z」という処理に対応する。
この命令およびが同時にフェッチされたとき、こ
れらはレジスタR1を共通に使用しており、命令は命令
の結果を使用することになるため、これらの命令お
よびは同時に実行することができない。このような命
令間のデータ依存関係が存在する場合、命令の発行状況
(命令デコードステージから機能ユニットへの命令の発
行態様)は第32図に示すようになる。
れらはレジスタR1を共通に使用しており、命令は命令
の結果を使用することになるため、これらの命令お
よびは同時に実行することができない。このような命
令間のデータ依存関係が存在する場合、命令の発行状況
(命令デコードステージから機能ユニットへの命令の発
行態様)は第32図に示すようになる。
第32図においては、同時に処理可能な命令のみが発行
される状況が示されており、また同時に発行される命令
は、アドレスの小さい方(図の左側に位置する)の命令
から順に決定される。
される状況が示されており、また同時に発行される命令
は、アドレスの小さい方(図の左側に位置する)の命令
から順に決定される。
第32図において、サイクル1においては、命令2,3お
よび4が相互にまたは命令1に対しデータ依存関係を有
するため、これらは発行することができず、命令1のみ
が発行される。
よび4が相互にまたは命令1に対しデータ依存関係を有
するため、これらは発行することができず、命令1のみ
が発行される。
サイクル2においては、命令4は命令4および/また
は命令3とデータ依存関係があり、命令2および命令3
は互いにデータ依存関係を有しないため、命令2および
3が発行される。
は命令3とデータ依存関係があり、命令2および命令3
は互いにデータ依存関係を有しないため、命令2および
3が発行される。
サイクル3においては、残った命令4が発行される。
サイクル4において、新たにフェッチされた4つの命
令5ないし8のデコードが行なわれ、相互にデータ依存
関係のない命令5および6が発行される。
令5ないし8のデコードが行なわれ、相互にデータ依存
関係のない命令5および6が発行される。
サイクル5において命令7および8が相互にデータ依
存関係を有しないためこれらが発行される。ここで、第
32図においては□印で囲んだ数字は、相互にデータ依存
関係のない発行可能な命令を示している。
存関係を有しないためこれらが発行される。ここで、第
32図においては□印で囲んだ数字は、相互にデータ依存
関係のない発行可能な命令を示している。
この第32図に示すような、同時にフェッチされた複数
の命令がすべて発行されるまで次の命令のフェッチを待
ち合わせる方式の場合、最初にフェッチされた命令1な
いし4と、次にフェッチされた命令5ないし8がすべて
発行されるまでに5サイクルが必要とされる。したがっ
て、このような命令供給および発行方式では、パイプラ
インに空きが生じ、並列処理装置の高速処理性能が損な
われる。
の命令がすべて発行されるまで次の命令のフェッチを待
ち合わせる方式の場合、最初にフェッチされた命令1な
いし4と、次にフェッチされた命令5ないし8がすべて
発行されるまでに5サイクルが必要とされる。したがっ
て、このような命令供給および発行方式では、パイプラ
インに空きが生じ、並列処理装置の高速処理性能が損な
われる。
このような場合もし、第32図において命令4と命令5
および6との間にデータ依存関係が存在せず、かつ任意
の数の命令を命令メモリからフェッチすることが可能で
あれば、第33図に示す命令発行方式を実現することがで
きる。第33図は改良された命令発行方式における命令発
行状況を示す図である。
および6との間にデータ依存関係が存在せず、かつ任意
の数の命令を命令メモリからフェッチすることが可能で
あれば、第33図に示す命令発行方式を実現することがで
きる。第33図は改良された命令発行方式における命令発
行状況を示す図である。
第33図を参照して、サイクル4において、同時にフェ
ッチされた4つの命令1ないし4のうち、命令1が発行
される。
ッチされた4つの命令1ないし4のうち、命令1が発行
される。
サイクル2において、新たに命令5が供給され、命令
2ないし5のデコードが行なわれる。この4つの命令2
ないし5のうち、依存関係のない命令2および3が発行
される。
2ないし5のデコードが行なわれる。この4つの命令2
ないし5のうち、依存関係のない命令2および3が発行
される。
サイクル3において、新たに命令6および7が供給さ
れ、命令4ないし7がデコードされる。このデコード結
果に従って命令4、5および6が発行される。
れ、命令4ないし7がデコードされる。このデコード結
果に従って命令4、5および6が発行される。
サイクル4において、新たに命令8,9および10が供給
され、命令7ないし10のデコードが行なわれ、このデコ
ード結果に従って命令7および8が発行される。
され、命令7ないし10のデコードが行なわれ、このデコ
ード結果に従って命令7および8が発行される。
この第33図に示す命令発行方式においては、命令1な
いし8の8個の命令の発行に4サイクルが必要とされる
だけであり、第32図に示す方式に比べてより高速で命令
の処理実行を行なうことができる。この第33図に示す命
令発行手順を実現する手法の1つとして第34図に示す方
法が考えられる。第34図は第33図に示す命令発行状況を
実現するための命令の供給手順を示す図である。
いし8の8個の命令の発行に4サイクルが必要とされる
だけであり、第32図に示す方式に比べてより高速で命令
の処理実行を行なうことができる。この第33図に示す命
令発行手順を実現する手法の1つとして第34図に示す方
法が考えられる。第34図は第33図に示す命令発行状況を
実現するための命令の供給手順を示す図である。
第34図を参照して、ステップ(1)において、命令レ
ジスタ(命令を保持するレジスタ)に保持された命令2
ないし5のうち命令2および3が発行されると命令レジ
スタに空きが生じる。
ジスタ(命令を保持するレジスタ)に保持された命令2
ないし5のうち命令2および3が発行されると命令レジ
スタに空きが生じる。
ステップ(2)において、この空きの生じたレジスタ
の数だけ命令レジスタの内容をシフトさせる。すなわち
第34図のステップ(2)において命令4および5は左へ
2つだけレジスタ位置がシフトされる。
の数だけ命令レジスタの内容をシフトさせる。すなわち
第34図のステップ(2)において命令4および5は左へ
2つだけレジスタ位置がシフトされる。
ステップ(3)において、この空きの生じた命令レジ
スタ内へ次の命令6および7がフェッチされる。この第
34図に示すステップ(1)ないし(3)を1サイクルで
実行する必要がある。この第34図に示す命令シフト動作
を実行する構成としては第35図に示すような構成を考え
ることができる。
スタ内へ次の命令6および7がフェッチされる。この第
34図に示すステップ(1)ないし(3)を1サイクルで
実行する必要がある。この第34図に示す命令シフト動作
を実行する構成としては第35図に示すような構成を考え
ることができる。
第35図において、命令デコードステージは、命令を格
納する命令レジスタIR1〜IR8と、与えられた命令をシフ
トさせるバレルシフタBRと、命令デコーダIDとを含む。
命令レジスタIR1〜IR4は命令フェッチステージ2により
フェッチされた命令およびバレルシフタからシフトされ
た命令を格納する。命令レジスタIR5ないしIR8は、命令
デコーダIDへ与えられる命令がデコードされずに格納さ
れる。バレルシフタBRは、命令レジスタIR5ないしIR8か
らの命令のうち、命令デコーダIDからの発行命令数情報
に従って命令をシフトさせる。
納する命令レジスタIR1〜IR8と、与えられた命令をシフ
トさせるバレルシフタBRと、命令デコーダIDとを含む。
命令レジスタIR1〜IR4は命令フェッチステージ2により
フェッチされた命令およびバレルシフタからシフトされ
た命令を格納する。命令レジスタIR5ないしIR8は、命令
デコーダIDへ与えられる命令がデコードされずに格納さ
れる。バレルシフタBRは、命令レジスタIR5ないしIR8か
らの命令のうち、命令デコーダIDからの発行命令数情報
に従って命令をシフトさせる。
通常、並列演算処理装置は第36図に示すように2相の
互いに重なり合わないクロック信号TおよびLに従って
動作している。次に動作について簡単に説明する。
互いに重なり合わないクロック信号TおよびLに従って
動作している。次に動作について簡単に説明する。
前のサイクルでフェッチされた命令がクロック信号T
に応答して命令レジスタIR1〜IR4で保持される。命令レ
ジスタIR1〜IR4の保持命令は命令デコーダIDへ与えら
れ、デコードされ、該デコード結果に従って機能ユニッ
トへ発行される。
に応答して命令レジスタIR1〜IR4で保持される。命令レ
ジスタIR1〜IR4の保持命令は命令デコーダIDへ与えら
れ、デコードされ、該デコード結果に従って機能ユニッ
トへ発行される。
一方、命令レジスタIR5〜IR8はクロック信号Lに応答
してその命令デコードIDへ与えられた命令を保持しバレ
ルシフタBRへ与える。バレルシフタBRは、命令デコーダ
IDからの発行命令数情報に応答して、この命令レジスタ
IR5〜IR8から与えられた命令をシフトさせる。このバレ
ルシフタBRの内容は、次のクロック信号Tに応答して命
令レジスタIR1〜IR4へ与えられて保持される。
してその命令デコードIDへ与えられた命令を保持しバレ
ルシフタBRへ与える。バレルシフタBRは、命令デコーダ
IDからの発行命令数情報に応答して、この命令レジスタ
IR5〜IR8から与えられた命令をシフトさせる。このバレ
ルシフタBRの内容は、次のクロック信号Tに応答して命
令レジスタIR1〜IR4へ与えられて保持される。
この場合、バレルシフタはクロック信号Lから次のク
ロック信号Tの間にその命令のシフト動作を完了してい
なければならない。しかしながら、バレルシフタBRにお
いては、命令長が長く(たとえば32ビット)、高速でそ
の命令シフト動作を実行することができず、命令シフト
動作に長時間を要する。したがって、次のクロック信号
Tに応答して命令レジスタIR1〜IR4へ命令を与えて保持
させることができなくなるため、高速で命令デコーダID
へ命令を供給することができなくなり、並列処理装置の
高速動作性が損なわれる。
ロック信号Tの間にその命令のシフト動作を完了してい
なければならない。しかしながら、バレルシフタBRにお
いては、命令長が長く(たとえば32ビット)、高速でそ
の命令シフト動作を実行することができず、命令シフト
動作に長時間を要する。したがって、次のクロック信号
Tに応答して命令レジスタIR1〜IR4へ命令を与えて保持
させることができなくなるため、高速で命令デコーダID
へ命令を供給することができなくなり、並列処理装置の
高速動作性が損なわれる。
また、命令メモリは、この命令レジスタIR1〜IR4にお
いていくら空きレジスタが存在しているかという情報を
知り、この情報に基づいて命令供給数および命令供給位
置を定める必要がある。この命令レジスタIR1〜IR4にお
いていくつ空きレジスタが存在するかの情報は命令デコ
ーダからの発行命令数情報で得られるが、この命令発行
数情報が発生されるのは命令デコーダIDにおけるデコー
ド動作後であり、また、この情報に従って、命令メモリ
において命令供給数および命令供給位置を判定するのに
長時間を要し、またその判定動作開始タイミングも遅
い。このため、所望の命令をフェッチするのに長時間を
要することになり、パイプライン構成を乱さずに実行す
るためには、クロック信号TおよびLの周期が長くな
り、並列演算処理装置の高速動作性が損なわれる。それ
ゆえ、この発明の目的は並列処理を効率的に行なうこと
のできる並列処理装置を提供することである。
いていくら空きレジスタが存在しているかという情報を
知り、この情報に基づいて命令供給数および命令供給位
置を定める必要がある。この命令レジスタIR1〜IR4にお
いていくつ空きレジスタが存在するかの情報は命令デコ
ーダからの発行命令数情報で得られるが、この命令発行
数情報が発生されるのは命令デコーダIDにおけるデコー
ド動作後であり、また、この情報に従って、命令メモリ
において命令供給数および命令供給位置を判定するのに
長時間を要し、またその判定動作開始タイミングも遅
い。このため、所望の命令をフェッチするのに長時間を
要することになり、パイプライン構成を乱さずに実行す
るためには、クロック信号TおよびLの周期が長くな
り、並列演算処理装置の高速動作性が損なわれる。それ
ゆえ、この発明の目的は並列処理を効率的に行なうこと
のできる並列処理装置を提供することである。
この発明の他の目的は並列処理を効率的に行なうこと
のできる命令供給装置を備えた並列処理装置を提供する
ことである。
のできる命令供給装置を備えた並列処理装置を提供する
ことである。
[課題を解決するための手段] この発明に係る並列処理装置における命令供給装置
は、命令メモリ装置からの命令の供給の有無を示す信号
と、リセット信号と、分岐が発生したことを示す分岐発
生指示情報とに応答して、命令の有効/無効を示す有効
性プラグを形成する手段と、命令メモリから同時にフェ
ッチされた複数の命令と、この同時にフェッチされた複
数の命令の上記命令メモリにおけるアドレスと有効性フ
ラグとを同時に格納する記憶手段を含む。この記憶手段
は、1エントリが1命令と、対応のアドレスと、対応の
有効性フラグとからなる複数のエントリ格納領域を備え
る。またこの記憶手段は、各々に異なる書込エントリ内
容が同時に伝達される複数の入力ポートと、各々に異な
る読出エントリ内容が同時に伝達される複数の出力ポー
トと、書込キューアドレスおよび読出キューアドレスに
応答して複数の書込エントリおよび複数の読出エントリ
を複数の入力ポートおよび複数の出力ポートへそれぞれ
接続する手段を含む。
は、命令メモリ装置からの命令の供給の有無を示す信号
と、リセット信号と、分岐が発生したことを示す分岐発
生指示情報とに応答して、命令の有効/無効を示す有効
性プラグを形成する手段と、命令メモリから同時にフェ
ッチされた複数の命令と、この同時にフェッチされた複
数の命令の上記命令メモリにおけるアドレスと有効性フ
ラグとを同時に格納する記憶手段を含む。この記憶手段
は、1エントリが1命令と、対応のアドレスと、対応の
有効性フラグとからなる複数のエントリ格納領域を備え
る。またこの記憶手段は、各々に異なる書込エントリ内
容が同時に伝達される複数の入力ポートと、各々に異な
る読出エントリ内容が同時に伝達される複数の出力ポー
トと、書込キューアドレスおよび読出キューアドレスに
応答して複数の書込エントリおよび複数の読出エントリ
を複数の入力ポートおよび複数の出力ポートへそれぞれ
接続する手段を含む。
この命令供給装置はさらに命令デコーダからの命令発
行数情報と分岐発生指示情報と命令供給有無指示信号と
に応答して、上記書込キューアドレスおよび読出キュー
アドレスをそれぞれ生成する手段を備える。
行数情報と分岐発生指示情報と命令供給有無指示信号と
に応答して、上記書込キューアドレスおよび読出キュー
アドレスをそれぞれ生成する手段を備える。
この記憶手段から同時に読出された複数のエントリの
内容が命令デコード装置へ与えられる。
内容が命令デコード装置へ与えられる。
[作用] 記憶装置は、互いに独立にアクセス可能な複数の入力
ポートおよび複数の出力ポートを含む。この複数の入力
ポートへは同時に命令メモリからフェッチされた複数の
命令、アドレスおよび有効性フラグを伴なってそれぞれ
の入力ポートを介して異なるエントリ領域へ同時に格納
される。
ポートおよび複数の出力ポートを含む。この複数の入力
ポートへは同時に命令メモリからフェッチされた複数の
命令、アドレスおよび有効性フラグを伴なってそれぞれ
の入力ポートを介して異なるエントリ領域へ同時に格納
される。
またこの複数のエントリ格納領域からは読出キューア
ドレスに応答して同時に複数のエントリ領域が選択され
それぞれ異なる出力ポートに接続され、これにより複数
のエントリ内容が同時に読出される。
ドレスに応答して同時に複数のエントリ領域が選択され
それぞれ異なる出力ポートに接続され、これにより複数
のエントリ内容が同時に読出される。
この入力ポートおよび出力ポートはそれぞれ独立にア
クセス可能であるため、エントリへの書込読出を同時に
実行することができる。また書込キューアドレスおよび
読出キューアドレスは、それぞれ命令の発行状況および
命令メモリからの命令供給状況に応じて選択され、常に
同一数の命令が発行対象命令として命令デコード装置へ
与えられる。有効性フラグは該命令の発行の可否を決定
する。
クセス可能であるため、エントリへの書込読出を同時に
実行することができる。また書込キューアドレスおよび
読出キューアドレスは、それぞれ命令の発行状況および
命令メモリからの命令供給状況に応じて選択され、常に
同一数の命令が発行対象命令として命令デコード装置へ
与えられる。有効性フラグは該命令の発行の可否を決定
する。
これにより、命令デコード装置へは、常に発行された
命令数を補償する命令が同時に与えられ、効率的に命令
供給を実行することができることになり、命令実行を高
速で行なうことが可能となる並列処理装置を実現する。
命令数を補償する命令が同時に与えられ、効率的に命令
供給を実行することができることになり、命令実行を高
速で行なうことが可能となる並列処理装置を実現する。
[発明の実施例] 第1図はこの発明の一実施例であるスーパースカラー
の要部の構成を示す図である。第1図に示す構成はスー
パースカラーの命令デコード・ステージに対応する。こ
の第1図に示す装置は、2相の互いに重なり合わないク
ロック信号TおよびL(第36図参照)に応答して動作す
る。
の要部の構成を示す図である。第1図に示す構成はスー
パースカラーの命令デコード・ステージに対応する。こ
の第1図に示す装置は、2相の互いに重なり合わないク
ロック信号TおよびL(第36図参照)に応答して動作す
る。
図示しないが命令フェッチ・ステージ(第36図参照)
は、この命令デコード・ステージからの命令フェッチ要
求に従って複数(本実施例では4つ)の命令を命令メモ
リからフェッチする。フェッチした命令IC dataおよび
このフェッチした命令の論理アドレスIF PC Lは、命
令が命令メモリから供給されることを示す信号IC read
yとともにこのデコード・ステージへ供給される。フェ
ッチ命令の論理アドレスIF PC Lは、命令フェッチ・
ステージに含まれる、命令メモリのアドレスを作成する
ポインタから供給される。
は、この命令デコード・ステージからの命令フェッチ要
求に従って複数(本実施例では4つ)の命令を命令メモ
リからフェッチする。フェッチした命令IC dataおよび
このフェッチした命令の論理アドレスIF PC Lは、命
令が命令メモリから供給されることを示す信号IC read
yとともにこのデコード・ステージへ供給される。フェ
ッチ命令の論理アドレスIF PC Lは、命令フェッチ・
ステージに含まれる、命令メモリのアドレスを作成する
ポインタから供給される。
命令メモリは、たとえばキャッシュミス等により低速
の主メモリ(または外部メモリ)へアクセスしている状
態または命令メモリがアクセスを受けている状態等にお
いては、命令メモリが命令フェッチ要求を受入れられな
いことを示す信号IC busyを発生してデコード・ステー
ジへ与える。
の主メモリ(または外部メモリ)へアクセスしている状
態または命令メモリがアクセスを受けている状態等にお
いては、命令メモリが命令フェッチ要求を受入れられな
いことを示す信号IC busyを発生してデコード・ステー
ジへ与える。
第1図を参照して、この発明の一実施例である命令供
給装置は、命令メモリからフェッチされた命令の論理ア
ドレス(IF PC L)、フェッチされた命令(IC dat
a)およびこの命令の有効/無効を示す有効性フラグ(i
nst avail)を1エントリとして格納するランダム・ア
クセス・メモリ(RAM)からなるキュー9を含む。この
キュー9は、後にその構造を詳細に説明するが、たとえ
ば12エントリを格納することができ、かつ複数の書込ポ
ートおよび複数の読出ポートを有する。この複数の書込
ポートおよび複数の読出ポートにより、1つの書込ゲー
トおよび読出ゲートを指定することにより、連続する複
数(本実施例では4つ)のエントリの内容を同時に書込
または読出すことができる。
給装置は、命令メモリからフェッチされた命令の論理ア
ドレス(IF PC L)、フェッチされた命令(IC dat
a)およびこの命令の有効/無効を示す有効性フラグ(i
nst avail)を1エントリとして格納するランダム・ア
クセス・メモリ(RAM)からなるキュー9を含む。この
キュー9は、後にその構造を詳細に説明するが、たとえ
ば12エントリを格納することができ、かつ複数の書込ポ
ートおよび複数の読出ポートを有する。この複数の書込
ポートおよび複数の読出ポートにより、1つの書込ゲー
トおよび読出ゲートを指定することにより、連続する複
数(本実施例では4つ)のエントリの内容を同時に書込
または読出すことができる。
このキュー9への命令の書込および読出ならびに格納
された命令の有効無効を制御するために、クロック信号
Tに応答して、与えられた信号を保持するTラッチ回路
10,11,12,13および28と、各Tラッチ回路10〜13および2
8に対応して設けられ、対応のTラッチ回路の出力デー
タ(保持データ)をクロック信号Lに応答して保持する
Lラッチ回路17,18,19,20および29と、各Lラッチ回路1
7〜20および29の保持データと命令デコード26からの信
号br taken、issued inst count、およびbranch is
t entryとから、キュー9の読出アドレス、書込アドレ
ス、動作制御信号および命令の有効/無効を示す信号を
発生する論理回路30,32,32、33、34、35および36ならび
に50を含む。
された命令の有効無効を制御するために、クロック信号
Tに応答して、与えられた信号を保持するTラッチ回路
10,11,12,13および28と、各Tラッチ回路10〜13および2
8に対応して設けられ、対応のTラッチ回路の出力デー
タ(保持データ)をクロック信号Lに応答して保持する
Lラッチ回路17,18,19,20および29と、各Lラッチ回路1
7〜20および29の保持データと命令デコード26からの信
号br taken、issued inst count、およびbranch is
t entryとから、キュー9の読出アドレス、書込アドレ
ス、動作制御信号および命令の有効/無効を示す信号を
発生する論理回路30,32,32、33、34、35および36ならび
に50を含む。
Tラッチ回路10(以下、キュートップラッチ10と称
す)は、キュー9に命令メモリからフェッチされた命令
を書込むべき複数のエントリの最初のアドレスを示すア
ドレスqueue topをクロック信号Tに応答して保持す
る。すなわち、キュー9に4つの命令が格納される場
合、命令、その論理アドレスおよび有効性フラグはキュ
ー9のアドレス: queue top,queue top+1 queue top+2,queue top+3 に書込まれる。ここで「+」はキュー9が有する全エン
トリ数(本実施例では12)についてのモジュロ加算であ
る。
す)は、キュー9に命令メモリからフェッチされた命令
を書込むべき複数のエントリの最初のアドレスを示すア
ドレスqueue topをクロック信号Tに応答して保持す
る。すなわち、キュー9に4つの命令が格納される場
合、命令、その論理アドレスおよび有効性フラグはキュ
ー9のアドレス: queue top,queue top+1 queue top+2,queue top+3 に書込まれる。ここで「+」はキュー9が有する全エン
トリ数(本実施例では12)についてのモジュロ加算であ
る。
Lラッチ回路17(以下、キュートップLラッチ17と称
す)は、キュートップラッチ10の保持データを、クロッ
ク信号Lに応答して保持する。
す)は、キュートップラッチ10の保持データを、クロッ
ク信号Lに応答して保持する。
Tラッチ回路11(以下、スコープラッチ11と称す)
は、クロック信号Tに応答して、キュー9から同時に読
出されるべき4エントリの最初の1エントリが登録され
ているキュー9のアドレスをクロック信号Tで保持す
る。すなわち、キュー9のアドレス: scope,scope+1, scope+2,scope+3 のエントリの内容が読出される。ここで、「+」はキュ
ー9の全エントリ数(本実施例では12)についてのモジ
ュロ加算である。
は、クロック信号Tに応答して、キュー9から同時に読
出されるべき4エントリの最初の1エントリが登録され
ているキュー9のアドレスをクロック信号Tで保持す
る。すなわち、キュー9のアドレス: scope,scope+1, scope+2,scope+3 のエントリの内容が読出される。ここで、「+」はキュ
ー9の全エントリ数(本実施例では12)についてのモジ
ュロ加算である。
Tラッチ回路(以下、命令フェッチラッチと称す)12
は、命令フェッチを行なうことを示すフラグIC fetch
をクロック信号Tに応答して保持する。この命令フェッ
チ要求フラグIC fetchが“1"のサイクルにおいては、
命令フェッチ要求が命令フェッチステージへ発行され
る。
は、命令フェッチを行なうことを示すフラグIC fetch
をクロック信号Tに応答して保持する。この命令フェッ
チ要求フラグIC fetchが“1"のサイクルにおいては、
命令フェッチ要求が命令フェッチステージへ発行され
る。
Lラッチ回路(以下、命令フェッチLラッチと称す)
19は、クロック信号Lに応答して、命令フェッチラッチ
12にラッチされたフラグIC fetchを保持する。
19は、クロック信号Lに応答して、命令フェッチラッチ
12にラッチされたフラグIC fetchを保持する。
Tラッチ回路(以下、命令ミスラッチと称す)13は、
命令メモリからの命令の待機状態であることを示すフラ
グIC missをクロック信号Tに応答して保持する。
命令メモリからの命令の待機状態であることを示すフラ
グIC missをクロック信号Tに応答して保持する。
Lラッチ回路(以下、命令ミスLラッチと称す)20
は、この命令ミスラッチ13の保持するフラグIC missを
クロック信号Lに応答して保持する。
は、この命令ミスラッチ13の保持するフラグIC missを
クロック信号Lに応答して保持する。
Tラッチ回路(以下、初期状態ラッチを称す)28は、
クロック信号Tに応答してキュー9の初期状態を表わす
フラグqueue init stateを保持する。
クロック信号Tに応答してキュー9の初期状態を表わす
フラグqueue init stateを保持する。
Lラッチ回路(以下、キュー初期状態Lラッチと称
す)29は、キュー初期状態ラッチ28の保持するフラグqu
eue init stateをクロック信号Lに応答して保持す
る。
す)29は、キュー初期状態ラッチ28の保持するフラグqu
eue init stateをクロック信号Lに応答して保持す
る。
論理回路30(以下、キュートップロジック30と称す)
は、命令デコーダ26からの分岐発生信号br takenと、
キュー初期状態Lラッチ29の保持するキュー初期状態フ
ラグqueue init stateと、信号IC readyと、キュー
トップLラッチ17からのキュー9の書込先頭アドレスqu
eue topと、命令フェッチLラッチ19からのフラグIC
fetchと、論理回路31からの次のサイクルにおけるキュ
ー9の読出先頭アドレスscope nextと、キュー9が利
用可能(書込可能)であるか否かを示す論理回路34から
のフラグqueue availおよび命令デコーダ26から発生さ
れる、分岐命令が登録されたエントリのアドレスbranch
inst entryとに応答して、次のサイクルにおけるキ
ュー9の書込先頭アドレスquee top inを形成し、キ
ュートップラッチ10、論理回路34および50へ与える。
は、命令デコーダ26からの分岐発生信号br takenと、
キュー初期状態Lラッチ29の保持するキュー初期状態フ
ラグqueue init stateと、信号IC readyと、キュー
トップLラッチ17からのキュー9の書込先頭アドレスqu
eue topと、命令フェッチLラッチ19からのフラグIC
fetchと、論理回路31からの次のサイクルにおけるキュ
ー9の読出先頭アドレスscope nextと、キュー9が利
用可能(書込可能)であるか否かを示す論理回路34から
のフラグqueue availおよび命令デコーダ26から発生さ
れる、分岐命令が登録されたエントリのアドレスbranch
inst entryとに応答して、次のサイクルにおけるキ
ュー9の書込先頭アドレスquee top inを形成し、キ
ュートップラッチ10、論理回路34および50へ与える。
論理回路31(以下、スコープネクストロジック31と称
す)は信号br tkenと、スコープLラッチ18からの読出
先頭アドレスscope Lと、命令デコーダ26からの発行
命令数データissued inst countおよびアドレスbranc
h inst entryとに応答して、次のサイクルにおけるキ
ュー9の書込先頭アドレスscope nextを発生するとと
もに、このアドレスscope nextが11より大きいことを
示すフラグscope>11を発生する。次のサイクルにおけ
るアドレスscopeを示す信号scope nextはスコープラッ
チ11および論理回路50へ与えられるとともに論理回路34
へも与えられる。フラグscope>11は論理回路50へ与え
られる。
す)は信号br tkenと、スコープLラッチ18からの読出
先頭アドレスscope Lと、命令デコーダ26からの発行
命令数データissued inst countおよびアドレスbranc
h inst entryとに応答して、次のサイクルにおけるキ
ュー9の書込先頭アドレスscope nextを発生するとと
もに、このアドレスscope nextが11より大きいことを
示すフラグscope>11を発生する。次のサイクルにおけ
るアドレスscopeを示す信号scope nextはスコープラッ
チ11および論理回路50へ与えられるとともに論理回路34
へも与えられる。フラグscope>11は論理回路50へ与え
られる。
論理回路33(以下、命令ミスロジック33と称す)は、
命令フェッチLラッチ19からのフラグIC fetch L
と、命令ミスLラッチ20からのフラグIC miss Lと、
フラグbr takenと、信号IC readyとに応答して、、命
令待ち状態であるか否かを示す信号IC missを作成して
命令ミスラッチ13へ与える。
命令フェッチLラッチ19からのフラグIC fetch L
と、命令ミスLラッチ20からのフラグIC miss Lと、
フラグbr takenと、信号IC readyとに応答して、、命
令待ち状態であるか否かを示す信号IC missを作成して
命令ミスラッチ13へ与える。
論理回路36(以下、キュー初期状態ロジック36と称
す)は、キュー初期状態Lラッチ29からの信号queue i
nit state Lと、信号br takenと、命令ミスLラッ
チ20からの信号IC miss Lと、命令フェッチLラッチ
19からの信号IC fetch Lと、信号IC readyとに応答
してキュー9が初期状態であるかを示す信号queue ini
t stateを作成してキュー初期状態ラッチ28へ与える。
す)は、キュー初期状態Lラッチ29からの信号queue i
nit state Lと、信号br takenと、命令ミスLラッ
チ20からの信号IC miss Lと、命令フェッチLラッチ
19からの信号IC fetch Lと、信号IC readyとに応答
してキュー9が初期状態であるかを示す信号queue ini
t stateを作成してキュー初期状態ラッチ28へ与える。
論理回路34(以下、キューアベールロジック34と称
す)は、キュートップLラッチ17からのアドレスqueue
top Lと、スコープネクストロジック31からのアド
レスscope nextと、信号br takenと、キュートップロ
ジック30からのアドレスqueue top in、論理回路50か
らのキュー9の状態(第1、第2および第3の状態:こ
れは後に説明する)を示す信号queue stateとに応答し
て、キュー9が利用可能であるか否かを示す信号queue
availを発生し、キュートップロジック30へ与える。
す)は、キュートップLラッチ17からのアドレスqueue
top Lと、スコープネクストロジック31からのアド
レスscope nextと、信号br takenと、キュートップロ
ジック30からのアドレスqueue top in、論理回路50か
らのキュー9の状態(第1、第2および第3の状態:こ
れは後に説明する)を示す信号queue stateとに応答し
て、キュー9が利用可能であるか否かを示す信号queue
availを発生し、キュートップロジック30へ与える。
論理回路32(以下、命令フェッチロジック32と称す)
は、命令メモリまたは命令フェッチステージから与えら
れる、命令メモリが命令フェッチ要求を受入れられない
状態を示す信号IC busyに応答して、命令メモリへフェ
ッチ要求を出すか否かを示す信号IC fetchを発生し、
命令フェッチラッチ12へ与える。
は、命令メモリまたは命令フェッチステージから与えら
れる、命令メモリが命令フェッチ要求を受入れられない
状態を示す信号IC busyに応答して、命令メモリへフェ
ッチ要求を出すか否かを示す信号IC fetchを発生し、
命令フェッチラッチ12へ与える。
論理回路35(以下、命令アベールロジック35と称す)
は、信号IC readyと、信号IC fetch Lと、信号br
takenと、信号IC miss Lとに応答して、キュー9に
含まれる命令が有効であるか否かを示すフラグinst av
ail inを発生し、キュー9のエントリ内の有効性フラ
グinst availの値を決定する。
は、信号IC readyと、信号IC fetch Lと、信号br
takenと、信号IC miss Lとに応答して、キュー9に
含まれる命令が有効であるか否かを示すフラグinst av
ail inを発生し、キュー9のエントリ内の有効性フラ
グinst availの値を決定する。
論理回路50(以下、キューステートロジック50と称
す)は、命令デコーダ26からのアドレスbranch inst
entryと、キュートップロジック30からのフラグqueue
top>11と、スコープネクストロジック31からのフラグs
cope>11とアドレスscope nextとに応答して、キュー
9が、第1の状態、第2の状態および第3の状態のいず
れにあるかを示す信号queue stateを発生し、キューア
ベールロジック34へ与える。ここで第1の状態はキュー
9が初期状態にあり、その書込先頭アドレスqueue top
および読出先頭アドレスscopeがともに0または同一で
あり、またアドレスqueue topからの4エントリの有効
性フラグinst availがすべてオフ(0)の状態を示
す。この状態はリセット状態、分岐発生状態および命令
到着待ち状態のいずれかの状態である。第2の状態は、
読出先頭アドレスscopeが書込先頭アドレスqueue top
以下の状態、すなわち、 scope≦queue top の状態でありノーマル(NORMAL)状態である。
す)は、命令デコーダ26からのアドレスbranch inst
entryと、キュートップロジック30からのフラグqueue
top>11と、スコープネクストロジック31からのフラグs
cope>11とアドレスscope nextとに応答して、キュー
9が、第1の状態、第2の状態および第3の状態のいず
れにあるかを示す信号queue stateを発生し、キューア
ベールロジック34へ与える。ここで第1の状態はキュー
9が初期状態にあり、その書込先頭アドレスqueue top
および読出先頭アドレスscopeがともに0または同一で
あり、またアドレスqueue topからの4エントリの有効
性フラグinst availがすべてオフ(0)の状態を示
す。この状態はリセット状態、分岐発生状態および命令
到着待ち状態のいずれかの状態である。第2の状態は、
読出先頭アドレスscopeが書込先頭アドレスqueue top
以下の状態、すなわち、 scope≦queue top の状態でありノーマル(NORMAL)状態である。
第3の状態は書込先頭アドレスqueue topが読出先頭
アドレスscope以下の場合であり、すなわち、 queue top≦scope の状態を示す。この第3の状態はリバース(REVERSE)
状態と呼ばれる。この第2の状態および第3の状態を区
別することにより、アドレスscope nextとアドレスque
ue top inが等しくなった状態において、キュー9が
空の状態であるのか満杯(フル)状態であるのかを区別
することができる。すなわち、第2の状態からscope n
ext=queue top inとなった場合、このときはキュー
9は空の状態を示している。また、第3の状態からscop
e next=queue top inとなった場合、このときはキ
ュー9はフル状態となる。この第2および第3の状態に
ついては後に詳細に説明する。
アドレスscope以下の場合であり、すなわち、 queue top≦scope の状態を示す。この第3の状態はリバース(REVERSE)
状態と呼ばれる。この第2の状態および第3の状態を区
別することにより、アドレスscope nextとアドレスque
ue top inが等しくなった状態において、キュー9が
空の状態であるのか満杯(フル)状態であるのかを区別
することができる。すなわち、第2の状態からscope n
ext=queue top inとなった場合、このときはキュー
9は空の状態を示している。また、第3の状態からscop
e next=queue top inとなった場合、このときはキ
ュー9はフル状態となる。この第2および第3の状態に
ついては後に詳細に説明する。
キュー9と命令デコーダ26との間には、キュー9から
読出された複数のエントリの内容をクロック信号Lに応
答して保持するLラッチ回路14、15および16が設けられ
る。Lラッチ回路14(以下、IRLラッチ14と称す)は、
キュー9から同時に読出された複数の命令instを保持す
る。
読出された複数のエントリの内容をクロック信号Lに応
答して保持するLラッチ回路14、15および16が設けられ
る。Lラッチ回路14(以下、IRLラッチ14と称す)は、
キュー9から同時に読出された複数の命令instを保持す
る。
Lラッチ回路15(以下、PCLラッチ15と称す)は、キ
ュー9から同時に入力された命令に対応するアドレスPC
を保持する。
ュー9から同時に入力された命令に対応するアドレスPC
を保持する。
Lラッチ回路16(以下、命令アベールLラッチ16と称
す)は、キュー9から読出された命令に付随する有効性
フラグinst availを保持する。
す)は、キュー9から読出された命令に付随する有効性
フラグinst availを保持する。
命令デコーダ26は、このIRLラッチ14、PCLラッチ15お
よび命令アベールLラッチ16からのアドレス、命令およ
び有効性フラグに応答して、与えられた複数の命令をデ
コードし、並列実行可能な命令を検出し、その命令を機
能ユニットへ発行する。この同時に機能ユニットへ発行
される命令は、PCLラッチ15からのアドレスの小さい順
に決定され、複数の命令が依存関係を有する場合には、
アドレスの小さい方の命令が先に発行される。また、一
般によく知られているように、分岐命令が、プログラム
・カウンタ相対の分岐命令である場合、分岐命令にエン
コードされている即値により分岐先アドレスが表わされ
る。この分岐先アドレスを即値を用いて表現する方法
は、一般によく知られており、この場合、命令メモリに
対する分岐先アドレスは、その分岐命令の命令アドレス
とそこにエンコードされている即値とを加算することに
より得られる。このようなプログラム・カウンタ相対の
分岐命令の場合の分岐先アドレスを計算するために、キ
ュー9に、命令のアドレス(論理アドレス)が格納され
る。この分岐先アドレスの計算は命令デコーダ26におい
て実行される。その加算結果が命令フェッチステージ2
へ与えられる。
よび命令アベールLラッチ16からのアドレス、命令およ
び有効性フラグに応答して、与えられた複数の命令をデ
コードし、並列実行可能な命令を検出し、その命令を機
能ユニットへ発行する。この同時に機能ユニットへ発行
される命令は、PCLラッチ15からのアドレスの小さい順
に決定され、複数の命令が依存関係を有する場合には、
アドレスの小さい方の命令が先に発行される。また、一
般によく知られているように、分岐命令が、プログラム
・カウンタ相対の分岐命令である場合、分岐命令にエン
コードされている即値により分岐先アドレスが表わされ
る。この分岐先アドレスを即値を用いて表現する方法
は、一般によく知られており、この場合、命令メモリに
対する分岐先アドレスは、その分岐命令の命令アドレス
とそこにエンコードされている即値とを加算することに
より得られる。このようなプログラム・カウンタ相対の
分岐命令の場合の分岐先アドレスを計算するために、キ
ュー9に、命令のアドレス(論理アドレス)が格納され
る。この分岐先アドレスの計算は命令デコーダ26におい
て実行される。その加算結果が命令フェッチステージ2
へ与えられる。
次に、この発明による命令フェッチ方式の基本的な動
きについて説明する。
きについて説明する。
第2図は、キュー9の概念的構成を示す図である。第
2図において、キュー9は、アドレス0ないし11の付さ
れた記憶領域を有し、各アドレスに対応して1個のエン
トリEが格納される。各エントリEは、命令メモリから
フェッチされた命令のアドレス(論理アドレス)を格納
する領域Iと、命令メモリからフェッチされた命令IC
dataを格納する領域IIと、この対応の命令が有効である
か否かを示すフラグinst availを格納する領域IIIとを
含む。このアドレスIF PC Lと、命令IC dataおよび
フラグinst avail inはそれぞれ4つの命令が並列に
このキュー9に伝達され、4つの異なるアドレス領域に
同時に格納される。このキュー9のエントリの登録領域
はアドレスqueue topにより指定され、アドレスqueue
top〜queue top+3の領域に格納される。
2図において、キュー9は、アドレス0ないし11の付さ
れた記憶領域を有し、各アドレスに対応して1個のエン
トリEが格納される。各エントリEは、命令メモリから
フェッチされた命令のアドレス(論理アドレス)を格納
する領域Iと、命令メモリからフェッチされた命令IC
dataを格納する領域IIと、この対応の命令が有効である
か否かを示すフラグinst availを格納する領域IIIとを
含む。このアドレスIF PC Lと、命令IC dataおよび
フラグinst avail inはそれぞれ4つの命令が並列に
このキュー9に伝達され、4つの異なるアドレス領域に
同時に格納される。このキュー9のエントリの登録領域
はアドレスqueue topにより指定され、アドレスqueue
top〜queue top+3の領域に格納される。
このキュー9からの命令の読出は、4つの命令が並列
に読出されることにより行なわれる。この読出のアドレ
スの指定は、アドレスscopeにより行なわれ、アドレスs
cope〜scope+3のアドレスに登録されたエントリが並
列が同時に読出される。次に、第3図を参照してこの発
明によるフェッチ方式の基本的な動作について説明す
る。
に読出されることにより行なわれる。この読出のアドレ
スの指定は、アドレスscopeにより行なわれ、アドレスs
cope〜scope+3のアドレスに登録されたエントリが並
列が同時に読出される。次に、第3図を参照してこの発
明によるフェッチ方式の基本的な動作について説明す
る。
まず状態(1)はリセット直後または初期化直後の初
期状態(第1の状態)である。この初期状態において
は、アドレスqueue topおよびscopeはともにキュー9
の初期アドレス0を示している。このとき、キュー9に
おいてはqueue topすなわちアドレス0から始まる有効
性フラグはオフ(0)とされる。この状態においては、
有効性フラグがオフ(0)を示しているためそのキュー
9のアドレス0〜3の4エントリは無効であり、発行ま
たは実行が禁止されていることを示している。
期状態(第1の状態)である。この初期状態において
は、アドレスqueue topおよびscopeはともにキュー9
の初期アドレス0を示している。このとき、キュー9に
おいてはqueue topすなわちアドレス0から始まる有効
性フラグはオフ(0)とされる。この状態においては、
有効性フラグがオフ(0)を示しているためそのキュー
9のアドレス0〜3の4エントリは無効であり、発行ま
たは実行が禁止されていることを示している。
状態(2)において、アドレスqueue topが示すアド
レス0から始まる4つのアドレスに対して命令が書込ま
れる。この書込まれた命令は有効な命令であるため、こ
れに対応する有効性フラグがオン(1)とされ、この書
込まれた命令が有効であることが示され、この4つのエ
ントリの命令の読出、発行/実行可能なことが示され
る。この状態(2)においては、まだqueue topの変更
は行なわれていない。この状態(2)においては、アド
レスscopeが示すアドレス0から始まる4つのエントリ
が読出され、命令デコーダへ与えられ、解読される。
レス0から始まる4つのアドレスに対して命令が書込ま
れる。この書込まれた命令は有効な命令であるため、こ
れに対応する有効性フラグがオン(1)とされ、この書
込まれた命令が有効であることが示され、この4つのエ
ントリの命令の読出、発行/実行可能なことが示され
る。この状態(2)においては、まだqueue topの変更
は行なわれていない。この状態(2)においては、アド
レスscopeが示すアドレス0から始まる4つのエントリ
が読出され、命令デコーダへ与えられ、解読される。
状態(2)において、命令デコーダから2つの命令が
同時処理可能であるとして機能ユニットへ発行され、読
出先頭アドレスscopeがアドレス2へ変更される。
同時処理可能であるとして機能ユニットへ発行され、読
出先頭アドレスscopeがアドレス2へ変更される。
状態(3)のサイクルにおいては、書込先頭アドレス
queue topがアドレス4に変更されており、このアドレ
ス4から始まる4つのアドレス領域に次の4つの命令4
ないし7がそれぞれ格納される。この新たに書込まれた
命令4ないし7に対応する有効性フラグも同時にオンと
される。
queue topがアドレス4に変更されており、このアドレ
ス4から始まる4つのアドレス領域に次の4つの命令4
ないし7がそれぞれ格納される。この新たに書込まれた
命令4ないし7に対応する有効性フラグも同時にオンと
される。
状態(4)は、1つの命令が発行された後の状態を示
している。1命令が発行されたため、読出先頭アドレス
scopeは1つ移動し、アドレス3を示す。またこの状態
(4)においては、新たに4つの命令8ないし11が書込
先頭アドレスqueue topが示すアドレス8から連続する
4つのアドレス領域にそれぞれ書込まれており、対応の
有効性フラグもオン(1)とされる。この状態(4)の
サイクルにおいては、アドレスscopeが示すアドレス3
から始まる4つのアドレスの命令がキュー9から読出さ
れ命令デコーダへ与えられて解読される。
している。1命令が発行されたため、読出先頭アドレス
scopeは1つ移動し、アドレス3を示す。またこの状態
(4)においては、新たに4つの命令8ないし11が書込
先頭アドレスqueue topが示すアドレス8から連続する
4つのアドレス領域にそれぞれ書込まれており、対応の
有効性フラグもオン(1)とされる。この状態(4)の
サイクルにおいては、アドレスscopeが示すアドレス3
から始まる4つのアドレスの命令がキュー9から読出さ
れ命令デコーダへ与えられて解読される。
状態(5)は、前のサイクルにおいて命令デコーダか
らは1つも命令が発行されなかった場合の状態で示して
いる。この場合、発行された命令数は0であるため、書
込先頭アドレスscopeは移動せず、アドレス3を示す。
この状態(5)のサイクルにおいては、アドレスscope
が示すアドレス3から始まる4つのアドレスの命令が再
びキュー9から読出されて命令デコーダにより解読され
る。この状態(5)においては、先のサイクルにおいて
queue top+4(12のモジュロ加算)が行なわれ、書込
先頭アドレスqueue topは0(8+4=0)となり、ア
ドレス0を示している。この場合、queue topから始ま
る4つのアドレス領域は、まだ発行されていない命令
(アドレス3の命令)を含んでいるため、キュー9への
命令の取込は行なわれない。
らは1つも命令が発行されなかった場合の状態で示して
いる。この場合、発行された命令数は0であるため、書
込先頭アドレスscopeは移動せず、アドレス3を示す。
この状態(5)のサイクルにおいては、アドレスscope
が示すアドレス3から始まる4つのアドレスの命令が再
びキュー9から読出されて命令デコーダにより解読され
る。この状態(5)においては、先のサイクルにおいて
queue top+4(12のモジュロ加算)が行なわれ、書込
先頭アドレスqueue topは0(8+4=0)となり、ア
ドレス0を示している。この場合、queue topから始ま
る4つのアドレス領域は、まだ発行されていない命令
(アドレス3の命令)を含んでいるため、キュー9への
命令の取込は行なわれない。
状態(6)は、前のサイクルで命令デコーダから3つ
の命令が発行された場合の状態を示している。3命令が
発行されたため、読出先頭アドレスscopeは3シフトさ
れ、アドレス6を示している。書込先頭アドレスqueue
topが示すアドレス0から始まる4つのアドレス領域
に命令12,13,14および15が格納される。この命令12ない
し15は有効であるため、それに対応する有効性フラグが
オン状態とされる。このキュー9において空き領域があ
るか否かの判定は、キューアベールロジック34から出力
される信号queue availにより行なわれる。
の命令が発行された場合の状態を示している。3命令が
発行されたため、読出先頭アドレスscopeは3シフトさ
れ、アドレス6を示している。書込先頭アドレスqueue
topが示すアドレス0から始まる4つのアドレス領域
に命令12,13,14および15が格納される。この命令12ない
し15は有効であるため、それに対応する有効性フラグが
オン状態とされる。このキュー9において空き領域があ
るか否かの判定は、キューアベールロジック34から出力
される信号queue availにより行なわれる。
次に、分岐命令による分岐が生じた場合の基本的動作
についてそのフローを示す第4図を参照して説明する。
いまキュー9が状態(1)にあった場合を想定する。こ
の状態(1)においては、アドレスqueue topはアドレ
ス10を示しており、アドレスscopeはアドレス2を示し
ている。この状態(11)においては、アドレス10,11,0,
1に命令8,9,10および11が書込まれる。キュー9のアド
レス2,3,4および5に格納されている命令2,3,4,5が読出
されて命令デコーダへ与えられる。この状態(11)のサ
イクルにおいて、アドレス4の命令2が分岐命令であ
り、この分岐命令2に従って分岐が生じたとする。次の
状態(12)においては以下のことが行なわれる。
についてそのフローを示す第4図を参照して説明する。
いまキュー9が状態(1)にあった場合を想定する。こ
の状態(1)においては、アドレスqueue topはアドレ
ス10を示しており、アドレスscopeはアドレス2を示し
ている。この状態(11)においては、アドレス10,11,0,
1に命令8,9,10および11が書込まれる。キュー9のアド
レス2,3,4および5に格納されている命令2,3,4,5が読出
されて命令デコーダへ与えられる。この状態(11)のサ
イクルにおいて、アドレス4の命令2が分岐命令であ
り、この分岐命令2に従って分岐が生じたとする。次の
状態(12)においては以下のことが行なわれる。
キュー9のアドレス4以降の内容は、命令2において
分岐が生じたためもはや不要である。
分岐が生じたためもはや不要である。
アドレスqueue topに続くアドレスすなわちアドレス
4ないし7に格納された4エントリの有効性フラグをオ
フ(0)に設定する。
4ないし7に格納された4エントリの有効性フラグをオ
フ(0)に設定する。
アドレスqueue topおよびscopeをキュー9のアドレ
ス4に設定する。
ス4に設定する。
また、分岐先命令のアドレスは、このサイクルで命令
メモリへ送られ、分岐先命令はその次のサイクルで命令
メモリから供給される。すなわち、分岐先命令はこのサ
イクルではキュー9には書込まれない。
メモリへ送られ、分岐先命令はその次のサイクルで命令
メモリから供給される。すなわち、分岐先命令はこのサ
イクルではキュー9には書込まれない。
アドレスscopeより始まる4エントリの命令は発行対
象として解読することができる。しかしながら、これら
の内容は機能ユニットへ発行してはならないものである
ため、このサイクルにおいては、アドレスqueue topよ
り始まる4エントリの有効性フラグがオフ(0)に設定
される。
象として解読することができる。しかしながら、これら
の内容は機能ユニットへ発行してはならないものである
ため、このサイクルにおいては、アドレスqueue topよ
り始まる4エントリの有効性フラグがオフ(0)に設定
される。
状態(13)においては、アドレスqueue topから始ま
るアドレス4ないし7の領域に分岐先命令20〜23が命令
メモリから供給されて書込まれる。またこの命令20ない
し23は分岐先命令であり、解読・発行されるべきもので
あるため、その有効性フラグもオン(1)に設定され
る。
るアドレス4ないし7の領域に分岐先命令20〜23が命令
メモリから供給されて書込まれる。またこの命令20ない
し23は分岐先命令であり、解読・発行されるべきもので
あるため、その有効性フラグもオン(1)に設定され
る。
このサイクルにおいては、またアドレスscope(キュ
ーアドレス4)から始まる4エントリの命令20ないし23
が命令デコーダへ与えられ、解読される。
ーアドレス4)から始まる4エントリの命令20ないし23
が命令デコーダへ与えられ、解読される。
次に、プロセサからの命令フェッチ要求に対して、命
令メモリから命令を供給することができない場合の基本
的な動きについてそのフローを示す第5図を参照して説
明する。
令メモリから命令を供給することができない場合の基本
的な動きについてそのフローを示す第5図を参照して説
明する。
いま、キュー9が第5図に示す状態(21)にあった場
合を想定する。この状態(21)においては、キュー9の
アドレス0ないし3へ命令8ないし11が書込まれ、一
方、キュー9のアドレス6,7,8および9に格納されてい
る命令2,3,4および5が命令デコーダへ与えられ、発行
対象として解読される。
合を想定する。この状態(21)においては、キュー9の
アドレス0ないし3へ命令8ないし11が書込まれ、一
方、キュー9のアドレス6,7,8および9に格納されてい
る命令2,3,4および5が命令デコーダへ与えられ、発行
対象として解読される。
このサイクルにおいて命令2,3および4が機能ユニッ
トへ発行されたとする。
トへ発行されたとする。
このサイクルにおいて、命令メモリに対して行なった
命令フェッチ要求に対して、命令メモリは何らかの原因
(たとえば命令メモリがキャッシュで構成される場合、
キャッシュミス)によりこのサイクル内で命令を供給で
きなかったとする。
命令フェッチ要求に対して、命令メモリは何らかの原因
(たとえば命令メモリがキャッシュで構成される場合、
キャッシュミス)によりこのサイクル内で命令を供給で
きなかったとする。
状態(22)においては、前のサイクルで命令2,3およ
び4が発行されているため、アドレスscopeが3つシフ
トしてアドレス9を示している。
び4が発行されているため、アドレスscopeが3つシフ
トしてアドレス9を示している。
また、アドレスqueue topはアドレス4を示してい
る。命令メモリから命令が供給されていないため、この
キュー9のアドレス4,5,6および7に格納されている命
令はフェッチ要求が出された命令と異なるため、解読し
てはならない。そこで、命令が命令メモリから供給され
ない場合、このアドレスqueue topに続くアドレスに格
納された4エントリの有効性フラグがオフ(0)に設定
される。
る。命令メモリから命令が供給されていないため、この
キュー9のアドレス4,5,6および7に格納されている命
令はフェッチ要求が出された命令と異なるため、解読し
てはならない。そこで、命令が命令メモリから供給され
ない場合、このアドレスqueue topに続くアドレスに格
納された4エントリの有効性フラグがオフ(0)に設定
される。
状態(23)においてもまだ命令メモリから命令が供給
されず、プロセサは命令到着待機状態にある。このため
キュー9への命令書込は停止する。一方、命令フェッチ
が行なわれなくても、キュー9に未発行の命令が存在す
れば命令デコーダを介して機能ユニットへの命令発行が
続行される。この第5図に示す例においては、前のサイ
クル(状態(22))において2命令が発行されており、
このアドレスscopeは11を示している。
されず、プロセサは命令到着待機状態にある。このため
キュー9への命令書込は停止する。一方、命令フェッチ
が行なわれなくても、キュー9に未発行の命令が存在す
れば命令デコーダを介して機能ユニットへの命令発行が
続行される。この第5図に示す例においては、前のサイ
クル(状態(22))において2命令が発行されており、
このアドレスscopeは11を示している。
状態(24)において、命令が命令メモリから到着した
ため、アドレスqueue top(アドレス4)から始まるキ
ュー9の4エントリに命令が書込まれる。すなわち、命
令12〜15がアドレス4〜7にそれぞれ書込まれる。
ため、アドレスqueue top(アドレス4)から始まるキ
ュー9の4エントリに命令が書込まれる。すなわち、命
令12〜15がアドレス4〜7にそれぞれ書込まれる。
また前のサイクルにおいて2つの命令(命令7および
8)が発行されており、アドレスscopeはアドレス1を
示す。
8)が発行されており、アドレスscopeはアドレス1を
示す。
次に、第3図ないし第5図に示す動作を実現するため
のロジック30ないし36の論理について説明する。まず、
キュートップロジック30が実現するロジックについて説
明する。
のロジック30ないし36の論理について説明する。まず、
キュートップロジック30が実現するロジックについて説
明する。
(1) 初期状態:この状態は次の2つの状態を含む。
(a) リセット状態:信号reset=1 このとき、queue top=0となる。
(b) 初期化状態:信号queue init state L=1 この状態は、キュー9の書込先頭アドレスはキュート
ップLラッチ17の保持するアドレスに設定される。した
がって、 queue top in=queue top L となる。
ップLラッチ17の保持するアドレスに設定される。した
がって、 queue top in=queue top L となる。
次に非初期状態、すなわちreset・queue init stat
e L=0の場合について説明する。ここで「・」は論
理積演算を示す。
e L=0の場合について説明する。ここで「・」は論
理積演算を示す。
(2) 分岐発生状態:信号br taken=1: この状態においては、アドレスqueue topは、キュー
9において分岐命令が格納されたアドレスに設定され
る。したがって、このときは、 queue top in=branch inst entry となる。
9において分岐命令が格納されたアドレスに設定され
る。したがって、このときは、 queue top in=branch inst entry となる。
(3) 命令フェッチ要求が出されても命令供給が行な
われない場合:IC fetch L=1かつIC ready=0 このとき、アドレスqueue topは前のサイクルと同じ
値を維持するので、 queue top in=queue top L となる。
われない場合:IC fetch L=1かつIC ready=0 このとき、アドレスqueue topは前のサイクルと同じ
値を維持するので、 queue top in=queue top L となる。
(4) 発行された命令フェッチ要求に対し命令供給が
行なわれ、かつキュー9に空きが存在する場合 :IC fetch L=1かつIC ready=1、かつqueue av
ail=1 このとき、アドレスqueue topは次のサイクルにおい
て4シフトされるため、 queue top in=queue+4 となる。ここで、「+」はモジュロ12の加算である。し
たがって、 if(queue top>11) {queue top in=queue top in−12} となる。
行なわれ、かつキュー9に空きが存在する場合 :IC fetch L=1かつIC ready=1、かつqueue av
ail=1 このとき、アドレスqueue topは次のサイクルにおい
て4シフトされるため、 queue top in=queue+4 となる。ここで、「+」はモジュロ12の加算である。し
たがって、 if(queue top>11) {queue top in=queue top in−12} となる。
(5) 命令フェッチ要求が出され、命令供給が行なわ
れても、キューに空き領域(4エントリ分)が存在しな
い場合 :IC fetch L=1かつIC ready=1かつqueue avai
l=0 この状態はキュー9に4エントリ分の命令を書込む領
域が存在しないため、命令の書込みが行なわれない状態
を示しており、アドレスqueue topは前のサイクルと同
じ状態を維持する。したがって、 queue top in=queue top L となる。
れても、キューに空き領域(4エントリ分)が存在しな
い場合 :IC fetch L=1かつIC ready=1かつqueue avai
l=0 この状態はキュー9に4エントリ分の命令を書込む領
域が存在しないため、命令の書込みが行なわれない状態
を示しており、アドレスqueue topは前のサイクルと同
じ状態を維持する。したがって、 queue top in=queue top L となる。
(6) 命令到着待ち状態の場合 :この状態は2つある。
(a) 命令フェッチ要求が出されても何らかの原因
(キャッシュミス等)により命令供給が行なわれない場
合 :IC fetch L=1かつIC ready=0 この状態では前のサイクルのqueue topが保持され
る。したがって、 queue top in=queue top L となる。
(キャッシュミス等)により命令供給が行なわれない場
合 :IC fetch L=1かつIC ready=0 この状態では前のサイクルのqueue topが保持され
る。したがって、 queue top in=queue top L となる。
(b) たとえば命令メモリがアクセスを受入れられな
い状態にあるとき :この状態はIC miss L=1かつIC ready=0 この状態では、命令が供給されていないため、アドレ
スqueue topは前の値を保持する。したがって、 queue top in=que top L となる。
い状態にあるとき :この状態はIC miss L=1かつIC ready=0 この状態では、命令が供給されていないため、アドレ
スqueue topは前の値を保持する。したがって、 queue top in=que top L となる。
(7) たとえばキャッシュミス等による命令到着待ち
状態において命令が与えられ、かつキュー9に空き領域
が存在する場合: IC miss L=1かつIC ready=1かつqueue avail
=1 この状態では、与えられた命令をキュー9にすべて書
込むことができる。このときには、このサイクルでは、
queue top in=queue top L+4 となる。ただし「+」はモジュル12のモジュロ加算であ
る。
状態において命令が与えられ、かつキュー9に空き領域
が存在する場合: IC miss L=1かつIC ready=1かつqueue avail
=1 この状態では、与えられた命令をキュー9にすべて書
込むことができる。このときには、このサイクルでは、
queue top in=queue top L+4 となる。ただし「+」はモジュル12のモジュロ加算であ
る。
(8) 命令到着待機状態において命令が供給されても
キュー9に空き領域が存在しない場合 :IC miss L=1、かつIC ready=1、かつqueue a
vail=0 このとき、キュー9には命令を書込むことができない
ので、アドレスqueue topは前のサイクルの値を保持す
る。したがって、 queue top in=queue top L となる。
キュー9に空き領域が存在しない場合 :IC miss L=1、かつIC ready=1、かつqueue a
vail=0 このとき、キュー9には命令を書込むことができない
ので、アドレスqueue topは前のサイクルの値を保持す
る。したがって、 queue top in=queue top L となる。
(8) 命令フェッチ要求を出しておらず、また命令到
着待ち合わせ状態でもない場合 :IC fetch L=0かつIC miss L=0 この状態はたとえば割込み処理などにより、命令メモ
リの命令の実行が中断される状態である。この状態では
アドレスqueue topは前のサイクルの値を維持する。し
たがって、 queue top in=queue top L となる。この上述の論理を第6図に一覧にして示す。
着待ち合わせ状態でもない場合 :IC fetch L=0かつIC miss L=0 この状態はたとえば割込み処理などにより、命令メモ
リの命令の実行が中断される状態である。この状態では
アドレスqueue topは前のサイクルの値を維持する。し
たがって、 queue top in=queue top L となる。この上述の論理を第6図に一覧にして示す。
このキュートップロジック30が実行する論理は上述の
説明から明らかであろう。このキュートップロジック30
の具体的構成は、第6図に示す論理表を満足する構成で
あればどのようなものであってもよい。たとえば単純に
は、この第6図に示す表の各列(横方向)が示すロジッ
クをたとえばANDゲートにより形成し、この各列のロジ
ックの論理和をとる回路構成を用いて実現できる。
説明から明らかであろう。このキュートップロジック30
の具体的構成は、第6図に示す論理表を満足する構成で
あればどのようなものであってもよい。たとえば単純に
は、この第6図に示す表の各列(横方向)が示すロジッ
クをたとえばANDゲートにより形成し、この各列のロジ
ックの論理和をとる回路構成を用いて実現できる。
次にスコープネクストロジック31の実行する論理動作
について説明する。
について説明する。
(1) リセット状態:信号reset=1 この状態ではアドレスscopeは0に設定される。すな
わち、 scope next=0である。
わち、 scope next=0である。
(2) 分岐命令の発行 :br taken=1 この場合、第4図に示すように、アドレスscopeは分
岐命令を格納するキュー9のアドレスに設定される。し
たがって、scope next=branch inst entry となる。
岐命令を格納するキュー9のアドレスに設定される。し
たがって、scope next=branch inst entry となる。
(3) この上述の状態以外の場合:reset=0かつbr
taken=0 この状態においては、アドレスscopeは発行命令数に
従ってシフトする。すなわち、 scope next=scope L+issued inst count となる。ここで、「+」はモジュール12のモジュロ加算
である。したがって、 scope>11==1のとき、 scope next=scope next−12 となる。
taken=0 この状態においては、アドレスscopeは発行命令数に
従ってシフトする。すなわち、 scope next=scope L+issued inst count となる。ここで、「+」はモジュール12のモジュロ加算
である。したがって、 scope>11==1のとき、 scope next=scope next−12 となる。
このスコープネクストロジック31の実現する論理は第
7図に一覧にして示される。
7図に一覧にして示される。
ここでフラグscope>11,queue top>11はアドレスsc
opeおよびqueue topがキュー9を一巡りしたことを示
す。
opeおよびqueue topがキュー9を一巡りしたことを示
す。
次に第8図を参照して命令フェッチロジック32の実現
する論理について説明する。
する論理について説明する。
(1) 命令フェッチ要求は、リセット状態のときまた
は命令メモリが、命令フェッチ要求を受入れられる状態
のとき発生される。すなわち、 reset!=1かつIC busy!=1のときに IC fetch=1 となる。ここで「!」は否定を示す符号である。
は命令メモリが、命令フェッチ要求を受入れられる状態
のとき発生される。すなわち、 reset!=1かつIC busy!=1のときに IC fetch=1 となる。ここで「!」は否定を示す符号である。
(2) 命令フェッチ要求が出されないのは上述のごと
くリセット状態または命令メモリが命令フェッチ要求を
受入れない状態のときである。したがって上の状態
(1)以外すべて IC fetch=0 となる。次に命令ミスロジック33が実現する論理につい
て第9図を参照して説明する。
くリセット状態または命令メモリが命令フェッチ要求を
受入れない状態のときである。したがって上の状態
(1)以外すべて IC fetch=0 となる。次に命令ミスロジック33が実現する論理につい
て第9図を参照して説明する。
信号IC missは、命令メモリからの命令到着待ち状態
であることを示すフラグである。この命令ミスロジック
33は次のサイクルのフラグIC missの状態を決定する。
であることを示すフラグである。この命令ミスロジック
33は次のサイクルのフラグIC missの状態を決定する。
(1) リセット状態:retet=1 この状態においては、まだ何ら命令は発生されておら
ず命令を待つ必要もなく、フラグIC missは0である。
ず命令を待つ必要もなく、フラグIC missは0である。
(2) 動作時において、分岐命令が発生した場合 :br taken=1 この状態においては、次のサイクルで分岐先命令のフ
ェッチが行なわれるため、命令待ち合わせ状態となるこ
とはなく、フラグIC missは0となる。
ェッチが行なわれるため、命令待ち合わせ状態となるこ
とはなく、フラグIC missは0となる。
(3)命令フェッチ要求が出されても命令メモリから命
令が供給されない場合 :IC fetch L=1かつIC ready=0 この状態では、次のサイクルは命令供給待機状態であ
り、次のサイクルで命令が与えられればその命令を書込
む必要がある。フラグIC missは1となる。
令が供給されない場合 :IC fetch L=1かつIC ready=0 この状態では、次のサイクルは命令供給待機状態であ
り、次のサイクルで命令が与えられればその命令を書込
む必要がある。フラグIC missは1となる。
(4) 命令メモリから命令供給がされた場合 :IC ready=1 この状態は命令メモリから命令が供給されたことを示
しており、次のサイクルにおいて命令待ち合わせ状態と
なる必要はなく、フラグIC missは0となる。
しており、次のサイクルにおいて命令待ち合わせ状態と
なる必要はなく、フラグIC missは0となる。
(5) 動作状態において、分岐命令が発生せず、命令
フェッチ要求も発生されず、また命令メモリからの命令
供給指示も与えられない状態 :br taken=0、かつIC fetch L=0、かつIC rea
dy=0 この状態は、たとえば割込み処理などによる実行の中
断状態などが生じており、フラグIC missは前のサイク
ルの値を保持する必要があるため、 IC miss=IC miss L、 となる。
フェッチ要求も発生されず、また命令メモリからの命令
供給指示も与えられない状態 :br taken=0、かつIC fetch L=0、かつIC rea
dy=0 この状態は、たとえば割込み処理などによる実行の中
断状態などが生じており、フラグIC missは前のサイク
ルの値を保持する必要があるため、 IC miss=IC miss L、 となる。
次に第10A図および第10B図を参照してキューアベール
ロジック34が実現する論理動作について説明する。
ロジック34が実現する論理動作について説明する。
(1) リセット状態:reset=1 この状態においては、キュー9においては命令は何ら
格納されていないため、キュー9には、アドレスqueue
topからの連続する4つのアドレス領域に4つの命令
を書込むことができる。したがってこの場合、 queue avail=1 となる。
格納されていないため、キュー9には、アドレスqueue
topからの連続する4つのアドレス領域に4つの命令
を書込むことができる。したがってこの場合、 queue avail=1 となる。
(2) 分岐命令が発生した場合:br taken=1 この状態においては、第4図に示すように、queue t
opから始まるアドレスに分岐先命令を書込む必要がある
ため、空き領域が等価的に存在することになる。したが
って、 queue avail=1 となる。
opから始まるアドレスに分岐先命令を書込む必要がある
ため、空き領域が等価的に存在することになる。したが
って、 queue avail=1 となる。
分岐が発生していない状態において、キューフルロジ
ック(これは以下に説明する)がキュー9に空き領域
(4エントリ分)が存在していることを示している場合
には、 queue avail=1となり、またこのキューフルロジッ
クがキュー9が空き状態(4命令を書込むエントリ分の
領域)にないことを示している場合に queue avail=0となる。すなわち、 この状態においてはqueue avail=!queue fullとな
る。
ック(これは以下に説明する)がキュー9に空き領域
(4エントリ分)が存在していることを示している場合
には、 queue avail=1となり、またこのキューフルロジッ
クがキュー9が空き状態(4命令を書込むエントリ分の
領域)にないことを示している場合に queue avail=0となる。すなわち、 この状態においてはqueue avail=!queue fullとな
る。
次に、キューフルロジックについて説明する。このキ
ューフルロジックは第1図におけるキューアベールロジ
ック34に含まれている。このキューフルロジックが実行
する論理を第10B図を参照して説明する。
ューフルロジックは第1図におけるキューアベールロジ
ック34に含まれている。このキューフルロジックが実行
する論理を第10B図を参照して説明する。
(1) このキューフルロジックはスコープネクストロ
ジック31からのアドレスscopeとキュートップロジック3
0からのアドレスqueue top inに従ってキュー9が空
き領域を有しているか否かを判定する。ここで、スコー
プネクストロジック31から出力されるアドレスscopeは
次のサイクルにおける読出先頭アドレスを示しているた
めscope nextとして説明する。
ジック31からのアドレスscopeとキュートップロジック3
0からのアドレスqueue top inに従ってキュー9が空
き領域を有しているか否かを判定する。ここで、スコー
プネクストロジック31から出力されるアドレスscopeは
次のサイクルにおける読出先頭アドレスを示しているた
めscope nextとして説明する。
(1) 次のサイクルにおける読出先頭アドレスscope
nextが次のサイクルにおける書込先頭アドレスqueue
top inよりも小さい場合 この場合、第10C図に示すように、命令がqueue top
inから書込まれるため、アドレスscope nextとキュ
ー9の全エントリ数との和からアドレスqueue top in
との差が4以上あれば次のサイクルで命令を書込むこと
ができる。したがって、 scope next+12−queue top in≧4 の場合にはqueue full=FALSE(0;空き領域有) となる。そうでない場合には、 queue full=TRUE(1;空き領域無し) となる。
nextが次のサイクルにおける書込先頭アドレスqueue
top inよりも小さい場合 この場合、第10C図に示すように、命令がqueue top
inから書込まれるため、アドレスscope nextとキュ
ー9の全エントリ数との和からアドレスqueue top in
との差が4以上あれば次のサイクルで命令を書込むこと
ができる。したがって、 scope next+12−queue top in≧4 の場合にはqueue full=FALSE(0;空き領域有) となる。そうでない場合には、 queue full=TRUE(1;空き領域無し) となる。
(2) scope next>queue top in: この状態は第10D図に示す状態である。この状態で
は、scope nextとqueue top inとの差Cが4以上で
あればキュー9に命令を書込むことができる。したがっ
て、 scope next−queue top in≧4ならば、 queue full=FALSE となる。
は、scope nextとqueue top inとの差Cが4以上で
あればキュー9に命令を書込むことができる。したがっ
て、 scope next−queue top in≧4ならば、 queue full=FALSE となる。
また、scope next−queue top in<4ならば、 queue full=TRUE となる。
(3) scope next=queue top in この状態は次のサイクルにおける読出先頭アドレスと
書込先頭アドレスとが等しい状態である。このとき、後
述のキューステイト(queue state)に従って、キュー
9の空き領域があるか否かの判別が行なわれる。すなわ
ち、 queue state=NORMALならば、 queue full=FALSE となる。また、queue state!=NORMALならば、 queue full=TRUE となる。
書込先頭アドレスとが等しい状態である。このとき、後
述のキューステイト(queue state)に従って、キュー
9の空き領域があるか否かの判別が行なわれる。すなわ
ち、 queue state=NORMALならば、 queue full=FALSE となる。また、queue state!=NORMALならば、 queue full=TRUE となる。
次にキュー9の空き領域の有無を判定するための信号
queue teateについて説明する。ここで、空き領域とは
一度に命令メモリからフェッチされた複数の命令をすべ
て書込むことのできる領域であり、本実施令では最小4
エントリの領域を示す。キュー9の状態は第1の状態の
他に、第2の状態および第3の状態がある。まず、第11
A図および第11B図を参照して第2の状態(NORMAL状態)
について説明する。
queue teateについて説明する。ここで、空き領域とは
一度に命令メモリからフェッチされた複数の命令をすべ
て書込むことのできる領域であり、本実施令では最小4
エントリの領域を示す。キュー9の状態は第1の状態の
他に、第2の状態および第3の状態がある。まず、第11
A図および第11B図を参照して第2の状態(NORMAL状態)
について説明する。
第11A図および第11B図は、キュー9の第2の状態(NO
RMAL状態)のキュー9のアドレスqueue topおよびscop
eの位置関係を示す図である。第11A図において、アドレ
スqueue topは、キュー9のアドレス6を示し、アドレ
スscopeはキュー9のアドレス2を示す。この状態は、 scope<queue top と表わせる。
RMAL状態)のキュー9のアドレスqueue topおよびscop
eの位置関係を示す図である。第11A図において、アドレ
スqueue topは、キュー9のアドレス6を示し、アドレ
スscopeはキュー9のアドレス2を示す。この状態は、 scope<queue top と表わせる。
第11B図において、命令が供給されず、命令の発行の
みが行なわれた状態を示す。この場合、次のサイクルに
おけるアドレスscope nextおよびqueue top inは互
いに等しくなる。この状態は、第2の状態(NORMAL状
態)において生じたものであり、この状態も第2の状態
と称される。この状態は、 scope next=queue top in と表わせられる。
みが行なわれた状態を示す。この場合、次のサイクルに
おけるアドレスscope nextおよびqueue top inは互
いに等しくなる。この状態は、第2の状態(NORMAL状
態)において生じたものであり、この状態も第2の状態
と称される。この状態は、 scope next=queue top in と表わせられる。
したがって、キュー9の第2の状態(NORMAL状態)に
ある条件は、 scope≦queue top と表わせる。次に、第12A図および第12B図を参照して、
キュー9の第3の状態(REVERSE状態)について説明す
る。
ある条件は、 scope≦queue top と表わせる。次に、第12A図および第12B図を参照して、
キュー9の第3の状態(REVERSE状態)について説明す
る。
第12A図および第12B図はキュー9の第3の状態(REVE
RSE状態)におけるアドレスscopeおよびqueue topの位
置関係を示す図である。第12A図において、アドレスsco
peはキュー9のアドレス6を示し、アドレスqueue top
は、キュー9のアドレス2を示す。この状態は、 scope>queue top と表わせる。
RSE状態)におけるアドレスscopeおよびqueue topの位
置関係を示す図である。第12A図において、アドレスsco
peはキュー9のアドレス6を示し、アドレスqueue top
は、キュー9のアドレス2を示す。この状態は、 scope>queue top と表わせる。
この状態において、命令発行が行なわれず、命令供給
が行なわれた状態を考える。すなわち、第12A図におい
てキュー9のアドレス2から命令が供給された場合を考
える。この場合、第12B図に示すように、次のサイクル
におけるアドレスは、 scope next=queue top in となる。この状態では、未発行の命令のみでキュー9が
満たされている。この状態では、次のサイクルにおける
命令書込を禁止する必要がある。この状態をも合わせて
第3の状態(REVERSE状態)とよぶ。したがって、第3
の状態(REVERSE状態)の条件は、 scope≧queue top と表わせる。このキュー9の状態を信号queue stateに
よりモニタすることにより、前述のロジックqueue ful
lの論理動作を通して、キュー9に空き領域があるか否
かの判別を行なうことができる。
が行なわれた状態を考える。すなわち、第12A図におい
てキュー9のアドレス2から命令が供給された場合を考
える。この場合、第12B図に示すように、次のサイクル
におけるアドレスは、 scope next=queue top in となる。この状態では、未発行の命令のみでキュー9が
満たされている。この状態では、次のサイクルにおける
命令書込を禁止する必要がある。この状態をも合わせて
第3の状態(REVERSE状態)とよぶ。したがって、第3
の状態(REVERSE状態)の条件は、 scope≧queue top と表わせる。このキュー9の状態を信号queue stateに
よりモニタすることにより、前述のロジックqueue ful
lの論理動作を通して、キュー9に空き領域があるか否
かの判別を行なうことができる。
このキューステイトロジック50が実現する論理動作を
第13図に一覧にして示す。以下、キューステイトロジッ
ク50の動作について説明する。
第13図に一覧にして示す。以下、キューステイトロジッ
ク50の動作について説明する。
(1) リセット時の初期状態においては、アドレスqu
eue topおよびscopeはキュー9のアドレス0に設定さ
れる。この状態は、キュー9の第1の状態であるが、キ
ュー9へ命令を書込むことができるため、信号queue s
tateは第2の状態に設定される。すなわち、 reset=1ならば、 queue state=NORMAL となる。
eue topおよびscopeはキュー9のアドレス0に設定さ
れる。この状態は、キュー9の第1の状態であるが、キ
ュー9へ命令を書込むことができるため、信号queue s
tateは第2の状態に設定される。すなわち、 reset=1ならば、 queue state=NORMAL となる。
(2) アドレスqueue topが、キュー9のアドレス領
域を一巡し、かつアドレスscopeがまだキュー9のアド
レス領域を一巡しない場合: このとき、第13図の(2)に示すように、キュー9は
第3の状態(REVERSE状態)となる。したがって、 queue top>11==1、かつ scope>11==0のとき、 queue state=REVERSE となる。
域を一巡し、かつアドレスscopeがまだキュー9のアド
レス領域を一巡しない場合: このとき、第13図の(2)に示すように、キュー9は
第3の状態(REVERSE状態)となる。したがって、 queue top>11==1、かつ scope>11==0のとき、 queue state=REVERSE となる。
(3) アドレスscopeがキュー9のアドレス領域を一
巡した場合: この状態では、アドレスscope nextがアドレスqueue
top inを超えることはないので、キュー9は第2の
状態(NORMAL状態)となる。したがって、 scope>11==1ならば、 queue state=NORMAL となる。
巡した場合: この状態では、アドレスscope nextがアドレスqueue
top inを超えることはないので、キュー9は第2の
状態(NORMAL状態)となる。したがって、 scope>11==1ならば、 queue state=NORMAL となる。
(4) 分岐が発生した場合: この状態においては、分岐命令から始まるキュー9の
アドレス領域に次の分岐先命令を格納する必要がある。
したがってこの状態ではアドレスscope nextおよびque
ue top inは等しくされるが、命令の書込を可能とす
るために、キュー9の状態は第2の状態(NORMAL状態)
となる。したがって、 br taken=1ならば、 queue state=NORMAL となる。次に、キュー9の「有効性フラグ」部分に書込
まれるフラグを決定する命令アベールロジック35が実現
する論理について第14図を参照して説明する。
アドレス領域に次の分岐先命令を格納する必要がある。
したがってこの状態ではアドレスscope nextおよびque
ue top inは等しくされるが、命令の書込を可能とす
るために、キュー9の状態は第2の状態(NORMAL状態)
となる。したがって、 br taken=1ならば、 queue state=NORMAL となる。次に、キュー9の「有効性フラグ」部分に書込
まれるフラグを決定する命令アベールロジック35が実現
する論理について第14図を参照して説明する。
第14図は命令アベールロジック35が実現する論理を一
覧にして示す図である。
覧にして示す図である。
(1) 初期状態:reset=1 この状態では、まだキュー9に有効な命令は何ら格納
されていないため、有効性フラグはオフ(0)にされ
る。したがって、 retet=1ならば、 inst avail in=0 となる。
されていないため、有効性フラグはオフ(0)にされ
る。したがって、 retet=1ならば、 inst avail in=0 となる。
(2) 分岐が発生した場合、 この状態では、分岐命令が格納されたアドレスから続
く4エントリの命令の発行を禁止する必要がある。した
がってこの場合には有効性フラグはオフ(0)とする。
したがって、 br taken=1、ならば、 inst avail in=0 となる。
く4エントリの命令の発行を禁止する必要がある。した
がってこの場合には有効性フラグはオフ(0)とする。
したがって、 br taken=1、ならば、 inst avail in=0 となる。
(3) 命令フェッチ要求が出された場合: この状態では、アドレスqueue topから始まる命令の
有効/無効は命令メモリからの命令の供給の有無に対応
する。したがって、 IC fetch L=1、ならば、 inst avail in=IC ready となる。
有効/無効は命令メモリからの命令の供給の有無に対応
する。したがって、 IC fetch L=1、ならば、 inst avail in=IC ready となる。
(4) 命令到着待ち状態の場合: この状態は、そのサイクルでの命令フェッチ要求の有
無にかかわらず生じる。このときも、アドレルqueue t
opから始まる命令の有効/無効は命令メモリからの命令
供給の有無に対応する。したがって、 IC miss L=1、ならば、 inst avail in=IC ready となる。
無にかかわらず生じる。このときも、アドレルqueue t
opから始まる命令の有効/無効は命令メモリからの命令
供給の有無に対応する。したがって、 IC miss L=1、ならば、 inst avail in=IC ready となる。
(5) 上述の4状態のいずれの状態でもない場合: この状態においては、アドレスqueue topから始まる
4エントリに書込まれる命令は要求する命令ではないた
め、有効性フラグはオフとされる。したがって、 else,inst avail in=0 となる。
4エントリに書込まれる命令は要求する命令ではないた
め、有効性フラグはオフとされる。したがって、 else,inst avail in=0 となる。
第15図はキュー初期化ロジック36の実現する論理を一
覧にして示す図である。以下、第15図を参照してキュー
初期化ロジック36の論理動作について説明する。ここ
で、キューの初期状態(第1の状態)とは、キューのリ
セット状態、分岐命令が発生した状態、および命令待ち
状態のいずれかの状態を示す。すなわち、キュー9に必
要とされる命令が書込まれていない状態を表わしてい
る。
覧にして示す図である。以下、第15図を参照してキュー
初期化ロジック36の論理動作について説明する。ここ
で、キューの初期状態(第1の状態)とは、キューのリ
セット状態、分岐命令が発生した状態、および命令待ち
状態のいずれかの状態を示す。すなわち、キュー9に必
要とされる命令が書込まれていない状態を表わしてい
る。
(1) リセット状態: この状態においては、まだキュー9には何ら命令は書
込まれていないため。キュー9は初期状態にある。した
がって、 reset=1、ならば queue init state=1 となる。
込まれていないため。キュー9は初期状態にある。した
がって、 reset=1、ならば queue init state=1 となる。
(2) 分岐が発生した場合: この状態においては、キュー9は分岐先命令を格納す
る必要があるが、この命令は、まだキュー9に書込まれ
ていないため、キュー9は初期状態にある。したがっ
て、 br taken=1、ならば、 queue init state=1、 となる。
る必要があるが、この命令は、まだキュー9に書込まれ
ていないため、キュー9は初期状態にある。したがっ
て、 br taken=1、ならば、 queue init state=1、 となる。
(3) 命令フェッチ要求が出されても命令メモリから
命令が供給されない場合: この状態においてはキュー9は命令待ち状態となるた
め、キュー9は初期状態となる。したがって、 IC fetch L=1、かつ IC ready=0、ならば、 queue init state=1、 となる。
命令が供給されない場合: この状態においてはキュー9は命令待ち状態となるた
め、キュー9は初期状態となる。したがって、 IC fetch L=1、かつ IC ready=0、ならば、 queue init state=1、 となる。
(4) 命令フェッチ要求が出されかつ命令メモリから
命令が供給された場合: この状態においてはキュー9には所望の必要とされる
命令が書込まれたことにより、キュー9は初期状態では
ない。したがって、 IC fetch L=1、かつ IC ready=1、ならば、 queue init state=0、 となる。
命令が供給された場合: この状態においてはキュー9には所望の必要とされる
命令が書込まれたことにより、キュー9は初期状態では
ない。したがって、 IC fetch L=1、かつ IC ready=1、ならば、 queue init state=0、 となる。
(5) キュー9が命令待ち状態にあり、かつ命令メモ
リから命令が供給されない場合: この状態では、キュー9はフェッチ要求した命令の到
着を待っている。したがって、キュー9は初期状態にあ
る。したがって、 IC miss L=1、かつ IC ready=0、ならば queue init state=1 となる。
リから命令が供給されない場合: この状態では、キュー9はフェッチ要求した命令の到
着を待っている。したがって、キュー9は初期状態にあ
る。したがって、 IC miss L=1、かつ IC ready=0、ならば queue init state=1 となる。
(6) キュー9が命令待ち状態にありかつ命令メモリ
が命令を供給した場合: この状態では、キュー9にはフェッチ要求した命令が
書込まれたため、キュー9は初期状態ではなくなる。し
たがって、 IC miss L=1、かつ IC ready=1ならば、 queue init state=0 となる。
が命令を供給した場合: この状態では、キュー9にはフェッチ要求した命令が
書込まれたため、キュー9は初期状態ではなくなる。し
たがって、 IC miss L=1、かつ IC ready=1ならば、 queue init state=0 となる。
(7) リセット状態になく、分岐発生状態でもなく、
命令フェッチ要求を行なっておらず、また命令待ち合わ
せ状態でもない場合: この状態においては、キュー9は命令メモリからの命
令の供給の有無にかかわらず、キュー9は次のサイクル
の状態では、そのときの状態を保持すべき状態にあり、
またすなわち、第6図に示すようにアドレスqueue top
は同一アドレスを続いて示す必要がある。したがって、 reset=0、かつbr taken−0、かつ IC fetch L=0かつIC miss L=0、ならば、 queue init state=queue init state L となる。
命令フェッチ要求を行なっておらず、また命令待ち合わ
せ状態でもない場合: この状態においては、キュー9は命令メモリからの命
令の供給の有無にかかわらず、キュー9は次のサイクル
の状態では、そのときの状態を保持すべき状態にあり、
またすなわち、第6図に示すようにアドレスqueue top
は同一アドレスを続いて示す必要がある。したがって、 reset=0、かつbr taken−0、かつ IC fetch L=0かつIC miss L=0、ならば、 queue init state=queue init state L となる。
なおロジック30ないし36および50が実現する論理を一
欄にして示しているが、これらの論理を実現するための
具体的構成は当業者であれば容易に作成することができ
るであろう。
欄にして示しているが、これらの論理を実現するための
具体的構成は当業者であれば容易に作成することができ
るであろう。
命令デコーダ26は、Lラッチ回路14〜16から与えられ
るアドレスID PC L、命令ID IR Lおよび有効性フ
ラグID inst avail Lをデコードし、並列処理可能
な命令を検出し、該命令を対応の機能ユニットへ転送す
るとともに、信号br teken、データissued inst cou
ntおよびbranch inst entryを発生する。
るアドレスID PC L、命令ID IR Lおよび有効性フ
ラグID inst avail Lをデコードし、並列処理可能
な命令を検出し、該命令を対応の機能ユニットへ転送す
るとともに、信号br teken、データissued inst cou
ntおよびbranch inst entryを発生する。
この第1図に示す回路構成は1サイクルですべて所望
の動作を実行する。分岐発生時において、分岐命令と同
時に命令デコーダ26に与えられた命令のうち分岐命令以
後の命令については、デコード動作を行なっても機能ユ
ニットへの発行を停止する構成であってもよく、また機
能ユニットへその命令を与える一方そのサイクルにおけ
る機能ユニットの動作を禁止する構成であってもよい。
次に、各ロジック30ないし36および50の動作について図
面を参照して説明する。
の動作を実行する。分岐発生時において、分岐命令と同
時に命令デコーダ26に与えられた命令のうち分岐命令以
後の命令については、デコード動作を行なっても機能ユ
ニットへの発行を停止する構成であってもよく、また機
能ユニットへその命令を与える一方そのサイクルにおけ
る機能ユニットの動作を禁止する構成であってもよい。
次に、各ロジック30ないし36および50の動作について図
面を参照して説明する。
第16図は第3図に示すキュー、queue topおよびscop
eの基本的な動きに対応する各ロジックの動作を示す信
号波形図である。第16図には、各サイクルと第3図に示
す各ステップとの対応関係を合わせて示す。また、各サ
イクルの初めはクロック信号Tにより決定される。この
信号波形図においてサイクルの中間でロジックの出力の
変化は、クロック信号Lに応答して生じている。
eの基本的な動きに対応する各ロジックの動作を示す信
号波形図である。第16図には、各サイクルと第3図に示
す各ステップとの対応関係を合わせて示す。また、各サ
イクルの初めはクロック信号Tにより決定される。この
信号波形図においてサイクルの中間でロジックの出力の
変化は、クロック信号Lに応答して生じている。
(1) サイクル0および1: このサイクルはリセット信号resetが“1"にあり、キ
ュー9は初期状態にある。したがって、信号queue ini
t stateがオン(1)、アドレスqueue topおよびscop
eは0であり、また有効性フラグinst avail inは0で
ある。
ュー9は初期状態にある。したがって、信号queue ini
t stateがオン(1)、アドレスqueue topおよびscop
eは0であり、また有効性フラグinst avail inは0で
ある。
また、リセット状態においては、命令メモリに対する
フェッチ要求は行なわれないため、命令フェッチ要求フ
ラグIC fetchはオフ(0)である。また、キュー9は
リセット状態においては空き領域が十分に存在するた
め、信号queue availは空き領域があることを示すため
“1"である。
フェッチ要求は行なわれないため、命令フェッチ要求フ
ラグIC fetchはオフ(0)である。また、キュー9は
リセット状態においては空き領域が十分に存在するた
め、信号queue availは空き領域があることを示すため
“1"である。
(2) サイクル2: このサイクル2においてリセット信号resetが“0"と
なり、リセットが解除される。このリセットの解除はサ
イクルの中途で行なわれており、各ロジックの出力状態
はサイクル1と同様である。
なり、リセットが解除される。このリセットの解除はサ
イクルの中途で行なわれており、各ロジックの出力状態
はサイクル1と同様である。
(3) サイクル3: このサイクルにおいては、命令フェッチロジック32か
ら命令フェッチ要求IC fetchをオン状態とする。これ
により命令メモリに対する命令フェッチ要求が行なわれ
る。この発行された命令フェッチ要求に対して命令メモ
リから命令が供給される。命令メモリからは命令供給を
示す信号IC readyがオン状態となる。このオン状態のI
C readyに応答して、命令アベールロジック35からの出
力される有効性フラグinst avail inがオン状態とな
る。このとき、キュー初期状態フラグqueue init sta
teはオン状態にあり、キュー9が初期状態にあることを
示している。
ら命令フェッチ要求IC fetchをオン状態とする。これ
により命令メモリに対する命令フェッチ要求が行なわれ
る。この発行された命令フェッチ要求に対して命令メモ
リから命令が供給される。命令メモリからは命令供給を
示す信号IC readyがオン状態となる。このオン状態のI
C readyに応答して、命令アベールロジック35からの出
力される有効性フラグinst avail inがオン状態とな
る。このとき、キュー初期状態フラグqueue init sta
teはオン状態にあり、キュー9が初期状態にあることを
示している。
(4) サイクル4: 信号IC fetchおよびIC readyがともにオン状態とな
ったことにより、キュー9の初期状態が解除され、信号
queue init stateがオフ(0)とされ、キュー9に対
する命令等の書込が実行される。すなわち、アドレスqu
eue topが示すアドレス0からの領域に命令メモリから
供給された命令IC dateおよび命令フェッチステージか
ら伝達された各命令の論理アドレスIF PC Lおよび命
令アベールロジック35からの有効性フラグ部inst avai
l inが書込まれる。
ったことにより、キュー9の初期状態が解除され、信号
queue init stateがオフ(0)とされ、キュー9に対
する命令等の書込が実行される。すなわち、アドレスqu
eue topが示すアドレス0からの領域に命令メモリから
供給された命令IC dateおよび命令フェッチステージか
ら伝達された各命令の論理アドレスIF PC Lおよび命
令アベールロジック35からの有効性フラグ部inst avai
l inが書込まれる。
またこのときアドレスscopeから始まるアドレス0に
書込まれた命令およびアドレスおよび有効性フラグが読
出され、ラッチ回路14ないし16へ与えられる。このラッ
チ回路14ないし16へ与えられたデータはクロック信号L
に応答して命令デコーダ26へ与えられてそこで解読され
る。その結果、サイクル4において2つの命令が並列処
理可能であるとして対応の機能ブロックに発行される。
これにより、命令デコーダ26からは発行命令数が2であ
ることを示す信号issued inst countが発生され、ス
コープネクストロジック31へ与えられる。アドレスscop
e nextは2となる。また、アドレスqueue topは4を
加算され、4となる。
書込まれた命令およびアドレスおよび有効性フラグが読
出され、ラッチ回路14ないし16へ与えられる。このラッ
チ回路14ないし16へ与えられたデータはクロック信号L
に応答して命令デコーダ26へ与えられてそこで解読され
る。その結果、サイクル4において2つの命令が並列処
理可能であるとして対応の機能ブロックに発行される。
これにより、命令デコーダ26からは発行命令数が2であ
ることを示す信号issued inst countが発生され、ス
コープネクストロジック31へ与えられる。アドレスscop
e nextは2となる。また、アドレスqueue topは4を
加算され、4となる。
(5) サイクル5: このサイクルにおいては、アドレスqueue topはアド
レス4を示しており、またアドレスscopeはアドレス2
を示している。サイクル4と同様に命令メモリから命令
が供給され、アドレス4ないし7に命令が書込まれる。
このとき同時に、キュー9からアドレス2からの命令が
読出され、ラッチ回路14ないし16を介して命令デコーダ
26へ与えられる。命令デコーダ26からは1つの命令が機
能ユニットへ発行される。したがって、スコープネクス
トロジック31から出力されるアドレスscopeは3とな
る。また、キュートップロジック30から出力されるアド
レスqueue top inは8となる。
レス4を示しており、またアドレスscopeはアドレス2
を示している。サイクル4と同様に命令メモリから命令
が供給され、アドレス4ないし7に命令が書込まれる。
このとき同時に、キュー9からアドレス2からの命令が
読出され、ラッチ回路14ないし16を介して命令デコーダ
26へ与えられる。命令デコーダ26からは1つの命令が機
能ユニットへ発行される。したがって、スコープネクス
トロジック31から出力されるアドレスscopeは3とな
る。また、キュートップロジック30から出力されるアド
レスqueue top inは8となる。
(6) サイクル6: このサイクル6においてもサイクル4と同様に命令メ
モリから命令が供給される。これにより、キュー9のア
ドレス8ないし11に命令が書込まれる。
モリから命令が供給される。これにより、キュー9のア
ドレス8ないし11に命令が書込まれる。
一方、命令デコーダ26からは機能ユニットへ発行され
る命令が存在しなかったため、発行命令数0を示す信号
issued inst countが発生されスコープネクストロジ
ック31へ与えられる。
る命令が存在しなかったため、発行命令数0を示す信号
issued inst countが発生されスコープネクストロジ
ック31へ与えられる。
キュートップロジック30からの次のサイクルのアドレ
スqueue top inはアドレス0を示す。スコープネクス
トロジック31から出力されるアドレスscope nextは3
である。このとき、キュー9のアドレス3には未発行の
命令が残る。したがって、キューアベールロジック34
は、そこに含まめるキューフルロジックの機能によりキ
ュー9に空き領域がないことを示すために、信号queue
availをオフ(0)に設定する。これにより、次のサ
イクルにおけるキュー9への命令の書込が禁止される。
スqueue top inはアドレス0を示す。スコープネクス
トロジック31から出力されるアドレスscope nextは3
である。このとき、キュー9のアドレス3には未発行の
命令が残る。したがって、キューアベールロジック34
は、そこに含まめるキューフルロジックの機能によりキ
ュー9に空き領域がないことを示すために、信号queue
availをオフ(0)に設定する。これにより、次のサ
イクルにおけるキュー9への命令の書込が禁止される。
(7) サイクル7: このサイクルにおいては、キュー9のアドレス3から
命令が読出され、命令デコーダ26から3つの命令が発行
される。これにより、スコープネクストロジック31から
出力されるアドレスscope nextは6となる。アドレスq
ueue top inは、そのとき信号queue availがオフ状
態であったため変更せず0である。このとき、アドレス
scope nextが6であり、一方アドレスqueue top in
が0であり、キュー9に空き領域が生じたため、キュー
アベールロジック34からの出力信号queue availはオン
となり、次のサイクルにおけるキュー9への命令の書込
が許可される。
命令が読出され、命令デコーダ26から3つの命令が発行
される。これにより、スコープネクストロジック31から
出力されるアドレスscope nextは6となる。アドレスq
ueue top inは、そのとき信号queue availがオフ状
態であったため変更せず0である。このとき、アドレス
scope nextが6であり、一方アドレスqueue top in
が0であり、キュー9に空き領域が生じたため、キュー
アベールロジック34からの出力信号queue availはオン
となり、次のサイクルにおけるキュー9への命令の書込
が許可される。
(8) サイクル8: アドレスqueue topはサイクル7と同様0であるが、
キュー9は命令を書込むことができるため(queue ava
ilはオン状態)、キュー9のアドレス0ないし3の領域
に命令が書込まれる。このとき、アドレスscopeは6で
あり、キュー9はアドレス6を示しており、このキュー
9のアドレス6からの命令が命令デコーダ26へ与えられ
る。
キュー9は命令を書込むことができるため(queue ava
ilはオン状態)、キュー9のアドレス0ないし3の領域
に命令が書込まれる。このとき、アドレスscopeは6で
あり、キュー9はアドレス6を示しており、このキュー
9のアドレス6からの命令が命令デコーダ26へ与えられ
る。
なお、このとき、命令フェッチ要求IC fetchが連続
して発行されるため、サイクル7とサイクル8とで命令
メモリから与えられる命令の内容が異なることも考えら
れる。これは、キューアベールロジック34からの信号qu
eue availを命令フェッチステージへ与え、この信号qu
eue availがオフの場合には、命令フェッチステージに
含まれるプログラムカウンタ(IF PC)のカウンタ動作
を禁止し、サイクル7とサイクル8とで命令メモリの同
一の内容が与えられるように構成すれば、同一命令を命
令メモリから与えることができる。
して発行されるため、サイクル7とサイクル8とで命令
メモリから与えられる命令の内容が異なることも考えら
れる。これは、キューアベールロジック34からの信号qu
eue availを命令フェッチステージへ与え、この信号qu
eue availがオフの場合には、命令フェッチステージに
含まれるプログラムカウンタ(IF PC)のカウンタ動作
を禁止し、サイクル7とサイクル8とで命令メモリの同
一の内容が与えられるように構成すれば、同一命令を命
令メモリから与えることができる。
なお、各ロジック30ないし36および50は与えられた信
号を論理処理しているだけであり、クロック信号Tまた
はLとの同期動作は行なってはいない。
号を論理処理しているだけであり、クロック信号Tまた
はLとの同期動作は行なってはいない。
第17図は、第4図に示す分岐発生時における各ロジッ
クの動作を示す信号波形図である。第17図において第4
図の各ステップが各サイクルに対応づけて示される。以
下、第17図を参照して分岐発生時におけるキュー、queu
e topおよびscopeの動きについて説明する。
クの動作を示す信号波形図である。第17図において第4
図の各ステップが各サイクルに対応づけて示される。以
下、第17図を参照して分岐発生時におけるキュー、queu
e topおよびscopeの動きについて説明する。
(1) サイクル0: アドレスqueue topは10であり、アドレスscopeは2
である。したがってキュー9には命令8、9、10および
11がアドレス10、11、0および1に書込まれる。一方、
キュー9のアドレス2ないし5の命令0ないし3が読出
される。このサイクル0において、キュー9のアドレス
4に格納されていた分岐命令23により分岐が発生した場
合を想定する。この場合、信号br takenがオン(1)
となる。この分岐が生じたことにより、命令アベールロ
ジック35からの有効フラグinst avail inはオフ
(0)となる。
である。したがってキュー9には命令8、9、10および
11がアドレス10、11、0および1に書込まれる。一方、
キュー9のアドレス2ないし5の命令0ないし3が読出
される。このサイクル0において、キュー9のアドレス
4に格納されていた分岐命令23により分岐が発生した場
合を想定する。この場合、信号br takenがオン(1)
となる。この分岐が生じたことにより、命令アベールロ
ジック35からの有効フラグinst avail inはオフ
(0)となる。
また、この分岐発生により、キュートップロジック30
から出力されるアドレスqueue top inは分岐命令2が
格納されていたアドレスbranch inst entryに従って
4となり、また同様に、スコープネクストロジック31か
ら出力されるアドレスscope nextも4となる。
から出力されるアドレスqueue top inは分岐命令2が
格納されていたアドレスbranch inst entryに従って
4となり、また同様に、スコープネクストロジック31か
ら出力されるアドレスscope nextも4となる。
またキュー初期化状態ロジック36の出力queue init
stateもこの分岐発生により初期状態(第1の状態)
を示すために1となる。また、キューアベールロジック
34の出力へはこの分岐発生によりキューステイトロジッ
ク50からNORMAL状態を示す信号が与えられ、信号queue
availは1のままである。
stateもこの分岐発生により初期状態(第1の状態)
を示すために1となる。また、キューアベールロジック
34の出力へはこの分岐発生によりキューステイトロジッ
ク50からNORMAL状態を示す信号が与えられ、信号queue
availは1のままである。
(2) サイクル1: このサイクルにおいては、アドレスqueue topおよび
scopeはともに4に設定され、またキュー9のアドレス
4ないし7の有効性フラグに0が書込まれる。この分岐
が発生した場合には、分岐先命令のアドレスがこのサイ
クルで命令フェッチステージから命令メモリへ与えら
れ、分岐先命令はその次のサイクルに命令メモリから供
給される。したがって、この分岐先命令はこのサイクル
ではキュー9には書込まれない。
scopeはともに4に設定され、またキュー9のアドレス
4ないし7の有効性フラグに0が書込まれる。この分岐
が発生した場合には、分岐先命令のアドレスがこのサイ
クルで命令フェッチステージから命令メモリへ与えら
れ、分岐先命令はその次のサイクルに命令メモリから供
給される。したがって、この分岐先命令はこのサイクル
ではキュー9には書込まれない。
このサイクル1においては、アドレス4から始まる命
令は命令デコーダ26へ与えられるが、この命令内容は機
能ユニットへ発行/実行してはならないものである。こ
のため、命令デコーダ26は、関連の有効性フラグinst
availがオフ状態となるためその発行を行なわない。
令は命令デコーダ26へ与えられるが、この命令内容は機
能ユニットへ発行/実行してはならないものである。こ
のため、命令デコーダ26は、関連の有効性フラグinst
availがオフ状態となるためその発行を行なわない。
さらに、キュー初期化ロジック36からの出力信号queu
e init stateはオン(1)であるため、キュートップ
ロジック30およびスコープネクストロジック31から出力
されるアドレスqueue top inおよびscope nextは4
を保持する。またこのサイクルにおいては分岐は生じな
いため、命令デコーダ26からの信号br takenはオフと
なる。これにより、命令アベールロジック35からの有効
性フラグinst avail inはオンとなる。
e init stateはオン(1)であるため、キュートップ
ロジック30およびスコープネクストロジック31から出力
されるアドレスqueue top inおよびscope nextは4
を保持する。またこのサイクルにおいては分岐は生じな
いため、命令デコーダ26からの信号br takenはオフと
なる。これにより、命令アベールロジック35からの有効
性フラグinst avail inはオンとなる。
(3) サイクル2: このサイクルにおいては、分岐先命令が供給され、キ
ュー9に格納されるとともに関連の有効性フラグinst
avail inもオンとなる。このときアドレス4から始ま
る命令すなわち分岐先命令が命令デコーダ26へ与えられ
デコードされる。このサイクルにおいては、信号queue
init stateはオフとされているため、その処理内容
に応じてアドレスqueue topおよびscopeはそれぞれ変
更される。ここで、サイクル2においては、信号IC re
adyがオンのため、サイクル2において分岐先命令が供
給されていることを示している。
ュー9に格納されるとともに関連の有効性フラグinst
avail inもオンとなる。このときアドレス4から始ま
る命令すなわち分岐先命令が命令デコーダ26へ与えられ
デコードされる。このサイクルにおいては、信号queue
init stateはオフとされているため、その処理内容
に応じてアドレスqueue topおよびscopeはそれぞれ変
更される。ここで、サイクル2においては、信号IC re
adyがオンのため、サイクル2において分岐先命令が供
給されていることを示している。
第18図は第5図に示す動作状態における各ロジックの
動作を示す信号波形図である。以下、第18図を参照し
て、発生された命令フェッチ要求に対し命令メモリから
命令が供給されない場合の動作について説明する。な
お、第18図において第5図に示すステップも合わせて各
サイクルに対応づけて示されている。
動作を示す信号波形図である。以下、第18図を参照し
て、発生された命令フェッチ要求に対し命令メモリから
命令が供給されない場合の動作について説明する。な
お、第18図において第5図に示すステップも合わせて各
サイクルに対応づけて示されている。
(1) サイクル0: このサイクルにおいてアドレスqueue topが0、アド
レスscopeが6である。このサイクル0において発生さ
れた命令フェッチ要求(IC fetchがオン)に対し、命
令メモリから命令が供給されない場合を想定する。この
とき、命令メモリからの信号IC readyはオフとなり、
また命令メモリへのアクセスを禁止するため、信号IC
busyはオンとなる。このオフ状態の信号IC readyに応
答して有効性フラグinst avail iがオンからオフ状
態へ変わる。
レスscopeが6である。このサイクル0において発生さ
れた命令フェッチ要求(IC fetchがオン)に対し、命
令メモリから命令が供給されない場合を想定する。この
とき、命令メモリからの信号IC readyはオフとなり、
また命令メモリへのアクセスを禁止するため、信号IC
busyはオンとなる。このオフ状態の信号IC readyに応
答して有効性フラグinst avail iがオンからオフ状
態へ変わる。
(2) サイクル1: このサイクルにおいては、サイクル0において、IC
fetchが1でありかつIC readyが0のため、信号IC mi
ssが1となり、キュー9が命令待ち状態にあることを示
す。またキュー初期化ロジック36からの出力queue ini
t stateは、サイクル0において、命令要求が発生され
ても命令供給がされなかったことに応答して“1"となり
キュー9が初期状態(第1の状態であり命令待ち状態)
に設定され、アドレスqueue topの変更が禁止される。
このサイクルにおいては、アドレス4から始まるキュー
9の領域にはオフ(0)の有効性フラグinst avail i
nが書込まれ、該領域に格納された命令の発行/実行が
禁止される。
fetchが1でありかつIC readyが0のため、信号IC mi
ssが1となり、キュー9が命令待ち状態にあることを示
す。またキュー初期化ロジック36からの出力queue ini
t stateは、サイクル0において、命令要求が発生され
ても命令供給がされなかったことに応答して“1"となり
キュー9が初期状態(第1の状態であり命令待ち状態)
に設定され、アドレスqueue topの変更が禁止される。
このサイクルにおいては、アドレス4から始まるキュー
9の領域にはオフ(0)の有効性フラグinst avail i
nが書込まれ、該領域に格納された命令の発行/実行が
禁止される。
一方、アドレスscopeが示すアドレスキューからの命
令は命令デコーダ26へ与えられ、2つの命令が発行さ
れ、次のサイクルにおけるアドレスscope nextは11に
変更される。
令は命令デコーダ26へ与えられ、2つの命令が発行さ
れ、次のサイクルにおけるアドレスscope nextは11に
変更される。
(3) サイクル2: この状態においても待ち状態であり、IC fetchはオ
フ、信号IC missはオン、および信号queue init sta
teはオン状態である。この状態においては、アドレス4
から始まる4エントリ領域に命令無効を示すフラグinst
avail inが書込まれる。
フ、信号IC missはオン、および信号queue init sta
teはオン状態である。この状態においては、アドレス4
から始まる4エントリ領域に命令無効を示すフラグinst
avail inが書込まれる。
一方、アドレスscopeから始まる命令は読出され、命
令デコーダ26へ与えられ、2つの命令が発行され、次の
サイクルにおける書込先頭アドレスscope nextは1に
変更される。
令デコーダ26へ与えられ、2つの命令が発行され、次の
サイクルにおける書込先頭アドレスscope nextは1に
変更される。
このサイクル2において、命令メモリから命令が供給
されたとする。このとき、信号IC readyがオン状態と
なり、信号IC busyはオフ状態となる。これに応答し
て、有効性フラグinst avail inはオン状態へ移行す
る。この状態により、キュー9は命令待ち状態が解除さ
れる。
されたとする。このとき、信号IC readyがオン状態と
なり、信号IC busyはオフ状態となる。これに応答し
て、有効性フラグinst avail inはオン状態へ移行す
る。この状態により、キュー9は命令待ち状態が解除さ
れる。
(4) サイクル3:このサイクルにおいては、命令メモ
リから到達した命令がアドレスqueue topが示す4から
始まる領域に登録され、またその対応の有効性フラグin
st avail inも1に設定される。このとき、アドレスs
copeが示すアドレス位置からの命令に対する命令デコー
ダ26による機能ユニットへの発行が行なわれる。このサ
イクル3においてはキュー9は初期状態から解除された
ため、初期化状態信号queue init stateはオフとさ
れ、アドレスqueue topの変更が再開される。また、信
号IC fetchもオン状態とされ、命令フェッチ要求も再
開される。
リから到達した命令がアドレスqueue topが示す4から
始まる領域に登録され、またその対応の有効性フラグin
st avail inも1に設定される。このとき、アドレスs
copeが示すアドレス位置からの命令に対する命令デコー
ダ26による機能ユニットへの発行が行なわれる。このサ
イクル3においてはキュー9は初期状態から解除された
ため、初期化状態信号queue init stateはオフとさ
れ、アドレスqueue topの変更が再開される。また、信
号IC fetchもオン状態とされ、命令フェッチ要求も再
開される。
上述のように、複数の命令をそのアドレスおよび有効
性フラグとともに同時に書込かつ読出を行なうことので
きるキューを設け、このキューの書込/読出ポインタ
を、分岐発生、命令供給状態およびリセット状態の第1
の状態のいずれにあるかおよびキューに空き領域がある
か否かに従ってポインタの制御および命令の機能ユニッ
トへの発行可否を制御するように構成したため、命令デ
コーダへ効率的に命令を供給することができ、高速で命
令を実行することのできるスーパースカラーを得ること
ができる。次に、この複数の命令を同時に書込/読出す
ることのできるキュー9の構成および動作について説明
する。
性フラグとともに同時に書込かつ読出を行なうことので
きるキューを設け、このキューの書込/読出ポインタ
を、分岐発生、命令供給状態およびリセット状態の第1
の状態のいずれにあるかおよびキューに空き領域がある
か否かに従ってポインタの制御および命令の機能ユニッ
トへの発行可否を制御するように構成したため、命令デ
コーダへ効率的に命令を供給することができ、高速で命
令を実行することのできるスーパースカラーを得ること
ができる。次に、この複数の命令を同時に書込/読出す
ることのできるキュー9の構成および動作について説明
する。
第19図は命令メモリ1からフェッチされる命令とキュ
ー9へ書込まれる命令との対応関係を概念的に示す図で
ある。まず、第19図を参照して、キュー9へのアドレス
IF PC L、命令IC dateおよび有効性フラグinst av
ail inの書込動作について説明する。
ー9へ書込まれる命令との対応関係を概念的に示す図で
ある。まず、第19図を参照して、キュー9へのアドレス
IF PC L、命令IC dateおよび有効性フラグinst av
ail inの書込動作について説明する。
命令フェッチステージ2からは命令フェッチ要求IC
fetchに応答して、命令メモリ1のアドレスIF PCが発
生されて命令メモリ1へ与えられる。ここで、分岐発生
信号br takenが偽の場合、すなわち分岐が発生しない
場合には、命令メモリアドレスIF PCの値が、現在のア
ドレスIF PCの次の命令フェッチアドレス(たとえば1
命令が4バイトの場合、4命令同時にフェッチするた
め、現在の命令メモリアドレスIF PCに16(4×4)を
加算した値)が、このメモリフェッチステージ2から命
令メモリ1へ与えられる。一方、分岐発生信号br take
nが真の場合には、この命令フェッチステージが、命令
デコーダ26(図1参照)から与えられる分岐先アドレス
を命令メモリアドレスIF PCとして命令メモリ1へ送出
する。命令メモリ1からはこのアドレスIF PCに従って
4つの命令IC 1、IC 2、IC 3およびIC 4が同時
に読出される。この4つの命令IC 1〜IC 4は並列に
命令IC dataとしてキュー9の命令領域へ与えられる。
fetchに応答して、命令メモリ1のアドレスIF PCが発
生されて命令メモリ1へ与えられる。ここで、分岐発生
信号br takenが偽の場合、すなわち分岐が発生しない
場合には、命令メモリアドレスIF PCの値が、現在のア
ドレスIF PCの次の命令フェッチアドレス(たとえば1
命令が4バイトの場合、4命令同時にフェッチするた
め、現在の命令メモリアドレスIF PCに16(4×4)を
加算した値)が、このメモリフェッチステージ2から命
令メモリ1へ与えられる。一方、分岐発生信号br take
nが真の場合には、この命令フェッチステージが、命令
デコーダ26(図1参照)から与えられる分岐先アドレス
を命令メモリアドレスIF PCとして命令メモリ1へ送出
する。命令メモリ1からはこのアドレスIF PCに従って
4つの命令IC 1、IC 2、IC 3およびIC 4が同時
に読出される。この4つの命令IC 1〜IC 4は並列に
命令IC dataとしてキュー9の命令領域へ与えられる。
一方、命令フェッチステージ2からはこのアドレスIF
PC Lがキュー9へ供給される。このアドレスIF PC
Lは4つの命令IC 1〜IC 4の各アドレスを示して
おり、これらのアドレスが並列にキュー9のアドレス領
域へ与えられる。この命令は任意の長さであってもよい
が、キュー9のエントリの効率的利用からは命令メモリ
1からの命令の長さはすべて同一の長さに設定される。
PC Lがキュー9へ供給される。このアドレスIF PC
Lは4つの命令IC 1〜IC 4の各アドレスを示して
おり、これらのアドレスが並列にキュー9のアドレス領
域へ与えられる。この命令は任意の長さであってもよい
が、キュー9のエントリの効率的利用からは命令メモリ
1からの命令の長さはすべて同一の長さに設定される。
命令メモリ1から発生される信号IC busyは第1図に
示す命令フェッチロジック32へ与えられる。命令メモリ
1から発生される信号IC readyは命令アベールロジッ
ク35へ与えられる。この命令アベールロジック35へ与え
られる他のロジックからの信号は図示していない。
示す命令フェッチロジック32へ与えられる。命令メモリ
1から発生される信号IC readyは命令アベールロジッ
ク35へ与えられる。この命令アベールロジック35へ与え
られる他のロジックからの信号は図示していない。
キュー9は、これらのアドレスIF PC L、命令IC
dataおよび有効性フラグinst avail inを受け、書込
イネーブル信号wen(これは第1図のキューアベールロ
ジック34から発生される)に応答して、アドレスqueue
topが示すアドレスから始まる4つのエントリ領域へ
同時にこれらを書込む。
dataおよび有効性フラグinst avail inを受け、書込
イネーブル信号wen(これは第1図のキューアベールロ
ジック34から発生される)に応答して、アドレスqueue
topが示すアドレスから始まる4つのエントリ領域へ
同時にこれらを書込む。
このときまた、アドレスscopeから始まる4つのエン
トリの内容が読出される。このアドレスIF PC Lは、
クロック信号Lに応答して確定状態になるものではある
が、クロック信号Tに応答して発生されるものであって
もよい。
トリの内容が読出される。このアドレスIF PC Lは、
クロック信号Lに応答して確定状態になるものではある
が、クロック信号Tに応答して発生されるものであって
もよい。
キュー9に書込まれた命令およびアドレスが同時にま
た読出される場合もあり、このキュー9から読出された
命令およびアドレスは、クロック信号Lに応答して保持
動作を実行するラッチ回路14および15で保持されるた
め、このキュー9の書込データはラッチ回路14および15
の保持動作に確定していれば良い。したがって、このア
ドレスIF PC Lが同時にまた読出されるときにはこの
ラッチ回路のラッチタイミングを少し遅らせておけば、
アドレスIF PC Lがクロック信号Lに応答して確定状
態とされるものであっても何ら誤動作は生じない。
た読出される場合もあり、このキュー9から読出された
命令およびアドレスは、クロック信号Lに応答して保持
動作を実行するラッチ回路14および15で保持されるた
め、このキュー9の書込データはラッチ回路14および15
の保持動作に確定していれば良い。したがって、このア
ドレスIF PC Lが同時にまた読出されるときにはこの
ラッチ回路のラッチタイミングを少し遅らせておけば、
アドレスIF PC Lがクロック信号Lに応答して確定状
態とされるものであっても何ら誤動作は生じない。
第20図はキュー9の命令領域へ与えられる命令IC da
taの配置を示す図である。第20図を参照して、同時に読
出される4つの命令IC 1〜IC 4の各々は、各ビット
ごとに集められる。すなわち、命令IC dataの第0ビッ
ト領域には4つの命令IC 1〜IC 4の第0ビットIC10
〜IC40が順次格納され、以下この順番で第32ビットまで
同時に配置される。ここで、命令IC−1〜IC−4はすべ
て32ビット構成の場合が一例として示されている。
taの配置を示す図である。第20図を参照して、同時に読
出される4つの命令IC 1〜IC 4の各々は、各ビット
ごとに集められる。すなわち、命令IC dataの第0ビッ
ト領域には4つの命令IC 1〜IC 4の第0ビットIC10
〜IC40が順次格納され、以下この順番で第32ビットまで
同時に配置される。ここで、命令IC−1〜IC−4はすべ
て32ビット構成の場合が一例として示されている。
第21図はキュー9のアドレス領域へ伝達される命令ア
ドレスIF PC Lの配置を示す図であり、命令IC data
と同様各命令ごとにビットが順番に配置される。
ドレスIF PC Lの配置を示す図であり、命令IC data
と同様各命令ごとにビットが順番に配置される。
第22図は有効性フラグの配置を示す図である。この有
効性フラグinst avail inは4エントリに対応して4
ビット構成とされ、すべて同一の値をとる。
効性フラグinst avail inは4エントリに対応して4
ビット構成とされ、すべて同一の値をとる。
第23図はキューの全体の構成を概略的に示す図であ
る。第23図においてキュー9は、アドレスqueue topを
デコードし、4エントリを選択するための信号を発生す
る書込デコーダWRDと、アドレスscopeをデコードし、命
令を読出すべき4エントリを選択する信号を発生する読
出デコーダRDDと、各々が1エントリ領域を構成し、ア
ドレス、命令および有効性フラグを格納する並列に設け
られたエントリ記憶装置92−0〜92−11を含む。
る。第23図においてキュー9は、アドレスqueue topを
デコードし、4エントリを選択するための信号を発生す
る書込デコーダWRDと、アドレスscopeをデコードし、命
令を読出すべき4エントリを選択する信号を発生する読
出デコーダRDDと、各々が1エントリ領域を構成し、ア
ドレス、命令および有効性フラグを格納する並列に設け
られたエントリ記憶装置92−0〜92−11を含む。
書込デコーダWRDおよび読出デコーダRDDは、それぞれ
与えられたアドレスqueue topおよびscopeに応答して
その変化に従ってデコード動作を実行する。すなわちこ
れらの書込デコーダWRDおよびRDDは非同期デコード動作
をスタティックに行なっており、特にこれらの書込デコ
ードおよびWRDおよび読出デコーダRDDの動作タイミング
を規定する制御信号は用いられてはいない。
与えられたアドレスqueue topおよびscopeに応答して
その変化に従ってデコード動作を実行する。すなわちこ
れらの書込デコーダWRDおよびRDDは非同期デコード動作
をスタティックに行なっており、特にこれらの書込デコ
ードおよびWRDおよび読出デコーダRDDの動作タイミング
を規定する制御信号は用いられてはいない。
書込デコーダWRDには12本の書込ワード線WD0〜WD11が
接続され、アドレスqueue topに従ってこれらの12本の
書込ワード線WD0〜WD11のうちの1本を選択状態とされ
る。読出デコーダRDDも12本の読出ワード線RD0〜RD11を
有しており、アドレスscopeに応答してこれらの12本の
読出ワード線RD0〜RD11のうちの1本を選択状態とす
る。後に詳細に説明するが、1つの書込ワード線WDi
(i=0〜11)および1本の読出ワード線RDiにはそれ
ぞれ連続して隣接する4つのエントリ記憶装置が接続さ
れる。したがって、1本の書込ワード線または読出ワー
ド線が選択状態とされることにより、同時に4つのエン
トリ記憶装置が選択状態とされる。
接続され、アドレスqueue topに従ってこれらの12本の
書込ワード線WD0〜WD11のうちの1本を選択状態とされ
る。読出デコーダRDDも12本の読出ワード線RD0〜RD11を
有しており、アドレスscopeに応答してこれらの12本の
読出ワード線RD0〜RD11のうちの1本を選択状態とす
る。後に詳細に説明するが、1つの書込ワード線WDi
(i=0〜11)および1本の読出ワード線RDiにはそれ
ぞれ連続して隣接する4つのエントリ記憶装置が接続さ
れる。したがって、1本の書込ワード線または読出ワー
ド線が選択状態とされることにより、同時に4つのエン
トリ記憶装置が選択状態とされる。
エントリ記憶装置92−0〜92−11の各々は、データ書
込ポートを選択するための書込アクセスゲートw0、w1、
w2、およびw3と、データ読出経路を選択するための読出
アクセスゲートr0、r1、r2およびr3を含む。この書込ア
クセスゲートwj(j=0〜3)および読出アクセスゲー
トr0〜r3のいずれか1つを選択することによりデータの
書込/読出ポートが選択される。4つの隣接するエント
リ記憶装置の書込アクセスゲートの異なる書込アクセス
ゲートが1本の書込ワード線WDiに接続される。同様
に、4つの隣接するエントリ記憶装置の異なる読出アク
セスゲートが1本の読出ワード線RDiに接続される。
込ポートを選択するための書込アクセスゲートw0、w1、
w2、およびw3と、データ読出経路を選択するための読出
アクセスゲートr0、r1、r2およびr3を含む。この書込ア
クセスゲートwj(j=0〜3)および読出アクセスゲー
トr0〜r3のいずれか1つを選択することによりデータの
書込/読出ポートが選択される。4つの隣接するエント
リ記憶装置の書込アクセスゲートの異なる書込アクセス
ゲートが1本の書込ワード線WDiに接続される。同様
に、4つの隣接するエントリ記憶装置の異なる読出アク
セスゲートが1本の読出ワード線RDiに接続される。
たとえば、読出ワード線WD0には記憶装置92−0の書
込アクセスゲートw0、記憶装置92−1の書込アクセスゲ
ートw1、記憶装置92−2の書込アクセスゲートw2、およ
び記憶装置92−3の書込アクセスゲートw3が接続され
る。また、読出ワード線RD0には、記憶装置92−0の読
出アクセスゲートr0、記憶装置92−1の読出アクセスゲ
ートr1、記憶装置92−2の読出アクセスゲートr2および
記憶装置92−3の読出アクセスゲートr3が接続される。
込アクセスゲートw0、記憶装置92−1の書込アクセスゲ
ートw1、記憶装置92−2の書込アクセスゲートw2、およ
び記憶装置92−3の書込アクセスゲートw3が接続され
る。また、読出ワード線RD0には、記憶装置92−0の読
出アクセスゲートr0、記憶装置92−1の読出アクセスゲ
ートr1、記憶装置92−2の読出アクセスゲートr2および
記憶装置92−3の読出アクセスゲートr3が接続される。
エントリ記憶装置92−0〜92−11の各々は、書込デー
タ入力ポートiwi、書込データ出力ポートiwo、読出デー
タ入力ポートiri、読出データ出力ポートiro、書込アド
レス入力ポートpwi、書込アドレス出力ポートpwo、読出
アドレス出力ポートpro、読出アドレス入力ポートpri、
書込有効性フラグ入力ポートawi、書込有効性フラグ出
力ポートawo、読出有効性フラグ出力ポートaro、および
読出有効性フラグ入力ポートariを含む。
タ入力ポートiwi、書込データ出力ポートiwo、読出デー
タ入力ポートiri、読出データ出力ポートiro、書込アド
レス入力ポートpwi、書込アドレス出力ポートpwo、読出
アドレス出力ポートpro、読出アドレス入力ポートpri、
書込有効性フラグ入力ポートawi、書込有効性フラグ出
力ポートawo、読出有効性フラグ出力ポートaro、および
読出有効性フラグ入力ポートariを含む。
記憶装置92−0〜92−11の書込命令入出力ポートiwi
およびiwoはすべて共通の命令書込ビット線IWBに接続さ
れ、読出命令入出力ポートiroおよびiriは共通に命令読
出ビット線IRBへ接続される。
およびiwoはすべて共通の命令書込ビット線IWBに接続さ
れ、読出命令入出力ポートiroおよびiriは共通に命令読
出ビット線IRBへ接続される。
記憶装置92−0〜92−11の書込アドレス出力ポートpw
iおよびpwoはアドレス書込ビット線PWBに接続され、記
憶装置92−0〜92−11の読出アドレス入出力ポートpro
およびpriはアドレス読出ビット線PRBに接続される。
iおよびpwoはアドレス書込ビット線PWBに接続され、記
憶装置92−0〜92−11の読出アドレス入出力ポートpro
およびpriはアドレス読出ビット線PRBに接続される。
記憶装置92−0〜92−11の書込有効性フラグ入出力ポ
ートawiおよびawoは有効性フラグ書込ビット線AWBに接
続され、読出有効性フラグ入出力ポートariおよびaroは
有効性フラグ読出ビット線ARBに接続される。
ートawiおよびawoは有効性フラグ書込ビット線AWBに接
続され、読出有効性フラグ入出力ポートariおよびaroは
有効性フラグ読出ビット線ARBに接続される。
命令書込ビット線IWB、命令読出ビット線IRB、アドレ
ス書込ビット線PWB、およびアドレス読出ビット線PRBは
4命令分のデータを伝達することのできるビット幅を有
しており、本実施例においては、4・32=128のビット
幅を有している。有効性フラグ書込ビット線AWBおよび
有効性フラグ読出ビット線ARBは4ビットの幅を有して
いる。これらの読出ビット線および書込ビット線上に4
命令分の内容が同時に伝達される。
ス書込ビット線PWB、およびアドレス読出ビット線PRBは
4命令分のデータを伝達することのできるビット幅を有
しており、本実施例においては、4・32=128のビット
幅を有している。有効性フラグ書込ビット線AWBおよび
有効性フラグ読出ビット線ARBは4ビットの幅を有して
いる。これらの読出ビット線および書込ビット線上に4
命令分の内容が同時に伝達される。
記憶装置92−0〜92−11の各々の入力および出力ポー
トはともに4つのポートを有しており、この4つのポー
トのうちの1つが書込アクセスゲートw0〜w3および読出
アクセスゲートr0〜r3より選択される。したがって、同
時に選択状態とされる4つの記憶装置は互いに異なる入
力ポートおよび出力ポートが選択状態とされる。
トはともに4つのポートを有しており、この4つのポー
トのうちの1つが書込アクセスゲートw0〜w3および読出
アクセスゲートr0〜r3より選択される。したがって、同
時に選択状態とされる4つの記憶装置は互いに異なる入
力ポートおよび出力ポートが選択状態とされる。
情報の入出力を行なうために、第1図に示すキューア
ベールロジック34から発生される書込イネーブル信号we
nに応答して所定のタイミングで書込パルスwpを発生す
る書込パルス発生器WPGと、書込パルス発生器WPGからの
書込パルスWBに応答してオン状態となる、トライステー
トバッファBF1、BF2およびBF3が設けられる。このトラ
イステートバッファBF1〜BF3は書込パルスWPが発生され
ない場合その出力状態をハイインピーダンス状態とす
る。
ベールロジック34から発生される書込イネーブル信号we
nに応答して所定のタイミングで書込パルスwpを発生す
る書込パルス発生器WPGと、書込パルス発生器WPGからの
書込パルスWBに応答してオン状態となる、トライステー
トバッファBF1、BF2およびBF3が設けられる。このトラ
イステートバッファBF1〜BF3は書込パルスWPが発生され
ない場合その出力状態をハイインピーダンス状態とす
る。
トライステートバッファBF1は、命令メモリからの命
令IC dataを受け、命令書込ビット線IWB上へ伝達す
る。トライステートバッファBF2は、アドレスIF PC
Lをアドレス書込ビット線PWB上へ伝達する。トライス
テートバッファBF3は有効性フラグinst avail inを有
効性フラグ書込ビット線AWB上へ伝達する。命令読出ビ
ット線IRBからは命令instが出力され、ラッチ回路14へ
伝達される。読出ビット線PRBからはアドレスPCが読出
され、Lラッチ回路15へ伝達される。読出ビット線ARB
上の有効性フラグinst availはLラッチ回路16へ接続
される。
令IC dataを受け、命令書込ビット線IWB上へ伝達す
る。トライステートバッファBF2は、アドレスIF PC
Lをアドレス書込ビット線PWB上へ伝達する。トライス
テートバッファBF3は有効性フラグinst avail inを有
効性フラグ書込ビット線AWB上へ伝達する。命令読出ビ
ット線IRBからは命令instが出力され、ラッチ回路14へ
伝達される。読出ビット線PRBからはアドレスPCが読出
され、Lラッチ回路15へ伝達される。読出ビット線ARB
上の有効性フラグinst availはLラッチ回路16へ接続
される。
次にこの第23図に示すキューの動作について簡単に説
明する。
明する。
まずデータ書込動作について説明する。アドレスqueu
e topに従って、書込デコーダWRDにより1本の書込ワ
ード線WDiが選択状態とされる。これにより、連続して
隣接する4つのエントリ記憶装置が選択されるとともに
それぞれの異なる入力ポートが選択状態とされる。これ
により、4つのエントリ記憶装置へ同時に書込を行なう
ことが可能となる。次いで、キュー9に空領域が存在す
るとキューアベールロジック34からの書込イネーブル信
号wenがオン状態になり、書込パルス発生器WPGから所定
のタイミングで書込パルスWPが発生され、トライステー
トバッファBF1ないしBF3が導通状態とされ書込データが
選択されたエントリ記憶装置の対応のポートへ伝達さ
れ、4エントリに命令、アドレスおよび有効性フラグが
同時に書込まれる。
e topに従って、書込デコーダWRDにより1本の書込ワ
ード線WDiが選択状態とされる。これにより、連続して
隣接する4つのエントリ記憶装置が選択されるとともに
それぞれの異なる入力ポートが選択状態とされる。これ
により、4つのエントリ記憶装置へ同時に書込を行なう
ことが可能となる。次いで、キュー9に空領域が存在す
るとキューアベールロジック34からの書込イネーブル信
号wenがオン状態になり、書込パルス発生器WPGから所定
のタイミングで書込パルスWPが発生され、トライステー
トバッファBF1ないしBF3が導通状態とされ書込データが
選択されたエントリ記憶装置の対応のポートへ伝達さ
れ、4エントリに命令、アドレスおよび有効性フラグが
同時に書込まれる。
読出動作も同様であり、アドレスscopeが与えられる
と読出デコーダRDDは1本の読出ワード線RDiを選択し、
4つのエントリ記憶装置の異なる読出アクセスゲートを
選択する。これにより4つのエントリ記憶装置から同時
に4つのエントリ内容を読出すことができる。この読出
されたデータは読出ビット線IRB、PRBおよびARBを介し
て対応のラッチ回路14、15および16へ伝達される。
と読出デコーダRDDは1本の読出ワード線RDiを選択し、
4つのエントリ記憶装置の異なる読出アクセスゲートを
選択する。これにより4つのエントリ記憶装置から同時
に4つのエントリ内容を読出すことができる。この読出
されたデータは読出ビット線IRB、PRBおよびARBを介し
て対応のラッチ回路14、15および16へ伝達される。
第24図は1個のエントリ記憶装置の構成を示す図であ
る。第24図において1個のエントリ記憶装置92を総称的
に示す。命令記憶装置93−1、アドレス記憶装置93−2
および有効性フラグ記憶装置94を含む。命令記憶装置93
−1およびアドレス記憶装置93−2は同一の構成を有
し、書込ポート選択ゲートwbと、読出ポート選択ゲート
rbと、書込アクセスゲートw0〜w3および読出アクセスゲ
ートr0〜r3を含む。ゲートwb,rbの<3:0>は入出力ポー
トが、ともに0ないし3の4つあることを示しており、
また<31:0>は32ビットのデータが、1つの選択された
ポートから出力されることを示している。したがって、
命令書込ビット線IWBおよび読出ビット線IRB、アドレス
書込ビット線PWBおよびアドレス読出ビット線PRBの128
ビットの信号線のうち32ビットの信号線が1つの記憶装
置により使用される。どの32ビットの信号線が使用され
るかはアクセスゲートwb0〜wb3およびr0〜r3の選択によ
り決定される。
る。第24図において1個のエントリ記憶装置92を総称的
に示す。命令記憶装置93−1、アドレス記憶装置93−2
および有効性フラグ記憶装置94を含む。命令記憶装置93
−1およびアドレス記憶装置93−2は同一の構成を有
し、書込ポート選択ゲートwbと、読出ポート選択ゲート
rbと、書込アクセスゲートw0〜w3および読出アクセスゲ
ートr0〜r3を含む。ゲートwb,rbの<3:0>は入出力ポー
トが、ともに0ないし3の4つあることを示しており、
また<31:0>は32ビットのデータが、1つの選択された
ポートから出力されることを示している。したがって、
命令書込ビット線IWBおよび読出ビット線IRB、アドレス
書込ビット線PWBおよびアドレス読出ビット線PRBの128
ビットの信号線のうち32ビットの信号線が1つの記憶装
置により使用される。どの32ビットの信号線が使用され
るかはアクセスゲートwb0〜wb3およびr0〜r3の選択によ
り決定される。
有効性フラグ記憶装置94は書込ポート選択ゲートwbお
よび読出ポート選択ゲートrbと、書込アクセスゲートw0
〜w3および読出アクセスゲートr0〜r3を含む。この書込
ポート選択ゲートwbは、ポートを0ないし3の4つ有し
ており、1つの選択ポートから1ビットの有効性フラグ
が入出力される。すなわち、アクセスゲートw0〜w3およ
びr0〜r3を選択することにより、フラグ書込ビット線お
よびフラグ読出ビット線AWBおよびARBの4ビットのうち
1ビットが、1つの有効性フラグ記憶装置94により使用
される。
よび読出ポート選択ゲートrbと、書込アクセスゲートw0
〜w3および読出アクセスゲートr0〜r3を含む。この書込
ポート選択ゲートwbは、ポートを0ないし3の4つ有し
ており、1つの選択ポートから1ビットの有効性フラグ
が入出力される。すなわち、アクセスゲートw0〜w3およ
びr0〜r3を選択することにより、フラグ書込ビット線お
よびフラグ読出ビット線AWBおよびARBの4ビットのうち
1ビットが、1つの有効性フラグ記憶装置94により使用
される。
第25図は命令記憶装置93−1およびアドレス記憶装置
93−2の構成をより詳細に示す図である。この記憶装置
93−1および93−2は同一の構成を有しており、記憶装
置93を総称的に示す。第25図を参照して、命令記憶装置
93−1およびアドレス記憶装置93−2はともに、32ビッ
トのビット記憶装置95−0〜95−31を含む。このビット
記憶装置95−0〜95−31の各々は、命令またはアドレス
の第0ビットないし第31ビットをそれぞれ記憶する。ビ
ット記憶装置95−0〜95−31の各々は、書込ポート選択
ゲートwb0、wb1、wb2およびwb3と、読出ポート選択ゲー
トrb0、rb1、rb2およびrb3と、書込アクセスゲートw0〜
w3および読出アクセスゲートr0〜r3を含む。このゲート
wb1〜wb3およびrb0〜rb3の選択がアクセスゲートw0〜w3
およびr0ないしr3の選択により決定される。このビット
記憶装置95−0〜95−31の書込アクセスゲートw0〜w3に
はそれぞれ同一のアクセスゲート選択信号w0〜w3(信号
線とその上に伝達される信号とを同一の符号で示す)が
伝達され、また読出アクセスゲートr0〜r3には同一の読
出ゲート選択信号r0〜r3が伝達される。これにより、命
令またはアドレスの32ビットが同時に選択される。
93−2の構成をより詳細に示す図である。この記憶装置
93−1および93−2は同一の構成を有しており、記憶装
置93を総称的に示す。第25図を参照して、命令記憶装置
93−1およびアドレス記憶装置93−2はともに、32ビッ
トのビット記憶装置95−0〜95−31を含む。このビット
記憶装置95−0〜95−31の各々は、命令またはアドレス
の第0ビットないし第31ビットをそれぞれ記憶する。ビ
ット記憶装置95−0〜95−31の各々は、書込ポート選択
ゲートwb0、wb1、wb2およびwb3と、読出ポート選択ゲー
トrb0、rb1、rb2およびrb3と、書込アクセスゲートw0〜
w3および読出アクセスゲートr0〜r3を含む。このゲート
wb1〜wb3およびrb0〜rb3の選択がアクセスゲートw0〜w3
およびr0ないしr3の選択により決定される。このビット
記憶装置95−0〜95−31の書込アクセスゲートw0〜w3に
はそれぞれ同一のアクセスゲート選択信号w0〜w3(信号
線とその上に伝達される信号とを同一の符号で示す)が
伝達され、また読出アクセスゲートr0〜r3には同一の読
出ゲート選択信号r0〜r3が伝達される。これにより、命
令またはアドレスの32ビットが同時に選択される。
有効性フラグ記憶装置94はこのビット記憶装置95−0
〜95−31と同一の構成を有している。
〜95−31と同一の構成を有している。
第26図はビット記憶装置および有効性フラグ記憶装置
の具体的構成の一例を示す図である。第26図において、
ビット記憶装置(および有効性フラグ記憶装置)は、書
込ポート選択トランジスタGT1〜GT4と、読出ポート選択
トランジスタRT1〜RT4と、1ビットのデータを記憶する
記憶素子MEを含む。記憶素子MEは、反並行または交差結
合された2つのインバータIV1およびIV2を含む。すなわ
ち記憶素子MEはインバータラッチにより構成される。
の具体的構成の一例を示す図である。第26図において、
ビット記憶装置(および有効性フラグ記憶装置)は、書
込ポート選択トランジスタGT1〜GT4と、読出ポート選択
トランジスタRT1〜RT4と、1ビットのデータを記憶する
記憶素子MEを含む。記憶素子MEは、反並行または交差結
合された2つのインバータIV1およびIV2を含む。すなわ
ち記憶素子MEはインバータラッチにより構成される。
ゼートトランジスタGT1はポート選択信号w0をそのゲ
ートに受け、メモリMEをポートwb0に接続する。ゲート
トランジスタGT2は、ポート選択信号w1に応答して記憶
素子MEをポートwb1に接続する。ゲートトランジスタGT3
は、ポート選択信号w2に応答し記憶素子MEをポートwb2
に接続する。ゲートトランジスタGT4はポート選択信号w
3に応答して記憶素子MEをポートwb3に接続する。
ートに受け、メモリMEをポートwb0に接続する。ゲート
トランジスタGT2は、ポート選択信号w1に応答して記憶
素子MEをポートwb1に接続する。ゲートトランジスタGT3
は、ポート選択信号w2に応答し記憶素子MEをポートwb2
に接続する。ゲートトランジスタGT4はポート選択信号w
3に応答して記憶素子MEをポートwb3に接続する。
読出経路も同様であり、トランジスタRT1〜RT4はそれ
ぞれ読出ポート選択信号r0〜r3に応答して記憶素子MEを
ポートrb0〜rb3へそれぞれ接続する。
ぞれ読出ポート選択信号r0〜r3に応答して記憶素子MEを
ポートrb0〜rb3へそれぞれ接続する。
このビット記憶装置および有効性フラグ記憶装置の異
なるエントリ間の接続形態を第27図に示す。第27図に示
すように、このポートwb0〜wb3およびrb0〜rb3はそれぞ
れ同一ビットの記憶装置に対して共通に設けられてお
り、また有効性フラグ記憶装置においてはすべての記憶
装置に対して共通に設けられる。
なるエントリ間の接続形態を第27図に示す。第27図に示
すように、このポートwb0〜wb3およびrb0〜rb3はそれぞ
れ同一ビットの記憶装置に対して共通に設けられてお
り、また有効性フラグ記憶装置においてはすべての記憶
装置に対して共通に設けられる。
ビット記憶装置(有効性フラグ記憶装置)の動作につ
いて説明する。書込ワード選択信号WRDにより1本の書
込ワード線が選択された場合、この第26図の構成におい
て1個のゲートトランジスタGTiがオン状態となり、記
憶素子MEがポートwb0〜wb3のいずれかに接続される。こ
れにより、選択されたポートを介して記憶素子MEへのデ
ータの書込が行なわれる。データ読出も同様であり、読
出デコーダRDDにより1個の読出ワード線が選択され、
応じてトランジスタRT1〜RT4のいずれかがオン状態とな
り、記憶素子MEがポートrb0〜rb3のいずれかに接続され
る。これによりデータの読出が行なわれる。
いて説明する。書込ワード選択信号WRDにより1本の書
込ワード線が選択された場合、この第26図の構成におい
て1個のゲートトランジスタGTiがオン状態となり、記
憶素子MEがポートwb0〜wb3のいずれかに接続される。こ
れにより、選択されたポートを介して記憶素子MEへのデ
ータの書込が行なわれる。データ読出も同様であり、読
出デコーダRDDにより1個の読出ワード線が選択され、
応じてトランジスタRT1〜RT4のいずれかがオン状態とな
り、記憶素子MEがポートrb0〜rb3のいずれかに接続され
る。これによりデータの読出が行なわれる。
第27図に示すように、1本の書込ワード線WDiを選択
状態とすることにより、隣接するエントリ記憶装置にお
いては異なるポートが選択される。たとえば第27図にお
いて記憶素子ME1は選択信号WDiによりポートwb0に接続
され、記憶装置ME2がポートwb1に接続される。これによ
り、4つの異なる命令の各ビットを4つの異なる記憶素
子へ同時に書込むことができる。データ読出も同様であ
る。1本の読出ワード線RDiを選択状態とすることによ
り、記憶素子ME1,ME2,…が異なるポートへ接続され、同
時に4つのエントリの内容がそれぞれ異なるポートに伝
達されるため、同時に4つの命令、アドレスおよび有効
性フラグを読出すことができる。
状態とすることにより、隣接するエントリ記憶装置にお
いては異なるポートが選択される。たとえば第27図にお
いて記憶素子ME1は選択信号WDiによりポートwb0に接続
され、記憶装置ME2がポートwb1に接続される。これによ
り、4つの異なる命令の各ビットを4つの異なる記憶素
子へ同時に書込むことができる。データ読出も同様であ
る。1本の読出ワード線RDiを選択状態とすることによ
り、記憶素子ME1,ME2,…が異なるポートへ接続され、同
時に4つのエントリの内容がそれぞれ異なるポートに伝
達されるため、同時に4つの命令、アドレスおよび有効
性フラグを読出すことができる。
次に、このキューにおけるデータ読出時の動作につい
て第28図を参照して説明する。
て第28図を参照して説明する。
この第28図に示す動作波形図においては、命令読出ビ
ット線IRB、アドレス読出ビット線PRBおよび有効性フラ
グ読出ビット線ARBが読出ビット線RBとして代表的に示
されている。アドレスscopeが与えられると、読出デコ
ーダRDDの出力は、このアドレスscopeの変化状態に従っ
て変化し、ある時間が経過するとその出力状態が確定
し、1本の読出ワード線RDが選択状態となる。この第28
図に示す動作波形図においては、すべての読出ワード線
の信号波形図がすべて示されており、選択状態および非
選択状態の読出ワード線の信号状態が示されている。こ
の選択ワード線(たとえばRD0)上の信号電位が確定す
ると、エントリ記憶装置の読出アクセスゲートが選択状
態とされる。この場合、記憶装置92−0〜記憶装置92−
3のアクセスゲートr0、r1、r2およびr3がそれぞれ選択
され、それぞれの異なるデータ読出ポートが選択状態と
され、対応のポート上にデータが読出される。この後、
トランジスタRT1〜RT4により読出ビット線RB上の信号状
態が確定する。この読出ビット線RB上の信号電位はLラ
ッチ回路14〜16へ与えられる。
ット線IRB、アドレス読出ビット線PRBおよび有効性フラ
グ読出ビット線ARBが読出ビット線RBとして代表的に示
されている。アドレスscopeが与えられると、読出デコ
ーダRDDの出力は、このアドレスscopeの変化状態に従っ
て変化し、ある時間が経過するとその出力状態が確定
し、1本の読出ワード線RDが選択状態となる。この第28
図に示す動作波形図においては、すべての読出ワード線
の信号波形図がすべて示されており、選択状態および非
選択状態の読出ワード線の信号状態が示されている。こ
の選択ワード線(たとえばRD0)上の信号電位が確定す
ると、エントリ記憶装置の読出アクセスゲートが選択状
態とされる。この場合、記憶装置92−0〜記憶装置92−
3のアクセスゲートr0、r1、r2およびr3がそれぞれ選択
され、それぞれの異なるデータ読出ポートが選択状態と
され、対応のポート上にデータが読出される。この後、
トランジスタRT1〜RT4により読出ビット線RB上の信号状
態が確定する。この読出ビット線RB上の信号電位はLラ
ッチ回路14〜16へ与えられる。
第29図はデータ書込時の動作を示す信号波形図であ
る。次にデータ書込動作について第29図を参照して説明
する。
る。次にデータ書込動作について第29図を参照して説明
する。
アドレスqueue topが与えられると、書込デコーダWR
Dは、このqueue topに従ってデコード動作を開始し、
ある時間が経過した後、書込ワード線WD上の信号電位が
確定状態となる。これにより、データ書込を受けるべき
4つのエントリが選択され、かつこの4つのエントリ記
憶装置のそれぞれの異なるポートがアクセスゲートを介
して選択状態とされる。この書込ワード線WDの信号電位
が確定した後、キュー9に空領域があれば書込パルス発
生器WPGより所定のタイミングで書込パルスWPが発生さ
れ、トライステートバッファBF1〜BF3が導通状態とな
り、命令IC data、アドレスIF PC Lおよび有効性フ
ラグinst avail inを書込ビット線WB上へ伝達する。
この書込ビット線上のデータはそれぞれ選択されたエン
トリ(4つ)へそれぞれ同時に書込まれる。
Dは、このqueue topに従ってデコード動作を開始し、
ある時間が経過した後、書込ワード線WD上の信号電位が
確定状態となる。これにより、データ書込を受けるべき
4つのエントリが選択され、かつこの4つのエントリ記
憶装置のそれぞれの異なるポートがアクセスゲートを介
して選択状態とされる。この書込ワード線WDの信号電位
が確定した後、キュー9に空領域があれば書込パルス発
生器WPGより所定のタイミングで書込パルスWPが発生さ
れ、トライステートバッファBF1〜BF3が導通状態とな
り、命令IC data、アドレスIF PC Lおよび有効性フ
ラグinst avail inを書込ビット線WB上へ伝達する。
この書込ビット線上のデータはそれぞれ選択されたエン
トリ(4つ)へそれぞれ同時に書込まれる。
書込んだデータを同時に読出すためには、書込パルス
WPが発生され、書込ビット線WB上のデータが確定状態と
なった後に読出されることになるが、この場合、書込ビ
ット線上に書込まれたデータが再びこのエントリ記憶装
置を介してLラッチ回路14〜16へ伝達されたあとにこれ
らのLラッチ回路がリッチ動作を実行する構成とされ
る。
WPが発生され、書込ビット線WB上のデータが確定状態と
なった後に読出されることになるが、この場合、書込ビ
ット線上に書込まれたデータが再びこのエントリ記憶装
置を介してLラッチ回路14〜16へ伝達されたあとにこれ
らのLラッチ回路がリッチ動作を実行する構成とされ
る。
また第26図および第27図に示す記憶素子はインバータ
ラッチを用いており、このままでは、書込データと読出
データが反転状態となることが考えられる。これは、ト
ライステートバッファBF1〜BF3をインバータ構成とすれ
ば容易に対処することができ、またこのインバータは任
意の箇所に設置することができる。
ラッチを用いており、このままでは、書込データと読出
データが反転状態となることが考えられる。これは、ト
ライステートバッファBF1〜BF3をインバータ構成とすれ
ば容易に対処することができ、またこのインバータは任
意の箇所に設置することができる。
上述の構成により、アドレスqueue topから始まる4
つのアドレス領域に同時にそれぞれ異なるデータ(アド
レス、命令および有効性フラグ)を書込むことができ、
またアドレスscopeから始まる4つのアドレス領域に格
納されたエントリの内容を同時に読出すことができる。
つのアドレス領域に同時にそれぞれ異なるデータ(アド
レス、命令および有効性フラグ)を書込むことができ、
またアドレスscopeから始まる4つのアドレス領域に格
納されたエントリの内容を同時に読出すことができる。
なお、上述の記憶装置においては、記憶素子としてイ
ンバータラッチ構成の記憶素子が用いられているが、こ
の記憶素子の構成はどのようなものであってもよく、デ
ータを保持するものであればどのようなものであっても
よい。
ンバータラッチ構成の記憶素子が用いられているが、こ
の記憶素子の構成はどのようなものであってもよく、デ
ータを保持するものであればどのようなものであっても
よい。
また、記憶装置の構成は上述のエントリ記憶装置の構
成に限定されず、データ書込ポートおよび読出ポートが
4つ設けられており、それぞれ隣接する4つのエントリ
記憶装置の異なる書込/読出ポートが選択状態とされる
構成であればどのように構成であってもよい。
成に限定されず、データ書込ポートおよび読出ポートが
4つ設けられており、それぞれ隣接する4つのエントリ
記憶装置の異なる書込/読出ポートが選択状態とされる
構成であればどのように構成であってもよい。
さらに、上記実施例においては、命令およびアドレス
はともに32ビットの場合および同時に読出される命令が
4つの場合について説明したが、これらのアドレスおよ
び命令長および同時にキューにおいて書込/読出される
命令の数は任意の数であってもよい。
はともに32ビットの場合および同時に読出される命令が
4つの場合について説明したが、これらのアドレスおよ
び命令長および同時にキューにおいて書込/読出される
命令の数は任意の数であってもよい。
[発明の効果] 以上のように、この発明によれば、デコードステージ
において、命令デコーダ前段に、命令メモリからの命令
と、該命令の有効/無効を示すフラグと、該命令のアド
レスとを1エントリとして複数の命令を同時に格納する
キューを設け、命令メモリから同時に読出される複数の
命令、およびアドレスならびに該命令の有効/無効を示
すフラグを同時にキューに格納し、命令の実行状態、フ
ェッチ状態等に従ってこのキューへの書込/読出を制御
するように構成したため、命令デコーダへ効率的に命令
供給を行なうことができ、処理速度の速い並列処理装置
を得ることができる。
において、命令デコーダ前段に、命令メモリからの命令
と、該命令の有効/無効を示すフラグと、該命令のアド
レスとを1エントリとして複数の命令を同時に格納する
キューを設け、命令メモリから同時に読出される複数の
命令、およびアドレスならびに該命令の有効/無効を示
すフラグを同時にキューに格納し、命令の実行状態、フ
ェッチ状態等に従ってこのキューへの書込/読出を制御
するように構成したため、命令デコーダへ効率的に命令
供給を行なうことができ、処理速度の速い並列処理装置
を得ることができる。
第1図はこの発明の一実施例である並列処理装置の命令
供給ステージの構成を示す図である。第2図は第1図に
示すキューの概念的構成を示す図である。第3図はこの
発明による並列処理装置におけるキューのアドレスの基
本的の動きを示す図である。第4図はこの発明の並列処
理装置におけるキューの書込および読出アドレスおよび
有効性フラグの動きを示す図である。第5図はこの発明
による並列処理装置において命令フェッチ要求が出され
た場合に命令供給が行なわれなかった場合のキューにお
ける書込および読出アドレスと有効性フラグの動きを示
す図である。第6図は第1図に示すキュートップロジッ
クの実現する論理を一覧にして示す図である。第7図は
第1図に示すスコープネクストロジックの実現する論理
を一覧にして示す図である。第8図は第1図に示す命令
フェッチロジックの実現する論理を一覧にして示す図で
ある。第9図は第1図に示す命令ミスロジックが実現す
る論理を一覧にして示す図である。第10A図は第1図に
示すキューアベールロジックの実現する論理を一覧にし
て示す図である。第10B図は第10A図に含まれるキュー・
フルの実現する論理動作を一覧にして示す図である。第
10C図および第10D図は第10B図に示すキュー・フルの論
理動作を説明するための図である。第11A図および第11B
図はキューの第2の状態を説明するための図である。第
12A図および第12B図はキューの第3の状態を説明するた
めの図である。第13図は第1図に示すキューステイトロ
ジックの実現する論理を一覧にして示す図である。第14
図はキューの第1図に示す命令アベールロジックが実現
する論理を一覧にして示す図である。第15図は第1図に
示すキュー初期化状態ロジックが実現する論理を一覧に
して示す図である。第16図は第1図に示すキューが基本
的動きを行なう際の各ロジックの動作を示す信号波形図
である。第17図は分岐発生時における第1図に示す各ロ
ジックの動作を示す信号波形図である。第18図は命令フ
ェッチ要求に対し命令供給が行なわれなかった場合の第
1図に示す各ロジックの動作を示す信号波形図である。
第19図は命令メモリからキューへ与えられる命令および
アドレスならびに有効性フラグの対応関係を概念的に示
す図である。第20図はキューへ与えられる命令の配置形
態の一例を示す図である。第21図はキューへ与えられる
有効アドレスの配置形態の一例を示す図である。第22図
はキューへ与えられる有効性フラグの配置形態の一例を
示す図である。第23図はキューの全体の構成を示す図で
ある。第24図は第23図に示すエントリ記憶装置の構成を
示す図である。第25図は第24図に示す命令記憶装置およ
びアドレス記憶装置の構成を示す図である。第26図は第
25図に示す命令およびアドレス記憶装置および有効性フ
ラグ記憶装置の構成の一例を示す図である。第27図は第
26図に示すビット記憶装置の接続形態を例示する図であ
る。第28図はキューのデータ読出時の動作を示す信号波
形図である。第29図はキューのデータ書込時における動
作を示す信号波形図である。第30図は並列処理装置の概
念的構成を示す図である。第31図は、並列処理装置の一
般的構成を示す図である。第32図は従来の並列処理装置
における命令供給方法を示す図である。第33図は、この
発明が意図する命令供給方式を示す図である。第34図
は、第33図に示す命令供給方式を実現するために考えら
れることのできる命令供給方式を示す図である。第35図
は第34図の命令供給方式を実現するための構成の一例を
示す図である。第36図は並列処理装置において用いられ
る2相クロックを示す図である。 図において、1は命令メモリ、2は命令フェッチステー
ジ、3は命令デコードステージ、9はキュー、30はキュ
ートップロジック、31はスコープネクストロジック、32
は命令フェッチロジック、33は命令ミスロジック、34は
キューアベールロジック、35は命令アベールロジック、
36はキュー初期化状態ロジック、50はキューステイトロ
ジック、92−0〜92−11はエントリ記憶装置、93−1は
命令記憶装置、93−2はアドレス記憶装置、94は有効性
フラグ記憶装置、95−0〜95−31はビット記憶装置、ME
は記憶素子、WRDは書込デコーダ、RDDは読出デコーダ、
WRGは書込パルス発生器、BF1〜BF3はトライステートバ
ッファである。 なお、図中、同一符号は同一または相当部分を示す。
供給ステージの構成を示す図である。第2図は第1図に
示すキューの概念的構成を示す図である。第3図はこの
発明による並列処理装置におけるキューのアドレスの基
本的の動きを示す図である。第4図はこの発明の並列処
理装置におけるキューの書込および読出アドレスおよび
有効性フラグの動きを示す図である。第5図はこの発明
による並列処理装置において命令フェッチ要求が出され
た場合に命令供給が行なわれなかった場合のキューにお
ける書込および読出アドレスと有効性フラグの動きを示
す図である。第6図は第1図に示すキュートップロジッ
クの実現する論理を一覧にして示す図である。第7図は
第1図に示すスコープネクストロジックの実現する論理
を一覧にして示す図である。第8図は第1図に示す命令
フェッチロジックの実現する論理を一覧にして示す図で
ある。第9図は第1図に示す命令ミスロジックが実現す
る論理を一覧にして示す図である。第10A図は第1図に
示すキューアベールロジックの実現する論理を一覧にし
て示す図である。第10B図は第10A図に含まれるキュー・
フルの実現する論理動作を一覧にして示す図である。第
10C図および第10D図は第10B図に示すキュー・フルの論
理動作を説明するための図である。第11A図および第11B
図はキューの第2の状態を説明するための図である。第
12A図および第12B図はキューの第3の状態を説明するた
めの図である。第13図は第1図に示すキューステイトロ
ジックの実現する論理を一覧にして示す図である。第14
図はキューの第1図に示す命令アベールロジックが実現
する論理を一覧にして示す図である。第15図は第1図に
示すキュー初期化状態ロジックが実現する論理を一覧に
して示す図である。第16図は第1図に示すキューが基本
的動きを行なう際の各ロジックの動作を示す信号波形図
である。第17図は分岐発生時における第1図に示す各ロ
ジックの動作を示す信号波形図である。第18図は命令フ
ェッチ要求に対し命令供給が行なわれなかった場合の第
1図に示す各ロジックの動作を示す信号波形図である。
第19図は命令メモリからキューへ与えられる命令および
アドレスならびに有効性フラグの対応関係を概念的に示
す図である。第20図はキューへ与えられる命令の配置形
態の一例を示す図である。第21図はキューへ与えられる
有効アドレスの配置形態の一例を示す図である。第22図
はキューへ与えられる有効性フラグの配置形態の一例を
示す図である。第23図はキューの全体の構成を示す図で
ある。第24図は第23図に示すエントリ記憶装置の構成を
示す図である。第25図は第24図に示す命令記憶装置およ
びアドレス記憶装置の構成を示す図である。第26図は第
25図に示す命令およびアドレス記憶装置および有効性フ
ラグ記憶装置の構成の一例を示す図である。第27図は第
26図に示すビット記憶装置の接続形態を例示する図であ
る。第28図はキューのデータ読出時の動作を示す信号波
形図である。第29図はキューのデータ書込時における動
作を示す信号波形図である。第30図は並列処理装置の概
念的構成を示す図である。第31図は、並列処理装置の一
般的構成を示す図である。第32図は従来の並列処理装置
における命令供給方法を示す図である。第33図は、この
発明が意図する命令供給方式を示す図である。第34図
は、第33図に示す命令供給方式を実現するために考えら
れることのできる命令供給方式を示す図である。第35図
は第34図の命令供給方式を実現するための構成の一例を
示す図である。第36図は並列処理装置において用いられ
る2相クロックを示す図である。 図において、1は命令メモリ、2は命令フェッチステー
ジ、3は命令デコードステージ、9はキュー、30はキュ
ートップロジック、31はスコープネクストロジック、32
は命令フェッチロジック、33は命令ミスロジック、34は
キューアベールロジック、35は命令アベールロジック、
36はキュー初期化状態ロジック、50はキューステイトロ
ジック、92−0〜92−11はエントリ記憶装置、93−1は
命令記憶装置、93−2はアドレス記憶装置、94は有効性
フラグ記憶装置、95−0〜95−31はビット記憶装置、ME
は記憶素子、WRDは書込デコーダ、RDDは読出デコーダ、
WRGは書込パルス発生器、BF1〜BF3はトライステートバ
ッファである。 なお、図中、同一符号は同一または相当部分を示す。
Claims (1)
- 【請求項1】各々が所定の機能を実行する複数の機能ユ
ニットと、命令を格納する命令メモリ装置と、命令フェ
ッチ指示に応答して前記命令メモリ装置から複数の命令
を同時にフェッチする命令フェッチ装置と、該フェッチ
された複数の命令から同時に実行可能な命令を見出し、
該同時実行可能な命令を関連の機能ユニットへ発行する
命令デコード装置とを含む並列処理装置における命令供
給装置であって、前記命令デコード装置は、前記関連の
機能ユニットへ発行した命令数を示す情報と、与えられ
た命令に分岐命令が含まれておりこの分岐命令により分
岐が発生したことを示す分岐発生指示情報とを発生する
手段を含み、 前記命令メモリ装置からの命令の供給待ち状態であるか
否かを示す命令供給有無指示信号と、リセット信号と、
前記分岐発生指示情報とに応答して、命令の有効・無効
を示す有効性フラグを形成する手段、 前記同時にフェッチされた複数の命令と、該同時にフェ
ッチされた複数の命令の前記命令メモリ装置におけるア
ドレスと、前記有効性フラグとを同時に格納する記憶手
段、前記記憶手段は、1エントリが1命令と対応のアド
レスと対応の有効性フラグとからなる複数のエントリ格
納領域を備えかつ、各々に異なる書込エントリが同時に
伝達される複数の入力ポートおよび前記複数の入力ポー
トと別に設けられ、各々に異なる読出エントリが同時に
伝達される複数の出力ポートと、書込キューアドレスお
よび読出キューアドレスにそれぞれ応答して複数のエン
トリを前記複数の入力ポートおよび前記複数の出力ポー
トへ同時にそれぞれ接続する手段とを含み、および 前記命令発行数指示情報、前記分岐発生指示情報、前記
命令供給有無指示信号、および前記リセット指示信号に
応答して、前記書込キューアドレスおよび前記読出キュ
ーアドレスをそれぞれ生成して前記記憶手段へ与えるア
ドレス生成手段を備え、 前記記憶手段から同時に読出された複数のエントリの内
容が前記命令デコード装置へ与えられる、並列処理装置
における命令供給装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2279654A JP2532300B2 (ja) | 1990-10-17 | 1990-10-17 | 並列処理装置における命令供給装置 |
DE4134387A DE4134387C2 (de) | 1990-10-17 | 1991-10-17 | Vorrichtung und Verfahren zum Befehlszuführen in Geräten mit Parallelverarbeitung |
US08/300,235 US5619730A (en) | 1990-10-17 | 1994-09-06 | Pipelining device in a parallel processing apparatus and an instruction supplying method therefor |
US08/800,191 US5930520A (en) | 1990-10-17 | 1997-02-13 | Pipelining device in a parallel processing apparatus and an instruction supplying method therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2279654A JP2532300B2 (ja) | 1990-10-17 | 1990-10-17 | 並列処理装置における命令供給装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04153733A JPH04153733A (ja) | 1992-05-27 |
JP2532300B2 true JP2532300B2 (ja) | 1996-09-11 |
Family
ID=17613996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2279654A Expired - Fee Related JP2532300B2 (ja) | 1990-10-17 | 1990-10-17 | 並列処理装置における命令供給装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US5619730A (ja) |
JP (1) | JP2532300B2 (ja) |
DE (1) | DE4134387C2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994008287A1 (en) * | 1992-09-29 | 1994-04-14 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US6735685B1 (en) * | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
JP3193525B2 (ja) * | 1993-05-31 | 2001-07-30 | キヤノン株式会社 | 情報処理装置 |
DE69424370T2 (de) * | 1993-11-05 | 2001-02-15 | Intergraph Corp., Huntsville | Befehlscachespeicher mit Kreuzschienenschalter |
TW353732B (en) * | 1994-03-31 | 1999-03-01 | Ibm | Processing system and method of operation |
JP3569014B2 (ja) * | 1994-11-25 | 2004-09-22 | 富士通株式会社 | マルチコンテキストをサポートするプロセッサおよび処理方法 |
US6112019A (en) * | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
US6237101B1 (en) * | 1998-08-03 | 2001-05-22 | International Business Machines Corporation | Microprocessor including controller for reduced power consumption and method therefor |
US6263427B1 (en) | 1998-09-04 | 2001-07-17 | Rise Technology Company | Branch prediction mechanism |
US6212611B1 (en) | 1998-11-03 | 2001-04-03 | Intel Corporation | Method and apparatus for providing a pipelined memory controller |
US6542987B1 (en) * | 1999-02-01 | 2003-04-01 | Hewlett-Packard Development Company L.P. | Method and circuits for early detection of a full queue |
US6185672B1 (en) * | 1999-02-19 | 2001-02-06 | Advanced Micro Devices, Inc. | Method and apparatus for instruction queue compression |
FR2846822B1 (fr) * | 2002-10-31 | 2005-03-25 | Mediaflow Inc | Reseau local industriel ou domestique |
US7801120B2 (en) * | 2003-01-13 | 2010-09-21 | Emulex Design & Manufacturing Corporation | Method and system for efficient queue management |
JP4128551B2 (ja) * | 2004-07-29 | 2008-07-30 | 富士通株式会社 | 情報処理装置及びストア命令制御方法 |
US10216520B2 (en) * | 2014-10-06 | 2019-02-26 | Via Technologies, Inc. | Compressing instruction queue for a microprocessor |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3665422A (en) * | 1970-01-26 | 1972-05-23 | Electronic Arrays | Integrated circuit,random access memory |
US3727196A (en) * | 1971-11-29 | 1973-04-10 | Mostek Corp | Dynamic random access memory |
US3953838A (en) * | 1974-12-30 | 1976-04-27 | Burroughs Corporation | FIFO Buffer register memory utilizing a one-shot data transfer system |
US4295193A (en) * | 1979-06-29 | 1981-10-13 | International Business Machines Corporation | Machine for multiple instruction execution |
US4374428A (en) * | 1979-11-05 | 1983-02-15 | Rca Corporation | Expandable FIFO system |
JPS6028015B2 (ja) * | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
US4423482A (en) * | 1981-06-01 | 1983-12-27 | Sperry Corporation | FIFO Register with independent clocking means |
EP0077619B1 (en) * | 1981-10-15 | 1986-02-26 | National Research Development Corporation | Data-packet driven digital computer |
US4521851A (en) * | 1982-10-13 | 1985-06-04 | Honeywell Information Systems Inc. | Central processor |
US4967343A (en) * | 1983-05-18 | 1990-10-30 | International Business Machines Corp. | Pipelined parallel vector processor including parallel configured element processors for processing vector elements in parallel fashion |
US4864543A (en) * | 1987-04-30 | 1989-09-05 | Texas Instruments Incorporated | First-in, first-out memory with counter address pointers for generating multiple memory status flags |
JPS62152043A (ja) * | 1985-12-26 | 1987-07-07 | Nec Corp | 命令コ−ドアクセス制御方式 |
DE3751503T2 (de) * | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
US4837678A (en) * | 1987-04-07 | 1989-06-06 | Culler Glen J | Instruction sequencer for parallel operation of functional units |
US5036454A (en) * | 1987-05-01 | 1991-07-30 | Hewlett-Packard Company | Horizontal computer having register multiconnect for execution of a loop with overlapped code |
JPH07120719B2 (ja) * | 1987-12-02 | 1995-12-20 | 三菱電機株式会社 | 半導体記憶装置 |
US5202967A (en) * | 1988-08-09 | 1993-04-13 | Matsushita Electric Industrial Co., Ltd. | Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5150468A (en) * | 1989-06-30 | 1992-09-22 | Bull Hn Information Systems Inc. | State controlled instruction logic management apparatus included in a pipelined processing unit |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
US5185868A (en) * | 1990-01-16 | 1993-02-09 | Advanced Micro Devices, Inc. | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy |
US5303356A (en) * | 1990-05-04 | 1994-04-12 | International Business Machines Corporation | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag |
US5295249A (en) * | 1990-05-04 | 1994-03-15 | International Business Machines Corporation | Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
-
1990
- 1990-10-17 JP JP2279654A patent/JP2532300B2/ja not_active Expired - Fee Related
-
1991
- 1991-10-17 DE DE4134387A patent/DE4134387C2/de not_active Expired - Fee Related
-
1994
- 1994-09-06 US US08/300,235 patent/US5619730A/en not_active Expired - Fee Related
-
1997
- 1997-02-13 US US08/800,191 patent/US5930520A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE4134387A1 (de) | 1992-04-23 |
US5619730A (en) | 1997-04-08 |
US5930520A (en) | 1999-07-27 |
DE4134387C2 (de) | 1996-05-23 |
JPH04153733A (ja) | 1992-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2532300B2 (ja) | 並列処理装置における命令供給装置 | |
JP2550213B2 (ja) | 並列処理装置および並列処理方法 | |
EP0381471B1 (en) | Method and apparatus for preprocessing multiple instructions in a pipeline processor | |
JP6011194B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US5257359A (en) | Instruction cache buffer with program-flow control | |
WO1995016954A1 (fr) | Circuit de traitement d'instructions dans un systeme informatique | |
JPS61107434A (ja) | デ−タ処理装置 | |
JPH03191461A (ja) | データ処理システム | |
JPH10124391A (ja) | マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法 | |
JP2003196084A (ja) | リードモディファイライトユニットを有するシステム | |
EP1089167A2 (en) | Processor architecture for executing two different fixed-length instruction sets | |
JP2002073330A (ja) | データ処理装置 | |
KR100322149B1 (ko) | 고성능 추론적 스트링/다중 연산 방법 | |
US4992932A (en) | Data processing device with data buffer control | |
JP3400458B2 (ja) | 情報処理装置 | |
US5924120A (en) | Method and apparatus for maximizing utilization of an internal processor bus in the context of external transactions running at speeds fractionally greater than internal transaction times | |
CN112540792A (zh) | 指令处理方法及装置 | |
US6449712B1 (en) | Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions | |
US6134645A (en) | Instruction completion logic distributed among execution units for improving completion efficiency | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
CN112540789B (zh) | 一种指令处理装置、处理器及其处理方法 | |
JP3182591B2 (ja) | マイクロプロセッサ | |
JP3534987B2 (ja) | 情報処理装置 | |
US20070043930A1 (en) | Performance of a data processing apparatus | |
JP5093237B2 (ja) | 命令処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080627 Year of fee payment: 12 |
|
LAPS | Cancellation because of no payment of annual fees |