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

データ処理装置

Info

Publication number
JPH01214932A
JPH01214932A JP63040026A JP4002688A JPH01214932A JP H01214932 A JPH01214932 A JP H01214932A JP 63040026 A JP63040026 A JP 63040026A JP 4002688 A JP4002688 A JP 4002688A JP H01214932 A JPH01214932 A JP H01214932A
Authority
JP
Japan
Prior art keywords
instruction
branch
stage
exception
code
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
JP63040026A
Other languages
English (en)
Other versions
JPH081602B2 (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 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, 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)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明はパイプラインの乱れを少なし、不要な例外処
理を起動することもない分岐命令処理機構により、多段
パイプライン処理機構を効率的に動作させ、高い処理能
力を実現したデータ処理装置に関するものである。
〔従来の技術〕
第5図に従来のデータ処理装置で行われていたパイプラ
イン処理機構の例を示す。(11)は命令フェッチステ
ージ(IFステージ)、(12)は命令デコードステー
ジ(Dステージ)、(13)はオペランドアドレス計算
ステージ(Aステージ)、(14)はオペランドフェッ
チステージ(FステージL(15)は命令実行ステージ
(Eステージ)である。
IFステージ(11)はメモリから命令コードをフェッ
チしてDステージ(12)に出力する。Dステージ(1
2)はI’Fステージ(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はキャンセルされ、新たに命令1
1がIFステデー(11)から処理される。命令3がE
ステージ(15)で実行されてから命令11がEステー
ジ(15)で実行されるまでには4命令処理分の時間が
無駄になる。命令12についても同様に4命令処理分の
時間が無駄になる。この無駄時間は分岐命令の実行後に
処理すべき命令のフェッチが分岐命令に対する全パイプ
ライン処理が終了した後に行われるためであり、パイプ
ライン処理の段数が多いほどこの無駄時間も長くなる。
パイプライン処理を行うデータ処理装置では分岐命令の
処理が処理能力向上の1つの大きなキーポイントである
ことは従来より指摘されており、様々な工夫がすでに行
われている。分岐命令の処理に対する工夫は例えばJ、
 K、 Fs Lee、 A、 L Sm1th *r
 Branch Prediction Strate
gies and Branch Target Bu
fferDesignj 、 IEEE Comput
er、 Vol、 1?、Nn 1. January
、 1984゜で紹介されている。しかし、いずれの工
夫も実現に多大のハードウェアを必要としたり、一部の
分岐命令のみにしか効果がないなど、まだまだ欠点を多
く残すものであった。
特に分岐処理に伴う例外に関して正しい処理を行うこと
を保証して、かつ効率的な分岐処理を行うものはなかっ
た。
〔課題を解決するための手段〕
本発明のデータ処理装置では上記の欠点を解決するため
、条件分岐命令は履歴に依存して、その他の命令は命令
コードに依存して分岐を予測することが可能な命令デコ
ード機構と、分岐先アドレスを計算することが可能なプ
ログラムカウンタ値計算機構と、分岐命令の命令長と分
岐命令のプログラムカウンタ値を加算することが可能な
オペランドアドレス計算機構とをもつ。さら1こ、命令
デコード機構での分岐で検出された例外に関する情報を
命令実行機構に伝える機構と、間違った分岐予測に従う
分岐処理による例外は起動せず、正しい分岐処理による
例外は起動する命令実行機構をもつ。
〔作用〕
本発明のデータ処理装置では上記の、条件分岐命令は履
歴に依存して、その他の命令は命令コードに依存して分
岐を予測することが可能な命令デコード機構と、分岐先
アドレスを計算することが可能なプログラムカウンタ値
計算機構と、分岐命令の命令長と分岐命令のプログラム
カウンタ値を加算することが可能なオペランドアドレス
計算機構とにより、無条件分岐命令、ループ制御命令に
対して命令デコード段階で分岐処理を行い、パイプライ
ン処理の乱れを少なくする。
また、命令デコード段階での分岐で検出された例外は命
令実行段階まで起動を保留し、命令デコード段階での分
岐で検出された例外に対する情報を命令実行段階に伝え
、正しい分岐処理により検出されるべき例外に対してだ
け例外処理を起動する。
〔発明の実施例〕
(1)本発明のデータ処理装置の命令フォーマット本発
明のデータ処理装置の命令は16ビツト単位で可変長と
なっており、奇数バイト長の命令はない。
本発明のデータ処理装置では高頻度命令を短いフォーマ
ットとするため、特に工夫された命令フォーマット体系
をも一つ。例えば、2オペランド命令に対して、基本的
に4バイト+拡張部の構成をもち、すべてのアドレッシ
ングモードが利用できる一般形フオーマットと頻度の高
い命令とアドレッシングモードのみを使用できる短縮形
フォーマットの2つのフォーマットがある。
第8図から第17図に示す本発明のデータ処理装置の命
令フォーマット中に現われる記号の意味は次の通りであ
る。
m:オペコードの入る部分 #:リテラル、または即値の入る部分 Ea : 8ビツトの一般形のアドレッシングモードで
オペランドを指定する部分 Sh:6ビツトの短縮形のアドレッシングモードでオペ
ランドを指定する部分 Rn:レジスタ上のオペランドをレジスタ番号で指定す
る部分 フォーマットは、第8図に示すように右側がLSB側で
、かつ高いアドレスになっている。アドレスNとアドレ
スN+1の2バイトを見ないと命令フォーマットが判別
できないようになっているが、これは、命令が必ず16
ビツト(2バイト)単位でフェッチ、デコードされるこ
とを前提としたためである。
本発明のデータ処理装置では、いずれのフォーマットの
場合も、各オペランドのEaまたはshのの拡張部は、
必ずそのEaまたはshの基本部を含むハーフワードの
直後に置かれる。これは、命令により暗黙に指定される
即値データや、命令の拡張部に優先する。したがって、
4バイト以上の命令では、Eaの拡張部によって命令の
オペコードが分断される場合がある。
また、後でも述べるように、多段間接モードによって、
Eaの拡張部にさらに拡張部が付く場合にも、次の命令
オペコードよりもそちらの方が優先される。例えば、第
一ハーフワードにEalを含み、第二ハーフワードにE
a2を含み、第三ハーフワードまである6バイト命令の
場合を考える。Ealに多段間接モードを使用したため
、普通の拡張部のほかに多段間接モードの拡張部もつく
ものとする。
この時、実際の命令ビットパターンは、命令の第一ハー
フワード(Ealの基本部を含む)、Ealの拡張部、
Ealの多段間接モード拡張部、命令の第二ハーフワー
ド(Ea2の基本部を含む)、Ea2の拡張部、命令の
第三ハーフワード、の順となる。
(1,t )短縮形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図は即値−メモリ間演算命令のフォーマツ) C
I −forrnat )である。MMはオペランドサ
イズの指定フィールド(ソース、ディスティネーション
で共通)、Shはデスティネーションオペランドの指定
フィールドである。I−formatの即値のサイズは
、デスティネーシロン側のオペランドのサイズと共通に
8.16.32ビツトとなり、ゼロ拡張、符号拡張は行
なわれない。
(1,2)−膜形1オペランド命令 第13図は1オペランド命令の一般形フオーマット(G
 I−format )である。MMはオペランドサイ
