JPH081602B2 - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH081602B2
JPH081602B2 JP63040026A JP4002688A JPH081602B2 JP H081602 B2 JPH081602 B2 JP H081602B2 JP 63040026 A JP63040026 A JP 63040026A JP 4002688 A JP4002688 A JP 4002688A JP H081602 B2 JPH081602 B2 JP H081602B2
Authority
JP
Japan
Prior art keywords
instruction
branch
processing
stage
exception
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
Application number
JP63040026A
Other languages
English (en)
Other versions
JPH01214932A (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 JP63040026A priority Critical patent/JPH081602B2/ja
Priority to US07/312,554 priority patent/US5193156A/en
Publication of JPH01214932A publication Critical patent/JPH01214932A/ja
Priority to US08/291,963 priority patent/US5522053A/en
Publication of JPH081602B2 publication Critical patent/JPH081602B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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

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)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明はパイプラインの乱れを少なし、不要な例外
処理を起動することもない分岐命令処理機構により、多
段パイプライン処理機構を効率的に動作させ、高い処理
能力を実現したデータ処理装置に関するものである。
〔従来の技術〕
第5図に従来のデータ処理装置で行われていたパイプ
ライン処理機構の例を示す。(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)から入力されたオペ
ランドに対して命令コード中で指定された演算を実行す
る。さらに必要ならその演算結果をメモリにストアす
る。
上記のパイプライン処理機構により、各命令で指定さ
れる処理は5つに分解され、5つの処理を順番に実行す
ることにより、指定された処理を完了する。各々5つの
処理は異なる命令に対しては並列動作させることが可能
であり、理想的には上記の5段のパイプライン処理機構
により5つの命令を同時に処理し、パイプライン処理を
行わない場合にくらべ、最大で5倍の処理能力もつデー
タ処理装置を得ることができる。
〔発明が解決しようとする課題〕
パイプライン処理技術は上記のようにデータ処理装置
の処理能力を大幅に向上させる可能性をもつものであ
り、高速なデータ処理装置で広く用いられている。
しかし、パイプライン処理にもいくつかの欠点があ
り、いつも理想的な状態で命令が処理されるわけではな
い。パイプライン処理で問題となるものの1つは命令の
シーケンスを乱す分岐命令の実行である。
第5図に示すパイプライン処理機構をもち、分岐命令
をEステージ(15)で処理してから分岐先命令をIFステ
ージ(11)が処理する従来のデータ処理装置では、分岐
命令の実行により、パイプラインが大幅に乱れる。従来
のデータ処理装置で分岐命令が実行された場合に、パイ
プライン中を流れる命令の様子を第6図に示す。第6図
では命令3及び命令12が分岐命令である。命令3が実行
されるとすでにパイプライン処理中の命令4、命令5、
命令6、命令7はキャンセルされ、新たに命令11がIFス
テージ(11)から処理される。命令3がEステージ(1
5)で実行されてから命令11がEステージ(15)で実行
されるまでには4命令処理分の時間が無駄になる。命令
12についても同様に4命令処理分の時間が無駄になる。
この無駄時間は分岐命令の実行後に処理すべき命令のフ
ェッチが分岐命令に対する全パイプライン処理が終了し
た後に行われるためであり、パイプライン処理の段数が
多いほどこの無駄時間も長くなる。
パイプライン処理を行うデータ処理装置では分岐命令
の処理が処理能力向上の1つの大きなキーポイントであ
ることは従来より指摘されており、様々な工夫がすでに
行われている。分岐命令の処理に対する工夫は例えばJ.
K.F.Lee,A.J.Smith,「Branch Prediction Strategies a
nd Branch Target Buffer Design」,IEEE Computer,Vo
l.17,No.1,January,1984.で紹介されている。しかし、
いずれの工夫も実現に多大のハードウエアを必要とした
り、一部の分岐命令のみにしか効果がないなど、まだま
だ欠点を多く残すものであった。
特に分岐処理に伴う例外に関して正しい処理を行うこ
とを保証して、かつ効率的な分岐処理を行うものはなか
った。
〔課題を解決するための手段〕
本発明のデータ処理装置の第1の態様は、条件分岐命
令の分岐の有無を予測した分岐予測結果を出力する分岐
予測機構と、命令のデコードを行う命令デコーダとを有
し、条件分岐命令の命令コード及び上記分岐予測結果に
基づき、第1及び第2の制御コードを出力する命令デコ
ード部と、上記命令デコード部に接続され、上記第1の
制御コードを入力する先行分岐処理部とを備え、上記先
行分岐処理部は、上記第1の制御コードに従い上記分岐
先アドレスの命令の実行を指示する第1の分岐処理また
は上記非分岐先アドレスの命令の実行を指示する第1の
非分岐処理を行う第1の分岐処理機構と、上記第1の分
岐処理に伴う例外の有無を検出してその結果を示す第3
の制御コードを出力する例外検出機構とを有し、上記命
令デコード部と上記先行分岐処理部に接続され、上記第
2の制御コード及び上記第3の制御コードを入力する命
令実行部をさらに備え、上記命令実行部は上記第2の制
御コードに従い条件分岐命令の分岐条件の真偽判断に依
存して、上記第1の分岐処理機構の処理の正誤を判定
し、上記第1の分岐処理機構の処理を誤りと判定する第
2の分岐処理または上記第1の分岐処理機構の処理を正
しいと判定する第2の非分岐処理を行う第2の分岐処理
機構と、上記第3の制御コードに従い、上記例外に対す
る例外処理を起動または非起動する例外実行機構とを有
し、上記先行分岐処理部及び上記命令実行部は、上記先
行分岐処理部,上記命令実行部の順に上記複数の命令に
対するパインプライン処理を実行し、上記先行分岐処理
部の行う処理が第1のパインプラインステージとして規
定され、上記命令実行部の行う処理が第2のパイプライ
ンステージとして規定され、上記先行分岐処理部及び上
記命令実行部は上記条件分岐命令に対する処理に際し、
上記第1のパイプラインステージで上記第1の分岐処理
が実行され、かつ上記例外が検出され、上記第2のパイ
プラインステージで上記第2の分岐処理が実行される場
合には、上記命令実行部は上記例外処理を行わず、上記
第1のパイプラインステージで上記第1の分岐処理が実
行され、かつ上記例外が検出され、上記第2のパイプラ
インステージで上記第2の非分岐処理が実行される場合
には、上記命令実行部は上記例外処理を行っている。
また、本発明のデータ処理装置の第2の態様は、命令
のデコードを行う命令デコーダを有し、条件分岐命令の
命令コードをデコードして第1及び第2の制御コードを
出力する命令デコード部と、上記命令デコード部に接続
され、上記第1の制御コードを入力する先行分岐処理部
とを備え、上記先行分岐処理部は、上記第1の制御コー
ドに従い上記分岐先アドレスの命令の実行を指示する第
1の分岐処理を行う第1の分岐処理機構と、上記第1の
分岐処理に伴う例外の有無を検出してその結果を示す第
3の制御コードを出力する例外検出機構とを有し、上記
命令デコード部と上記先行分岐処理部に接続され、上記
第2の制御コード及び上記第3の制御コードを入力する
命令実行部をさらに備え、上記命令実行部は、上記第2
の制御コードに従い条件分岐命令の分岐条件の真偽を反
転した判断に依存して、上記第1の分岐処理機構の処理
の正誤を判定し、上記第1の分岐処理処理を誤りと判定
する第2の分岐処理または上記第1の分岐処理を正しい
と判定する第2の非分岐処理を行う第2の分岐処理機構
と、上記第3の制御コードに従い、上記例外に対する例
外処理を起動または非起動する例外実行機構とを有し、
上記先行分岐処理部及び上記命令実行部は、上記先行分
岐処理部,上記命令実行部の順に上記複数の命令に対す
るパイプライン処理を実行し、上記先行分岐処理部の行
う処理が第1のパインプラインステージとして規定さ
れ、上記命令実行部の行う処理が第2のパイプラインス
テージとして規定され、上記先行分岐処理部及び上記命
令実行部は上記条件分岐命令に対する処理に際し、上記
第1のパイプラインステージで上記第1の分岐処理が実
行され、かつ上記例外が検出され、上記第2のパイプラ
インステージで上記第2の分岐処理が実行される場合に
は、上記命令実行部は上記例外処理を行わず、上記第1
のパイプラインステージで上記第1の分岐処理が実行さ
れ、かつ上記例外が検出され、上記第2のパイプライン
ステージで上記第2の非分岐処理が実行される場合に
は、上記命令実行部は上記例外処理を行っている。
本発明のデータ処理装置の第3の態様は、命令のデコ
ードを行う命令デコーダを有し、条件分岐命令の命令コ
ードをデコードして第1及び第2の制御コードを出力す
る命令デコード部と、上記命令デコード部に接続され、
上記第1の制御コードを入力する先行分岐処理部とを備
え、上記先行分岐処理部は、上記第1の制御コードに従
い上記分岐先アドレスの命令の実行を指示する第1の分
岐処理または上記非分岐先アドレスの命令の実行を指示
する第1の非分岐処理を行う第1の分岐処理機構と、上
記第1の分岐処理の上記分岐先アドレスが奇数アドレス
のとき例外を検出して、上記例外の検出の有無を示す第
3の制御コードと上記奇数アドレス値を出力する例外検
出機構とを有し、上記命令デコード部と上記先行分岐処
理部に接続され、上記第2の制御コード、上記第3の制
御コード及び上記奇数アドレス値を入力する命令実行部
をさらに備え、上記命令実行部は、上記第2の制御コー
ドに従い条件分岐命令の分岐条件の真偽を反転した判断
に依存して、上記第1の分岐処理機構の処理の正誤を判
定し、上記第1の分岐処理機構の処理を誤りと判定する
第2の分岐処理または上記第1の分岐処理機構の処理を
正しいと判定する第2の非分岐処理を行う第2の分岐処
理機構と、上記第3の制御コードに従い、上記例外に対
する例外処理を起動または非起動する例外実行機構とを
有し、上記先行分岐処理部及び上記命令実行部は、上記
先行分岐処理部,上記命令実行部の順に上記複数の命令
に対するパイプライン処理を実行し、上記先行分岐処理
部の行う処理が第1のパインプラインステージとして規
定され、上記命令実行部の行う処理が第2のパイプライ
ンステージとして規定され、上記先行分岐処理部及び上
記命令実行部は上記条件分岐命令に対する処理に際し、
上記第1のパイプラインステージで上記第1の分岐処理
が実行され、かつ上記例外が検出され、上記第2のパイ
プラインステージで上記第2の分岐処理が実行される場
合には、上記命令実行部は上記例外処理を行わず、上記
第1のパイプラインステージで上記第1の分岐処理が実
行され、かつ上記例外が検出され、上記第2のパイプラ
インステージで上記第2の非分岐処理が実行される場合
には、上記命令実行部は上記奇数アドレス値を使用して
上記例外処理を行っている。
〔作用〕
この発明における第1〜第3の態様では、先行処理部
が行う第1のパイプラインステージで検出された例外
は、命令実行部が行う第2のパイプラインステージまで
処理の実行が保留され、第1のパイプラインステージで
の第1の分岐処理に伴い検出された例外に対する情報を
命令実行部に伝え、正しい第1の分岐処理により検出さ
れるべき例外に対してだけ、命令実行部は第2のパイプ
ラインステージで例外処理を実行する。
また、この発明における第1の態様の先行処理部の第
1の分岐処理機構は、分岐予測結果を含んだ第1の制御
コードに従って第1の分岐/非分岐処理を行うため、そ
の処理の正確性を高めることができる。
その結果、命令実行部の第2の分岐処理機構により、
第1の分岐処理機構の処理を誤りと判定する第2の分岐
処理が行われる割合を低減してパイプライン処理におけ
るデータ処理効率を高めるという効果を奏する。
また、この発明における第2の態様の命令実行部の第
2の分岐処理機構は、条件分岐命令をデコードして得ら
れる第2の制御コードに従い条件分岐命令の分岐条件の
真偽を反転した判断に依存して第1の分岐処理の正誤を
判定するため、分岐条件の真偽を反転した判断に基づく
論理比較を行うだけの比較的短時間な判定処理動作とな
る。
その結果、第2の分岐処理機構の第2の分岐/非分岐
処理を短時間で実行することにより、パイプライン処理
におけるデータ処理効率を高めるという効果を奏する。
また、この発明における第3の態様の命令実行部の例
外実行機構は、第1のパイプラインステージで第1の分
岐処理が実行され、かつ上記例外を検出され、第2のパ
イプラインステージで第2の非分岐処理が実行される場
合に、先行処理部より得た奇数アドレス値を使用して、
例外処理を行うことができる。
その結果、命令実行部は、奇数アドレスを求める時間
を省略して、例外処理を実行することができるため、パ
イプライン処理におけるデータ処理効率を高めるという
効果を奏する。
〔発明の実施例〕
(1)本発明のデータ処理装置の命令フォーマット 本発明のデータ処理装置の命令は16ビット単位で可変
長となっており、奇数バイト長の命令はない。
本発明のデータ処理装置では高頻度命令を短いフォー
マットとするため、特に工夫された命令フォーマット体
系をもつ。例えば、2オペランド命令に対して、基本的
に4バイト+拡張部の構成をもち、すべてのアドレッシ
ングモードが利用できる一般形フォーマットと頻度の高
い命令とアドレッシングモードのみを使用できる短縮形
フォーマットの2つのフォーマットがある。
第8図から第17図に示す本発明のデータ処理装置の命
令フォーマット中に現われる記号の意味は次の通りであ
る。
−:オペコードの入る部分 #:リテラル、または即値の入る部分 Ea:8ビットの一般形のアドレッシングモードでオペラン
ドを指定する部分 Sh:6ビットの短縮形のアドレッシングモードでオペラン
ドを指定する部分 Rn:レジスタ上のオペランドをレジスタ番号で指定する
部分 フォーマットは、第8図に示すように右側がLSB側
で、かつ高いアドレスになっている。アドレスNとアド
レスN+1の2バイトを見ないと命令フォーマットが判
別できないようになっているが、これは、命令が必ず16
ビット(2バイト)単位でフェッチ、デコードされるこ
とを前提としたためである。
本発明のデータ処理装置では、いずれのフォーマット
の場合も、各オペランドのEaまたはShのの拡張部は、必
ずそのEaまたはShの基本部を含むハーフワードの直後に
置かれる。これは、命令により暗黙に指定される即値デ
ータや、命令の拡張部に優先する。したがって、4バイ
ト以上の命令では、Eaの拡張部によって命令のオペコー
ドが分断される場合がある。
また、後でも述べるように、多段間接モードによっ
て、Eaの拡張部にさらに拡張部が付く場合にも、次の命
令オペコードよりもそちらの方が優先される。例えば、
第一ハーフワードにEa1を含み、第二ハーフワードにEa2
を含み、第三ハーフワードまである6バイト命令の場合
を考える。Ea1に多段間接モードを使用したため、普通
の拡張部のほかに多段間接モードの拡張部もつくものと
する。この時、実際の命令ビットパターンは、命令の第
一ハーフワード(Ea1の基本部を含む)、Ea1の拡張部、
Ea1の多段間接モード拡張部、命令の第二ハーフワード
(Ea2の基本部を含む)、Ea2の拡張部、命令の第三ハー
フワード、の順となる。
(1.1)短縮形2オペランド命令 第9図から第12図に示す。2オペランド命令の短縮形
フォーマットである。
第9図はメモリ−レジスタ間演算命令のフォーマット
である。このフォーマットにはソースオペランド側がメ
モリとなるL−formatとデスティネーションオペランド
側がメモリとなるS−formatがある。
L−formatでは、Shはソースオペランドの指定フィー
ルド、Rnはデスティネーションオペランドのレジスタの
指定フィールド、RRはShのオペランドサイズの指定をあ
らわす。レジスタ上に置かれたデスティネーションオペ
ランドのサイズは、32ビットに固定されている。レジス
タ側とメモリ側のサイズが異なり、ソース側のサイズが
小さい場合に符号拡張が行なわれる。
S−formatではShはデスティネーションオペランドの
指定フィールド、Rnはソースオペランドのレジスタ指定
フィールド、RRはShのオペランドサイズの指定をあらわ
す。レジスタ上に置かれたソースオペランドのサイズ
は、32ビットに固定されている。レジスタ側とメモリ側
のサイズが異なり、ソース側のサイズが大きい場合にあ
ふれた部分の切捨てとオーバーフローチェックが行なわ
れる。
第10図はレジスタ−レジスタ間演算命令のフォーマッ
ト(R−format)である。Rnはデスティネーションレジ
スタの指定フィールドRmはソースレジスタの指定フィー
ルドである。オペランドサイズは32ビットのみである。
第11図はリテラル−メモリ間演算命令のフォーマット
(Q−format)である。MMはディスティネーションオペ
ランドサイズの指定フィールド、#はリテラルによるソ
ースオペランドの指定フィールド、Shはデスティネーシ
ョンオペランドの指定フィールドである。
第12図は即値−メモリ間演算命令のフォーマット(I
−format)である。MMはオペランドサイズの指定フィー
ルド(ソース,ディスティネーションで共通)、Shはデ
スティネーションオペランドの指定フィールドである。
I−formatの即値のサイズは、デスティネーション側の
オペランドのサイズと共通に8,16,32ビットとなり、ゼ
ロ拡張、符号拡張は行なわれない。
(1.2)一般形1オペランド命令 第13図は1オペランド命令の一般形フォーマット(G1
−format)である。MMはオペランドサイズの指定フィー
ルドである。一部のG1−format命令では、Eaの拡張部以
外にも拡張部がある。また、MMを使用しない命令もあ
る。
(1.3)一般形2オペランド命令 第14図から第16図は2オペランド命令の一般形フォー
マットである。このフォーマットに含まれるのは、8ビ
ットで指定する一般形アドレッシングモードのオペラン
ドが最大2つ存在する命令である。オペランドの総数自
体は3つ以上になる場合がある。
第14図は第一オペランドがメモリ読みだしを必要とす
る命令のフォーマット(G−format)である。EaMはデ
スティネーションオペランドの指定フィド、MMはデステ
ィネーションオペランドサイズの指定フィールド、EaR
はソースオペランド指定フィールド、RRはソースオペラ
ンドサイズの指定フィールドである。一部のG−format
命令では、EaMやEaRの拡張部以外にも拡張部がある。
第15図は第一オペランドが8ビット即値の命令のフォ
ーマット(E−format)である。EaMはデスティネーシ
ョンオペランドの指定フィールド、MMはデスティネーシ
ョンオペランドサイズの指定フィールド、#はソースオ
ペランド値である。
E−formatとI−formatとは機能的には似たものであ
るが、考え方の点では大きく違っている。E−formatは
あくまでも2オペランド一般形(G−format)の派生形
であり、ソースオペランドのサイズが8ビット固定、デ
ィスティネーションオペランドのサイズが8/16/32ビッ
トから選択となっている。つまり、異種サイズ間の演算
を前提とし、デスティネーションオペランドのサイズに
合わせて8ビットのソースオペランドがゼロ拡張または
符号拡張される。一方、I−formatは、特に転送命令、
比較命令で頻度の多い即値のパターンを短縮形にしたも
のであり、ソースオペランドとディスティネーションオ
ペランドのサイズは等しい。
第16図は第一オペランドがアドレス計算のみの命令の
フォーマット(GA−format)である。EaWはデスティネ
ーションオペランドの指定フィールド、WWはデスティネ
ーションオペランドサイズの指定フィールド、EaAはソ
ースオペランドの指定フィールドである。ソースオペラ
ンドとしては実行アドレスの計算結果自体が使用され
る。
第17図はショートブランチ命令のフォーマットであ
る。ccccは分岐条件指定フィールド、disp:8はジャンプ
先との変位指定フィールド、本発明のデータ処理装置で
は8ビットで変位を指定する場合には、ビットパターン
での指定値を2倍して変位値とする。
(1.4)アドレッシングモード 本発明のデータ処理装置のアドレッシングモード指定
方法には、レジスタを含めて6ビットで指定する短縮形
と、8ビットで指定する一般形がある。
未定義のアドレッシングモードを指定した場合や、意
味的に考えて明らかにおかしなアドレッシングモードの
組み合わせを指定した場合には、未定義命令を実行した
場合と同じく予約命令例外を発生し、例外処理を起動す
る。
これに該当するのは、デスティネーションが即値モー
ドの場合、アドレス計算を伴うべきアドレシングモード
指定フィールドで即値モードを使用した場合などであ
る。
第18図から第28図に示すフォーマットの図中で使われ
る記号つぎの通りである。
Rn レジスタ指定 (Sh) 6ビットの短縮形アドレッシングモードでの指
定方法 (Ea) 8ビットの一般形アドレッシングモードでの指
定方法 フォーマットの図で点線で囲まれた部分は、拡張部を
示す。
(1.4.1)基本アドレッシングモード 本発明のデータ処理装置は様々なアドレッシングモー
ドをサポートする。そのうち、本発明のデータ処理装置
でサポートする基本アドレッシングモードには、レジス
タ直接モード、レジスタ間接モード、レジスタ相対間接
モード、即値モード、絶対モード、PC相対間接モード、
スタックポップモード、スタックプッシュモードがあ
る。
レジスタ直接モードは、レジスタの内容をそのままオ
ペランドとする。フォーマットは第18図に示す。Rnは汎
用レジスタの番号を示す。
レジスタ間接モードは、レジスタの内容をアドレスと
するメモリの内容をオペランドとする。フォーマットは
第19図に示す。Rnは汎用レジスタの番号を示す。
レジスタ相対間接は、ディスプレースメント値が16ビ
ットか32ビットかにより、2種類ある。それぞれ、レジ
スタの内容に16ビットまたは32ビットのディスプレース
メント値を加えた値をアドレスとするメモリの内容をオ
ペランドとする。フォーマットは第20図に示す。Rnは汎
用レジスタの番号を示す。disp:16とdisp:32は、それぞ
れ、16ビットのディスプレースメント値、32ビットのデ
ィスプレースメント値を示す。ディスプレースメント値
は符号付きとして扱う。
即値モードは、命令コード中で指定されるビットパタ
ンをそのまま2進数と見なしてオペランドとする。フォ
ーマットは第21図に示す。imm dataは即値を示す。imm
dataのサイズは、オペランドサイズとして命令中で指定
される。
絶対モードは、アドレス値が16ビットで示されるか32
ビットで示されるかにより2種類ある。それぞれ、命令
コード中で指定される16ビットまたは32ビットのビット
パタンをアドレスとしたメモリの内容をオペランドとす
る。フォーマットは第22図に示す。abs:16とabs:32は、
それぞれ、16ビット、32ビットのアドレス値を示す。ab
s:16でアドレスが示されるときは指定されたアドレス値
を32ビットに符号拡張する。
PC相対間接モードは、ディスプレースメント値が16ビ
ットか32ビットかにより、2種類ある。それぞれ、プロ
グラムカウンタの内容に16ビットまたは32ビットのディ
スプレースメント値を加えた値をアドレスとするメモリ
の内容をオペランドとする。フォーマットは第23図に示
す。disp:16とdisp:32は、それぞれ、16ビットのディス
プレースメント値、32ビットのディスプレースメント値
を示す。ディスプレースメント値は符号付きとして扱
う。PC相対間接モードにおいて参照されるプログラムカ
ウンタの値は、そのオペランドを含む命令の先頭アドレ
スである。多段間接アドレシングモードにおいてプログ
ラムカウンタの値が参照される場合にも、同じように命
令先頭のアドレスをPC相対の基準値として使用する。
スタックポップモードはスタックポインタ(SP)の内
容をアドレスとするメモリの内容をオペランドとする。
オペランドアクセス後、SPをオペランドサイズだけイン
クリメントする。例えば、32ビットデータを扱う時に
は、オペランドアクセス後にSPが+4だけ更新される。
B,Hのサイズのオペランドに対するスタックポップモー
ドの指定も可能であり、それぞれSPが+1,+2だけ更新
される。
フォーマットは第24図に示す。オペランドに対しスタッ
クポップモードが意味を持たないものに対しては、予約
命令例外を発生する。具体的に予約命令例外となるの
は、writeオペランド、read−modify−writeオペランド
に対するスタックポップモード指定である。
スタックプッシュモードはSPの内容をオペランドサイ
ズだけデクリメントした内容をアドレスとするメモリの
内容をオペランドとする。スタックプッシュモードでは
オペランドアクセス前にSPがデクリメントされる。例え
ば、32ビットデータを扱う時には、オペランドアクセス
前にSPが−4だけ更新される。B,Hのサイズのオペラン
ドに対するスタックプッシュモードの指定も可能であ
り、それぞれSPが−1,−2だけ更新される。フォーマッ
トは第25図に示す。オペランドに対してスタックプッシ
ュモードが意味を持たないものに対しては、予約命令例
外を発生する。具体的に予約命令例外となるのは、read
オペランド、read−modify−writeオペランドに対する
スタックプッシュモード指定である。
(1.4.2)多段間接アドレッシングモード 複雑なアドレッシングも、基本的には加算と間接参照
の組み合わせに分解することができる。したがって、加
算と間接参照のオペレーションをアドレッシングのプリ
ミティブとして与えておき、それを任意に組み合わせる
ことができれば、どんな複雑なアドレッシングモードを
も実現することができる。本発明のデータ処理装置の多
段間接アドレッシングモードはこのような考え方にたっ
たアドレッシングモードである。複雑なアドレッシング
モードは、モジュール間のデータ参照やAI言語の処理系
に特に有用である。
多段間接アドレッシングモードを指定するとき、基本
アドレッシングモード指定フィールドでは、レジスタベ
ース多段間接モード、PCベース多段間接モード、絶対ベ
ース多段間接モードの3種類の指定方法のうちいずれか
1つを指定する。
レジスタベース多段間接モードはレジスタの値を、拡
張する多段間接アドレッシングのベース値とするアドレ
ッシングモードである。フォーマットは第26図に示す。
Rnは汎用レジスタの番号を示す。
PCベース多段間接モードはプログラムカウンタの値
を、拡張する多段間接アドレッシングのベース値とする
アドレッシングモードである。フォーマットは第27図に
示す。
絶対ベース多段間接モードはゼロを、拡張する多段間
接アドレッシングのベース値とするアドレッシングモー
ドである。フォーマットは第28図に示す。
拡張する多段間接モード指定フィールドは、16ビット
を単位としており、これを任意回繰り返す。1段の多段
間接モードにより、ディスプレースメントの加算、イン
デクスレジスタのスケーリング(×1,×2,×4,×8)と
加算、メモリの間接参照、を行なう。多段間接モードの
フォーマットは第29図で示す。各フィールドは以下に示
す意味をもつ。
E=0:多段間接モード継続 E=1:アドレス計算終了 tmp==>address of operand I=0:メモリ間接参照なし tmp+disp+Rx*Scale==>tmp I=1:メモリ間接参照あり mem〔tmp+disp+Rx*Scale〕==>tmp M=0:<Rx>をインデクスとして使用 M=1:特殊なインデクス <Rx>=0 インデクス値を加算しない(Rx=0) <Rx>=1 プログラムカウンタをインデスク値として
使用(Rx=PC) <Rx>=2〜reserved D=0:多段間接モード中の4ビットのフィールドd4の値
を4倍してディスプレースメント値とし、これを加算す
る。d4は符号付きとして扱い、オペランドのサイズとは
関係なく必ず4倍して使用する。
D=1:多段間接モードの拡張部で指定されたdispx(16/
32ビット)をディスプレースメント値とし、これを加算
する。
拡張部のサイズはd4フィールドで指定する。
d4=0001 dispxは16ビット d4=0010 dispxは32ビット XX:インデクスのスケール(scale=1/2/4/8) プログラムカウンタに対して×2、×4、×8のスケ
ーリングを行なった場合には、その段の処理終了後の中
間値(tmp)として、不定値が入る。この多段間接モー
ドによって得られる実効アドレスは予測できない値とな
るが、例外は発生しない。プログラムカウンタに対する
スケーリングの指定は行なってはいけない。
多段間接モードによる命令フォーマットのバリエーシ
ョンを第30図、第31図に示す。第30図は多段間接モード
が継続するか終了するかのバリエーションを示す。第31
図はディスプレーメントのサイズのバリエーションを示
す。
任意段数の多段間接モードが利用できれば、コンパイ
ラの中で段数による場合分けが不要になるので、コンパ
イラの負担が軽減されるというメリットがある。多段の
間接参照の頻度が非常に少ないとしても、コンパイラと
しては必ず正しいコードを発生できなければならないか
らである。このため、フォーマット上、任意の段数が可
能になっている。
(1.5)例外処理 本発明のデータ処理装置ではソフトウエア負荷の軽減
のため、豊富な例外処理機能をもつ、本発明のデータ処
理装置では例外処理は、命令処理を再実行するもの(例
外)、命令処理を完了するもの(トラップ)、割込の3
種類に分けて名称をつけている。また本発明のデータ処
理装置では、この3種の例外処理と、システム障害を総
称してEITと呼ぶ。
(2)機能ブロックの構成 第2図に本発明のデータ処理装置のブロック図を示
す。本発明のデータ処理装置の内部を機能的に大きく分
けると、命令フェッチ部(51)、命令デコード部(5
2)、PC計算部(53)、オペランドアドレス計算部(5
4)、マイクロROM部(55)、データ演算部(56)、外部
バスインターフェイス部(57)に分かれる。第2図で
は、その他にCPU外部にアドレスを出力するアドレス出
力回路(58)とCPU外部とデータの入出力を行うデータ
入出力回路(59)を他の機能ブロック部と分けて示し
た。
(2.1)命令フェッチ 命令フェッチ部(51)にはブランチバッファ、命令キ
ューとその制御部などがあり、次にフェッチすべき命令
のアドレスを決定して、ブランチバッファやCPU外部の
メモリから命令をフェッチする。ブランチバッファへの
命令登録も行う。
ブランチバッファは小規模であるためセレクティブキ
ャッシュとして動作する。ブランチバッファの動作の詳
細は特願昭61−202041で詳しく述べられている。
次にフェッチすべき命令のアドレスは命令キューに入
力すべき命令のアドレスとして専用のカウンタで計算さ
れる。分岐やジャンプが起きたときには、新たな命令の
アドレスが、PC計算部(53)やデータ演算部(56)より
転送されてくる。
CPU外部のメモリから命令をフェッチするときは、外
部バスインターフェイス部(57)を通して、フェッチす
べき命令のアドレスをアドレス出力回路(58)からCPU
外部に出力し、データ入出力回路(59)をから命令コー
ドをフェッチする。
バッファリングした命令コードのうち、命令デコード
部(52)で次にデコードすべき命令コードを命令デコー
ド部(52)に出力する。
(2.2)命令デコード部 命令デコード部(52)では基本的に16ビット(ハーフ
ワード)単位に命令コードをデコードする。このブロッ
クには第1ハーフワードに含まれるオペコードをデコー
ドするFHWデコーダ、第2、第3ハーフワードに含まれ
るオペコードをデコードするNFHWデコーダ、アドレッシ
ングモードをデコードするアドレッシングモードデコー
ダが含まれる。
さらにFHWデコーダやNFHWデコーダの出力をさらにデ
コードして、マイクロROMのエントリアドレスを計算す
るデコーダ2、条件分岐命令の分岐予測を行う分岐予測
機構、オペランドアドレス計算のときのパイプラインコ
ンフリクトをチェックするアドレス計算コンフリクトチ
ェック機構も含まれる。
命令フェッチ部より入力された命令コードを2クロッ
クにつき0〜6バイトデコードする。デコード結果のう
ち、分岐予測機構による条件分岐命令の分岐予測結果に
基づく第1の制御コードを含んでオペランドアドレス計
算に関係する情報がオペランドアドレス計算部(54)
に、分岐予測機構による条件分岐命令の分岐予測結果に
基づく第2の制御コードを含んでデータ演算部(56)で
の演算に関する情報がマイクロROM部(55)に、それぞ
れ出力される。
(2.3)マイクロROM部 マイクロROM部(55)には主にデータ演算部(56)を
制御するマイクロプログラムが格納されているマイクロ
ROM、マイクロシーケンサ、マイクロ命令デコーダなど
が含まれる。マイクロ命令はマイクロROMから2クロッ
クに1度読み出される。マイクロシーケンサはマイクロ
プログラムで示されるシーケンス処理の他に、例外、割
込、トラップ(この3つをあわせてEITと呼ぶ)の処理
をハードウエア的に受付ける。またマイクロROM部はス
トアバッファの管理も行う。マイクロROM部には命令コ
ードに依存しない割込みや演算実行結果によるフラッグ
情報と、デコーダ2の出力など命令デコード部の出力が
入力される。第2の制御コードを含むマイクロデコーダ
の出力は主にデータ演算部(56)に対して出力される
が、ジャンプ命令の実行による他の先行処理中止情報な
ど一部の情報は他のブロックへも出力される。
(2.4)オペランドアドレス計算部 オペランドアドレス計算部(54)は、命令デコード部
(52)のアドレスデコーダなどから出力されたオペラン
ドアドレス計算に関係する情報によりハードワイヤード
制御される。このブロックではオペランドのアドレス計
算に関するほとんどの処理が行われる。メモリ間接アド
レシングのためのメモリアクセスのアドレスやオペラン
ドアドレスがメモリにマップされたI/O領域に入るかど
うかのチェックも行われる。
アドレス計算結果は外部バスインターフェイス部(5
7)に送られる。アドレス計算に必要な汎用レジスタや
プログラムカウンタの値はデータ演算部より入力され
る。
メモリ間接アドレッシングを行うときは外部バスイン
ターフェイス部(57)を通してアドレス出力回路(58)
からCPU外部に参照すべきメモリアドレスを出力し、デ
ータ入出力部(59)から入力された間接アドレス値を命
令デコード部(52)をそのまま通過させてフェッチす
る。
(2.5)PC計算部 先行分岐処理部であるPC計算部(53)は命令デコード
部(52)から出力されるPC計算に関係する情報でハード
ワイヤードに制御され、命令のPC値を計算する。本特許
のデータ処理装置は可変長命令セットを持っており、命
令をデコードしてみないとその命令の長さが判らない。
PC計算部(53)は、命令デコード部(52)から出力され
る命令長をデコード中の命令のPC値に加算することによ
りつぎの命令のPC値を作り出す。また、命令デコード部
(52)が、分岐命令をデコードしてデコード段階での分
岐を指示したときは命令長の代わりに分岐変位を分岐命
令のPC値に加算することにより分岐先命令のPC値を計算
する。分岐命令に対して命令デコード段階で分岐を行う
ことを本発明のデータ処理装置ではプリブランチと呼
ぶ。プリブランチの方法については特願昭61−204500と
特願昭61−200557で詳しく述べられている。
PC計算部(53)の計算結果は各命令のPC値として命令
のデコード結果とともに出力されるほか、プリブランチ
時には、次にデコードすべき命令のアドレスとして命令
フェッチ部に出力される。
また、次に命令デコード部(52)でデコードされる命
令の分岐予測のためのアドレスにも使用される。分岐予
測の方法については特願昭62−8394で詳しく述べられて
いる。
(2.6)データ演算部 データ演算部(56)はマイクロプログラムにより制御
され、マイクロROM部(55)の出力情報に従い、各命令
の機能を実現するに必要な演算をレジスタと演算器で実
行する。演算対象となるオペランドがアドレスや即値の
場合は、オペランドアドレス計算部(54)で計算された
アドレスや即値を外部バスインターフェイス部(57)を
通過させて得る。また、演算対象となるオペランドがCP
U外部のメモリにあるデータの場合は、アドレス計算部
(54)で計算されたアドレスをバスインターフェイス部
(57)がアドレス出力回路(58)から出力して、CPU外
部のメモリからフェッチしたオペランドをデータ入出力
回路(59)から得る。
演算器としてはALU、バレルシフタ、プライオリティ
エンコーダやカウンタ、シフトレジスタなどがある。レ
ジスタと主な演算器の間は3バスで結合されており、1
つのレジスタ間演算を指示する1マイクロ命令を2クロ
ックサイクルで処理する。
データ演算のときCPU外部のメモリをアクセスする必
要がある時はマイクロプログラムの指示により外部バス
インターフェイス部(57)を通してアドレス出力回路
(58)からアドレスをCPU外部に出力し、データ入出力
回路(59)を通して目的のデータをフェッチする。
CPU外部のメモリにデータをストアするときは外部の
バスインターフェイス部(57)を通してアドレス出力回
路(58)よりアドレスを出力すると同時に、データ入出
力回路(59)からデータをCPU外部に出力する。オペラ
ンドストアを効率的に行うためデータ演算部(56)には
4バイトのストアバッファがある。
ジャンプ命令の処理や例外処理などを行って新たな命
令アドレスをデータ演算部(56)が得たときはこれを命
令フェッチ部(51)とPC計算部(53)に出力する。
(2.7)外部バスインターフェイス部 外部バスインターフェイス部(57)は本特許のデータ
処理装置の外部バスでの通信を制御する。メモリのアク
セスはすべてクロック同期で行われ、最小2クロックサ
イクルで行うことができる。
メモリに対するアクセス要求は命令フェッチ部(5
1)、アドレス計算部(54)、データ演算部(56)から
独立に生じる。外部バスインターフェイス部(57)はこ
れらのメモリアクセス要求を調停する。さらにメモリと
CPUを結ぶデータバスサイズである32ビット(ワード)
の整置境界をまたぐメモリ番地にあるデータのアクセス
は、このブロック内で自動的にワード境界をまたぐこと
を検知して、2回のメモリアクセスに分解して行う。
プリフェッチするオペランドとストアするオペランド
が重なる場合の、コンフリクト防止処理やストアオペラ
ンドからフェッチオペランドへのバイパス処理も行う。
(3)パイプライン機構 本発明のデータ処理装置のパイプライン処理は第3図
に示す構成となる。命令のプリフェッチを行う命令フェ
ッチステージ(IFステージ(31))、命令のデコードを
行うデコードステージ(Dステージ(32))、オペラン
ドのアドレス計算を行うオペランドアドレス計算ステー
ジ(Aステージ(33))、マイクロROMアクセス(特に
Rステージ(36)と呼ぶ)とオペランドのプリフェッチ
(特にOFステージ(37)と呼ぶ)を行うオペランドフェ
ッチステージ(Fステージ(34))、命令の実行を行う
実行ステージ(Eステージ(35)の5段構成をパイプラ
イン処理の基本とする。Eステージ(35)では1段のス
トアバッファがあるほか、高機能命令の一部は命令実行
自体をパイプライン化するため、実際には5段以上のパ
イプライン処理効果がある。
各ステージは他のステージとは独立に動作し、理論上
は5つのステージが完全に独立動作する。各ステージは
1回の処理を最小2クロックで行うことができる。従っ
て理想的には2クロックごとに次々とパイプライン処理
が進行する。
本発明のデータ処理装置にはメモリ−メモリ間演算
や、メモリ間接アドレッシングなど、基本パイプライン
処理1回だけでは処理が行えない命令があるが、本発明
のデータ処理装置はこれらの処理に対してもなるべく均
衡したパイプライン処理が行えるように設計されてい
る。複数のメモリオペランドをもつ命令に対してはメモ
リオペランドの数をもとに、デコード段階で複数のパイ
プライン処理単位(ステップコード)に分解してパイプ
ライン処理を行うのである。パイプライン処理単位の分
解方法に関しては特願昭61−236456で詳しく述べられて
いる。
IFステージ(31)からDステージ(32)に渡される情
報は命令コードそのものである。Dステージ(32)から
Aステージに渡される情報は命令で指定された演算に関
するもの(Dコード(41)と呼ぶ)と、オペランドのア
ドレス計算に関係するもの(Aコード(42)と呼ぶ)と
の2つある。Aステージ(33)からFステージに渡され
る情報はマイクロプログラムルーチンのエントリ番地や
マイクロプログラムへのパラメータなどを含むRコード
(43)と、オペランドのアドレスとアクセス方法指示情
報などを含むFコードとの2つである。Fステージ(3
4)からEステージ(35)に渡される情報は演算制御情
報とリテラルなどを含むEコード(45)と、オペランド
やオペランドアドレスなどを含むSコード(46)との2
つである。
Eステージ(35)以外のステージで検出されたEITは
そのコードがEステージ(35)の到達するまではEIT処
理を起動しない。Eステージ(35)で処理されている命
令のみが実行段階の命令であり、IFステージ(31)〜F
ステージ(34)で処理されている命令はまだ実行段階に
至っていないものである。従ってEステージ(35)以外
で検出されたEITは検出したことをステップコード中に
記録して次のステージに伝えられるのみである。
(3.1)パイプライン処理単位 (3.1.1)命令コードフィールドの分類 本発明のデータ処理装置のパイプライン処理単位は命
令セットのフォーマットの特徴を利用して決定されてい
る。(1)の節で述べたように、本発明のデータ処理装
置の命令は2バイト単位の可変長命令であり、基本的に
は(2バイトの命令基本部+0〜4バイトのアドレシン
グ拡張部)を1〜3回繰り返すことにより命令が構成さ
れている。
命令基本部には多くの場合オペコード部とアドレッシ
ングモード指定部があり、インデックスアドレシングや
メモリ間接アドレッシングが必要なときにはアドレッシ
ング拡張部の代わりに(2バイトの多段間接モード指定
部+0〜4バイトのアドレシング拡張部)が任意個付
く。また、命令により2または4バイトの命令固有の拡
張部が最後に付く。
命令基本部には命令のオペコード、基本アドレッシン
グモード、リテラルなどが含まれる。アドレッシング拡
張部はディスプレースメント、絶対アドレス、即値、分
岐命令の変位のいずれかである。命令固有の拡張部には
レジスタマップ、I−format命令の即値指定などがあ
る。第32図で本発明のデータ処理装置の基本的命令フォ
ーマットの特徴を示す。
(3.1.2)ステップコードへの命令の分解 本発明のデータ処理装置では上記の命令フォーマット
の特徴を生かしたパイプライン処理を行う。Dステージ
(32)では(2バイトの命令基本部+0〜4バイトのア
ドレッシング拡張部)、(多段間接モード指定部+アド
レッシング拡張部)または命令固有の拡張部を1つのデ
コード単位として処理する。各回のデコード結果をステ
ップコードと呼び、Aステージ(33)以降ではこのステ
ップコードをパイプライン処理の単位としている。ステ
ップコードの数は命令ごとに固有であり、多段間接モー
ド指定を行わないとき、1つの命令は最小1個、最大3
個のステップコードに分かれる。多段間接モード指定が
あればそれだけステップコードが増える。ただし、これ
は後で述べるようにデコード段階のみである。
(3.1.3)プログラムカウンタの管理 本発明のデータ処理装置のパイプライン上に存在する
ステップコードはすべて別命令に対するものである可能
性があり、プログラムカウンタの値はステップコードご
とに管理する。すべてのステップコードはそのステップ
コードのもとになった命令のプログラムカウンタ値をも
つ。ステップコードに付属してパイプラインの各ステー
ジを流れるプログラムカウンタ値はステッププログラム
カウンタ(SPC)と呼ぶ。SPCはパイプラインステージを
次々と受け渡されていく。
(3.2)各パイプラインステージの処理 各パイプラインステージの入出力ステップコードには
第3図に示したように便宜上名前が付けられている。ま
たステップコードはオペコードに関する処理を行い、マ
イクロROMのエントリ番地やEステージ(35)に対する
パラメータなどになる系列とEステージ(35)のマイク
ロ命令に対するオペランドになる系列の2系列がある。
(3.2.1)命令フェッチステージ 命令フェッチステージ(IFステージ(31))は命令を
メモリやブランチバッファからフェッチし、命令キュー
に入力して、Dステージ(32)に対して命令コードを出
力する。命令キューの入力は整置された4バイト単位で
行う。メモリから命令をフェッチするときは整置された
4バイトにつき最小2クロックを要する。ブランチバッ
ファがヒットした時は整置された4バイトにつき1クロ
ックでフェッチ可能である。命令キューの出力単位は2
バイトごとに可変であり、2クロックの間に最大6バイ
トまで出力できる。また分岐の直後には命令キューをバ
イパスして命令基本部2バイトを直接命令デコーダに転
送することもできる。
ブランチバッファへの命令の登録やクリアなどの制
御、プリフェッチ先命令アドレスの管理や命令キューの
制御もIFステージ(31)で行う。
IFステージ(31)で検出するEITには命令をメモリか
らフェッチするときのバスアクセス例外や、メモリ保護
違反などによるアドレス変換例外がある。
(3.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ビットの
リテラル情報と、を出力する。
Dステージ(32)では各命令のPC計算部(53)の制
御、分岐予測処理、プリブランチ命令に対するプリブラ
ンチ処理、命令キューからの命令コード出力処理も行
う。
Dステージ(32)で検出するEITには予約命令例外、
プリブランチ時の奇数アドレスジャンプトラップがあ
る。また、IFステージ(31)より転送されてきた各種EI
Tはステップコード内にエンコードする処理をしてAス
テージ(33)に転送する。
(3.2.3)オペランドアドレス計算ステージ オペランドアドレス計算ステージ(Aステージ(3
3))は処理が大きく2つに分かれる。1つは命令デコ
ード部(52)のデコーダ2を使用して、オペコードの後
段デコードを行う処理で、他方はオペランドアドレス計
算部(54)でオペランドアドレスの計算を行う処理であ
る。
オペコードの後段デコード処理はDコード(41)を入
力とし、レジスタやメモリの書き込み予約及びマイクロ
プログラムのエントリ番地とマイクロプログラムに対す
るパラメータなどを含むRコード(43)の出力を行う。
なお、レジスタやメモリの書き込み予約は、アドレス計
算で参照したレジスタやメモリの内容が、パイプライン
上を先行する命令で書き換えられ、誤ったアドレス計算
が行われるのを防ぐためのものである。レジスタやメモ
リの書き込み予約はデッドロックを避けるため、ステッ
プコードごとに行うのではなく命令ごとに行う。レジス
タやメモリの書き込み予約については特願昭62−144394
で詳しく述べられている。
オペランドアドレス計算処理はAコード(42)を入力
とし、Aコード(42)に従いオペランドアドレス計算部
(54)で加算やメモリ間接参照を組み合わせてアドレス
計算を行い、その計算結果をFコード(44)として出力
する。この際、アドレス計算に伴うレジスタやメモリの
読み出し時にコンフリクトチェックを行い、先行命令が
レジスタやメモリに書き込み処理を終了していないため
コンフリクトが指示されれば、先行命令がEステージ
(35)で書き込み処理を終了するまで待つ。また、オペ
ランドアドレスやメモリ間接参照のアドレスがメモリに
マップされたI/O領域に入るかどうかのチェックも行
う。
Aステージ(33)で検出するEITには予約命令例外、
特権命令例外、バスアクセス例外、アドレス変換例外、
メモリ間接アドレッシングのときのオペランドブレイク
ポイントヒットによるデバッグトラップがある。Dコー
ド(41)、Aコード(42)自体がEITを起こしたことを
示しておれば、Aステージ(33)はそのコードに対して
アドレス計算処理をせず、そのEITをRコード(43)や
Fコード(44)に伝える。
(3.2.4)マイクロROMアクセスステージ オペランドフェッチステージ(Fステージ(34))も
処理が大きく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ステージ(36)で新たに検出するEITはない。Rコ
ード(36)が命令処理再実行型のEITを示しているとき
はそのEIT処理に対するマイクロプログラムが実行され
るのでRステージ(36)はそのRコード(43)に従った
マイクロ命令をフェッチする。Rコード(43)が奇数ア
ドレスジャンプトラップを示しているときRステージ
(36)はそれをEコード(45)に伝える。これはプリブ
ランチに対するもので、Eステージ(35)ではそのEコ
ード(45)で分岐が生じなければそのプリブランチを有
効として奇数アドレスジャンプトラップを発生する。
(3.2.5)オペランドフェッチステージ オペランドフェッチステージ(OFステージ(37))は
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領域に対しては
オペランドプリフェッチを遅延させ、先行命令がすべて
完了するまで待ってオペランドフェッチを行う。
OFステージ(37)で検出するEITにはバスアクセス例
外、アドレス変換例外、オペランドプリフェッチに対す
るブレイクポイントヒットによるデバッグトラップがあ
る。Fコード(44)がデバッグトラップ以外のEITを示
しているときはそれをSコード(46)に転送し、オペラ
ンドプリフェッチは行わない。Fコード(44)がデバッ
グトラップを示しているときはそのFコード(44)に対
してEITを示していないときと同じ処理をすると共にデ
バッグトラップをSコード(46)に伝える。
(3.2.6)実行ステージ 実行ステージ(Eステージ(35))はEコード(45)
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バイト以内のオペラン
ドストアと次のマイクロ命令実行をパイプライン処理す
ることもできる。
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ステージ(3
5)で直接受け付けられ、マイクロプログラムにより必
要な処理が実行される。その他の各種EITも処理はマイ
クロプログラムにより行われる。
(3.3)各パイプラインステージの状態制御 パイプラインの各ステージは入力ラッチと出力ラッチ
を持ち、他のステージとは独立に動作することを基本と
する。各ステージは1つ前に行った処理が終わり、その
処理結果を出力ラッチから次のステージの入力ラッチに
転送し、自分のステージの入力ラッチに次の処理に必要
な入力信号がすべてそろえば次の処理を開始する。
つまり、各ステージは、1つ前段のステージから出力
されてくる次の処理に対する入力信号がすべて有効とな
り、今の処理結果を後段のステージの入力ラッチに転送
して出力ラッチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミ
ングで入力信号がすべてそろっている必要がある。入力
信号がそろっていないと、そのステージは待ち状態(入
力待ち)になる。出力ラッチから次のステージの入力ラ
ッチへの転送を行うときは次のステージの入力ラッチが
空き状態になっている必要があり、次のステージの入力
ラッチが空きでない場合もパイプラインステージは待ち
状態(出力待ち)になる。必要なメモリアクセス権が獲
得できなかったり、処理しているメモリアクセスにウエ
イトが挿入されたり、その他のパイプラインコンフリク
トが生じると、各ステージの処理自体が遅延する。
(4)分岐命令の処理 本発明のデータ処理装置では上記に説明したように多
段のパイプライン処理を採用しているため分岐命令を実
行した際のオーバーヘッドが大きい。このオーバーヘッ
ドを小さくするため動的分岐予測処理は実行ステージで
分岐を行う代わりにデコードステージで分岐を行うこと
によりなるべく早く分岐先命令を取り込むことを狙いと
している。
本発明のデータ処理装置に限らず、データ処理装置で
は、一般に分岐命令が実行される頻度は大きく、動的分
岐予測処理による性能改善効果は大きい。
(4.1)分岐命令の種類 本発明のデータ処理装置では動的分岐予測処理を行う
命令プリブランチ命令と呼ぶ。プリブランチ命令には無
条件分岐命令のように、動的な予測にかかわらず、必ず
分岐する命令も含む。
本発明のデータ処理装置がもつ分岐命令は分岐条件が
スタティックがダイナミックか及び分岐先がスタティッ
クかダイナミックかにより計4種類に分類できるが、本
発明のデータ処理装置ではこのうちつぎの2種類に分類
される命令をプリブランチ命令とする。
第1の種類の分岐命令は分岐条件、分岐先ともスタテ
ィックな命令である。この種の命令には無条件分岐命令
(BRA)とサブルーチン呼び出し命令(BSR)がある。第
2の種類の分岐命令は分岐条件がダイナミックで分岐先
がスタティックな命令である。この種の命令には条件分
岐命令(Bcc),ループ制御命令(ACB)がある。
(4.2)分岐命令処理回路の機能構成 第1図に本発明のデータ処理装置の分岐命令処理回路
の構成を示す。第1図には命令フェッチ部(51)、命令
デコード部(52)、PC計算部(53)、オペランドアドレ
ス計算部(54)、データ演算部(56)、外部バスインタ
ーフェイス部(57)のそれぞれに含まれる回路の部分詳
細図と、アドレス出力回路(58)、データ入出力回路
(59)よりなる。
命令デコーダ(111)とPC加算器(132)の入力側、ア
ドレス加算器(124)の入力側は、ディスプレースメン
ト値、分岐命令の変位値を転送するDISPバス(100)で
結ばれている。命令デコーダ(111)とアドレス加算器
(124)の入力側はステップコード生成に使用した命令
コード長、スタックプッシュモードのときのプリデクリ
メント値などを転送する補正値バス(101)でも結ばれ
ている。命令デコーダ(111)とPC加算器(132)の入力
側はステップコード生成に使用した命令コード長を転送
する命令長バス(101)でも結ばれている。レジスタフ
ァイル(144)とアドレス加算器(124)入力側はレジス
タファイル(144)に蓄えられているアドレス値を転送
するAバス(103)で結ばれている。
命令デコーダ(111)には命令キュー(112)から命令
コードが入力され、分岐予測テーブル(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)からの入力経路も
ある。
補正値バス(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)と、つながる。
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)への出力経路を持つ。
(4.3)分岐予測方法 本発明のデータ処理装置では無条件分岐命令BRA,サブ
ルーチン分岐命令BSR,ループ制御命令ACB、3つの命令
については、分岐予測テーブルの出力である分岐予測ビ
ットにかかわらず、必ず分岐すると予測する。BRA,BSR
に対してはこの予測は必ず正しい。
ACBはループ制御変数に指定された値を加えてその結
果がループ終了条件を満たすかどうかを判定し、ループ
終了条件を満たさなければ分岐し、満たせば分岐しない
命令である。従って、大多数のソフトウエアではACBに
ついてもこの予測方法はかなりの確率で正しい。また、
ACBに対する本発明のデータ処理装置の特徴的な処理を
意識してソフトウエアを作成すれば意識しない場合より
効率的なプログラムを作成することが可能である。
条件分岐命令Bccについては分岐するかしないかを過
去の履歴に従って判断する。履歴はBcc命令の1つ前に
実行した命令のアドレスの下位8ビットのアドレスをも
とに行う。分岐予測は過去1回の分岐履歴のみに従い、
1ビットで示される。
(4.4)分岐予測テーブルの構成 第4図に分岐予測テーブル(113)の詳細を示す。PO
バス(105)からの入力7ビットとOPC(139)からの入
力7ビットはセレクタ(151)を通して、デコーダ(15
2)に入力される。デコーダ(152)では7ビットを128
ビットにデコードして128ビットの分岐履歴ラッチ(15
3)のうち1つを分岐予測値として分岐予測出力ラッチ
(154)に出力する。128ビットの分岐履歴ラッチ(15
3)はクリア信号(157)が入力されると一斉に値をゼロ
にして「分岐しない」を示す。分岐予測出力ラッチ(15
4)は予測反転回路(155)によりその内容を反転して分
岐予測更新ラッチ(156)に結合されている。
本発明のデータ処理装置では、Dステージ(32)でデ
コードしようとする命令の1つ前にDステージ(32)で
デコードされた命令のアドレスの下位8ビットをもとに
分岐予測テーブル(113)を引いて分岐予測を行う。分
岐予測は過去1回の履歴のみに従ったダイレクトマッピ
ング方式で登録されている。本発明のデータ処理装置で
は命令アドレスの最下位ビット(右端のビット)は必ず
ゼロであるため分岐予測テーブルは128ビットで構成さ
れている。
分岐予測ビットを有効に使用するのはBcc命令をデコ
ードするときのみであるが、分岐予測ビットは、使用す
るかどうかにかかわらず、すべての命令の命令コードと
共に命令デコーダに入力する。このため分岐予測テーブ
ル(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)に書き戻す。
分岐予測は対象となる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)から
の命令コード待ち状態となる。分岐履歴の書換えは、こ
の命令コード待ち状態の間に行われる。
(4.5)PC計算部の動作 PC計算部はDステージ(32)で命令コードがデコード
されるとき、1つ前にデコードされた命令コードの長さ
情報とその1つ前にデコードされた命令コード先頭番地
とからデコード中の命令コードの先頭番地を計算する。
PC計算部ではDPC(135)に命令の切れ目のアドレスであ
る命令のPC値を保持し、TPC(134)にステップコードの
切れ目のアドレスを管理する。DPC(135)は命令の切れ
目のアドレスが計算されたときだけ書き換えられる。TP
C(134)はステップコードの切れ目のアドレス、つまり
命令デコード処理ごとに書き換えられる。パイプライン
上で処理されるステップコードのPC値はそのステップコ
ードのもとになった命令のPCが必要であるため、DPC(1
35)の値がAPC(136)、FPC(137)、CPC(138)と転送
されていく。
命令のデコードは(3.1.2)の節で述べたようにステ
ップコード単位に行われ、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加算器(132)の出力
である命令BのPC値はPOバス(105)からTPC(134)とD
PC(135)の両方に書き込まれる。さらにこのときAス
テージ(33)が入力コード待ちで、APC(136)が至急必
要とされているなら、POバス(105)からAPC(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)にも書き
込む。
このように、PC計算部(53)内のPC加算部(132)、P
C加算器出力ラッチ(133)、TPC(134)、DPC(135)及
びその周辺回路は、プリブランチする場合の処理(分岐
先アドレスの命令を指示)あるいはプリブランチしない
場合の処理(非分岐先アドレスの命令を指示)を行い第
1の分岐処理機構として機能する。
プリブランチによる分岐先命令アドレス計算の際、奇
数アドレスジャンプトラップの検出も行ない、Dコード
(41)中にその結果をパラメータ(第3の制御コード)
として示す。Eステージ(35)ではプリブランチが正し
いと判明した時に、奇数アドレスジャンプトラップを起
動する。プリブランチが間違っていて、再びEステージ
(35)で分岐が生じたときはプリブランチで検出した奇
数アドレスジャンプトラップは無視される。このため、
Dステージ(32)で検出された奇数アドレスジャンプト
ラップはその他のEITとは別扱いとなっている。また、
Eステージ(35)では奇数アドレスジャンプトラップの
起動処理に奇数となった命令アドレスの値を必要とす
る。このため、Dステージ(32)は奇数アドレスジャン
プトラップの検出を行ったとき、その奇数アドレス値を
PC値とした特殊なステップコード(OAJTステップコー
ド)を発生する。OAJTステップコードに対してAステー
ジ(33)、Fステージ(34)はそのコードを次のステー
ジに伝える。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),ACC(142)にはCAバス(104)
よりTPC(134)に値を取り込む際に同じ値がセットされ
る。
(4.7)プリブランチ命令に対するオペランドアドレス
計算部の動作 プリブランチ命令に対して、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ステージ(32)で1ステップコードにデコードさ
れる命令に対しては、Aバス(104)より転送されてく
るAPC(136)の値に補正値バス(102)から転送されて
くるBcc命令の命令長を加算して、加算結果をAOバス(1
06)よりFA(127)にに書き込む。ステップコードが2
つ以上に分かれるフォーマットをもつACB命令に対して
はDISPバス(100)より転送されてくる最後のステップ
コードの先頭アドレスであるTPC(134)の値と補正値バ
ス(102)から転送されてくる最後のステップコードの
デコードで使用した命令コードの長さを加算して、加算
結果をAOバス(106)よりFA(127)に書き込む。
BSR命令についてはプリブランチは必ず正しいわけで
あるが、リターンアドレスとしてBSR命令の次の命令の
アドレスが必要なためオペランドアドレス計算部(54)
でアドレス計算を行う。BSR命令のフォーマットは第33
図に示す。第33図で#dsはBSRの分岐変位を32ビットの
2進数で指定するフィールドである。BSRはDステージ
(32)で1ステップコードにデコードされる命令であ
り、Bccと同様にAバス(103)より転送されてくるAPC
(136)の値と補正値バス(102)より転送されてくるBS
Rの命令長との加算を行う。また、BSR命令に対するリタ
ーンアドレス計算の手法はTRAP(無条件トラップ)命令
とTRAP/cccc(条件トラップ)命令でも使用される。
TRAPA命令、TRAP/cccc命令もDステージ(32)で1ス
テップコードにデコードされる命令あり、BSRと同様に
アドレッシングモード指定フィールドを持たず、オペラ
ンドアドレス計算部(54)はこれらの命令のオペランド
アドレスの計算は行わない。TRAPA命令とTRAP/cccc命令
のフォーマットは第34図に示す。第34図で(301)はTRA
PA命令のフォーマット、(302)はTRAP/cccc命令のフォ
ーマットである。第34図で#d4はTRAPA命令のベクトル
値指定フィールドであり、cccc(303)はトラップ条件
指定フィールドである。TRAPA、TRAP/ccccではオペラン
ドアドレスの計算を行わないかわりに、これらの命令の
PC値であるAPC(136)と補正値バス(102)より転送さ
れてくるこれらの命令の命令長との加算を行う。
(4.8)各分岐命令の処理方法の詳細 本発明のデータ処理装置がプリブランチを行う命令に
ついてここでまとめる。
(4.8.1)BRA命令 BRA命令は無条件分岐命令であり、実行されると必ず
分岐を起こす。
BRA命令は必ず分岐を起こすためDステージ(32)で
は分岐予測ビットによらず必ず分岐すると判断してプリ
ブランチ処理をする。Aステージ(33)、Fステージ
(34)ではBRA命令はそのまま転送され、EIT検出があっ
たどうかを示すフラッグとPC値だけがEステージ(35)
に転送されていく。Eステージ(35)ではBRAに対して
分岐処理はしない。
(4.8.2)BSR命令 BSR命令はサブルーチン分岐命令であり、実行される
とBSRの次のアドレスにある命令のPC値(非分岐アドレ
ス)をスタックにプッシュして、必ず分岐を起こす。命
令フォーマットは第33図に示されている。
BSR命令は必ず分岐を起こすためDステージ(32)で
は分岐予測ビットによらず必ず分岐すると判断してプリ
ブランチ処理をする。Aステージ(33)ではAPC(136)
とBSRの命令長を加算してサブルーチンからのリターン
アドレス(非分岐アドレス)を計算する。計算されたリ
ターンアドレスはBSRのオペランドとしてEステージ(3
5)に渡される。Eステージ(35)ではBSR命令に対して
リターンアドレスをスタックにプッシュし、分岐処理は
しない。
(4.8.3)Bcc命令 Bcc命令は条件分岐命令で、命令フォーマットは第35
図に示す。分岐条件cccc(304)は4ビットのフィール
ドである。分岐条件は第35図の分岐条件cccc(304)の
最下位ビットが「0」か「1」かにより、分岐条件を正
反対にするようになっている。#dsは分岐変位を32ビッ
トの2進数で指定するフィールドである。
Bcc命令は分岐確立は過去の実行履歴にかなり依存す
るため、Dステージ(32)では分岐予測テーブル(11
3)から出力される分岐予測ビットの値に従い、分岐す
るかどうかを判断する。Bcc命令の分岐確立の実行履歴
依存性についても上記のJ.K.F.Lee,A.J.Smith,「Branch
Prediction Strategies and Branch Target Buffer De
sign」,IEEE Computer,Vol.17,No.1,January,1984.で詳
しく述べられている。
分岐予測ビットが「分岐する」を示している場合には
Dステージ(32)でプリブランチ処理を行う。プリブラ
ンチが行われた場合には、分岐条件生成回路(114)で
第35図の分岐条件cccc(304)の最下位ビットが反転さ
れて(分岐条件の真偽が反転されて)第2の制御コード
の一部としてEステージ(35)に渡される。Eステージ
(35)で、アドレス計算部(54)、データ演算部(56)
及び外部バスインターフェイス部(57)それぞれの一部
で構成される第2の分岐処理機構は、Dステージ(32)
でプリブランチ処理が行われたかどうかにかかわらず、
渡された分岐条件に従いBcc命令を実行すればよい。も
しEステージ(35)でBcc命令が分岐を起こした(第2
の分岐処理を行った)場合には、Dステージ(32)での
分岐予測が誤っており、第1の分岐処理機構の処理が誤
っていたわけであるから、分岐予測テーブル(113)を
アクセスし、OPC(139)で示される場所の分岐予測履歴
の反転を行う。分岐履歴の更新はEステージ(35)でBc
c命令が分岐を起こしたときだけしか行われないため、
Dステージ(32)の分岐予測テーブル(113)の参照動
作がEステージ(35)の更新に妨げられることはない。
Eステージ(35)で分岐が起きた直後はDステージ(3
2)はIFステージ(31)からの命令コード待ち状態とな
る。分岐履歴の書換えは、この命令コード待ち状態の間
に行われる。
Bcc命令がプリブランチ時に奇数アドレスジャンプト
ラップを検出しており、Eステージ(35)で分岐を起こ
さなかった(第2の分非分岐処理を行った)とき、すな
わちDステージ(32)での第1の分岐予処理構の処理が
正しかったときは、奇数アドレスジャンプトラップを起
動する。Bcc命令がプリブランチ時に奇数アドレスジャ
ンプトラップを検出していてもEステージ(35)で再び
分岐を起こしたときはプリブランチ時の奇数アドレスジ
ャンプトラップ検出は無視される。この機能により分岐
処理を行わないBcc命令の実行により、奇数アドレスジ
ャンプトラップが検出されることはなくなる。
(4.8.4)ACB命令 ACB命令はループのプリミティブとして使用される命
令である。ACBはループ制御変数を増加して、比較し、
条件ジャンプを行う命令である。ACBのフォーマットは
第36図に示す。第36図でEaRは一般形のアドレッシング
モードでループ制御変数に加算する値を指定するフィー
ルド、EaRXは一般形アドレシングモードでループ制御変
数の比較対象値を指定するフィールド、RgMXはループ制
御変数の存在する汎用レジスタ番号を指定するフィール
ド、#ds8は分岐変位を8ビットの2進数で指定するフ
ィールドである。ACBはDステージ(32)で3ステップ
コード以上に分解されてパイプライン上を流れる命令で
ある。
ACB命令は分岐する確率が高いため本発明のデータ処
理装置ではこの命令に対して分岐予測ビットにかかわら
ず、分岐すると判断してプリブランチ処理を行う。
この命令はステップコードが3つ以上(多段間接アド
レッシングモードが含まない場合に3つ)になるため、
プリブランチ処理を最後のステップコードをDステージ
(32)が出力するときに行う。Dステージ(32)ではAC
BのPC値であるDPC(135)の内容と命令デコーダ(111)
からDISPバス(100)を通して出力される分岐変位を加
算することにより、プリブランチ処理を行う。Aステー
ジ(33)ではプリブランチが間違っていたときにそな
え、ACB命令の次のアドレス命令のPC値(非分岐アドレ
ス)を計算するとき、TPC(134)からDISPバス(100)
を通して転送された最後のステップコードのデコードに
使用した命令コードの先頭番地と、補正値バス(102)
を通して転送された最後のステップコードのデコードに
使用した命令コードの長さを加算する。
この命令に対してはDステージ(32)で必ずプリブラ
ンチが行われているので、Eステージ(35)では、分岐
条件の判断を常に逆に行う。プリブランチ処理が誤って
いた場合、Eステージ(35)で分岐が起こる。しかし、
この命令は分岐予測テーブル(113)に従ってプリブラ
ンチをするものではないので、プリブランチが間違って
いた場合でも分岐履歴の書換えは行わない。
またこの命令に対してDステージ(32)でのプリブラ
ンチ時に奇数アドレスジャンプ例外が検出されたときそ
の検出はBcc命令と同様にパラメータでEステージ(3
5)に伝えられる。Eステージ(35)に伝えられた奇数
アドレスジャンプトラップはやはりBcc命令と同様に、
Eステージ(35)で分岐が行われたときには起動され
ず、分岐が行われなかったときに起動される。この機能
により分岐処理を行わないACB命令の実行により、奇数
アドレスジャンプトラップが検出されることはなくな
る。
(5)本発明の他の実施例 上記の実施例では、命令デコーダ(111)からPC計算
部(53)やオペランドアドレス計算部(54)に、命令デ
コードに使用した命令コードの長さを転送するために、
補正値バス(102)と命令長バス(101)の2つのバスを
用いているが、例えば補正値バス(102)からPC計算部
(53)への入力経路を設けて、命令長バス(101)を廃
止してもよい。
また、上記の実施例ではACB命令のプリブランチ処理
でTPC(134)の値をDISPバス(102)を通して、オペラ
ンドアドレス計算部(54)に転送する例を述べたが、こ
のTPC(134)の値の転送はAバス(103)で行ってもよ
い。
〔発明の効果〕
本発明のデータ処理装置では上記のように1ステップ
コードで処理される必ずプリブランチが正しいBRA命
令、BSR命令に対しても、プリブランチが間違っている
場合には分岐処理のやり直しが必要で、EIT処理が複雑
になるBcc命令や複数ステップコードになるACB命令に対
してもDステージ(32)で分岐処理を行うので、多くの
分岐命令に対してパイプライン処理の乱れを少なくでき
る。
第7図にプリブランチを行う本発明のデータ処理装置
でプリブランチ命令が実行された場合に、パイプライン
中を流れる命令の様子を示す。第7図では命令3及び命
令12は分岐命令であり、本発明のデータ処理装置のプリ
ブランチ処理の対象になる命令である。
命令3がDステージ(32)でデコードされ、プリブラ
ンチすると判断されると、Dステージ(32)では次にPC
計算部(53)で分岐先命令のPC値を計算する。次に分岐
先命令がIFステージ(31)によりフェッチされ、パイプ
ライン処理対象が早期に命令11に切り替わる。命令4は
処理をキャンセルされる。Dステージ(32)、IFステー
ジ(31)がプリブランチ処理を行っている間もパイプラ
イン上を先行する命令1や命令2は処理を続行する。結
果、命令3がEステージ(35)で処理されてから2命令
処理分の時間後に命令11がEステージ(35)で処理され
る。これは、第6図に示すように、プリブランチ処理を
行わない従来のデータ処理装置で無駄時間が4命令処理
分であったのに比べ、本発明のデータ処理装置が無駄時
間を半減していることを意味する。
このようにプリブランチはデータ処理装置の高速化に
非常に有効な技術であり、なるべく多くの分岐命令に対
してプリブランチを行うことが重要である。本発明で
は、PC計算部(54)とオペランドアドレス計算部(54)
にわずかなハードウエアの追加だけで、1ステップコー
ドで処理されるBRA命令、BSR命令、Bcc命令に対しても
複数ステップコードになるACB命令に対してもプリブラ
ンチ処理を行うことを可能にし、処理速度が大幅に高速
化されたデータ処理装置を得ている。
また、Bcc命令やACB命令に対するプリブランチにより
検出された奇数アドレスジャンプトラップの起動はその
プリブランチが正しい分岐であるときしか行われないた
め、不用な奇数アドレスジャンプトラップの起動による
データ処理装置の処理速度の低下を防ぐことができる。
不要な奇数アドレスジャンプに対して正しい処理を保証
するためのソフトウエア負荷もない。
【図面の簡単な説明】
第1図は本発明のデータ処理装置の分岐命令処理回路の
図、第2図は本発明のデータ処理装置の全体ブロック
図、第3図は本発明のデータ処理装置のパイプラインス
テージ概要図、第4図は本発明のデータ処理装置の分岐
予測テーブル詳細図、第5図は従来のデータ処理装置の
パイプラインステージ概要図、第6図は従来のデータ処
理装置での分岐命令処理の様子を示す図、第7図は本発
明のデータ処理装置での分岐命令処理の様子を示す図、
第8図は本発明のデータ処理装置のメモリ上での命令の
並び方を示す図、第9図から第17図は本発明のデータ処
理装置の命令フォーマットの図、第18図から第31図は本
発明のデータ処理装置のアドレッシングモードの説明
図、第32図は本発明のデータ処理装置の命令フォーマッ
トの特徴を示す図、第33図はBSR命令のフォーマット
図、第34図はTRAPA、TRAP/cccc命令のフォーマット図、
第35図はBcc命令のフォーマット図、第36図はACB命令の
フォーマット図である。 (32)はDステージ、(35)はEステージ、(41)(4
3)(45)は伝播機能、(113)は分岐予測テーブルを示
す。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】条件分岐命令を含んだ複数の命令を順次処
    理するデータ処理装置であって、上記条件分岐命令は、
    条件成立時に分岐先アドレスにある命令の実行を要求
    し、条件不成立時に上記条件分岐命令の次に記述された
    非分岐先アドレスにある命令の実行を要求する命令であ
    り、 条件分岐命令の分岐の有無を予測した分岐予測結果を出
    力する分岐予測機構と、命令のデコードを行う命令デコ
    ーダとを有し、条件分岐命令の命令コード及び上記分岐
    予測結果に基づき、第1及び第2の制御コードを出力す
    る命令デコード部と、 上記命令デコード部に接続され、上記第1の制御コード
    を入力する先行分岐処理部とを備え、上記先行分岐処理
    部は、上記第1の制御コードに従い上記分岐先アドレス
    の命令の実行を指示する第1の分岐処理または上記非分
    岐先アドレスの命令の実行を指示する第1の非分岐処理
    を行う第1の分岐処理機構と、上記第1の分岐処理に伴
    う例外の有無を検出してその結果を示す第3の制御コー
    ドを出力する例外検出機構とを有し、 上記命令デコード部と上記先行分岐処理部に接続され、
    上記第2の制御コード及び上記第3の制御コードを入力
    する命令実行部をさらに備え、上記命令実行部は上記第
    2の制御コードに従い条件分岐命令の分岐条件の真偽判
    断に依存して、上記第1の分岐処理機構の処理の正誤を
    判定し、上記第1の分岐処理機構の処理を誤りと判定す
    る第2の分岐処理または上記第1の分岐処理機構の処理
    を正しいと判定する第2の非分岐処理を行う第2の分岐
    処理機構と、上記第3の制御コードに従い、上記例外に
    対する例外処理を起動または非起動する例外実行機構と
    を有し、 上記先行分岐処理部及び上記命令実行部は、上記先行分
    岐処理部,上記命令実行部の順に上記複数の命令に対す
    るパインプライン処理を実行し、上記先行分岐処理部の
    行う処理が第1のパインプラインステージとして規定さ
    れ、上記命令実行部の行う処理が第2のパイプラインス
    テージとして規定され、 上記先行分岐処理部及び上記命令実行部は上記条件分岐
    命令に対する処理に際し、 上記第1のパイプラインステージで上記第1の分岐処理
    が実行され、かつ上記例外が検出され、上記第2のパイ
    プラインステージで上記第2の分岐処理が実行される場
    合には、上記命令実行部は上記例外処理を行わず、 上記第1のパイプラインステージで上記第1の分岐処理
    が実行され、かつ上記例外が検出され、上記第2のパイ
    プラインステージで上記第2の非分岐処理が実行される
    場合には、上記命令実行部は上記例外処理を行う、 ことを特徴とするデータ処理装置。
  2. 【請求項2】条件分岐命令を含んだ複数の命令を順次処
    理するデータ処理装置であって、上記条件分岐命令は、
    条件成立時に分岐先アドレスにある命令の実行を要求
    し、条件不成立時に上記条件分岐命令の次に記述された
    非分岐先アドレスにある命令の実行を要求する命令であ
    り、 命令のデコードを行う命令デコーダを有し、条件分岐命
    令の命令コードをデコードして第1及び第2の制御コー
    ドを出力する命令デコード部と、 上記命令デコード部に接続され、上記第1の制御コード
    を入力する先行分岐処理部とを備え、上記先行分岐処理
    部は、上記第1の制御コードに従い上記分岐先アドレス
    の命令の実行を指示する第1の分岐処理を行う第1の分
    岐処理機構と、上記第1の分岐処理に伴う例外の有無を
    検出してその結果を示す第3の制御コードを出力する例
    外検出機構とを有し、 上記命令デコード部と上記先行分岐処理部に接続され、
    上記第2の制御コード及び上記第3の制御コードを入力
    する命令実行部をさらに備え、上記命令実行部は、上記
    第2の制御コードに従い条件分岐命令の分岐条件の真偽
    を反転した判断に依存して、上記第1の分岐処理機構の
    処理の正誤を判定し、上記第1の分岐処理処理を誤りと
    判定する第2の分岐処理または上記第1の分岐処理を正
    しいと判定する第2の非分岐処理を行う第2の分岐処理
    機構と、上記第3の制御コードに従い、上記例外に対す
    る例外処理を起動または非起動する例外実行機構とを有
    し、 上記先行分岐処理部及び上記命令実行部は、上記先行分
    岐処理部,上記命令実行部の順に上記複数の命令に対す
    るパイプライン処理を実行し、上記先行分岐処理部の行
    う処理が第1のパインプラインステージとして規定さ
    れ、上記命令実行部の行う処理が第2のパイプラインス
    テージとして規定され、 上記先行分岐処理部及び上記命令実行部は上記条件分岐
    命令に対する処理に際し、 上記第1のパイプラインステージで上記第1の分岐処理
    が実行され、かつ上記例外が検出され、上記第2のパイ
    プラインステージで上記第2の分岐処理が実行される場
    合には、上記命令実行部は上記例外処理を行わず、 上記第1のパイプラインステージで上記第1の分岐処理
    が実行され、かつ上記例外が検出され、上記第2のパイ
    プラインステージで上記第2の非分岐処理が実行される
    場合には、上記命令実行部は上記例外処理を行う、 ことを特徴とするデータ処理装置。
  3. 【請求項3】条件分岐命令を含んだ複数の命令を順次処
    理し、メモリの奇数アドレスに対する分岐を例外とする
    データ処理装置であって、上記条件分岐命令は、条件成
    立時に分岐先アドレスにある命令の実行を要求し、条件
    不成立時に上記条件分岐命令の次に記述された非分岐先
    アドレスにある命令の実行を要求する命令であり、 命令のデコードを行う命令デコーダを有し、条件分岐命
    令の命令コードをデコードして第1及び第2の制御コー
    ドを出力する命令デコード部と、 上記命令デコード部に接続され、上記第1の制御コード
    を入力する先行分岐処理部とを備え、上記先行分岐処理
    部は、上記第1の制御コードに従い上記分岐先アドレス
    の命令の実行を指示する第1の分岐処理または上記非分
    岐先アドレスの命令の実行を指示する第1の非分岐処理
    を行う第1の分岐処理機構と、上記第1の分岐処理の上
    記分岐先アドレスが奇数アドレスのとき例外を検出し
    て、上記例外の検出の有無を示す第3の制御コードと上
    記奇数アドレス値を出力する例外検出機構とを有し、 上記命令デコード部と上記先行分岐処理部に接続され、
    上記第2の制御コード、上記第3の制御コード及び上記
    奇数アドレス値を入力する命令実行部をさらに備え、上
    記命令実行部は、上記第2の制御コードに従い条件分岐
    命令の分岐条件の真偽を反転した判断に依存して、上記
    第1の分岐処理機構の処理の正誤を判定し、上記第1の
    分岐処理機構の処理を誤りと判定する第2の分岐処理ま
    たは上記第1の分岐処理機構の処理を正しいと判定する
    第2の非分岐処理を行う第2の分岐処理機構と、上記第
    3の制御コードに従い、上記例外に対する例外処理を起
    動または非起動する例外実行機構とを有し、 上記先行分岐処理部及び上記命令実行部は、上記先行分
    岐処理部,上記命令実行部の順に上記複数の命令に対す
    るパイプライン処理を実行し、上記先行分岐処理部の行
    う処理が第1のパインプラインステージとして規定さ
    れ、上記命令実行部の行う処理が第2のパイプラインス
    テージとして規定され、 上記先行分岐処理部及び上記命令実行部は上記条件分岐
    命令に対する処理に際し、 上記第1のパイプラインステージで上記第1の分岐処理
    が実行され、かつ上記例外が検出され、上記第2のパイ
    プラインステージで上記第2の分岐処理が実行される場
    合には、上記命令実行部は上記例外処理を行わず、 上記第1のパイプラインステージで上記第1の分岐処理
    が実行され、かつ上記例外が検出され、上記第2のパイ
    プラインステージで上記第2の非分岐処理が実行される
    場合には、上記命令実行部は上記奇数アドレス値を使用
    して上記例外処理を行う、 ことを特徴とするデータ処理装置。
