JP2535252B2 - 並列処理装置 - Google Patents

並列処理装置

Info

Publication number
JP2535252B2
JP2535252B2 JP2279653A JP27965390A JP2535252B2 JP 2535252 B2 JP2535252 B2 JP 2535252B2 JP 2279653 A JP2279653 A JP 2279653A JP 27965390 A JP27965390 A JP 27965390A JP 2535252 B2 JP2535252 B2 JP 2535252B2
Authority
JP
Japan
Prior art keywords
instruction
stage
branch
flag
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2279653A
Other languages
English (en)
Other versions
JPH04153734A (ja
Inventor
秀樹 安藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2279653A priority Critical patent/JP2535252B2/ja
Priority to DE4134392A priority patent/DE4134392C2/de
Publication of JPH04153734A publication Critical patent/JPH04153734A/ja
Priority to US08/310,508 priority patent/US5522084A/en
Application granted granted Critical
Publication of JP2535252B2 publication Critical patent/JP2535252B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards

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つのボルトネックとなっている。このた
め、並列処理を行なうことによりマイクロプロセサの性
能向上を図ることが行なわれている。このような並列処
理を実現する方式の1つにスーパースカラがある。この
スーパースカラタイプのプロセサ(以下、単にスーパー
スカラと称す)は、第13図に示すように、プロセサ内部
のスケジューラ(通常命令デコーダ内に含まれている)
200が、命令ストリーム中の並列性を検出し、並列処理
可能な命令を並列に設けられたパイプライン(機能ユニ
ット)P1、P2およびP3へ供給するものである。すなわ
ち、スーパースカラは以下の特徴をもつコンピュータ
(またはプロセサ)であるといえる。
(1) 命令を複数個同時にフェッチする。
(2) 複数の機能ユニット(パイプライン) を有しており、複数の命令を同時に実行することができ
る。
(3) フェッチされた複数の命令の中から同時に実行
可能な命令を検出し、それらを対応の機能ユニットに供
給する。
第14図はスーパースカラの一般的構成を示す図であ
る。第14図において、スーパースカラは、各々が所定の
機能を実行する複数の機能ユニット4、5、6、および
7と、命令メモリ1から複数の命令を同時にフェッチす
る命令フェッチ(IF)ステージ2と、命令フェッチステ
ージ2によりフェッチされた命令メモリ1からの命令を
同時に受け、それから同時に実行処理可能な命令を検出
して、対応の機能ユニットへ供給する命令デコードステ
ージ3と、演算処理結果等を格納するためのデータメモ
リ8とを含む。
命令メモリ1は、キャッシュメモリおよび外部主メモ
リを一般に含んでおり、プログラム実行に必要な部分を
格納する。
命令フェッチステージ2は、命令メモリ1へ命令ポイ
ンタIPを与え、この命令ポインタIPに対応する複数の命
令を命令メモリ1からフェッチする。
命令デコードステージ3は、命令デコーダおよびパイ
プラインシーケンサ等を含む。命令デコーダは、命令フ
ェッチステージ2によりフェッチされた複数の命令を受
けてデコードする。パイプラインシーケンサ(命令スケ
ジューラ)は、このデコードされた複数の命令のマシン
タイプを識別し、異なるマシンタイプの命令を同時に対
応の機能ユニットへ発行する。マシンタイプは、命令が
どの機能ユニットで処理されるべきかを示す。
機能ユニット4ないし7は、パイプライン化されてお
り、与えられた命令をクロック信号に応答して実行す
る。第14図においては、4つの機能ユニットが一例とし
て示されており、最大4つの命令が並列処理可能であ
る。
機能ユニット4および5は、整数加算などを行なう整
数演算ユニットであり、実行ステージ(EX)および書込
みステージ(マシン状態変更ステージ;WB)を含む。書
込みステージ(WB)は、実行ステージで実行された命令
の処理結果をデータレジスタ(図示せず)へ書込む。
機能ユニット6は、データメモリ8へのアクセス(デ
ータのロードまたはストア)を実行するユニットであ
り、アドレス生成ステージ(ADR)、メモリへのアクセ
ス実行ステージ(MEM)およびデータレジスタ(図示せ
ず)へのデータの書込みステージ(WB)を含む。この機
能ユニット6における書込みステージ(WB)において、
データメモリ8からロードされたデータまたはデータメ
モリ8へストアすべきデータがレジスタへ/から書込み
または読出しされる。
機能ユニット7は、浮動小数点加算などを実行するユ
ニットであり、3段の実行ステージ(EX1、EX2およびEX
3)と、実行結果のデータレジスタ(図示せず)への書
込みステージ(WB)とを含む。浮動小数点数とは、小数
点の位置を一定とせずに、指数と仮数とを用いて表され
た数である。浮動小数点演算は、この浮動小数点数を用
いた演算であり、整数演算などに比べて広範囲の数を演
算することができるが、その処理には整数演算などより
も多くのサイクルが必要とされる。
このスーパースカラにおいては、命令フェッチステー
ジ2および命令デコードステージ3および機能ユニット
(4ないし7)もまたパイプライン化されており、各ス
テージはオーバーラップして動作する。したがって、パ
イプラインに空きが存在しない場合には、前のサイクル
で処理されたデータまたは命令が各ステージへ供給され
る。たとえば、命令デコードステージ3がデコードする
命令は前のサイクルでフェッチされた命令である。
第15図は命令デコードステージの構成を概略的に示す
図である。第15図において、命令デコードステージ3
は、並列に設けられた4つのデコード回路D1〜D4と、デ
コード回路D1〜D4のデコード結果に応答して、並列処理
可能な命令を検出し、この命令を関連の機能ユニットへ
発行するパイプラインシーケンサSCを含む。
デコード回路D1ないしD4は、命令メモリ1から同時に
フェッチされた命令M1ないしM4に対応して設けられ、対
応の命令を解読し、該解読結果をパイプラインシーケン
サSCへ伝達する。この命令デコードステージ3へ供給さ
れる命令FMは、各命令対応にアドレス(命令メモリ1に
おける論理アドレスであり、命令フェッチステージから
供給される)A1〜A4も含む。
パイプラインシーケンサSCはまた、フェッチされた命
令FMに分岐命令が含まれるとき、この分岐命令による分
岐の発生の有無、分岐先アドレスの命令フェッチステー
ジへの設定、分岐命令以降の命令の機能ユニットへの供
給の制御を行なう。次に第14図および第15図を参照して
動作について簡単に説明する。
命令デコードステージ3は、命令フェッチステージ2
へ命令フェッチ要求を出力する。命令フェッチステージ
2は、この命令フェッチ要求に応答して命令ポインタIP
を命令メモリ1へ与え、命令メモリ1からこの命令ポイ
ンタIPに対応する複数の命令をフェッチする。このフェ
ッチされた複数の命令M1〜M4は、命令デコードステージ
3に含まれるデコード回路M1〜M4へ同時に与えられる。
このデコード回路D1〜D4は与えられた複数の命令を同時
にデコードする。
パイプラインシーケンサSCは、このデコード回路D1〜
D4でデコードされた命令から、計算リソースおよびデー
タレジスタが競合しない、並列処理可能な命令を検出
し、この並列処理可能な命令を対応の機能ユニットへ発
行する。
命令を与えられた機能ユニットは、この与えられた命
令に従って処理を並列に実行する。機能ユニット4ない
し7はパイプライン化されており、第14図に示す各実行
ステージおよび書込みステージに従って処理が実行され
る。
また、命令フェッチステージ2および命令デコードス
テージ3および命令実行ステージ(機能ユニット4ない
し7)の動作もパイプライン化されているため、これら
は互いにオーバーラップしながら所定の動作を実行して
いる。
上述のように各ステージおよび機能ユニットの動作を
パイプライン化しかつ複数の機能ユニットで並列に処理
を実行することにより高速で命令を実行することができ
る。
[発明が解決しようとする課題] 上述のように、スーパースカラにおいては、複数の命
令がフェッチされ、かつ同時に複数の命令が実行される
ため、通常のプロセサに比べて処理速度の向上を図るこ
とができる。
たとえば、第14図に示す構成において、同時にフェッ
チされた4つの命令(M1〜M4;第15図参照)が4つの機
能ユニット4ないし7で並列に実行された場合、4クロ
ックサイクルで4命令を処理・実行することができる
(機能ユニット4、5および6のパイプラインが機能ユ
ニット7の処理完了まで待ち合わせ状態となる場合)。
命令スケジューラ(または命令デコードステージに含
まれるパイプラインシーケンサSC)は、効率的に並列処
理が実行されるように命令のスケジューリングを実行す
るが、同時にフェッチされた命令が常に同時に機能ユニ
ットにおいて処理されるとは限らない。
第16図は命令デコードステージから発行される命令の
発行状況の一例を示す図である。以下、第16図を参照し
て命令デコードステージからの命令発行について説明す
る。
まずサイクル1においては、フェッチされた4つの命
令を解読する。命令2ないし4は命令1と並列処理実行
ができないため、命令1のみが機能ユニットへ発行され
る。
サイクル2においては、命令2および命令3は同時処
理実行可能であり、一方、命令4は命令2および/また
は命令3と、たとえばこれらの命令2または命令3の処
理結果を利用するなどの依存関係があるため並列に処理
を実行することができず、命令2および命令3のみが発
行される。
サイクル3において残りの命令4が発行される。
サイクル4において、新たにフェッチされた4つの命
令のうち命令5および命令6が同時処理可能であるとし
て発行される。
ここで、命令の発行順序は、命令が並列に処理実行で
きない場合、アドレスの小さいほうの命令が優先的に発
行される。
このようなデータ依存関係がない場合であっても、命
令を同時に発行できない場合がある。フェッチした命令
に分岐命令が含まれる場合である。分岐命令に続く命令
は、分岐命令による分岐発生の有無により有効・無効が
決定されるため、この分岐命令による状態決定が生じる
まで発行することができない。分岐命令は、命令デコー
ドステージで分岐が生じるか否かを決定されるが、今、
分岐命令が命令デコードステージに供給されたサイクル
においては、その決定ができなかった場合を考える。こ
のような分岐命令の1つに、条件付き分岐命令がある。
この具体的な場合としては以下のようなものがある。
「分岐命令は、あるレジスタの内容が0の場合には分
岐を生じ、そうでない場合には分岐しない命令である。
ところが、このレジスタは、別の先行する命令による
書込みが終了しないと正しい値ではない。」 このような場合、分岐命令はその先行する命令による
レジスタへの書込みが終了するまで実行を待ち合わせる
必要がある。
このような命令として具体的に以下のような命令を考
える。
load R1,50(R2) brz R1,label add R4,R5,R6 sub R7,R8,R9 命令はレジスタR2の内容に50を加えたアドレスのデ
ータメモリ8のデータをレジスタR1にロードする命令で
ある。
命令は、レジスタR1の内容が0ならばlabelに分岐
する命令である。
命令は、レジスタR5の内容にレジスタR6の内容を加
えて、該加算結果をレジスタR4に書込む命令である。
命令は、レジスタR8の内容からレジスタR9の内容を
引いて、該演算結果をレジスタR7に書込む命令である。
このような4つの命令が命令デコードステージへ与え
られた場合、命令のbrzという分岐命令は、命令に
おけるloadに従って、データがレジスタR1に書込まれる
まで分岐を決定することができない。命令および命令
は、この命令の分岐命令により分岐するか否かによ
りその有効/無効が決定される。すなわち、命令にお
いて分岐が発生すると決定されれば、命令および命令
は実行すべきものではなく、無効とされるべきもので
ある。一方、命令において分岐が生じないと決定され
れば、この命令および命令は有効であり、機能ユニ
ットへ供給されて実行処理されるべきものである。この
場合の命令発行手順としては第17図に示すものが考えら
れる。
第17図は、フェッチした命令中に分岐命令が含まれる
ときの命令発行状況を示す図である。以下、第17図を参
照して上述の分岐命令brzが存在する場合の命令発行に
ついて説明する。
サイクル0において、命令ないし命令がフェッチ
され、命令デコードステージ3へ与えられる。
サイクル1において、この命令ないしがデコード
される。
サイクル2において、命令が機能ユニット(第14図
に示す機能ユニット6)へ発行され実行される。すなわ
ち、サイクル2において、レジスタR2の内容に50を加え
たアドレスが発生される。このとき、命令ないし命令
は機能ユニットへ発行されず、命令デコードステージ
3に保持される。第17図において(ID)は、命令デコー
ドステージにおける各命令の保持(待合わせ)状態を示
している。
サイクル3において、命令に従って、データメモリ
8へのアクセスが行なわれる。このときまだ、レジスタ
R1の内容は決定されていないため、命令ないし命令
は命令デコードステージ3に保持されている。
サイクル4において、命令に従って、データレジス
タR1への書込みが実行され、レジスタR1の内容が決定す
る。
これにより、命令の分岐の決定が行なわれ、分岐が
行なわれるべきでないと判断される。
サイクル5において、命令および命令が機能ユニ
ットへ発行され、実行される。
サイクル6において、命令および命令の実行結果
がデータレジスタへ書込まれる。
このサイクル4において、データレジスタR1の内容が
決定し、命令に従って分岐が行われるべきであると判
定された場合には、サイクル5において、命令および
命令の発行は行われず、これらの命令は無効とされ、
分岐命令をフェッチする動作が実行される。
上述のような命令発行の場合、分岐が生じない場合に
おいても分岐の発生の有無が決定されるまで、機能ユニ
ットへの発行が停止されるため、パイプラインに空きが
生じ、高速で命令を実行することができないという問題
が発生する。
それゆえに、この発明の目的は、分岐命令が存在する
場合においても、高速で命令を実行することのできる並
列処理装置を提供することである。
[課題を解決するための手段] この発明にかかる並列処理装置は、命令の有効/無効
を示す有効性フラグと、分岐命令による分岐決定待ちで
あるか否かを示す書込み遅延フラグとを命令に付加し
て、該命令を関連の機能ユニットへ発行する手段と、有
効性フラグと書込み遅延フラグとに応答して、機能ユニ
ットに含まれるマシン状態変更ステージの動作を、デー
タ保持状態、データ無効化状態およびデータ書込み実行
状態のいずれかに設定する制御手段と、分岐命令による
分岐発生の有無検出信号に応答して、有効性フラグおよ
び書込み遅延フラグの値を修正する手段とを含む。ま
た、その制御手段は、有効性フラグがオン状態にあり、
命令が有効であることを示し、かつ書込遅延フラグがオ
ン状態であり、分岐命令以降の命令であることを示すと
きには、マシン状態変更ステージの動作をデータ保持状
態に設定する。有効性フラグがオフ状態であれば、マシ
ン状態変更ステージの動作はデータ無効化状態に設定さ
れる。有効性フラグがオン状態であり、かつ書込遅延フ
ラグがオフ状態であれば、マシン状態変更ステージの動
作はデータ書込状態に設定される。
[作用] 有効性フラグは、そのオン状態/オフ状態に従って、
その命令の有効/無効を示し、この命令が実行されるべ
きか否かを示す。書込み遅延フラグは、そのオン状態/
オフ状態に従って、該命令実行結果をデータレジスタに
書込むのを待ち合わせるべきか否かを示す。
機能ユニットは、命令実行ステージと、この命令実行
ステージからのデータをレジスタに書込むマシン状態変
更ステージとを含む。機能ユニットは、書込み遅延フラ
グが書込み遅延状態を示している場合には、この命令実
行ステージからのデータを保持し、レジスタへの書込み
を待ち合わせる。命令実行ステージは、有効性フラグが
有効を示しているときには、フェッチ・デコード手段か
らの命令を実行する。このマシン状態変更ステージの動
作はより有効性フラグおよび書込み遅延フラグの値に応
答して行なわれる。分岐命令以降の命令は、この書込み
遅延フラグに従ってデータレジスタへのデータ書込みが
待機させられる。このとき、有効性フラグが命令が有効
であることを示しており、また分岐命令による分岐発生
が検出されると、書込み遅延フラグの値が修正され、レ
ジスタへの書込みを行なうべきことを示す値に修正され
る。これにより、分岐命令による分岐が生じず、これら
の保持命令を実行すべきであることが示されると、即座
にデータレジスタへのデータの書込みが行なわれる。
これにより、分岐命令による分岐決定まで分岐以降の
命令の機能ユニットへの発行を待ち合わせる必要がな
く、高速で命令を処理することができる。
[発明の実施例] まず、この発明の実施例について説明する前に、この
発明による並列処理装置における命令発行/実行シーケ
ンスについて説明する。
第2図はこの発明による並列処理装置における命令発
行/実行シーケンスを示す図である。以下、この第2図
を参照して、命令発行/実行シーケンスについて説明す
る。
この第2図に示す命令ないし命令は第17図に示す
命令ないし命令と同一である。
サイクル0において、命令ないし命令がフェッチ
される。
サイクル1において、この命令ないし命令が命令
デコードステージにおいてデコードされる。
サイクル2において、命令、命令および命令の
機能ユニットへの発行が行なわれる。命令において、
データメモリ8のアドレスが発生される。一方、命令
および命令はたとえば整数ユニットである機能ユニッ
ト4および5において命令が実行される。命令は、命
令デコードステージ3において保持されており、まだこ
の命令デコードステージにおいて分岐すべきか否かは決
定されていない。
サイクル3において、命令に従ってデータメモリ8
へのアクセスが行なわれ、所望のデータの読出が行なわ
れる。一方、命令および命令の実行結果はマシン状
態変更ステージ(WB)へ伝達され、そこで保持状態とさ
れる。このときまだ命令および命令による実行結果
のデータレジスタへの書込みは行われていない。
サイクル4において、命令にしたがって、データメ
モリ8から読出されたデータがデータレジスタR1へ書込
まれ、レジスタR1の内容が決定する。このレジスタR1の
内容が決定されたことにより、命令デコードステージに
おいては、命令により分岐すべきか否かの判定が行な
われる。この第2図においては分岐しないことが決定さ
れた場合が示される。この命令による分岐を行なわな
いことの決定により、マシン状態変更ステージに保持さ
れていた命令および命令の実行結果がレジスタR4お
よびR7へそれぞれ書込まれる。
サイクル4において、命令による分岐が決定し、la
belへ分岐すべきであるとされた場合には、この命令
および命令のマシン状態変更ステージに保持されてい
るデータは無効とされ、また命令実行ステージEXに滞留
している命令も無効とされる(これは有効性フラグを用
いて行なわれる)。次のサイクル5において、分岐発生
時には、この分岐先のlabelの命令がフェッチされる。
この第2図に示す命令の発行/実行シーケンスと第17
図に示す命令発行/実行シーケンスとを比較すれば、こ
の発明に従う命令発行/実行シーケンスの方が、命令
および命令の実行が2サイクル早く行なわれており、
より高速で命令を処理することが可能となっている。す
なわち、本発明による命令の発行/実行シーケンスをま
とめると以下のようになる。
(1) 分岐命令に続く命令は、分岐命令が分岐するか
否かが決定される前に、関連の機能ユニットへ発行され
実行される。
(2) これらの命令が、マシン状態を書換える状態に
なったときには、このマシン状態書換えを停止させ、待
機状態とする。
(3) 分岐命令による分岐が決定されたならば、すな
わち、分岐すべきであると判定された場合には、これら
の命令を無効化する。一方、分岐命令による分岐が生じ
ないことが決定したなら、これらの命令によるマシン状
態の書換えを許可する。
ここでマシン状態の書換えとは、たとえばデータレジ
スタの内容の書換え、データメモリ8の内容の書換え、
状態フラグの書換えなど、命令実行によるある関連の装
置の状態の変更を示す。次に、この第2図に示す命令発
行/実行シーケンスを実現するための構成について説明
する。
第1図はこの発明の一実施例である並列処理装置の要
部の構成を示す図であり、整数演算を行なう機能ユニッ
ト(4または5)の部分の概略的な構成を示す図であ
る。
第1図において、この機能ユニット(整数演算ユニッ
ト)は、算術論理演算ユニット(ALU)による演算を行
なうEXステージと、このEXステージによる実行結果をレ
ジスタファイル9へ書込むWBステージとを含む。EXステ
ージは、機能ユニットにおける命令実行ステージであ
り、WBステージは機能ユニットおけるマシン状態変更ス
テージである。
命令デコードステージ(IDステージ)は、命令メモリ
(第1図に示さず)からフェッチされた複数の命令をデ
コードする命令デコーダ10を含む。命令デコーダ10は、
第15図に含むデコード回路およびパイプラインシーケン
サを含む。この命令デコーダ10は、与えられた命令を解
読し、この与えられた命令中に分岐命令が存在するか否
かを検出するとともに、この分岐命令が存在する場合に
分岐命令以降の命令であるか否かを検出する。この分岐
命令以降の命令であるか否かの検出は、命令デコーダ10
へ命令とリンクして与えられるアドレスにより判定され
る。
命令デコーダ10は、デコードした命令を対応の機能ユ
ニットのEXステージへ発行する。このとき、命令デコー
ダ10は、命令IRとともに、この命令IRが有効であるか否
かを示すフラグinst availと、この命令IRが分岐命令
以降の命令であるか否かを示すフラグdelay instを発
生する。このフラグinst availは有効性フラグであ
り、フラグdelay instは、この命令によるマシン状態
変更を待ち合わせるべきか否かを示す書込み遅延フラグ
である。
レジスタ・ファイル9は、複数のレジスタを含み、各
レジスタに所望のデータが格納される。このデータレジ
スタとしてレジスタ・ファイル9を用いる構成は、たと
えば縮小命令セットコンピュータ(RISC)などにおいて
用いられており、データメモリ8へのアクセスはロード
(load)およびストア(store)命令のみであり、その
他の処理はすべてこのレジスタ・ファイル9を用いて行
なわれるのと同様の構成である。
この第1図に示す並列処理装置は、第3図に示す2相
の互いに重なり合わないクロック信号TおよびLに応答
して動作する。各サイクルの始まりは、クロック信号T
により規定される。
EXステージは、命令デコーダ10からの命令IRをクロッ
ク信号Tに応答して保持するTラッチ回路11と、命令デ
コーダ10からの有効性フラグinst availをクロック信
号Tに応答して保持するTラッチ回路12と、命令デコー
ダ10からの書込み遅延フラグdelay instをクロック信
号Tに応答してラッチするTラッチ回路13と、レジスタ
・ファイル9からの同時に読出された2つのデータdata
lおよびdata2をそれぞれクロック信号Tに応答してラッ
チするTラッチ回路14および15を含む。ここで、整数演
算ユニットに対応して設けられるレジスタ・ファイル9
は、2つのデータの読出しと1個のデータの書込みを1
つのサイクルで行なうことができる。
EXステージはさらに、Tラッチ回路11〜13のそれぞれ
の保持する命令およびフラグをそれぞれクロック信号L
に応答して保持するLラッチ回路17、18および19を含
む。Lラッチ回路17は、命令EX IRをクロック信号Lに
応答して保持する。Lラッチ回路18は、Tラッチ回路12
の保持する有効性フラグEX inst availをクロック信
号Lに応答して保持する。Lラッチ回路19は、Tラッチ
回路13が保持する書込み遅延フラグEX delay instを
クロック信号Lに応答してラッチする。
EXステージはさらに、ALU16の出力をクロック信号L
に応答して保持するLラッチ回路20を含む。
WBステージは、Lラッチ回路17の命令をクロック信号
Tに応答して保持するTラッチ回路21と、Lラッチ回路
18が保持する有効性フラグEX inst avail Lをクロ
ック信号Tに応答して保持するTラッチ回路22と、Lラ
ッチ回路19が保持する書込み遅延フラグEX delay ins
t Lをクロック信号Tに応答して保持するTラッチ回
路23と、Lラッチ回路20が保持する演算結果データEX
data Lをクロック信号Tに応答して保持するTラッチ
回路24を含む。このTラッチ回路21が保持する命令WB
IRに従ってレジスタ・ファイル9のレジスタが選択さ
れ、該選択されたレジスタへ、Tラッチ回路24が保持す
るデータWB dataが書込まれる。
この並列処理装置はさらに、命令デコーダ10が発生す
る分岐決定指示信号takenと非分岐決定指示信号not ta
kenと命令無効化指示信号EX canに応答して、このWBス
テージの状態を、データ保持状態、データ書込み実行状
態、およびデータ無効化状態のいずれかに設定するWBコ
ントロール回路100を含む。次に、この第1図を参照し
てこの発明の並列処理装置の命令発行・実行シーケンス
について説明する。
命令デコーダ10は、書込み遅延フラグdelay instお
よび有効性フラグinst availを対応の機能ユニットに
命令IRを発行する際にその命令に付加する。これらのフ
ラグdelay instおよびinst availは各機能ユニット中
においては命令IRとともにパイプライン(EXステージお
よびWBステージ;ただし整数ユニットの場合)を伝達さ
れ、マシン状態の書換えを制御するために用いられる。
有効性フラグinst availは、命令デコーダ10から発
行される命令が、実行されるべき有効な命令であるか否
かを示すフラグである。たとえば命令メモリへ命令フェ
ッチ要求を出した場合において、命令メモリから命令が
供給されない場合、命令デコーダ10へは、有効な命令が
与えられないため、そのサイクルにおいては、命令は出
力されない。したがってこの場合有効性フラグinst av
ailはオフ状態とされる。有効性フラグinst availがオ
ンの命令は、有効な命令であることを示しており、機能
ユニット内で実行される。命令デコーダ10から機能ユニ
ットへ発行される命令IRに付随する有効性フラグinst
availはオンにされる。これらのフラグdelay instおよ
びinst availは各ステージにおいて以下のように制御
される。
(1) 命令デコードステージ(IDステージ): (a) 命令デコードステージIDに供給された複数の命
令は、命令デコーダ10において、デコードされる。この
供給された命令中に分岐命令が存在し、この分岐命令が
そのサイクル内で分岐すべきか否かを決定することがで
きない場合、命令デコーダ10は、そのサイクルから分岐
が決定されるまでのサイクルの間分岐命令以降の命令で
あって機能ユニットに発行される命令の書込み遅延フラ
グdelay instをオンにし、オン状態とされた有効性フ
ラグinst availとともに命令IRに付随させて出力す
る。
(b) この命令デコーダ10へ与えられた命令中に分岐
決定を待合わせる命令が存在しない場合、命令実行結果
の書込みを遅延させる必要はないため、書込み遅延フラ
グdelay instはオフにして命令IRとともに発行され
る。
(c) 分岐命令が存在しかつその分岐が決定した場合
には、この分岐命令以降の命令は実行する必要がないた
め、有効性フラグinst availがオフにされる。このと
き命令IRの機能ユニットへの発行は行なわれない。この
とき、遅延フラグdelay instはオフ状態とされる。
これらの命令IRおよびフラグdelay instおよびinst
availは機能ユニットのEXステージを介してWBステー
ジへ伝達される。このWBステージにおいては以下の制御
が行なわれる。
(2) マシン状態の書換え(変更)が生じるWBステー
ジ: (a) 命令WB IRがマシン状態の書換えを行なう命令
であり、かつ書込み遅延フラグdelay instがオンの場
合、この命令WB IRは、分岐/非分岐の決定待ち状態で
あり、マシン状態の変更を行なってはならない場合であ
る。このマシン状態の書換えの実行は中断され分岐・非
分岐の決定を待ち合わせる。
(b) 分岐命令による分岐を行なうことが決定した場
合、命令デコーダ10からは分岐指示信号takenとEXステ
ージに滞留している命令を無効化するための信号EX ca
nとが発生される。WBコントロール回路100は、フラグWB
delay instおよびWB inst availがともにオンであ
る命令WB IRの有効性フラグWB inst availをオフに
設定する。これにより、WBステージにおける命令WB IR
が無効化され、この命令WB IRによるマシン状態の変更
(第1図に示す構成においてはレジスタ・ファイル9へ
のデータの書込み)が禁止される。これにより分岐命令
後の機能ユニットへ発行された命令が無効化される。
(c) 分岐命令による分岐が生じないことが決定した
場合、命令デコーダ10からは非分岐検出信号not taken
が発生される。WBコントロール回路100は、このとき、
書込み遅延フラグWB delay instをオフ状態に設定す
る。これにより、分岐が生じた時に備えて中断状態にあ
った命令WB IRによるマシン状態の変更が即座に実行さ
れる。次に、第1図を参照して、具体的に動作について
説明する。
命令メモリからフェッチされた命令は命令デコーダ10
でデコードされる。デコード結果が整数演算命令の場
合、命令デコーダ10からレジスタ・ファイル9へ2つの
レジスタ指示信号(レジスタポインタ)が与えられ、被
演算データである2つのデータdata1およびdata2が読出
される。
また、命令デコーダ10は、デコード結果の命令IRと、
この命令IRが有効であることを示すオン状態の有効性フ
ラグinst availと、書込み遅延フラグdealy instを出
力する。書込み遅延フラグdelay instは、命令IRが分
岐命令以降の命令であるか、およびこのサイクルでその
分岐命令の分岐/非分岐が決定できたか否かに応じて定
められる。分岐命令の分岐決定待ち状態の場合、この書
込み遅延フラグdelay instはオン(1)状態にされ
る。分岐命令が存在しない場合または分岐命令による分
岐が決定した場合、この書込み遅延フラグdelay inst
はオフ(0)状態に設定される。このサイクルにおいて
分岐命令による分岐が決定し、命令IRが不必要な場合に
は、有効性フラグinst availはオフ状態とされる。
命令デコーダ10からの出力およびレジスタ・ファイル
9からの出力はTラッチ回路11ないし15で保持される。
このTラッチ回路14および15に保持されたデータtmp1お
よびtmp2(データdata1およびdata2に相当する)はALU1
6へ与えられ、所定の演算が実行される。
クロック信号Lに応答して、Tラッチ回路11ないし13
に保持されている命令およびフラグはそれぞれLラッチ
回路17ないし19に保持される。また、ALU16の出力はク
ロック信号Lに応答してLラッチ回路20に保持される。
それにより、EXステージにおける動作は完了する。
WBステージにおいて、滞留する命令が存在しない場合
には、このLラッチ回路17ないし20に保持された命令、
フラグおよびデータはTラッチ回路21ないし24によりク
ロック信号Tに応答して保持される。WBステージに滞留
する命令(すなわち、分岐決定待ち等の命令)が存在す
る場合、EXステージは該命令、フラグおよびデータを保
持し続ける。
WBステージにおいては、Tラッチ回路23に保持されて
いるフラグWB delay instがオン状態の場合、WBコン
トロール回路100の制御のもとに、レジスタ・ファイル
9へのデータの書込みはマシン状態変更待ち合わせ状態
となり、与えられたデータを保持し続ける。
命令デコーダ10において、分岐命令による分岐が決定
したと判断されると、分岐決定指示信号takenが発生さ
れ、WBコントロール回路100へ与えられる。WBコントロ
ール回路100は、この信号takenに応答して、書込み遅延
フラグWB delay instをオフ状態とし、かつ有効性フ
ラグWB inst availをオフ状態とする。これにより、
Tラッチ回路21に保持された命令WB IRは無効にされ、
また、Tラッチ回路24に保持されたデータWB dataが無
効にされてレジスタ・ファイル9への書込みは行なわれ
ない。
一方、命令デコーダ10において、分岐命令による分岐
が生じないことが決定されると、非分岐決定検出信号no
t takenが発生されWBコントロール回路100へ与えられ
る。WBコントロール回路100は、この信号not takenに
応答して、Tラッチ回路23に保持された書込み遅延フラ
グWB delay instをオフ状態にする。これにより、T
ラッチ回路21に保持された命令WB IRに従ってレジスタ
・ファイル9のレジスタ選択が行なわれ、この選択され
たレジスタへのデータWB dataの書込みが行なわれる。
なお命令デコーダ10において、分岐決定検出信号take
nが発生されたとき、EXステージに保持されている命令E
X IR Lを無効にするための信号EX canが発生され
る。この信号EX canに応答して、Lラッチ回路18に保
持されている有効性フラグEX inst avail Lはオフ
状態とされ、このEXステージに保持された命令の無効化
が行なわれる。次に、上述の分岐処理待ち合わせおよび
分岐決定時における命令の無効化を実現するための構成
について説明する。
第4図はマシン状態変更ステージ(WBステージ)にお
ける論理構成の一例を示す図である。第4図において、
WBステージは、Tラッチ回路21の前段に設けられる論理
回路30と、Tラッチ回路22の前段に設けられる論理回路
31と、Tラッチ回路23の前段に設けられる論理回路32
と、Tラッチ回路24の前段に設けられる論理回路33を含
む。
論理回路30は、WBステージがマシン状態変更待機状態
すなわち分岐決定待ち合わせ状態にあることを示す信号
WB busyとこのWBステージに保持された命令が無効化さ
れることを示す信号WB canとに応答して、命令EX IR
Lまたは命令WB IR Lのいずれか一方を選択的に通
過させる。
論理回路31は、信号WB busyと信号WB canとEXステ
ージの命令が無効化されたことを示す信号EX canとに
応答して、EXステージからの有効性フラグEX inst av
ail LとWBステージにおける有効性フラグWB inst a
vail Lのいずれか一方を選択的に通過させる。
論理回路32は、信号WB busyおよびWB canに応答し
て、EXステージからこの書込み遅延フラグEX delay i
nst LとWBステージの書込み遅延フラグWB delay in
st Lのいずれか一方を通過させる。
論理回路33は、信号WB busyおよびWB canに応答し
て、EXステージからのデータEX data LおよびWBステ
ージのデータWB data Lのいずれか一方を選択的に通
過させる。
WBステージはさらに、Tラッチ回路21に保持された命
令WB IRをデコードし、レジスタ・ファイル9へデータ
を書き込むべきか否かを示す書込み指示信号w RFとレ
ジスタ・ファイル9のレジスタポインタaddressを発生
する命令デコーダ34と、WBステージの状態を監視し、こ
のWBステージを、データ保持状態、データ無効化状態お
よびデータ書込み実行状態のいずれかに設定する論理回
路29を含む。
論理回路29は、命令デコーダ34からのレジスタファイ
ル書込み指示信号w RFと、命令デコーダ10からの分岐
決定信号takenと、非分岐決定信号not takenと、有効
性フラグWB inst avail Lと、書込み遅延フラグWB
delay inst Lとに応答して、信号WB busyおよびW
B canと、レジスタ・ファイル9を書込み可能状態に設
定する信号wenとを発生する。
論理回路31は「in logic1」で示される論理を実行す
る。論理回路30、32および33は「in iogic2」で示され
る論理を実行する。論理回路29は、「WB busy logi
c」で示される論理を実行する。次に、各論理回路の実
現する論理について説明する。
第5図は論理回路29が実現するWB busy logicの論
理を一覧にして示す図である。以下、論理回路29の論理
について説明する。
(1) WBステージに有効な命令が存在しない場合: この状態においては、WBステージは何ら書込みを行な
うべきデータを保持していないため、何の動作も実行し
ない。すなわち、 WB inst avail Lがオフ(0)の場合には、信号w
en、WB busyおよびWB canはすべてオフ(0)であ
る。
(2) WBステージに有効な命令が保持されている場
合: この状態ではWB inst avail Lはオン(1)状態
である。
(a) 命令デコーダ34からの信号w RFがオフ状態の
場合、レジスタ・ファイルへのデータの書込は生じな
い。このような状態は、たとえば単に条件判断を行なう
命令の場合に生じる。すなわち、たとえばある比較結果
に基づいて次の処理が決定される場合、この比較結果は
レジスタに書込む必要がないため、このような状態が生
じる。
この場合、データの書込みは生じず、また次のサイク
ルで新たな命令を取り込むことができる。
したがって、 w RFがオフの場合、信号wen、WB busyおよびWB c
anはすべてオフ状態に設定される。
(b) 信号w RFがオンであり、フラグWB delay i
nst Lがオフのとき: この場合、WBステージにおいて有効な命令が存在し、
かつ分岐決定待ち合わせ状態ではないため、データの書
込みを実行しても良い。したがって、 w RFがオンでかつWB delay inst Lがオフの場
合には、信号wenがオン、信号WB busyおよびWB canが
オフとなる。
(c) 信号w RFおよびフラグWB delay inat
がオンの場合: この場合は、WBステージにおいてデータ書込みを実行
すべき命令が存在し、かつこの命令は分岐命令以降の命
令であることを示している。
この状態において、命令デコーダにおいて分岐/非
分岐が未決定状態の場合には、WBステージはマシン状態
変更待ち合わせ状態となる。したがって、 信号not takenおよびtakenがともにオフ状態の場合
には、信号wenおよびWB canがオフ、信号WB busyがオ
ンとなる。
分岐処理待ち合わせ状態において、非分岐が決定さ
れた場合: この場合、このWBステージの命令を即座に実行しても
よい。したがって、 信号not takenがオン、かつ信号takenがオフの場合
には、信号wenがオン、WB busyおよびWB canがともに
オフとなる。
待機状態において、分岐が決定した場合: この場合、このWBステージに保持されている命令は無
効にされる。すなわちレジスタ・ファイルへのデータ書
込みが実行されず、以降のサイクルにおいて与えられる
有効命令待ち状態となる。
すなわち、 信号not takenがオフであり、かつ信号takenがオン
の場合には、信号wenおよびWB busyがオフとなり、信
号WB canがオンとなる。
この第5図に示すWB busy logicの論理を実現する
具体的な回路構成は示さないが、この第5図に示す表か
ら容易に構成することができる。この論理はANDゲート
およびORゲートなどのゲート回路を用いて作成してもよ
く、またPLD(プログラマブル・ロジック・デバイス)
を用いて作成してもよい。
第6図はin logic1の論理を一覧にして示す図であ
る。このin logic1は論理回路31が実行する。以下、第
6図を参照してin logic1の論理について説明する。
(1) WB canがオン状態の場合: この状態は、WBステージにおいて、分岐決定待ちの命
令が無効化された状態を示す。WBステージが、次のサイ
クルに有効な命令を保持するかどうかは、EXステージが
そのサイクルで無効化されたかどうかに依存する。信号
EX canがオフのときは、EXステージの命令がそのまま
次のサイクルにおいてWBステージに供給される。この命
令の有効/無効はフラグEX inst avail Lにより決
定される。したがって、EX canがオフ状態の場合に
は、フラグWB inst availはEX inst avail Lに等
しくなる。
フラグEX canがオンの場合は、EXステージの命令は
無効化されたことを示している。したがって、WBステー
ジの次のサイクルには、有効な命令はEXステージには供
給されない。したがって、EX canがオンの場合にはWB
inst availはオフとなる。
(2) WB canがオフの場合: この状態はWBステージにおける命令の無効化動作は実
行されないことを示している。
第7図は「in logic2」の実現する論理を示す図であ
る。以下、第7図を参照して「in logic2」の論理につ
いて説明する。
もし信号WB busyがオフ状態の場合には、このWBステ
ージには次のサイクルにおいても保持すべき命令が存在
しないことを示しており、EXステージから与えられる命
令をWBステージに取り込んでよいことを示している。し
たがって、信号WB busyがオフならば、フラグWB inst
availはフラグEX inst avail Lに等しくなる。
信号WB busyがオン状態の場合には、WBステージは、
分岐/非分岐決定待ち状態の命令を保持していることを
示している。したがって、次のサイクルにおいても、こ
のサイクルにおける有効性フラグを保持する必要があ
る。したがって、フラグWB inst availは、フラグWB
inst avail Lと等しくなる。
上述の論理動作を実行する論理回路をWBステージに設
けることにより、分岐命令の決定待ち状態において、非
分岐が決定された場合高速でデータを書込むことができ
る。この動作について以下に動作波形図を参照して説明
する。
第8図は、分岐決定待ち合わせ状態において分岐が決
定したときのWBステージの動作を示す信号波形図であ
る。以下、第8図を参照して分岐決定時の動作について
説明する。
サイクル0: このサイクルにおいて、WBステージに、分岐命令以降
の命令でありかつ分岐命令の状態決定待ちをすべき命令
が供給される。この命令の書込み遅延フラグWB delay
instはオン状態である。またこの命令の有効性フラグ
WB inst availもオン状態である。論理回路26および2
7の出力WB delay inst LおよびWB inst avail
Lはクロック信号Lに応答してその状態が確定する。こ
れに応答して、論理回路29からの信号WB busyがオン状
態となる。
ここで、このWBステージへ与えられた命令はレジスタ
・ファイルへデータを書込む命令であり、命令デコーダ
34からはクロック信号Tに応答して信号w RFが発生さ
れている状態を想定している。また、論理回路29は、こ
の分岐決定待ち合わせ状態に従って、書込みイネーブル
信号wenを発生せず、データ書込み禁止状態に設定す
る。レジスタ・ファイル9は、クロック信号Lにおける
信号wenに応答して、ラッチ回路28のデータWB data
Lの書込みを行なっている。ただしレジスタポインタad
dressはクロック信号Tに応答して確定する。このサイ
クルではレジスタ・ファイル9へのデータ書込みは禁止
状態とされる。
一方、信号WB busyのオン状態に応答して、論理回路
30、31、32および33は、その入力経路を切換えて対応の
Lラッチ回路25、26、27および28の出力を選択し、それ
ぞれ対応のTラッチ回路21、22、23、および24へ伝達す
る。
サイクル1: このサイクルにおいては信号WB busyはオン状態であ
るため、サイクル0にWBステージへ与えられた命令およ
びフラグならびにデータが再びTラッチ回路21ないし24
で保持される。
サイクル2: このサイクルにおいて、分岐が決定し、このWBステー
ジの命令を無効とすべきことが決定される。この場合、
信号takenがオン状態となり、論理回路29へ与えられ
る。これにより、書込みイネーブル信号wenの発生が禁
止され、レジスタ・ファイル9へのデータの書込みは禁
止される。また、この信号takenに応答して、信号WB b
usyがオフ状態、また信号WB canがオン状態に設定され
る。この信号WB busyに応答して、WBステージはEXステ
ージからの命令受入れ可能状態となる。
このとき、EXステージに保持されている命令が分岐命
令以降の命令であり、分岐先命令と無関係な命令の場
合、このEXステージに保持された命令を無効化するため
に信号EX canが発生される。したがって、サイクル3
におけるフラグWB inst availおよびWB delay inst
はこのサイクル2においてEXステージに保持されている
命令のフラグに対応したものとなる。
サイクル3においては、信号WB busy、信号takenお
よびWB canはすべてオフ状態となり、WBステージは、E
Xステージから与えられた命令を処理することになる。
ここで、論理回路30、32および33の「in logic2」論
理は信号WB canをも受けているが、上述の論理動作で
は信号WB busyに応じてその論理が設定されている。信
号WB canをも併せて用い、信号WB busyがオンにあり
かつ信号WB canがオフ状態の場合にはそのWBステージ
の命令、フラグおよびデータを保持し、また信号WB bu
syがオフのとき、信号WB canのオン/オフ状態にかか
わらずEXステージからの命令、データおよびフラグを通
過させる構成としてもよい。図面においてはこの2つの
信号WB busyと信号WB can両者を用いる場合の回路構
成が示されている。
また、信号EX canは信号takenが発生された場合には
必ず発生されるが、分岐発生時でなくても、EXステージ
に保持されたデータを無効化する必要が生じる場合も考
えられるため、このような場合にこの信号EX canが発
生されて、EXステージの命令の無効化が行なわれる。信
号WB canも同様である。
また、第8図に示す信号波形図においては信号wenの
立上りおよび立下がりタイミングはある幅を持たせてお
り、また信号takenの立下がり時点もある幅を持たせて
いる。これはこの時間幅において各信号が適当なタイミ
ングで立上りまたは立下がりすればよいことを示してい
る。すなわち、信号wenは、この確定状態のデータWB d
eta Lを書込むことができるようなタイミングでイネ
ーブルされればよく、またディスエーブル状態はこのデ
ータ書込み決定状態前に確定状態とされるタイミングで
確定していればよい。
また、信号takenは、クロック信号Lのタイミングで
発生されるが、その立下がりタイミングは、次のサイク
ルにおける、分岐決定時における分岐先命令のフェッチ
処理を実行する動作を規定するように設定されておれば
よく、たとえば第8図においてサイクル3の開始時点に
おいてその状態が確定状態に保持されていればよい。次
に、非分岐決定時の動作について第9図を参照して説明
する。
第9図はWBステージにおける分岐状態決定待ち合わせ
状態において非分岐が決定された場合の動作を示す波形
図である。
サイクル0およびサイクル1は第8図に示すサイクル
0およびサイクル1と同様である。サイクル2におい
て、分岐を行なわないことが決定されると信号not tak
enがオン状態となる。これに応答して書込みイネーブル
信号wenがオン状態となり、レジスタ・ファイル9への
データ書込みが可能状態とされる。レジスタ・ファイル
9は、この信号wenに応答して、Lラッチ回路28からの
データWB data Lを、命令デコーダ34からのレジスタ
ポインタaddressが指定するレジスタへ書込む。
またこのとき、WBステージの命令が実行され、マシン
状態の変更が行なわれたため、WBステージは次のEXステ
ージからの命令受入可能状態となる。したがって、信号
WB busyがオフ状態となる。このとき、信号WB canは
オフ状態のままである。これにより、各論理回路30ない
し33は、EXステージのLラッチ回路出力を通過させる状
態となる。
サイクル3における動作は、このEXステージから与え
られる命令に対応した処理が行なわれる。すなわち、EX
ステージから与えられる命令が無効命令であれば、何ら
実行処理は行なわれず、有効命令であれば、その命令に
従う処理が実行される。次にEXステージの論理および動
作について説明する。
第10図はEXステージの構成を示す図である。第10図に
おいて、第1図に示す構成と対応する部分には同一の参
照番号が付されている。
第10図において、EXステージは、Tラッチ回路11、1
2、13、14および15の前段に設けられた論理回路41、4
2、43、44および45と、Tラッチ回路14および15の保持
データをそれぞれロック信号Lに応答して保持するLラ
ッチ回路35および36を含む。
論理回路41は信号WB busyに応答して、命令デコーダ
10からの命令IRまたはLラッチ回路17からの命令EX IR
Lのいずれか一方を通過させる。論理回路42は、信号
WB busyに応答して、命令デコーダ10からの有効性フラ
グinst availとLラッチ回路18′からの有効性フラグE
X inst avail Lのいずれか一方を通過させる。
論理回路43は、命令デコーダ10からの書込み遅延フラ
グdelay instとLラッチ回路19からのフラグEX delay
inst Lのいずれか一方を通過させる。
論理回路44および45は、レジスタファイルから読出さ
れたデータdata1およびdata2とLラッチ回路35および36
の保持データtmp1 Lおよびtmp2 Lのいずれか一方を
それぞれ通過させる。
Lラッチ回路18′は、信号EX canに応答してその保
持データがリセットされてオフ状態に設定される。この
Lラッチ回路18′の信号EX canによる保持データの制
御は、信号EX canがクロック信号Lの発生時に確定状
態にあれば、このLラッチ回路18′の入力部に信号EX
canに応答してその出力値をEX inst availまたは0に
設定する回路を設ける構成としてもよい。
論理回路41ないし45は同一の論理を実現し、「in lo
gic3」で示される論理を実行する。
第11図は「in logic3」の論理を一覧にして示す図で
ある。以下、第10図および第11図を参照して「in logi
c3」の論理について説明する。
EXステージがWBステージへ命令を供給することができ
ず、命令保持状態となるのは、WBステージが命令保持状
態にある場合である。この状態は、信号WB busyがオン
(1)であることにより表される。したがって、信号WB
busyがオン(1)の場合、論理回路41ないし45は対応
のLラッチ回路17、18′、19、35および36からの出力を
通過させて対応のTラッチ回路11ないし15へ伝達する。
一方、信号WB busyがオフ(0)の場合、EXステージ
は、この保持している命令をWBステージへ供給すること
ができ、新たに命令を命令デコーダ10から受けることが
できる。したがって、信号WB busyがオフの場合には、
この論理回路41ないし45は、命令デコーダ10からの出力
およびレジスタ・ファイル9からの出力データを通過さ
せる。
第12図は、Lラッチ回路18′の動作状態を一覧にして
示す図である。以下、この第12図を参照してLラッチ回
路18′の動作について説明する。信号EX canがオン
(1)に設定されると、EXステージに保持された命令が
無効化されることを示す。したがって、信号EX canが
オンならば、Lラッチ回路18′の出力は0となる。
一方、信号EX canがオフ(0)状態の場合、EXステ
ージに保持されている命令を特に無効化する必要はない
ことを示している。この場合、Lラッチ回路18′は、T
ラッチ回路12からの有効性フラグEX inst availをそ
のまま保持する。すなわち、信号EX canがオフの場
合、フラグEX inst avail Lはそのサイクルにおけ
る有効性フラグEX inst availとなる。
上述の構成により分岐命令以降の命令を、WBステージ
の命令処理状況に応じてEXステージにおいて実行、保持
することができる。信号WB busyはまた、命令デコーダ
10へ与えられて、その命令発行の中断(待合わせ)の制
御に用いられてもよい。
上記実施例においては、整数ユニットに対する命令の
保持/無効化を行なうための構成について説明したが、
他の機能ユニット、浮動小数点演算ユニット、メモリア
クセスユニット等においても、同一の構成をそのマシン
状態変更ステージへ適用することにより同様の効果を得
ることができる。また、機能ユニットの数は4つに限定
されない。
[発明の効果] 以上のように、この発明によれば、分岐命令以降の命
令に対しては、分岐命令以降の命令であることを示す書
込み遅延フラグを該命令に付加して機能ユニットへ発行
し、この機能ユニットにおけるマシン状態変更動作を書
込み遅延フラグに従って制御するように構成したので、
分岐命令による分岐・非分岐が未決定状態であっても、
分岐命令以降の命令を機能ユニットへ発行することがで
き、かつ分岐決定時には即座にマシン状態の変更を行な
うことができるので、処理速度が大幅に改善された並列
処理装置を得ることができる。
【図面の簡単な説明】
第1図はこの発明の一実施例である並列処理装置におけ
る機能ユニット部の構成を概略的に示す論理図である。
第2図はこの発明による命令実行方式を概略的に示す図
である。第3図はこの発明による並列処理装置が用いる
クロック信号を示す波形図である。第4図はこの発明の
一実施例である並列処理装置におけるレジスタ書込みス
テージ(マシン状態変更ステージ)の構成を概略的に示
す論理図である。第5図は第4図に示すWB busy logi
cの論理を一覧にして示す図である。第6図は第4図に
示す「in logic1」が実現する論理を一覧にして示す図
である。第7図は第4図に示す「in logic2」の実現す
る論理を一覧にして示す図である。第8図はこの発明の
一実施例である並列処理装置におけるマシン分岐決定時
におけるマシン状態変更ステージの動作を示す波形図で
ある。第9図はこの発明の一実施例である並列処理装置
における分岐命令の非分岐決定時におけるマシン状態変
更ステージの動作を示す信号波形図である。第10図はこ
の発明の一実施例である並列処理装置の機能ユニットの
実行ステージの構成を概略的に示す論理図である。第11
図は第10図に示す「in logic3」の論理を一覧にして示
す図である。第12図は第10図に示す有効性フラグの出力
用Lラッチ回路の論理動作を一覧にして示す図である。
第13図は並列処理装置の概念的構成を示す図である。第
14図はスーパースカラの一般的構成を示す図である。第
15図はスーパースカラにおける命令デコードステージの
構成を示す図である。第16図はスーパースカラにおける
命令デコードステージから機能ユニットへの命令の発行
状況を示す図である。第17図は従来の並列処理装置にお
ける分岐発生時の命令発行/実行状況を示す図である。 図において、4、5、6および7は機能ユニット、8は
データメモリ、9はレジスタ・ファイル、10は命令デコ
ーダ、11、12、13、14、15、21、22、23、24はTラッチ
回路、17、18、19、20、25、26、27、28、、35および36
はLラッチ回路、29、30、31、32、33、41、42、43、4
4、45は論理回路、34はWBステージに含まれる命令デコ
ーダである。 なお、各図中、同一符号は同一または相当部分を示す。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】各々が所定の機能を実行する複数の機能ユ
    ニットと、命令を格納する命令メモリと、前記命令メモ
    リから複数の命令をフェッチし、該フェッチした命令の
    うち同時処理可能な命令を検出して、同時処理可能な命
    令を関連の機能ユニットへ供給するフェッチ・デコード
    手段とを備える並列処理装置であって、前記機能ユニッ
    トの各々は前記フェッチ・デコード手段からの命令を実
    行する命令実行ステージと、該命令実行ステージからの
    データをレジスタ手段へ書込むマシン状態変更ステージ
    とを含み、かつ前記フェッチ・デコード手段はフェッチ
    した複数の命令に分岐命令が含まれるか否かを検出する
    手段と、該分岐命令による分岐が発生したか否かを示す
    分岐発生指示信号を出力する手段とを含み、 機能ユニットへ供給される命令の有効・無効を示す有効
    性フラグと、該命令が分岐命令以降の命令であるか否か
    を示す書込遅延フラグとを該命令へ付加して関連の機能
    ユニットへ供給する手段、 前記有効性フラグと前記書込遅延フラグとに応答して、
    前記有効性フラグがオン状態であり対応の命令が有効で
    あることを示し、かつ前記書込遅延フラグがオン状態で
    あり対応の命令が分岐命令以降の命令であることを示す
    ときには前記マシン状態変更ステージの動作をデータ保
    持状態に設定し、前記有効性フラグがオフ状態のときに
    は前記マシン状態変更ステージの動作をデータ無効化状
    態に設定し、かつ前記有効性フラグがオン状態でありか
    つ前記書込遅延フラグがオフ状態のときには前記マシン
    状態変更ステージの動作をデータ書込実行状態に設定す
    る制御手段、および 前記分岐発生指示信号に応答して、前記有効性フラグお
    よび前記書込遅延フラグの値を修正する手段を備える、
    並列処理装置。
JP2279653A 1990-10-17 1990-10-17 並列処理装置 Expired - Lifetime JP2535252B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2279653A JP2535252B2 (ja) 1990-10-17 1990-10-17 並列処理装置
DE4134392A DE4134392C2 (de) 1990-10-17 1991-10-17 Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung
US08/310,508 US5522084A (en) 1990-10-17 1994-09-22 Method and system for invalidating instructions utilizing validity and write delay flags in parallel processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2279653A JP2535252B2 (ja) 1990-10-17 1990-10-17 並列処理装置

Publications (2)

Publication Number Publication Date
JPH04153734A JPH04153734A (ja) 1992-05-27
JP2535252B2 true JP2535252B2 (ja) 1996-09-18

Family

ID=17613981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2279653A Expired - Lifetime JP2535252B2 (ja) 1990-10-17 1990-10-17 並列処理装置

Country Status (3)

Country Link
US (1) US5522084A (ja)
JP (1) JP2535252B2 (ja)
DE (1) DE4134392C2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0488819B1 (en) * 1990-11-30 1999-01-13 Kabushiki Kaisha Toshiba Conditional branch instructions execution apparatus
JP2760273B2 (ja) * 1993-12-24 1998-05-28 日本電気株式会社 演算装置及びその制御方法
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
GB2296350B (en) * 1994-12-21 1999-10-06 Advanced Risc Mach Ltd Data processing divider
JPH08194679A (ja) * 1995-01-19 1996-07-30 Texas Instr Japan Ltd ディジタル信号処理方法及び装置並びにメモリセル読出し方法
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5796997A (en) * 1996-05-15 1998-08-18 Hewlett-Packard Company Fast nullify system and method for transforming a nullify function into a select function
US5958042A (en) * 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
JPH1063500A (ja) * 1996-08-23 1998-03-06 Matsushita Electric Ind Co Ltd 信号処理装置
DE10101949C1 (de) * 2001-01-17 2002-08-08 Infineon Technologies Ag Datenverarbeitungsverfahren
JP2009169767A (ja) 2008-01-17 2009-07-30 Toshiba Corp パイプライン型プロセッサ
US9983990B1 (en) * 2013-11-21 2018-05-29 Altera Corporation Configurable storage circuits with embedded processing and control circuitry
US10552162B2 (en) * 2018-01-22 2020-02-04 International Business Machines Corporation Variable latency flush filtering
CN112559049A (zh) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521851A (en) * 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
US4924525A (en) * 1986-10-20 1990-05-15 Bodigard Technologies, Inc. Multilayer film for chemical protective clothing
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
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
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
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
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

Also Published As

Publication number Publication date
DE4134392A1 (de) 1992-04-23
US5522084A (en) 1996-05-28
JPH04153734A (ja) 1992-05-27
DE4134392C2 (de) 1996-06-05

Similar Documents

Publication Publication Date Title
US5961637A (en) Split branch system utilizing separate set branch, condition and branch instructions and including dual instruction fetchers
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
JP3881763B2 (ja) データ処理装置
US7111126B2 (en) Apparatus and method for loading data values
US7065632B1 (en) Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
JP2535252B2 (ja) 並列処理装置
US5420990A (en) Mechanism for enforcing the correct order of instruction execution
US5561774A (en) Parallel processing type processor system with trap and stall control functions
JPH03129433A (ja) 並列処理装置および並列処理方法
WO1990014629A2 (en) Parallel multithreaded data processing system
US6725365B1 (en) Branching in a computer system
US5930520A (en) Pipelining device in a parallel processing apparatus and an instruction supplying method therefor
US5226166A (en) Parallel operation processor with second command unit
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
US7111152B1 (en) Computer system that operates in VLIW and superscalar modes and has selectable dependency control
JP3182591B2 (ja) マイクロプロセッサ
KR100241970B1 (ko) 파이프라인 처리를 수행하는 데이터 처리 장치
US6260133B1 (en) Processor having operating instruction which uses operation units in different pipelines simultaneously
US6629235B1 (en) Condition code register architecture for supporting multiple execution units
US6233675B1 (en) Facility to allow fast execution of and, or, and test instructions
KR970011209B1 (ko) 실행된 명령 스트림을 추적하기 위해 사용되는 신호를 발생하기 위한 회로를 포함하는 마이크로프로세서
JP3199035B2 (ja) プロセッサ及びその実行制御方法
JP2904624B2 (ja) 並列演算処理装置
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JP3325309B2 (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

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

Free format text: PAYMENT UNTIL: 20080627

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20090627

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20100627

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20110627

Year of fee payment: 15

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110627

Year of fee payment: 15