ズの指定フィールドである。一部のG 1− form
at命令では、Eaの拡張部以外にも拡張部がある。ま
た、MMを使用しない命令もある。
(1,3)−膜形2オペランド命令 @14図から第16図は2オペランド命令の一般形フオ
ーマットである。このフォーマットに含まれるのは、8
ビツトで指定する一般形アドレッシングモードのオペラ
ンドが最大2つ存在する命令である。オペランドの総数
自体は3つ以上になる場合がある。
第14図は第一オペランドがメモリ読みだしを必要とす
る命令のフォーマット(G −format )である
EaMはデスティネーションオペランドの指定フィト、
MMはデスティネーションオペランドサイズの指定フィ
ールド、EaRはソースオペランド指定フィールド、R
Rはソースオペランドサイズの指定フィールドである。
一部のG −forma を命令では、EaMやEaR
の拡張部以外にも拡張部がある。
第15図は第一オペランドが8ビツト即値の命令のフォ
ーマット(): −format )である。EaMは
デスティネーションオペランドの指定フィールド、MM
はデスティネーションオペランドサイズの指定フィール
ド、#はソースオペランド値である。
E −formatとI −formatとは機能的に
は似たものであるが、考え方の点では大きく違っている
。E−formatはあくまでも2オペランド−段形(
G −format )の派生形であり、ソースオペラ
ンドのサイズが8ビツト固定、ディスティネーションオ
ペランドのサイズがs/16/32ビツトから選択とな
っている。つまり、異種サイズ間の演算を前提とし、デ
スティネーションオペランドのサイズに合わせて8ビツ
トのソースオペランドがゼロ拡張または符号拡張される
。一方、I −formatは、特に転送命令、比較命
令で頻度の多い即値のパターンを短縮形にしたものであ
り、ソースオペランドとディスティネーションオペラン
ドのサイズは等しい。
第16図は第一オペランドがアドレス計算のみの命令の
フォーマット(GA −format )である。Ea
Wはデスティネーシぢンオペランドの指定フィールド、
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 : 1
6とdisp : 32は、それぞれ、16ビツトのデ
ィスプレースメント値、32ビツトのディスプレースメ
ント値を示す。ディスプレースメント値は符号付きとし
て扱う。
即値モードは、命令コード中で指定されるビットパタン
をそのまま2進数と見なしてオペランドする。フォーマ
ットは第21図に示す。innm dataは即値を示
す。imm dataのサイズは、オペランドサイズと
して命令中で指定される。
絶対モードは、アドレス値が16ビツトで示されるか3
2ビツトで示されるかにより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ビツトのディスプレースメント値、3
2ビツトのディスプレースメント値を示す。ディスプレ
ースメント値は符号付きとして扱う。PC相対間接モー
ドにおいて参照されるプログラムカウンタの値は、その
オペランドを含む命令の先頭アドレスである。多段間接
アドレシングモードにおいてプログラムカウンタの値が
参照される場合にも、同じように命令先頭のアドレスを
PC相対の基準値として使用する。
スタックポツプモードはスタックポインタ(SP)の内
容をアドレスとするメモリの内容をオペランドとする。
オペランドアクセス後、SPをオペランドサイズだけイ
ンクリメントする。例えば、32ビツトデータを扱う時
には、オペランドアクセス後にSPが+4だけ更新され
る。B、Hのサイズのオペランドに対するスタックポツ
プモードの指定も可能であり、それぞれSPが+1.+
2だけ更新される。
フォーマットは第24図に示す。オペランドに対しスタ
ックポツプモードが意味を持たないものに対しては、予
約命令例外を発生する。具体的に予約命令例外となるの
は、writeオペランド、−read−m。
dify−Writeオペランドに対するスタックポツ
プモード指定である。
スタックブツシュモードはSPの内容をオペランドサイ
ズtごけデクリメントした内容をアドレスとするメモリ
の内容をオペランドとする。スタックブツシュモードで
はオペランドアクセス前にSPがデクリメントされる。
例えば、32ビツトデータを扱う時には、オペランドア
クセス前にSPが−4だけ更新される。B、Hのサイズ
のオペランドに対するスタックブツシュモードの指定も
可能であり、それぞれSPが−1,−2だけ更新される
。フォーマットは第25図に示す。オペランドに対して
スタックブツシュモードが意味を持たないものに対して
は、予約命令例外を発生する。具体的に予約命令例外と
なるのは、readオペランド、read−modif
y −writeオペランドに対するスタックブツシュ
モード指定である。
(1,4,2)多段間接アドレッシングモード複雑なア
ドレッシングも、基本的には加算と間接参照の組み合わ
せに分解することができる。したがって、加算と間接参
照のオペレーションをアドレッシングのプリミティブと
して与えておき、それを任意に組み合わせることができ
れば、どんな複雑なアドレッシングモードをも実現する
ことができる。本発明のデータ処理装置の多段間接アド
レッシングモードはこのような考え方にたったアドレッ
シングモードである。複雑なアドレッシングモードは、
モジュール間のデータ参照やAI言語の処理系に特に有
用である。
多段間接アドレッシングモードを指定するとき、基本ア
ドレッシングモード指定フィールドでは、レジスタベー
ス多段間接モード、PCベース多段間接モード、絶対ベ
ース多段間接モードの3種類の指定方法のうちいずれか
1つを指定する。
レジスタベース多段間接モードはレジスタの値を、拡張
する多段間接アドレッシングのベース値とするアドレッ
シングモードである。フォーマットは第26図に示す。
Rnは汎用レジスタの番号を示す。
PCベース多段間接モードはプログラムカウンタの値を
、拡張する多段間接アドレッシングのベース値とするア
ドレッシングモードである。フォーマットは第27図に
示す。
絶対ベース多段間接モードはゼロを、拡張する多段間接
アドレッシングのベース値とするアドレッシングモード
である。フォーマットは第28図に示す。
拡張する多段間接モード指定フィールドは、16ビツト
を単位としており、これを任意回繰り返す。
1段の多段間接モードにより、ディスプレースメントの
加算、インデクスレジスタのスケーリング(XI、 X
2. X4. X8 )と加算、メモリの間接参照、を
行なう。多段間接モードのフォーマ・ノドは第29図で
示す。各フィールドは以下に示す意味をもつ。
E=0:多段間接モード継続 E=1=アドレス計算終了 tmp ==>  address of opera
nd■=0:メモリ間接参照なし tmp + disp + Rx * 5cale =
=> tmp■=にメモリ間接参照あり mem(tmp + disp +Rx * 5cal
e )==> tmpM = 0 : <Rx>をイン
デクスとして使用M=1=特殊なインデクス <Rx> = Oインデクス値を加算しない(Rx=O
) <Rx> = 1  プログラムカウンタをインデクス
値として使用 (Rx=PC) <Rx) = 2〜reserved I)=O:多段間接モード中の4ビツトのフィールドd
4の値を4倍してディスプレースメント値とし、これを
加算する。d4は符号付きとして扱い、オペランドのサ
イズとは関係なく必ず4倍して使用する。
D=1=多段間接モードの拡張部で指定されたdisp
x(16/32ビツト)をディスプレースメント値とし
、これを加算する。
拡張部のサイズはd4フィールドで指定する。
d 4=OOO]  dispxは16ビツトd4=o
o10  dispxは32ビツトxX :インデクス
のスケール(5cale = 1/2/4/8 )プロ
グラムカウンタに対してX2、X4、X8のスケーリン
グを行なった場合には、その段の処理終了後の中間値(
tmp)として、不定値が入る。この多段間接モードに
よって得られる実効アドレスは予測できない値となるが
、例外は発生しない。プログラムカウンタに対するスケ
ーリングの指定は行なってはいけない。
多段間接モードによる命令フォーマットのバリエーショ
ンを第30図、第31図に示す。第30図は多段間接モ
ードが継続するか終了するかのバリエーションを示す。
第31図はディスプレーメントのサイズのバリエージぢ
ンを示す。
任意段数の多段間接モードが利用できれば、コンパイラ
の中で段数による場合分けが不要になるので、コンパイ
ラの負担が軽減されるというメリットがある。多段の間
接参照の頻度が非常に少ないとしても、コンパイラとし
ては必ず正しいコードを発生できなければならないから
である。このため、フォーマット上、任意の段数が可能
になっている。
(1,5)例外処理 本発明のデータ処理装置ではソフトウェア負荷の軽減の
ため、豊富な例外処理機能をもつ、本発明のデータ処理
装置では例外処理は、命令処理を再実行するもの(例外
)、命令処理を完了するもの(トラップ)、割込の3厘
類に分けて名称をつけている。また本発明のデータ処理
装置では、この3種の例外処理と、システム障害を総称
してEITと呼ぶ。
(2)機能ブロックの構成 @2図に本発明のデータ処理装置のブロック図を示す。
本発明のデータ処理装置の内部を機能的に大きく分ける
と、命令フェッチ部(51)、命令デコード部(52)
 、 PC計算部(53) 、オペランドアドレス計算