JP63040026A 1988-02-23 1988-02-23 データ処理装置 Expired - Fee Related JPH081602B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP63040026A JPH081602B2 (ja) 1988-02-23 1988-02-23 データ処理装置
US07/312,554 US5193156A (en) 1988-02-23 1989-02-17 Data processor with pipeline which disables exception processing for non-taken branches
US08/291,963 US5522053A (en) 1988-02-23 1994-08-17 Branch target and next instruction address calculation in a pipeline processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63040026A JPH081602B2 (ja) 1988-02-23 1988-02-23 データ処理装置

Publications (2)

Publication Number Publication Date
JPH01214932A JPH01214932A (ja) 1989-08-29
JPH081602B2 true JPH081602B2 (ja) 1996-01-10

Family

ID=12569391

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63040026A Expired - Fee Related JPH081602B2 (ja) 1988-02-23 1988-02-23 データ処理装置

Country Status (2)

Country Link
US (1) US5193156A (ja)
JP (1) JPH081602B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615349A (en) * 1990-09-04 1997-03-25 Mitsubishi Denki Kabushiki Kaisha Data processing system capable of execution of plural instructions in parallel
CA2045790A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch prediction in high-performance processor
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
JPH04321130A (ja) * 1991-04-22 1992-11-11 Toshiba Corp 分岐予測装置
US5742839A (en) * 1992-01-30 1998-04-21 Fujitsu Limited Coprocessor for performing an arithmetic operation by automatically reading data from an external memory
JP2922723B2 (ja) * 1992-06-29 1999-07-26 キヤノン株式会社 情報処理装置
DE4345028A1 (de) * 1993-05-06 1994-11-10 Hewlett Packard Co Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
JP2513417B2 (ja) * 1993-07-05 1996-07-03 日本電気株式会社 情報処理装置
GB2284493B (en) * 1993-12-01 1998-04-01 Intel Corp Exception handling in a processor that performs speculative out-of-order instruction execution
US5542109A (en) * 1994-08-31 1996-07-30 Exponential Technology, Inc. Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5938762A (en) * 1995-10-06 1999-08-17 Denso Corporation Method and apparatus for performing exception processing routine in pipeline processing
US6055630A (en) * 1998-04-20 2000-04-25 Intel Corporation System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units
JP2000020309A (ja) * 1998-06-30 2000-01-21 Toshiba Microelectronics Corp デジタルシグナルプロセッサ
US7198487B2 (en) * 2002-12-31 2007-04-03 Water Pik, Inc. Whitening tip for dental flossing device
US7013383B2 (en) * 2003-06-24 2006-03-14 Via-Cyrix, Inc. Apparatus and method for managing a processor pipeline in response to exceptions
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
US7882338B2 (en) * 2008-02-20 2011-02-01 International Business Machines Corporation Method, system and computer program product for an implicit predicted return from a predicted subroutine

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4435756A (en) * 1981-12-03 1984-03-06 Burroughs Corporation Branch predicting computer
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
JPS60179846A (ja) * 1984-02-27 1985-09-13 Fujitsu Ltd 変換例外割込み制御方式

Also Published As

Publication number Publication date
US5193156A (en) 1993-03-09
JPH01214932A (ja) 1989-08-29

Similar Documents

Publication Publication Date Title
JP2507638B2 (ja) デ―タ処理装置
JPH081602B2 (ja) データ処理装置
US5091853A (en) Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction
US5522053A (en) Branch target and next instruction address calculation in a pipeline processor
JPH05224928A (ja) データ処理装置
JP3543181B2 (ja) データ処理装置
JPH081599B2 (ja) データ処理装置
JPH07114469A (ja) データ処理装置
JP2581236B2 (ja) データ処理装置
JPH0810428B2 (ja) データ処理装置
JPH1049370A (ja) 遅延命令を有するマイクロプロセッサ
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
JPH07120284B2 (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
JP2710994B2 (ja) データ処理装置
JPH0769806B2 (ja) データ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JPH0769808B2 (ja) データ処理装置
JPH081600B2 (ja) データ処理装置
JPH0769801B2 (ja) データ処理装置
JPH0769805B2 (ja) データ処理装置
JPH0769804B2 (ja) データ処理装置
JPH0769807B2 (ja) データ処理装置
JP2928879B2 (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