JPH081599B2 - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JPH081599B2 JPH081599B2 JP63041086A JP4108688A JPH081599B2 JP H081599 B2 JPH081599 B2 JP H081599B2 JP 63041086 A JP63041086 A JP 63041086A JP 4108688 A JP4108688 A JP 4108688A JP H081599 B2 JPH081599 B2 JP H081599B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- stage
- operand
- address
- 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 134
- 238000000034 method Methods 0.000 claims description 52
- 230000007246 mechanism Effects 0.000 claims description 49
- 230000008859 change Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 42
- 238000002593 electrical impedance tomography Methods 0.000 description 24
- 238000012546 transfer Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000006073 displacement reaction Methods 0.000 description 7
- 238000004645 scanning capacitance microscopy Methods 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 2
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 101100424823 Arabidopsis thaliana TDT gene Proteins 0.000 description 1
- 238000003070 Statistical process control Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000002441 reversible 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/30181—Instruction operation extension or modification
-
- 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
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
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
【発明の詳細な説明】 〔産業上の利用分野〕 この発明はパイプラインの乱れを少なくする分岐命令
処理機構および、オペランドのフェッチ操作を効率的に
行うためのオペランド・バイパス機構により、多段パイ
プライン処理機構を効率的に動作させ、高い処理能力を
実現したデータ処理装置に関するものである。
処理機構および、オペランドのフェッチ操作を効率的に
行うためのオペランド・バイパス機構により、多段パイ
プライン処理機構を効率的に動作させ、高い処理能力を
実現したデータ処理装置に関するものである。
〔従来の技術〕 第7図に従来のデータ処理装置で行われていたパイプ
ライン処理機構の例を示す。(11)は命令フェッチステ
ージ(IFステージ)、(12)は命令デコードステージ
(Dステージ)、(13)はオペランドアドレス計算ステ
ージ(Aステージ)、(14)はオペランドフェッチステ
ージ(Fステージ)、(15)は命令実行ステージ(Eス
テージ)である。
ライン処理機構の例を示す。(11)は命令フェッチステ
ージ(IFステージ)、(12)は命令デコードステージ
(Dステージ)、(13)はオペランドアドレス計算ステ
ージ(Aステージ)、(14)はオペランドフェッチステ
ージ(Fステージ)、(15)は命令実行ステージ(Eス
テージ)である。
IFステージ(11)はメモリから命令コードをフェッチ
してDステージ(12)に出力する。Dステージ(12)は
IFステージ(11)から入力される命令コードをデコード
して、デコード結果をAステージ(13)に出力する。A
ステージ(12)は命令コード中で指定されたオペランド
の実効アドレスの計算を行い、計算したオペランドアド
レスをFステージ(14)に出力する。Fステージ(14)
はAステージ(13)から入力されたオペランドアドレス
に従い、メモリよりオペランドをフェッチする。フェッ
チしたオペランドはEステージ(15)に出力する。Eス
テージ(15)はFステージ(14)から入力されたオペラ
ンドに対して命令コード中で指定された演算を実行す
る。さらに必要ならその演算結果をメモリにストアす
る。
してDステージ(12)に出力する。Dステージ(12)は
IFステージ(11)から入力される命令コードをデコード
して、デコード結果をAステージ(13)に出力する。A
ステージ(12)は命令コード中で指定されたオペランド
の実効アドレスの計算を行い、計算したオペランドアド
レスをFステージ(14)に出力する。Fステージ(14)
はAステージ(13)から入力されたオペランドアドレス
に従い、メモリよりオペランドをフェッチする。フェッ
チしたオペランドはEステージ(15)に出力する。Eス
テージ(15)はFステージ(14)から入力されたオペラ
ンドに対して命令コード中で指定された演算を実行す
る。さらに必要ならその演算結果をメモリにストアす
る。
上記のパイプライン処理機構により、各命令で指定さ
れる処理は5つに分解され、5つの処理を順番に実行す
ることにより、指定された処理を完了する。各々5つの
処理は異なる命令に対して並列動作させることが可能で
あり、理想的には上記の5段のパイプライン処理機構に
より5つの命令を同時に処理し、パイプライン処理を行
わない場合にくらべ、最大で5倍の処理能力をもつデー
タ処理装置を得ることができる。
れる処理は5つに分解され、5つの処理を順番に実行す
ることにより、指定された処理を完了する。各々5つの
処理は異なる命令に対して並列動作させることが可能で
あり、理想的には上記の5段のパイプライン処理機構に
より5つの命令を同時に処理し、パイプライン処理を行
わない場合にくらべ、最大で5倍の処理能力をもつデー
タ処理装置を得ることができる。
パイプライン処理技術は上記のようにデータ処理装置
の処理能力を大幅に向上させる可能性をもつものであ
り、高速なデータ処理装置で広く用いられている。
の処理能力を大幅に向上させる可能性をもつものであ
り、高速なデータ処理装置で広く用いられている。
しかし、パイプライン処理にもいくつかの欠点があ
り、いつも理想的な状態で命令が処理されるわけではな
い。パイプライン処理で問題となるものの1つは命令の
シーケンスを乱す分岐命令の実行である。
り、いつも理想的な状態で命令が処理されるわけではな
い。パイプライン処理で問題となるものの1つは命令の
シーケンスを乱す分岐命令の実行である。
第7図に示すパイプライン処理機構をもち、分岐命令
をEステージ(15)で処理してから分岐先命令をIFステ
ージ(11)が取り込む従来のデータ処理装置では、分岐
命令の実行により、パイプラインが大幅に乱れる。従来
のデータ処理装置で分岐命令が実行された場合の、パイ
プライン中を流れる命令の様子を第8図に示す。第8図
では命令3及び命令12が分岐命令である。命令3が実行
されるとすでにパイプライン処理中の命令4、命令5、
命令6、命令7はキャンセルされ、新たに命令11がIFス
テージ(11)から処理される。命令3がEステージ(1
5)で実行されてから命令11がEステージ(15)で実行
されるまでには4命令処理分の時間が無駄になる。命令
12についても同様に4命令処理分の時間が無駄になる。
この無駄時間は分岐命令の実行後に処理すべき命令のフ
ェッチが分岐命令に対する全パイプライン処理が終了し
た後に行われるためであり、パイプライン処理の段数が
多いほどこの無駄時間も長くなる。
をEステージ(15)で処理してから分岐先命令をIFステ
ージ(11)が取り込む従来のデータ処理装置では、分岐
命令の実行により、パイプラインが大幅に乱れる。従来
のデータ処理装置で分岐命令が実行された場合の、パイ
プライン中を流れる命令の様子を第8図に示す。第8図
では命令3及び命令12が分岐命令である。命令3が実行
されるとすでにパイプライン処理中の命令4、命令5、
命令6、命令7はキャンセルされ、新たに命令11がIFス
テージ(11)から処理される。命令3がEステージ(1
5)で実行されてから命令11がEステージ(15)で実行
されるまでには4命令処理分の時間が無駄になる。命令
12についても同様に4命令処理分の時間が無駄になる。
この無駄時間は分岐命令の実行後に処理すべき命令のフ
ェッチが分岐命令に対する全パイプライン処理が終了し
た後に行われるためであり、パイプライン処理の段数が
多いほどこの無駄時間も長くなる。
このような、分岐命令によるパイプラインの乱れを少
なくするために、Dステージ(12)において命令をデコ
ードする段階で条件分岐命令の分岐を予測し、その条件
分岐命令がEステージ(15)で実行される前にIFステー
ジ(11)による命令のフェッチ先をあらかじめ分岐先に
変更する分岐予測処理が従来より行われている。
なくするために、Dステージ(12)において命令をデコ
ードする段階で条件分岐命令の分岐を予測し、その条件
分岐命令がEステージ(15)で実行される前にIFステー
ジ(11)による命令のフェッチ先をあらかじめ分岐先に
変更する分岐予測処理が従来より行われている。
また、Fステージ(14)でプリフェッチしようとして
いるオペランドとEステージ(15)が書き込み処理を行
おうとするオペランドが一致するとき、Fステージ(1
4)によるオペランドのプリフェッチはメモリから行わ
ず、Eステージが書き込もうとしているオペランド値を
バイパスする操作をおこなう。この操作によってメモリ
をリードする動作が1回省ける。
いるオペランドとEステージ(15)が書き込み処理を行
おうとするオペランドが一致するとき、Fステージ(1
4)によるオペランドのプリフェッチはメモリから行わ
ず、Eステージが書き込もうとしているオペランド値を
バイパスする操作をおこなう。この操作によってメモリ
をリードする動作が1回省ける。
分岐予測を行うことにより、条件分岐命令の分岐を予
測し、命令フェッチをあらかじめ分岐先に切り替えるこ
とで、パイプラインの処理効率は一般的に上がる。
測し、命令フェッチをあらかじめ分岐先に切り替えるこ
とで、パイプラインの処理効率は一般的に上がる。
しかし、条件分岐命令で分岐する場合と分岐しない場
合が交互に起こるようなアプリケーション・プログラム
などでは、分岐予測をすることによってかえって効率が
悪くなることもある。
合が交互に起こるようなアプリケーション・プログラム
などでは、分岐予測をすることによってかえって効率が
悪くなることもある。
システムのリセット時やプログラムの走る状況が変化
した場合などは、分岐予測ビットが以前に走っていたプ
ログラムの履歴に従ったものになっているので全くあて
にならなくなる。
した場合などは、分岐予測ビットが以前に走っていたプ
ログラムの履歴に従ったものになっているので全くあて
にならなくなる。
また、マイクロプロセッサの動作をチップの外部ピン
でモニタし、デバッグするような場合、外部アドレス・
バスをモニタすると、分岐予測機構が分岐すると予測し
て外れた場合、1度分岐が起こり、再び分岐してもとの
流れに戻るように見えるため、命令の流れを追うのが困
難になる。
でモニタし、デバッグするような場合、外部アドレス・
バスをモニタすると、分岐予測機構が分岐すると予測し
て外れた場合、1度分岐が起こり、再び分岐してもとの
流れに戻るように見えるため、命令の流れを追うのが困
難になる。
同様に、オペランド・フェッチを外部アドレス・バス
でモニタする場合、オペランドのバイパスが起こると、
Fステージのメモリ・アクセスが外部には見えなくなっ
てしまう。
でモニタする場合、オペランドのバイパスが起こると、
Fステージのメモリ・アクセスが外部には見えなくなっ
てしまう。
前記問題点を解決するために、本発明においては、分
岐予測手段を動作させるかどうかの指定がプログラムの
命令により制御手段の状態を第1,第2のいずれかの状態
に設定することによりできるようにした。
岐予測手段を動作させるかどうかの指定がプログラムの
命令により制御手段の状態を第1,第2のいずれかの状態
に設定することによりできるようにした。
アドレス比較結果に応じてオペランドバイパス手段か
ら出力されるバイパス許可信号により、効率的にバイパ
スが行えるバイパス機構を設け、このバイパス機構を動
作させるかどうかの指定がプログラムの命令により制御
手段の状態を第1,第2のいずれかの状態に設定すること
によりできるようにした。
ら出力されるバイパス許可信号により、効率的にバイパ
スが行えるバイパス機構を設け、このバイパス機構を動
作させるかどうかの指定がプログラムの命令により制御
手段の状態を第1,第2のいずれかの状態に設定すること
によりできるようにした。
また、プログラムの命令により分岐履歴テーブルに登
録された分岐履歴情報を全てクリアするようにした。
録された分岐履歴情報を全てクリアするようにした。
さらに、プログラム実行環境の変化をもたらす予め定
められた命令の実行に応答して、分岐履歴テーブルに登
録された分岐履歴情報を全てクリアするようにした。
められた命令の実行に応答して、分岐履歴テーブルに登
録された分岐履歴情報を全てクリアするようにした。
本発明における手段を用いることによって、分岐予測
手段を用いることでかえって処理効率が落ちる場合や、
外部アドレス・バスをモニタする時などには、プログラ
ムの命令により制御手段の状態を第1,第2のいずれかの
状態に設定(制御レジスタへ値をセット)することによ
り、分岐予測手段を動作させないようにすることができ
る。
手段を用いることでかえって処理効率が落ちる場合や、
外部アドレス・バスをモニタする時などには、プログラ
ムの命令により制御手段の状態を第1,第2のいずれかの
状態に設定(制御レジスタへ値をセット)することによ
り、分岐予測手段を動作させないようにすることができ
る。
プログラムの走る状況が変化するなどして、分岐履歴
があてにならなくなった場合は、プログラムの命令によ
り分岐履歴を全てクリアできる。また、プログラムの実
行状況を変化させるような命令(コンテキスト・スイッ
チ用の命令など)が実行された場合には、分岐履歴が自
動的に全てクリアされる。
があてにならなくなった場合は、プログラムの命令によ
り分岐履歴を全てクリアできる。また、プログラムの実
行状況を変化させるような命令(コンテキスト・スイッ
チ用の命令など)が実行された場合には、分岐履歴が自
動的に全てクリアされる。
オペランド・フェッチを外部アドレス・バスでモニタ
する場合などは、プログラムの命令により制御手段の状
態を第1,第2のいずれかの状態に設定(制御レジスタへ
値をセット)することにより、オペランド・バイパス動
作をさせないようにすることができる。
する場合などは、プログラムの命令により制御手段の状
態を第1,第2のいずれかの状態に設定(制御レジスタへ
値をセット)することにより、オペランド・バイパス動
作をさせないようにすることができる。
(1)機能ブロックの構成 第5図に本発明のデータ処理装置のブロック図を示
す。本発明処理装置の内部を機能的に大きく分けると、
命令フェッチ部(51)、命令デコード部(52)、PC計算
部(53)、オペランドアドレス計算部(54)、マイクロ
ROM部(55)、データ演算部(56)、外部バスインター
フェイス部(57)に分かれる。第5図では、その他にCP
U外部にアドレスを出力するアドレス出力回路(58)とC
PU外部とデータの入出力を行うデータ入出力回路(59)
を他の機能ブロック部と分けて示した。
す。本発明処理装置の内部を機能的に大きく分けると、
命令フェッチ部(51)、命令デコード部(52)、PC計算
部(53)、オペランドアドレス計算部(54)、マイクロ
ROM部(55)、データ演算部(56)、外部バスインター
フェイス部(57)に分かれる。第5図では、その他にCP
U外部にアドレスを出力するアドレス出力回路(58)とC
PU外部とデータの入出力を行うデータ入出力回路(59)
を他の機能ブロック部と分けて示した。
(1.1)命令フェッチ部 命令フェッチ部(51)にはブランチバッファ、命令キ
ューとその制御部などがあり、次にフェッチすべき命令
のアドレスを決定して、ブランチバッファやCPU外部の
メモリから命令をフェッチする。ブランチバッファへの
命令登録も行う。
ューとその制御部などがあり、次にフェッチすべき命令
のアドレスを決定して、ブランチバッファやCPU外部の
メモリから命令をフェッチする。ブランチバッファへの
命令登録も行う。
ブランチバッファは小規模であるためセレクティブキ
ャッシュとして動作する。ブランチバッファの動作の詳
細は特願昭61−202041で詳しく述べられている。
ャッシュとして動作する。ブランチバッファの動作の詳
細は特願昭61−202041で詳しく述べられている。
次にフェッチすべき命令のアドレスは命令キューに入
力すべき命令のアドレスとして専用のカウンタで計算さ
れる。分岐ジャンプが起きたときには、新たな命令のア
ドレスが、PC計算部(53)やデータ演算部(56)より転
送されてくる。
力すべき命令のアドレスとして専用のカウンタで計算さ
れる。分岐ジャンプが起きたときには、新たな命令のア
ドレスが、PC計算部(53)やデータ演算部(56)より転
送されてくる。
CPU外部のメモリから命令をフェッチするときは、外
部バスインターフェイス部(57)を通して、フェッチす
べき命令のアドレスをアドレス出力回路(58)からCPU
外部に出力し、データ入出力回路(59)をから命令コー
ドをフェッチする。
部バスインターフェイス部(57)を通して、フェッチす
べき命令のアドレスをアドレス出力回路(58)からCPU
外部に出力し、データ入出力回路(59)をから命令コー
ドをフェッチする。
バッファリングした命令コードのうち、命令デコード
部(52)で次にデコードすべき命令コードを命令デコー
ド部(52)に出力する。
部(52)で次にデコードすべき命令コードを命令デコー
ド部(52)に出力する。
(1.2)命令デコード部 命令デコード部(52)では基本的に16ビット(ハーフ
ワード)単位に命令コードをデコードする。このブロッ
クには第1ハーフワードに含まれるオペコードをデコー
ドするFHWデコーダ、第2、第3ハーフワードに含まれ
るオペコードをデコードするNFHWデコーダ、アドレッシ
ングモードをデコードするアドレッシングモードデコー
ダが含まれる。
ワード)単位に命令コードをデコードする。このブロッ
クには第1ハーフワードに含まれるオペコードをデコー
ドするFHWデコーダ、第2、第3ハーフワードに含まれ
るオペコードをデコードするNFHWデコーダ、アドレッシ
ングモードをデコードするアドレッシングモードデコー
ダが含まれる。
さらにFHWデコーダやNFHWデコーダの出力をさらにデ
コードして、マイクロROMのエントリアドレスを計算す
るデコーダ2、条件分岐命令の分岐予測を行う分岐予測
機構、オペランドアドレス計算のときのパイプラインコ
ンフリクトをチェックするアドレス計算コンフリクトチ
ェック機構も含まれる。
コードして、マイクロROMのエントリアドレスを計算す
るデコーダ2、条件分岐命令の分岐予測を行う分岐予測
機構、オペランドアドレス計算のときのパイプラインコ
ンフリクトをチェックするアドレス計算コンフリクトチ
ェック機構も含まれる。
命令フェッチ部より入力された命令コードを2クロッ
クにつき0〜6バイトのデコードする。デコード結果の
うち、データ演算部(56)での演算に関する情報がマイ
クロROM部(55)に、オペランドアドレス計算に関係す
る情報がオペランドアドレス計算部(54)に、PC計算に
関係する情報がPC計算部(53)に、それぞれ出力され
る。
クにつき0〜6バイトのデコードする。デコード結果の
うち、データ演算部(56)での演算に関する情報がマイ
クロROM部(55)に、オペランドアドレス計算に関係す
る情報がオペランドアドレス計算部(54)に、PC計算に
関係する情報がPC計算部(53)に、それぞれ出力され
る。
(1.3)マイクロROM部 マイクロROM部(55)には主にデータ演算部(56)を
制御するマイクロプログラムが格納されているマイクロ
ROM、マイクロシーケンサ、マイクロ命令デコーダなど
が含まれる。マイクロ命令はマイクロROMから2クロッ
クに1度読み出される。マイクロシーケンサはマイクロ
プログラムで示されるシーケンス処理の他に、例外、割
込、トラップ(この3つをあわせてEITと呼ぶ)の処理
をハードウエア的に受付ける。またマイクロROM部はス
トアバッファの管理も行う。マイクロROM部には命令コ
ードに依存しない割込みや演算実行結果によるフラッグ
情報と、デコーダ2の出力など命令デコード部の出力が
入力される。マイクロデコーダの出力は主にデータ演算
部(56)に対して出力されるが、ジャンプ命令の実行に
よる他の先行処理中止情報など一部の情報は他のブロッ
クへも出力される。
制御するマイクロプログラムが格納されているマイクロ
ROM、マイクロシーケンサ、マイクロ命令デコーダなど
が含まれる。マイクロ命令はマイクロROMから2クロッ
クに1度読み出される。マイクロシーケンサはマイクロ
プログラムで示されるシーケンス処理の他に、例外、割
込、トラップ(この3つをあわせてEITと呼ぶ)の処理
をハードウエア的に受付ける。またマイクロROM部はス
トアバッファの管理も行う。マイクロROM部には命令コ
ードに依存しない割込みや演算実行結果によるフラッグ
情報と、デコーダ2の出力など命令デコード部の出力が
入力される。マイクロデコーダの出力は主にデータ演算
部(56)に対して出力されるが、ジャンプ命令の実行に
よる他の先行処理中止情報など一部の情報は他のブロッ
クへも出力される。
(1.4)オペランドアドレス計算部 オペランドアドレス計算部(54)は、命令デコード部
(52)のアドレッシングモードデコーダなどから出力さ
れたオペランドアドレス計算に関係する情報によりハー
ドワイヤード制御される。このブロックではオペランド
のアドレス計算に関するほとんどの処理が行われる。メ
モリ間接アドレシングのためのメモリアクセスのアドレ
スやオペラドアドレスがメモリにマップされたI/O領域
に入るかどうかのチェックも行われる。
(52)のアドレッシングモードデコーダなどから出力さ
れたオペランドアドレス計算に関係する情報によりハー
ドワイヤード制御される。このブロックではオペランド
のアドレス計算に関するほとんどの処理が行われる。メ
モリ間接アドレシングのためのメモリアクセスのアドレ
スやオペラドアドレスがメモリにマップされたI/O領域
に入るかどうかのチェックも行われる。
アドレス計算結果は外部バスインターフェイス部(5
7)に送られる。アドレス計算に必要な汎用レジスタや
プログラムカウンタの値はデータ演算部より入力され
る。
7)に送られる。アドレス計算に必要な汎用レジスタや
プログラムカウンタの値はデータ演算部より入力され
る。
メモリ間接アドレッシングを行うときは外部バスイン
ターフェイス部(57)を通してアドレス出力回路(58)
からCPU外部に参照すべきメモリアドレスを出力し、デ
ータ入出力部(59)から入力された間接アドレス値を命
令デコード部(52)をそのまま通過させてフェッチす
る。
ターフェイス部(57)を通してアドレス出力回路(58)
からCPU外部に参照すべきメモリアドレスを出力し、デ
ータ入出力部(59)から入力された間接アドレス値を命
令デコード部(52)をそのまま通過させてフェッチす
る。
(1.5)PC計算部 PC計算部(53)は命令デコード部(52)から出力され
るPC計算に関係する情報でハードワイヤードに制御さ
れ、命令のPC値を計算する。本特許のデータ処理装置は
可変長命令セットを持っており、命令をデコードしてみ
ないとその命令の長さが判らない。PC計算部(53)は、
命令デコード部(52)から出力される命令長をデコード
中の命令のPC値に加算することによりつぎの命令のPC値
を作り出す。また、命令デコード部(52)が、分岐命令
をデコードしてデコード段階での分岐を指示したときは
命令長の代わりに分岐変位を分岐命令のPC値に加算する
ことにより分岐先命令のPC値を計算する。分岐命令に対
して命令デコード段階で分岐を行うことを本発明のデー
タ処理装置ではプリブランチと呼ぶ。プリブランチの方
法については特願昭61−204500と特願昭61−200557で詳
しく述べられている。
るPC計算に関係する情報でハードワイヤードに制御さ
れ、命令のPC値を計算する。本特許のデータ処理装置は
可変長命令セットを持っており、命令をデコードしてみ
ないとその命令の長さが判らない。PC計算部(53)は、
命令デコード部(52)から出力される命令長をデコード
中の命令のPC値に加算することによりつぎの命令のPC値
を作り出す。また、命令デコード部(52)が、分岐命令
をデコードしてデコード段階での分岐を指示したときは
命令長の代わりに分岐変位を分岐命令のPC値に加算する
ことにより分岐先命令のPC値を計算する。分岐命令に対
して命令デコード段階で分岐を行うことを本発明のデー
タ処理装置ではプリブランチと呼ぶ。プリブランチの方
法については特願昭61−204500と特願昭61−200557で詳
しく述べられている。
PC計算部(53)の計算結果は各命令のPC値として命令
のデコード結果とともに出力されるほか、プリブランチ
時には、次にデコードすべき命令のアドレスとして命令
フェッチ部に出力される。
のデコード結果とともに出力されるほか、プリブランチ
時には、次にデコードすべき命令のアドレスとして命令
フェッチ部に出力される。
また、次に命令デコード部(52)でデコードされる命
令の分岐予測のためのアドレスにも使用される。分岐予
測の方法については特願昭62−8394で詳しく述べられて
いる。
令の分岐予測のためのアドレスにも使用される。分岐予
測の方法については特願昭62−8394で詳しく述べられて
いる。
(1.6)データ演算部 データ演算部(56)はマイクロプログラムにより制御
され、マイクロROM部(55)の出力情報に従い、各命令
の機能を実現するに必要な演算をレジスタと演算器で実
行する。演算対象となるオペランドがアドレスや即値の
場合は、オペランドアドレス計算部(54)で計算された
アドレスや即値を外部バスインターフェイス部(57)を
通過させて得る。また、演算対象となるオペランドがCP
U外部のメモリにあるデータの場合は、アドレス計算部
(54)で計算されたアドレスをバスインターフェイス部
(57)がアドレス出力回路(58)から出力して、CPU外
部のメモリからフェッチしたオペランドをデータ入出力
回路(59)から得る。
され、マイクロROM部(55)の出力情報に従い、各命令
の機能を実現するに必要な演算をレジスタと演算器で実
行する。演算対象となるオペランドがアドレスや即値の
場合は、オペランドアドレス計算部(54)で計算された
アドレスや即値を外部バスインターフェイス部(57)を
通過させて得る。また、演算対象となるオペランドがCP
U外部のメモリにあるデータの場合は、アドレス計算部
(54)で計算されたアドレスをバスインターフェイス部
(57)がアドレス出力回路(58)から出力して、CPU外
部のメモリからフェッチしたオペランドをデータ入出力
回路(59)から得る。
演算器としてはALU、バレルシフタ、プライオリティ
エンコーダやカウンタ、シフトレジスタなどがある。レ
ジスタと主な演算器の間は3バスで結合されており、1
つのレジスタ間演算を指示する1マイクロ命令を2クロ
ックサイクルで処理する。
エンコーダやカウンタ、シフトレジスタなどがある。レ
ジスタと主な演算器の間は3バスで結合されており、1
つのレジスタ間演算を指示する1マイクロ命令を2クロ
ックサイクルで処理する。
データ演算のときCPU外部のメモリをアクセスする必
要がある時はマイクロプログラムの指示により外部バス
インターフェイス部(57)を通してアドレス出力回路
(58)からアドレスをCPU外部に出力し、データ入出力
回路(59)を通して目的のデータをフェッチする。
要がある時はマイクロプログラムの指示により外部バス
インターフェイス部(57)を通してアドレス出力回路
(58)からアドレスをCPU外部に出力し、データ入出力
回路(59)を通して目的のデータをフェッチする。
CPU外部のメモリからデータをリードするときは、ア
ドレスをAA1レジスタ(76)に設定し、そのアドレスを
外部バスインターフェイス部(57)を通してアドレス入
出力回路(58)より出力し、データをデータ入出力回路
(59)からDDバス(108)を通してDDR1レジスタ(77)
に取り込む。
ドレスをAA1レジスタ(76)に設定し、そのアドレスを
外部バスインターフェイス部(57)を通してアドレス入
出力回路(58)より出力し、データをデータ入出力回路
(59)からDDバス(108)を通してDDR1レジスタ(77)
に取り込む。
CPU外部のメモリへデータをライトするときは、アド
レスをAA1レジスタ(76)に設定し、そのアドレスを外
部バスインターフェイス部(57)を通してアドレス入出
力回路(58)より出力し、DDR2レジスタ(78)に設定し
たデータをDDバス(108)を通してデータ入出力回路(5
9)よりCPU外部に出力する。
レスをAA1レジスタ(76)に設定し、そのアドレスを外
部バスインターフェイス部(57)を通してアドレス入出
力回路(58)より出力し、DDR2レジスタ(78)に設定し
たデータをDDバス(108)を通してデータ入出力回路(5
9)よりCPU外部に出力する。
ジャンプ命令の処理や例外処理などを行って新たな命
令アドレスをデータ演算部(56)が得たときはこれを命
令フェッチ部(51)とPC計算部(53)に出力する。
令アドレスをデータ演算部(56)が得たときはこれを命
令フェッチ部(51)とPC計算部(53)に出力する。
(1.7)外部バスインターフェイス部 外部バスインターフェイス部(57)は本特許のデータ
処理装置の外部バスでの通信を制御する。メモリのアク
セスはすべてクロック同期で行われ、最小2クロックサ
イクルで行うことができる。
処理装置の外部バスでの通信を制御する。メモリのアク
セスはすべてクロック同期で行われ、最小2クロックサ
イクルで行うことができる。
メモリに対するアクセス要求は命令フェッチ部(5
1)、アドレス計算部(54)、データ演算部(56)から
独立に生じる。さらに、オペランドプリフェッチを行う
ためのアクセス要求も生じる。外部バスインターフェイ
ス部(57)はこれらのメモリアクセス要求を調停する。
さらにメモリとCPUを結ぶデータバスサイズである32ビ
ット(ワード)の整置境界をまたぐメモリ番地にあるデ
ータのアクセスは、このブロック内で自動的にワード境
界をまたぐことを検知して、2回のメモリアクセスに分
解して行う。
1)、アドレス計算部(54)、データ演算部(56)から
独立に生じる。さらに、オペランドプリフェッチを行う
ためのアクセス要求も生じる。外部バスインターフェイ
ス部(57)はこれらのメモリアクセス要求を調停する。
さらにメモリとCPUを結ぶデータバスサイズである32ビ
ット(ワード)の整置境界をまたぐメモリ番地にあるデ
ータのアクセスは、このブロック内で自動的にワード境
界をまたぐことを検知して、2回のメモリアクセスに分
解して行う。
プリフェッチするオペランドとストアするオペランド
が重なる場合の、コンフリクト防止処理やストアオペラ
ンドからフェッチオペランドへのバイパス処理も行う。
が重なる場合の、コンフリクト防止処理やストアオペラ
ンドからフェッチオペランドへのバイパス処理も行う。
命令フェッチ部(51)からのアクセス要求がある場合
は、CAAレジスタ(142)にアドレスが設定される。アド
レス計算部(54)からのアクセス要求がある場合は、IA
レジスタ(126)にアドレスが設定される。データ演算
部(56)からのアクセス要求がある場合は、AA1レジス
タ(76)にアドレスが設定される。
は、CAAレジスタ(142)にアドレスが設定される。アド
レス計算部(54)からのアクセス要求がある場合は、IA
レジスタ(126)にアドレスが設定される。データ演算
部(56)からのアクセス要求がある場合は、AA1レジス
タ(76)にアドレスが設定される。
オペランドのプリフェッチを行うためのアクセス要求
がある場合は、FAレジスタ(127)に設定されたアドレ
スがAAバス(107)に出力され、CPU外部のメモリからオ
ペランドデータがフェッチされる。フェッチされたオペ
ランドデータはDDバス(108)を通してSDATA(80)に入
力される。また、アクセスに用いたAAバス(107)上の
アドレスがSCAM(79)に入力される。SCAM(79)とSDAT
A(80)は一致指示線(90)でつながっている。SDATA
(80)には整地された4バイトのデータが2つまで入
る。SCAM(79)には、SDATA(80)中のデータに対応す
るアドレスが入る。SDATA(80)へのデータの入力は整
地されてなされるが、そのデータをデータ演算部(56)
が取り出して使う時には、任意のアドレスから任意のデ
ータ長(ただし4バイト以内)で取り出しが行える。
がある場合は、FAレジスタ(127)に設定されたアドレ
スがAAバス(107)に出力され、CPU外部のメモリからオ
ペランドデータがフェッチされる。フェッチされたオペ
ランドデータはDDバス(108)を通してSDATA(80)に入
力される。また、アクセスに用いたAAバス(107)上の
アドレスがSCAM(79)に入力される。SCAM(79)とSDAT
A(80)は一致指示線(90)でつながっている。SDATA
(80)には整地された4バイトのデータが2つまで入
る。SCAM(79)には、SDATA(80)中のデータに対応す
るアドレスが入る。SDATA(80)へのデータの入力は整
地されてなされるが、そのデータをデータ演算部(56)
が取り出して使う時には、任意のアドレスから任意のデ
ータ長(ただし4バイト以内)で取り出しが行える。
(2)パイプライン機構 本発明のデータ処理装置のパイプライン処理は第6図
に示す構成となる。命令のプリフェッチを行う命令フェ
ッチステージ(IFステージ(31))、命令のデコードを
行うデコードステージ(Dステージ(32))、オペラン
ドのアドレス計算を行うオペランドアドレス計算ステー
ジ(Aステージ(33))、マイクロROMアクセス(特に
Rステージ(36)と呼ぶ)とオペランドのプリフェッチ
(特にOFステージ(37)と呼ぶ)を行うオペランドフェ
ッチステージ(Fステージ(34))、命令の実行を行う
実行ステージ(Eステージ(35))の5段構成をパイプ
ライン処理の基本とする。Eステージ(35)では1段の
ストアバッファがあるほか、高機能命令の一部は命令実
行自体をパイプライン化するため、実際には5段以上の
パイプライン処理効果がある。
に示す構成となる。命令のプリフェッチを行う命令フェ
ッチステージ(IFステージ(31))、命令のデコードを
行うデコードステージ(Dステージ(32))、オペラン
ドのアドレス計算を行うオペランドアドレス計算ステー
ジ(Aステージ(33))、マイクロROMアクセス(特に
Rステージ(36)と呼ぶ)とオペランドのプリフェッチ
(特にOFステージ(37)と呼ぶ)を行うオペランドフェ
ッチステージ(Fステージ(34))、命令の実行を行う
実行ステージ(Eステージ(35))の5段構成をパイプ
ライン処理の基本とする。Eステージ(35)では1段の
ストアバッファがあるほか、高機能命令の一部は命令実
行自体をパイプライン化するため、実際には5段以上の
パイプライン処理効果がある。
各ステージは他のステージとは独立に動作し、理論上
は5つのステージが完全に独立動作する。各ステージは
1回の処理を最小2クロックで行うことができる。従っ
て理想的には2クロックごとに次々とパイプライン処理
が進行する。
は5つのステージが完全に独立動作する。各ステージは
1回の処理を最小2クロックで行うことができる。従っ
て理想的には2クロックごとに次々とパイプライン処理
が進行する。
本発明のデータ処理装置にはメモリ−メモリ間演算
や、メモリ間接アドレッシングなど、基本パイプライン
処理1回だけでは処理が行えない命令があるが、本発明
のデータ処理装置はこれらの処理に対してもなるべく均
衡したパイプライン処理が行えるように設計されてい
る。複数のメモリオペランドをもつ命令に対してはメモ
リオペランドの数をもとに、デコード段階で複数のパイ
プライン処理単位(ステップコード)に分解してパイプ
ライン処理を行うのである。パイプライン処理単位の分
解方法に関しては特願昭61−236456で詳しく述べられて
いる。
や、メモリ間接アドレッシングなど、基本パイプライン
処理1回だけでは処理が行えない命令があるが、本発明
のデータ処理装置はこれらの処理に対してもなるべく均
衡したパイプライン処理が行えるように設計されてい
る。複数のメモリオペランドをもつ命令に対してはメモ
リオペランドの数をもとに、デコード段階で複数のパイ
プライン処理単位(ステップコード)に分解してパイプ
ライン処理を行うのである。パイプライン処理単位の分
解方法に関しては特願昭61−236456で詳しく述べられて
いる。
IFステージ(31)からDステージ(32)に渡される情
報は命令コードそのものである。Dステージ(32)から
Aステージに渡される情報は命令で指定された演算に関
するもの(Dコード(41)と呼ぶ)と、オペランドのア
ドレス計算に関係するもの(Aコード(42)と呼ぶ)と
の2つある。Aステージ(33)からFステージに渡され
る情報はマイクログラムルーチンのエントリ番地やマイ
クロプログラムへのパラメータなどを含むRコード(4
3)と、オペランドのアドレスとアクセス方法指示情報
などを含むFコード(44)との2つである。Fステージ
(34)からEステージ(35)に渡される情報は演算制御
情報とリテラルなどを含むEコード(45)と、オペラン
ドやオペランドアドレスなどを含むSコード(46)との
2つである。
報は命令コードそのものである。Dステージ(32)から
Aステージに渡される情報は命令で指定された演算に関
するもの(Dコード(41)と呼ぶ)と、オペランドのア
ドレス計算に関係するもの(Aコード(42)と呼ぶ)と
の2つある。Aステージ(33)からFステージに渡され
る情報はマイクログラムルーチンのエントリ番地やマイ
クロプログラムへのパラメータなどを含むRコード(4
3)と、オペランドのアドレスとアクセス方法指示情報
などを含むFコード(44)との2つである。Fステージ
(34)からEステージ(35)に渡される情報は演算制御
情報とリテラルなどを含むEコード(45)と、オペラン
ドやオペランドアドレスなどを含むSコード(46)との
2つである。
Eステージ(35)以外のステージで検出されたEITは
そのコードがEステージ(35)の到達するまではEIT処
理を起動しない。Eステージ(35)で処理されている命
令のみが実行段階の命令であり、IFステージ(31)〜F
ステージ(34)で処理されている命令はまだ実行段階に
到っていないのである。従ってEステージ(35)以外で
検出されたEITは検出したことをステップコード中に記
録して次のステージに伝えられるのみである。
そのコードがEステージ(35)の到達するまではEIT処
理を起動しない。Eステージ(35)で処理されている命
令のみが実行段階の命令であり、IFステージ(31)〜F
ステージ(34)で処理されている命令はまだ実行段階に
到っていないのである。従ってEステージ(35)以外で
検出されたEITは検出したことをステップコード中に記
録して次のステージに伝えられるのみである。
(2.1)パイプライン処理単位 第6図は、本発明におけるパイプライン処理ステージ
を示す。図において、(31)はIFステージ、(32)はD
ステージ、(33)はAステージ、(34)はFステージ、
(35)はEステージ、(36)はRステージ、(37)はOF
ステージ、である。
を示す。図において、(31)はIFステージ、(32)はD
ステージ、(33)はAステージ、(34)はFステージ、
(35)はEステージ、(36)はRステージ、(37)はOF
ステージ、である。
(2.1.1)ステップコードへの命令の分解 本発明のデータ処理装置では上記の命令フォーマット
の特徴を生かしたパイプライン処理を行う。Dステージ
(32)では(2バイトの命令基本部+0〜4バイトのア
ドレッシング修飾部)、(多段間接モード指定部+アド
レッシング修飾部)または命令固有の拡張部を1つのデ
コード単位として処理する。各回のデコード結果をステ
ップコードと呼び、Aステージ(33)以降ではこのステ
ップコードをパイプライン処理の単位としている。ステ
ップコードの数は命令ごとに固有であり、多段間接モー
ド指定を行わないとき、1つの命令は最小1個、最大3
個のステップコードに分かれる。多段間接モード指定が
あればそれだけステップコードが増える。
の特徴を生かしたパイプライン処理を行う。Dステージ
(32)では(2バイトの命令基本部+0〜4バイトのア
ドレッシング修飾部)、(多段間接モード指定部+アド
レッシング修飾部)または命令固有の拡張部を1つのデ
コード単位として処理する。各回のデコード結果をステ
ップコードと呼び、Aステージ(33)以降ではこのステ
ップコードをパイプライン処理の単位としている。ステ
ップコードの数は命令ごとに固有であり、多段間接モー
ド指定を行わないとき、1つの命令は最小1個、最大3
個のステップコードに分かれる。多段間接モード指定が
あればそれだけステップコードが増える。
(2.1.2)プログラムカウンタの管理 本発明のデータ処理装置のパイプライン上に存在する
ステップコードはすべて別命令に対するものである可能
性があり、プログラムカウンタの値はステップコードご
とに管理する。すべてのステップコードはそのステップ
コードのもとになった命令のプログラムカウンタ値をも
つ。ステップコードに付属してパイプラインの各ステー
ジを流れるプログラムカウンタ値はステッププログラム
カウンタ(SPC)と呼ぶ。SPCはパイプラインステージを
次々と受け渡されていく。
ステップコードはすべて別命令に対するものである可能
性があり、プログラムカウンタの値はステップコードご
とに管理する。すべてのステップコードはそのステップ
コードのもとになった命令のプログラムカウンタ値をも
つ。ステップコードに付属してパイプラインの各ステー
ジを流れるプログラムカウンタ値はステッププログラム
カウンタ(SPC)と呼ぶ。SPCはパイプラインステージを
次々と受け渡されていく。
(2.2)各パイプラインステージの処理 各パイプラインステージの入出力ステップコードには
第6図に示したように便宜上名前が付けられている。ま
たステップコードはオペコードに関する処理を行い、マ
イクロROMのエントリ番地やEステージ(35)に対する
パラメータなどになる系列とEステージ(35)のマイク
ロ命令に対するオペランドになる系列の2系列がある。
第6図に示したように便宜上名前が付けられている。ま
たステップコードはオペコードに関する処理を行い、マ
イクロROMのエントリ番地やEステージ(35)に対する
パラメータなどになる系列とEステージ(35)のマイク
ロ命令に対するオペランドになる系列の2系列がある。
(2.2.1)命令フェッチステージ 命令フェッチステージ(IFステージ(31))は命令を
メモリやブランチバッファからフェッチし、命令キュー
に入力して、Dステージ(32)に対して命令コードを出
力する。命令キューの入力は整置された4バイト単位で
行う。メモリから命令をフェッチするときは整置された
4バイトにつき最小2クロックを要する。ブランチバッ
ファがヒットした時は整置された4バイトにつき1クロ
ックでフェッチ可能である。命令キューの出力単位は2
バイトごとに可変であり、2クロックの間に最大6バイ
トまで出力できる。また分岐の直後には命令キューをバ
イパスして命令基本部2バイトを直接命令デコーダに転
送することもできる。
メモリやブランチバッファからフェッチし、命令キュー
に入力して、Dステージ(32)に対して命令コードを出
力する。命令キューの入力は整置された4バイト単位で
行う。メモリから命令をフェッチするときは整置された
4バイトにつき最小2クロックを要する。ブランチバッ
ファがヒットした時は整置された4バイトにつき1クロ
ックでフェッチ可能である。命令キューの出力単位は2
バイトごとに可変であり、2クロックの間に最大6バイ
トまで出力できる。また分岐の直後には命令キューをバ
イパスして命令基本部2バイトを直接命令デコーダに転
送することもできる。
ブランチバッファへの命令の登録やクリアなどの制
御、プリフェッチ先命令アドレスの管理や命令キューの
制御もIFステージ(31)で行う。
御、プリフェッチ先命令アドレスの管理や命令キューの
制御もIFステージ(31)で行う。
IFステージ(31)で検出するEITには命令をメモリか
らフェッチするときのバスアクセス例外や、メモリ保護
違反などによるアドレス変換例外がある。
らフェッチするときのバスアクセス例外や、メモリ保護
違反などによるアドレス変換例外がある。
(2.2.2)命令デコードステージ 命令デコードステージ(Dステージ(32))はIFステ
ージ(31)から入力された命令コードをデコードする。
デコードは命令デコード部(52)のFHWデコーダ、NFHW
デコーダ、アドレッシングモードデコーダを使用して、
2クロック単位に1度行ない、1回のデコード処理で、
0〜6バイトの命令コードを消費する(RET命令の復帰
先アドレスを含むステップコードの出力処理などでは命
令コードを消費しない)。1回のデコードでAステージ
(33)に対してアドレス計算情報であるAコード(42)
である約35ビットの制御コードと最大32ビットアドレス
修飾情報と、オペコードの中間デコード結果であるDコ
ード(41)である約50ビットの制御コードと8ビットの
リテラル情報と、を出力する。
ージ(31)から入力された命令コードをデコードする。
デコードは命令デコード部(52)のFHWデコーダ、NFHW
デコーダ、アドレッシングモードデコーダを使用して、
2クロック単位に1度行ない、1回のデコード処理で、
0〜6バイトの命令コードを消費する(RET命令の復帰
先アドレスを含むステップコードの出力処理などでは命
令コードを消費しない)。1回のデコードでAステージ
(33)に対してアドレス計算情報であるAコード(42)
である約35ビットの制御コードと最大32ビットアドレス
修飾情報と、オペコードの中間デコード結果であるDコ
ード(41)である約50ビットの制御コードと8ビットの
リテラル情報と、を出力する。
Dステージ(32)では各命令のPC計算部(53)の制
御、分岐予測処理、プリブランチ命令に対するプリブラ
ンチ処理、命令キューからの命令コード出力処理も行
う。
御、分岐予測処理、プリブランチ命令に対するプリブラ
ンチ処理、命令キューからの命令コード出力処理も行
う。
Dステージ(32)で検出するEITには予約命令例外、
プリブランチ時の奇数アドレスジャンプトラップがあ
る。また、IFステージ(31)より転送されてきた各種EI
Tはステップコード内にエンコードする処理をしてAス
テージ(33)に転送する。
プリブランチ時の奇数アドレスジャンプトラップがあ
る。また、IFステージ(31)より転送されてきた各種EI
Tはステップコード内にエンコードする処理をしてAス
テージ(33)に転送する。
(2.2.3)オペランドアドレス計算ステージ オペランドアドレス計算ステージ(Aステージ(3
3))は処理が大きく2つに分かれる。1つは命令デコ
ード部(52)のデコーダ2を使用して、オペコードの後
段デコードを行う処理で、他方はオペランドアドレス計
算部(54)でオペランドアドレスの計算を行う処理であ
る。
3))は処理が大きく2つに分かれる。1つは命令デコ
ード部(52)のデコーダ2を使用して、オペコードの後
段デコードを行う処理で、他方はオペランドアドレス計
算部(54)でオペランドアドレスの計算を行う処理であ
る。
オペコードの後段デコード処理はDコード(41)を入
力とし、レジスタやメモリの書き込み予約及びマイクロ
プログラムのエントリ番地とマイクロプログラムに対す
るパラメータなどを含むRコード(43)の出力を行う。
なお、レジスタやメモリの書き込み予約は、アドレス計
算で参照したレジスタやメモリの内容が、パイプライン
上を先行する命令で書き換えられ、誤ったアドレス計算
が行われるのを防ぐためのものである。レジスタやメモ
リの書き込み予約はデッドロックを避けるため、ステッ
プコードごとに行うのではなく命令ごとに行う。レジス
タやメモリの書き込み予約については特願昭62−144394
で詳しく述べられている。
力とし、レジスタやメモリの書き込み予約及びマイクロ
プログラムのエントリ番地とマイクロプログラムに対す
るパラメータなどを含むRコード(43)の出力を行う。
なお、レジスタやメモリの書き込み予約は、アドレス計
算で参照したレジスタやメモリの内容が、パイプライン
上を先行する命令で書き換えられ、誤ったアドレス計算
が行われるのを防ぐためのものである。レジスタやメモ
リの書き込み予約はデッドロックを避けるため、ステッ
プコードごとに行うのではなく命令ごとに行う。レジス
タやメモリの書き込み予約については特願昭62−144394
で詳しく述べられている。
オペランドアドレス計算処理はAコード(42)を入力
とし、Aコード(42)に従いオペランドアドレス計算部
(54)で加算やメモリ間接参照を組み合わせてアドレス
計算を行い、その計算結果をFコード(44)として出力
する。この際、アドレス計算に伴うレジスタやメモリの
読み出し時にコンフリクトチェックを行い、先行命令が
レジスタやメモリに書き込み処理を終了していないため
コンフリクトが指示されれば、先行命令がEステージ
(35)で書き込み処理を終了するまで待つ。また、オペ
ランドアドレスやメモリ間接参照のアドレスがメモリに
マップされたI/O領域に入るかどうかのチェックも行
う。
とし、Aコード(42)に従いオペランドアドレス計算部
(54)で加算やメモリ間接参照を組み合わせてアドレス
計算を行い、その計算結果をFコード(44)として出力
する。この際、アドレス計算に伴うレジスタやメモリの
読み出し時にコンフリクトチェックを行い、先行命令が
レジスタやメモリに書き込み処理を終了していないため
コンフリクトが指示されれば、先行命令がEステージ
(35)で書き込み処理を終了するまで待つ。また、オペ
ランドアドレスやメモリ間接参照のアドレスがメモリに
マップされたI/O領域に入るかどうかのチェックも行
う。
Aステージ(33)で検出するEITには予約命令例外、
特権命令例外、バスアクセス例外、アドレス変換例外、
メモリ間接アドレッシングのときのオペランドブレイク
ポイントヒットによるデバックトラップがある。Dコー
ド(41)、Aコード(42)自体がEITを起こしたことを
示しておれば、Aステージ(33)はそのコードに対して
アドレス計算処理をせず、そのEITをRコード(43)や
Fコード(44)に伝える。
特権命令例外、バスアクセス例外、アドレス変換例外、
メモリ間接アドレッシングのときのオペランドブレイク
ポイントヒットによるデバックトラップがある。Dコー
ド(41)、Aコード(42)自体がEITを起こしたことを
示しておれば、Aステージ(33)はそのコードに対して
アドレス計算処理をせず、そのEITをRコード(43)や
Fコード(44)に伝える。
(2.2.4)マイクロROMアクセスステージ オペランドフェッチステージ(Fステージ(34))も
処理が大きく2つに分かれる。1つはマイクロROMのア
クセス処理であり、特にRステージ(36)と呼ぶ。他方
はオペランドプリフェッチ処理であり、特にOFステージ
(37)と呼ぶ。Rステージ(36)とOFステージ(37)は
必ずしも同時に動作するわけではなく、メモリアクセス
権が獲得できるかどうかなどに依存して、独立に動作す
る。
処理が大きく2つに分かれる。1つはマイクロROMのア
クセス処理であり、特にRステージ(36)と呼ぶ。他方
はオペランドプリフェッチ処理であり、特にOFステージ
(37)と呼ぶ。Rステージ(36)とOFステージ(37)は
必ずしも同時に動作するわけではなく、メモリアクセス
権が獲得できるかどうかなどに依存して、独立に動作す
る。
Rステージ(36)の処理であるマイクロROMアクセス
処理はRコードに対して次のEステージでの実行に使用
する実行制御コードであるEコードを作り出すためのマ
イクロROMアクセスとマイクロ命令デコード処理であ
る。1つのRコードに対する処理が2つ以上のマイクロ
プログラムステップに分解される場合、マイクロROMは
Eステージ(35)で使用され、次のRコード(43)はマ
イクロROMアクセス待ちになる。Rコード(43)に対す
るマイクロROMアクセスが行われるのはその前のEステ
ージ(35)での最後のマイクロ命令実行の時である。本
発明のデータ処理装置ではほとんどの基本命令は1マイ
クロプログラムステップで行われるため実際にはRコー
ド(43)に対するマイクロROMアクセスが次々と行われ
ることが多い。
処理はRコードに対して次のEステージでの実行に使用
する実行制御コードであるEコードを作り出すためのマ
イクロROMアクセスとマイクロ命令デコード処理であ
る。1つのRコードに対する処理が2つ以上のマイクロ
プログラムステップに分解される場合、マイクロROMは
Eステージ(35)で使用され、次のRコード(43)はマ
イクロROMアクセス待ちになる。Rコード(43)に対す
るマイクロROMアクセスが行われるのはその前のEステ
ージ(35)での最後のマイクロ命令実行の時である。本
発明のデータ処理装置ではほとんどの基本命令は1マイ
クロプログラムステップで行われるため実際にはRコー
ド(43)に対するマイクロROMアクセスが次々と行われ
ることが多い。
Rステージ(36)で新たに検出するEITはない。Rコ
ード(36)が命令処理再実行型のEITを示しているとき
はそのEIT処理に対するマイクロプログラムが実行され
るのでRステージ(36)はそのRコード(43)に従った
マイクロ命令をフェッチする。Rコード(43)が奇数ア
ドレスジャンプトラップを示しているときRステージ
(36)はそれをEコード(45)に伝える。これぱプリブ
ランチに対するもので、Eステージ(35)ではそのEコ
ード(45)で分岐が生じなければそのプリブランチを有
効として奇数アドレスジャンプトラップを発生する。
ード(36)が命令処理再実行型のEITを示しているとき
はそのEIT処理に対するマイクロプログラムが実行され
るのでRステージ(36)はそのRコード(43)に従った
マイクロ命令をフェッチする。Rコード(43)が奇数ア
ドレスジャンプトラップを示しているときRステージ
(36)はそれをEコード(45)に伝える。これぱプリブ
ランチに対するもので、Eステージ(35)ではそのEコ
ード(45)で分岐が生じなければそのプリブランチを有
効として奇数アドレスジャンプトラップを発生する。
(2.2.5)オペランドフェッチステージ オペランドフェッチステージ(OFステージ(37))は
Fステージ(34)で行う上記の2つの処理のうちオペラ
ンドプリフェッチ処理を行う。
Fステージ(34)で行う上記の2つの処理のうちオペラ
ンドプリフェッチ処理を行う。
オペランドプリフェッチはFコード(44)を入力と
し、フェッチしたオペランドとそのアドレスをSコード
(46)として出力する。1つのFコード(44)ではワー
ド境界をまたいでもよいが4バイト以下のオペランドフ
ェッチを指定する。Fコード(44)にはオペランドのア
クセスを行うかどうかの指定も含まれており、Aステー
ジ(33)で計算したオペランドアドレス自体や即値をE
ステージ(35)に転送する場合にはオペランドプリフェ
ッチは行わず、Fコード(44)の内容をSコード(46)
として転送する。プリフェッチしようとするオペランド
とEステージ(35)が書き込み処理を行おうとするオペ
ランドが一致するときは、オペランドプリフェッチはメ
モリから行わず、バイパスして行なう。またI/O領域に
対してはオペランドプリフェッチを遅延させ、先行命令
がすべて完了するまで待ってオペランドフェッチを行
う。
し、フェッチしたオペランドとそのアドレスをSコード
(46)として出力する。1つのFコード(44)ではワー
ド境界をまたいでもよいが4バイト以下のオペランドフ
ェッチを指定する。Fコード(44)にはオペランドのア
クセスを行うかどうかの指定も含まれており、Aステー
ジ(33)で計算したオペランドアドレス自体や即値をE
ステージ(35)に転送する場合にはオペランドプリフェ
ッチは行わず、Fコード(44)の内容をSコード(46)
として転送する。プリフェッチしようとするオペランド
とEステージ(35)が書き込み処理を行おうとするオペ
ランドが一致するときは、オペランドプリフェッチはメ
モリから行わず、バイパスして行なう。またI/O領域に
対してはオペランドプリフェッチを遅延させ、先行命令
がすべて完了するまで待ってオペランドフェッチを行
う。
OFステージ(37)で検出するEITにはバスアクセス例
外、アドレス変換例外、オペランドプリフェッチに対す
るブレイクポイントヒットによるデバッグトラップがあ
る。Fコード(44)がデバッグトラップ以外のEITを示
しているときはそれをSコード(46)に転送し、オペラ
ンドプリフェッチは行わない。Fコード(44)がデバッ
グトラップを示しているときはそのFコード(44)に対
してEITを示していないときと同じ処理をすると共にデ
バッグトラップをSコード(46)に伝える。
外、アドレス変換例外、オペランドプリフェッチに対す
るブレイクポイントヒットによるデバッグトラップがあ
る。Fコード(44)がデバッグトラップ以外のEITを示
しているときはそれをSコード(46)に転送し、オペラ
ンドプリフェッチは行わない。Fコード(44)がデバッ
グトラップを示しているときはそのFコード(44)に対
してEITを示していないときと同じ処理をすると共にデ
バッグトラップをSコード(46)に伝える。
(2.2.6)実行ステージ 実行ステージ(Eステージ(35))はEコード(4
5)、Sコード(46)を入力として動作する。このEス
テージ(35)が命令を実行するステージであり、Fステ
ージ(34)以前のステージで行われた処理はすべてEス
テージ(35)のための前処理である。Eステージ(35)
でジャンプ命令が実行されたり、EIT処理が起動された
りしたときは、IFステージ(31)〜Fステージ(34)ま
での処理はすべて無効化される。Eステージ(35)はマ
イクロプログラムにより制御され、Rコード(45)に示
されたマイクロプログラムのエントリ番地からの一連の
マイクロプログラムを実行することにより命令を実行す
る。
5)、Sコード(46)を入力として動作する。このEス
テージ(35)が命令を実行するステージであり、Fステ
ージ(34)以前のステージで行われた処理はすべてEス
テージ(35)のための前処理である。Eステージ(35)
でジャンプ命令が実行されたり、EIT処理が起動された
りしたときは、IFステージ(31)〜Fステージ(34)ま
での処理はすべて無効化される。Eステージ(35)はマ
イクロプログラムにより制御され、Rコード(45)に示
されたマイクロプログラムのエントリ番地からの一連の
マイクロプログラムを実行することにより命令を実行す
る。
マイクロROMの読み出しとマイクロ命令の実行はパイ
プライン化されて行われる。従ってマイクロプログラム
で分岐が起きたときは1マイクロステップの空きができ
る。また、Eステージ(35)はデータ演算部(56)にあ
るストアバッファを利用して、4バイト以内のオペラン
ドストアと次のマイクロ命令実行をパイプライン処理す
ることもできる。
プライン化されて行われる。従ってマイクロプログラム
で分岐が起きたときは1マイクロステップの空きができ
る。また、Eステージ(35)はデータ演算部(56)にあ
るストアバッファを利用して、4バイト以内のオペラン
ドストアと次のマイクロ命令実行をパイプライン処理す
ることもできる。
Eステージ(35)ではAステージ(33)で行ったレジ
スタやメモリに対する書き込み予約をオペランドの書き
込みの後、解除する。
スタやメモリに対する書き込み予約をオペランドの書き
込みの後、解除する。
また条件分岐命令がEステージ(35)で分岐を起こし
たときはその条件分岐命令に対する分岐予測が誤ってい
たのであるから分岐履歴の書換えを行う。
たときはその条件分岐命令に対する分岐予測が誤ってい
たのであるから分岐履歴の書換えを行う。
Eステージ(35)で検出されるEITにはバスアクセス
例外、アドレス変換例外、デバッグトラップ、奇数アド
レスジャンプトラップ、予約機能例外、不正オペランド
例外、予約スタックフォーマット例外、ゼロ除算トラッ
プ、無条件トラップ、条件トラップ、遅延コンテキスト
トラップ、外部割込、遅延割込、リセット割込、システ
ム障害がある。
例外、アドレス変換例外、デバッグトラップ、奇数アド
レスジャンプトラップ、予約機能例外、不正オペランド
例外、予約スタックフォーマット例外、ゼロ除算トラッ
プ、無条件トラップ、条件トラップ、遅延コンテキスト
トラップ、外部割込、遅延割込、リセット割込、システ
ム障害がある。
Eステージ(35)で検出されたEITはすべてEIT処理さ
れるがEステージ以前のIFステージ(31)〜Fステージ
(34)の間で検出されRコード(43)やSコード(46)
に反映されているEITは必ずEIT処理されるとは限らな
い。IFステージ(31)〜Fステージ(34)の間で検出し
たが、先行の命令がEステージ(35)でジャンプ命令が
実行されたなどの原因でEステージ(35)まで到達しな
かったEITはすべてキャンセルされる。そのEITを起こし
た命令はそもそも実行されなかったことになる。
れるがEステージ以前のIFステージ(31)〜Fステージ
(34)の間で検出されRコード(43)やSコード(46)
に反映されているEITは必ずEIT処理されるとは限らな
い。IFステージ(31)〜Fステージ(34)の間で検出し
たが、先行の命令がEステージ(35)でジャンプ命令が
実行されたなどの原因でEステージ(35)まで到達しな
かったEITはすべてキャンセルされる。そのEITを起こし
た命令はそもそも実行されなかったことになる。
外部割込や遅延割込は命令の切れ目でEステージ(3
5)で直接受け付けられ、マイクロプログラムにより必
要な処理が実行される。その他の各種EITも処理はマイ
クロプログラムにより行われる。
5)で直接受け付けられ、マイクロプログラムにより必
要な処理が実行される。その他の各種EITも処理はマイ
クロプログラムにより行われる。
(2.3)各パイプラインステージの状態制御 パイプラインの各ステージは入力ラッチと出力ラッチ
を持ち、他のステージとは独立に動作することを基本と
する。各ステージは1つ前に行った処理が終わり、その
処理結果を出力ラッチから次のステージの入力ラッチに
転送し、自分のステージの入力ラッチに次の処理に必要
な入力信号がすべてそろえば次の処理を開始する。
を持ち、他のステージとは独立に動作することを基本と
する。各ステージは1つ前に行った処理が終わり、その
処理結果を出力ラッチから次のステージの入力ラッチに
転送し、自分のステージの入力ラッチに次の処理に必要
な入力信号がすべてそろえば次の処理を開始する。
つまり、各ステージは、1つ前段のステージから出力
されてくる次の処理に対する入力信号がすべて有効とな
り、今の処理結果を後段のステージの入力ラッチに転送
して出力ラッチが空になると次の処理を開始する。
されてくる次の処理に対する入力信号がすべて有効とな
り、今の処理結果を後段のステージの入力ラッチに転送
して出力ラッチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミ
ングで入力信号がすべてそろっている必要がある。入力
信号がそろっていないと、そのステージは待ち状態(入
力待ち)になる。出力ラッチから次のステージの入力ラ
ッチへの転送を行うときは次のステージの入力ラッチが
空き状態になっている必要があり、次のステージの入力
ラッチが空きでない場合もパイプラインステージは待ち
状態(出力待ち)になる。必要なメモリアクセス権が獲
得できなかったり、処理しているメモリアクセスにウエ
イトが挿入されたり、その他のパイプラインコンフリク
トが生じると、各ステージの処理自体が遅延する。
ングで入力信号がすべてそろっている必要がある。入力
信号がそろっていないと、そのステージは待ち状態(入
力待ち)になる。出力ラッチから次のステージの入力ラ
ッチへの転送を行うときは次のステージの入力ラッチが
空き状態になっている必要があり、次のステージの入力
ラッチが空きでない場合もパイプラインステージは待ち
状態(出力待ち)になる。必要なメモリアクセス権が獲
得できなかったり、処理しているメモリアクセスにウエ
イトが挿入されたり、その他のパイプラインコンフリク
トが生じると、各ステージの処理自体が遅延する。
(3)分岐命令の処理 本発明のデータ処理装置では上記に説明したように多
段のパイプライン処理を採用しているため分岐命令を実
行した際のオーバーヘッドが大きい。このオーバーヘッ
ドを小さくするため動的分岐予測処理を行う。動的分岐
予測処理は実行ステージで分岐を行う代わりにデコード
ステージで分岐を行うことによりなるべく早く分岐先命
令を取り込むことを狙いとしている。
段のパイプライン処理を採用しているため分岐命令を実
行した際のオーバーヘッドが大きい。このオーバーヘッ
ドを小さくするため動的分岐予測処理を行う。動的分岐
予測処理は実行ステージで分岐を行う代わりにデコード
ステージで分岐を行うことによりなるべく早く分岐先命
令を取り込むことを狙いとしている。
本発明のデータ処理装置に限らず、データ処理装置で
は、一般に分岐命令が実行される頻度は大きく、動的分
岐予測処理による性能改善効果は大きい。
は、一般に分岐命令が実行される頻度は大きく、動的分
岐予測処理による性能改善効果は大きい。
(3.1)分岐命令の種類 本発明のデータ処理装置では動的分岐予測処理を行う
命令をプリブランチ命令と呼ぶ。プリブランチ命令には
無条件分岐命令のように、動的な予測にかかわらず、必
ず分岐する命令も含む。
命令をプリブランチ命令と呼ぶ。プリブランチ命令には
無条件分岐命令のように、動的な予測にかかわらず、必
ず分岐する命令も含む。
本発明のデータ処理装置がもつ分岐命令は分岐条件が
スタティックかダイナミックか及び分岐先がスタティッ
クかダイナミックかにより計4種類に分類できるが、本
発明のデータ理想値ではこのうちつぎの2種類に分類さ
れる命令をプリブランチ命令とする。
スタティックかダイナミックか及び分岐先がスタティッ
クかダイナミックかにより計4種類に分類できるが、本
発明のデータ理想値ではこのうちつぎの2種類に分類さ
れる命令をプリブランチ命令とする。
第1の種類の分岐命令は分岐条件、分岐先ともスタテ
ィックな命令である。この種の命令には無条件分岐命令
(BRA)とサブルーチン呼び出し命令(BSR)がある。第
2の種類の分岐命令は分岐条件がダイナミックで分岐先
がスタティックな命令である。この種の命令には条件分
岐命令(Bcc),ループ制御命令(ACB)がある。
ィックな命令である。この種の命令には無条件分岐命令
(BRA)とサブルーチン呼び出し命令(BSR)がある。第
2の種類の分岐命令は分岐条件がダイナミックで分岐先
がスタティックな命令である。この種の命令には条件分
岐命令(Bcc),ループ制御命令(ACB)がある。
(3.2)分岐命令処理回路の機能構成 第4図に本発明のデータ処理装置の分岐命令処理回路
の構成を示す。第4図には命令フェッチ部(51)、命令
デコード部(52)、PC計算部(53)、オペランドアドレ
ス計算部(54)、データ演算部(56)、外部バスインタ
ーフェイス部(57)のそれぞれに含まれる回路の部分詳
細図と、アドレス出力回路(58)、データ入力回路(5
9)よりなる。
の構成を示す。第4図には命令フェッチ部(51)、命令
デコード部(52)、PC計算部(53)、オペランドアドレ
ス計算部(54)、データ演算部(56)、外部バスインタ
ーフェイス部(57)のそれぞれに含まれる回路の部分詳
細図と、アドレス出力回路(58)、データ入力回路(5
9)よりなる。
命令デコーダ(111)とPC加算器(132)の入力側、ア
ドレス加算器(124)の入力側は、ディスプレースメン
ト値、分岐命令の変位値を転送するDISPバス(100)で
結ばれている。命令デコーダ(111)とアドレス加算器
(124)の入力側はステップコード生成に使用した命令
コード長、スタックプッシュモードのときのプリデクリ
メント値などを転送する補正値バス(101)でも結ばれ
ている。命令デコーダ(111)とPC加算器(132)の入力
側はステップコード生成に使用した命令コード長を転送
する命令長バス(101)でも結ばれている。レジスタフ
ァイル(144)とアドレス加算器(124)入力側はレジス
タファイル(144)に蓄えられているアドレス値を転送
するAバス(103)で結ばれている。
ドレス加算器(124)の入力側は、ディスプレースメン
ト値、分岐命令の変位値を転送するDISPバス(100)で
結ばれている。命令デコーダ(111)とアドレス加算器
(124)の入力側はステップコード生成に使用した命令
コード長、スタックプッシュモードのときのプリデクリ
メント値などを転送する補正値バス(101)でも結ばれ
ている。命令デコーダ(111)とPC加算器(132)の入力
側はステップコード生成に使用した命令コード長を転送
する命令長バス(101)でも結ばれている。レジスタフ
ァイル(144)とアドレス加算器(124)入力側はレジス
タファイル(144)に蓄えられているアドレス値を転送
するAバス(103)で結ばれている。
命令データ(111)には命令キュー(112)から命令コ
ードが入力され、分岐予測テーブル(113)から分岐予
測ビットが入力される。命令デコーダ(111)の出力部
には、分岐予測結果により、条件分岐命令の分岐条件指
定フィールドを、Eステージ(35)にそのまま出力する
か条件指定を反転して出力するかの選択を行う、分岐条
件生成回路(114)がある。
ードが入力され、分岐予測テーブル(113)から分岐予
測ビットが入力される。命令デコーダ(111)の出力部
には、分岐予測結果により、条件分岐命令の分岐条件指
定フィールドを、Eステージ(35)にそのまま出力する
か条件指定を反転して出力するかの選択を行う、分岐条
件生成回路(114)がある。
命令長バス(101)の値とDISPバス(100)の値のどち
らかを選択して入力する被加算値選択回路(131)の出
力と、Dステージ(32)でデコードした命令のPC値を保
持するDPC(135)またはステップコードの切れ目毎の作
業用PC値を保持するTPC(134)のどちらかと、はPC加算
器(132)に入力される。PC加算器(132)の出力はPC加
算器出力ラッチ(133)を通してCAバス(104)やPOバス
(105)に出力される。POバス(105)はラッチTPC(13
4)、ラッチDPC(135)、Aステージで処理中の命令のP
C値を保持するラッチAPC(136)、さらに分岐予測テー
ブル(113)にも結合している。TPC(134)にはEステ
ージ(35)で分岐やジャンプが生じたとき、新たな命令
番地を入力するため、CAバス(103)からの入力経路も
ある。
らかを選択して入力する被加算値選択回路(131)の出
力と、Dステージ(32)でデコードした命令のPC値を保
持するDPC(135)またはステップコードの切れ目毎の作
業用PC値を保持するTPC(134)のどちらかと、はPC加算
器(132)に入力される。PC加算器(132)の出力はPC加
算器出力ラッチ(133)を通してCAバス(104)やPOバス
(105)に出力される。POバス(105)はラッチTPC(13
4)、ラッチDPC(135)、Aステージで処理中の命令のP
C値を保持するラッチAPC(136)、さらに分岐予測テー
ブル(113)にも結合している。TPC(134)にはEステ
ージ(35)で分岐やジャンプが生じたとき、新たな命令
番地を入力するため、CAバス(103)からの入力経路も
ある。
補正値バス(102)の出力とDISPバス(100)の出力は
ディスプレースメント選択回路(122)に入力され、ど
ちらか一方がアドレス加算器(124)に入力される。DIS
Pバス(100)出力とAバス(103)出力はベースアドレ
ス選択回路(123)に入力され、どちらか一方がアドレ
ス加算器(124)に入力される。アドレス加算器(124)
は、ディスプレースメント選択回路(122)の出力、ベ
ースアドレス選択回路(123)の出力、それにAバス(1
03)より入力された値をシフトすることにより、1倍、
2倍、4倍、8倍の値とするインデックス値生成回路
(121)の出力、の計3つの値を入力として、3値加算
を行う。アドレス加算値(124)の出力値はアドレス加
算器出力ラッチ(125)を通して、AOバス(106)に出力
される。AOバス(106)は、メモリ間接アドレッシング
を行うとき、AAバス(107)を通してアドレス出力回路
(58)からCPU外部にアドレス値を出力するときそのア
ドレス値を保持するラッチIA(126)と、Fステージで
のオペランドプリフェッチ時に、AAバス(107)を通し
てアドレス出力回路(58)からCPU外部にオペランドア
ドレス値を出力するとき、そのオペランドアドレス保持
するラッチFA(127)と、につながる。
ディスプレースメント選択回路(122)に入力され、ど
ちらか一方がアドレス加算器(124)に入力される。DIS
Pバス(100)出力とAバス(103)出力はベースアドレ
ス選択回路(123)に入力され、どちらか一方がアドレ
ス加算器(124)に入力される。アドレス加算器(124)
は、ディスプレースメント選択回路(122)の出力、ベ
ースアドレス選択回路(123)の出力、それにAバス(1
03)より入力された値をシフトすることにより、1倍、
2倍、4倍、8倍の値とするインデックス値生成回路
(121)の出力、の計3つの値を入力として、3値加算
を行う。アドレス加算値(124)の出力値はアドレス加
算器出力ラッチ(125)を通して、AOバス(106)に出力
される。AOバス(106)は、メモリ間接アドレッシング
を行うとき、AAバス(107)を通してアドレス出力回路
(58)からCPU外部にアドレス値を出力するときそのア
ドレス値を保持するラッチIA(126)と、Fステージで
のオペランドプリフェッチ時に、AAバス(107)を通し
てアドレス出力回路(58)からCPU外部にオペランドア
ドレス値を出力するとき、そのオペランドアドレス保持
するラッチFA(127)と、につながる。
FA(127)は、アドレス加算器(124)で計算されたオ
ペランドアドレスをEステージ(35)で使用するために
オペランドアドレス値を保持するラッチSA(141)への
出力経路をもつ。SA(141)はデータ演算部(56)の汎
用データバスであるSバス(109)への出力経路をも
つ。命令のアドレスを転送するCAバス(104)はPC加算
器出力ラッチ(133)と、TPC(134)と、命令フェッチ
部(51)がプリフェッチする命令コードの番地を管理す
るカウンタQINPC(115)と、命令フェッチのためのアド
レスをAAバス(107)を通してアドレス出力回路(58)
からCPU外部に出力するときその値を保持するラッチCAA
(142)と、Eステージ(35)で分岐やジャンプが起き
たときに新たな命令番地をSバス(109)から入力する
ラッチEB(143)と、に結合している。APC(136)はA
バス(103)と、Fステージ(34)で処理中の命令のPC
値を保持するラッチFPC(137)とに出力経路がある。FP
C(137)はEステージ(35)で処理中の命令のPC値を保
持するラッチCPC(138)への出力経路をもつ。CPC(13
8)はSバス(109)と、分岐履歴書換えのためにPC値の
最下位バイトの値を保持するラッチOPC(139)とに出力
経路をもつ。レジスタファイル(144)は汎用レジスタ
や作業用レジストなどからなり、Sバス(109)とAバ
ス(103)への出力経路をもち、Dバス(110)から入力
経路を持つ。データ演算部(56)の演算機構であるデー
タ演算器(145)はSバス(109)から入力経路をもち、
Dバス(110)への出力経路を持つ。
ペランドアドレスをEステージ(35)で使用するために
オペランドアドレス値を保持するラッチSA(141)への
出力経路をもつ。SA(141)はデータ演算部(56)の汎
用データバスであるSバス(109)への出力経路をも
つ。命令のアドレスを転送するCAバス(104)はPC加算
器出力ラッチ(133)と、TPC(134)と、命令フェッチ
部(51)がプリフェッチする命令コードの番地を管理す
るカウンタQINPC(115)と、命令フェッチのためのアド
レスをAAバス(107)を通してアドレス出力回路(58)
からCPU外部に出力するときその値を保持するラッチCAA
(142)と、Eステージ(35)で分岐やジャンプが起き
たときに新たな命令番地をSバス(109)から入力する
ラッチEB(143)と、に結合している。APC(136)はA
バス(103)と、Fステージ(34)で処理中の命令のPC
値を保持するラッチFPC(137)とに出力経路がある。FP
C(137)はEステージ(35)で処理中の命令のPC値を保
持するラッチCPC(138)への出力経路をもつ。CPC(13
8)はSバス(109)と、分岐履歴書換えのためにPC値の
最下位バイトの値を保持するラッチOPC(139)とに出力
経路をもつ。レジスタファイル(144)は汎用レジスタ
や作業用レジストなどからなり、Sバス(109)とAバ
ス(103)への出力経路をもち、Dバス(110)から入力
経路を持つ。データ演算部(56)の演算機構であるデー
タ演算器(145)はSバス(109)から入力経路をもち、
Dバス(110)への出力経路を持つ。
(3.3)分岐予測方法 本発明のデータ処理装置では無条件分岐命令BRA,サブ
ルーチン分岐命令BSR,ループ制御命令ACB,3つの命令に
ついては、分岐予測テーブルの出力である分岐予測ビッ
トにかかわらず、必ず分岐すると予測する。BRA,BSRに
対してはこの予測は必ず正しい。
ルーチン分岐命令BSR,ループ制御命令ACB,3つの命令に
ついては、分岐予測テーブルの出力である分岐予測ビッ
トにかかわらず、必ず分岐すると予測する。BRA,BSRに
対してはこの予測は必ず正しい。
ACBはループ制御変数に指定された値を加えて、その
結果がループ終了条件を満たすかどうかを判定し、ルー
プ終了条件を満たさなければ分岐し、満たせば分岐しな
い命令である。従って、大多数のソフトウエアではACB
についてもこの予測方法はかなりの確率で正しい。ま
た、ACBに対する本発明のデータ処理装置の特徴的な処
理を意識してソフトウエアを作成すれば意識しない場合
より効率的なプログラムを作成することが可能である。
結果がループ終了条件を満たすかどうかを判定し、ルー
プ終了条件を満たさなければ分岐し、満たせば分岐しな
い命令である。従って、大多数のソフトウエアではACB
についてもこの予測方法はかなりの確率で正しい。ま
た、ACBに対する本発明のデータ処理装置の特徴的な処
理を意識してソフトウエアを作成すれば意識しない場合
より効率的なプログラムを作成することが可能である。
条件分岐命令Bccについては分岐するかしないかを過
去の履歴に従って判断する。履歴はBcc命令の1つ前に
実行した命令のアドレスの下位8ビットのアドレスをも
とに行う。分岐予測は過去1回の分岐履歴のみに従い、
1ビットで示される。
去の履歴に従って判断する。履歴はBcc命令の1つ前に
実行した命令のアドレスの下位8ビットのアドレスをも
とに行う。分岐予測は過去1回の分岐履歴のみに従い、
1ビットで示される。
(3.4)分岐予測テーブルの構成 第1図に分岐予測テーブル(113)の詳細を示す。PO
バス(105)からの入力7ビットとOPC(139)からの入
力7ビットはセレクタ(151)を通して、デコーダ(15
2)に入力される。デコーダ(152)では7ビットを128
ビットにデコードして128ビットの分岐履歴ラッチ(15
3)のうち1つを分岐予測値として分岐予測信号線(16
1)を通して分岐予測出力ラッチ(154)に出力する。12
8ビットの分岐履歴ラッチ(153)はクリア信号(157)
が入力されると一斉に値をゼロにして「分岐しない」を
示す。分岐予測出力ラッチ(154)は予測反転回路(15
5)によりその内容を反転して分岐予測更新ラッチ(15
6)に結合されている。分岐履歴ラッチ153には分岐予測
動作制御信号線(160)が入力されている。この信号
は、分岐履歴ラッチ(153)の書き込み許可信号となっ
ており、この信号値が“L"の時は分岐履歴ラッチ(15
3)への書込み動作を行わない。分岐予測信号線(161)
は動作制御信号線(160)とANDをとって分岐予測出力ラ
ッチ(154)に出力される。これによって、動作制御信
号線(160)が“L"のときは常に「分岐しない」と予測
されることになる。
バス(105)からの入力7ビットとOPC(139)からの入
力7ビットはセレクタ(151)を通して、デコーダ(15
2)に入力される。デコーダ(152)では7ビットを128
ビットにデコードして128ビットの分岐履歴ラッチ(15
3)のうち1つを分岐予測値として分岐予測信号線(16
1)を通して分岐予測出力ラッチ(154)に出力する。12
8ビットの分岐履歴ラッチ(153)はクリア信号(157)
が入力されると一斉に値をゼロにして「分岐しない」を
示す。分岐予測出力ラッチ(154)は予測反転回路(15
5)によりその内容を反転して分岐予測更新ラッチ(15
6)に結合されている。分岐履歴ラッチ153には分岐予測
動作制御信号線(160)が入力されている。この信号
は、分岐履歴ラッチ(153)の書き込み許可信号となっ
ており、この信号値が“L"の時は分岐履歴ラッチ(15
3)への書込み動作を行わない。分岐予測信号線(161)
は動作制御信号線(160)とANDをとって分岐予測出力ラ
ッチ(154)に出力される。これによって、動作制御信
号線(160)が“L"のときは常に「分岐しない」と予測
されることになる。
本発明のデータ処理装置では、Dステージ(32)でデ
コードしようとする命令の1つ前にDステージ(32)で
デコードされた命令のアドレスの下位8ビットをもとに
分岐予測テーブル(113)を引いて分岐予測を行う。分
岐予測は過去1回の履歴のみに従ったダイレクトマッピ
ング方式で登録されている。本発明のデータ処理装置で
は命令アドレスの最下位ビット(右端のビット)は必ず
ゼロであるため分岐予測テーブルは128ビットで構成さ
れている。
コードしようとする命令の1つ前にDステージ(32)で
デコードされた命令のアドレスの下位8ビットをもとに
分岐予測テーブル(113)を引いて分岐予測を行う。分
岐予測は過去1回の履歴のみに従ったダイレクトマッピ
ング方式で登録されている。本発明のデータ処理装置で
は命令アドレスの最下位ビット(右端のビット)は必ず
ゼロであるため分岐予測テーブルは128ビットで構成さ
れている。
分岐予測ビットを有効に使用するのはBcc命令をデコ
ードするときのみであるが、分岐予測ビットは、使用す
るかどうかにかかわらず、すべての命令の命令コードと
共に命令デコーダ(111)に入力する。このため分岐予
測テーブル(113)の参照は、デコードしようとする命
令の1つ前の命令がデコードされているときPC加算器
(132)から出力されてくる1つ前の命令のPC値の下位
1バイト(最下位ビットは不要)で行う。これにより、
分岐予測ビットは、次のDステージ処理の最初までに命
令デコーダ(111)に入力される。
ードするときのみであるが、分岐予測ビットは、使用す
るかどうかにかかわらず、すべての命令の命令コードと
共に命令デコーダ(111)に入力する。このため分岐予
測テーブル(113)の参照は、デコードしようとする命
令の1つ前の命令がデコードされているときPC加算器
(132)から出力されてくる1つ前の命令のPC値の下位
1バイト(最下位ビットは不要)で行う。これにより、
分岐予測ビットは、次のDステージ処理の最初までに命
令デコーダ(111)に入力される。
分岐予測テーブル(113)の分岐履歴はクリア信号(1
57)により初期値をすべて「分岐しない」とできる。分
岐予測の更新はBcc命令がEステージ(35)で分岐した
ときに行われる。Bcc命令がEステージ(35)で分岐を
起こしたとき、それはDステージ(32)での分岐予測が
間違っていたことを意味する。このときEステージ(3
5)で分岐予測の更新(間違っていた分岐履歴の反転)
が行われる。Eステージ(35)ではOPC(139)の内容を
デコーダ(152)に転送し、そのデコード結果で対応す
る分岐履歴ラッチ(153)の内容を分岐予測出力ラッチ
(154)に読み出す。次に、分岐予測出力ラッチ(154)
の内容が反転された分岐予測更新ラッチ(156)の内容
を、同じくOPC(139)の値で示された分岐履歴ラッチ
(153)に書き戻す。
57)により初期値をすべて「分岐しない」とできる。分
岐予測の更新はBcc命令がEステージ(35)で分岐した
ときに行われる。Bcc命令がEステージ(35)で分岐を
起こしたとき、それはDステージ(32)での分岐予測が
間違っていたことを意味する。このときEステージ(3
5)で分岐予測の更新(間違っていた分岐履歴の反転)
が行われる。Eステージ(35)ではOPC(139)の内容を
デコーダ(152)に転送し、そのデコード結果で対応す
る分岐履歴ラッチ(153)の内容を分岐予測出力ラッチ
(154)に読み出す。次に、分岐予測出力ラッチ(154)
の内容が反転された分岐予測更新ラッチ(156)の内容
を、同じくOPC(139)の値で示された分岐履歴ラッチ
(153)に書き戻す。
分岐予測は対象となるBcc命令がデコードされる1つ
前にデコードされた命令のPC値をもとに行われるため分
岐予測テーブル(113)の更新もEステージ(35)でBcc
命令の1つ前に実行された命令のPC値をもとに行う。こ
のためEステージ(35)では現在実行中の命令の1つ前
に実行した命令のPC値の下位1バイト(最下位ビットは
不要)を記憶しておくOPC(139)があり、分岐予測テー
ブル(113)の更新はこの値を用いて行う。分岐履歴の
更新はEステージ(35)でBcc命令が分岐を起こしたと
きだけしか行われないため、Dステージ(32)の分岐予
測テーブル(113)の参照動作がEステージ(35)の更
新に妨げられることはない。Eステージ(35)で分岐が
起きた直後はDステージ(32)はIFステージ(31)から
の命令コード待ち状態となる。分岐履歴の書換えは、こ
の命令コード待ち状態の間に行われる。
前にデコードされた命令のPC値をもとに行われるため分
岐予測テーブル(113)の更新もEステージ(35)でBcc
命令の1つ前に実行された命令のPC値をもとに行う。こ
のためEステージ(35)では現在実行中の命令の1つ前
に実行した命令のPC値の下位1バイト(最下位ビットは
不要)を記憶しておくOPC(139)があり、分岐予測テー
ブル(113)の更新はこの値を用いて行う。分岐履歴の
更新はEステージ(35)でBcc命令が分岐を起こしたと
きだけしか行われないため、Dステージ(32)の分岐予
測テーブル(113)の参照動作がEステージ(35)の更
新に妨げられることはない。Eステージ(35)で分岐が
起きた直後はDステージ(32)はIFステージ(31)から
の命令コード待ち状態となる。分岐履歴の書換えは、こ
の命令コード待ち状態の間に行われる。
分岐予測を行わない場合は、分岐予測動作制御信号線
(160)の値を“L"にする。分岐予測信号線(161)は分
岐予測動作制御信号線(160)とANDをとった結果、分岐
予測出力ラッチ(154)に出力されるから、常に「分岐
しない」と予測される。また、分岐予測動作制御信号線
(160)は分岐履歴ラッチ(153)の書き込み制御信号と
なっているので、分岐履歴ラッチ(153)の書き込みも
行われない。
(160)の値を“L"にする。分岐予測信号線(161)は分
岐予測動作制御信号線(160)とANDをとった結果、分岐
予測出力ラッチ(154)に出力されるから、常に「分岐
しない」と予測される。また、分岐予測動作制御信号線
(160)は分岐履歴ラッチ(153)の書き込み制御信号と
なっているので、分岐履歴ラッチ(153)の書き込みも
行われない。
(3.5)PC計算部の動作 PC計算部はDステージ(32)で命令コードがデコード
されるとき、1つ前にデコードされた命令コードの長さ
情報とその1つ前にデコードされた命令コードの先頭番
地とからデコード中の命令コードの先頭番地を計算す
る。PC計算部ではDPC(135)に命令の切れ目のアドレス
である命令のPC値を保持し、TPC(134)にステップコー
ドの切れ目のアドレスを管理する。DPC(135)は命令の
切れ目のアドレスが計算されたときだけ書き換えられ
る。TPC(134)はステップコードの切れ目のアドレス、
つまり命令デコード処理ごとに書き換えられる。パイプ
ライン上で処理されるステップコードのPC値はそのステ
ップコードのもとになった命令のPC値が必要であるた
め、DPC(135)、FPC(138)と転送されていく。
されるとき、1つ前にデコードされた命令コードの長さ
情報とその1つ前にデコードされた命令コードの先頭番
地とからデコード中の命令コードの先頭番地を計算す
る。PC計算部ではDPC(135)に命令の切れ目のアドレス
である命令のPC値を保持し、TPC(134)にステップコー
ドの切れ目のアドレスを管理する。DPC(135)は命令の
切れ目のアドレスが計算されたときだけ書き換えられ
る。TPC(134)はステップコードの切れ目のアドレス、
つまり命令デコード処理ごとに書き換えられる。パイプ
ライン上で処理されるステップコードのPC値はそのステ
ップコードのもとになった命令のPC値が必要であるた
め、DPC(135)、FPC(138)と転送されていく。
命令のデコードは(3.1.2)の節で述べたようにステ
ップコード単位に行われ、1回のデコード処理で0〜6
バイトの命令コードが消費される。命令デコード処理ご
とに判明したそのとき使用した命令コードの長さが命令
デコーダ(111)から命令長バス(101)に出力される。
ップコード単位に行われ、1回のデコード処理で0〜6
バイトの命令コードが消費される。命令デコード処理ご
とに判明したそのとき使用した命令コードの長さが命令
デコーダ(111)から命令長バス(101)に出力される。
プリブランチしない場合、Dステージ(32)は引き続
く次の命令のデコード処理を行うと同時に、PC計算部
(53)で引き続く次の命令のPC値を計算するため、TPC
(134)の値と命令長バス(101)から転送されたデコー
ドで消費した命令コードの長さとの加算を行いTPC(13
4)に加算結果を書き戻す。つまり、あるステップコー
ドの先頭アドレスはそのステップコードがデコード処理
により生成されたときに計算されるのである。プリブラ
ンチ以外ではデコードすべき命令コードは命令キュー
(112)から次々と出力されるため、デコード開始段階
でそのコードの先頭アドレスを知る必要はない。Dステ
ージ(32)で生成したステップコードが命令Aの最後の
ステップコードであるとき、次の命令Bのデコード処理
中に計算されるPC加算器(132)の出力は、命令Bの先
頭番地であり、命令BのPC値であるから、PC加算器(13
2)の出力である命令BのPC値はPOバス(105)からTPC
(134)とDPC(135)の両方に書き込まれる。さらにこ
のときAステージ(33)が入力コード待ちで、APC(13
6)が至急必要とされているなら、POバス(105)からAP
C(136)にも命令BのPC値が書き込まれる。
く次の命令のデコード処理を行うと同時に、PC計算部
(53)で引き続く次の命令のPC値を計算するため、TPC
(134)の値と命令長バス(101)から転送されたデコー
ドで消費した命令コードの長さとの加算を行いTPC(13
4)に加算結果を書き戻す。つまり、あるステップコー
ドの先頭アドレスはそのステップコードがデコード処理
により生成されたときに計算されるのである。プリブラ
ンチ以外ではデコードすべき命令コードは命令キュー
(112)から次々と出力されるため、デコード開始段階
でそのコードの先頭アドレスを知る必要はない。Dステ
ージ(32)で生成したステップコードが命令Aの最後の
ステップコードであるとき、次の命令Bのデコード処理
中に計算されるPC加算器(132)の出力は、命令Bの先
頭番地であり、命令BのPC値であるから、PC加算器(13
2)の出力である命令BのPC値はPOバス(105)からTPC
(134)とDPC(135)の両方に書き込まれる。さらにこ
のときAステージ(33)が入力コード待ちで、APC(13
6)が至急必要とされているなら、POバス(105)からAP
C(136)にも命令BのPC値が書き込まれる。
プリブランチする場合、Dステージ(32)はプリブラ
ンチ命令の最後のステップコードを出力した後、命令デ
コーダ(111)の処理を止め、分岐先命令のPC値を計算
するため、DPC(135)の値とDISPバス(100)より転送
された分岐変位の加算を行う。さらに、IFステージ(3
1)に初期化指示を出し、加算結果である分岐命令のPC
値をTPC(134)とDPC(135)に書き込むと共に、CAバス
(104)にも出力してQINPC(115),CAA(142)にも書き
込む。
ンチ命令の最後のステップコードを出力した後、命令デ
コーダ(111)の処理を止め、分岐先命令のPC値を計算
するため、DPC(135)の値とDISPバス(100)より転送
された分岐変位の加算を行う。さらに、IFステージ(3
1)に初期化指示を出し、加算結果である分岐命令のPC
値をTPC(134)とDPC(135)に書き込むと共に、CAバス
(104)にも出力してQINPC(115),CAA(142)にも書き
込む。
プリブランチによる分岐先命令アドレス計算の際、奇
数アドレスジャンプトラップの検出も行ない、Dコード
(41)中にその結果をパラメータとして示す。Eステー
ジ(35)ではプリブランチが正しいと判明した時に、奇
数アドレスジャンプトラップを起動する。プリブランチ
が間違っていて、再びEステージ(35)で分岐が生じた
ときはプリブランチで検出した奇数アドレスジャンプト
ラップは無視される。このため、Dステージ(32)で検
出された奇数アドレスジャンプトラップはその他のEIT
とは別扱いとなっている。また、Eステージ(35)では
奇数アドレスジャンプトラップの起動処理に奇数となっ
た命令アドレスの値を必要とする。このため、Dステー
ジ(32)は奇数アドレスジャンプトラップの検出を行っ
たとき、その奇数アドレス値をPC値とした特殊なステッ
プコード(OAJTステップコード)を発生する。OAJTステ
ップコードに対してAステージ(33)、Fステージ(3
4)はそのコードを次のステージに伝える。Eステージ
(35)はプリブランチが正しいと判断し、しかもそのプ
リブランチが奇数アドレスジャンプトラップを検出して
いるとき、CPC(138)を通して次に転送されてくるOAJT
ステップコードのPC値を使用して奇数アドレスジャンプ
トラップの起動処理を行う。
数アドレスジャンプトラップの検出も行ない、Dコード
(41)中にその結果をパラメータとして示す。Eステー
ジ(35)ではプリブランチが正しいと判明した時に、奇
数アドレスジャンプトラップを起動する。プリブランチ
が間違っていて、再びEステージ(35)で分岐が生じた
ときはプリブランチで検出した奇数アドレスジャンプト
ラップは無視される。このため、Dステージ(32)で検
出された奇数アドレスジャンプトラップはその他のEIT
とは別扱いとなっている。また、Eステージ(35)では
奇数アドレスジャンプトラップの起動処理に奇数となっ
た命令アドレスの値を必要とする。このため、Dステー
ジ(32)は奇数アドレスジャンプトラップの検出を行っ
たとき、その奇数アドレス値をPC値とした特殊なステッ
プコード(OAJTステップコード)を発生する。OAJTステ
ップコードに対してAステージ(33)、Fステージ(3
4)はそのコードを次のステージに伝える。Eステージ
(35)はプリブランチが正しいと判断し、しかもそのプ
リブランチが奇数アドレスジャンプトラップを検出して
いるとき、CPC(138)を通して次に転送されてくるOAJT
ステップコードのPC値を使用して奇数アドレスジャンプ
トラップの起動処理を行う。
Eステージ(35)で分岐が生じたときは分岐先アドレ
スがEB(143)からCAバス(104)を通じてTPC(134)に
転送されてくる。PC計算部(53)はこの値とゼロを加算
して結果をPOバス(105)からTPC(134)、DPC(135)
に書き込む。これでPC計算部(53)の初期化が完了す
る。この初期化の処理はEステージ(35)で分岐が生じ
た最初の単位デコード処理とオーバーラップしてなされ
る。なお、QINPC(115),CAA(142)にはCAバス(104)
よりTPC(134)に値を取り込む際に同じ値がセットされ
る。
スがEB(143)からCAバス(104)を通じてTPC(134)に
転送されてくる。PC計算部(53)はこの値とゼロを加算
して結果をPOバス(105)からTPC(134)、DPC(135)
に書き込む。これでPC計算部(53)の初期化が完了す
る。この初期化の処理はEステージ(35)で分岐が生じ
た最初の単位デコード処理とオーバーラップしてなされ
る。なお、QINPC(115),CAA(142)にはCAバス(104)
よりTPC(134)に値を取り込む際に同じ値がセットされ
る。
(3.7)プリブランチ命令に対するオペランドアドレス
計算部の動作 プリブランチ命令に対して、Dステージ(32)がプリ
ブランチ処理を行わなかった場合、オペランドアドレス
計算部(54)がプリブランチ命令の分岐先アドレスを計
算する。分岐先アドレスの計算は、Aバス(103)より
転送されてくるAPC(136)の値とDISPバス(100)より
転送されてくる分岐変位値をアドレス加算器(124)で
加算することにより行われる。計算された分岐先アドレ
スはEステージ(35)に伝えられる。Aステージ(33)
で、オペランドアドレス計算部(54)を使用した分岐先
アドレスの計算の際は、奇数アドレスジャンプトラップ
の検出は行わない。Eステージ(35)に転送される分岐
先アドレスが奇数であることにより、奇数アドレスジャ
ンプトラップの情報が伝えられるのである。
計算部の動作 プリブランチ命令に対して、Dステージ(32)がプリ
ブランチ処理を行わなかった場合、オペランドアドレス
計算部(54)がプリブランチ命令の分岐先アドレスを計
算する。分岐先アドレスの計算は、Aバス(103)より
転送されてくるAPC(136)の値とDISPバス(100)より
転送されてくる分岐変位値をアドレス加算器(124)で
加算することにより行われる。計算された分岐先アドレ
スはEステージ(35)に伝えられる。Aステージ(33)
で、オペランドアドレス計算部(54)を使用した分岐先
アドレスの計算の際は、奇数アドレスジャンプトラップ
の検出は行わない。Eステージ(35)に転送される分岐
先アドレスが奇数であることにより、奇数アドレスジャ
ンプトラップの情報が伝えられるのである。
Dステージ(32)がプリブランチ処理をした場合、Bc
c命令、ACB命令に対しては、Aステージ(33)がそのプ
リブランチ命令に引き続くアドレスにある次の命令のPC
値を計算する。計算結果はEステージ(35)に伝えら
れ、プリブランチが間違っていたときの再度の分岐先ア
ドレスとして使用される。Bcc命令など、Dステージ(3
2)で1ステップコードにデコードされる命令に対して
は、Aバス(104)より転送されてくるAPC(136)の値
に補正値バス(102)から転送されてくるBcc命令の命令
長を加算して、加算結果をAOバス(106)よりFA(127)
に書き込む。
c命令、ACB命令に対しては、Aステージ(33)がそのプ
リブランチ命令に引き続くアドレスにある次の命令のPC
値を計算する。計算結果はEステージ(35)に伝えら
れ、プリブランチが間違っていたときの再度の分岐先ア
ドレスとして使用される。Bcc命令など、Dステージ(3
2)で1ステップコードにデコードされる命令に対して
は、Aバス(104)より転送されてくるAPC(136)の値
に補正値バス(102)から転送されてくるBcc命令の命令
長を加算して、加算結果をAOバス(106)よりFA(127)
に書き込む。
(4)オペランド・バイパス機構 第2図は、外部バスインターフェイス制御部およびそ
の周辺を示すブロック図である。図において、(70)は
OFステージ制御部、(71)はEステージ制御部、(72)
は外部バスインターフェイス制御部、(79)はOFステー
ジ制御部からのアクセス要求信号、(80)はOFステージ
制御部へのアクセス要求受付信号、(81)はアクセス完
了信号、(82)はEステージ制御部からのアクセス要求
信号、(83)はEステージ制御部からのアクセス要求が
リードかライトかを示す信号、(84)はEステージ制御
部へのアクセス要求受付信号、(86)はオペランド・バ
イパス機構、(87)はオペランド・バイパス機構から出
力されるバイパス可信号、(88)はオペランド・バイパ
ス機構の動作を制御する信号、(89)はメモリアクセス
調停回路である。
の周辺を示すブロック図である。図において、(70)は
OFステージ制御部、(71)はEステージ制御部、(72)
は外部バスインターフェイス制御部、(79)はOFステー
ジ制御部からのアクセス要求信号、(80)はOFステージ
制御部へのアクセス要求受付信号、(81)はアクセス完
了信号、(82)はEステージ制御部からのアクセス要求
信号、(83)はEステージ制御部からのアクセス要求が
リードかライトかを示す信号、(84)はEステージ制御
部へのアクセス要求受付信号、(86)はオペランド・バ
イパス機構、(87)はオペランド・バイパス機構から出
力されるバイパス可信号、(88)はオペランド・バイパ
ス機構の動作を制御する信号、(89)はメモリアクセス
調停回路である。
以下、第2図と第4図を用いてオペランドのバイパス
処理を説明する。
処理を説明する。
外部バスインターフェース制御部(72)はパイプライ
ンの各ステージからバスアクセス要求を受付けCPU外部
のメモリとデータのやりとりを行う。
ンの各ステージからバスアクセス要求を受付けCPU外部
のメモリとデータのやりとりを行う。
OFステージ制御部(70)がオペランドを外部メモリか
らプリフェッチする場合、OFステージ制御部(70)はFA
レジスタ(127)にアドレスを設定して、外部バスイン
ターフェイス制御部(72)に対してアクセス要求信号
(179)を出す。外部バスインターフェイス部(72)は
現在メモリ・アクセス中でなくかつ、Eステージ制御部
(71)からのアクセス要求がない場合、OFステージ制御
部(70)へアクセス要求受付信号(180)を返す。メモ
リ・アクセスが完了すると外部バスインターフェース制
御部(72)はOFステージ制御部(70)へアクセス完了信
号(81)を返す。また、アクセスに使われたAAバス(10
7)の値はSCAM(79)に入力され、DDバス(108)上のデ
ータはSDATA(80)に入力される。アクセスがワード境
界をまたぐときは、アクセスは2回に渡って行われ、各
アクセスのデータがそのままSDATA(80)に入力され
る。それと同時に各アクセスで使われたAAバス(107)
のアドレスがそのままSCAM(79)に入力される。SDATA
(80)に入力されたデータは、その後Sバスを通して演
算部(56)へ取り込まれる。
らプリフェッチする場合、OFステージ制御部(70)はFA
レジスタ(127)にアドレスを設定して、外部バスイン
ターフェイス制御部(72)に対してアクセス要求信号
(179)を出す。外部バスインターフェイス部(72)は
現在メモリ・アクセス中でなくかつ、Eステージ制御部
(71)からのアクセス要求がない場合、OFステージ制御
部(70)へアクセス要求受付信号(180)を返す。メモ
リ・アクセスが完了すると外部バスインターフェース制
御部(72)はOFステージ制御部(70)へアクセス完了信
号(81)を返す。また、アクセスに使われたAAバス(10
7)の値はSCAM(79)に入力され、DDバス(108)上のデ
ータはSDATA(80)に入力される。アクセスがワード境
界をまたぐときは、アクセスは2回に渡って行われ、各
アクセスのデータがそのままSDATA(80)に入力され
る。それと同時に各アクセスで使われたAAバス(107)
のアドレスがそのままSCAM(79)に入力される。SDATA
(80)に入力されたデータは、その後Sバスを通して演
算部(56)へ取り込まれる。
Eステージ制御部(71)がデータをCPU外部のメモリ
から読み出す場合、Eステージ制御部(71)はAA1レジ
スタ(76)にアドレスを設定して、外部バスインターフ
ェイス制御部(72)に対してアクセス要求信号(72)お
よびリード/ライト信号(73)をリードにして出力す
る。外部バスインターフェイス制御部(72)は、要求を
受付けるとEステージ制御部(71)へアクセス要求受付
信号(84)を返す。メモリ・アクセスが完了すると、外
部バスインターフェイス制御部(72)はEステージ制御
部(71)へアクセス完了信号(81)を返す。また、DDバ
ス(108)上のデータがDDR1レジスタ(77)に取り込ま
れる。
から読み出す場合、Eステージ制御部(71)はAA1レジ
スタ(76)にアドレスを設定して、外部バスインターフ
ェイス制御部(72)に対してアクセス要求信号(72)お
よびリード/ライト信号(73)をリードにして出力す
る。外部バスインターフェイス制御部(72)は、要求を
受付けるとEステージ制御部(71)へアクセス要求受付
信号(84)を返す。メモリ・アクセスが完了すると、外
部バスインターフェイス制御部(72)はEステージ制御
部(71)へアクセス完了信号(81)を返す。また、DDバ
ス(108)上のデータがDDR1レジスタ(77)に取り込ま
れる。
Eステージ制御部(71)がデータをCPU外部のメモリ
へ書き込む場合、Eステージ制御部(71)はAA1レジス
タ(76)にアドレスを設定し、DDR2レジスタ(78)にデ
ータを設定して、外部バスインターフェイス部(72)に
対してアクセス要求信号(82)を出力する。この時、リ
ード/ライト信号(83)をライトにしておく。外部バス
インターフェイス制御部(72)は要求を受付けると、E
ステージ制御部(71)へアクセス要求受付信号(84)を
返す。メモリ・アクセスが完了すると、外部バスインタ
ーフェイス制御部(72)はEステージ制御部(71)へア
クセス完了信号(81)を返す。
へ書き込む場合、Eステージ制御部(71)はAA1レジス
タ(76)にアドレスを設定し、DDR2レジスタ(78)にデ
ータを設定して、外部バスインターフェイス部(72)に
対してアクセス要求信号(82)を出力する。この時、リ
ード/ライト信号(83)をライトにしておく。外部バス
インターフェイス制御部(72)は要求を受付けると、E
ステージ制御部(71)へアクセス要求受付信号(84)を
返す。メモリ・アクセスが完了すると、外部バスインタ
ーフェイス制御部(72)はEステージ制御部(71)へア
クセス完了信号(81)を返す。
Eステージ制御部(71)からのアクセス要求とOFステ
ージ制御部(70)からのアクセス要求が同時に起った場
合、外部バスインターフェイス部(72)はEステージ制
御部(71)からのアクセス要求を優先的に受付ける。
ージ制御部(70)からのアクセス要求が同時に起った場
合、外部バスインターフェイス部(72)はEステージ制
御部(71)からのアクセス要求を優先的に受付ける。
Eステージ制御部(71)がライト・アクセス要求を出
し、同時にOFステージ制御部(70)がアクセス要求を出
した場合、両方のアドレスが同じであるとすると、Eス
テージ制御部(71)からの要求で書き込んだデータをそ
の直後にOFステージ制御部(70)からの要求で読み出す
ことになり、外部バス・アクセスが1回分冗長になる。
し、同時にOFステージ制御部(70)がアクセス要求を出
した場合、両方のアドレスが同じであるとすると、Eス
テージ制御部(71)からの要求で書き込んだデータをそ
の直後にOFステージ制御部(70)からの要求で読み出す
ことになり、外部バス・アクセスが1回分冗長になる。
そこで、AAバス(107)の値とFAレジスタ(127)の値
を常に比較し、これらが一致しかつ、OFステージ制御部
(70)からのアクセス要求とEステージ制御部(71)か
らのライト要求が同時に出力された場合、バイパス可信
号(87)を出力するオペランド・バイパス機構(86)が
設けられている。バイパス可信号(87)はOFステージ制
御部(70)から見るとアクセス要求受付信号(80)と同
じ意味を持つ。アクセス完了信号(81)によって、Eス
テージ制御部(71)とOFステージ制御部(70)両方から
のアクセスが完了したことになり、AAバス(107)上の
アドレスはSCAM(79)に入力され、DDバス(108)上の
データはSDATA(80)に入力される。
を常に比較し、これらが一致しかつ、OFステージ制御部
(70)からのアクセス要求とEステージ制御部(71)か
らのライト要求が同時に出力された場合、バイパス可信
号(87)を出力するオペランド・バイパス機構(86)が
設けられている。バイパス可信号(87)はOFステージ制
御部(70)から見るとアクセス要求受付信号(80)と同
じ意味を持つ。アクセス完了信号(81)によって、Eス
テージ制御部(71)とOFステージ制御部(70)両方から
のアクセスが完了したことになり、AAバス(107)上の
アドレスはSCAM(79)に入力され、DDバス(108)上の
データはSDATA(80)に入力される。
オペランド・バイパス機構(86)から出力される信号
とオペランド・バイパスの動作制御信号(88)のANDを
とることによって、オペランド・バイパス機構(86)を
動作させる場合は、オペランド・バイパス機構(86)の
出力をそのままOFステージ制御部(70)へ伝え、動作さ
せない場合は、常にバイパス不可とする。
とオペランド・バイパスの動作制御信号(88)のANDを
とることによって、オペランド・バイパス機構(86)を
動作させる場合は、オペランド・バイパス機構(86)の
出力をそのままOFステージ制御部(70)へ伝え、動作さ
せない場合は、常にバイパス不可とする。
データ演算部(56)がSDATA(80)中のデータを使用
する前に、Eステージ制御部(71)からの書き込み要求
により、SDATA(80)中のデータと同じアドレスに書き
込みが行われた場合は、SCAM(79)によるオペランド・
アドレス一致検出によりSDATA(80)中のデータの書換
えも行われ、データの一貫性が保たれるようになってい
る。
する前に、Eステージ制御部(71)からの書き込み要求
により、SDATA(80)中のデータと同じアドレスに書き
込みが行われた場合は、SCAM(79)によるオペランド・
アドレス一致検出によりSDATA(80)中のデータの書換
えも行われ、データの一貫性が保たれるようになってい
る。
(5)制御レジスタによる分岐予測機構およびオペラン
ド・バイパス機構の制御 本発明のデータ処理装置では、分岐予測機構およびオ
ペランド・バイパス機構の動作を制御するための制御レ
ジスタを設けた。第3図に制御レジスタの構成を示す。
ド・バイパス機構の制御 本発明のデータ処理装置では、分岐予測機構およびオ
ペランド・バイパス機構の動作を制御するための制御レ
ジスタを設けた。第3図に制御レジスタの構成を示す。
BBCレジスタのMビットによって、ブランチ予測機構
の動作を制御する。M=0のときブランチ予測機構は動
作せず、M=1のとき動作する。このMビットは分岐予
測機構の動作制御信号(160)となる。
の動作を制御する。M=0のときブランチ予測機構は動
作せず、M=1のとき動作する。このMビットは分岐予
測機構の動作制御信号(160)となる。
BBCレジスタのBビットによって、オペランド・バイ
パス機構の動作を制御する。B=0のときオペランド・
バイパス機構は動作せず、B=1のとき動作する。この
Bビットはオペランド・バイパス機構の動作制御信号
(88)となる。
パス機構の動作を制御する。B=0のときオペランド・
バイパス機構は動作せず、B=1のとき動作する。この
Bビットはオペランド・バイパス機構の動作制御信号
(88)となる。
BBPレジスタのPビットによって、分岐履歴のクリア
を行う。Pビットに1を書き込むことで分岐履歴はクリ
アされる。BBPレジスタは書き込み専用のレジスタであ
る。BBPレジスタは値を保持するようになっておらず、B
BPレジスタに書き込むという動作が直接何らかの動作を
制御する信号になる。BBPレジスタを読み出したとして
も、常に“0"が読み出されるだけである。このPビット
への書き込み信号は、分岐予測部のクリア信号(157)
となる。
を行う。Pビットに1を書き込むことで分岐履歴はクリ
アされる。BBPレジスタは書き込み専用のレジスタであ
る。BBPレジスタは値を保持するようになっておらず、B
BPレジスタに書き込むという動作が直接何らかの動作を
制御する信号になる。BBPレジスタを読み出したとして
も、常に“0"が読み出されるだけである。このPビット
への書き込み信号は、分岐予測部のクリア信号(157)
となる。
ここで述べた制御ビットは、別々の制御レジスタ中に
存在してもよいし、共通の制御レジスタ中に存在しても
よい。制御レジスタ中の適当な制御ビットをセット/リ
セットすることで、分岐予測機構やオペランド・バイパ
ス機構の動作を制御することができる。
存在してもよいし、共通の制御レジスタ中に存在しても
よい。制御レジスタ中の適当な制御ビットをセット/リ
セットすることで、分岐予測機構やオペランド・バイパ
ス機構の動作を制御することができる。
これらのレジスタへの値の設定はLDC命令(専用レジ
スタへのロード命令)によって行える。
スタへのロード命令)によって行える。
また、LDCTX命令(コンテキストのロード命令)のよ
うなタスクやプロセスの切り替えに用いられるような命
令が実行されるとプログラムが実行される環境が変わる
ので、分岐履歴は全くあてにならないものとなる。そこ
で、このようなプログラムの実行される環境が変化する
ような命令が実行されると自動的に分岐予測部のクリア
信号(157)が発生するようにする。
うなタスクやプロセスの切り替えに用いられるような命
令が実行されるとプログラムが実行される環境が変わる
ので、分岐履歴は全くあてにならないものとなる。そこ
で、このようなプログラムの実行される環境が変化する
ような命令が実行されると自動的に分岐予測部のクリア
信号(157)が発生するようにする。
本実施例においては、分岐履歴のクリアは1度に全て
のビットをクリアするようにしているが、分岐履歴の各
ビットの値を任意に設定できるようにしてもよい。
のビットをクリアするようにしているが、分岐履歴の各
ビットの値を任意に設定できるようにしてもよい。
本発明は次の(1)〜(8)硬の実施態様により実施
できる。
できる。
(1)条件分岐命令の分岐予測を行う分岐予測機構と、
命令をデコードする命令デコード機構とを備え、命令の
デコードと、条件分岐命令に対して上記分岐予測機構の
出力に従い第1の分岐処理を行うか上記第1の分岐処理
を行わないかがどちらかの動作とを行う機構をもつ第1
のパイプラインステージと、条件分岐命令に対する分岐
条件に従い、第2の分岐処理を行うかまたは上記第2の
分岐処理を行わないかどちらかの処理を行う第2のパイ
プラインステージと、上記第1の分岐処理動作を許可ま
たは禁止することを制御する分岐制御情報を記憶するレ
ジスタとを備え、上記分岐制御情報を書き換える命令を
もつことを特徴とするデータ処理装置。
命令をデコードする命令デコード機構とを備え、命令の
デコードと、条件分岐命令に対して上記分岐予測機構の
出力に従い第1の分岐処理を行うか上記第1の分岐処理
を行わないかがどちらかの動作とを行う機構をもつ第1
のパイプラインステージと、条件分岐命令に対する分岐
条件に従い、第2の分岐処理を行うかまたは上記第2の
分岐処理を行わないかどちらかの処理を行う第2のパイ
プラインステージと、上記第1の分岐処理動作を許可ま
たは禁止することを制御する分岐制御情報を記憶するレ
ジスタとを備え、上記分岐制御情報を書き換える命令を
もつことを特徴とするデータ処理装置。
(2)条件分岐命令の分岐履歴を保持する分岐履歴テー
ブルと、上記分岐履歴テーブルの出力値をもとに分岐予
測を行い、上記分岐制御情報により上記分岐履歴テーブ
ルの出力を「分岐しない」に固定することと、上記分岐
履歴テーブルの書換えを禁止することにより上記第1の
分岐処理動作の禁止を行うことを特徴とする上記第1項
記載のデータ処理装置。
ブルと、上記分岐履歴テーブルの出力値をもとに分岐予
測を行い、上記分岐制御情報により上記分岐履歴テーブ
ルの出力を「分岐しない」に固定することと、上記分岐
履歴テーブルの書換えを禁止することにより上記第1の
分岐処理動作の禁止を行うことを特徴とする上記第1項
記載のデータ処理装置。
(3)条件分岐命令の分岐履歴を保持する分岐履歴テー
ブルと、上記分岐履歴テーブルの出力値をもとに分岐予
測を行う分岐予測機構と、命令をデコードする命令デコ
ード機構とを備え、命令のデコードと、条件分岐命令に
対して上記分岐予測機構の出力に従い第1の分岐処理を
行うか上記第1の分岐処理を行わないかかどちらかの動
作を行う機構をもつ第1のパイプラインステージと、条
件分岐命令に対する分岐条件に従い、第2の分岐処理を
行うかまたは上記第2の分岐処理を行わないかどちらか
の処理を行う第2のパイプラインステージと、上記分岐
履歴を書き換える命令と、を備えることを特徴とするデ
ータ処理装置。
ブルと、上記分岐履歴テーブルの出力値をもとに分岐予
測を行う分岐予測機構と、命令をデコードする命令デコ
ード機構とを備え、命令のデコードと、条件分岐命令に
対して上記分岐予測機構の出力に従い第1の分岐処理を
行うか上記第1の分岐処理を行わないかかどちらかの動
作を行う機構をもつ第1のパイプラインステージと、条
件分岐命令に対する分岐条件に従い、第2の分岐処理を
行うかまたは上記第2の分岐処理を行わないかどちらか
の処理を行う第2のパイプラインステージと、上記分岐
履歴を書き換える命令と、を備えることを特徴とするデ
ータ処理装置。
(4)上記分岐履歴の書き換えは分岐履歴を一斉に「分
岐しない」とする書き込みであることを特徴とする上記
第3項記載のデータ処理装置。
岐しない」とする書き込みであることを特徴とする上記
第3項記載のデータ処理装置。
(5)新しいプログラム実行環境を設定する動作をする
命令に上記分岐履歴の書き換え動作を併せもつことを特
徴とする上記第4項記載のデータ処理装置。
命令に上記分岐履歴の書き換え動作を併せもつことを特
徴とする上記第4項記載のデータ処理装置。
(6)オペランドバイパス制御情報を保持する制御レジ
スタと、フェッチする第1のオペランドの第1のアドレ
ス値とストアする第2のオペランドの第2のアドレス値
とを比較するアドレス比較機構と、上記アドレス比較機
構での比較結果と上記制御レジスタの出力とを入力とし
てその論理演算結果を出力する論理回路と、上記論理演
算結果が「バイパス可能」を示すとき、メモリをバイパ
スして上記第2のオペランドの値を上記第1のオペラン
ドとするバイパス機構と、を備え、上記オペランドバイ
パス制御情報を書き換える命令をもつことを特徴とする
データ処理装置。
スタと、フェッチする第1のオペランドの第1のアドレ
ス値とストアする第2のオペランドの第2のアドレス値
とを比較するアドレス比較機構と、上記アドレス比較機
構での比較結果と上記制御レジスタの出力とを入力とし
てその論理演算結果を出力する論理回路と、上記論理演
算結果が「バイパス可能」を示すとき、メモリをバイパ
スして上記第2のオペランドの値を上記第1のオペラン
ドとするバイパス機構と、を備え、上記オペランドバイ
パス制御情報を書き換える命令をもつことを特徴とする
データ処理装置。
(7)フェッチすべきオペランドのアドレスを保持する
アドレスレジスタと、ストアするオペランドのアドレス
を転送する第1のバスと、ストアするオペランドとフェ
ッチするオペランドの両方を転送する第2のバスと、第
1のバスに接続し、第1のバスの値を書き込むことが可
能な第1記憶装置と、第2のバスに接続し、第2のバス
値を書き込むことが可能な第2記憶装置と、上記アドレ
スレジスタに保持された第1のアドレス値と上記第1の
バスで転送されるストアするオペランドの第2のアドレ
ス値とを比較する比較装置と、を備え、オペランドをス
トアするとき、上記第1のアドレス値と第2のアドレス
値が一致する場合には、上記第2のアドレス値を上記第
1の記憶装置に書き込み、上記第2のバスで転送される
オペランドを上記第2の記憶装置に書き込むことを特徴
とするデータ処理装置。
アドレスレジスタと、ストアするオペランドのアドレス
を転送する第1のバスと、ストアするオペランドとフェ
ッチするオペランドの両方を転送する第2のバスと、第
1のバスに接続し、第1のバスの値を書き込むことが可
能な第1記憶装置と、第2のバスに接続し、第2のバス
値を書き込むことが可能な第2記憶装置と、上記アドレ
スレジスタに保持された第1のアドレス値と上記第1の
バスで転送されるストアするオペランドの第2のアドレ
ス値とを比較する比較装置と、を備え、オペランドをス
トアするとき、上記第1のアドレス値と第2のアドレス
値が一致する場合には、上記第2のアドレス値を上記第
1の記憶装置に書き込み、上記第2のバスで転送される
オペランドを上記第2の記憶装置に書き込むことを特徴
とするデータ処理装置。
(8)上記ストア動作がワード境界をまたぐとき、上記
第1の記憶装置に書き込むアドレス値はストア動作のバ
スサイクルごとのアドレスとし、上記第2の記憶装置に
書き込むアドレス値はストア動作のバスサイクルごとの
オペランドデータであること、を特徴とする上記第7項
記載のデータ処理装置。
第1の記憶装置に書き込むアドレス値はストア動作のバ
スサイクルごとのアドレスとし、上記第2の記憶装置に
書き込むアドレス値はストア動作のバスサイクルごとの
オペランドデータであること、を特徴とする上記第7項
記載のデータ処理装置。
以上説明したように、本発明によれば、分岐予測手段
を用いることでかえって処理効率が落ちる場合には、プ
ログラムの命令により制御手段の状態を第1,第2のいず
れかの状態に設定(制御レジスタへ値をセット)するこ
とにより、分岐予測手段を動作させないようにすること
ができ、処理効率を上げることができる。命令の流れを
外部アドレス・バスのモニタによって行う場合、制御レ
ジスタへ値をセットすることにより分岐予測手段を動作
させないようにして、命令の流れを追いやすくすること
ができる。
を用いることでかえって処理効率が落ちる場合には、プ
ログラムの命令により制御手段の状態を第1,第2のいず
れかの状態に設定(制御レジスタへ値をセット)するこ
とにより、分岐予測手段を動作させないようにすること
ができ、処理効率を上げることができる。命令の流れを
外部アドレス・バスのモニタによって行う場合、制御レ
ジスタへ値をセットすることにより分岐予測手段を動作
させないようにして、命令の流れを追いやすくすること
ができる。
プログラムの走る状況が変化するなどして、分岐履歴
があてにならなくなった場合は、プログラムの命令によ
り分岐履歴を全てクリアでき、前に走っていたプログラ
ムの悪影響を受けないようにすることができる。また、
プログラムの実行状況を変化させるような命令(コンテ
キスト・スイッチ用の命令など)が実行された場合に
は、分岐履歴が自動的に全てクリアされる。
があてにならなくなった場合は、プログラムの命令によ
り分岐履歴を全てクリアでき、前に走っていたプログラ
ムの悪影響を受けないようにすることができる。また、
プログラムの実行状況を変化させるような命令(コンテ
キスト・スイッチ用の命令など)が実行された場合に
は、分岐履歴が自動的に全てクリアされる。
オペランド・フェッチを外部アドレス・バスでモニタ
する場合などは、プログラムの命令により制御手段の状
態を第1,第2のいずれかの状態に設定(制御レジスタへ
値をセット)することで、オペランド・バイパス動作を
させないようにすることができ、バスによるチップ動作
のモニタが容易になる。
する場合などは、プログラムの命令により制御手段の状
態を第1,第2のいずれかの状態に設定(制御レジスタへ
値をセット)することで、オペランド・バイパス動作を
させないようにすることができ、バスによるチップ動作
のモニタが容易になる。
第1図は本発明のデータ処理装置の分岐予測テーブル詳
細図、第2図は本発明のデータ処理装置のバスインター
フェイス制御部およびその周辺を示すブロック図、第3
図は本発明の制御レジスタの構成図、第4図は本発明の
データ処理装置の分岐命令処理回路の図、第5図は本発
明のデータ処理装置の全体ブロック図、第6図は本発明
のデータ処理装置のパイプラインステージ概要図、第7
図は従来のデータ処理装置のパイプラインステージ概要
図、第8図は従来のデータ処理装置での分岐命令処理の
様子を示す図である。 図において、(105)はPOバス、(111)は命令デコー
ダ、(139)はOPCレジスタ、(151)はPOバスとOPCレジ
スタのセレクタ、(152)はデコーダ、(153)は分岐予
測ラッチ、(154)は分岐予測出力ラッチ、(155)は予
測反転回路、(156)は分岐予測更新ラッチ、(157)は
分岐履歴クリア信号、(160)は分岐予測動作制御信
号、(161)は分岐予測信号である。 図において、(70)はOFステージ制御部、(71)はEス
テージ制御部、(72)は外部バスインターフェイス制御
部、(79)はOFステージ制御部からのアクセス要求信
号、(80)はOFステージ制御部へのアクセス要求受付信
号、(81)はアクセス完了信号、(82)はEステージ制
御部からのアクセス要求信号、(83)はEステージ制御
部からのアクセス要求がリードかライトかを示す信号、
(84)はEステージ制御部へのアクセス要求受付信号、
(86)はオペランド・バイパス機構、(87)はオペラン
ド・バイパス機構から出力されるバイパス可信号、(8
8)はオペランド・バイパス機構の動作を制御する信
号、(89)はメモリアクセス調停回路である。 尚、各図中同一符号は同一または相当部分を示す。
細図、第2図は本発明のデータ処理装置のバスインター
フェイス制御部およびその周辺を示すブロック図、第3
図は本発明の制御レジスタの構成図、第4図は本発明の
データ処理装置の分岐命令処理回路の図、第5図は本発
明のデータ処理装置の全体ブロック図、第6図は本発明
のデータ処理装置のパイプラインステージ概要図、第7
図は従来のデータ処理装置のパイプラインステージ概要
図、第8図は従来のデータ処理装置での分岐命令処理の
様子を示す図である。 図において、(105)はPOバス、(111)は命令デコー
ダ、(139)はOPCレジスタ、(151)はPOバスとOPCレジ
スタのセレクタ、(152)はデコーダ、(153)は分岐予
測ラッチ、(154)は分岐予測出力ラッチ、(155)は予
測反転回路、(156)は分岐予測更新ラッチ、(157)は
分岐履歴クリア信号、(160)は分岐予測動作制御信
号、(161)は分岐予測信号である。 図において、(70)はOFステージ制御部、(71)はEス
テージ制御部、(72)は外部バスインターフェイス制御
部、(79)はOFステージ制御部からのアクセス要求信
号、(80)はOFステージ制御部へのアクセス要求受付信
号、(81)はアクセス完了信号、(82)はEステージ制
御部からのアクセス要求信号、(83)はEステージ制御
部からのアクセス要求がリードかライトかを示す信号、
(84)はEステージ制御部へのアクセス要求受付信号、
(86)はオペランド・バイパス機構、(87)はオペラン
ド・バイパス機構から出力されるバイパス可信号、(8
8)はオペランド・バイパス機構の動作を制御する信
号、(89)はメモリアクセス調停回路である。 尚、各図中同一符号は同一または相当部分を示す。
Claims (4)
- 【請求項1】プログラムの命令をデコードする命令デコ
ードステージと、前記命令デコードステージでデコード
された命令を実行する命令実行ステージとで命令のパイ
プライン処理を行う方式のデータ処理装置であって、 前記データ処理装置は、 条件分岐命令を検出する手段と、 前記検出された条件分岐命令が前記命令実行ステージで
実行されるのに先立ち、当該実行において分岐条件が満
たされるか否かを予測する分岐予測手段と、 第1の状態と第2の状態とを持ち、前記第1の状態のと
きは前記分岐予測手段が分岐を予測することを許可し、
前記第2の状態のときは前記分岐予測手段が分岐を予測
することを許可しない制御手段とを備え、 プログラムの命令により前記制御手段の状態を前記第1,
第2のいずれかの状態に設定することを特徴とするデー
タ処理装置。 - 【請求項2】プログラムの命令をデコードする命令デコ
ードステージと、前記命令デコードステージでデコード
された命令を実行する命令実行ステージとで命令のパイ
プライン処理を行う方式のデータ処理装置であって、 前記データ処理装置は、 条件分岐命令を検出する手段と、 前記検出された条件分岐命令が前記命令実行ステージで
実行されるのに先立ち、当該実行において分岐条件が満
たされるか否かを予測する分岐予測手段と、 前記条件分岐命令の分岐履歴情報を登録する分岐履歴テ
ーブルとを備え、 前記分岐予測手段は、前記分岐履歴テーブルに登録され
た前記分岐履歴情報を参照して予測を行い、 プログラムの命令により前記分岐履歴テーブルに登録さ
れた前記分岐履歴情報を全てクリアすることを特徴とす
るデータ処理装置。 - 【請求項3】プログラムの命令をデコードする命令デコ
ードステージと、前記命令デコードステージでデコード
された命令を実行する命令実行ステージとで命令のパイ
プライン処理を行う方式のデータ処理装置であって、 前記データ処理装置は、 条件分岐命令を検出する手段と、 前記検出された条件分岐命令が前記命令実行ステージで
実行されるのに先立ち、当該実行において分岐条件が満
たされるか否かを予測する分岐予測手段と、 前記条件分岐命令の分岐履歴情報を登録する分岐履歴テ
ーブルとを備え、 前記分岐予測手段は、前記分岐履歴テーブルに登録され
た前記分岐履歴情報を参照して予測を行い、 プログラム実行環境の変化をもたらす予め定められた命
令の実行に応答して、前記分岐履歴テーブルに登録され
た前記分岐履歴情報を全てクリアすることを特徴とする
データ処理装置。 - 【請求項4】プログラムの命令のオペランドデータをメ
モリからフェッチするオペランドフェッチステージと、
前記フェッチされたオペランドデータに対して演算を行
い演算結果のオペランドデータを前記メモリにストアす
る命令実行ステージとで命令のパイプライン処理を行う
方式のデータ処理装置であって、 前記データ処理装置は、 前記メモリからフェッチする第1のオペランドデータの
アドレス値と前記メモリにストアする第2のオペランド
データのアドレス値との比較結果に応じてバイパス許可
信号を出力するオペランドバイパス手段と、 前記バイパス許可信号に応答して前記メモリをバイパス
して前記第2のオペランドデータの値を前記第1のオペ
ランドデータとするバイパス機構と、 第1の状態と第2の状態とを持ち、前記第1の状態のと
きは前記オペランドバイパス手段がバイパス許可信号を
出力することを許可し、第2の状態のときは前記オペラ
ンドバイパス手段がバイパス許可信号を出力することを
許可しない制御手段とを備え、 プログラムの命令により前記制御手段の状態を前記第1,
第2のいずれかの状態に設定することを特徴とするデー
タ処理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63041086A JPH081599B2 (ja) | 1988-02-24 | 1988-02-24 | データ処理装置 |
US07/312,104 US5148529A (en) | 1988-02-24 | 1989-02-17 | Pipelined multi-stage data processor including an operand bypass mechanism |
US07/666,502 US5228131A (en) | 1988-02-24 | 1991-03-06 | Data processor with selectively enabled and disabled branch prediction operation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63041086A JPH081599B2 (ja) | 1988-02-24 | 1988-02-24 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01216427A JPH01216427A (ja) | 1989-08-30 |
JPH081599B2 true JPH081599B2 (ja) | 1996-01-10 |
Family
ID=12598662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63041086A Expired - Fee Related JPH081599B2 (ja) | 1988-02-24 | 1988-02-24 | データ処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5148529A (ja) |
JP (1) | JPH081599B2 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0328911A (ja) * | 1989-06-26 | 1991-02-07 | Mitsubishi Electric Corp | マイクロプロセッサ |
JP2504235B2 (ja) * | 1989-11-16 | 1996-06-05 | 三菱電機株式会社 | デ―タ処理装置 |
EP0442116A3 (en) * | 1990-02-13 | 1993-03-03 | Hewlett-Packard Company | Pipeline method and apparatus |
US5222240A (en) * | 1990-02-14 | 1993-06-22 | Intel Corporation | Method and apparatus for delaying writing back the results of instructions to a processor |
US5261063A (en) * | 1990-12-07 | 1993-11-09 | Ibm Corp. | Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs |
US5283874A (en) * | 1991-10-21 | 1994-02-01 | Intel Corporation | Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee |
MX9206002A (es) * | 1991-10-29 | 1993-04-01 | Ericsson Telefon Ab L M | Ahorro de tiempo en la lectura de variables de datos almacenados en un dispositivo de memoria y disminucion de la carta de un dispositivo indicador |
JP2539974B2 (ja) * | 1991-11-20 | 1996-10-02 | 富士通株式会社 | 情報処理装置におけるレジスタの読出制御方式 |
US5490255A (en) * | 1991-12-26 | 1996-02-06 | Amdahl Corporation | Expedited execution of pipelined command having self-ordering operand processing requirements |
US5289577A (en) * | 1992-06-04 | 1994-02-22 | International Business Machines Incorporated | Process-pipeline architecture for image/video processing |
US5450599A (en) * | 1992-06-04 | 1995-09-12 | International Business Machines Corporation | Sequential pipelined processing for the compression and decompression of image data |
JPH05342084A (ja) * | 1992-06-08 | 1993-12-24 | Matsushita Electric Ind Co Ltd | データ記憶装置及びデータ記憶方法 |
US5784631A (en) * | 1992-06-30 | 1998-07-21 | Discovision Associates | Huffman decoder |
DE69415126T2 (de) * | 1993-10-21 | 1999-07-08 | Sun Microsystems Inc., Mountain View, Calif. | Gegenflusspipelineprozessor |
US5778250A (en) * | 1994-05-23 | 1998-07-07 | Cirrus Logic, Inc. | Method and apparatus for dynamically adjusting the number of stages of a multiple stage pipeline |
US5761475A (en) * | 1994-12-15 | 1998-06-02 | Sun Microsystems, Inc. | Computer processor having a register file with reduced read and/or write port bandwidth |
US5933651A (en) * | 1995-09-29 | 1999-08-03 | Matsushita Electric Works, Ltd. | Programmable controller |
US5964866A (en) * | 1996-10-24 | 1999-10-12 | International Business Machines Corporation | Elastic self-timed interface for data flow elements embodied as selective bypass of stages in an asynchronous microprocessor pipeline |
FR2770662B1 (fr) * | 1997-11-03 | 1999-12-10 | Inside Technologies | Microprocesseur pipeline a saut conditionnel en un cycle d'horloge |
US6728869B1 (en) * | 2000-04-21 | 2004-04-27 | Ati International Srl | Method and apparatus for memory latency avoidance in a processing system |
US6859875B1 (en) * | 2000-06-12 | 2005-02-22 | Freescale Semiconductor, Inc. | Processor having selective branch prediction |
US8078845B2 (en) * | 2005-12-16 | 2011-12-13 | Freescale Semiconductor, Inc. | Device and method for processing instructions based on masked register group size information |
KR101210274B1 (ko) * | 2008-12-19 | 2012-12-10 | 한국전자통신연구원 | 전력 소모 스케일링이 가능한 프로세서 |
US9569214B2 (en) * | 2012-12-27 | 2017-02-14 | Nvidia Corporation | Execution pipeline data forwarding |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS55143653A (en) * | 1979-04-25 | 1980-11-10 | Nec Corp | Branch prefetch computer |
JPS5731049A (en) * | 1980-07-31 | 1982-02-19 | Nec Corp | Information processing equipment |
JPS6028015B2 (ja) * | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
US4477872A (en) * | 1982-01-15 | 1984-10-16 | International Business Machines Corporation | Decode history table for conditional branch instructions |
JPS60120439A (ja) * | 1983-12-05 | 1985-06-27 | Nec Corp | 演算処理装置 |
JPS62293434A (ja) * | 1986-06-12 | 1987-12-21 | Nec Corp | 分岐先予測制御方式 |
JP2603626B2 (ja) * | 1987-01-16 | 1997-04-23 | 三菱電機株式会社 | データ処理装置 |
-
1988
- 1988-02-24 JP JP63041086A patent/JPH081599B2/ja not_active Expired - Fee Related
-
1989
- 1989-02-17 US US07/312,104 patent/US5148529A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5148529A (en) | 1992-09-15 |
JPH01216427A (ja) | 1989-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5228131A (en) | Data processor with selectively enabled and disabled branch prediction operation | |
JPH081599B2 (ja) | データ処理装置 | |
US5293592A (en) | Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline | |
US5522053A (en) | Branch target and next instruction address calculation in a pipeline processor | |
JP2507638B2 (ja) | デ―タ処理装置 | |
US6131158A (en) | Data processing system capable of executing groups of instructions, including at least one arithmetic instruction, in parallel | |
JPH07114469A (ja) | データ処理装置 | |
JP3543181B2 (ja) | データ処理装置 | |
JPH0810428B2 (ja) | データ処理装置 | |
JPH081602B2 (ja) | データ処理装置 | |
JPH07120278B2 (ja) | データ処理装置 | |
US5461715A (en) | Data processor capable of execution of plural instructions in parallel | |
JPH06301535A (ja) | データ処理装置 | |
JP2710994B2 (ja) | データ処理装置 | |
JPH0769806B2 (ja) | データ処理装置 | |
US5269008A (en) | Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer | |
JP2532560B2 (ja) | 高機能な例外処理を行うデ―タ処理装置 | |
JPH0769807B2 (ja) | データ処理装置 | |
JPH0377138A (ja) | データ処理装置 | |
JPH0769801B2 (ja) | データ処理装置 | |
JPH0769814B2 (ja) | パイプライン処理機構を持つデータ処理装置 | |
JPH0769808B2 (ja) | データ処理装置 | |
JPH0769805B2 (ja) | データ処理装置 | |
JPH081600B2 (ja) | データ処理装置 | |
JPH0769802B2 (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 |
|
LAPS | Cancellation because of no payment of annual fees |