部(54)、マイクロROM部(55)、データ演算部
(56) 、外部バスインターフェイス部(57)に分
かれる。第2図では、その他にCPU外部にアドレスを
出力するアドレス出力回路(58)とCPU外部とデー
タの入出力を行うデータ入出力回路(59)を他の機能
ブロック部と分けて示した。
(2−1)命令フェッチ 命令フェッチ部(51)にはブランチバッファ、命令キ
ューとその制御部などがあり、次にフェッチすべき命令
のアドレスを決定して、ブランチバッファやCPU外部
のメモリから命令をフェッチする。
ブランチバッファへの命令登録も行う。
ブランチバッファは小規模であるためセレクティブキャ
ッシュとして動作する。ブランチバッファの動作の詳細
は特願昭61−202041で詳しく述べられている。
次にフェッチすべき命令のアドレスは命令キューに入力
すべき命令のアドレスとして専用のカウンタで計算され
る。分岐やジャンプが起きtこときには、新たな命令の
アドレスが、PC計算部(53)やデータ演算部(56
)より転送されてくる。
CPU外部のメモリから命令をフェッチするときは、外
部バスインターフェイス部(57)を通して、フェッチ
すべき命令のアドレスをアドレス出力回路(58)から
CPU外部に出力し、データ入出力回路(59)をから
命令コードをフェッチする。
バッファリングした命令コードのうち、命令デコード部
(52)で次にデコードすべき命令コードを命令デコー
ド部(52)に出力する。
(22)命令デコード部 命令デコード部(52)では基本的に16ビツト(ハー
フワード)単位に命令コードをデコードする。
このブロック疋は第1ハーフワードに含まれるオペコー
ドをデコードするFHWデコーダ、第2、第3ハーフワ
ードに含まれるオペコードをデコードするNF)IWデ
コーダ、アドレッシングモードをデコードするアドレッ
シングモードデコーダが含まれる。
さらにFHWデコーダやNFHWデコーダの出力をさら
にデコードして、マイクロROMのエンドリア〜ドレス
を計算するデコーダ2、条件分岐命令の分岐予測を行う
分岐予測機構、オペランドアドレス計算のときのパイプ
ラインコンフリクトをチエツクするアドレス計算コンフ
リクトチエツク機構も含まれる。
命令フェッチ部より入力された命令コードを2クロツク
につき0〜6バイトのデコードする。デコード結果のう
ち、データ演算部(56)での演算に関する情報がマイ
クロROM部(55)に、オペランドアドレス計算に関
係する情報がオペランドアドレス計算部(54)に、P
C計算に関係する情報がpc計算部(53)に、それぞ
れ出力される。
(2,3)マイクロROM部 マイクロROM部(55)には主にデータ演算部(56
)を制御するマイクロプログラムが格納されているマイ
クロROM、マイクロシーケンサ、マイクロ命令デコー
ダなどが含まれる。マイクロ命令はマイクロROMから
2クロツクに1度読み出される。マイクロシーケンサは
マイクロプログラムで示されるシーケンス処理の他に、
例外、割込、トラップ(この3つをあわせてEITと呼
ぶ)の処理をハードウェア的に受付ける。またマイクロ
ROM部はストアバッファの管理も行うつマイクロRO
M部には命令コードに依存しない割込みや演算実行結果
によるフラッグ情報と、デコーダ2の出力など命令デコ
ード部の出力が入力される。マイクロデコーダの出力は
主にデータ演算部(56)に対して出力されるが、ジャ
ンプ命令の実行による他の先行処理中止情報など一部の
情報は他のブロックへも出力される。
(2,4)オペランドアドレス計算部 オペランドアドレス計算部(54)は、命令デコード部
(52)のアドレスデコーダなどから出力されたオペラ
ンドアドレス計算に関係する情報によりハードワイヤー
ド制御される。このブロックではオペランドのアドレス
計算に関するほとんどの処理が行われる、メモリ間接ア
ドレシングのためのメモリアクセスのアドレスやオペラ
ンドアドレスがメモリにマツプされたI10領域に入る
かどうかのチエツクも行われる。
アドレス計算結果は外部バスインターフェイス部(57
)に送られる。アドレス計算に必要な汎用レジスタやプ
ログラムカウンタの値はデータ演算部より入力される。
メモリ間接アドレッシングを行うときは外部)<スイン
ターフェイス部(57)を通してアドレス出力回路(5
8)からCPU外部に参照すべきメモリアドレスを出力
し、データ入出力部(59)から入力された間接アドレ
ス値を命令デコード部(52)をそのまま通過させてフ
ェッチする。
(′2..5)PC計算部 PC計算部(53)は命令デコード部(52)から出力
されるPC計算に関係する情報でハードワイヤードに制
御され、命令のpc値を計算する。本特許のデータ処理
装置は可変長命令セットを持っており、命令をデコード
してみないとその命令の長さが判らない。pc計算部(
53)は、命令デコード部(52)から出力される命令
長をデコード中の命令のPC値に加算することによりつ
ぎの命令のPC値を作り出す。また、命令デコード部(
52)が、分岐命令をデコードしてデコード段階での分
岐を指示したときは命令長の代わりに分岐変位を分岐命
令のPC値に加算することにより分岐先命令のPC値を
計算する。分岐命令に対して命令デコード段階で分岐を
行うことを本発明のデータ処理装置゛ではプリブランチ
と呼ぶ。プリブランチの方法については特願昭61−2
04500と特願昭61−200557で詳しく述べら
れている。
PC計算部(53)の計算結果は各命令のpc値として
命令のデコード結果とともに出力されるほか、プリブラ
ンチ時には、次にデコードすべき命令のアドレスとして
命令フェッチ部に出力される。
また、次に命令デコード部(52)でデコードされる命
令の分岐予測のためのアドレスにも使用される。分岐予
測の方法については特願昭62−8394で詳しく述べ
られている。
(2,6)データ演算部 データ演算部(56)はマイクロプログラム1こより制
御され、マイクロROM部(55)の出力情報に従い、
各命令の機能を実現するに必要な演算をレジスタと演算
器で実行する。演算対象となるオペランドがアドレスや
即値の場合は、オペランドアドレス計運部(54)で計
算されたアドレスや即値を外部バスインターフェイス部
(57)を通過させて得る。また、演算対象となるオペ
ランドがCPU外部のメモリにあるデータの場合は、ア
ドレス計算部(54)で計算されたアドレスをバスイン
ターフェイス部(57)がアドレス出力回路(58)か
ら出力して、CPU外部のメモリからフェッチしたオペ
ランドをデータ入出力回路(59)から得る。
演算器としてはALU、バレルシフタ、プライオリティ
エンコーダやカウンタ、シフトレジスタなどがある。レ
ジスタと主な演算器の間は3バスで結合されており、1
つのレジスタ間演算を指示する1マイクロ命令を2クロ
、ツクサイクルで処理する。
データ演算のときCPU外部のメモリをアクセスする必
要がある時はマイクロプログラムの指示により外部バス
インターフェイス部(57)を通してアドレス出力回路
(58)からアドレスをCPU外部に出力し、データ入
出力回路(59)を通して目的のデータをフェッチする
CPU外部のメモリにデータをストアするときは外部バ
スインターフェイス部(57)を通してアドレス出力回
路(58)よりアドレスを出力すると同時に、データ入
出力回路(59)からデータをCPU外部に出力する。
オペランドストアを効率的に行うためデータ演算部(5
6)には4バイトのストアバッファがある。
ジャンプ命令の処理や例外処理などを行って新たな命令
アドレスをデータ演算部(56)が得たときはこれを命
令フェッチ部(51)とPC計算部(53)に出力する
(2,7)外部バスインターフェイス部外部バスインタ
ーフェイス部(57)は本特許のデータ処理装置の外部
バスでの通信を制御する。メモリのアクセスはすべてク
ロック同期で行われ、最小2クロックサイクルで行うこ
とができる。
メモリに対するアクセス要求は命令フェッチ部(51)
、アドレス計算部(54)、データ演算部(56)から
独立に生じる。外部バスインターフェイス部(57)は
これらのメモリアクセス要求を調停する。さらにメモリ
とCPtJを結ぶデータバスサイズである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ステージ(34)からEステージ(35)に渡される
情報は演算制御情報とリテラルなどを含むEコード(4
5)と、オペランドやオペランドアドレスなどを含むS
コード(46)との2つである。
Eステージ(35)以外のステージで検出されたEIT
はそのコードがEステージ(35)の到達するまではE
IT処理を起動しない。Eステージ(35)で処理され
ている命令のみが実行段階の命令であり、IFステデー
(31)〜Fステデー(34)で処理されている命令は
まだ実行段階に至っていないものである。従ってEステ
ージ(35)以外で検出されたEITは検出したことを
ステップコード中に記録して次のステージに伝えられる
のみである。
(31)パイプライン処理単位 (3,1,1)命令コードフィールドの分類本発明のデ
ータ処理装置のパイプライン処理単位は命令セットのフ
ォーマットの特徴を利用して決定されている。(1)の
節で述べたように、本発明のデータ処理装置の命令は2
バイト単位の可変長命令であり、基本的には(2バイト
の命令基本部+θ〜4バイトのアドレシング修飾部)を
1〜3回繰り返すことにより命令が構成されている。
命令基本部には多くの場合オペコード部とアドレッシン
グモード指定部があり、インデックスアドレシングやメ
モリ間接アドレッシングが必要なときにはアドレッシン
グ修飾部の代わりに(2バイトの多段間接モード指定部
子〇〜4バイトのアドレシング修飾部)が任意側付く。
また、命令により2または4バイトの命令固有の拡張部
が最後に付く。
命令基本部には命令のオペコード、基本アドレッシング
モード、リテラルなどが含まれる。アドレッシング修飾
部はディスプレースメント、絶対アドレス、即位、分岐
命令の変位のいずれかである。命令固有の拡張部にはレ
ジスタマツプ、I−format命令の即値指定などが
ある。第32図で本発明のデータ処理装置の基本的命令
フォーマットの特徴を示す。
(3,1,2)ステップコードへの命令の分解本発明の
データ処理装置では上記の命令フォーマットの特徴を生
かしたパイプライン処理を行う。
Dステージ(32)・では(2バイトの命令基本部+θ
〜4バイトのアドレッシング修飾部)、(多段間接モー
ド指定部子アドレッシング修飾部)または命令固有の拡
張部を1つのデコード単位として処理する。各回のデコ
ード結果をステップコードと呼び、Aステージ(33)
以降ではこのステップコードをパイプライン処理の単位
としている。ステップコードの数は命令ごとに固有であ
り、多段間接モード指定を行わないとき、1つの命令は
最小1個、最大3個のステップコードに分かれる。多段
間接モード指定があればそれだけステップコードが増え
る。ただし、これは後で述べるようにデコード段階のみ
である。
(3,1,3)プログラムカウンタの管理本発明のデー
タ処理装置のパイプライン上に存在するステップコード
はすべて別命台に対するものである可能性があり、プロ
グラムカウンタの値はステップコードごとに管理する。
すべてのステップコードはそのステップコードのもとに
なった命令のプログラムカウンタ値をもつ。ステップコ
ードに付属してパイプラインの各ステージを流れるプロ
グラムカウンタ値はステッププログラムカウンタ(SP
C)と呼ぶ。SPCはパイプラインステージを次々と受
は渡されていく。
(32)各パイプラインステージの処理名パイプライン
ステージの入出カステップコードには第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デー
1− ダ、NFHWデコータ、アドレッシングモードデ
コーダを使用して、2クロック単位に1度行ない、1回
のデコード処理で、0〜6バイトの命令コードを消費す
る(RET命令の復帰先アドレスを含むステップコード
の出力処理などでは命令コードを消費しない)。1回の
デコードでAステージ(33)に対してアドレス計算情
報であるAコード(42)である約35ビツトの制御コ
ードと最大32ビツトアドレス修飾情報と、オペコード
の中間デコード結果であるDコード(41)である約5
0ビツトの制御コードと8ビツトのリテラル情報と、を
出力する。
Dステージ(32)では各命令のPC計算部(53)の
制御、分岐予測処理、プリブランチ命令に対するプリブ
ランチ処理、命令キューからの命令コード出力処理も行
う。
Dステージ(32)で検出するEITには予約命令例外
、プリブランチ時の奇数アドレスジャンプトラップがあ
る。また、IFステデー(31)より転送されてきた各
種EITはステップコード内にエンコードする処理をし
てAステージ(33)に転送する。
(3,2,3)オペランドアドレス計算ステージオペラ
ンドアドレス計算ステージ(Aステージ(33)〕は処
理が大きく2つに分かれる。1つは命令デコード部(5
2)のデコーダ2を使用して、オペコードの後段デコー
ドを行う処理で、他方はオペランドアドレス計算部(5
4)でオペランドアドレスの計算を行う処理である。
オペコードの後段デコード処理はDコード(41)を入
力とし、レジスタやメモリの書き込み予約及びマイクロ
プログラムのエントリ番地とマイクロプログラムに対す
るパラメータなどを含むRコード(43)の出力を行う
。なお、レジスタやメモリの書き込み予約は、アドレス
計算で参照したレジスタやメモリの内容が、パイプライ
ン上を先行する命令で書き換えられ、誤ったアドレス計
算が行われるのを防ぐためのものである。レジスタやメ
モリの書き込み予約はデッドロックを避けるため、ステ
ップコードごとに行うのではなく命令ごとに行つ。レジ
スタやメモリの書き込み予約については特願昭62−1
44394で詳しく述べられている。
オペランドアドレス計算処理はAコード(42)を入力
とし、Aコード(42)に従いオペランドアドレス計算
部(54)で加算やメモリ間接参照を組み合わせてアド
レス計算を行い、その計算結果をFコード(44)とし
て出力する。この際、アドレス計算に伴うレジスタやメ
モリの読み出し時にコンフリクトチエツクを行い、先行
命令がレジスタやメモリに書き込み処理を終了していな
いためコンフリクトが指示されれば、先行命令がEステ
ージ(35)で書き込み処理を終了するまで待つ。また
、オペランドアドレスやメモリ間接参照のアドレスがメ
モリにマツプされたI10領域に入るかどうかのチエツ
クも行う。
Aステージ(33)で検出するBITには予約命令例外
、特権命令例外、バスアクセス例外、アドレス変換例外
、メモリ間接アドレッシングのときのオペランドブレイ
クポイントヒントによるデバッグトラップがある。Dコ
ード(41)、Aコード(42)自体がEITを起こし
たことを示しておれば、Aステージ(33)はそのコー
ドに対してアドレス計算処理をせず、そのEITをRコ
ード(43)やFコード(44)に伝える。
(3しnマイクロROMアクセスステージオペランドフ
ェッチステージ(Fステージ(34)〕も処理が大きく
2つに分かれる。1つはマイクロROMのアクセス処理
であり、特にRステージ(36)と呼ぶ。他方はオペラ
ンドプリフェッチ処理であり、特にOFステデー(37
)と呼ぶ。Rステージ(36)とOFステデー(37)
は必ずしも同時に動作するわけではなく、メモリアクセ
ス権が獲得できるかどうかなどに依存して、独立に動作
する。
Rステージ(36)の処理であるマイクロROMアクセ
ス処理はRコードに対して次のEステージでの実行に使
用する実行制御コードであるEコードを作り出すための
マイクロROMアクセスとマイクロ命令デコード処理で
ある。1つのRコードに対する処理が2つ以上のマイク
ロプログラムステップに分解される場合、マイクロRO
MはEステージ35)で使用され、次のRコード(43
)はマイクロROMアクセス待ちになる。Rコード(4
3)に対するマイクロROMアクセスが行われるのはそ
の前のEステージ(35)での最後のマイクロ命令実行
の時である。
本発明のデータ処理装置ではほとんどの基本命令は1マ
イクロプログラムステツプ行われるため実際にはRコー
ド(43)に対するマイクロROMアクセスが次々と行
われることが多い。
Rステージ(36)で新たに検出するEITはない。
Rコード(36)が命令処理再実行型のEITを示して
いるときはそのEIT処理に対するマイクロプログラム
が実行されるのでRステージ(36)はそのRコード(
43)に従ったマイクロ命令をフェッチする。
Rコード(43)が奇数アドレスジャンプトラップを示
しているときRステージ(36)はそれをEコード(4
5)に伝える。これはプリブランチに対するもので、E
ステージ(35)ではそのEコード(45)で分岐が生
じなければそのプリブランチを有効として奇数アドレス
ジャンプトラップを発生する。
(3,2,5)オペランドフェッチステージオペランド
フェッチステージ(OFステデー(37)〕はFステー
ジ(34) ’r行う上記の2つの処理のうちオペラン
ドプリフェッチはFコード(44)を入力とし、フェッ
チしたオペランドとそのアドレスをSコード(46)と
して出力する。1つのFコード(44)ではワード境界
をまたいでもよいが4バイト以下のオペランドフェッチ
を指定する。Fコード(44)にはオペランドのアクセ
スを行うかどうかの指定も含まれており、Aステージ(
33)で計算したオペランドアドレス自体や即値をEス
テージ(35)に転送する場合にはオペランドプリフェ
ッチは行わず、Fコード(44)の内容をSコード(4
6)として転送する。プリフェッチしようとするオペラ
ンドとEステージ(35)が書き込み処理を行おうとす
るオペランドが一致するときは、オペランドプリフェッ
チはメモリから行わず、バイパスして行なう。またI1
0領域に対してはオペランドプリフェッチを遅延させ、
先行命令がすべて完了するまで待ってオペランドフェッ
チを行う。
OFステデー(37)で検出するEITにはバスアクセ
ス例外、アドレス変換例外、オペランドプリフェッチに
対するブレイクポイントヒツトによるデバッグトラップ
がある。Fコード(44)がデバッグトラップ以外のE
ITを示しているときはそれをSコード(46)に転送
し、オペランドプリフェッチは行わない。Fコード(4
4)がデバッグトラップを示しているときはその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はすべてBIT
処理されるがEステージ以前のIFステデー(31)〜
Fステデー(34)の間で検出されRコード(43)や
Sコード(46)に反映されているEITは必ずEIT
処理されるとは限らない。IFステデー(31)〜Fス
テデー(34)の間で検出したが、先行の命令がEステ
ージ(35)でジャンプ命令が実行されたなどの原因で
Eステージ(35)まで到達しなかったEITはすべて
キャンセルされる。そのEITを起こした命令はそもそ
も実行されなかったことになる。
外部割込や遅延割込は命令の切れ目でEステージ(35
)で直接受は付けられ、マイクロプログラムにより必要
な処理が実行される。その他の各種EITも処理はマイ
クロプログラムにより行われる。
(33)各パイプラインステージの状態制御パイプライ
ンの各ステージは入力ラッチと出力ラッチを持ち、他の
ステージとは独立に動作することを基本とする。各ステ
ージは1つ前【こ行った処理が終わり、その処理結果を
出力ラッチから次のステージの入力ラッチに転送し、自
分のステージの入力ラッチに次の処理に必要な入力信号
がすべてそろえば次の処理を開始する。
つまり、各ステージは、1つ前段のステージから出力さ
れてくる次の処理に対する入力信号がすべて有効となり
、今の処理結果を後段のステージの入力ラッチに転送し
て出力ラッチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミン
グで入力信号がすべてそろっている必要がある。入力信
号がそろっていないと、そのステージは待ち状態(入力
待ち)になる。出力ラッチから次のステージの入力ラッ
チへの転送を行うときは次のステージの入力ラッチが空
き状態になっている必要があり、次のステージの入力ラ
ッチが空きでない場合もパイプラインステージは待ち状
態(出力待ち)になる。必要なメモリアクセス権が獲得
できなかったり、処理しているメモリアクセスにウェイ
トが挿入されたり、その他のパイプラインコンフリクト
が生じると、各ステージの処理自体が遅延する。
(4)分岐命令の処理 本発明のデータ処理装置では上記に説明したように多段
のパイプライン処理を採用しているため分岐命令を実行
した際のオーバーヘッドが大きい。
このオーバーヘッドを小さくするため動的分岐予副処理
は実行ステージで分岐を行う代わりにデコードステージ
で分岐を行うことによりなるべく早く分岐先命令を取り
込むことを狙いとしている。
本発明のデータ処理装置に限らず、データ処理装置では
、一般に分岐命令が実行される頻度は大きく、動的分岐
予測処理による性能改善効果は大きい。
(4,1)分岐命令の種類 本発明のデータ処理装置では動的分岐予測処理を行う命
令をプリブランチ命令と呼ぶ。プリブランチ命令には無
条件分岐命令のように、動的な予、測にかかわらず、必
ず分岐する命令も含む。
本発明のデータ処理装置がもつ分岐命令は分岐条件がス
タティックかダイナミックか及び分岐先がスタティック
かダイナミックかにより計4種類に分類できるが、本発
明のデータ処理装置ではこのうちつぎの2種類に分類さ
れる命令をプリブランチ命令とする。
第1の種類の分岐命令は分岐条件、分岐先ともスタティ
ックな命令である。この種の命令には無条件分岐命令(
BRA)とサブルーチン呼び出し命令(BSR)がある
。第2の種類の分岐命令は分岐条件がダイナミックで分
岐先がスタティックな命令である。この種の命令には条
件分岐命令(Bcc)、ループ制御命令(ACB)があ
る。
(4,2)分岐命令処理回路の機能構成第1図に本発明
のデータ処理装置の分岐命令処理回路の構成を示す。第
1図には命令フヱッチ部(51)、命令デコード部(5
2)、PC計算部(53)、オペランドアドレス計算部
(54)、データ演算部(56)、外部バスインターフ
ェイス部(57)のそれぞれに含まれる回路の部分詳細
図と、アドレス出力回路(58)、データ入出力回路(
59)よりなる。
命令デコーダ(111)とPC加算器(132)の入力
側、アドレス加算器(124)の入力側は、ディスプレ
ースメント値、分岐命令の変位値を転送するDI SP
ババス100)で結ばれている。命令デコーダ(111
)とアドレス加算器(124)の入力側はステップコー
ド生成に使用した命令コード長、スタックブツシュモー
ドのときのブリデクリメント値などを転送する補正値バ
ス(101)でも結ばれている。命令デコーダ(111
)とPC加算器(132)の入力側はステップコード生
成に使用した命令コード長を転送する命令長バス(10
1)でも結ばれている。レジスタファイル(144)と
アドレス加算器(124)入力側はレジスタファイル(
144)に蓄えられているアドレス値を転送するAバス
(103)で結ばれている。
命令デコーダ(111)には命令キュー(112)から
命令コードが入力され、分岐予測テーブル(113)か
ら分岐予測ビットが入力される。命令デコーダ(111
)の出力部には、分岐予測結果により、条件分岐命令の
分岐条件指定フィールドを、Eステージ(35)にその
まま出力するか条件指定を反転して出力するかの選択を
行う、分岐条件生成回路(114)がある。
命令長バス(101)の値とDISPバス(100)の
値のどちらか選択して入力する被加算値選択回路(13
1)の出力と、Dステージ(32)でデコードした命令
のPC値を保持するD p C(135)またはステッ
プコードの切れ日毎の作業用PC値を保持するTPC(
134)のどちらかと、PC加算器(132)に入力さ
れる。PC加算器(132)の出力はPC加算器出力ラ
ッチ(133)を通してCAババス104)やPOババ
ス105)に出力される。
POババス105)はラッチTPC(134)、ラッチ
DPC(135χAステージで処理中の命令のPC値を
保持するラッチArc(136)、さらに分岐予測テー
ブル(113)にも結合している。TPC(134)に
はEステージ(35)で分岐やジャンプが生じたとき、
新たな命令番地を入力するため、CAババス1o3)か
らの入力経路もある。
補正値バス(102)の出力とDISPバス(100)
の出力はディスプレースメント選択回路(122)に入
力され、どちらか一方がアドレス加算器(124)に入
力される。
DISPバス(100)出力とAバス(103)出力は
ベースアドレス選択回路(123)に入力され、どちら
か一方がアドレス加算器(124)に入力される。アド
レス加算器(124)は、ディスプレースメント選択回
路(122)の出力、ベースアドレス選択回路(123
)の出力、それにAバス(103)より入力された値を
シフトすることにより、1倍、2倍、4倍、8倍の値と
するインデックス値生成回路(121)の出力、の計3
つの値を入力として、3値加算を行う。アドレス加算器
(124)の出力値はアドレス加算器出力ラッチ(12
5)を通して、AOババス106)に出力される。AO
ババス 106)は、メモリ間接アドレッシングを行う
とき、AAパス(107)を通してアドレス出力回路(
58)からCPU外部にアドレス値を出力するときその
アドレス値を保持するラッチI A (126)と、F
ステージでのオペランドブリフェッチ時に、AAババス
107)を通してアドレス出力回路(58)からCPU
外部にオペランドアドレス値を出力するとき、そのオペ
ランドアドレス保持するラッチF A (127)と、
つながる。
F A (127)と、アドレス加算器(124)で計
算されたオペランドアドレスをEステージ(35)で使
用するためにオペランドアドレス値を保持するラッチ5
A(141)への出力経路ももつ。S A (141)
はデータ演算部(56)の汎用データバスであるSバス
(109)への出力経路をもつ。命令のアドレスを転送
するCAババス104)はPC加算器出力ラッチ(13
3)と、TPC(134)と、命令フェッチ部(51)
がプリフェッチする命令コードの番地を管理するカウン
タQINPC(115)と、命令フェッチのためのアド
レスをAAババス107)を通してアドレス出力回路(
58)からCPU外部に出力するときその値を保持する
ラッチCAA (142)と、Eステージ(35)で分
岐やジャンプが起きたときに新たな命令番地をSバスH
o9)から入力するラッチEB(143)と、に結合し
ている。APC(136)はAバス(1o3)と、Fス
テージ(34)で処理中の命令のPC値を保持するラッ
チFPC(137)とに出力経路がある。FPC(13
7)はEステージ(35)で処理中の命令のPC値を保
持するラッチCPC(138)への出力経路をもつ。C
PC(138)はSバス(109)と、分岐履歴書換え
のためにPC値の最下位バイトの値を保持するラッチ0
PC(139)とに出力経路をもつ。レジスタファイル
(144)は汎用レジスタや作業用レジスタなどからな
り、Sバス(109)とAバス(103)への出力経路
をもち、Dバス(110)から入力経路を持つ、データ
演算部(56)の演算機構であるデータ演算器(145
)はSバス(109’)から入力経路をもち、Dバス(
110)への出力経路を持つ。
(4,3)分岐予測方法 本発明のデータ処理装置では無条件分岐命令BRA、サ
ブルーチン分岐命令BSR,ループ制御命令ACB、 
 3つの命令については、分岐予測テーブルの出力であ
