[go: up one dir, main page]

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

データ処理装置

Info

Publication number
JPH0769808B2
JPH0769808B2 JP63040024A JP4002488A JPH0769808B2 JP H0769808 B2 JPH0769808 B2 JP H0769808B2 JP 63040024 A JP63040024 A JP 63040024A JP 4002488 A JP4002488 A JP 4002488A JP H0769808 B2 JPH0769808 B2 JP H0769808B2
Authority
JP
Japan
Prior art keywords
instruction
branch
stage
address
operand
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
JP63040024A
Other languages
English (en)
Other versions
JPH01214931A (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 JP63040024A priority Critical patent/JPH0769808B2/ja
Publication of JPH01214931A publication Critical patent/JPH01214931A/ja
Priority to US08/291,963 priority patent/US5522053A/en
Publication of JPH0769808B2 publication Critical patent/JPH0769808B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (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ステージ(15)
で実行されてから命令11がEステージ(15)で実行され
るまでには4命令処理分の時間が無駄になる。命令12に
ついても同様に4命令処理分の時間が無駄になる。この
無駄時間は分岐命令の実行後に処理すべき命令のフェッ
チが分岐命令に対する全パイプライン処理が終了した後
に行われるためであり、パイプライン処理の段数が多い
ほどこの無駄時間も長くなる。
パイプライン処理を行うデータ処理装置では分岐命令の
処理が処理能力向上の1つの大きなキーポイントである
ことは従来より指摘されおり、様々な工夫がすでに行わ
れている。分岐命令の処理に対する工夫は例えば、J.K.
F.Lee,A.J.Smith,「Branch Prediction Strategies and
Branch Target Buffer Design」,IEEE Computer,Vo1.1
7,NO.1.January,1984.で紹介されている。しかし、いず
れの工夫も実現に多大のハードウエアを必要としたり、
一部の分岐命令のみにしか効果がないなど、まだまだ欠
点を多く残すものであった。
〔課題を解決するための手段〕
本発明のデータ処理装置では上記の欠点を解決するた
め、条件分岐命令は履歴に依存して、その他の命令は命
令コードに依存して分岐を予測することが可能な命令デ
コード機構と、分岐先アドレスを計算することが可能な
プログラムカウンタ値計算機構と、分岐命令の命令長と
分岐命令のプログラムカウンタ値を加算することが可能
なオペランドアドレス計算機構とをもつ。
〔作用〕
本発明のデータ処理装置では上記の、条件分岐命令は履
歴に依存して、その他の命令は命令コードに依存して分
岐を予測することが可能な命令デコード機構と、分岐先
アドレスを計算することが可能なプログラムカウンタ値
計算機構と、分岐命令の命令長と分岐命令のプログラム
カウンタ値を加算することが可能なオペランドアドレス
計算機構とにより、無条件分岐命令、条件分岐命令、サ
ブルーチン分岐命令、ループ制御命令に対して命令デコ
ード段階で分岐処理を行い、パイプライン処理の乱れを
少なくする。
〔発明の実施例〕
(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の拡張部、Ea
1の多段間接モード拡張部、命令の第二ハーフワード(E
a2の基本部を含む)、Ea2の拡張部、命令の第三ハーフ
ワード、の順となる。
(1.1.)短縮形2オペランド命令 第9図から第12図に示す。2オペランド命令の短縮形フ
ォーマットである。
第9図はメモリーレジスタ間演算命令のフォーマットで
ある。このフォーマットにはソースオペランド側がメモ
リとなるL-formatとデスティネーションオペランド側が
メモリとなるS-formatがある。
L-formatでは、Shはソースオペランドの指定フィール
ド、Rhはデスティネーションオペランドのレジスタの指
定フィールド、RRはShのオペランドサイズの指定をあら
わす。レジスタ上に置かれたデスティネーションオペラ
ンドのサイズは、32ビットに固定されている。レジスタ
側とメモリ側のサイズが異なり、ソース側のサイズが小
さい場合に符号拡張が行なわれる。
S-formatではShはデスティネーションオペランドの指定
フィールド、Rhはソースオペランドのレジスタ指定フィ
ールド、RRはShのオペランドサイズの指定をあらわす。
レジスタ上に置かれたソースオペランドのサイズは、32
ビットに固定されている。レジスタ側とメモリ側のサイ
ズが異なり、ソース側のサイズが大場合にあふれた部分
の切捨てとオーバーフローチャックが行なわれる。
第10図はレジスタ−レジスタ間演算命令のフォーマット
(R-format)である。Rnはデスティネーションレジスタ
の指定フィールドRmはソースレジスタの指定フィールド
である。オペランドサイズは32ビットのみである。
第11図はリテラル−メモリ間演算命令のフォーマット
(Q-format)である。MMはデスティネーションオペラン
ドサイズの指定フィールド、#はリテラルによるソース
オペランドの指定フィルド、Shはデスティネーションオ
ペランドの指定フィルードである。
第12図は即値−メモリ間演算命令のフォーマット(I-fo
rmat)である。MMはオペランドサイズの指定フィールド
(ソース,デスティネーションで共通)、Shはデスティ
ネーションオペランドの指定フィールドである。I-form
atの即値のサイズは、デスティネーション側のオペラン
ドのサイズと共通に8,16,32ビットとなり、ゼロ拡張、
符号拡張は行なわれない。
(1.2)一般形1オペランド命令 第13図は1オペランド命令の一般形フォーマット(G1-f
ormat)である。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-da
taのサイズは、オペランドサイズとして命令中で指定さ
れる。
絶対モードは、アドレス値が16ビットで示されるか32ビ
ットで示されるかにより2種類ある。それぞれ、命令コ
ード中で指定される16ビットまたは32ビットのビットパ
タンをアドレスとしたメモリの内容をオペランドとす
る。フォーマットは第22図に示す。abs:16とabs:32は、
それぞれ16ビット、32ビットのアドレス値を示す。abs:
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=1:〈Rx〉をインデクスとして使用 M=2:特殊なインデクス 〈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)、命令デコード部(52)PC計
算部(53)、オペランドアドレス計算部(54)、マイク
ロROM部(55)、データ演算部(56)、外部バスインタ
ーフェイス部(57)に分かれる。第2図ではその他にCP
U外部にアドレスを出力するアドレス出力回路(58)とC
PU外部とデータの入出力を行うデータ入出力回路(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ハーフワードに含まれる
オペコードをデコードするNHFWデコーダ、アドレッシン
グモードをデコードするアドレッシングモードデコーダ
が含まれる。
さらにFHWデコーダやNHFWデコーダの出力をさらにデコ
ードして、マイクロROMのエントリアドレスを計算する
デコーダ2、条件分岐命令の分岐予測を行う分岐予測機
構、オペランドアドレス計算のときのパイプラインコン
フリクトをチェックするアドレス計算コンフリクトチェ
ック機構も含まれる。
命令フェッチ部より入力された命令コードを2クロック
につき0〜6バイトデコードする。デコード結果のう
ち、データ演算部(56)での演算に関する情報がマイク
ロROM部(55)に、オペランドアドレス計算に関係する
情報がオペランドアドレス計算部(54)に、PC計算に関
する情報がPC計算部(53)に、それぞれ出力される。
(2.3)マイクロROM部 マイクロROM部(55)には主にデータ演算部(56)を制
御するマイクロプログラムが格納されているマイクロRO
M、マイクロシーケンサ、マイクロ命令デコーダなどが
含まれる。マイクロ命令はマイクロROMから2クロック
に1度読み出される。まマイクロシーケンサはマイクロ
プログラムで示されるシーケンス処理の他に、例外、割
込、トラップ(この3つをあわせてEITと呼ぶ)の処理
をハードウエア的に受付ける。またマイクロROM部はス
トアバッファの管理も行う。マイクロROM部には命令コ
ードに依存しない割込みや演算実行結果によるフラッグ
情報と、デコーダ2の出力など命令デコード部の出力が
入力される。マイクロデコーダの出力は主にデータ演算
部(56)に対して出力されるが、ジャンプ命令の実行に
よる他の先行処理中止情報など一部の情報は他のブロッ
クへも出力される。
(2.4)オペランドアドレス計算部 オペランドアドレス計算部(54)は、命令デコード部
(52)のアドレスデコーダなどから出力されたオペラン
ドアドレス計算に関係する情報によりハードワイヤード
制御される。このブロックではオペランドのアドレス計
算に関するほとんどの処理が行われる。メモリ間接アド
レッシングのためのメモリアクセスのアドレスやオペラ
ンドアドレスがメモリにマップされたI/O領域に入るか
どうかのチェックも行われる。
アドレス計算結果は外部バスインターフェイス部(57)
に送られる。アドレス計算に必要な汎用レジスタやプロ
グラムカウンタの値はデータ演算部より入力される。
メモリ間接アドレッシングを行うときは外部バスインタ
ーフェイス部(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)で計算さ
れたアドレスや即値を外部バスインターフェイス部(5
7)を通過させて得る。また、演算対象となるオペラン
ドがCPU外部のメモリにあるデータの場合は、アドレス
計算部(54)で計算されたアドレスをバスインターフェ
イス部(57)がアドレス出力回路(58)から出力して、
CPU外部のメモリからフェッチしたオペランドをデータ
入出力回路(59)から得る。
演算器としてはALU、バレルシフタ、プライオリティエ
ンコーダやカウンタ、シフトレジスタなどがある。レジ
スタと主な演算器の間は3バスで結合されており、1つ
のレジスタ間演算を指示する1マイクロ命令を2クロッ
クサイクルで処理する。
データ演算のときCPU外部のメモリをアクセスする必要
がある時はマイクロプログラムの指示により外部バスイ
ンターフェイス部(57)を通してアドレス出力回路(5
8)からアドレスをCPU外部に出力し、データ入出力回路
(59)を通して目的のデータをフェッチする。
CPU外部のメモリにデータをストアするときは外部バス
インターフェイス部(57)を通してアドレス出力回路
(58)よりアドレスを出力すると同時に、データ入出力
回路(59)からデータをCPU外部に出力する。オペラン
ドストアを効率的に行うためデータ演算部(56)には4
バイトのストアバッファがある。
ジャンプ命令の処理や例外処理などを行って新たな命令
アドレスをデータ演算部(56)が得たときはこれを命令
フェッチ部(51)とPC計算部(53)に出力する。
(2.7)外部バスインターフェイス部(57)は本特許の
データ処理装置の外部バスでの通信を制御する。メモリ
のアクセスはすべてクロック同期で行われ、最小2クロ
ックサイクルで行うことができる。
メモリに対するアクセス要求は命令フェッチ部(51)、
アドレス計算部(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)の到達するまではRIT処理
を起動しない。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.12)ステップコードへの命令の分解 本発明のデータ処理装置では上記の命令フォーマットの
特徴を生かしたパイプライン処理を行う。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コード結
果であるDコード(41)である約50ビットの制御コード
と8ビットのリテラル情報と、を出力する。
Dステージ(32)では各命令のPC計算部(53)の制御、
分岐予測処理、プリブランチ命令に対するプリブランチ
処理、命令キューからの命令コード出力処理も行う。
Dステージ(32)で検出するEITには予約命令例外、プ
リブランチ時の奇数アドレスジャンプトラップがある。
また、IFステージ(31)より転送されてきた各種EITは
ステップコード内にエンコードする処理をしてAステー
ジ(33)に転送する。
(3.2.2)オペランドアドレス計算ステージ オペランドアドレス計算ステージ(Aステージ(33))
は処理が大きく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ステージ(3
6)はそれをEコード(45)に伝える。これはプリブラ
ンチに対するもので、Eステージ(35)ではそのEコー
ド(45)で分岐が生じなければそのプリブランチを有効
として奇数アドレスジャンプトラップを発生する。
(3.2.5)オペランドフェッチステージ オペランドフェッチステージ(OFステージ(37))はF
ステージ(34)で行う上記の2つの処理のうちオペラン
ドプリフェッチ処理を行う。
オペランドプリフェッチはFコード(44)を入力とし、
フェッチしたオペランドとそのアドレスをSコード(4
6)として出力する。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ステージ(35)
で直接受け付けられ、マイクロプログラムにより必要な
処理が実行される。その他の各種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)、データ入出力回路(5
9)よりなる。
命令デコード(111)とPC加算器(132)の入力側、アド
レス加算器(124)の入力側は、ディスプレースメント
値、分岐命令の変位値を転送するDISPバス(100)で結
ばれている。命令デコード(111)とアドレス加算器(1
24)の入力側はステップコード生成に使用した命令コー
ド長、スタックプッシュモードのときプリデクリメント
値などを転送する補正値バス(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)に入力され、DISPバ
ス(100)出力とAバス(103)出力はベースアドレス選
択回路(123)に入力され、どちらか一方がアドレス加
算器(124)に入力される。アドレス加算器(124)は、
ディスプレースメント選択回路(122)の出力、ベース
アドレス選択回路(123)の出力、それにAバス(103)
より入力された値をシフトすることにより、1倍、2
倍、4倍、8倍の値とするインデックス値生成回路(12
1)の出力、の計3つの値を入力として、3値加算を行
う。アドレス加算器(124)の出力値はアドレス加算器
出力ラッチ(125)を通して、AOバス(106)に出力され
る。AOバス(106)は、メモリ間接アドレッシングを行
うとき、AAバス(107)を通してアドレス出力回路(5
8)から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)と、命令フェッチ部(5
1)がプリフェッチする命令コードの番地を管理するカ
ウンタQINPC(115)と、命令フェッチのためのアドレス
をAAバス(107)を通してアドレス出力回路(58)からC
PU外部に出力するときその値を保持するラッチAA(14
2)と、Eステージ(35)で分岐やジャンプが起きたと
きに新たな命令番地をSバス(109)から入力するラッ
チEB(143)と、に結合している。APC(136)はAバス
(103)と、Fステージ(34)で処理中の命令のPC値を
保持するラッチEPC(137)とに出力経路がある。EPC(1
37)はEステージ(35)で処理中の命令のPC値を保持す
るラッチCPC(138)への出力経路をもつ。CPC(138)は
Sバス(109)と分岐履歴書換えのためにPC値の最下位
バイトの値を保持するラッチOPC(139)とに出力経路を
もつ。レジスタファイル(144)は汎用レジスタや作業
用レジスタなどからなり、Sバス(109)とAバス(10
3)への出力経路をもち、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)を通して、デコーダ(152)
に入力される。デコーダ(152)では7ビットを128ビッ
トにデコードして128ビットの分岐履歴ラッチ(153)の
うち1つを分岐予測値として分岐予測出力ラッチ(15
4)に出力する。128ビットの分岐履歴ラッチ(153)は
クリア信号(157)が入力されると一斉に値をゼロにし
て「分岐しない」を示す。分岐側出力ラッチ(154)は
予測反転回路(155)によりその内容を反転して分岐予
測更新ラッチ(156)に結合されている。
本発明のデータ処理装置では、Dステージ(32)でデコ
ードしようとする命令の1つ前にDステージ(32)でデ
コードされた命令のアドレスの下位8ビットをもとに分
岐予測テーブル(113)を引いて分岐予測を行う。分岐
予測は過去1回の履歴のみに従ったダイレクトマッピン
グ方式で登録されている。本発明のデータ処理装置では
命令アドレスの最下位ビット(右側のビット)は必ずゼ
ロであるため分岐予測テーブル128ビットで構成されて
いる。
分岐予測ビットを有効に使用するのはBcc命令をデコー
ドするときのみであるが、分岐予測ビットは、使用する
かどうかにかかわらず、すべての命令の命令コードと共
に命令デコーダに入力する。このため分岐予測テーブル
(113)の参照は、デコードしようとする命令の1つ前
の命令がデコードされているときPC加算器(132)から
出力されてくる1つ前の命令のPC値の下位1バイト(最
下位ビットは不要)で行う。これにより、分岐予測ビッ
トは、次のDステージ処理の最初までに命令デコーダ
(111)に入力される。
分岐予測テーブル(113)の分岐履歴はクリア信号(15
7)により初期値をすべて「分岐しない」とできる。分
岐予測の更新はBcc命令がEステージ(35)で分岐した
ときに行われる。Bcc命令がEステージ(35)で分岐を
起こしたとき、それはDステージ(32)での分岐予測が
間違っていたこを意味する。このときEステージ(35)
で分岐予測の更新(間違っていた分岐履歴の反転)が行
われる。Eステージ(35)ではOPC(139)の内容をデコ
ーダ(152)に転送し、そのデコード結果で対応する分
岐履歴ラッチ(153)の内容を分岐予測出力ラッチ(15
4)に読み出す。次に、分岐予測出力ラッチ(154)の内
容が反転された分岐予測更新ラッチ(156)の内容を、
同じくOPC(139)の値で示された分岐履歴ラッチ(15
3)に書き戻す。
分岐予測は対象をなる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
(135)の値がAPC(136)、EPC(137)、CPC(138)と
転送されていく。
命令のデコードは(3.1.2)の節で述べたようにステッ
プコード単位に行われ、1回のデコード処理で0〜6バ
イトの命令コードが消費される。命令デコード処理ごと
に判明したそのとき使用した命令コードの長さが命令デ
コーダ(111)から命令長バス(101)に出力される。
プリブランチしない場合、Dステージ(32)は引き続く
次の命令のデコード処理を行うと同時に、PC計算部(5
3)で引き続く次の命令のPC値を計算するため、TPC(13
4)の値と命令長バス(101)から転送されたデコードで
消費した命令コードの長さとの加算を行いTPC(134)に
加算結果を書き戻す。つまり、あるステップコードの先
頭アドレスはそのステップコードがデコード処理により
生成されたときに計算されるのである。プリブランチ以
外ではデコードすべき命令コードは命令キュー(112)
から次々と出力されるため、デコード開始段階でそのコ
ードの先頭アドレスを知る必要はない。Dステージ(3
2)で生成したステップコードが命令Aの最後のステッ
プコードであるとき、次の命令Bのデコード処理中に計
算されるPC加算器(132)の出力は、命令Bの先頭番地
であり、命令BのPC値であるから、PC加算器(132)の
出力である命令BのPC値はPOバス(105)からTPC(13
4)とDPC(135)の両方に書き込まれる。さらにこのと
きAステージ(33)が入力コード待ちで、APC(136)が
至急必要とされているなら、POバス(105)からAPC(13
6)にも命令BのPC値が書き込まれる。
プリブランチする場合、Dステージ(32)はプリブラン
チ命令の最後のステップコードを出力した後、命令デコ
ーダ(111)の処理を止め、分岐先命令のPC値を計算す
るため、DPC(135)の値とDISPバス(100)より転送さ
れた分岐変位の加算を行う。さらに、IFステージ(31)
に初期化指示を出し、加算結果である分岐命令のPC値を
TPC(134)とDPC(135)に書き込むと共に、CAバス(10
4)にも出力してQINPC(115),CAA(142)にも書き込
む。
プリブランチによる分岐先命令アドレス計算の際、奇数
アドレスジャンプトラップの検出も行ない、Dコード
(41)中にその結果をパラメータとして示す。Eステー
ジ(35)ではプリブランチが正しいと判明した時に、奇
数アドレスジャンプトラップを起動する。プリブランチ
が間違っていて、再びEステージ(35)で分岐が生じた
ときはプリブランチで検出した奇数アドレスジャンプト
ラップは無視される。このため、Dステージ(32)で検
出された奇数アドレスジャンプトラップはその他のEIT
とは別扱いとなっている。また、Eステージ(35)では
奇数アドレスジャンプトラップの起動処理に奇数となっ
た命令アドレスの値を必要とする。このため、Dステー
ジ(32)は奇数アドレスジャンプトラップの検出を行っ
たとき、その奇数アドレス値をPC値とした特殊はステッ
プコード(OAJTステップコード)を発生するOAJTステッ
プコードに対してAステージ(33)、Fステージ(34)
はそのコードを次のステージに伝える。Eステージ(3
5)はプリブランチが正しいと判断し、しかもそのプリ
ブランチが奇数アドレスジャンプトラップを検出してい
るとき、CPC(138)を通して次に転送されてくるOAJTス
テップコードのPC値を使用して奇数アドレスジャンプト
ラップの起動処理を行う。
Eステージ(35)で分岐が生じたときは分岐先アドレス
がEB(143)からCAバス(104)を通じてTPC(134)に転
送に転送されてくる。PC計算部(53)はこの値とゼロを
加算して結果をPOバス(105)からTPC(134)、DPC(13
5)に書き込む。これでPC計算部(53)の初期化が完了
する。この初期化の処理はEステージ(35)で分岐が生
じた最初の単位デコード処理とオーバーラップしてなさ
れる。なお、QINPC(115),CAA(142)にはCAバス(10
4)よりTPC(134)に値を取り込む際に同じ値がセット
される。
(4.7)プリブランチ命令に対するオペランドアドレス
計算部の動作 プリブランチ命令に対して、Dステージ(32)がプリブ
ランチ処理を行わなかった場合、オペランドアドレス計
算部(54)がプリブランチ命令の分岐先アドレスを計算
する。分岐先アドレスの計算は、Aバス(103)より転
送されてくるAPC(136)の値とDISPバス(100)より転
送されてくる分岐変位値をアドレス加算器(124)で加
算することにより行われる。計算された分岐先アドレス
はEステージ(35)に伝えられる。Aステージ(33)
で、オペランドアドレス計算部(54)を使用した分岐先
アドレスの計算の際は、奇数アドレスジャンプトラップ
の検出は行わない。Eステージ(35)に転送される分岐
先アドレスが奇数であることにより、奇数アドレスジャ
ンプトラップの情報が伝えられるのである> Dステージ(32)がプリブランチ処理をした場合、Bcc
命令、ACB命令に対しては、Aステージ(33)がそのプ
リブランチ命令に引き続くアドレスにある次の命令のPC
値を計算する。計算結果はEステージ(35)に伝えら
れ、プリブランチが間違っていたときの再度の分岐先ア
ドレスとして使用される。Bcc命令など、Dステージ(3
2)で1ステップコードにデコードされる命令に対して
は、Aバス(104)より転送されてくるAPC(136)の値
に補正値バス(102)から転送されてくるBcc命令の命令
長を加算して、加算結果をAOバス(106)よりFA(127)
に書き込む。ステップコードが2つ以上に分かれるフォ
ーマットをもつACB命令に対してはDISPバス(100)より
転送れてくる最後のステップコードの先頭アドレスであ
るTPC(134)の値と補正値バス(102)から転送されて
くる最後のステップコードのデコードで使用した命令コ
ードの長さを加算して、加算結果をAOバス(106)よりF
A(127)に書き込む。
BSR命令についてはプリブランチは必ず正しいわけであ
るが、リターンアドレスとしてBSR命令のアドレスが必
要なためオペランドアドレス計算部(54)でアドレス計
算を行う。BSR命令のフォーマットは第33図に示す。第3
3図で#dsはBSRの分岐変位を32ビットの2進数で指定す
るフィールドであるBSR Dステージ(32)で1ステップ
コードにデコードされる命令であり、Bccと同様にAバ
ス(103)より転送されてくるAPC(136)の値と補正値
バス(102)より転送されてくるBSRの命令長との加算を
行う。また、BSRの命令に対するリターンアドレス計算
の手法はTRAP(無条件トラップ)命令とTRAP/cccc(条
件トラップ)命令でも使用される。
TRAPA命令、TRAP/cccc命令もDステージ(32)で1ステ
ップコードにデコードされる命令あり、Bccと同様にア
ドレッシングモード指定フィールドを待たず、オペラン
ドアドレス計算部(54)はこれらの命令のオペランドア
ドレスの計算は行わない。TRAPA命令とTRAP/cccc命令の
フォーマットは第34図に示す。第34図で(301)はTRAPA
命令のフォーマット、(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ステージ(3
4)ではBRA命令はそのまた転送され、EIT検出があった
かどうかを示すフラッグとPC値だけがEステージ(35)
に転送されていく。Eステージ(35)に転送されてい
く。Eステージ(35)ではBRAに対して分岐処理しな
い。
(4.8.2)BSR命令 BSR命令はサブルーチン分岐命令であり、実行されるとB
SRの次のアドレスにある命令のPC値をスタックにプッシ
ュして、必ず分岐を起こす。命令フォーマットは第33図
に示されている。
BSR命令は必ず分岐を起こすためDステージ(32)では
分岐予測ビットによらず必ず分岐すると判断してプリブ
ランチ処理をする。Aステージ(33)ではAPC(136)と
BSRの命令長を加算してサブルーチンからのリターンア
ドレスを計算する。計算されたリターンアドレスはBSR
のオペランドとしてEステージ(35)に渡される。Eス
テージ(35)ではBSR命令に対してリターンアドレスを
スタックにプッシュし、分岐処理しない。
(4.8.3)Bcc命令 Bcc命令は条件分岐命令で、命令フォーマットは第35図
に示す。分岐条件ccc(304)は4ビットのフォーマット
である。分岐条件は第35図の分岐条件cccc(304)の最
下位ビットが「0」か「1」かにより、分岐条件を正反
対にするようになっている。#dsは分岐変位を32ビット
の2進数で指定するフィールドである。
Bcc命令は分岐確率は過去の実行履歴にかなり依存する
ため、Dステージ(32)では分岐予測テーブル(113)
から出力される分岐予測ビットの値に従い、分岐するか
どうかを判断する。Bcc命令の分岐確率の実行履歴依存
性についても上記のJ.K.F.Lee,A.J.Smith,「Branch Pre
diction Strategies and Branch Target Buffer Desig
h」,IEEE Computer,Vo1.17,No.1,January,1984.で詳し
く述べれれている。
分岐予測ビットが「分岐する」を示している場合にはD
ステージ(32)でプリブランチ処理を行う。プリブラン
チが行われた場合には、分岐条件生成回路(114)で第3
5図の分岐条件cccc(304)の最下位ビットが反転されて
Eステージ(35)に渡されるため、Eステージ(35)で
はDステージ(32)でプリブランチ処理が行われたかど
うかにかかわらず、渡された分岐条件に従いBcc命令を
実行すればよい。もしEステージ(35)でBcc命令が分
岐を起こした場合には、Dステージ(32)での分岐予測
が誤っていたわけであるから、分岐予測テーブル(11
3)をアクセスし、OPC(139)で示される場所の分岐予
測履歴の反転を行う。分岐履歴の更新はEステージ(3
5)でBcc命令が分岐を起こしたときだけしか行われない
ため、Dステージ(32)の分岐予測テーブル(113)の
参照動作がEステージ(35)の更新に妨げられることは
ない。Eステージ(35)で分岐が起きた直後はDステー
ジ(32)はIFステージ(31)からの命令コード待ち状態
となる。分岐履歴の書換えは、この命令コード待ち状態
の間に行われる。
Bcc命令がプリブランチ時に奇数アドレスジャンプトラ
ップを検出しており、Eステージ(35)で分岐を起こさ
なかったときは奇数アドレスジャンプトラップを起動す
る。Bcc命令がプリブランチ時に奇数アドレスジャンプ
トラップを検出していてもEステージ(35)で再び分岐
を起こしたときはプリブランチ時の奇数アドレスジャン
プトラップ検出は無視される。この機能により分岐処理
を行わないBcc命令の実行により、奇数アドレスジャン
プトラップが検出されることはなくなる。
(4.8.4)ACB命令 ACB命令はループのプリミティブとして使用される命令
である。ACBはループ制御変数を増加して、比較し、条
件ジャンプを行う命令である。ACBのフォーマットは第3
6図に示す。第36図でEaRは一般形のアドレッシングモー
ドでループ制御変数に加算する値を指定するフィール
ド、EaRXは一般形アドレッシングモードでループ制御変
数の比較対象値を指定するフィールド、RgMXはループ制
御変数の存在する汎用レジスタ番号を指定するフィール
ド、#ds8は分岐変位を8ビットの2進数で指定するフ
ィールドである。ACBはDステージ(32)で3ステップ
コード以上に分解されてパイプライン上を流れる命令で
ある。
ACB命令は分岐する確率が高いため本発明のデータ処理
装置ではこの命令に対して分岐予測ビットにかかわら
ず、分岐すると判断してプリブランチ処理を行う。
この命令はステップコードが3つ以上(多段間接アドレ
ッシングモードが含まない場合に3つ)になるため、プ
リブランチ処理を最後のステップコードをDステージ
(32)が出力するとき行う。Dステージ(32)ではACB
の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計算部(5
3)やオペランドアドレス計算部(54)に、命令デコー
ドに使用した命令コードの長さを転送するために、補正
値バス(102)と命令長バス(101)の2つのバス用いて
いるが、例えば補正値バス(102)からPC計算部(53)
への入力経路を設けて、命令長バス(101)を廃止して
もよい。
また、上述の実施例ではACB命令のプリブランチ処理でT
PC(134)の値をDISPバス(102)を通して、オペランド
アドレス計算部(54)に転送する例を述べたが、このTP
C(134)の値の転送はAバス(103)で行ってもよい。
〔発明の効果〕
本発明のデータ処理装置では上記のように1ステップコ
ードで処理されるBRA命令、BSR命令、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命令、Bcc命令に対しても複数ステップコ
ードになるACB命令に対してもプリブランチ処理を行う
ことを可能にし、処理速度が大幅に高速化されたデータ
処理装置を得ている。
また、分岐予測テーブルの書換えをBcc命令に対してE
ステージ(35)で分岐が行われたとき、次のDステージ
(32)で分岐予測テーブル(113)のアクセスが必要に
なるまでに、分岐履歴の更新を行うことが可能であり、
Dステージ(32)とEステージ(35)が分岐予測テーブ
ル(113)のアクセスの競合でパイプライン処理が滞る
ことによるデータ処理装置の処理速度低下を防ぐことが
できる。
【図面の簡単な説明】
第1図は本発明のデータ処理装置の分岐命令処理回路の
図、第2図は本発明のデータ処理装置の全体ブロック
図、第3図は本発明のデータ処理装置のパイプラインス
テージ概要図、第4図は本発明のデータ処理装置の分岐
予測テーブル詳細図、第5図は従来のデータ処理装置の
パイプラインステージ概要図、第6図は従来のデータ処
理装置での分岐命令処理の様子を示す図、第7図は本発
明のデータ処理装置での分岐命令処理の様子を示す図、
第8図は本発明のデータ処理装置のメモリ上での命令の
並び方を示す図、第9図から第17図は本発明のデータ処
理装置の命令フォーマットの図、第18図から第31図は本
発明のデータ処理装置のアドレッシングモードの説明
図、第32図は本発明のデータ処理装置の命令フォーマッ
トの特徴を示す図、第33図はBSR命令のフォーマット
図、第34図はTRAPA、TRAP/cccc命令のフォーマット図、
第35図はBcc命令のフォーマット図、第36図はACB命令の
フォーマット図である。 (52)は命令デコード部、(53)はPC計算部、(54)は
オペランドアドレス計算部、(56)はデータ演算部、
(100)はDISPバス、(102)は補正値バス、(103)は
Aバスを示す。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】命令コードを受け取り、前記命令コードが
    デコードされるデコード機構と、前記デコード機構から
    プログラムカウンタの更新に関する情報を受け取り、前
    記命令コードの次の命令コードのプログラムカウンタ値
    を計算し、命令コードの先頭アドレスを保持する第1の
    計算機構と、前記デコード機構からオペランドアドレス
    計算に関する情報を受け取り、オペランドアドレスの計
    算を行う第2の計算機構とを備えたデータ処理装置にお
    いて、 前記デコード機構において、条件分岐命令がデコードさ
    れた場合に、前記第1の計算機構は、分岐先命令をフェ
    ッチするために、前記条件分岐命令の先頭アドレスと前
    記デコード機構からの前記条件分岐命令の分岐変位とを
    加算して分岐先アドレスを生成し、前記第2の計算機構
    は、分岐が起こらなかった場合に、前記条件分岐命令の
    次の命令コードをフェッチするために、前記第1の計算
    機構で計算された前記条件分岐命令の先頭アドレスと前
    記デコード機構から前記条件分岐命令の命令長とを受け
    取り、それらを加算して、前記条件分岐命令の次の命令
    コードの先頭アドレスを生成することを特徴とするデー
    タ処理装置。
  2. 【請求項2】条件分岐命令を2回以上の複数回の単位デ
    コード処理に分けてデコードするデコード機構と、前記
    デコード機構が前記単位デコード処理する命令コードの
    切れ目のアドレス値を保持する第1のラッチと、前記デ
    コード機構がデコードする命令のプログラムカウンタ値
    を保持する第2のラッチと、前記第1のラッチと前記第
    2のラッチのどちらかの内容を選択的に第1の入力とす
    る加算器とを有し、前記デコード機構からプログラムカ
    ウンタの更新に関する情報を受け取り、プログラムカウ
    ンタ値を計算する第1の計算機構と、前記デコード機構
    からオペランドアドレス計算に関する情報を受け取り、
    オペランドアドレスを計算する第2の計算機構とを有す
    るデータ処理装置において、 前記第1の計算機構は、分岐先命令をフェッチするため
    に、前記デコード機構で前記条件分岐命令の最後の命令
    コードがデコードされた場合に、前記第2のラッチの内
    容と前記デコード機構からの前記条件分岐命令の分岐変
    位とを受け取り、それらを加算して、分岐先アドレスを
    生成し、 前記第2の計算機構は、分岐が起こらなかった場合に、
    前記条件分岐命令の次の命令をフェッチするために、前
    記第1のラッチの内容と前記デコード機構で前記条件分
    岐命令の最後の命令コードの命令コード長とを受け取
    り、それらを加算して、前記条件分岐命令の次の命令コ
    ードの先頭アドレスを生成することを特徴とするデータ
    処理装置。
  3. 【請求項3】条件分岐命令の分岐履歴を保持する分岐履
    歴テーブルと、 命令のデコードと、条件分岐命令に対して前記分岐履歴
    テーブルの出力に従い、第1の分岐処理を行うかまたは
    前記第1の分岐処理を行わないかどちらかの動作と、を
    行う機能をもつ第1のパイプラインステージと、 条件分岐命令に対する分岐条件に従い、第2の分岐処理
    を行うかまたは前記第2の分岐処理を行わないかどちら
    かの動作と、を行う機能をもつ第2のパイプラインステ
    ージと、 をパイプライン動作させる機能と、を備え、 前記第2のパイプラインステージは、 前記第2の分岐処理が行われたとき、前記第2のパイプ
    ラインステージが前記第1のパイプラインステージより
    優先して前記分岐履歴テーブルをアクセスして分岐履歴
    を更新し、 前記第2の分岐処理が行われなかったとき、前記第2の
    パイプラインステージは、前記分岐履歴テーブルをアク
    セスしないことを特徴とするデータ処理装置。
JP63040024A 1988-02-23 1988-02-23 データ処理装置 Expired - Fee Related JPH0769808B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP63040024A JPH0769808B2 (ja) 1988-02-23 1988-02-23 データ処理装置
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
JP63040024A JPH0769808B2 (ja) 1988-02-23 1988-02-23 データ処理装置

Publications (2)

Publication Number Publication Date
JPH01214931A JPH01214931A (ja) 1989-08-29
JPH0769808B2 true JPH0769808B2 (ja) 1995-07-31

Family

ID=12569336

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JPH0769808B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5931325B2 (ja) * 1977-08-24 1984-08-01 文二 萩原 経皮酸素測定用電極装置
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
JPH0752390B2 (ja) * 1985-05-07 1995-06-05 株式会社日立製作所 命令処理装置
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
JPS62226232A (ja) * 1986-03-28 1987-10-05 Toshiba Corp 分岐先アドレス算出回路

Also Published As

Publication number Publication date
JPH01214931A (ja) 1989-08-29

Similar Documents

Publication Publication Date Title
JP2761688B2 (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
US5321821A (en) System for processing parameters in instructions of different format to execute the instructions using same microinstructions
JP2507638B2 (ja) デ―タ処理装置
JP3543181B2 (ja) データ処理装置
JPH081602B2 (ja) データ処理装置
JPH081599B2 (ja) データ処理装置
JP2581236B2 (ja) データ処理装置
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
JPH07120284B2 (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
JP2556182B2 (ja) デ−タ処理装置
US5212779A (en) System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction
JP2504235B2 (ja) デ―タ処理装置
JPH0769806B2 (ja) データ処理装置
US5269008A (en) Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer
JPH0769808B2 (ja) データ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JPH081600B2 (ja) データ処理装置
JPH0769801B2 (ja) データ処理装置
JP2928879B2 (ja) データ処理装置
JPH0769805B2 (ja) データ処理装置
JPH0769802B2 (ja) データ処理装置
JPH0769804B2 (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