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

データ処理装置

Info

Publication number
JPH01214931A
JPH01214931A JP4002488A JP4002488A JPH01214931A JP H01214931 A JPH01214931 A JP H01214931A JP 4002488 A JP4002488 A JP 4002488A JP 4002488 A JP4002488 A JP 4002488A JP H01214931 A JPH01214931 A JP H01214931A
Authority
JP
Japan
Prior art keywords
instruction
branch
stage
bus
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP4002488A
Other languages
English (en)
Other versions
JPH0769808B2 (ja
Inventor
Toyohiko Yoshida
豊彦 吉田
Masahito Matsuo
雅仁 松尾
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明はパイプラインの乱れを少なくする分岐命令処
理機構により、多段パイプライン処理機構を効率的に動
作させ、高い処理能力を実現したデータ装置に関するも
のである。
〔従来の技術〕
第5図に従来のデータ処理装置で行われていたパイプラ
イン処理R構の例を示す、aυは命令フェッチステージ
(IFステージ)、0乃は命令デコードステージ〔Dス
テージ)、圓はオペランドアドレス計算ステージ(Aス
テージ)、04)はオペランドフェッチステージ(Fス
テージ、αωは命令実行ステージ(Eステージ)である
1Fステージaυはメモリから命令コードをフェッチし
てDステージ0乃に出力する。Dステージ■はIFステ
ージaυから入力される命令コードをデコードして、デ
コード結果をAステージQ31に出力する。Aステージ
θ乃は命令コード中で指定されたオペランドの実効アド
レスの計算を行い、計算したオペランドアドレスをFス
テージα荀に出力する。
Fステージ041はAステージα蜀から入力されたオペ
ランドアドレスに従い、メモリよりオペランドをフェッ
チする。フェッチしたオペランドはEステージθりに出
力する。Eステージa!9はFステージ00から入力さ
れたオペランドに対して命令コード中で指定された演算
を実行する。さらに必要ならその演算結果をメモリにス
トアする。
上記のパイプライン処理機構により、各命令で指定され
る処理は5つに分解され、5つの処理を順番に実行する
ことにより、指定された処理を完了する。各々5つの処
理は異なる命令に対しては並列動作させることが可能で
あり、理想的には上記の5段のパイプライン処理機構に
より5つの命令を同時に処理し、パイプライン処理を行
わない場合にくらべ、最大で5倍の処理能力もつデータ
処理装置を得ることができる。
〔発明が解決しようとする課題〕
パイプライン処理技術は上記のようにデータ処理’A 
Mの処理能力を大幅に向上させる可能性をもつものであ
り、高速なデータ処理装置で広く用いられている。
しかし、パイプライン処理にもいくつかの欠点があり、
いつも理想的な状態で命令が処理されるわけではない、
パイプライン処理で問題となるものの1つは命令のシー
ケンスを乱す分岐命令の実行である。
第5図に示すパイプライン処理機構をもち、分岐命令を
EステージQ9で処理してから分岐先命令をIFステー
ジ00が処理する従来のデータ処理装置では、分岐命令
の実行により、パイプラインが大幅に乱れる。従来のデ
ータ処理装置で分岐命令が実行された場合に、パイプラ
イン中を流れる命令の様子を第6図に示す、第6図では
命令3及び命令12が分岐命令である。命令3が実行さ
れるとすでにパイプライン処理中の命令4、命令5、命
令6、命令7はキャンセルされ、新たに命令11がIF
ステージα0から処理される。命令3がEステージ0ω
で実行されてから命令11がEステージQ9で実行され
るまでには4命令処理分の時間が無駄になる。命令12
についても同様に4命令処理分の時間が無駄になる。こ
の無駄時間は分岐命令の実行後に処理すべき命令のフェ
ッチが分岐命令に対する全パイプライン処理が終了した
後に行われるためであり、パイプライン処理の段数が多
いほどこの無駄時間も長くなる。
パイプライン処理を行うデータ処理装置では分岐命令の
処理が処理能力向上の1つの大きなキーポイントである
ことは従来より指摘されおり、様々な工夫がすでに行わ
れている0分岐命令の処理に対する工夫は例えばJ、に
、F、Lee、A、J。
Sm1Lh+ rBranch Prediction
 Strategies and Branch Ta
rget Buffer DesignJ 、 I[[
!E Computer、V。
1、1?+ No、 1. January+ 198
4.で紹介されている。
しかし、いずれの工夫も実現に多大のハードウェアを必
要としたり、一部の分岐命令のみにしか効果がないなど
、まだまだ欠点を多く残すものであった。
〔課題を解決するための手段〕
本発明のデータ処理装置では上記の欠点を解決・するた
め、条件分岐命令は履歴に依存して、その他の命令は命
令コードに依存して分岐を予測することが可能な命令デ
コード機構と、分岐先アドレスを計算することが可能な
プログラムカ6ンタ値計算機構と、分岐命令の命令長と
分岐命令のプログラムカウンタ値を加算することが可能
なオペランドアドレス計算機構とをもつ。
〔作用〕
本発明のデータ処理装置では上記の、条件分岐命令は履
歴に依存して、その他の命令は命令コードに依存して分
岐を予測することが可能な命令デコードi 構と、分岐
先アドレスを計算することが可能なプログラムカウンタ
値計算機構と、分岐命令の命令長と分岐命令のプログラ
ムカウンタ値を加算することが可能なオペランドアドレ
ス計算機構とにより、無条件分岐命令、条件分岐命令、
サブルーチン分岐命令、ループ制御命令に対して命令デ
コード段階で分岐処理を行い、パイプライン処理の乱れ
を少なくする。
〔発明の実施例〕
(1)本発明のデータ処理装置の命令フォーマット本発
明のデータ処理装置の命令は16ビツl−41位で可変
長となっており、奇数バイト長の命令はない。
本発明のデータ処理装置では高頻度命令を短いフォーマ
ットとするため、特に工夫された命令フォーマット体系
をもつ0例えば、2オペランド命令に対して、基本的に
4バイト+拡張部の構成をもち、すべてのアドレッシン
グモードが利用できる一般形フオーマントと頻度の高い
命令とアドレッシングモードのみを使用できる短縮形フ
ォーマットの2つのフォーマットがある。
第8図から第17図に示す本発明のデータ処理装置の命
令フォーマット中に現われる記号の意味は次の通りであ
る。
一:オペコードの入る部分 #:リテラル、または即値の入る部分 Ea:8ピントの一般形のアトレンジングモードでオペ
ランドを指定する部分 Sh:6ビツトの短縮形のアトレンジングモードでオペ
ランドを指定する部分 Rn:レジスタ上のオペランドをレジスタ番号で指定す
る部分 フォーマットは、第8図に示すように右側がLSB側で
、かつ高いアドレスになっている。アドレスNとアドレ
スN +、1の2バイトを見ないと命゛ 令フォーマッ
トが判別できないようになっているが、これは、命令が
必ず16ビント(2バイト)単位でフェッチ、デコード
されることを前提としたためである。
本発明のデータ処理装置では、いずれのフォーマットの
場合も、各オペランドのEaまたはshの拡張部は、必
ずそのHaまたはshの基本部を含むハーフワードの直
後に置かれる。これは、命令により暗黙に指定される即
値データや、命令の拡張部に優先する。したがって、4
バイト以上の命令では、Eaの拡張部によって命令のオ
ペコードが分断される場合がある。
また、後でも述べるように、多段間接モードによって、
Eaの拡張部にさらに拡張部が付(場合にも、次の命令
オペコードよりもそちらの方が優先される0例えば、第
一ハーフワードにEalを含み、第二ハーフワードにE
a2を含み、第三ハーフワードまである6バイト命令の
場合を考える。[ialに多段間接モードを使用したた
め、普通の拡張部のほかに多段間接モードの拡張部もつ
くものとする3この時、実際の命令ビットパターンは、
命令の第一ハーフワード(Ea 1の基本部を含む)、
[Ealの拡張部、IEalの多段間接モード拡張部、
命令の第二ハーフワード([a2の基本部を含む)、E
a2の拡張部、命令の第三ハーフワード、の順となる。
(1,1)短縮形2オペランド命令 第9図から第12図に示す、2オペランド命令の短縮形
フォーマットである。
第9図はメモリーレジスタ間演算命令のフォーマントで
ある。このフォーマントにはソースオペランド側がメモ
リとなるL−formatとデスティネーションオペラ
ンド側がメモリとなるS−formatがある。
L−formatでは、shはソースオペランドの指定
フィールド、Rhはデスティネーションオペランドのレ
ジスタの指定フィールド、I?I?はshのオペランド
サイズの指定をあられす、レジスタ上に置かれたデステ
ィネーションオペランドのサイズは、32ビツトに固定
されている。レジスタ側とメモリ側のサイズが異なり、
ソース側のサイズが小さい場合に符号拡張が行なわれる
S−formatではshはデスティネーションオペラ
ンドのJmmラフイールドRhはソースオペランドのレ
ジスタ指定フィールド、RRはshのオペランドサイズ
の指定をあられす、レジスタ上に置かれたソースオペラ
ンドのサイズは、32ビツトに固定されている。レジス
タ側とメモリ側のサイズが異なり、ソース側のサイズが
大場合にあふれた部分の切捨てとオーバーフローチャッ
クが行なわれる。
第10図はレジスターレジスタ間演算命令のフォーマッ
ト(R−format)である、 Rnはデスティネー
シジンレジスタの指定フィールドRmはソースレジスフ
の指定フィールドである。オペランドサイズは32ビツ
トのみである。
第11図はリテラル−メモリ間演算命令のフォーマント
(0−format)である0Mハはディスティネーシ
ョンオペランドサイズの指定フィールド、#はリテラル
によるソースオペランドの指定フィルド、shはデステ
ィネーションオペランドの指定フィルードである。
第12図は即値−メモリ間演算命令のフォーマット(I
−format)である、 MHはオペランドサイズの
指定フィールド(ソース、ディスティネーションで共通
)、Shはデスティネーションオペランドの指定フィー
ルドであるe T−formatの即値のサイズは、デ
スティネーション側のオペランドのサイズと共通に8.
16.32ビ、トとなり、ゼロ拡張、符号拡張は行なわ
れない。
(1,2)−船形1オペランド命令 第13図は1オペランド命令の一般形フオーマット(G
l−format)である、 MMはオペランドサイズ
の指定フィールドである。一部のGl−format命
令では、Eaの拡張部以外にも拡張部がある。また、M
Mを使用しない命令もある。
(1,3)−船形2オペランド命令 第14図から第16図は2オペランド命令の一般形フオ
ーマットである。このフォーマットに含まれるのは、8
ピントで指定する一船形アドレンシングモードのオペラ
ンドが最大2つ存在する命令である。オペランドの総数
自体は3つ以上になる場合がある。
第14図は第一オペランドがメモリ読みだしを必要とす
る命令のフォーマント(G−format)である。
EaMはデスティネーションオペランドの指定フィール
ド、MMはデスティネーションオペランドサイズの指定
フィールド、EaRはソースオペランド指定フィールド
、RRはソースオペランドサイズの指定フィルドである
。一部のG−foreat命令では、EaHやCaRの
拡張部以外にも拡張部がある。
第15図は第一オペランドが8ビフト即値の命令フォー
マット(E−forma t)である、 EaMはデス
ティネーションオペランドの指定フィールド、MMはデ
スティネーションオペランドサイズの指定フィールド、
#はソースオペランド値である。
E−for+matとI−formatとは機能的には
偵たちのであるが、考え方の点では大きく違っている。
 E−f。
rma tはあくまでも2オペランド−船形(G−fo
rma t)の派生形であり、ソースオペランドのサイ
ズが8ビツト固定、ディスティネーションオペランドの
サイズが8/1 G/32ビツトからi!沢となってい
る。つまり、異種サイズ間の演算を前堤とし、デスティ
ネーションオペランドのサイズに合わせて8ビツトのソ
ースオペランドがゼロ拡張または71号拡張される。一
方、LformaLは、特に転送命令、比較命令で頻度
の多い即値のパターンを短縮形にしたものであり、ソー
スオペランドとディスティネーションオペランドのサイ
ズは等しい。
第16図は第一オペランドがアドレス計算のみの命令の
フォーマット(G^−format)である。Ea!L
4はデスティネーションオペランドの指定フィールド、
iはデスティネーションオペランドサイズの指定フィー
ルド、[!aAはソースオペランドの指定フィールドで
ある。ソースオペランドとしては実行アドレスの計算結
果自体が使用される。
第17図はシッートブランチ命令のフォーマントである
。 CCCeは分岐条件指定フィールド、disp:8
はジャンプ先との変位指定フィールド、本発明のデータ
処理装置では8ビツトで変位を指定する場合には、ビッ
トパターンでの指定値を2倍して変位値とする。
(1,4)アトレンジングモード 本発明のデータ処理装置のアドレッシングモード指定方
法には、レジスタを含めて6ビツトで指定する短縮形と
、8ビツトで指定する一般形がある。
未定義のアドレッシングモードを指定した場合や、意味
的に考えて明らかにおかしなアドレッシングモードの組
み合わせを指定した場合には、未定義命令を実行した場
°合と同じく予約命令例外を発生し、例外処理を起動す
る。
これに!亥当するのは、デスティネーシヨンが即値モー
ドの場合、アドレス計算を伴うべきアドレッシングモー
ド指定フィールドで即値モードを使用した場合などであ
る。
第18図から第28図に示すフォーマントの図中で使わ
れる記号つぎの通りである。
Rn    レジスフ指定 (Sh)   6ヒツトの短縮形アドレッシングモーで
の指定方法 (IEa)   8ピントの一般形アドレッシングモー
ドでの指定方法 フォーマントの図で点線で囲まれた部分は、拡張部を示
す。
(1,4,1)i本アドレッシングモード本発明のデー
タ処理装置は様々なアドレッシングモードをサポートす
る。そのうち、本発明のデータ処理装置でサポートする
基本アドレッシングモードには、レジスタ直接モード、
レジスタ間接モード、レジスタ相対間接続モード、即値
モード、絶対モード、PC相対間接モード、スタックポ
ツプモード、スタックブツシュモードがある。
レジスタ直接モードは、レジスタの内容をそのままオペ
ランドとする。フォーマットは第18図に示すa Rn
は汎用レジスタの番号を示す。
レジスタ間接モードは、レジスタの内容をアドレスとす
るメモリの内容をオペランドとする。フォーマントは第
19図に示す、 Rnは汎用レジスタの番号を示す。
レジスタ相対間接は、ディスプレースメント値が16ビ
ツトか32ビツトかにより、2種類ある。
それぞれ、レジスタの内容に16ビツトまたは32ビツ
トのディスプレースメント値を加えた値をアドレスとす
るメモリの内容をオペランドとする。
フォーマントは第20図に示す、 Rnは汎用レジスタ
の番号を示す。disp:16とdisp;32は、そ
れぞれ、16ビツトのディスプレースメント値、32ビ
ツトのディスプレースメント値を示す、ディスプレース
メント値は符号付きとして扱う。
即値モードは、命令コード中で指定されるビンドパクン
をそのまま2進数と見なしてオペランドする。フォーマ
ントは第21図に示す。ima−dlltaは即値を示
す、 imm−dataのサイズは、オペランドサイズ
として命令中で指定される。
絶対モードは、アドレス値が16ビツトで示されるか3
2ピントで示されるかにより2種類ある。
それぞれ、命令コード中で指定される16ビントまたは
32ビツトのビンドパクンをアドレスとしたメモリの内
容をオペランドとする。フォーマットは第22図に示す
、 abs:16とabs:32は、それぞれ16ビソ
ト、32ビツトのアドレス値を示す。
abs:16でアドレスが示されるときは指定されたア
ドレス値を32ビツトに符号拡張する。
Tic相対間接モードは、ディスプレースメント値が1
6ビツトか32ビツトかにより、2種類ある。
それぞれ、プログラムカウンタの内容に16ビツトまた
は32ビツトのディスプレースメント値を加えた値をア
ドレスとするメモリの内容をオペランドとする。フォー
マントは第23図に示す。
disp:16とdisp:32は、それぞれ、16ビ
ツトのディスブレースメントW、32ピントのデイスフ
レースメント値を示す、ディスプレースメント値は符号
付きとして扱う、PC相対間接モードにおいて参照され
るプログラムカウンタの値は、そのオペランドを含む命
令の先頭アドレスである。多段間接アドレッシングモー
ドにおいてプログラムカウンタの値が参照される場合に
も、同じように命令先頭のアドレスをpc相対の基準値
として使用する。
スタックポンプモードはスタックポインタ(SP)の内
容をアドレスとするメモリの内容をオペランドとする。
オペランドアクセス後、SPをオペランドサイズだけイ
ンクリメントする0例えば、32ビツトデータを扱う時
には、オペランドサクセス後にSPが+4だけ更新され
る。B、Hのサイズのオペランドに対するスタックポツ
プモードの指定も可能であり、それぞれSPが+1.+
2だけ更新される。フォーマットは第24図に示す、オ
ペランドに対してスタックポツプモードが意味を持たな
いものに対しては、予約命令外を発生する。具体的に予
約命令外となるのは、writeオペランド、read
−modify−wri teオペランドに対するスタ
ックポンプモード指定である。
スタックブツシュモードはSPの内容をオペランドサイ
ズだけデクリメントした内容をアドレスとするメモリの
内容をオペランドとする。スタックブツシュモードでは
オペランドアクセス前にSPがデクリメントされる0例
えば、32ビツトデータを扱う時には、オペランドアク
セス前にSPが−4だけ更新される。B、Hのサイズの
オペランドに対するスタックブツシュモードの指定も可
能であり、それぞれSPが−1,−2だけ更新される。
フォーマットは第25図に示す。オペランドに対してス
タックブツシュモードが意味を持たないものに対しては
、予約命令外を発生する。具体的に予約命令外となるの
は、readオペランド、read−modiry−w
riLeオペランドに対するスタックブツシュモード指
定である。
(1,4,2)多段間接アドレッシングモード複雑なア
ドレッシングも、基本的には加算と間接弁1(の組み合
わせに分解することができる。したがって、加算と間接
参照のオペレーションをアドレッシングのプリミティブ
として与えておき、それを任意に組み合わせることがで
きれば、どんな複雑なアドレッシングモードをも実現す
ることができる0本発明のデータ処理装置の多段間接ア
ドレッシングモードはこのような考え方にたったアドレ
ッシングモードである。複雑なアドレッシングモードは
、モジュール間のデータ参照やAI言語の処理系に特に
有用である。
多段間接アドレッシングモードを指定するとき、基本ア
トレンジングモード指定フィールドでは、レジスタベー
ス多段間接モード、PCベース多段間接モード、絶対ベ
ース多段間接モードの3種類の指定方法のうちいずれか
1つを指定する。
レジスタベース多段間接モードはレジスタの値を、拡張
する多段間接アドレッシングのベース値とするアドレッ
シングモードである。フォーマントは第26図に示す、
 Rnは汎用レジスタの番号を示す。
PCベース多段間接モードはプログラムカウンタの値を
、拡張する多段間接アドレッシングのベース値とするア
ドレッシングモードである。フォーマ・7トは第27図
に示す。
絶対ベース多段間接モードはゼロを、拡張する多段間接
アドレッシングのベース値とするアドレッシングモード
である。フォーマットは第28図に示す。
拡張する多段間接モード指定フィールドは、16ビツト
を単位としており、これを任意回繰り返す。
1段の多段間接モードにより、ディスプレースメントの
加算、インデクスレジスクのスケーリング(XI、×2
、×4、×8)と加算、メモリの間接弁1(り(、を行
なう、多段間接モードのフォーマットは第29図で示す
、各フィールドは以下に示す意味をもつ。
E=O:多段間接モード継続 [・lニアドレス計算終了 tmp−=> address of operand
■・0:メモリ間接参照なし Lmp   +   disp   +   Rx  
 *   5cale   −=>tmpl・1:メモ
リ間接参照あり teem  [tsp  +  disp  +  R
x  *  Scale)gg>tmpH・1:<RX
>をインデクスとして使用H=2:  特殊なインデク
ス <RX>・0  インデクス値を加算しない(RxJ) <Rx>=1   プログラムカウンタをイデクス値と
して使用 (Rx=PC) <Rx>−2〜  reserved D・0: 多段間接モード中の4ビツトのフィールドd
4の値を4倍してディスプレースメント値とし、これを
加算する。 d4は符号付きとして汲い、オペランドの
サイズとは関係なく必ず4倍して使用する。
D−1:  多段間接モードの拡張部で指定されたdi
spx(16/32ビツト)をディスプレースメント値
とし、これを加算する。
拡張部のサイズはd4フィールドで指定する。
d4=ooo1  dispxは16ビツトd4JO1
0dispxは32ビット xX:  インデクスのスケール(sca 1e−1/
2/4/8)プログラムカウンタに対して×2、×4、
×8のスケーリングを行なった場合には、その段の処理
終了後の中間値(tmp)として、不定値が入る。
この多段間接モードによって得られる実効アドレスは予
測できない値となるが、例外は発生しない。
プログラムカウンタに対するスケーリングの指定は行な
ってはいけない。
多段間接モードによる命令フォーマントのバリエーショ
ンを第30図、第3I図に示す、第30図は多段間接モ
ードが継続するが終了するかのバリエーションを示す、
第31図はディスプレースメントのサイズのバリエーシ
ョンを示す。
任意段数の多段間接モードが利用できれば、コンパイラ
の中で段数による場合分けが不要になるので、コンパイ
ラの負担が軽減されるというメリットがある。多段のr
m接参照の頻度が非常に少ないとしても、コンパイラと
しては必ず正しいコードを発生できなければならないか
らである。このため、フォーマット上、任意の段数が可
能になっている。
(1,5)例外処理 本発明のデータ処理装置ではソフトウェア負荷の軽減の
ため、豊富な例外処理機能をもつ、本発明のデータ処理
装置では例外処理は、命令処理を再実行するもの(例外
)、命令処理を完了するもの(トラップ)、割込の3種
類に分けて名称をつけている。また本発明のデータ処理
装置では、この3種の例外処理と、システム障害を総称
して[ITと呼ぶ。
(2)R能ブロックの構成 第2図に本発明のデータ処理装置のブロック図を示す0
本発明のデータ処理装面の内部を機能的に大きく分ける
と、命令フェッチ部(51)、命令デコード部(52)
 PC計算部(53)、オペランドアドレス計算部(5
4)、マイクロROM部(55)、データ演算部(56
)、外部バスインターフェイス部(57)に分かれる。
第2図ではその他にCPU外部にアドレスを出力するア
ドレス出力回路(58)とCPU外部とデータの入出力
を行うデータ入出力回路(59)を他の機能ブロック部
と分けて示した。
(2,1)命令フエンチ部(51)にはブランチバッフ
ァ、命令キューとその制御部などがあり、次にフェッチ
すべき命令のア°ドレスを決定して、ブランチバッファ
やCPU外部のメモリから命令をフェッチする。ブラン
チバッファへの命令登録も行う。
ブランチバッファは小規模であるためセレクティブキャ
ッシュとして動作する。ブランチバッファの動作の詳細
はU昭61−202041で詳しく述べられている。
次にフェッチすべき命令のアドレスは命令キューに入力
すべき命令のアドレスとして専用のカウンタで計算され
る0分岐やジャンプが起きたときには、新たな命令のア
ドレスが、PC計算部(53)やデータ演算部(56)
より転送されてくる。
CPU外部のメモリから命令をフェッチするときは、外
部アスインターフェイス部(57)を通して、フェッチ
すべき命令のアドレスをアドレス出力回路(58)から
CPU外部に出力し、データ入出力回路(59)をから
命令コードをフェッチする。
バッファリングした命令コードのうち、命令デコード部
(52)で次にデコードすべき命令コードを命令デコー
ド部(52)に出力する。
(2,2)命令デコード部 命令デコード部(52)では基本的に16ビツト(ハー
フワード)A位に命令コードをデコードする。
このブロックには第1ハーフワードに含まれるオペコー
ドをデコードするF II Wデコーダ、第2、第3ハ
ーフワードに含まれるオペコードをデコードするNHF
WHF−ダ、アドレッシングモードをデコードするアド
レッシングモードデコーダが含まれる。
さらにF II Wデコーダや旧IFWデコーダの出力
をさらにデコードして、マイクロROMのエントリアド
レスを計算するデコーダ2、条件分岐命令の分岐予測を
行う分岐予測機構、オペランドアドレス計算のときのパ
イプラインコンフリクトをチエツクするアドレス計算コ
ンフリクトチエツク機構も含まれる。
命令フェッチ部より入力された命令コードを2クロンク
につきO〜6バイトのデコードする。デコード結果のう
ち、データ演算部(56)での演算に関する情報がマイ
クロROM部(55)に、オペランドアドレス計算に関
係する情報がオペランドアドレス計算部(54)に、P
C計算に関する情報がPC計算部(53)に、それぞれ
出力される。
(2,3)マイクロRO)1部 マイクロll0M部(55)には主にデータ演算部(5
6)を制御するマイクロプログラムが格納されているマ
イクロll0M 、マイクロシーケンサ、マイクロ命令
デコーダなどが含まれる。マイクロ命令はマイクロl?
OMから2クロツクに1度読み出される。まマイクロシ
ーケンサはマイクロプログラムで示されるシーケンス処
理の他に、例外、割込、トラップ(この3つをあわせて
EITと呼ぶ)の処理をハードウェア的に受付ける。ま
たマイクロll0M部はストアバッファの管理も行う。
マイクロROM部には命令コードに依存しない割込みゃ
演算実行結果によるフラッグ情報と、デコーダ2の出力
など命令デコード部の出力が入力される。マイクロデコ
ーダの出力は主にデータ演算部(56)に対して出力さ
れるが、ジャンプ命令の実行による他の先行処理中止情
報など一部の情報は他のブロックへも出力される。
(2,4)オペランドアドレス計算部 オペランドアドレス計算部(54)は、命令デコード部
(52)のアドレスデコーダなどから出力されたオペラ
ンドアドレス計算に関係する情報によりハードワイヤー
ド制御される。このブロックではオペランドのアドレス
計11に関するほとんどの処理が行われる。メモリ間接
アドレッシングのためのメモリアクセスのアドレスやオ
ペランドアドレスがメモリにマツプされたI / OH
域に入るかどうかのチエツクも行われる。
アドレス計り1結果は外部バスインターフェイス部(5
7)に送られる。アドレス計算に必要な汎用レジスタや
プログラムカウンタの値はデータ演算部より入力される
メモリ間接アドレッシングを行うときは外部バスインタ
ーフェイス部(57)を通してアドレス出力回路(58
)からCPU外部に参照すべきメモ、リアドレスを出力
し、データ入出力部(59)から入力された間接アドレ
ス値を命令デコード部(52)をそのまま通過させてフ
ェッチする。
(2,5)PC計3γ部 pc計算部(53)は命令デコード部(52)から出力
されるPC計算に関係する情報でハードワイヤードに制
御され、命令のpc値を計算する0本特許のデータ処理
装置は可変長命令セントを持っており、命令をデコード
してみないとその命令の長さが判らない、pc計算部(
53)は、命令デコード部(52)から出力される命令
長をデコード中の命令のpc値に加算することによりつ
ぎの命令のpc値を作り出す。
また、命令デコード部(52)が、分岐命令をデコード
してデコード段階での分岐を指示したときは命令長の代
わりに分岐変位を分岐命令のpc値に加算することによ
り分岐先命令のpc値を計算する0分岐命令に対して命
令デコード段階で分岐を行うことを本発明のデータ処理
装置ではプリブランチと呼ぶ、プリブランチの方法につ
いては[二204500と11昭61−200557で
詳しく述べられている。
pc計算部(53)の計算結果は各命令のpc値として
命令のデコード結果とともに出力されるほか、ブリブラ
ンチ時には、次にデコードすべき命令のアドレスとして
命令フェッチ部に出力される。
また、次に命令デコード部(52)でデコードされる命
令の分岐予測のためのアドレスにも使用される0分岐予
測の方法については特願昭62−8394で詳しく述べ
られている。
(2,6)データ演算部 データ演算部(56)はマイクロプログラムにより制御
され、マイクロROM部(55)の出力情報に従い、各
命令の機能を実現するに必要な演算をレジスタと演算と
演算器で実行する。演算対象となるオペランドがアドレ
スや即値の場合は、オペランドアドレス計算部(54)
で計算されたアドレスや即値を外部バスインターフェイ
ス部(57)を通過させて得る。また、演算対象となる
オペランドがCPu外部のメモリにあるデータの場合は
、アドレス計算部(54)で計ゴγされたアドレスをバ
スインターフェイス部(57)がアドレス出力回路(5
B)から出力して、C11U外部のメモリからフェッチ
したオペランドをデータ入出力回路(59)から得る。
l寅3γ器としては八LU 、バレルシフタ、プライオ
リティエンコーダやカウンタ、シフトレジスタなどがあ
る。レジスタと主な演〕γ器の間は3バスで結合されて
おり、1つのレジスタ間演算を指示する1マイクロ命令
を2クロツクサイクルで処理する。
データ演lγのときCPu外部のメモリをアクセスする
必要がある時はマイクロプログラムの指示により外部バ
スインターフェイス部(57)を通してアドレス出力回
路(58)からアドレスをcr+t+外部に出力し、デ
ータ入出力回路(59)を通して目的のデータをフェッ
チする。
CII U外部のメモリにデータをストアするときは外
部バスインターフェイス部(57)を通してアドレス出
力回路(58)よりアドレスを出力すると同時に、デー
タ入出力回路(59)からデータをcpu外部に出力す
る。オペランドストアを効率的に行うためデータ演算部
(56)には4バイトのストアバッファがある。
ジャンプ命令の処理や例外処理などを行って新たな命令
アドレスをデータ演算部(56)が得たときはこれを命
令フェッチ部(51)とpc計算部(53)に出力する
(2,7)外部バスインターフェイス部(57)は本特
許のデータ処理装置の外部バスでの通信を制御する。
メモリのアクセスはすべてクロック同期で行われ、最小
2クロンクサイクルで行うことができる。
メモリに対するアクセス要求は命令フエンチ部(51)
、アドレス計算部(54)、データ演算部(56)がら
独立に生じる。外部バスインターフェイス部(57)は
これらのメモリアクセス要求を調停する。
さらにメモリとcPUを結ぶデータバスサイズである3
2ビツト(ワード)の整置境界をまたぐメモリ番地にあ
るデータのアクセスは、このブロック内で自動的にワー
ド境界をまたぐことを検知して、2回のメモリアクセス
に分解して1テう。
ブリフェッチするオペランドとするオペランドが重なる
場合の、コンフリクト防止処理やストアオペランドから
フェッチオペランドへのバイパス処理も行う。
(3)パイプライン機構 本発明のデータ処理装置のパイプライン処理は第3図に
示す構成となる。命令のブリフェッチを行う命令フエy
チステージ(IPステージ(31)〕、命令のデコード
を行うデコードステージ〔Dステージ(32) )オペ
ランドのアドレス計算を行うオペランドアドレス計算ス
テージ(Aステージ(33)〕、マイクロROMアクセ
ス(特にRステージ(36)と呼ぶ)とオペランドのブ
リフェッチ(特にOFステージ(37)と呼ぶ)を行う
オペランドフェッチステージ(Fステージ(34)〕、
命令の実行を行う実行ステージ(Eステージ(35) 
)の5段構成をパイプライン処理の基本とする。Eステ
ージ(35)では1段のストアバッファがあるほか、高
a能命令の一部は命令実行自体をパイプライン化するた
め、実際には5段以上のパイプライン処理効果がある。
各ステージは他のステージとは独立に動作し、理論上は
5つのステージが完全に独立動作する。
各ステージは1回の処理を最小2クロックで行うことが
できる。従って理想的には2クロツクごとに次々とパイ
プライン処理が進行する。
本発明のデータ処理装置にはメモリーメモリ間演算や、
“メモリ間接アドレッシングなど、基本パイプライン処
理1回だけでは処理が行えない命令があるが、本発明の
データ処理装置はこれらの処理に対してもなるべく均衡
したパイプライン処理が行えるように設計されている。
複数のメモリオペランドをもつ命令に対してはメモリオ
ペランドの数をもとに、デコード段階で複数のパイプラ
イン処理単位(ステップコード)に分解してパイプライ
ン処理を行うのである。パイプライン処理単位の分解方
法に関しては l  61−236456で詳しく述べ
られている。
IFステージ(31)からDステージ(32)に渡され
る情報は命令コードそのものである。Dステージ(32
)からAステージに渡される情報は命令で指定された演
lγに関するもの〔Dコード(41)と呼ぶ)と、オペ
ランドのアドレス計算に関係するもの(Aコード(42
)と呼ぶ)との2つある。Aステージ(33)からFス
テージに渡される情報はマイクロプログラムルーチンの
エントリ番地やマイクロプログラムへのパラメータなど
を含むRコード(43)と、オペランドのアドレスとア
クセス方法指示情報などを含むFコードとの2つである
。Fステージ(34)からEステージ(35)に渡され
る情報は演算制御情報とリテラルなどを含むEコード(
45)と、オペランドやオペランドアドレスなどを含む
Sコード(46)との2つである。
Eステージ(35)以外のステージで検出されたIEI
TはそのコードがEステージ(35)の到達するまでは
HIT処理を起動しない、Eステージ(35)で処理さ
れている命令のみが実行段階の命令であり、IPステー
ジ(31)〜Fステージ(34)で処理されている命令
はまだ実行段階に至っていないのである。従ってEステ
ージ(35)以外で検出されたBITは検出したことを
ステップコード中に記録して次のステージに伝えられる
のみである。
(3,1)パイプライン処理単位 (3,1,1)命令コードフィールドの分類本発明のデ
ータ処理装置のパイプライン処理単位は命令セントのフ
ォーマツh、の特徴を利用して決定されている。(1)
の節で述べたように、本発明のデータ処理装置の命令は
2バイト単位の可変長命令であり、基本的には(2バイ
トの命令基本部子〇〜4バイトのアドレッシング修飾部
)を1〜3回繰り返すことにより命令が構成されている
命令基本部には多くの場合オペコード部とアドレッシン
グモード指定部があり、インデックスアドレッシングや
メモリ間接アドレッシングが必要なときにはアドレッシ
ング修飾部の代わりに(2バイトの多段間接モード指定
部+0〜4バイトのアドレッシング修飾部)が任意価付
く、また、命令により2または4バイトの命令固有の拡
張部が最後に付く。
命令基本部には命令のオペコード、基本アドレッシング
モード、リテラルなどが含まれる。アドレッシング修飾
部はディスブレースノン、ト、絶対アドレス、即値、分
岐命令の変位のいずれがである。命令固有の拡張部には
レジスタマンブ、I−f。
rIla を命令の即値指定などがある。第32図で本
発明のデータ処理装置の基本的命令フォーマントの特徴
を示す。
(3,12)ステップコードへの命令の分解本発明のデ
ータ処理装置では上記の命令フォーマ、トの特徴を生か
したパイプライン処理を行う。
Dステージ(32)では(2バイトの命令基本部子〇〜
4バイトのアドレッシング修飾部)、(多段間接モード
指定部十アドレッシング修飾部)または命令固有の拡張
部を1つのデコード単位として処理する。各回のデコー
ド結果をステップコードと呼び、Aステージ(33)以
降ではこのステップコードをパイプライン処理の単位と
している。ステップコードの数は命令ごとに固有であり
、多段間接モード指定を行わないとき、1つの命令は最
小1個、最大3個のステップコードに分かれる。多段間
接モード指定があればそれだけステップコードが増える
。ただし、これは後で述べるようにデコード段階のみで
ある。
(3,1,3)プログラムカウンタの管理本発明のデー
タ処理’A Eのパイプライン上に存在するステップコ
ードはすべて別命令に対するものである可能性があり、
プログラムカウンタの値はステップコードごとに管理す
る。すべてのステップコードはそのステップコードのち
とになった命令のプログラムカウンタ値をもつ、ステッ
プコードに付属してパイプラインの各ステージを流れる
プログラムカウンタ値はステッププログラムカウンタ 
(Sl)C)と呼ぶ、 spc はパイプラインステー
ジを次々と受は渡されていく。
(3,2)各パイプラインステージの処理名パイプライ
ンステージの入出カステップコードには第3図に示した
ように便宜上名前が付けられている。またステップコー
ドはオペコードに関する処理を行い、マイクロIt O
Mのエントリ番地やEステージ(35)に対するパラメ
ータなどになる系列とEステージ(35)のマイクロ命
令に対するオペランドになる系列の2系列がある。
(3,2,1)命令フェッチステージ 命令フェッチステージ(Ifステージ(31) ”)は
命令をメモリやブランチバッファがらフェッチし、命令
キューに入力して、Dステージ(32)に対して命令コ
ードを出力する。命令キューの入力は整置された4バイ
ト単位で行う、メモリから命令をフェッチするときは整
置された4バイトにつき最小2クロックを要する。ブラ
ンチバッファがヒツトした時は整置された4バイトにっ
きlクロックでフェッチ可能である。命令キューの出力
単位はは2バイトごとに可変であり、2クロツクの間に
最大6バイトまで出力できる。また分岐の直後には命令
キューをバイパスして命令基本部2バイトを直接命令デ
コーダに転送することもできる。
ブランチバッファへの命令の登録やクリアなどの制御、
ブリフェッチ先命令アドレスの管理や命令;1−ニーの
制御もIPステージ(31)で行う。
11iステージ(31)で検出するIEITには命令を
メモリからフェッチするときのバスアクセス例外や、メ
モ、す保護違反などによるアドレス変換例外がある。
(3,2,2)命令デコードステージ 命令デコードステージ〔Dステ、−ジ(32)〕は!F
ステージ(31)から入力された命令コードをデコード
する。デコードは命令デコード部(52)のPl+−デ
コーダ、N F 11−デコーダ、アドレッシングモー
ドデコーダを使用して、2クロック単位に1度行ない、
1回のデコード処理で、0〜6バイトの命令コードを消
費する(IIET命令の復帰先アドレスを含むステップ
コードの出力などでは命令コードを消費しない)、1回
のデコードでAステージ(33)に対してアドレス計算
情報であるAコード(42)である約35ピントの制御
コードと1υ大32ビツトアドレス修飾情報と、オペコ
ードの中間デコード結果であるDコード結果であるDコ
ード(41)である約50ビツトの制御コードと8ビツ
トのリテラル情報と、を出力する。
Dステージ(32)では各命令のPC計3γ部(53)
の制御、分岐予測処理、プリブランチ命令に対するプリ
ブランチ処理、命令キューからの命令コード出力処理も
行う。
Dステージ(32)で検出するEITには予約命令例外
、プリブランチ時の奇数アドレスジャンプトラップがあ
る。また1、IFステージ(31)より転送されてきた
各種[![Tはステップコード内にエンコードする処理
をしてAステージ(33)に転送する。
(3,2,2)オペランドアドレス計算ステージオペラ
ンドアドレス計算ステージ(Aステージ(33) )は
処理が大きく2つに分かれる。1つは命令デコード部(
52)のデコーダ2を使用して、オペコードの後段デコ
ードを行う処理で、他方はオペランドアドレス計算部(
54)でオペランドアドレスの計17を行う処理である
オペコードの後段デコード処理はDコード(41)を入
力とし、レジスタやメモリの書き込み予約及びマイクロ
プログラムのエントリ番地とマイクロプログラムに対す
るパラメータなどを含むRコード(43)の出力を行う
、なお、レジスタやメモリの書き込み予約は、アドレス
計算で参照したレジスタやメモリの内容が、パイプライ
ン上を先行する命令で書き換えられ、誤ったアドレス計
算が行われるのを防ぐためのものである。レジスタやメ
モリの書き込み予約はデッドロックを避けるため、ステ
ップコードごとに行うのではなく命令ごとに行う、レジ
スタやメモリの口き込み予約については、 昭62−1
443’14で詳しく述べられている。
オペランドアドレス計算処理はへコード(42)を入力
とし、Aコード(42)に従いオペランドアドレス計算
部(54)で加算やメモリ間接参照を組み合わせてアド
レス計算を行い、その計算結果をFコード(44)とし
て出力する。この際、アドレス計算に伴うレジスタやメ
モリの読み出し時にコンフリクトヂエックを行い、先行
命令がレジスタやメモリに書き込み処理を終了していな
いためコンフリクトが指示されれば、先行命令がEステ
ージ(35)で占込み処理を終了するまで待つ、また、
オペランドアドレスやメモリ間接参照のアドレスがメモ
リにマツプされたI / O?iI域に入るかどうかの
子ェノクも行う。
へステージ(33)で検出するHITには予約命令外、
特)tt命令例外、バスアクセス例外、アドレス変換例
外、メモリ間接アドレッシングのときのオペランドブレ
イクポイントヒントによるデバッグトラップがある。D
コード(41)、Aコード(42)自体力([EITを
起こしたことを示しておれば、Aステージ(33)はそ
のコードに対してアドレス計算処理°をせず、そのHI
TをRコード(43)やFコード(44)に伝える。
(3,2,4)マイクロROMアクセスステージオペラ
ドフェνチステージ(Fステージ(34) )も処理が
大きく2つに分かれる。1つはマイクロROMのアクセ
ス処理であり、特にRステージ(36)と呼ぶ、他方は
オペランドプリフェッチ処理であり、特にOFステージ
(37)と呼ぶ。Rステージ(36)とOFステージ(
37)は必ずしも同時動作するわけではなく、メモリア
クセス権が獲得できるかどうかなどに依存して、独立に
動作する。
Rステージ(3G)の処理であるマイクロll0Mアク
セス処理はRコードに対して次のEステージでの実行に
使用する実行制御コードである。Eコードを作り出すた
めの7420120Mアクセスとマイクロ命令デコード
処理である。1つのRコードに対する処理が2つ以上の
マイクロプログラムステップに分解される場合、マイク
ロI?OMはEステージ(35)で使用され、次のRコ
ード(43)は マイクロROMアクセス待ちになる。
Rコード(43)に対するマイクロ150hアクセスが
行われるのはその前のEステージ(35)での最後のマ
イクロ命令実行の時である0本発明のデータ処理装置で
はほとんどの基本命令は1マイクロプログラムステツプ
行われるため実際にはRコード(43)に対するマイク
ロROMアクセスが次々と行われることが多い。
Rステージ(36)で新たに検出するBITはない。
Rコー、ド(36)が命令処理再実行型のHITを示し
ているときはそのHIT処理に対するマイクロプログラ
ムが実行されるのでRステージ(36)はそのRコード
(43)に従ったマイクロ命令をフェッチする。
Rコード(43)が奇数アドレスジャンプトラップを示
しているときRステージ(36)はそれをEコード(4
5)に伝える。これはプリブランチに対するもので、E
ステージ(35)ではそのEコード(45)で分岐が生
じなければそのプリブランチを存効として奇数アドレス
ジャンプトラップを発生する。
(3,2,5)オペランドフェッチステージオペランド
フェッチステージ(OFステージ(37) )はFステ
ージ(34)で行う上記の2つの処理のうちオペランド
プリフェッチ処理を行う。
オペランドプリフェッチはFコード(44)を入力とし
、フェッチしたオペランドとそのアドレスをS −] 
−1’(46)として出力する。1つのFコード(44
)ではワード境界をまたいでもよいが4バイト以下のオ
ペランドフェッチを指定する。Fコード(44)にはオ
ペランドのアクセスを行うがどうかの指定も含まれてお
り、Aステージ(33)で計算したオペランドアドレス
自体や即値をEステージ(35)に転送する場合にはオ
ペランドプリフェッチは行わず、Fコード(44)の内
容をSコード(46)として転送する。プリフェッチし
ようとするオペランドとEステージ(35)が書き込み
処理を行おうとするオペランドが一致するときは、オペ
ランドプリフェッチはメモリから行わず、バイパスして
行なう。
またI / OeH域に対してはオペランドプリフェッ
チを遅延させ、先行命令がすべて完了するまで待ってオ
ペランドフェッチを行う。
OFステージ(37)で尋灸出するl1lTにはバスア
クセス例外、アドレス変換例外、オペランドプリフェッ
チに対するブレイクポイントヒツトによるデバッグトラ
ンプがある。Fコード(44)がデバッグトラップ以外
のBITを示しているときはそれをSコード(46)に
転送し、オペランドプリフェッチは行わない、Fコード
(44)がデバッグトラップを示しているときはそのF
コード(44)に対してHITを示していないときと同
じ処理をすると共にデバッグトラップをSコード(46
)に伝える。
(3,2,6)実行ステージ 実行ステージ(Eステージ(35)〕はEコード(45
)、はSコード(46)を入力として動作する。このE
ステージ(35)が命令を実行するステージであり、F
ステージ(34)以前のステージで行われた処理はすべ
てEステージ(35)のための前処理である。
Eステージ(35)でジャンプ命令が実行されたり、E
I丁処理が起動されたりしたときは(IF)ステージ(
31)〜Fステージ(34)までの処理はすべて無効化
される。Eステージ(35)はマイクロプログラムによ
り制御され、Rコード(45)に示されたマイクロプロ
グラムのエントリ番地からの一連のマイクロプログラム
を実行することにより命令を実行する。
マイクロROMの読み出しとマイクロ命令の実行はパイ
プライン化されて行われる。従ってマイクロプログラム
で分岐が起きたときは1マイクロステツプの空きができ
る。また、Eステージ(35)はデータ演算部(56)
にあるストアバッファを利用して、4バイト以内のオペ
ランドストアと次のマイクロ命令実行をパイプライン処
理することもできる。
Eステージ(35)ではAステージ(33)で行ったレ
ジスタやメモリに対する貫き込み予約をオペランドの占
き込みの後、解除する。
また条件分岐命令がEステージ(35)で分岐を起こし
たときはその条件分岐命令に対する分岐予測が誤ってい
たのであるから分岐履歴の書換えを行う。
Eステージ(35)で検出されるBITにはバスアクセ
ス例外、アドレス変換例外、デバッグトラップ、奇数ア
ドレスジャンプトラップ、予約a能例外、不正オペラン
ド例外、予約スタックフォーマット例外、ゼロ除算トラ
ップ、無条件トラップ、条件トラップ、遅延コンテキス
トトラップ、外部割込、遅延割込、リセット割込、シス
テム障害がある。
Eステージ(35)で検出された[!I↑はずべてBI
T処理されるがEステージ以前(p■Fステージ(31
)〜Fステージ(34)の間で検出されRコード(43
)やSコード(46)に反映されているHITは必ずε
IT処理されるとは限らない、 1Fステージ(31)
〜Fステージ(34)の間で検出したが、先行の命令が
Eステージ(35)でジャンプ命令が実行されたなどの
原因でEステージ(35)まで到達しなかったBITは
すべてキャンセルされる。そのEFTを起こした命令は
そもそも実行されなかったことになる。
外部割込や遅延割込は命令の切れ目でEステージ(35
)で直接光は付けられ、マイクロプログラムにより必要
な処理が実行される。その他の各種BITも処理はマイ
クロプログラムにより行われる。
(3,3)各パイプラインステージの状態制御パイプラ
インの各ステージは入力ラッチと出力ラッチを持ら、他
のステージとは独立に動作することを基本とする。各ス
テージは1つ前に行った処理力q冬わり、その処理結果
を出力ラッチから次のステージの入力ラッチに転送し、
自分のステージの入力ランチに次の処理に必要な入力信
号がすべてそろえば次の処理を開始する。
つまり、各ステージは、1つ前段のステージから出力さ
れてくる次の処理に対する入力信号がすべて有効となり
、今の処理結果を後段のステージの入力ラッチに転送し
て出力ラッチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミン
グで入力信号がすべてそろっている必要がある。入力信
号がそろっていないと、そのステージは待ち状態(入力
待ち)になる。出力ランチから次のステージの入力ラッ
チへの転送を行うときは次のステージの入力ラッチが空
き状態になっている必要があり、次のステージの入力ラ
ッチが空きでない場合もパイプラインステージは待ち伏
c、(出力待ち)になる、必要なメモリアクセス権が獲
得できなかったり、処理しているメモリアクセスにウェ
イトが挿入されたり、その他のパイプラインコンフリク
トが生じると、各ステージの処理自体が遅延する。
(4)分岐命令の処理 本発明のデータ処理装置では上記に説明したように多段
のパイプライン処理を採用しているため分岐命令を実行
した際のオーバーヘッドが大きい。
このオーバーヘッドを小さくするため動的分岐予測処理
を行う、動的分岐予測処理は実行ステージで分岐を行う
代わりにデコードステージで分岐を行うことによりなる
べく早く分岐先命令を取り込むことを狙いとしている。
本発明のデータ処理装置に限らず、データ処理装置では
、一般に分岐命令が実行される頻度は大きく、動的分岐
予測処理による性能改善効果は大きい。
(4,1)分岐命令の種類 本発明のデータ処理装置では動的分岐予測処理を行う命
令をプリブランチ命令と呼ぶ、プリブランチ命令には無
条件分岐命令のように、動的な予測にかかわらず、必ず
分岐する命令も含む。
本発明のデータ処理装置がもつ分岐命令は分岐条件がス
タティックかダイナミックか及び分岐先がスタティック
かダイナミックかにより計4柾頚に分類できるが、本発
明のデータ処理装置ではこのうちつぎの2種類に分類さ
れる命令をプリブランチ命令とする。
第1の種類の分岐命令は分岐条件、分岐先ともスタティ
ックな命令である。この種の命令には無条件分岐命令(
IIRA )とサブルーチン呼び出し命令([1Srl
 )がある、第2の種類の分岐命令は分岐条件がダイナ
ミックで分岐先がスタティックな命令である、この種の
命令には条件分岐命令(Bcc) +ループ制御命令(
ACB)がある。
(4,2)分岐命令処理回路の機能構成第1図に本発明
のデータ処理装置の分岐命令処理回路の構成を示す、第
1図には命令フエンチ部(51)、命令デコード部(5
2)、pc計算部(53)、オペランドアドレス計算部
(54)、データ演算部(56)、外部バスインターフ
ェイス部(57)のそれぞれに含まれる回路の部分詳細
図と、アドレス出力回路(5日)、データ入出力回路(
59)よりなる。
命令デコード(111)  とpc加算23(132)
の入力側、アドレス加算器(124)の入力側は、ディ
スプレースメント値、分岐命令の変位値を転送するDI
SPバス(100)で結ばれている。命令デコード(1
11)  とアドレス加算器(124)の入力側はステ
ップコー]゛生成に使用した命令コード長、スタックブ
ツシュモードのときブリデクリメント値などを転送する
補正値バス(101)でも結ばれている。命令デコーダ
(111)  とPC加算器(132)の入力側はステ
ップコード生成に使用した命令コード長を転送する命令
長バス(101)でも結ばれている。レジスタファイル
(144)  とアドレス加算器(124)入力側はレ
ジスタファイル(144) に蓄えられているアドレス
値を転送するAバス(103) で結ばれている。  
命令デコーダ(111) には命令キエー(112)か
ら命令コードが入力され、分岐予測テーブル(113)
から分岐予測ビットが入力される。命令デコーダ(Il
l)の出力部には、分岐予測結果により、条件分岐命令
の分岐条件指定フィールドを、Eステージ(35)にそ
のまま出力するか条件指定を反転して出力するかの選択
を行う、分岐条件生成回路(114)がある。
命令長バス(101)  の値とDISf’バス(10
0) の値のどちらか選択してを入力する被加算値選択
回路(13])の出力と、Dステージ(32)でデコー
ドした命令のPC(aを保持するDPC(135)また
はステップコードの切れ口毎の作業用PC値を保持する
TI’C(134)のどちらかと、はPC加算器(13
2)に入力される。
II C)JII 1’):器(132) の出力はp
c加算器出力ラッチ(133)を通してCAババス10
4)やPOババス105) に出力される。 poババ
ス105)  はランチTPC(134)、ラッチDP
C(135) 、Aステージで処理中の命令のPC値を
保持するラッチAPC(136)、さらに分岐予測テー
ブル(113)にも結合している。 TPC(134)
にはEステージ(35)で分岐やジャンプが生じたとき
、新たな命令番地を入力するため、CAババス103)
からの入力経路もある。
補正値バス(102)の出力とDISPバス(100)
の出力はディスプレースメント選択回路(122)に入
力され、どちらか一方がアドレス加算器(124)に入
力され、DISPバス(100)出力とAバス(103
)  出力はベースアドレス選択回路(123)に入力
され、どちらか一方がアドレス加算器(124) に入
力される。
アドレス加算器(124)は、ディスプレースメント選
択回路(122)の出力、ベースアドレス選択回路(1
23)の出力、それにへバス(103)より入力された
値をシフトすることにより、1倍、2倍、4倍、8倍の
値とするインデックス値生成回路(121) の出力、
の計3つの値を入力として、3値加算を行う。アドレス
加算器(124) の出力値はアドレス加算器出力ラン
チ(125) を通して、へ〇バス(106)に出力さ
れる。^0バス(106)  は、メモリ間接アドレッ
シングを行うとき、へへバス(107)を通してアドレ
ス出力回路(5B)からCPu外部にアドレス値を出力
するときそのアドレス値を保持するラッチI^(126
)と、Fステージでのオペランドブリフェッチ時に、A
Aババス107)を通してアドレス出力回路(58)か
らCPu外部にオペランドアドレス値を出力するとき、
そのオペランドアドレス保持するランチF^(127)
  と、につながる。
FA(127)は、アドレス加算1m(124)で計算
されたオペランドアドレスをEステージ(35)で使用
するためにオペランドアドレス値を保持するラッチSへ
(141)への出力経路ももつ、S八(141) はデ
ークロu′C7,部(56)ノ汎用テータパステアルS
ハス(109)への出力経路をもつ、命令のアドレスを
転送するCババス(104)  はPC加算出力ララッ
チ133)  と、Tr’C(13,I)と、命令フェ
ッチ部(51)がブリフェッチする命令コードの番地を
管理するカウンタQINf’C(115)と、命令フェ
ッチのためのアドレスをへへバス(l07)を通してア
ドレス出力回路(58)からCPu外部に出力するとき
その値を保持するラッチAA(142)と、Eステージ
(35)で分岐やジャンプが起きたときに新たな命令番
地をSバス(109)から入力するラッチ[!B(14
3)  と、に結合している。 APC(136)はA
バス(103) と、Fステージ(34)で処理中の命
令のpc値を保持するランチEPC(137)とに出力
経路がある。 EPC(137)はEステージ(35)
で処理中の命令のpc値を保持するラッチCPC(13
8)への出力経路をもつ、 CPC(138)はSバス
(109)  と分岐履歴書換えのためにpc値の最下
位バイトの値を保持するランチOr’C(139)とに
出力経路をもつ、レジスタファイル(144) は汎用
レジスタや作業用レジスタなどからなり、Sバス(10
9)  とAバス(103)への出力経路をもち、Dバ
ス(110)から入力経路を持つ、データ演1γ部(5
6)の演算機構であるデータ演算器(145)はSバス
(109)から入力経路を持ち、Dバス(110)への
出力経路を持つ。
(4,3)分岐予測方法 本発明のデータ処理装置では無条件分岐命令[IR八、
サブルーチン分岐命令BSR,ループ制御命令ACB 
3つの命令については、分岐予測テーブルの出力である
分岐予測ビットにかかわらず、必ず分岐すると予測する
BIIA、BSRに対してはこの予測は必ず正しい。
ACnはループ制御711変数に指定された値を加えて
、その結果がループ終了条件を満たすかどうかを判定し
、ループ終了条件を満たさなければ分岐し、満たせば分
岐しない命令である。従って、大多数のソフトウェアで
は八C[Iについてもこの子2111方法はかなりの6
′α率で正しい、また、ACnに対する本発明のデータ
処理袋;6の特徴的な処理を意識してソフトウェアを作
成すれば意識しない場合より効率的なプログラムを作成
することが可能である。
条件分岐命令Beeについては分岐するかしないかを過
去の履歴に従って判断する。履歴はRcc命令の1つ前
に実行した命令のアドレスの下位8ビツトのアドレスを
もとに行う。分岐予測は過去1回の分岐JIIl歴のみ
に従い、1ビツトで示される。
<4.4)分岐予測テーブルの構成 第4図に分岐予測テーブル(113)の詳細を示す。
poババス105) からの入カフビットと0PC(1
39)からの入カフビットはセレクタ(151)を通し
て、デコーダ(152)に入力される。デコーダ(15
2)では7ビントを128 ピントにデコードして12
8 ビットの分岐履歴うッチ(153)のうち1つを分
岐予測値として分岐予測出力ランチ(154)に出力す
る。128ビツトの分岐履歴ランチ(153) はクリ
ア信号(157)が入力されると一斉に値をゼロにして
「分岐しない」を示す0分岐側出力ラッチ(154)は
予測反転回路(155)によりその内容を反転して分岐
予測更新ランチ(156)に結合されている。
本発明のデータ処理装置では、Dステージ(32)でデ
コードしようとする命令の1つ前にDステージ(32)
でデコードされた命令のアドレスの下位8ビツトをもと
に分岐予測テーブル(113)を引いて分岐予測を行う
0分岐予測は過去1回の履歴のみに従ったダイレクトマ
ツピング方式で登録されている0本発明のデータ処理装
置では命令アドレスの最下位ビット(右側のビット)は
必ずゼロであるため分岐予測テーブル128 ビットで
構成されている。
分岐予測ビットを有効に使用するのはBee命令をデコ
ードするときのみであるが、分岐予測ビットは、使用す
るかどうかにかかわらず、すべての命令の命令コードと
共に命令デコーダに入力する。
このため分岐予測テーブル(113)の参照は、デコー
ドしようとする命令の1つ前の命令がデコードされてい
るときPC加算器(132)から出力されてくる1つ前
の命令のpc値の下位1バイト(最下位ビットは不要)
で行う、これにより、分岐予測ビットは、次のDステー
ジ処理の最初までに命令デコーダ(111)に入力され
る。
分岐予測テーブル(113)の分岐履歴はクリア信号(
157)により初期値をすべて「分岐しない」とできる
0分岐予測の更新はflee命令がEステージ(35)
で分岐したときに行われる。 1lcc命令がEステー
ジ(35)で分岐を起こしたとき、それはDステージ(
32)での分岐予測が間違っていたことを意味する。こ
のときEステージ(35)で分岐予測の更新(間違って
いた分岐履歴の反転)が行われる。Eステージ(35)
では0PC(139)の内容をデコーダ(152)に転
送し、そのデコード結果で対応する分岐Wfi歴う;チ
(153)の内容を分岐予測出力ラッチ(154)に読
み出す0次に、分岐予測出力ランチ(154)の内容が
反転された分岐予測更新ラッチ(156)の内容を、同
じ< 0PC(139)の値で示された分岐順歴ラッチ
<153)に書き戻す。
分岐予測は対象をなるBcc命令がデコードされる1つ
前にデコードされた命令のPC値をもとに行われるため
分岐予測テーブル(113)の更新もEステージ(35
)でacc命令の1つ前に実行された命令のPC値をも
とに行う、このためEステージ(35)では現在実行中
の命令の1つ前に実行した命令のpc値の下位1バイト
(最下位ビットは不要)を記憶しておく 0PC(13
9)があり、分岐予測テーブル<113)の更新はこの
値を用いて行う0分岐履歴の更新はEステージ(35)
でl1cc命令が分岐を起こしたときだけしか行われな
いため、Dステージ(32)の分岐予測テーブル(11
3)の参照動作がEステージ(35)の更新に妨げられ
ることはない、Eステージ(35)で分岐が起きた直後
はDステージ(32)はIPステージ(31)からの命
令コード待ち状態となる0分岐履歴の書換えは、この命
令コード待ち状態の間に行われる。
(4,5)PC計算部の動作 +IC計算部はDステージ(32)で命令コードがデコ
ードされるとき、1つ前にデコードされた命令コードの
長さin報とその1つ前にデコードされた命令コードの
先頭番地とからデコード中の命令コードの先頭番地を計
算する。 r’ci!+算部ではDPC(135)に命
令の切れ目のアドレスである命令のPC値を保持し、T
PC(134)にステップコードの切れ目のアドレスを
管理する。DPC(135)は命令の切れ目のアドレス
が計算されたときだけ書き換えられる。TPC(134
) はステップコードの切れ目のアドレス、つまり命令
デコード処理ごとに会き換えられる。パイプライン上で
処理されるステップコードのPC値はそのステップコー
ドのもとになった命令のPC値が必要であるため、Or
’C(135) 17)値力<AI’C(136)、E
PC(137)、CPC(138)と転送されていく。
命令のデコードは(3,1,2)の節で述べたようにス
テップコード単位に行われ、1回のデコード処理で0〜
6バイトの命令コードが消費される。命令デコード処理
ごとに判明したそのとき使用した命令コードの長さが命
令デコーダ(111)から命令長バス(101)に出力
される。
プリブランチしない場合、Dステージ(32)は引き続
く次の命令のデコード処理を行うと同時に、pc計算部
(53)で引き続く次の命令のpc値を計算するため、
TPC(134)の値と命令長バス(101)から転送
されたデコードで消費した命令コードの長さとの加算を
行いTPC(134)に加算結果を書き戻す。つまり、
あるステップコードの先頭アドレスはそのステップコー
ドがデコード処理により生成されたときに計算されるの
である。プリブランチ以外ではデコードすべき命令コー
ドは命令キュー(112)から次々と出力されるため、
デコード開始段階でそのコードの先頭アドレスを知る必
要はない。Dステージ(32)で生成したステップコー
ドが命令Aの最後のステップコードであるとき、次の命
令Bのデコード処理中に計算されるpc加算器(132
)の出力は、命令Bの先頭番地であり、命令BのPC値
であるから、pc加算器(132)の出力である命令B
のpc値はr+oバス(105)  からrpc(13
4)とDPC(135)の両方に書き込まれる。さらに
このときAステージ(33)が入力コード待ちで、AP
C(136)が至急必要とされてしするなら、poババ
ス105)から八PC(136)にも命令BOpc値が
書き込まれる。
プリブランチする場合、Dステージ(32)はプリブラ
ンチ命令の最後のステップコードを出力した後、命令デ
コーダ(111)の処理を止め、分岐先命令+7)II
c値を計1γするため、DPC(135)の値とDIS
F’ハス(100)より転送された分岐変位の加算を行
う。
さらに、!Fステージ(31)に初期化指示を出し、加
算結果テアル分岐命令(7)PC値をTPC(134)
とDI’C(135)に四き込むと共に、CAババス1
04)にも出力して口INIIC(115) 、CAA
(142)  にも■き込む。
プリブランチによる分岐先命令アドレス計算の際、奇数
アドレスジャンプトラップの検出も行ない、Dコード(
41)中にその結果をパラメータとして示す、Eステー
ジ(35)ではプリブランチが正しいと判明した時に、
奇数アドレスジャンプトラップを起動する。プリブラン
チが間違っていて、再びEステージ(35)で分岐が生
じたときはプリブランチで検出した奇数アドレスジャン
プトラップは無視される。こ・のため、Dステージ(3
2)で検出された奇数アドレスジャンプトラップはその
他のE!Tとは別扱いとなっている。また、Eステージ
(35)では奇数アドレスジャンプトラップの起動処理
に奇数となった命令アドレスの値を必要とする。
このため、Dステージ(32)は奇数アドレスジャンプ
トラップの検出を行ったとき、その奇数アドレス値をP
C値とした特殊はステップコード(0^JTステツプコ
ード)を発生する0^JTステツプコードに対してAス
テージ(33)、Fステージ(34)はそのコードを次
のステージに伝える。Eステージ(35)はプリブラン
チが正しいと判断し、しかもそのプリブランチが奇数ア
ドレスジャンプトラップを検出、しているとき、Cr’
C(138)を通して次に転送されてくる0AJTステ
ツプコードのPC値を使用して奇数アドレスジャンプト
ラップの起動処理を行う。
Eステージ(35)で分岐が生じたときは分岐先アドレ
スがEB(143) からCAババス104) を通じ
てTPC(134)に転送に転送されてくる。pc計算
部(53)はこの値とゼロを加算して結果をPOババス
105)からTI’C(134)、[]PC(135)
に書き込む、これでpc計算部(53)の初期化が完了
する。この初期化の処理はEステージ(35)で分岐が
生じた最初の単位デコード処理とオーバーラツプしてな
される。なお、QINPC(115)、Cへ^(142
)  にはCババス(104)  よりTI’C(13
4)に値を取り込む際に同じ値がセットされる。
(4,7)プリブランチ命令に対するオペランドアドレ
ス計算部の動作 プリブランチ命令に対して、Dステージ(32)がプリ
ブランチ処理を行わなかった場合、オペランドアドレス
計算部(54)がブリブランチ命令の分岐先アドレスを
計算する0分岐先アドレスの計算は、Aバス(103)
  より転送されてくる八PC(136)の値と[11
51’バス(100)より転送されてくる分岐変位値を
アドレス加算器(124)で加算することにより行われ
る。計算された分岐先アドレスはEステージ(35)に
伝えられる。Aステージ(33)で、オペランドアドレ
ス計算部(54)を使用した分岐先アドレスの計算の際
は、奇数アドレスジャンプトラップの検出は行わない、
Eステージ(35)に転送される分岐先アドレスが奇数
であることにより、奇数アトレースジャンプトラップの
情報が伝えられるのである〉Dステージ(32)がプリ
ブランチ処理をした場合、11cc命令、へCB命令に
対しては、Aステージ(33)がそのプリブランチ命令
に引き続くアドレスにある次の命令のpc値を計算する
。計算結果はEステージ(35)に伝えられ、プリブラ
ンチが間違っていたときの再度の分岐先アドレスとして
使用される。
Bee命令など、Dステージ(32)で1ステツプコー
ドにデコードされる命令に対しては、Aバス(104)
より転送されてくるAPC(136)の値に補正値バス
(102)から転送されて<jBcc命令の命令長を加
算して、加算結果をへ〇バス(106) よりFA(1
27) に書き込む、ステップコードが2つ以上に分か
れるフォーマントをもつ^CB命令に対してはりISP
バス(Ioo) より転送れてくる最後のステップコー
ドの先頭アドレスであるTPC(134)の値と補正値
バス(102)から転送されてくる最後のステップコー
ドのデコードで使用した命令コードの長さを加算して、
加算結果をへOバス(106) よりFA(127) 
に書き込む。
BSR命令についてはプリブランチは必ず正しいわけで
あるが、リターンアドレスとして8SR命令のアドレス
が必要なためオペランドアドレス計算部(54)でアド
レス計算を行う、 ll5R命令のフォーマ、トは第3
3図に示す、第33図で#dSはBSRの分岐変位を3
2ビツトの2進数で指定するフィールドであるBSRD
ステージ(32)で1ステツプコードにデコードされる
命令であり、Bcc と同様にAバス(103) より
転送されてくる八PC(13G)の値と補正値バス(1
02)より転送されてくるnsRの命令長との加算を行
う、また、BSHの命令に対するリターンアドレス計算
の手法はTI?AP (無条件トラップ)命令と丁RA
P/cccc (条件トラップ)命令でも使用される。
TRAP^命令、TRAP/cccc命令もDステージ
(32)で1ステンプコードにデコードされる命令あり
、Bcc と同様に7ドレツシングモード指定フイール
ドを待たず、オペランドアドレス計算部(54)はこれ
らの命令のオペランドアドレスの計算は行わない。TR
AP八命令へTRAP/cccc命令のフォーマントは
第34図に示す。第34図で(301) はTRAP八
命令へフォーマット、(302) はTRAP/ccc
c命令のフォーマットである。第34図で#d4はTR
APII 命令のベクトル値指定フィールドであり、c
ccc(303)はトップ条件指定フィールドであるT
RAPA 、 TRAP/ccccではオペランドアド
レスの計算を行わないかわりに、これらの命令のPC値
であるAPC(13G)と補正値バス(102)より転
送されてくるこれらの命令の命令長との加算を行う。
(4,8)各分岐命令の処理方法の詳細本発明のデータ
処理装置がプリブランチを行う命令についてここでまと
める。
(4,8,1)BII八命へ BRA命令は無条件分岐命令であり、実行されると必ず
分岐を起こす。
1目昌命令は必ず分岐を起こすためDステージ(32)
では分岐子7Itqビットによらず必ず分岐すると判断
してプリブランチ処理をする。へステージ(33)、F
ステージ(34)では[lRA命令はそのまた転送され
、EIT検出があったどうかを示すフラッグとPC値だ
けがBステージ(35)に転送されていく。Eステージ
(35)に転送されてい<、Eステージ(35)ではI
IR八に対して分岐処理しない。
(4,8,2)[lSR命令 [ISR命令はサブルーチン分岐命令であり、実行され
ると[1S11の次のアドレスにある命令のPC値をス
タックにブツシュして、必ず分岐を起こす。命令フォー
マットは第33図に示されている。
asp命令は必ず分岐を起こすためDステージ(32)
では分岐予測ビットによらず必ず分岐すると判…iして
プリブランチ処理をする。Aステージ(33)ではAI
’C(136)と[1SIlの命令長を加算してサブル
ーチンからのリターンアドレスを計算する。計算された
リターンアドレスはnsr+のオペランドとじてEステ
ージ(35)に渡される。Eステージ(35)ではBS
R命令に対してリターンアドレスをスタックにブツシュ
し、分岐処理しない。
(4、8、3) [lcc命令 [1cc命令は条件分岐命令で、命令フォーマントは第
35図に示す0分岐条件cccc (304) は4ビ
ツトのフォーマットである。分岐条件は第35図の分岐
条件cccc(304)の最下位ビットがrOJかrl
Jかにより、分岐条件を正反対にするようになっている
。#dSは分岐変位を32ビツトの2進数で指定するフ
ィールドである。
11 c c命令は分岐確率は過去の実行履歴にかなり
依存するため、Dステージ(32)では分岐予測テーブ
ル(113)から出力される分岐予測ビットの値に従い
、分岐するかどうかを判断する。 l1cc命令の分岐
確率の実行履歴依存性についても上記のJ。
K、  F 、 Lee、 A、 J 、 Sm1th
、 rBrancb Prediction Stra
tegies and Branch TarBat 
Bufrar DesighJ 、[IEEIE Co
mputer、 Vol、 17. No、 1. J
anuary+1984、  で詳しく述べれれている
分岐予測ビットが「分岐する」を示している場合にはD
ステージ(32)でプリブランチ処理を行う。
プリブランチが行われた場合には、分岐条件生成回路(
114)で第35図の分岐条件cccc(304)の最
下位ビットが反転されてEステージ(35)に渡される
ため、Eステージ(35)ではDステージ(32)でプ
リブランチ処理が行われたかどうかにかかわらず、渡さ
れた分岐条件に従いBcc命令を実行すればよい、もし
Eステージ(35)でl1cc命令が分岐を起こした場
合には、Dステージ(32)での分岐予測が誤っていた
わけであるから、分岐予測テーブル(11β)をアクセ
スし、0PC(139)で示される場所の分岐子Wll
l Ia!歴の反転を行う0分岐駅歴の更新はEステー
ジ(35)で[lcc命令が分岐を起こしたときだけし
か行われないため、Dステージ(32)の分岐予測テー
ブル(113)の参照動作がEステージ(35)の更新
に妨げられることはない、Eステージ(35)で分岐が
起きた直後はDステージ(32)はIFステージ(31
)からの命令コード待ら状態となる0分岐履歴の書換え
は、この命令コード待ち状態の間に行われる。
Bcc命令がプリブランチ時に奇数アドレスジャンプト
ラップを検出しており、Eステージ(35)で分岐を起
こさなかったときは奇数アドレスジャンプトランプを起
動する* Bcc命令がプリブランチ時に奇数アドレス
ジャンプトラップを検出していてもEステージ(35)
で再び分岐を起こしたときはプリブランチ時の奇数アド
レスジャンプトラップ検出は無視される。この機能によ
り分岐処理を行わないBcc命令の実行により、奇数ア
ドレスジャンプトラップが検出されることはなくなる。
(4,8,4)へCO命令 MCII命令はループのプリミティブとして使用される
命令である。 ACBはループ制御変数を増加して、比
較し、条件ジャンプを行う命令である。
八CBのフォーマットは第36図に示す、第36図でR
aRは一般形のアドレッシングモードでループflJl
 ?Il変数に加1γする値を指定するフィールド、E
a9xは一般形アドレッシングモードでループ制御変数
の比較対象値を指定するフィールド、RBIIXはルー
プ制御n変数の存在する汎用レジスタ番号を指定するフ
ィール1゛、# ds8は分岐変位を8ビツトの2進数
で指定するフィールドである0MCIIはDステージ(
32)で3ステツプコ一ド以上に分解されてパイプライ
ン上を流れる命令である。
ACn命令は分岐する確率が高いため本発明のデータ処
理装置ではこの命令に対して分岐予測ピントにかかわら
ず、分岐すると判断してプリブランチ処理を行う。
この命令はステップコードが3つ以上(多段間接アドレ
ッシングモードが含まない場合に3つ)になるため、プ
リブランチ処理を最後のステップコードをDステージ(
32)が出力するとき行う。Dステージ(32)ではΔ
COのPC値である旧’C(135)の内容と命令デコ
ーダ(111)から1)ISPバス(100)を通して
出力される分岐変位を加算することにより、プリブラン
チ処理を行う、Aステージ(33)ではプリブランチが
間違っていたときにそなえ、AC[l命令の次のアドレ
ス命令のr’c(aを計算するとき、TPC(134)
からDISPバス(100)を通して転送された最後の
ステップコードのデコードに使用した命令コードの先頭
番地と、補正値バス(102)を通して転送された最後
のステップコードのデコードに使用した命令コードの長
さを加算する。
この命令に対してはDステージ(32)で必ずプリブラ
ンチが行われているので、Eステージ(35)では、分
岐条件の判断を常に逆に行う、プリブランチ処理が誤っ
ていた場合、Eステージ(35)で分岐が起こる。しか
し、この命令は分岐予測テーブル(113)に従ってプ
リブランチをするものではないので、プリブランチが間
違っていた場合でも分岐ff歴の書換えは行わない。
またはこの命令に対してDステージ(32)でのプリブ
ランチ時に奇数アドレスジャンプ例外が検出されたとき
その検出は[lcc命令と同様にパラメータでEステー
ジ(35)に伝えられる。Eステージ(35)に伝えら
れた奇数アドレスジャンプトラ・ノブはやはりBcc命
令と同様にEステージ(35)で分岐が行われたときに
は起動されず、分岐が行われなかったときに起動される
。この機能により分岐処理を行わな&lCB命令の実行
により、奇数アドレスジ+ンフ゛トラフブが46出され
ることはなくなる。
(5)本発明の他の実施例 上記の実施例では、デコーダ(111)からpc計算部
(53)やオペランドアドレス計算部(54)に、命令
デコードに使用した命令コードの長さを転送するために
、補正値バス(102)と命令長バス(101)の2つ
のバス用いているが、例えば補正値バス(lQ2)から
pc計算部(53)への入力経路を設けて、命令長バス
<101)を廃止してもよい。
また、上記の実施例ではへCB命令のプリブランチ処理
でTPC(134) ノ値を[11SPハス(102)
を通して、オペランドアドレス計算部(54)に転送す
る例を述べたが、コノTPC(134) ノ値の転送L
j: A ハス(103)で行ってもよい。
〔発明の効果〕
本発明のデータ処理装置では上記のように1ステツプコ
ードで処理されるnRA命令、[lSR命令、[1cc
命令に対しても複数のステップコードになるへCO命令
に対してもDステージ(32)で分岐処理を行うので、
多くの分岐命令に対してパイプライン処理の乱れを少な
くできる。
第7図にプリブランチを行う本発明のデータ処理装置で
プリブランチ命令が実行された場合に、パイプライン中
を流れる命令の様子を示す。第7図では命令3及び命令
12は分岐命令であり、本発明のデータ処理装置のプリ
ブランチ処理の対象になる命令である。
命令3がDステージ(32)でデコードされ、ブリブラ
ンチすると判断されると、Dステージ(32)では次に
pc計算部(53)で分岐先命令のpc値を計算する0
次に分岐先命令力月Fステージ(31)によりフェッチ
され、パイプライン処理対象が早期に命令11に切り替
わる。命令4は処理キャンセルされる。
Dステージ(32)、IPステージ(31)がプリブラ
ンチ処理を行っている間もパイプライン上を先行する命
令1や命令2は処理を続行する。結果、命令3がEステ
ージ(35)で処理されてから2命令処理分の時間後に
命令11がEステージ(35)で処理される。これは、
第6図に示すように、プリブランチ処理を行わない従来
のデータ処理装置で無駄時間が4命令処理分であったの
に比べ、本発明のデータ処理袋;αが無駄時間を半減し
ていることを意味する。
このようにプリブランチはデータ処理装置の高速化に非
常に有効な技術であり、なるぺ(多くの分岐命令に対し
てプリブランチを行うことが重要である0本発明では、
pc計算部(54)とオペランドアドレス計算部(54
)にわずかなハードウェアの迫力1jだけで、lステッ
プコードで処理されるIll?All5R命令命令に対
しても複数ステップコードになるACn命令に対しても
プリブランチ処理を行うことを可能にし、処理速度が大
幅に高速化されたデータ処理装置を得ている。
また、分岐予測テーブルの四換えをBcc命令に対して
Eステージ(35)で分岐が行われたとき、次<7)D
ステージ(32)で分岐予測テーブル(113)のアク
セスが必要になるまでに、分岐r−歴の更新を行うこと
が可能であり、Dステージ(32)とEステージ(35
)が分岐予測テーブル(113)のアクセスの競合でパ
イプライン処理が滞ることによるデータ処理装置の処理
速度低下を防ぐことができる。
【図面の簡単な説明】
第1図は本発明のデータ処理装置の分岐命令処理回路の
図、第2図は本発明のデータ処理装置の全体ブロック図
、第3図は本発明のデータ処理装置のパイプラインステ
ージ概要図、第4図は本発明のデータ処理装置の分岐予
測テーブル詳細図、第5図は従来のデータ処理装置のパ
イプラインステージ概要図、第6図は従来のデータ処理
装置での分岐命令処理の様子を示す図、第7図は本発明
のデータ処理袋;dでの分岐命令処理の様子を示す図、
第8図は本発明のデータ処理装置のメモリ上での命令の
並び方を示す図、第9図から第17図は本発明のデータ
処理装置の命令フォーマットの図、第18図から第31
図は本発明のデータ処理装置のアドレッシングモードの
説明図、第32図は本発明のデータ処理装置の命令フォ
ーマントの特徴を示す図、第33図はll5R命令のフ
ォーマント図、第34図はTRAPA 、 TRAf’
 / cccc命令のフォーマント図、第35図はBc
c命令のフォーマット図、第36図はACn命令のフォ
ーマット図である。 (52)は命令デコード部、(53)はPC計3γ部、
(54)はオペラン1゛アドレス計算部、(56)はデ
ータ演算部、(100)  はD I 311バス、(
102)  は補正値バス、(103)はへバスを示す
。 代理人   大  岩  増  雄 第4図 第7図 1F  償1鞍@3@4 術II # @13  匈1
俊D  侶j@2拘直1 ■IT帽に1柑IA   射
1 @2@3   @n @t2F       併1
82 倍3    射tr @tzE     鼾南浦
3t工間竹・・締2綺闇 第8図 (アドレス〉 第9図 第10図 第11図 第12図 byte:       N−f2   、、 、  
 N+2M−I第24図 (Sh)   区■画口 (Fa)ロE工戸口 第2j図 (sh)   −丁■口 (EΔ)口惚T−一 第26図 (Fa)   l  gl−一ニク1勿1号ヨニニニニ
3    、r工I/Fk=It=、  FME第27
図 ((h)4TEEJJJJ  E、7二う?勿ス号丁ヲ
肌二二]    −二号孕1(H二]@a)     
0000     trI I    EX!i at
eニア1コ−IME   、、、:13−’p−ef7
ニニニニ1第28図 (Sh)     E■[[]5でフ:][二二山1更
3JE二二丁]  ・ 7Eニラゴスロダ!己)ニニニ
[](Ea)   Q豆4「=[7ヌで丁]  S1ヱ
ヨ遍顧二X〕 ・ ・「ニニQ乏(1ヨΩ丹二二二]第
29図 byte:    0 [([]=P号1==■コ囚I了蓚アnり三==]:二
二l−二百、−−二]11  r−−1 1J   l   、J 昧 巴 巳  味 0 ↓ 巳  派 C巳麻 ○ Q
 Q ○  6000 こ/第30図 第31図 第32図 第33図 OOフ010t0       10171111  
              #dS第34図 ロ■ロ■口]腐灰コ ロ亙==エゴ門ヨコ 第3j図 00cccc+0     11110+10    
       1fds第36図

Claims (3)

    【特許請求の範囲】
  1. (1)命令をデコードするデコード機構〔命令デコード
    部(52)〕と、 プログラムカウンタ値を計算する第1の計算機構〔PC
    計算部(53)〕と、 オペランドアドレスを計算する第2の計算機構〔オペラ
    ンドアドレス計算部(54)〕と、オペランドに対して
    演算を行う演算機構〔データ演算部(56)〕と、 上記デコード機構から上記第1の計算機構に条件分岐命
    令(Bcc命令〕の分岐変位を転送する第1のバス〔D
    ISPバス(100)〕と、上記第1の計算機構から命
    令のプログラムカウンタ値を上記第2の計算機構に転送
    する第2のバス〔Aバス(103)〕と、 上記デコード機構から上記第2の計算機構にデコードし
    た命令の命令長を転送する第3のバス〔補正値バス(1
    02)〕と、を備え、 上記第1の計算機構で上記条件分岐命令のプログラムカ
    ウンタ値と上記第1のバスで転送した上記条件分岐命令
    の分岐変位を加算し、 上記第2の計算機構で上記第2のバスで転送した上記条
    件分岐命令のプログラムカウンタ値と上記第3のバスで
    転送した上記条件分岐命令の命令長を加算することを特
    徴とするデータ処理装置。
  2. (2)分岐命令(ACB命令〕を2回以上の複数回の単
    位デコード処理に分けてデコードするデコード機構〔命
    令デコード部(52)〕と、 上記デコード機構が単位デコード処理する命令コードの
    切れ目のアドレス値を保持する第1のラッチ〔TPC(
    134)〕と、上記デコード機構がデコードする命令の
    プログラムカウンタ値を保持する第2のラッチ〔DPC
    (135)〕と、上記第1のラッチと上記第2のラッチ
    のどちらかの内容を選択的に第1の入力とする加算器〔
    PC加算部(132)〕とをもち、プログラムカウンタ
    値を計算する第1の計算機構〔PC計算部(53)〕と
    、 オペランドアドレスを計算する第2の計算機構〔オペラ
    ンドアドレス計算部(54)〕と、オペランドに対して
    演算を行う演算機構〔データ演算部(56)〕と、 上記デコード機構から上記第1の計算機構に上記分岐命
    令の分岐変位を転送する第1のバス〔DISPバス(1
    00)〕と、 上記デコード機構から上記第2の計算機構に上記複数回
    の単位デコード処理の最後の単位デコード処理で上記デ
    コード機構がデコードした命令コードの長さを転送する
    第2のバス〔補正値バス(102)〕と、を備え、 上記第1の計算機構で上記第2のラッチの内容と上記第
    1のバスから転送された上記分岐命令の分岐変位を加算
    し、 上記第2の計算機構で上記第1の計算機構より転送され
    た上記第1のラッチの内容と上記第2のバスから転送さ
    れた上記命令コードの長さを加算することを特徴とする
    データ処理装置。
  3. (3)条件分岐命令の分岐履歴を保持する分岐履歴テー
    ブル〔分岐予測テーブル(113)〕と、命令のデコー
    ドと、条件分岐命令に対して上記分岐履歴テーブルの出
    力に従い、第1の分岐処理〔プリブランチ〕を行うかま
    たは上記第1の分岐処理を行わないがどちらかの動作と
    、を行う機能をもつ第1のパイプラインステージ〔Dス
    テージ(32)〕と、 条件分岐命令に対する分岐条件に従い、第2の分岐処理
    〔Eステージでのブランチ〕を行うかまたは上記第2の
    分岐処理を行わないかどちらかの動作と、を行う機能を
    もつ第2パイプラインステージ〔Eステージ(35)〕
    と、 をパイプライン動作させる機能と、を備え、上記第2の
    パイプラインステージは、 上記第2の分岐処理が行われたとき上記分岐履歴テーブ
    ルをアクセスして分岐履歴を更新し、上記第2の分岐処
    理が行われなかったときは上記分岐履歴テーブルのアク
    セスを行わず、上記第1のパイプラインステージが上記
    分岐履歴テーブルをアクセスすることを妨げない、 動作をすることを特徴とするデータ処理装置。
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 true JPH01214931A (ja) 1989-08-29
JPH0769808B2 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)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5434583A (en) * 1977-08-24 1979-03-14 Bunji Hagiwara Electrode for measuring percutaneous oxygen
JPS58125148A (ja) * 1982-01-15 1983-07-26 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 条件付きブランチ命令の予測装置
JPS61253541A (ja) * 1985-05-07 1986-11-11 Hitachi Ltd 命令処理装置
JPS6254342A (ja) * 1985-08-30 1987-03-10 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法
JPS62226232A (ja) * 1986-03-28 1987-10-05 Toshiba Corp 分岐先アドレス算出回路

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5434583A (en) * 1977-08-24 1979-03-14 Bunji Hagiwara Electrode for measuring percutaneous oxygen
JPS58125148A (ja) * 1982-01-15 1983-07-26 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 条件付きブランチ命令の予測装置
JPS61253541A (ja) * 1985-05-07 1986-11-11 Hitachi Ltd 命令処理装置
JPS6254342A (ja) * 1985-08-30 1987-03-10 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法
JPS62226232A (ja) * 1986-03-28 1987-10-05 Toshiba Corp 分岐先アドレス算出回路

Also Published As

Publication number Publication date
JPH0769808B2 (ja) 1995-07-31

Similar Documents

Publication Publication Date Title
JP2761688B2 (ja) データ処理装置
JPH0766324B2 (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
JPH03185530A (ja) データ処理装置
JPH01214932A (ja) データ処理装置
JPH0810428B2 (ja) データ処理装置
JP3543181B2 (ja) データ処理装置
JPH081599B2 (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
JPH07120284B2 (ja) データ処理装置
JP3345787B2 (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) デ―タ処理装置
JPH01214931A (ja) データ処理装置
JPH0769806B2 (ja) データ処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JPH0225932A (ja) データ処理装置
JPH01214933A (ja) データ処理装置
JPH0769802B2 (ja) データ処理装置
JPH0218621A (ja) データ処理装置
JP2928879B2 (ja) データ処理装置
JPH0769804B2 (ja) データ処理装置
JPH0769805B2 (ja) データ処理装置
JPH0769803B2 (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