る分岐予測ビットにかかわらず、必ず分岐すると予測す
る。BRA、 BSHに対してはこの予測は必ず正しい
ACBはループ制御変数に指定された値を加えてその結
果がループ終了条件を満たすかどうかを判定し、ループ
終了条件を満たさなければ分岐し、満たせば分岐しない
命令である。従って、大多数のソフトウェアではACB
についてもこの予測方法はかなりの確率で正しい。また
、ACHに対する本発明のデータ処理装置の特徴的な処
理を意識してソフトウェアを作成すれば意識しない場合
より効率的なプログラムを作成することが可能である。
条件分岐命令Bccについては分岐するかしないかを過
去の履歴に従って判断する。履歴はBcc命令の1つ前
に実行した命令のアドレスの下位8ビツトのアドレスを
もとに行う。分岐予測は過去1回の分岐履歴のみに従い
、1ビツトで示される。
(4,4)分岐予測テーブルの構成 第4図に分岐予測テーブル(113)の詳細を示す。
poババス105)からの入カフビットと0PC(13
9)からの入カフビットはセレクタ(151)を通して
、デコーダ(152)に入力される。デコーダ(152
)では7ビツトを128ビツトにデコードして128ビ
ツトの分岐履歴ラッチ(153)のうち1つを分岐予測
値として分岐予測出力ラッチ(154)に出力する。1
28ビツトの分岐履歴ラッチ(153)はクリア信号(
157)が入力されると一斉に値をゼロにして「分岐し
ない」を示す。
分岐予測出力ラッチ(154)は予測反転回路(155
)によりその内容を反転して分岐予測更新ラッチ(15
6)に結合されている。
本発明のデータ処理装置では、Dステージ(32)でデ
、コードしようとする命令の1つ前にDステージ(32
)でデコードされた命令のアドレスの下位8ビツトをも
とに分岐予測テーブル(113)を引いて分岐予測を行
う。分岐予測は過去1回の履歴のみに従ったダイレクト
マツピング方式で登録されている。本発明のデータ処理
装置では命令アドレスの最下位ビット(右端のビット)
は必ずゼロであるため分岐予測テーブルは128ビツト
で構成されている。
分岐予測ビットを有効に使用するのはBcc命令をデコ
ードするときのみであるが、分岐予測ビットは、使用す
るかどうかにかかわらず、すべての5命令の命令コード
と共に命令デコーダに入力する。
このため分岐予測テーブル(113)の参照は、デコー
ドしようとする命令の1つ・前の命令がデコードされて
いるときPC加算器(132)から出力されてくる1つ
前の命令のPC値の下位1バイト(最下位ビットは不要
)で行う。これにより、分岐予測ビットは、次のDステ
ージ処理の最初までに命令デコーダ(01)に入力され
る。
分岐予測テーブル(113)の分岐履歴はクリア信号(
157)により初期値をすべて「分岐しない」とできる
。分岐予測の更新はBcc命令がEステージ(35)で
分岐したときに行われる。Bcc命令がEステージ(3
5)で分岐を起こしたとき、それはDステージ(32)
での分岐予測が間違っていたことを意味する。
このときEステージ(35)で分岐予測の更新(間違っ
ていた分岐履歴の反転)が行われる。Eステージ(35
)では0PC(139)の内容をデコーダ(152)に
転送し、そのデコード結果で対応する分岐履歴ラッチ(
153)の内容を分岐予測出力ラッチ(154)に読み
出す。
次に、分岐予測出力ラッチ(154)の内容が反転され
た分岐予測更新ラッチ(156)の内容を、同じ< o
pc(139)の値で示された分岐履歴ラッチ(153
)に書き戻す。
分岐予測は対象となるBcc命令がデコードされる1つ
前にデコードされた命令のPC値をもとに行われるため
分岐予測テーブル(113)の更新もEステージ(35
)で、Bcc命令の1つ前に実行された命令のPC値を
もとに行うつこのためEステージ(35)では現在実行
中の命令の1つ前に実行した命令のPC値の下位1バイ
ト(最下位ビットは不要)を記憶しておく 0PC(1
39)があり、分岐予測テーブル(113)の更新はこ
の値を用いて行う。分岐履歴の更新はEステージ(35
)でBcc命令が分岐を起こしたときだけしか行われな
いため、Dステージ(32)の分岐予測テーブル(11
3)の参照動作がEステク流)の更新に妨げられること
はない。Eステージ(35)で分岐が起きた直後はDス
テージ(32)はIFステデー(31)からの命令コー
ド待ち状態となる。分岐履歴の書換えは、この命令コー
ド待ち状態の間に行われる。
(4,5)PC計算部の動作 PC計算部はDステージ(32)で命令コードがデコー
ドされるとき、1つ前にデコードされた命令コードの長
さ情報とその1つ前にデコードされた命令コード先頭番
地とからデコード中の命令コードの先頭番地を計算する
。PC計算部ではD P C(135)に命令の切れ目
のアドレスである命令のPC値を保持し、TPC(13
4)にステップコードの切れ目のアドレスを管理する。
DPC(135)は命令の切れ目のアドレスが計算され
たときだけ書き換えられる。TP C(134)はステ
ップコードの切れ目のアドレス、つまり命令デコード処
理ごとに書き換えられる。
パイプライン上で処理されるステップコードのPC値は
そのステップコードのもとになった命令のPC値が必要
であルタめ、DPC(135)(7)値がAPC(13
6/)、FPC(137)、CPC(138)と転送さ
れていく。
命令のデコードは(3,1,2)の節で述べたようにス
テップコード単位に行われ、1回のデコード処理でO〜
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値はPOババス105)からTPC(134)とD
PC(135)の両方に書き込まれる。さらにこのとき
Aステージ(33)が入力コード待ちで、APC(13
6)が至急必要とされているなら、POパス(105)
からAPC(136)にも命令BOPC値が書き込まれ
る。
プリブランチする場合、Dステージ(32)はプリブラ
ンチ命令の最後のステップコードを出力した後、命令デ
コーダ(Ul)の処理を止め、分岐先命令のPC値を計
算するため、DPC(135)の値とDISPバス(1
00)より転送された分岐変位の加算を行う。
さらに、IFステデー(31)に初期化指示を出し、加
算結果である分岐命令のPC値をTP C(134)と
DPC(135)に書き込むと共に、CAババス104
)にも出力してQINPC(115)、 CAA(14
2)にも書き込む。
プリブランチによる分岐先命令アドレス計算の際、奇数
アドレスジャンプトラップの検出も行ない、Dコード(
41)中にその結果をパラメータとして示す。Eステー
ジ(35)ではブリブランチが正しいと判明した時に、
奇数アドレスジャンプトラップを起動する。プリブラン
チが間違っていて、再びEステージ(35)で分岐が生
じたときはプリブランチで検出した奇数アドレスジャン
プトラップは無視される。このため、Dステージ(32
)で検出された奇数アドレスジャンプトラップはその他
のEITとは別扱いとなっている。また、Eステージ(
35)では奇数アドレスジャンプトラップの起動処理に
奇数となった命令アドレスの値を必要とする。
このため、Dステージ(32)は奇数アドレスジャンプ
トラップの検出を行ったとき、その奇数アドレス値をP
C値とした特殊なステップコード(OAJTステップコ
ード)を発生する。0AJTステツプコードに対してA
ステージ(33)、Fステージ(34)はそのコードを
次のステージに伝える。Eステージ(35)はプリブラ
ンチが正しいと判断し、しかもそのプリブランチが奇数
アドレスジャンプトラップを検出しているとき、CPC
(138)を通して次に転送されてくるOAJ Tステ
ップコードのPC値を使用して奇数アドレスジャンプト
ラップの起動処理を行う。
Eステージ(35)で分岐が生じたときは分岐先アドレ
スがEB(143)からCAババス104)を通じてT
PC(134)に転送されてくる。PC計算部(53)
はこの値とゼロを加算して結果をPOババス105)か
らTPO(134)、DPC(135)に書き込む。こ
れでPC計算部(53)の初期化が完了する。この初期
化の処理はEステージ(35)で分岐が生じた最初の単
位デコード処理とオーバーラツプしてなされる。なお、
QINPC(115) 。
CAA(142)にはCAババス104)よりTPC(
134)に値を取り込む際に同じ値がセットされる。
(4,7)ブリブランチ命令に対するオペランドアドレ
ス計算部の動作 プリブランチ命令に対して、Dステージ(32)がブリ
ブランチ処理を行わなかった場合、オペランドアドレス
計算部(54)がプリブランチ命令の分岐先アドレスを
計算する。分岐先アドレスの計算は、Aバス(103)
より転送されてくるAPC(136)  の値とDIS
Pバス(100)より転送されてくる分岐変位値をアド
レス加算器(124)で加算することにより行われる。
計算された分岐先アドレスはEステージ(35)に伝え
られる。Aステージ(33)で、オペランドアドレス計
算部(54)を使用した分岐先アドレスの計算の際は、
奇数アドレスジャンプトラップの検出は行わない。Eス
テージ(35)に転送される分岐先アドレスが奇数であ
るととにより、奇数アドレスジャンプトラップの情報が
伝えられるのである。
Dステージ(32)がブリブランチ処理をした場合、B
cc命令、ACB命令に対しては、A7.テーラ(33
)がそのプリブランチ命令に引き続くアドレスにある次
の命令のPC値を計算する。計算結果はEステージ(3
5)に伝えられ、プリブランチが間違っていたときの再
度の分岐先アドレスとして使用される。Bcc命令など
、Dステージ(32)で1ステツプコードにデコードさ
れる命令に対しては、Aバス(104)より転送されて
くるAPC(136)の値に[Effaバス(102)
から転送されてくるBcc命令の命令長を加算して、加
算結果をAOババス106)よりF A (127)に
に書き込む。ステップコードが2つ以上に分かれるフォ
ーマットをもつACB命令に対してはDISPバス(1
00)より転送されてくる最後のステップコードの先頭
アドレスであるTPC(134)の値と補正値バス(1
02)から転送されてくる最後のステップコードのデコ
ードで使用した命令コードの長さを加算して、加算結果
をAOババス106)よりF A (127)に書き込
む。
BSR命令についてはプリブランチは必ず正しいわけで
あるが、リターンアドレスとしてBSR命令の次の命令
のアドレスが必要なためオペランドアトレア計算部(5
4)でアドレス計算を行う。BSR命令のフォーマット
は第33図に示す。第33図でadsはBSRの分岐変
位を32ビツトの2進数で指定するフィールドである。
BSRはDステージ(32)で1ステツプコードにデコ
ードされる命令であり、Bccと同様にAバス(103
)より転送されてくるAPC(136)の値と補正値バ
ス(102)より転送されてくるBSRの命令長との加
算を行う。また、BSR命令に対するリターンアドレス
計算の手法はTRAP (無条件トラップ)命令とTR
AP/cccc (条件トラップ)命令でも使用される
TRAPA命令、TRAP/cccc命令もDステージ
(32)で1ステツプコードにデコードされる命令あり
、BSRと同様にアドレッシングモード指定フィールド
を持たず、オペランドアドレス計算部(54)はこれら
の命令のオペランドアドレスの計算は行わない。TRA
PA命令とTRAP/cccc命令のフォーマットは第
34図に示す。第34図で(301)はTRAPA命令
のフォーマット、(302)はTRAP/cccc命令
のフォーマットである。第34図で#d4は’l’RA
PA命令のベクトル値指定フィールドであり、CCCC
(303)はトラップ条件指定フィールドである。TR
APA 1TRAP/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に対して分岐処理はしな0゜(4,8,2’
) BSR命令 BSR命令はサブルーチン分岐命令であり、実行される
とBSRの次のアドレスにある命令のPC値をスタック
にブツシュして、必ず分岐を起こす。
命令フォーマットは第33図に示されている。
BSR命令は必ず分岐を起こすためDステージ(32)
では分岐予測ピッNこよらず必ず分岐すると判断してプ
リブランチ処理をする。Aステージ(33)ではAPC
(136)とBSRの命令長を加算してサブル−チンか
らのリターンアドレスを計算する。計算されたリターン
アドレスはBSHのオペランドとしてEステージ(35
)に渡される。Eステージ(35)ではBSR命令に対
してリターンアドレスをスタックにブツシュし、分岐処
理はしない。
(4,8゜3)Bcc命令 Bcc命令は条件分岐命令で、命令フォーマットは第3
5図に示す。分岐条件cccc (304)は4ビツト
のフィールドである。分岐条件は第35図の分岐条件C
CCC(304)の最下位ビットが「O」か「1」かに
より、分岐条件を正反対にするようになっている。
adsは分岐変位を32ビツトの2進数で指定するフィ
ールドである。
Bcc命令は分岐確立は過去の実行履歴にかなり依存す
るため、Dステージ(32)では分岐子、測テーブル(
113)から出力される分岐予測ビットの値に従い、分
岐するかどうかを判断する。Bcc命令の分岐確立の実
行履歴依存性についても上記のJ、K。
F、 Lee 、 A、 J、 Sm1th、 [Br
anch Prediction Strategie
sand、 Branch Target Buffe
r Design j 、 I EEE Comput
er 。
Vol 、 17. hh 1. January、 
1984.で詳しく述べられている。
分岐予測ビットが「分岐するjを示している場合にはD
ステージ(32)でプリブランチ処理を行う。
プリブランチが行われた場合には、分岐条件生成回路(
114)で第35図の分岐条件cccc (304)の
最下位ビットが反転されてEステージ(35)に渡され
るため、Eステージ(35)ではDステージ(32)で
プリブランチ処理が行われたかどうかにかかわらず、渡
された分岐条件に従いBcc命令を実行すればよい。も
しEステージ(35)で13cc命令が分岐を起こした
場合には、Dステージ(32)での分岐予測が誤ってい
たわけであるから、分岐予測テーブル(113)をアク
セスし、0PC(139)で示される場所の分岐予測履
歴の反転を行う。分岐履歴の更新はEステージ(35)
で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のフォーマッ
トは第36図に示す。第36図でEaRは一般形のアド
レッシングモードでループ制御変数に加算する値を指定
するフィールド、EaRXは一船形アトレシングモード
でループ制御変数の比較対象値を指定するフィールド、
RgM Xはループ制御変数の存在する汎用レジスタ番
号を指定するフィールド、#ds8は分岐変位を8ビツ
トの2進数で指定するフィールドである。ACBはDス
テージ(32)で3ステツプコ一ド以上に分解されてパ
イプライン上を流れる命令である。
ACB命令は分岐する確率が高いため本発明のデータ処
理装置ではこの命令に対して分岐予測ビットにかかわら
ず、分岐すると判断してプリブランチ処理を行う。
この命令はステップコードが3つ以上(多段間接アドレ
ッシングモードが含まない場合に3つ)になるため、プ
リブランチ処理を最後のステップコードをDステージ(
32)が出力するときに行う。
Dステージ(32)ではACBOPC値であるDPC(
135)の内容と命令デコーダ(111)からDI S
Pババス too )を通して出力される分岐変位を加
算することにより、プリブランチ処理を行う。Aステー
ジ(33)ではプリブランチが間違っていたときにそな
え、ACB命令の次のアドレス命令のPC値を計算する
とき、TPC(134)からDISPバス(100)を
通して転送された最後のステップコードのデコードに使
用した命令コードの先頭番地と、補正値バス(102)
を通して転送された最後のステップコードのデコードに
使用した命令コードの長さを加算する。
この命令に対してはDステージ(32)で必ずプリブラ
ンチが行われているので、Eステージ(35)では、分
岐条件の判断を常に逆に行う。プリブランチ処理が誤っ
ていた場合、Eステージ(35)で分岐が起こる。しか
し、この命令は分岐予測テーブル(113)に従ってプ
リブランチをするものではないので、プリブランチが間
違っていた場合でも分岐履歴の書換えは行わない。
またこの命令に対してDステージ(32)でのプリブラ
ンチ時に奇数アドレスジャンプ例外が検出されたときそ
の検出はBcc命令と同様にパラメータでEステージ(
35)に伝えられる。Eステージ(35)に伝えられた
奇数アドレスジャンプトラップはやはりBcc命令と同
様に、Eステージ(35)で分岐が行われたときには起
動されず、分岐が行われなかったときに起動される。こ
の機能により分岐処理を行わないACB命令の実行によ
り、奇数アドレスジャンプトラップが検出されることは
なくなる。
(5)本発明の他の実施例 上記の実施例では、命令デコーダ(111)からPC計
算部(53)やオペランドアドレス計算部(54)に、
命令デコードに使用した命令コードの長さを転送するた
めに、補正値バス(102)と命令長バス(101)の
2つのバスを用いているが、例えば補正値バス(162
)から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/ccc
c命令のフォーマット図、第35図はBcc命令のフォ
ーマット図、第36図はACB命令のフォーマット図で
ある。 (32)はDステージ、(35)はEステージ、(41
)(43)(45)は伝播機能、(113)は分岐予測
テーブルを示す。

Claims (3)

    【特許請求の範囲】
  1. (1)命令のデコードと、条件分岐命令に対して分岐予
    測機構〔分岐予測テーブル(113)〕の指示に従い、
    第1の分岐処理〔プリブランチ〕を行うかまたは上記第
    1の分岐処理を行わないかどちらかの動作と、上記第1
    の分岐処理を行うとき上記第1の分岐処理を行うことに
    よって発生する第1の例外の検出と、を行う機能をもつ
    第1のパイプラインステージ〔Dステージ(32)〕と
    、 条件分岐命令に対する分岐条件に従い、第2の分岐処理
    〔Eステージでのブランチ〕を行うかまたは上記第2の
    分岐処理を行わないかどちらかの動作と、上記第1の例
    外に対する例外処理の起動と、を行う機能をもつ第2パ
    イプラインステージ〔Eステージ(35)〕と、 をパイプライン動作させる機能と、 上記第1のパイプラインステージから上記第2のパイプ
    ラインステージに上記第1の例外の検出を伝える機能〔
    Dコード(41)、Rコード(43)、Eコード(45
    )の伝播機能〕と、 を備え、 上記第2のパイプラインステージは、 上記第1の例外の検出が伝えられ、かつ、上記第2の分
    岐処理が行われたときは上記例外処理の起動を行わず、 上記第1の例外の検出が伝えられ、かつ、上記第2の分
    岐処理が行われないときは、上記例外処理の起動を行う
    、 ことを特徴とするデータ処理装置。
  2. (2)命令のデコードと、命令の第1のオペランドをも
    との第1の値とは異なる第2の値に変更して上記第2の
    値と命令の第2のオペランドとの比較結果の真偽により
    条件分岐をする演算命令に対してつねに第1の分岐処理
    〔プリブランチ〕と、上記第1の分岐処理による第1の
    例外の検出と、を行う機能をもつ第1のパイプラインス
    テージ〔Dステージ(32)〕と、 上記演算命令に対して上記比較結果の真偽をつねに反転
    して判断した分岐条件に従い、第2の分岐処理〔Eステ
    ージでのブランチ〕を行うかまたは上記第2の分岐処理
    を行わないかどちらかの動作と、上記第1の例外に対す
    る例外処理の起動と、を行う機能をもつ第2パイプライ
    ンステージ〔Eステージ(35)〕と、 をパイプライン動作させる機能と、 上記第1のパイプラインステージから上記第2のパイプ
    ラインステージに上記第1の例外の検出を伝える機能〔
    Dコード(41)、Rコード(43)、Eコード(45
    )の伝播機能〕と、 を備え、 上記第2のパイプラインステージは、 上記第1の例外の検出が伝えられ、かつ、上記第2の分
    岐処理が行われたときは上記例外処理の起動を行わず、 上記第1の例外の検出が伝えられ、かつ、上記第2の分
    岐処理が行われないときは、上記例外処理の起動を行う
    、 ことを特徴とするデータ処理装置。
  3. (3)メモリの奇数アドレスに対するジャンプを例外と
    するデータ処理装置であって、第1の分岐処理〔プリブ
    ランチ〕を行うかまたは上記第1の分岐処理を行わない
    かどちらかの動作と、上記第1の分岐処理を行うとき上
    記第1の分岐処理を行うことによって発生する奇数アド
    レスへのジャンプによる第1の例外の検出と、上記奇数
    アドレスのプログラムカウンタ値の計算と、を行う機能
    をもつ第1のパイプラインステージ〔Dステージ(32
    )〕と、 第2の分岐処理〔Eステージでのブランチ〕を行うかま
    たは上記第2の分岐処理を行わないかどちらかの動作と
    、上記第1の例外に対する例外処理の起動と、を行う機
    能をもつ第2パイプラインステージ〔Eステージ(35
    )〕と、 をパイプライン動作させる機能と、 上記第1のパイプラインステージから上記第2のパイプ
    ラインステージに上記第1の例外の検出を伝える機能〔
    Dコード(41)、Rコード(43)、Eコード(45
    )の伝播機能〕と、 上記第1のパイプラインステージから上記第2のパイプ
    ラインステージに上記プログラムカウンタ値を伝える機
    能〔OAJTステップコード〕と、を備え、 上記第2のパイプラインステージは、 上記第1の例外の検出が伝えられ、かつ、上記第2の分
    岐処理が行われたときは上記例外処理の起動を行わず、 上記第1の例外の検出が伝えられ、かつ、上記第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 true JPH01214932A (ja) 1989-08-29
JPH081602B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100345937B1 (ko) * 1998-06-30 2002-07-24 가부시끼가이샤 도시바 디지털 신호 프로세서

Families Citing this family (18)

* 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
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
CA2045790A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch prediction in high-performance 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
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
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
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
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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60179846A (ja) * 1984-02-27 1985-09-13 Fujitsu Ltd 変換例外割込み制御方式

Family Cites Families (2)

* 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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60179846A (ja) * 1984-02-27 1985-09-13 Fujitsu Ltd 変換例外割込み制御方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100345937B1 (ko) * 1998-06-30 2002-07-24 가부시끼가이샤 도시바 디지털 신호 프로세서

Also Published As

Publication number Publication date
US5193156A (en) 1993-03-09
JPH081602B2 (ja) 1996-01-10

Similar Documents

Publication Publication Date Title
US5649145A (en) Data processor processing a jump instruction
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
JPH01214932A (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
JP3543181B2 (ja) データ処理装置
JPH081599B2 (ja) データ処理装置
JPH0810428B2 (ja) データ処理装置
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
JPH03158928A (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
US5269008A (en) Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer
JPH0769806B2 (ja) データ処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JPH0769808B2 (ja) データ処理装置
JPH0225932A (ja) データ処理装置
JPH01214933A (ja) データ処理装置
JP2928879B2 (ja) データ処理装置
JPH0769802B2 (ja) データ処理装置
JPH01258032A (ja) パイプライン処理機構を持つデータ処理装置
JPH0769805B2 (ja) データ処理装置
JPH0769807B2 (ja) データ処理装置
JPH0218621A (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