JPH081600B2 - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JPH081600B2 JPH081600B2 JP63040025A JP4002588A JPH081600B2 JP H081600 B2 JPH081600 B2 JP H081600B2 JP 63040025 A JP63040025 A JP 63040025A JP 4002588 A JP4002588 A JP 4002588A JP H081600 B2 JPH081600 B2 JP H081600B2
- 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
Links
Landscapes
- Advance Control (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 この発明はパイプラインの乱れを少なくする分岐命令
処理機構とオペランドアドレス計算機構により、多段パ
イプライン処理機構を効率的に動作させ、高い処理能力
を実現したデータ処理装置に関するものである。
処理機構とオペランドアドレス計算機構により、多段パ
イプライン処理機構を効率的に動作させ、高い処理能力
を実現したデータ処理装置に関するものである。
第5図に従来のデータ処理装置で行われていたパイプ
ライン処理機構の例を示す。(11)は命令フエツチステ
ージ(IFステージ)、(12)は命令デコードステージ
(Dステージ)、(13)はオペランドアドレス計算ステ
ージ(Aステージ)、(14)はオペランドフエツチステ
ージ(Fステージ)、(15)は命令実行ステージ(Eス
テージ)である。
ライン処理機構の例を示す。(11)は命令フエツチステ
ージ(IFステージ)、(12)は命令デコードステージ
(Dステージ)、(13)はオペランドアドレス計算ステ
ージ(Aステージ)、(14)はオペランドフエツチステ
ージ(Fステージ)、(15)は命令実行ステージ(Eス
テージ)である。
IFステージ(11)はメモリから命令コードをフエツチ
してDステージ(12)に出力する。Dステージ(12)は
IFステージ(11)から入力される命令コードをデコード
して、デコード結果をAステージ(13)に出力する。A
ステージ(12)は命令コード中で指定されたオペランド
の実効アドレスの計算を行い、計算したオペランドアド
レスをFステージ(14)に出力する。Fステージ(14)
はAステージ(13)から入力されたオペランドアドレス
に従い、メモリよりオペランドをフエツチする。フエツ
チしたオペランドはEステージ(15)に出力する。Eス
テージ(15)はFステージ(14)から入力されたオペラ
ンドに対して命令コード中で指定された演算を実行す
る。さらに必要ならその演算結果をメモリにストアす
る。
してDステージ(12)に出力する。Dステージ(12)は
IFステージ(11)から入力される命令コードをデコード
して、デコード結果をAステージ(13)に出力する。A
ステージ(12)は命令コード中で指定されたオペランド
の実効アドレスの計算を行い、計算したオペランドアド
レスをFステージ(14)に出力する。Fステージ(14)
はAステージ(13)から入力されたオペランドアドレス
に従い、メモリよりオペランドをフエツチする。フエツ
チしたオペランドはEステージ(15)に出力する。Eス
テージ(15)はFステージ(14)から入力されたオペラ
ンドに対して命令コード中で指定された演算を実行す
る。さらに必要ならその演算結果をメモリにストアす
る。
上記のパイプライン処理機構により、各命令で指定さ
れる処理は5つに分解され、5つの処理を順番に実行す
ることにより、指定された処理を完了する。各々5つの
処理は異なる命令に対しては並列動作をさせることが可
能であり、理想的には上記の5段のパイプライン処理機
構により5つの命令を同時に処理し、パイプライン処理
を行わない場合にくらべ、最大で5倍の処理能力もつデ
ータ処理装置を得ることができる。
れる処理は5つに分解され、5つの処理を順番に実行す
ることにより、指定された処理を完了する。各々5つの
処理は異なる命令に対しては並列動作をさせることが可
能であり、理想的には上記の5段のパイプライン処理機
構により5つの命令を同時に処理し、パイプライン処理
を行わない場合にくらべ、最大で5倍の処理能力もつデ
ータ処理装置を得ることができる。
パイプライン処理技術は上記のようにデータ処理装置
の処理能力を大幅に向上させる可能性をもつものであ
り、高速なデータ処理装置で広く用いられている。
の処理能力を大幅に向上させる可能性をもつものであ
り、高速なデータ処理装置で広く用いられている。
しかし、パイプライン処理にもいくつかの欠点があ
り、いつも理想的な状態で命令が処理されるわけではな
い。パイプライン処理で問題となるものの1つは命令の
シーケンスを乱す分岐命令の実行である。
り、いつも理想的な状態で命令が処理されるわけではな
い。パイプライン処理で問題となるものの1つは命令の
シーケンスを乱す分岐命令の実行である。
第5図に示すパイプライン処理機構をもち、分岐命令
をEステージ(15)で処理してから分岐先命令をIFステ
ージ(11)が処理する従来のデータ処理装置では、分岐
命令の実行により、パイプラインが大幅に乱れる。従来
のデータ処理装置で分岐命令が実行された場合に、パイ
プライン中を流れる命令の様子を第6図に示す。第6図
では命令3及び命令12が分岐命令である。命令3が実行
されるとすでにパイプライン処理中の命令4、命令5、
命令6、命令7はキヤンセルされ、新たに命令11がIFス
テージ(11)から処理される。命令3がEステージ(1
5)で実行されてから命令11がEステージ(15)で実行
されるまでには4命令処理分の時間が無駄になる。命令
12についても同様に4命令処理分の時間が無駄になる。
この無駄時間は分岐命令の実行後に処理すべき命令のフ
エツチが分岐命令のフエツチが分岐命令に対する全パイ
プライン処理が終了した後に行われるためであり、パイ
プライン処理の段数が多いほどこの無駄時間も長くな
る。
をEステージ(15)で処理してから分岐先命令をIFステ
ージ(11)が処理する従来のデータ処理装置では、分岐
命令の実行により、パイプラインが大幅に乱れる。従来
のデータ処理装置で分岐命令が実行された場合に、パイ
プライン中を流れる命令の様子を第6図に示す。第6図
では命令3及び命令12が分岐命令である。命令3が実行
されるとすでにパイプライン処理中の命令4、命令5、
命令6、命令7はキヤンセルされ、新たに命令11がIFス
テージ(11)から処理される。命令3がEステージ(1
5)で実行されてから命令11がEステージ(15)で実行
されるまでには4命令処理分の時間が無駄になる。命令
12についても同様に4命令処理分の時間が無駄になる。
この無駄時間は分岐命令の実行後に処理すべき命令のフ
エツチが分岐命令のフエツチが分岐命令に対する全パイ
プライン処理が終了した後に行われるためであり、パイ
プライン処理の段数が多いほどこの無駄時間も長くな
る。
パイプライン処理を行うデータ処理装置では分岐命令
の処理が処理能力向上の1つの大きなキーポイントであ
ることは従来より指摘されており、様々な工夫がすでに
行われている。分岐命令の処理に対する工夫は例えばJ.
K.F.Lee,A.J.Smith,「Branch Prediction Strategies a
nd Branch Target Buffer Design」,IEEE Computer,Vo
l.17,No.1,January,1984.で紹介されている。しかし、
いずれの工夫も実現に多大のハードウエアを必要とした
り、一部の分岐命令のみにしか効果がないなど、まだま
だ欠点を多く残すものであつた。
の処理が処理能力向上の1つの大きなキーポイントであ
ることは従来より指摘されており、様々な工夫がすでに
行われている。分岐命令の処理に対する工夫は例えばJ.
K.F.Lee,A.J.Smith,「Branch Prediction Strategies a
nd Branch Target Buffer Design」,IEEE Computer,Vo
l.17,No.1,January,1984.で紹介されている。しかし、
いずれの工夫も実現に多大のハードウエアを必要とした
り、一部の分岐命令のみにしか効果がないなど、まだま
だ欠点を多く残すものであつた。
本発明のデータ処理装置では上記の欠点を解決するた
め、条件分岐命令は履歴に依存して、その他の命令は命
令コードに依存して分岐を予測することが可能な命令デ
コード機構と、分岐先アドレスを計算することが可能な
プログラムカウンタ値計算機構と、分岐命令の命令長と
分岐命令のプログラムカウンタ値を加算して非分岐アド
レスを計算することが可能なオペランドアドレス計算機
構とをもつ。
め、条件分岐命令は履歴に依存して、その他の命令は命
令コードに依存して分岐を予測することが可能な命令デ
コード機構と、分岐先アドレスを計算することが可能な
プログラムカウンタ値計算機構と、分岐命令の命令長と
分岐命令のプログラムカウンタ値を加算して非分岐アド
レスを計算することが可能なオペランドアドレス計算機
構とをもつ。
本発明のデータ処理装置では上記の、条件分岐命令は
履歴に依存して、その他の命令は命令コードに依存して
分岐を予測することが可能な命令デコード機構と、分岐
先アドレスを計算することが可能なプログラムカウンタ
値計算機構と、分岐命令の命令長と分岐命令のプログラ
ムカウンタ値を加算して非分岐アドレスを計算すること
が可能なオペランドアドレス計算機構とにより、サブル
ーチン分岐命令に対して命令デコード段階で分岐処理を
行い、パイプライン処理の乱れを少なくする。
履歴に依存して、その他の命令は命令コードに依存して
分岐を予測することが可能な命令デコード機構と、分岐
先アドレスを計算することが可能なプログラムカウンタ
値計算機構と、分岐命令の命令長と分岐命令のプログラ
ムカウンタ値を加算して非分岐アドレスを計算すること
が可能なオペランドアドレス計算機構とにより、サブル
ーチン分岐命令に対して命令デコード段階で分岐処理を
行い、パイプライン処理の乱れを少なくする。
また、分岐命令の命令長と分岐命令のプログラムカウン
タ値を加算して非分岐アドレスを計算することが可能な
オペランドアドレス計算機構により、サブルーチン分岐
命令、トラツプ命令の実行の際スタツクにプツシユすべ
きこれらの命令の次のアドレス(非分岐先アドレス)に
ある命令のプログラムカウンタ値を計算することによ
り、これらの命令をパイプライン上で効率的に処理す
る。
タ値を加算して非分岐アドレスを計算することが可能な
オペランドアドレス計算機構により、サブルーチン分岐
命令、トラツプ命令の実行の際スタツクにプツシユすべ
きこれらの命令の次のアドレス(非分岐先アドレス)に
ある命令のプログラムカウンタ値を計算することによ
り、これらの命令をパイプライン上で効率的に処理す
る。
(1)本発明のデータ処理装置の命令フオーマツト 本発明のデータ処理装置の命令は16ビツト単位で可変
長となつており、奇数バイト長の命令はない。
長となつており、奇数バイト長の命令はない。
本発明のデータ処理装置では高頻度命令を短いフオー
マツトとするため、特に工夫された命令フオーマツト体
系をもつ。例えば、2オペランド命令に対して、基本的
に4バイト+拡張部の構成をもち、すべてのアドレツシ
ングモードが利用できる一般形フオーマツトと頻度の高
い命令とアドレツシングモードのみを使用できる短縮形
フオーマツトの2つのフオーマツトがある。
マツトとするため、特に工夫された命令フオーマツト体
系をもつ。例えば、2オペランド命令に対して、基本的
に4バイト+拡張部の構成をもち、すべてのアドレツシ
ングモードが利用できる一般形フオーマツトと頻度の高
い命令とアドレツシングモードのみを使用できる短縮形
フオーマツトの2つのフオーマツトがある。
第8図から第17図に示す本発明のデータ処理装置の命
令フオーマツト中に現われる記号の意味は次の通りであ
る。
令フオーマツト中に現われる記号の意味は次の通りであ
る。
−:オペコードの入る部分 #:リテラル、または即値の入る部分 Ea:8ビツトの一般形のアドレツシングモードでオペラン
ドを指定する部分 Sh:6ビツトの短縮形のアドレツシングモードでオペラン
ドを指定する部分 Rn:レジスタ上のオペランドをレジスタ番号で指定する
部分 フオーマツトは、第8図に示すように右側がLSB側
で、かつ高いアドレスになつている。アドレスNとアド
レスN+1の2バイトを見ないと命令フオーマツトが判
別できないようになつているが、これは、命令が必ず16
ビツト(2バイト)単位でフエツチ、デコードされるこ
とを前提としたためである。
ドを指定する部分 Sh:6ビツトの短縮形のアドレツシングモードでオペラン
ドを指定する部分 Rn:レジスタ上のオペランドをレジスタ番号で指定する
部分 フオーマツトは、第8図に示すように右側がLSB側
で、かつ高いアドレスになつている。アドレスNとアド
レスN+1の2バイトを見ないと命令フオーマツトが判
別できないようになつているが、これは、命令が必ず16
ビツト(2バイト)単位でフエツチ、デコードされるこ
とを前提としたためである。
本発明のデータ処理装置では、いずれのフオーマツト
の場合も、各オペランドのEaまたはShの拡張部は、必ず
そのEaまたはShの基本部を含むハーフワードの直後に置
かれる。これは、命令により暗黙に指定される即値デー
タや、命令の拡張部に優先する。したがつて、4バイト
以上の命令では、Eaの拡張部によつて命令のオペコード
が分断される場合がある。
の場合も、各オペランドのEaまたはShの拡張部は、必ず
そのEaまたはShの基本部を含むハーフワードの直後に置
かれる。これは、命令により暗黙に指定される即値デー
タや、命令の拡張部に優先する。したがつて、4バイト
以上の命令では、Eaの拡張部によつて命令のオペコード
が分断される場合がある。
また、後でも述べるように、多段間接モードによつ
て、Eaの拡張部にさらに拡張部が付く場合にも、次の命
令オペコードよりもそちらの方が優先される。例えば、
第一ハーフワードにEa1を含み、第二ハーフワードにEa2
を含み、第三ハーフワードまである6バイト命令の場合
を考える。Ea1に多段間接モードを使用したため、普通
の拡張部のほかに多段間接モードの拡張部もつくものと
する。この時、実際の命令ビツトパターンは、命令の第
一ハーフワード(Ea1の基本部を含む)、Ea1の拡張部、
Ea1の多段間接モード拡張部、命令の第二ハーフワード
(Ea2の基本部を含む)、Ea2の拡張部、命令の第三ハー
フワード、の順となる。
て、Eaの拡張部にさらに拡張部が付く場合にも、次の命
令オペコードよりもそちらの方が優先される。例えば、
第一ハーフワードにEa1を含み、第二ハーフワードにEa2
を含み、第三ハーフワードまである6バイト命令の場合
を考える。Ea1に多段間接モードを使用したため、普通
の拡張部のほかに多段間接モードの拡張部もつくものと
する。この時、実際の命令ビツトパターンは、命令の第
一ハーフワード(Ea1の基本部を含む)、Ea1の拡張部、
Ea1の多段間接モード拡張部、命令の第二ハーフワード
(Ea2の基本部を含む)、Ea2の拡張部、命令の第三ハー
フワード、の順となる。
(1.1)短縮形2オペランド命令 第9図から第12図に示す。2オペランド命令の短縮形
フオーマツトである。
フオーマツトである。
第9図はメモリーレジスタ間演算命令のフオーマツト
である。このフオーマツトにはソースオペランド側がメ
モリとなるL−formatとデステイネーシヨンオペランド
側がメモリとなるS−formatがある。
である。このフオーマツトにはソースオペランド側がメ
モリとなるL−formatとデステイネーシヨンオペランド
側がメモリとなるS−formatがある。
L−formatでは、Shはソースオペランドの指定フイー
ルド、Rnはデステイネーシヨンオペランドのレジスタの
指定フイールド、RRはShのオペランドサイズの指定をあ
らわす。レジスタ上に置かれたデステイネーシヨンオペ
ランドのサイズは、32ビツトに固定されている。レジス
タ側とメモリ側のサイズが異なり、ソース側のサイズが
小さい場合に符号拡張が行なわれる。
ルド、Rnはデステイネーシヨンオペランドのレジスタの
指定フイールド、RRはShのオペランドサイズの指定をあ
らわす。レジスタ上に置かれたデステイネーシヨンオペ
ランドのサイズは、32ビツトに固定されている。レジス
タ側とメモリ側のサイズが異なり、ソース側のサイズが
小さい場合に符号拡張が行なわれる。
S−formatではShはデステイネーシヨンオペランドの
指定フイールド、Rnはソースオペランドのレジスタ指定
フイールド、RRはShのオペランドサイズの指定をあらわ
す。レジスタ上に置かれたソースオペランドのサイズ
は、32ビツトに固定されている。レジスタ側とメモリ側
のサイズが異なり、ソース側のサイズが大きい場合にあ
ふれた部分の切捨てとオーバーフローチエツクが行なわ
れる。
指定フイールド、Rnはソースオペランドのレジスタ指定
フイールド、RRはShのオペランドサイズの指定をあらわ
す。レジスタ上に置かれたソースオペランドのサイズ
は、32ビツトに固定されている。レジスタ側とメモリ側
のサイズが異なり、ソース側のサイズが大きい場合にあ
ふれた部分の切捨てとオーバーフローチエツクが行なわ
れる。
第10図は、レジスタ−レジスタ間演算命令のフオーマ
ツト(R−format)である。Rnはデステイネーシヨンレ
ジスタの指定フイールドRmはソースレジスタの指定フイ
ールドである。オペランドサイズは32ビツトのみであ
る。
ツト(R−format)である。Rnはデステイネーシヨンレ
ジスタの指定フイールドRmはソースレジスタの指定フイ
ールドである。オペランドサイズは32ビツトのみであ
る。
第11図はリテラールメモリ間演算命令のフオーマツト
(Q−format)である。MMはデステイネーシヨンオペラ
ンドサイズの指定フイールド、#はリテラルによるソー
スオペランドの指定フイールド、Shはデステイネーシヨ
ンオペランドの指定フイールドである。
(Q−format)である。MMはデステイネーシヨンオペラ
ンドサイズの指定フイールド、#はリテラルによるソー
スオペランドの指定フイールド、Shはデステイネーシヨ
ンオペランドの指定フイールドである。
第12図は即値−メモリ間演算命令のフオーマツト(I
−format)である。MMはオペランドサイズの指定フイー
ルド(ソース,デイステイネーシヨンで共通)、Shはデ
ステイネーシヨンオペランドの指定フイールドである。
I−formatの即値のサイズは、デステイネーシヨン側の
オペランドのサイズと共通に8,16,32ビツトとなり、ゼ
ロ拡張、符号拡張は行なわれない。
−format)である。MMはオペランドサイズの指定フイー
ルド(ソース,デイステイネーシヨンで共通)、Shはデ
ステイネーシヨンオペランドの指定フイールドである。
I−formatの即値のサイズは、デステイネーシヨン側の
オペランドのサイズと共通に8,16,32ビツトとなり、ゼ
ロ拡張、符号拡張は行なわれない。
(1.2)一般形1オペランド命令 第13図は1オペランド命令の一般形フオーマツト(G1
−format)であるMMはオペランドサイズの指定フイール
ドである。一部のG1−format命令では、Eaの拡張部以外
にも拡張部がある。また、MMを使用しない命令もある。
−format)であるMMはオペランドサイズの指定フイール
ドである。一部のG1−format命令では、Eaの拡張部以外
にも拡張部がある。また、MMを使用しない命令もある。
(1.3)一般形2オペランド命令 第14図から第16図は2オペランド命令の一般形フオー
マツトである。このフオーマツトに含まれるのは、8ビ
ツトで指定する一般形アドレツシングモードのオペラン
ドが最大2つ存在する命令である。オペランドの総数自
体は3つ以上になる場合がある。
マツトである。このフオーマツトに含まれるのは、8ビ
ツトで指定する一般形アドレツシングモードのオペラン
ドが最大2つ存在する命令である。オペランドの総数自
体は3つ以上になる場合がある。
第14図は第一オペランドがメモリ読みだしを必要とす
る命令のフオーマツト(G−format)である。EaMはデ
ステイネーシヨンオペランドの指定フイールド、MMはデ
ステイネーシヨンオペランドサイズの指定フイールド、
EaRはソースオペランド指定フイールド、RRはソースオ
ペランドサイズの指定フイールドである。一部のG−fo
rmat命令では、EaMやEaRの拡張部以外にも拡張部があ
る。
る命令のフオーマツト(G−format)である。EaMはデ
ステイネーシヨンオペランドの指定フイールド、MMはデ
ステイネーシヨンオペランドサイズの指定フイールド、
EaRはソースオペランド指定フイールド、RRはソースオ
ペランドサイズの指定フイールドである。一部のG−fo
rmat命令では、EaMやEaRの拡張部以外にも拡張部があ
る。
第15図は第一オペランドが8ビツト即値の命令のフオ
ーマツト(E−format)である。EaMはデステイネーシ
ヨンオペランドの指定フイールド、MMはデステイネーシ
ヨンオペランドサイズの指定フイールド、#はソースオ
ペランド値である。
ーマツト(E−format)である。EaMはデステイネーシ
ヨンオペランドの指定フイールド、MMはデステイネーシ
ヨンオペランドサイズの指定フイールド、#はソースオ
ペランド値である。
E−formatとI−formatとは機能的には似たものであ
るが、考え方の点では大きく違つている。E−formatは
あくまでも2オペランド一般形(G−format)の派生形
であり、ソースオペランドのサイズが8ビット固定、デ
イステイネーシヨンオペランドのサイズが8/16/32ビツ
トから選択となつている。つまり、異種サイズ間の演算
を前提とし、デステイネーシヨンオペランドのサイズに
合わせて8ビツトのソースオペランドがゼロ拡張または
符号拡張される。一方、I−formatは、特に転送命令、
比較命例で頻度の多い即値のパターンを短縮形にしたも
のであり、ソースオペランドとデイステイネーシヨンオ
ペランドのサイズは等しい。
るが、考え方の点では大きく違つている。E−formatは
あくまでも2オペランド一般形(G−format)の派生形
であり、ソースオペランドのサイズが8ビット固定、デ
イステイネーシヨンオペランドのサイズが8/16/32ビツ
トから選択となつている。つまり、異種サイズ間の演算
を前提とし、デステイネーシヨンオペランドのサイズに
合わせて8ビツトのソースオペランドがゼロ拡張または
符号拡張される。一方、I−formatは、特に転送命令、
比較命例で頻度の多い即値のパターンを短縮形にしたも
のであり、ソースオペランドとデイステイネーシヨンオ
ペランドのサイズは等しい。
第16図は第一オペランドがアドレス計算のみの命令の
フオーマツト(GA−format)である。EaWはデステイネ
ーシヨンオペランドの指定フイールド、WWはデステイネ
ーシヨンオペランドサイズの指定フイールド、EaAはソ
ースオペランドの指定フイールドである。ソースオペラ
ンドとしては実行アドレスの計算結果自体が使用され
る。
フオーマツト(GA−format)である。EaWはデステイネ
ーシヨンオペランドの指定フイールド、WWはデステイネ
ーシヨンオペランドサイズの指定フイールド、EaAはソ
ースオペランドの指定フイールドである。ソースオペラ
ンドとしては実行アドレスの計算結果自体が使用され
る。
第17図はシヨートブランチ命令のフオーマツトであ
る。ccccは分岐条件指定フイールド、disp:8はジヤンプ
先との変位指定フイールド、本発明のデータ処理装置で
は8ビツトで変位を指定する場合には、ビツトパターン
での指定値を2倍して変位値とする。
る。ccccは分岐条件指定フイールド、disp:8はジヤンプ
先との変位指定フイールド、本発明のデータ処理装置で
は8ビツトで変位を指定する場合には、ビツトパターン
での指定値を2倍して変位値とする。
(1.4)アドレツシングモード 本発明のデータ処理装置のアドレツシングモード指定
方法には、レジスタを含めて6ビツトで指定する短縮形
と、8ビツトで指定する一般形がある。
方法には、レジスタを含めて6ビツトで指定する短縮形
と、8ビツトで指定する一般形がある。
未定義のアドレツシングモードを指定した場合や、意
味的に考えて明らかにおかしなアドレツシングモードの
組み合わせを指定した場合には、未定義命令を実行した
場合と同じく予約命令例外を発生し、例外処理を起動す
る。
味的に考えて明らかにおかしなアドレツシングモードの
組み合わせを指定した場合には、未定義命令を実行した
場合と同じく予約命令例外を発生し、例外処理を起動す
る。
これに該当するのは、デステイネーシヨンが即値モー
ドの場合、アドレス計算を伴うべきアドレツシングモー
ド指定フイールドで即値モードを使用した場合などであ
る。
ドの場合、アドレス計算を伴うべきアドレツシングモー
ド指定フイールドで即値モードを使用した場合などであ
る。
第18図ら第28図に示すフオーマツトの図中で使われる
記号つぎの通りである。
記号つぎの通りである。
Rn レジスタ指定 (Sh)6ビツトの短縮形アドレツシングモードでの指定
方法 (Ea)8ビツトの一般形アドレツシングモードでの指定
方法 フオーマツト図で点線で囲まれた部分は、拡張部を示
す。
方法 (Ea)8ビツトの一般形アドレツシングモードでの指定
方法 フオーマツト図で点線で囲まれた部分は、拡張部を示
す。
(1.4.1)基本アドレツシングモード 本発明のデータ処理装置は様々なアドレツシングモー
ドをサポートする。そのうち、本発明のデータ処理装置
でサポートする基本アドレツシングモードには、レジス
タ直接モード、レジスタ間接モード、レジスタ相対間接
モード、即値モード、絶対モード、PC相対間接モード、
スタツクポツプモード、スタツクプツシユモードがあ
る。
ドをサポートする。そのうち、本発明のデータ処理装置
でサポートする基本アドレツシングモードには、レジス
タ直接モード、レジスタ間接モード、レジスタ相対間接
モード、即値モード、絶対モード、PC相対間接モード、
スタツクポツプモード、スタツクプツシユモードがあ
る。
レジスタ直接モードは、レジスタの内容をそのままオ
ペランドとする。フオーマツトは第18図に示す。Rnは汎
用レジスタの番号を示す。
ペランドとする。フオーマツトは第18図に示す。Rnは汎
用レジスタの番号を示す。
レジスタ間接モードは、レジスタの内容をアドレスと
するメモリの内容をオペランドとする。フオーマツトは
第19図に示す。Rnは汎用レジスタの番号を示す。
するメモリの内容をオペランドとする。フオーマツトは
第19図に示す。Rnは汎用レジスタの番号を示す。
レジスタ相対間接は、デイスプレースメント値が16ビ
ツトか32ビツトかにより、2種類ある。それぞれ、レジ
スタの内容に16ビツトまたは32ビツトのデイスプレース
メント値を加えた値をアドレスとするメモリの内容をオ
ペランドとする。フオーマツトは第20図に示す。Rnは汎
用レジスタの番号を示す。disp:16とdisp:32は、それぞ
れ、16ビツトのデイスプレースメント値、32ビツトのデ
イスプレースメント値を示す。デイスプレースメント値
は符合付きとして扱う。
ツトか32ビツトかにより、2種類ある。それぞれ、レジ
スタの内容に16ビツトまたは32ビツトのデイスプレース
メント値を加えた値をアドレスとするメモリの内容をオ
ペランドとする。フオーマツトは第20図に示す。Rnは汎
用レジスタの番号を示す。disp:16とdisp:32は、それぞ
れ、16ビツトのデイスプレースメント値、32ビツトのデ
イスプレースメント値を示す。デイスプレースメント値
は符合付きとして扱う。
即値モードは、命令コード中で指定されるビツトパタ
ンをそのまま2進数と見なしてオペランドとする。フオ
ーマツトは第21図に示す。imm_dataは即値を示す。imm_
dataのサイズは、オペランドサイズとして命令中で指定
される。
ンをそのまま2進数と見なしてオペランドとする。フオ
ーマツトは第21図に示す。imm_dataは即値を示す。imm_
dataのサイズは、オペランドサイズとして命令中で指定
される。
絶対モードは、アドレス値が16ビツトで示されるか32
ビツトで示されるかにより2種類ある。それぞれ、命令
コード中で指定される16ビツトまたは32ビツトのビツト
パタンをアドレスとしたメモリの内容をオペランドとす
る。フオーマツトは第22図に示す。abs:16とabs:32は、
それぞれ、16ビツト、32ビツトのアドレス値を示す。ab
s:16でアドレスが示されるときは指定されたアドレス値
を32ビツトに符号拡張する。
ビツトで示されるかにより2種類ある。それぞれ、命令
コード中で指定される16ビツトまたは32ビツトのビツト
パタンをアドレスとしたメモリの内容をオペランドとす
る。フオーマツトは第22図に示す。abs:16とabs:32は、
それぞれ、16ビツト、32ビツトのアドレス値を示す。ab
s:16でアドレスが示されるときは指定されたアドレス値
を32ビツトに符号拡張する。
PC対間接モードは、デイスプレースメント値が16ビツ
トか32ビットかにより、2種類ある。それぞれ、プログ
ラムカウンタの内容に16ビツトまたは32ビツトのデイス
プレースメント値を加えた値をアドレスとするメモリの
内容をオペランドとする。フオーマツトは第23図に示
す。disp:16とdisp:32は、それぞれ、16ビツトのデイス
プレースメント値、32ビツトのデイスプレースメント値
を示す。デイスプレースメント値は符号付きとして扱
う。PC相対間接モードにおいて参照されるプログラムカ
ウンタの値は、そのオペランドを含む命令の先頭アドレ
スである。多段間接アドレツシングモードにおいてプロ
グラムカウンタの値が参照される場合にも、同じように
命令先頭のアドレスをPC相対の基準値として使用する。
トか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をオペランドサイズだけ
インクリメントする。例えば、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オペランドに対する
スタツクプツシユモード指定である。
ズだけデクリメントした内容をアドレスとするメモリの
内容をオペランドとする。スタツクブツシユモードでは
オペランドアクセス前にSPがデクリメントされる。例え
ば、32ビツトデータを扱う時には、オペランドアクセス
前にSPが−4だけ更新される。B,Hのサイズのオペラン
ドに対するスタツクプツシユモードの指定も可能であ
り、それぞれSPが−1,−2だけ更新される。フオーマツ
トは第25図に示す。オペランドに対してスタツクプツシ
ユモードが意味を持たないものに対しては、予約命令例
外を発生する。具体的に予約命令例外となるのは、read
オペランド、read−modify−writeオペランドに対する
スタツクプツシユモード指定である。
(1.4.2)多段間接アドレツシングモード 複雑なアドレツシングも、基本的には加算と間接参照
の組み合わせに分解することができる。したがつて、加
算参照のオペレーシヨンをアドレツシングのプリミテイ
ブとして与えておき、それを任意に組み合わせることが
できれば、どんな複雑なアドレツシングモードをも実現
することができる。本発明のデータ処理装置の多段間接
アドレツシングモードはこのような考え方にたつたアド
レツシングモードである。複雑なアドレツシングモード
は、モジユール間のデータ参照やAI言語の処理系に特に
有用である。
の組み合わせに分解することができる。したがつて、加
算参照のオペレーシヨンをアドレツシングのプリミテイ
ブとして与えておき、それを任意に組み合わせることが
できれば、どんな複雑なアドレツシングモードをも実現
することができる。本発明のデータ処理装置の多段間接
アドレツシングモードはこのような考え方にたつたアド
レツシングモードである。複雑なアドレツシングモード
は、モジユール間のデータ参照やAI言語の処理系に特に
有用である。
多段間接アドレツシングモードを指定するとき、基本
アドレツシングモード指定フイールドでは、レジスタベ
ース多段間接モード、PCベース多段間接モード、絶対ベ
ース多段間接モードの3種類の指定方法のうちいずれか
1つを指定する。
アドレツシングモード指定フイールドでは、レジスタベ
ース多段間接モード、PCベース多段間接モード、絶対ベ
ース多段間接モードの3種類の指定方法のうちいずれか
1つを指定する。
レジスタベース多段間接モードはレジスタの値を、拡
張する多段間接アドレツシングのベース値とするアドレ
ツシングモードである。フオーマツトは第26図に示す。
Rnは汎用レジスタの番号を示す。
張する多段間接アドレツシングのベース値とするアドレ
ツシングモードである。フオーマツトは第26図に示す。
Rnは汎用レジスタの番号を示す。
PCベース多段間接モードはプログラムカウンタの値を
拡張する多段間接アドレツシングのベース値とするアド
レツシングモードである。フオーマツトは第27図に示
す。
拡張する多段間接アドレツシングのベース値とするアド
レツシングモードである。フオーマツトは第27図に示
す。
絶対ベース多段間接モードはゼロを、拡張する多段間
接アドレツシングのベース値とするアドレツシングモー
ドである。フオーマツトは第28図に示す。
接アドレツシングのベース値とするアドレツシングモー
ドである。フオーマツトは第28図に示す。
拡張する多段間接モード指定フイールドは、16ビツト
を単位としており、これを任意回繰り返す。1段の多段
間接モードにより、デイスプレースメントの加算、イン
デクスレジスタのスケーリング(×1、×2、×4、×
8)と加算、メモリの間接参照、を行なう。多段間接モ
ードのフオーマツトは第29図で示す。各フイールドは以
下に示す意味をもつ。
を単位としており、これを任意回繰り返す。1段の多段
間接モードにより、デイスプレースメントの加算、イン
デクスレジスタのスケーリング(×1、×2、×4、×
8)と加算、メモリの間接参照、を行なう。多段間接モ
ードのフオーマツトは第29図で示す。各フイールドは以
下に示す意味をもつ。
E=0:多段間接モード継続 E=1:アドレス計算終了 tmp==>address of operand I=0:メモリ間接参照なし tmp+disp+Rx*Scale==>tmp I=1:メモリ間接参照あり mem〔tmp+disp+Rx*Scale〕==>tmp M=0:<Rx>をインデクスとして使用 M=1:特殊なインデクス <Rx>=0 インデクス値を加算しない(Rx=0) <Rx>=1 プログラムカウンタをインデクス値として
使用(Rx=PC) <Rx>=2〜reserved D=0:多段間接モード中の4ビツトのフイールドd4の値
を4倍してデイスプレースメント値とし、これを加算す
る。d4は符号付きとして扱い、オペランドのサイズとは
関係なく必ず4倍して使用する。
使用(Rx=PC) <Rx>=2〜reserved D=0:多段間接モード中の4ビツトのフイールドd4の値
を4倍してデイスプレースメント値とし、これを加算す
る。d4は符号付きとして扱い、オペランドのサイズとは
関係なく必ず4倍して使用する。
D=1:多段間接モードの拡張部で指定されたdispx(16/
32ビツト)をデイスプレースメント値とし、これを加算
する。
32ビツト)をデイスプレースメント値とし、これを加算
する。
拡張部のサイズはd4フイールドで指定する。
d4=0001 dispxは16ビツト d4=0010 dispxは32ビツト XX:インデクスのスケール(scale=1/2/4/8) プログラムカウンタに対して×2、×4、×8のスケ
ーリングを行なつた場合には、その段の処理終了後の中
間値(tmp)として、不定値が入る。この多段間接モー
ドによつて得られる実効アドレスは予測できない値とな
るが、例外は発生しない。プログラムカウンタに対する
スケーリングの指定は行なつてはいけない。
ーリングを行なつた場合には、その段の処理終了後の中
間値(tmp)として、不定値が入る。この多段間接モー
ドによつて得られる実効アドレスは予測できない値とな
るが、例外は発生しない。プログラムカウンタに対する
スケーリングの指定は行なつてはいけない。
多段間接モードによる命令フオーマツトのバリエーシ
ヨンを第30図、第31図に示す。第30図は多段間接モード
が継続するか終了するかのバリエーシヨンを示す。第31
図はデイスプレースメントのサイズのバリエーシヨンを
示す。
ヨンを第30図、第31図に示す。第30図は多段間接モード
が継続するか終了するかのバリエーシヨンを示す。第31
図はデイスプレースメントのサイズのバリエーシヨンを
示す。
任意段数の多段間接モードが利用できれば、コンパイ
ラの中で段数による場合分けが不要になるので、コンパ
イラの負担が軽減されるというメリツトがある。多段の
間接参照の頻度が非常に少ないとしても、コンパイラと
しては必ず正しいコードを発生できなければならないか
らである。このため、フオーマツト上、任意の段数が可
能になつている。
ラの中で段数による場合分けが不要になるので、コンパ
イラの負担が軽減されるというメリツトがある。多段の
間接参照の頻度が非常に少ないとしても、コンパイラと
しては必ず正しいコードを発生できなければならないか
らである。このため、フオーマツト上、任意の段数が可
能になつている。
(1.5)例外処理 本発明のデータ処理装置はソフトウエア負荷の軽減の
ため、豊富な例外処理機能をもつ、本発明しデータ処理
装置では例外処理は、命令処理を再実行するもの(例
外)、命令処理を完了するもの(トラツプ)、割込の3
種類に分けて名称をつけている。また本発明のデータ処
理装置では、この3種の例外処理と、システム障害を総
称してEITと呼ぶ。
ため、豊富な例外処理機能をもつ、本発明しデータ処理
装置では例外処理は、命令処理を再実行するもの(例
外)、命令処理を完了するもの(トラツプ)、割込の3
種類に分けて名称をつけている。また本発明のデータ処
理装置では、この3種の例外処理と、システム障害を総
称してEITと呼ぶ。
(2)機能ブロツクの構成 第2図に本発明のデータ処理装置のブロツク図を示
す。本発明のデータ処理装置の内部を機能的に大きく分
けると、命令フエツチ部(51)、命令デコード部(5
2)、PC計算部(53)、オペランドアドレス計算部(5
4)、マイクロROM部(55)、データ演算部(56)、外部
バスインターフエイス部(57)に分かれる。第2図で
は、その他にCPU外部にアドレスを出力するアドレス出
力回路(58)とCPU外部とデータの入出力を行うデータ
入出力回路(59)を他の機能ブロツク部と分けて示し
た。
す。本発明のデータ処理装置の内部を機能的に大きく分
けると、命令フエツチ部(51)、命令デコード部(5
2)、PC計算部(53)、オペランドアドレス計算部(5
4)、マイクロROM部(55)、データ演算部(56)、外部
バスインターフエイス部(57)に分かれる。第2図で
は、その他にCPU外部にアドレスを出力するアドレス出
力回路(58)とCPU外部とデータの入出力を行うデータ
入出力回路(59)を他の機能ブロツク部と分けて示し
た。
(2.1)命令フエツチ部 命令フエツチ部(51)にはブランチバツフア、命令キ
ユーとその制御部などがあり、次にフエツチすべき命令
のアドレスを決定して、ブランチバツフアやCPU外部の
メモリから命令をフエツチする。ブランチバツフアへの
命令登録も行う。
ユーとその制御部などがあり、次にフエツチすべき命令
のアドレスを決定して、ブランチバツフアやCPU外部の
メモリから命令をフエツチする。ブランチバツフアへの
命令登録も行う。
ブランチバツフアは小規模であるためセレクテイブキ
ヤツシユとして動作する。ブラツチバツファの動作の詳
細は特願昭61−202041で詳しく述べられている。
ヤツシユとして動作する。ブラツチバツファの動作の詳
細は特願昭61−202041で詳しく述べられている。
次にフエツチすべき命令のアドレスは命令キユーに入
力すべき命令のアドレスとして専用のカウンタで計算さ
れる。分岐やジヤンプが起きたときには、新たな命令の
アドレスが、PC計算部(53)やデータ演算部(56)より
転送されてくる。
力すべき命令のアドレスとして専用のカウンタで計算さ
れる。分岐やジヤンプが起きたときには、新たな命令の
アドレスが、PC計算部(53)やデータ演算部(56)より
転送されてくる。
CPU外部のメモリから命令をフエツチするときは、外
部バスインターフエイス部(57)を通して、フエツチす
べき命令のアドレスをアドレス出力回路(58)からCPU
外部に出力し、データ入出力回路(59)をから命令コー
ドをフエツチする。
部バスインターフエイス部(57)を通して、フエツチす
べき命令のアドレスをアドレス出力回路(58)からCPU
外部に出力し、データ入出力回路(59)をから命令コー
ドをフエツチする。
バツフアリングした命令コードのうち、命令デコード
部(52)で次にデコードすべき命令コードを命令デコー
ド部(52)に出力する。
部(52)で次にデコードすべき命令コードを命令デコー
ド部(52)に出力する。
(2.2)命令デコード部 命令デコード部(52)では基本的に16ビツト(ハーフ
ワード)単位に命令コードをデコードする。このブロツ
クには第1ハーフワードに含まれるオペコードをデコー
ドするFHWデコーダ、第2、第3ハーフワードに含まれ
るオペコードをデコードするNFHWデコーダ、アドレツシ
ングモードをデコードするアドレツシングモードデコー
ダが含まれる。
ワード)単位に命令コードをデコードする。このブロツ
クには第1ハーフワードに含まれるオペコードをデコー
ドするFHWデコーダ、第2、第3ハーフワードに含まれ
るオペコードをデコードするNFHWデコーダ、アドレツシ
ングモードをデコードするアドレツシングモードデコー
ダが含まれる。
さらにFHWデコーダやNFHWデコーダの出力をさらにデ
コードして、マイクロROMのエントリアドレスを計算す
るデコーダ2、条件分岐命令の分岐予測を行う分岐予測
機構、オペランドアドレス計算のときのパイプラインコ
ンフリクトをチエツクするアドレス計算コンフリクトチ
エツク機構も含まれる。
コードして、マイクロROMのエントリアドレスを計算す
るデコーダ2、条件分岐命令の分岐予測を行う分岐予測
機構、オペランドアドレス計算のときのパイプラインコ
ンフリクトをチエツクするアドレス計算コンフリクトチ
エツク機構も含まれる。
命令フエツチ部より入力された命令コードを2クロツ
クにつき0〜6バイトデコードする。デコード結果のう
ち、データ演算部(56)での演算に関する情報がマイク
ロROM(55)に、オペランドアドレス計算に関係する情
報がオペランドアドレス計算部(54)に、PC計算に関係
する情報がPC計算部(53)に、それぞれ出力される。
クにつき0〜6バイトデコードする。デコード結果のう
ち、データ演算部(56)での演算に関する情報がマイク
ロROM(55)に、オペランドアドレス計算に関係する情
報がオペランドアドレス計算部(54)に、PC計算に関係
する情報がPC計算部(53)に、それぞれ出力される。
(2.3)マイクロROM部 マイクロROM部(55)には主にデータ演算部(56)を
制御するマイクロプログラムが格納されているマイクロ
ROM、マイクロシーケンサ、マイクロ命令デコーダなど
が含まれる。マイクロ命令はマイクロROMから2クロツ
クに1度読み出される。マイクロシーケンサはマイクロ
プログラムで示されるシーケンス処理の他に、例外、割
込、トラツプ(この3つをあわせてEITと呼ぶ)と処理
をハードウエア的に受付ける。またマイクロROM部はス
トアバツフアの管理も行う。マイクロROM部には命令コ
ードに依存しない割込みや演算実行結果によるフラツグ
情報と、デコーダ2の出力など命令デコード部の出力が
入力される。マイクロデコーダの出力は主にデータ演算
部(56)に対して出力されるが、ジヤンプ命令の実行に
よる他の先行処理中止情報など一部の情報は他のブロツ
クへも出力される。
制御するマイクロプログラムが格納されているマイクロ
ROM、マイクロシーケンサ、マイクロ命令デコーダなど
が含まれる。マイクロ命令はマイクロROMから2クロツ
クに1度読み出される。マイクロシーケンサはマイクロ
プログラムで示されるシーケンス処理の他に、例外、割
込、トラツプ(この3つをあわせてEITと呼ぶ)と処理
をハードウエア的に受付ける。またマイクロROM部はス
トアバツフアの管理も行う。マイクロROM部には命令コ
ードに依存しない割込みや演算実行結果によるフラツグ
情報と、デコーダ2の出力など命令デコード部の出力が
入力される。マイクロデコーダの出力は主にデータ演算
部(56)に対して出力されるが、ジヤンプ命令の実行に
よる他の先行処理中止情報など一部の情報は他のブロツ
クへも出力される。
(2.4)オペランドアドレス計算部 オペランドアドレス計算部(54)は、命令デコード部
(52)のアドレスデコーダなどから出力されたオペラン
ドアドレス計算に関係する情報によりハードワイヤード
制御される。このブロツクではオペランドのアドレス計
算に関するほとんどの処理が行われる。メモリ間接アド
レツシングのためのメモリアクセスのアドレスやオペラ
ンドアドレスがメモリにマツプされたI/O領域に入るか
どうかのチエツクも行われる。
(52)のアドレスデコーダなどから出力されたオペラン
ドアドレス計算に関係する情報によりハードワイヤード
制御される。このブロツクではオペランドのアドレス計
算に関するほとんどの処理が行われる。メモリ間接アド
レツシングのためのメモリアクセスのアドレスやオペラ
ンドアドレスがメモリにマツプされたI/O領域に入るか
どうかのチエツクも行われる。
アドレス計算結果は外部バスインターフエイス部(5
7)に送られる。アドレス計算には必要な汎用レジスタ
やプログラムカウンタの値はデータ演算部より入力され
る。
7)に送られる。アドレス計算には必要な汎用レジスタ
やプログラムカウンタの値はデータ演算部より入力され
る。
メモリ間接アドレツシングを行うときは外部バスイン
ターフェイス部(57)を通してアドレス出力回路(58)
からCPC外部に参照すべきメモリアドレスを出力し、デ
ータ入出力部(59)から入力された間接アドレス値を命
令デコード部(52)をそのまま通過させてフエツチす
る。
ターフェイス部(57)を通してアドレス出力回路(58)
からCPC外部に参照すべきメモリアドレスを出力し、デ
ータ入出力部(59)から入力された間接アドレス値を命
令デコード部(52)をそのまま通過させてフエツチす
る。
(2.5)PC計算部 PC計算部(53)は命令デコード部(52)から出力され
るPC計算に関係する情報でハードワイヤードに制御さ
れ、命令のPC値を計算する。本特許のデータ処理装置は
可変長命令セツトを持つており、命令をデコードしてみ
ないとその命令の長さが判らない。PC計算部(53)は、
命令デコード部(52)から出力される命令長をデコード
中の命令のPC値に加算することによりつぎの命令のPC値
を作り出す。また、命令デコード部(52)が、分岐命令
をデコードしてデコード段階での分岐を指示したときは
命令長の代わりに分岐変位を分岐命令のPC値に加算する
ことにより分岐先命令のPC値を計算する。分岐命令に対
して命令デコード段階で分岐を行うことを本発明のデー
タ処理装置ではプリブランチと呼ぶ。プリブランチの方
法については特願昭61−204500と特願昭61−200557で詳
しく述べられている。
るPC計算に関係する情報でハードワイヤードに制御さ
れ、命令のPC値を計算する。本特許のデータ処理装置は
可変長命令セツトを持つており、命令をデコードしてみ
ないとその命令の長さが判らない。PC計算部(53)は、
命令デコード部(52)から出力される命令長をデコード
中の命令のPC値に加算することによりつぎの命令のPC値
を作り出す。また、命令デコード部(52)が、分岐命令
をデコードしてデコード段階での分岐を指示したときは
命令長の代わりに分岐変位を分岐命令のPC値に加算する
ことにより分岐先命令のPC値を計算する。分岐命令に対
して命令デコード段階で分岐を行うことを本発明のデー
タ処理装置ではプリブランチと呼ぶ。プリブランチの方
法については特願昭61−204500と特願昭61−200557で詳
しく述べられている。
PC計算部(53)の計算結果は各命令のPC値として命令
のデコード結果とともに出力されるほか、プリブランチ
時には、次にデコードすべき命令のアドレスとして命令
フエツチ部に出力される。
のデコード結果とともに出力されるほか、プリブランチ
時には、次にデコードすべき命令のアドレスとして命令
フエツチ部に出力される。
また、次に命令デコード部(52)でデコードされる命
令の分岐予測のためのアドレスにも使用される。分岐予
測の方法については特願昭62−8394で詳しく述べられて
いる。
令の分岐予測のためのアドレスにも使用される。分岐予
測の方法については特願昭62−8394で詳しく述べられて
いる。
(2.6)データ演算部 データ演算部(56)はマイクロプラグラムにより制御
され、マイクロROM部(55)の出力情報に従い、各命令
の機能を実現するに必要な演算をレジスタと演算器で実
行する。演算対象となるオペランドがアドレスや即値の
場合は、オペランドアドレス計算部(54)で計算された
アドレスや即値を外部バスインターフエイス部(57)を
通過させて得る。また、演算対象となるオペランドがCP
U外部のメモリにあるデータの場合は、アドレス計算部
(54)で計算されたアドレスをバスインターフエイス部
(57)がアドレス出力回路(58)から出力して、CPU外
部のメモリからフエツチしたオペランドをデータ入出力
回路(59)から得る。
され、マイクロROM部(55)の出力情報に従い、各命令
の機能を実現するに必要な演算をレジスタと演算器で実
行する。演算対象となるオペランドがアドレスや即値の
場合は、オペランドアドレス計算部(54)で計算された
アドレスや即値を外部バスインターフエイス部(57)を
通過させて得る。また、演算対象となるオペランドがCP
U外部のメモリにあるデータの場合は、アドレス計算部
(54)で計算されたアドレスをバスインターフエイス部
(57)がアドレス出力回路(58)から出力して、CPU外
部のメモリからフエツチしたオペランドをデータ入出力
回路(59)から得る。
演算器としてはALU、バレルシフタ、プライオリテイ
エンコーダやカウンタ、シフトレジスタなどがある。レ
ジスタと主な演算器の間は3バスで結合されており、1
つのレジスタ間演算を指示する1マイクロ命令を2クロ
ツクサイクルで処理する。
エンコーダやカウンタ、シフトレジスタなどがある。レ
ジスタと主な演算器の間は3バスで結合されており、1
つのレジスタ間演算を指示する1マイクロ命令を2クロ
ツクサイクルで処理する。
データ演算のときCPU外部のメモリをアクセスする必
要がある時はマイクロプログラムの指示により外部バス
インターフエイス部(57)を通してアドレス出力回路
(58)からアドレスをCPU外部に出力し、データ入出力
回路(59)を通して目的のデータをフエツチする。
要がある時はマイクロプログラムの指示により外部バス
インターフエイス部(57)を通してアドレス出力回路
(58)からアドレスをCPU外部に出力し、データ入出力
回路(59)を通して目的のデータをフエツチする。
CPU外部のメモリにデータをストアするときは外部バ
スインターフエイス部(57)を通してアドレス出力回路
(58)よりアドレスを出力すると同時に、データ入出力
回路(59)からデータをCPU外部に出力する。オペラン
ドストアを効率的に行うためデータ演算部(56)には4
バイトのストアバツフアがある。
スインターフエイス部(57)を通してアドレス出力回路
(58)よりアドレスを出力すると同時に、データ入出力
回路(59)からデータをCPU外部に出力する。オペラン
ドストアを効率的に行うためデータ演算部(56)には4
バイトのストアバツフアがある。
ジヤンプ命令の処理や例外処理などを行つて新たな命
令アドレスをデータ演算部(56)が得たときはこれを命
令フエツチ部(51)とPC計算部(53)に出力する。
令アドレスをデータ演算部(56)が得たときはこれを命
令フエツチ部(51)とPC計算部(53)に出力する。
(2.7)外部バスインターフエイス部 外部バスインターフエイス部(57)は本特許のデータ
処理装置の外部バスでの通信を制御する。メモリのアク
セスはすべてクロツク同期で行われ、最小2クロツクサ
イクルで行うことができる。
処理装置の外部バスでの通信を制御する。メモリのアク
セスはすべてクロツク同期で行われ、最小2クロツクサ
イクルで行うことができる。
メモリに対するアクセス要求は命令フエツチ部(5
1)、アドレス計算部(54)、データ演算部(56)から
独立に生じる。外部バスインターフエイス部(57)はこ
れらのメモリアクセス要求を調停する。さらにメモリと
CPUを結ぶデータバスサイズである32ビツト(ワード)
の整置境界をまたぐメモリ番地にあるデータのアクセス
は、このブロツク内で自動的にワード境界をまたぐこと
を検知して、2回のメモリアクセスに分解して行う。
1)、アドレス計算部(54)、データ演算部(56)から
独立に生じる。外部バスインターフエイス部(57)はこ
れらのメモリアクセス要求を調停する。さらにメモリと
CPUを結ぶデータバスサイズである32ビツト(ワード)
の整置境界をまたぐメモリ番地にあるデータのアクセス
は、このブロツク内で自動的にワード境界をまたぐこと
を検知して、2回のメモリアクセスに分解して行う。
プリフエツチするオペランドとストアするオペランド
が重なる場合の、コンフリクト防止処理やストアオペラ
ンドからフエツチオペランドへのバイパス処理も行う。
が重なる場合の、コンフリクト防止処理やストアオペラ
ンドからフエツチオペランドへのバイパス処理も行う。
(3)パイプライン機構 本発明のデータ処理装置のパイプライン処理は第3図
に示す構成となる。命令のプリフエツチを行う命令フエ
ツチステージ(IFステージ(31))、命令のデコードを
行うデコードステージ(Dステージ(32))、オペラン
ドのアドレス計算を行うオペランドアドレス計算ステー
ジ(Aステージ(33))、マイクロROMアクセス(特に
Rステージ(36)と呼ぶ)とオペランドのプリフエツチ
(特にOFステージ(37)と呼ぶ)を行うオペランドフエ
ツチステージ(Fステージ(34))、命令の実行を行う
実行ステージ(Eステージ(35))の5段構成をパイプ
ライン処理の基本とする。Eステージ(35)では1段の
ストアバツフアがあるほか、高機能命令の一部は命令実
行自体をパイプライン化するため、実際には5段以上の
パイプライン処理効果がある。
に示す構成となる。命令のプリフエツチを行う命令フエ
ツチステージ(IFステージ(31))、命令のデコードを
行うデコードステージ(Dステージ(32))、オペラン
ドのアドレス計算を行うオペランドアドレス計算ステー
ジ(Aステージ(33))、マイクロROMアクセス(特に
Rステージ(36)と呼ぶ)とオペランドのプリフエツチ
(特にOFステージ(37)と呼ぶ)を行うオペランドフエ
ツチステージ(Fステージ(34))、命令の実行を行う
実行ステージ(Eステージ(35))の5段構成をパイプ
ライン処理の基本とする。Eステージ(35)では1段の
ストアバツフアがあるほか、高機能命令の一部は命令実
行自体をパイプライン化するため、実際には5段以上の
パイプライン処理効果がある。
各ステージは他のステージとは独立に動作し、理論上
は5つのステージが完全に独立動作する。各ステージは
1回の処理を最小2クロツクで行うことができる。従つ
て理想的には2クロツクごとに次々とパイプライン処理
が進行する。
は5つのステージが完全に独立動作する。各ステージは
1回の処理を最小2クロツクで行うことができる。従つ
て理想的には2クロツクごとに次々とパイプライン処理
が進行する。
本発明のデータ処理装置にはメモリ−メモリ間演算
や、メモリ間接アドレツシングなど、基本パイプライン
処理1回だけでは処理が行えない命令があるが、本発明
のデータ処理装置はこれらの処理に対してもなるべく均
衡したパイプライン処理が行えるように設計されてい
る。複数のメモリオペランドをもつ命令に対してはメモ
リオペランドの数をもとに、デコード段階で複数のパイ
プライン処理単位(ステツプコード)に分解してパイプ
ライン処理を行うのである。パイプライン処理単位の分
解方法に関しては特願昭61−236456で詳しく述べられて
いる。
や、メモリ間接アドレツシングなど、基本パイプライン
処理1回だけでは処理が行えない命令があるが、本発明
のデータ処理装置はこれらの処理に対してもなるべく均
衡したパイプライン処理が行えるように設計されてい
る。複数のメモリオペランドをもつ命令に対してはメモ
リオペランドの数をもとに、デコード段階で複数のパイ
プライン処理単位(ステツプコード)に分解してパイプ
ライン処理を行うのである。パイプライン処理単位の分
解方法に関しては特願昭61−236456で詳しく述べられて
いる。
IFステージ(31)からDステージ(32)に渡される情
報は命令コードそのものである。Dステージ(32)から
Aステージに渡される情報は命令で指定された演算に関
するもの(Dコード(41)と呼ぶ)と、オペランドのア
ドレス計算に関係するもの(Aコード(42)と呼ぶ)と
の2つある。Aステージ(33)からFステージに渡され
る情報はマイクロプログラムルーチンのエントリ番地や
マイクロプログラムへのパラメータなどを含むRコード
(43)と、オペランドのアドレスとアクセス方法指示情
報などを含むFコードとの2つである。Fステージ(3
4)からEステージ(35)に渡される情報は演算制御情
報とリテラルなどを含むEコード(45)と、オペランド
やオペランドアドレスなどを含むSコード(46)との2
つである。
報は命令コードそのものである。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)以外のステージで検出されたFITは
そのコードがEステージ(35)の到着するまではEIT処
理を起動しない。Eステージ(35)で処理されている命
令のみが実行段階の命令であり、IFステージ(31)〜F
ステージ(34)で処理されている命令はまだ実行段階に
至つていないのである。従つてEステージ(35)以外で
検出されたEITは検出したことをステツプコード中に記
録して次のステージに伝えられるのみである。
そのコードがEステージ(35)の到着するまではEIT処
理を起動しない。Eステージ(35)で処理されている命
令のみが実行段階の命令であり、IFステージ(31)〜F
ステージ(34)で処理されている命令はまだ実行段階に
至つていないのである。従つてEステージ(35)以外で
検出されたEITは検出したことをステツプコード中に記
録して次のステージに伝えられるのみである。
(3.1)パイプライン処理単位 (3.1.1)命令コードフイールドの分類 本発明のデータ処理装置のパイプライン処理単位は命
令セツトのフオーマツトの特徴を利用して決定されてい
る。(1)の節で述べたように、本発明のデータ処理装
置の命令は2バイト単位の可変長命令であり、基本的に
は(2バイトの命令基本部+0〜4バイトのアドレシン
グ拡張部)を1〜3回繰り返すことにより命令が構成さ
れている。
令セツトのフオーマツトの特徴を利用して決定されてい
る。(1)の節で述べたように、本発明のデータ処理装
置の命令は2バイト単位の可変長命令であり、基本的に
は(2バイトの命令基本部+0〜4バイトのアドレシン
グ拡張部)を1〜3回繰り返すことにより命令が構成さ
れている。
命令基本部には多くの場合オペコード部とアドレツシ
ングモード指定部があり、インデツクスアドレツシング
やメモリ間接アドレツシングが必要なときにはアドレツ
シング拡張部の代わりに(2バイトの多段間接モード指
定部+0〜4バイトのアドレツシング拡張部)が任意個
付く。また、命令により2または4バイトの命令固有の
拡張部が最後に付く。
ングモード指定部があり、インデツクスアドレツシング
やメモリ間接アドレツシングが必要なときにはアドレツ
シング拡張部の代わりに(2バイトの多段間接モード指
定部+0〜4バイトのアドレツシング拡張部)が任意個
付く。また、命令により2または4バイトの命令固有の
拡張部が最後に付く。
命令基本部には命令オペコード、基本アドレツシング
モード、リテラルなどが含まれる。アドレツシング拡張
部はデイスプレースメント、絶対アドレス、即値、分岐
命令の変位のいずれかである。命令固有の拡張部にはレ
ジスタマツプ、I−format命令の即値指定などがある。
第32図で本発明のデータ処理装置の基本的命令フオーマ
ツトの特徴を示す。
モード、リテラルなどが含まれる。アドレツシング拡張
部はデイスプレースメント、絶対アドレス、即値、分岐
命令の変位のいずれかである。命令固有の拡張部にはレ
ジスタマツプ、I−format命令の即値指定などがある。
第32図で本発明のデータ処理装置の基本的命令フオーマ
ツトの特徴を示す。
(3.1.2)ステツプコードへの命令の分解 本発明のデータ処理装置では上記の命令フオーマツト
の特徴を生かしたパイプライン処理を行う。Dステージ
(32)では(2バイトの命令基本部+0〜4バイトのア
ドレツシング拡張部)、(多段間接モード指定部+アド
レツシング拡張部)または命令固有の拡張部を1つのデ
コード単位として処理する。各回のデコード結果をステ
ツプコードと呼び、Aステージ(33)以降ではこのステ
ツプコードをパイプライン処理の単位としている。ステ
ツプコードの数は命令ごとに固有であり、多段間接モー
ド指定を行わないとき、1つの命令は最小1個、最大3
個のステツプコードに分かれる。多段間接モード指定が
あればそれだけステツプコードが増える。ただし、これ
は後で述べるようにデコード段階のみである。
の特徴を生かしたパイプライン処理を行う。Dステージ
(32)では(2バイトの命令基本部+0〜4バイトのア
ドレツシング拡張部)、(多段間接モード指定部+アド
レツシング拡張部)または命令固有の拡張部を1つのデ
コード単位として処理する。各回のデコード結果をステ
ツプコードと呼び、Aステージ(33)以降ではこのステ
ツプコードをパイプライン処理の単位としている。ステ
ツプコードの数は命令ごとに固有であり、多段間接モー
ド指定を行わないとき、1つの命令は最小1個、最大3
個のステツプコードに分かれる。多段間接モード指定が
あればそれだけステツプコードが増える。ただし、これ
は後で述べるようにデコード段階のみである。
(3.1.3)プログラムカウンタの管理 本発明のデータ処理装置のパイプライン上に存在する
ステツプコードはすべて別命令に対するものである可能
性があり、プログラムカウンタの値はステツプコードご
とに管理する。すべてのステツプコードはそのステツプ
コードのもとになつた命令のプログラムカウンタ値をも
つ。ステツプコードに付属してパイプラインの各ステー
ジを流れるプログラムカウンタ値はステツププログラム
カウンタ(SPC)と呼ぶ。SPCはパイプラインステージを
次々と受け渡されていく。
ステツプコードはすべて別命令に対するものである可能
性があり、プログラムカウンタの値はステツプコードご
とに管理する。すべてのステツプコードはそのステツプ
コードのもとになつた命令のプログラムカウンタ値をも
つ。ステツプコードに付属してパイプラインの各ステー
ジを流れるプログラムカウンタ値はステツププログラム
カウンタ(SPC)と呼ぶ。SPCはパイプラインステージを
次々と受け渡されていく。
(3.2)各パイプラインステージの処理 各パイプラインステージの入出力ステツプコードには
第3図に示したように便宜上名前が付けられている。ま
たステツプコードはオペコードに関する処理を行い、マ
イクロROMのエントリ番地やEステージ(35)に対する
パラメータなどになる系列とEステージ(35)のマイク
ロ命令に対するオペランドになる系列の2系列がある。
第3図に示したように便宜上名前が付けられている。ま
たステツプコードはオペコードに関する処理を行い、マ
イクロROMのエントリ番地やEステージ(35)に対する
パラメータなどになる系列とEステージ(35)のマイク
ロ命令に対するオペランドになる系列の2系列がある。
(3.2.1)命令フエツチステージ 命令フエツチステージ(1Fステージ(31))は命令を
メモリやブランチバツフアからフエツチし、命令キユー
に入力して、Dステージ(32)に対して命令コードを出
力する。命令キユーの入力は整置された4バイト単位で
行う。メモリから命令をフエツチするときは整置された
4バイトにつし最小2クロツクを要する。ブランチバツ
フアがヒツトした時は整置された4バイトにつき1クロ
ツクでフエツチ可能である。命令キユーの出力単位は2
バイトごとに可変であり、2クロツクの間に最大6バイ
トまで出力できる。また分岐の直後には命令キユーをバ
イパスして命令基本部2バイトを直接命令デコーダに転
送することもできる。
メモリやブランチバツフアからフエツチし、命令キユー
に入力して、Dステージ(32)に対して命令コードを出
力する。命令キユーの入力は整置された4バイト単位で
行う。メモリから命令をフエツチするときは整置された
4バイトにつし最小2クロツクを要する。ブランチバツ
フアがヒツトした時は整置された4バイトにつき1クロ
ツクでフエツチ可能である。命令キユーの出力単位は2
バイトごとに可変であり、2クロツクの間に最大6バイ
トまで出力できる。また分岐の直後には命令キユーをバ
イパスして命令基本部2バイトを直接命令デコーダに転
送することもできる。
ブランチバツフアへの命令の登録やクリアなどの制
御、プリフエツチ先命令アドレスの管理や命令キユーの
制御もIFステージ(31)で行う。
御、プリフエツチ先命令アドレスの管理や命令キユーの
制御もIFステージ(31)で行う。
IFステージ(31)で検出するEITには命令をメモリか
らフエツチするときのバスアクセス例外や、メモリ保護
違反などによるアドレス変換例外がある。
らフエツチするときのバスアクセス例外や、メモリ保護
違反などによるアドレス変換例外がある。
(3.2.2)命令デコードステージ 命令デコードステージ(Dステージ(32))はIFステ
ージ(31)から入力された命令コードをデコードする。
デコードは命令デコード部(52)のFHWデコーダ、NFHW
デコーダ、アドレツシングモードデコーダを使用して、
2クロツク単位に1度行ない、1回のデコード処理で、
0〜6バイトの命令コードを消費する(RET命令の復帰
先アドレスを含むステツプコードの出力処理などでは命
令コードを消費しない)。1回のデコードでAステージ
(33)に対してアドレス計算情報であるAコード(42)
である約35ビツトの制御コードと最大32ビツトアドレス
修飾情報と、オペコードの中間デコード結果であるDコ
ード(41)である約50ビツトの制御コードと8ビツトの
リテラル情報と、を出力する。
ージ(31)から入力された命令コードをデコードする。
デコードは命令デコード部(52)のFHWデコーダ、NFHW
デコーダ、アドレツシングモードデコーダを使用して、
2クロツク単位に1度行ない、1回のデコード処理で、
0〜6バイトの命令コードを消費する(RET命令の復帰
先アドレスを含むステツプコードの出力処理などでは命
令コードを消費しない)。1回のデコードでAステージ
(33)に対してアドレス計算情報であるAコード(42)
である約35ビツトの制御コードと最大32ビツトアドレス
修飾情報と、オペコードの中間デコード結果であるDコ
ード(41)である約50ビツトの制御コードと8ビツトの
リテラル情報と、を出力する。
Dステージ(32)では各命令のPC計算部(53)の制
御、分岐予測処理、プリブランチ命令に対するプリブラ
ンチ処理、命令キユーからの命令コード出力処理も行
う。
御、分岐予測処理、プリブランチ命令に対するプリブラ
ンチ処理、命令キユーからの命令コード出力処理も行
う。
Dステージ(32)で検出するEITには予約命令例外、
プリブランチ時の奇数アドレスジヤンプトラツプがあ
る。また、IFステージ(31)より転送されてきた各種EI
Tはステツプコード内にエンコードする処理をしてAス
テージ(33)に転送する。
プリブランチ時の奇数アドレスジヤンプトラツプがあ
る。また、IFステージ(31)より転送されてきた各種EI
Tはステツプコード内にエンコードする処理をしてAス
テージ(33)に転送する。
(3.2.3)オペランドアドレス計算ステージ オペランドアドレス計算ステージ(33))は処理が大
きく2つに分かれる。1つは命令デコード部(52)のデ
コーダ2を使用して、オペコードの後段デコードを行う
処理で、他方はオペランドアドレス計算部(54)でオペ
ランドアドレスの計算を行う処理である。
きく2つに分かれる。1つは命令デコード部(52)のデ
コーダ2を使用して、オペコードの後段デコードを行う
処理で、他方はオペランドアドレス計算部(54)でオペ
ランドアドレスの計算を行う処理である。
オペコードの後段デコード処理はDコード(41)を入
力とし、レジスタやメモリの書き込み予約及びマイクロ
プログラムのエントリ番地とマイクロプログラムに対す
るパラメータなどを含むRコード(43)の出力を行う。
なお、レジスタやメモリ書き込み予約は、アドレス計算
で参照したレジスタやメモリの内容がパイプライン上を
先行する命令で書き換えられ、誤つたアドレス計算が行
われるのを防ぐためのものである。レジスタやメモリの
書き込み予約はデツドロツクを避けるため、ステツプコ
ードごとに行うのではなく命令ごとに行う。レジスタや
メモリの書き込み予約については特願昭62−144394で詳
しく述べられている。
力とし、レジスタやメモリの書き込み予約及びマイクロ
プログラムのエントリ番地とマイクロプログラムに対す
るパラメータなどを含むRコード(43)の出力を行う。
なお、レジスタやメモリ書き込み予約は、アドレス計算
で参照したレジスタやメモリの内容がパイプライン上を
先行する命令で書き換えられ、誤つたアドレス計算が行
われるのを防ぐためのものである。レジスタやメモリの
書き込み予約はデツドロツクを避けるため、ステツプコ
ードごとに行うのではなく命令ごとに行う。レジスタや
メモリの書き込み予約については特願昭62−144394で詳
しく述べられている。
オペランドアドレス計算処理はAコード(42)を入力
とし、Aコード(42)に従いオペランドアドレス計算部
(54)で加算やメモリ間接参照を組み合わせてアドレス
計算を行い、その計算結果をFコード(44)として出力
する。この際、アドレス計算に伴うレジスタやメモリの
読み出し時にコンフリクトチエツクを行い、先行命令が
レジスタやメモリに書き込み処理を終了していないため
コンフリクトが指示されれば、先行命令がEステージ
(35)で書き込み処理を終了するまで待つ。また、オペ
ランドアドレスやメモリ間接参照のアドレスがメモリに
マツプされたI/O領域に入るかどうかのチエツクも行
う。
とし、Aコード(42)に従いオペランドアドレス計算部
(54)で加算やメモリ間接参照を組み合わせてアドレス
計算を行い、その計算結果をFコード(44)として出力
する。この際、アドレス計算に伴うレジスタやメモリの
読み出し時にコンフリクトチエツクを行い、先行命令が
レジスタやメモリに書き込み処理を終了していないため
コンフリクトが指示されれば、先行命令がEステージ
(35)で書き込み処理を終了するまで待つ。また、オペ
ランドアドレスやメモリ間接参照のアドレスがメモリに
マツプされたI/O領域に入るかどうかのチエツクも行
う。
Aステージ(33)で検出するEITには予約命令例外、
特権命令例外、バスアクセス例外、アドレス変換例外、
メモリ間接アドレシングのときのオペランドブレイクポ
イントヒツトによるデバツクトラツクがある。Dコード
(41)、Aコード(42)自体がEITを起こしたことを示
しておれば、Aステージ(33)はそのコードに対してア
ドレス計算処理をせず、そのEITをRコード(43)やF
コード(44)に伝える。
特権命令例外、バスアクセス例外、アドレス変換例外、
メモリ間接アドレシングのときのオペランドブレイクポ
イントヒツトによるデバツクトラツクがある。Dコード
(41)、Aコード(42)自体がEITを起こしたことを示
しておれば、Aステージ(33)はそのコードに対してア
ドレス計算処理をせず、そのEITをRコード(43)やF
コード(44)に伝える。
(3.2.4)マイクロROMアクセスステージ オペランドフエツチステージ(Fステージ(34))も
処理が大きく2つに分かれる。1つはマイクロROMのア
クセス処理であり、特にRステージ(36)と呼ぶ。他方
はオペランドプリフエツチ処理であり、特にOFステージ
(37)と呼ぶ。Rステージ(36)とOFステージ(37)は
必ずしも同時に動作するわけではなく、メモリアクセス
権が獲得できるかどうかなどに依存して、独立に動作す
る。
処理が大きく2つに分かれる。1つはマイクロROMのア
クセス処理であり、特にRステージ(36)と呼ぶ。他方
はオペランドプリフエツチ処理であり、特にOFステージ
(37)と呼ぶ。Rステージ(36)とOFステージ(37)は
必ずしも同時に動作するわけではなく、メモリアクセス
権が獲得できるかどうかなどに依存して、独立に動作す
る。
Rステージ(36)の処理であるマイクロROMアクセス
処理はRコードに対して次のEステージでの実行制御コ
ードであるEコードを作り出すためのマイクロROMアク
セスとマイクロ命令デコード処理である。1つのRコー
ドに対する処理が2つ以上のマイクロプログラムステツ
プに分解される場合、マイクロROMはEステージ(35)
で使用され、次のRコード(43)はマイクロROMアクセ
ス待ちになる。Rコード(43)に対するマイクロROMア
クセスが行われるのはその前のEステージ(35)での最
後のマイクロ命令実行の時である。本発明のデータ処理
装置ではほとんどの基本命令は1マイクロプログラムス
テツプ行われるため実際にはRコード(43)に対するマ
イクロROMアクセスが次々と行われることが多い。
処理はRコードに対して次のEステージでの実行制御コ
ードであるEコードを作り出すためのマイクロROMアク
セスとマイクロ命令デコード処理である。1つのRコー
ドに対する処理が2つ以上のマイクロプログラムステツ
プに分解される場合、マイクロROMはEステージ(35)
で使用され、次のRコード(43)はマイクロROMアクセ
ス待ちになる。Rコード(43)に対するマイクロROMア
クセスが行われるのはその前のEステージ(35)での最
後のマイクロ命令実行の時である。本発明のデータ処理
装置ではほとんどの基本命令は1マイクロプログラムス
テツプ行われるため実際にはRコード(43)に対するマ
イクロROMアクセスが次々と行われることが多い。
Rステージ(36)で新たに検出するEITはない。Rコ
ード(36)が命令処理際実行型のEITを示しているとき
はそのEIT処理に対するマイクロプログラムが実行され
るのでRステージ(36)はそのRコード(43)に従つた
マイクロ命令をフエツチする。Rコード(43)が奇数ア
ドレスジヤンプトラツプを示しているときRステージ
(36)はそれをEコード(45)に伝える。これはプリブ
ランチに対するもので、Eステージ(35)ではそのEコ
ード(45)で分岐が生じなければそのプリブランチを有
効として奇数アドレスジヤンプトラツプを発生する。
ード(36)が命令処理際実行型のEITを示しているとき
はそのEIT処理に対するマイクロプログラムが実行され
るのでRステージ(36)はそのRコード(43)に従つた
マイクロ命令をフエツチする。Rコード(43)が奇数ア
ドレスジヤンプトラツプを示しているときRステージ
(36)はそれをEコード(45)に伝える。これはプリブ
ランチに対するもので、Eステージ(35)ではそのEコ
ード(45)で分岐が生じなければそのプリブランチを有
効として奇数アドレスジヤンプトラツプを発生する。
(3.2.5)オペランドフエツチステージ オペランドフエツチステージ(OFステージ(37))は
Fステージ(34)で行う上記の2つの処理のうちオプラ
ンドプリフエツチ処理を行う。
Fステージ(34)で行う上記の2つの処理のうちオプラ
ンドプリフエツチ処理を行う。
オペランドプリフエツチはFコード(44)を入力と
し、フエツチしたオペランドとそのアドレスをSコード
(46)として出力する。1つのFコード(44)ではワー
ド境界をまたいでもよいが4バイト以下のオペランドフ
エツチを指定する。Fコード(44)にはオペランドのア
クセスを行うかどうかの指定も含まれており、Aステー
ジ(33)で計算したオペランドアドレス自体や即値をE
ステージ(35)に転送する場合にはオペランドプリフエ
ツチは行わず、Fコード(44)の内容をSコード(46)
として転送する。プリフエツチしようとするオペランド
とEステージ(35)が書き込み処理を行おうとするオペ
ランドが一致するときは、オペランドプリフエツチはメ
モリから行わず、バイパスして行なう。またI/O領域に
対してはオペランドプリフエツチを遅延させ、先行命令
がすべて完了するまで待つてオペランドフエツチを行
う。
し、フエツチしたオペランドとそのアドレスをSコード
(46)として出力する。1つのFコード(44)ではワー
ド境界をまたいでもよいが4バイト以下のオペランドフ
エツチを指定する。Fコード(44)にはオペランドのア
クセスを行うかどうかの指定も含まれており、Aステー
ジ(33)で計算したオペランドアドレス自体や即値をE
ステージ(35)に転送する場合にはオペランドプリフエ
ツチは行わず、Fコード(44)の内容をSコード(46)
として転送する。プリフエツチしようとするオペランド
とEステージ(35)が書き込み処理を行おうとするオペ
ランドが一致するときは、オペランドプリフエツチはメ
モリから行わず、バイパスして行なう。またI/O領域に
対してはオペランドプリフエツチを遅延させ、先行命令
がすべて完了するまで待つてオペランドフエツチを行
う。
OFステージ(37)で検出するEITにはバスアクセス例
外、アドレス変換例外、オペランドプリフエツチに対す
るブレイクポイントヒツトによるデバツグストラツプが
ある。Fコード(44)がデバツグトラツプ以外のEITを
示しているときはそれをSコード(46)に転送し、オペ
ランドプリフエツチは行わない。Fコード(44)がデバ
ツグトラツプを示しているときはそのFコード(44)に
対してEITを示していないときと同じ処理をすると共に
デバツグトラツプをSコード(46)に伝える。
外、アドレス変換例外、オペランドプリフエツチに対す
るブレイクポイントヒツトによるデバツグストラツプが
ある。Fコード(44)がデバツグトラツプ以外のEITを
示しているときはそれをSコード(46)に転送し、オペ
ランドプリフエツチは行わない。Fコード(44)がデバ
ツグトラツプを示しているときはそのFコード(44)に
対してEITを示していないときと同じ処理をすると共に
デバツグトラツプをSコード(46)に伝える。
(3.2.6)実行ステージ 実行ステージ(Eステージ(35))はEコード(4
5)、Sコード(46)を入力として動作する。このEス
テージ(35)が命令を実行するステージであり、Fステ
ージ(34)以前のステージで行われた処理はすべてEス
テージ(35)のための前処理である。Eステージ(35)
でジヤンプ命令が実行されたり、EIT処理が起動された
りしたときは、IFステージ(31)〜Fステージ(34)ま
での処理はすべて無効化される。Eステージ(35)はマ
イクロプログラムにより制御され、Rコード(45)に示
されたマイクロプログラムのエントリ番地からの一連の
マイクロプログラムを実行することにより命令を実行す
る。
5)、Sコード(46)を入力として動作する。このEス
テージ(35)が命令を実行するステージであり、Fステ
ージ(34)以前のステージで行われた処理はすべてEス
テージ(35)のための前処理である。Eステージ(35)
でジヤンプ命令が実行されたり、EIT処理が起動された
りしたときは、IFステージ(31)〜Fステージ(34)ま
での処理はすべて無効化される。Eステージ(35)はマ
イクロプログラムにより制御され、Rコード(45)に示
されたマイクロプログラムのエントリ番地からの一連の
マイクロプログラムを実行することにより命令を実行す
る。
マイクロROMの読み出しとマイクロ命令の実行はパイ
プライン化されて行われる。従つてマイクロプログラム
で分岐が起きたときは1マイクロステツプの空きができ
る。また、Eステージ(35)はデータ演算部(56)にあ
るストアバツフアを利用して、4バイト以内のオペラン
ドストアと次のマイクロ命令実行をパイプライン処理す
ることもできる。
プライン化されて行われる。従つてマイクロプログラム
で分岐が起きたときは1マイクロステツプの空きができ
る。また、Eステージ(35)はデータ演算部(56)にあ
るストアバツフアを利用して、4バイト以内のオペラン
ドストアと次のマイクロ命令実行をパイプライン処理す
ることもできる。
Eステージ(35)ではAステージ(33)で行つたレジ
スタやメモリに対する書き込み予約をオペランドの書き
込みの後、解除する。
スタやメモリに対する書き込み予約をオペランドの書き
込みの後、解除する。
また、条件分岐命令がEステージ(35)で分岐を起こ
したときはその条件分岐命令に対する分岐予測が誤つて
いたのであるから分岐履歴の書換えを行う。
したときはその条件分岐命令に対する分岐予測が誤つて
いたのであるから分岐履歴の書換えを行う。
Eステージ(35)で検出されるEITにはバスアクセス
例外、アドレス変換例外、デバツクトラツプ、奇数アド
レスジヤンプトラツプ、予約機能例外、不正オペランド
例外、予約スタツクフオーマツト例外、ゼロ除算トラツ
プ、無条件トラツプ、条件トラツプ、遅延コンテキスト
トラツプ、外部割込、遅延割込、リセツト割込、システ
ム障害がある。
例外、アドレス変換例外、デバツクトラツプ、奇数アド
レスジヤンプトラツプ、予約機能例外、不正オペランド
例外、予約スタツクフオーマツト例外、ゼロ除算トラツ
プ、無条件トラツプ、条件トラツプ、遅延コンテキスト
トラツプ、外部割込、遅延割込、リセツト割込、システ
ム障害がある。
Eステージ(35)で検出されたEITはすべてEIT処理さ
れるがEステージ以前のIFステージ(31)〜Fステージ
(34)の間で検出されRコード(43)やSコード(46)
に反映されているEITは必ずEIT処理されるとは限らな
い。IFステージ(31)〜Fステージ(34)の間で検出し
たが、先行の命令がEステージ(35)でジヤンプ命令が
実行されたなどの原因でEステージ(35)まで到達しな
かつたEITはすべてキヤンセルされる。そのEITを起こし
た命令はそもそも実行されなかつたことになる。
れるがEステージ以前のIFステージ(31)〜Fステージ
(34)の間で検出されRコード(43)やSコード(46)
に反映されているEITは必ずEIT処理されるとは限らな
い。IFステージ(31)〜Fステージ(34)の間で検出し
たが、先行の命令がEステージ(35)でジヤンプ命令が
実行されたなどの原因でEステージ(35)まで到達しな
かつたEITはすべてキヤンセルされる。そのEITを起こし
た命令はそもそも実行されなかつたことになる。
外部割込や遅延割込は命令の切れ目でEステージ(3
5)で直接受け付けられ、マイクロプログラムにより必
要な処理が実行される。その他の各種EITも処理はマイ
クロプログラムにより行われる。
5)で直接受け付けられ、マイクロプログラムにより必
要な処理が実行される。その他の各種EITも処理はマイ
クロプログラムにより行われる。
(3.3)各パイプラインステージの状態制御 パイプラインの各ステージは入力ラツチを持ち、他の
ステージとは独立に動作することを基本とする。各ステ
ージは1つ前に行つた処理が終わり、その処理結果を出
力ラツチから次のステージの入力ラツチに転送し、自分
のステージの入力ラツチに次の処理に必要な入力信号が
すべてそろえば次の処理を開始する。
ステージとは独立に動作することを基本とする。各ステ
ージは1つ前に行つた処理が終わり、その処理結果を出
力ラツチから次のステージの入力ラツチに転送し、自分
のステージの入力ラツチに次の処理に必要な入力信号が
すべてそろえば次の処理を開始する。
つまり、各ステージは、1つ前段のステージから出力
されてくる次の処理に対する入力信号がすべて有効とな
り、今の処理結果を後段のステージの入力ラツチに転送
して出力ラツチが空になると次の処理を開始する。
されてくる次の処理に対する入力信号がすべて有効とな
り、今の処理結果を後段のステージの入力ラツチに転送
して出力ラツチが空になると次の処理を開始する。
各ステージが動作を開始する1つの前のクロツクタイ
ミングで入力信号がすべてそろっている必要がある。入
力信号がそろつていないと、そのステージは待ち状態
(入力待ち)になる。出力ラツチから次のステージの入
力ラツチへの転送を行うときは次のステージの入力ラツ
チが空き状態になつている必要があり、次のステージの
入力ラツチが空きでない場合もパイプラインステージ待
ち状態(出力待ち)になる。必要なメモリアクセス権が
獲得できなかつたり、処理しているメモリアクセスにウ
エイトが挿入されたり、その他のパイプランインコンフ
リクトが生じると、各ステージの処理自体が遅延する。
ミングで入力信号がすべてそろっている必要がある。入
力信号がそろつていないと、そのステージは待ち状態
(入力待ち)になる。出力ラツチから次のステージの入
力ラツチへの転送を行うときは次のステージの入力ラツ
チが空き状態になつている必要があり、次のステージの
入力ラツチが空きでない場合もパイプラインステージ待
ち状態(出力待ち)になる。必要なメモリアクセス権が
獲得できなかつたり、処理しているメモリアクセスにウ
エイトが挿入されたり、その他のパイプランインコンフ
リクトが生じると、各ステージの処理自体が遅延する。
(4)分岐命令の処理 本発明のデータ処理装置では上記に説明したように多
段のパイプライン処理を採用しているため分岐命令を実
行した際のオーバーヘツドが大きい。このオーバーヘツ
ド小さくするため動的分岐予測処理を行う。動的分岐予
測処理は実行ステージで分岐を行う代わりにデコードス
テージで分岐を行うことによりなるべく早く分岐先命令
を取り込むことを狙いとしている。
段のパイプライン処理を採用しているため分岐命令を実
行した際のオーバーヘツドが大きい。このオーバーヘツ
ド小さくするため動的分岐予測処理を行う。動的分岐予
測処理は実行ステージで分岐を行う代わりにデコードス
テージで分岐を行うことによりなるべく早く分岐先命令
を取り込むことを狙いとしている。
本発明のデータ処理装置に限らず、データ処理装置で
は、一般に分岐命令が実行される頻度は大きく、動的分
岐予測処理による性能改善効果は大きい。
は、一般に分岐命令が実行される頻度は大きく、動的分
岐予測処理による性能改善効果は大きい。
(4.1)分岐命令の種類 本発明のデータ処理装置では動的分岐予測処理を行う
命令をプリブランチ命令と呼ぶ。プリブランチ命令には
無条件分岐命令のように、動的な予測にかかわらず、必
ず分岐する命令も含む。
命令をプリブランチ命令と呼ぶ。プリブランチ命令には
無条件分岐命令のように、動的な予測にかかわらず、必
ず分岐する命令も含む。
本発明のデータ処理装置がもつ分岐命令は分岐条件が
スタテイツクかダイナミツクか及び分岐先がスタテイツ
クかダイナミツクかにより計4種類に分類できるが、本
発明のデータ処理装置ではこのうちつぎの2種類に分類
される命令をプリブランチ命令とする。
スタテイツクかダイナミツクか及び分岐先がスタテイツ
クかダイナミツクかにより計4種類に分類できるが、本
発明のデータ処理装置ではこのうちつぎの2種類に分類
される命令をプリブランチ命令とする。
第1の種類の分岐命令は分岐条件、分岐先ともスタテ
イツクな命令である。この種の命令には無条件分岐命令
(BRA)とサブルーチン呼び出し命令(BSR)がある。第
2の種類の分岐命令は分岐条件がダイナミツクで分岐先
がスタテイツクな命令である。この種の命令には条件分
岐命令(Bcc)、ループ制御命令(ACB)がある。したが
って、ループ制御命令ACBも広義の意味で条件分岐命令
に該当する。
イツクな命令である。この種の命令には無条件分岐命令
(BRA)とサブルーチン呼び出し命令(BSR)がある。第
2の種類の分岐命令は分岐条件がダイナミツクで分岐先
がスタテイツクな命令である。この種の命令には条件分
岐命令(Bcc)、ループ制御命令(ACB)がある。したが
って、ループ制御命令ACBも広義の意味で条件分岐命令
に該当する。
(4.2)分岐命令処理回路の機能構成 第1図に本発明のデータ処理装置の分岐命令処理回路
の構成を示す。第1図には命令フエツチ部(51)、命令
デコード部(52)、PC計算部(53)を、オペランドアド
レス計算部(54)、データ演算部(56)、外部バスイン
ターフエイス部(57)のそれぞれに含まれる回路の部分
詳細図と、アドレス出力回路(58)、データ入出力回路
(29)よりなる。
の構成を示す。第1図には命令フエツチ部(51)、命令
デコード部(52)、PC計算部(53)を、オペランドアド
レス計算部(54)、データ演算部(56)、外部バスイン
ターフエイス部(57)のそれぞれに含まれる回路の部分
詳細図と、アドレス出力回路(58)、データ入出力回路
(29)よりなる。
命令デコーダ(111)とPC加算器(132)の入力側、ア
ドレス加算器(124)の入力側は、デイスプレースメン
ト値、分岐命令の変位値を転送するDISPバス(100)で
結ばれている。命令デコーダ(111)とアドレス加算器
(124)の入力側はステツプコード生成に使用した命令
コード長、スタツクプツシユモードのときのプリデクリ
メント値などを転送する補正値バス(101)でも結ばれ
ている。命令デコーダ(111)とPC加算器(132)の入力
側はステツプコード生成に使用した命令コード長を転送
する命令長バス(101)でも結ばれている。レジスタフ
アイル(144)とアドレス加算器(124)入力側はレジス
タフアイル(144)に蓄えられているアドレス値を転送
するAバス(103)に結ばれている。
ドレス加算器(124)の入力側は、デイスプレースメン
ト値、分岐命令の変位値を転送するDISPバス(100)で
結ばれている。命令デコーダ(111)とアドレス加算器
(124)の入力側はステツプコード生成に使用した命令
コード長、スタツクプツシユモードのときのプリデクリ
メント値などを転送する補正値バス(101)でも結ばれ
ている。命令デコーダ(111)とPC加算器(132)の入力
側はステツプコード生成に使用した命令コード長を転送
する命令長バス(101)でも結ばれている。レジスタフ
アイル(144)とアドレス加算器(124)入力側はレジス
タフアイル(144)に蓄えられているアドレス値を転送
するAバス(103)に結ばれている。
命令デコーダ(111)には命令キユー(112)から命令
コードが入力され、分岐予測テーブル(113)から分岐
予測ビツトが入力される。命令デコーダ(111)の出力
部には、分岐予測結果により、条件分岐命令の分岐条件
指定フイールドを、Eステージ(35)にそのまま出力す
るか条件指定を反転して出力するかの選択を行う、分岐
条件生成回路(114)がある。
コードが入力され、分岐予測テーブル(113)から分岐
予測ビツトが入力される。命令デコーダ(111)の出力
部には、分岐予測結果により、条件分岐命令の分岐条件
指定フイールドを、Eステージ(35)にそのまま出力す
るか条件指定を反転して出力するかの選択を行う、分岐
条件生成回路(114)がある。
命令長バス(101)の値とDISPバス(100)の値のどち
らかを選択して入力する被加算値選択回路(131)の出
力と、Dステージ(32)でデコードした命令のPC値を保
持するDPC(135)またはステツプコードの切れ目毎の作
業用PC値を保持するTPC(134)のどちらかと、はPC加算
器(132)に入力される。PC加算器(132)の出力はPC加
算器出力ラツチ(133)を通してCAバス(104)やPOバス
(105)に出力される。POバス(105)はラツチTPC(13
4)、ラツチDPC(135)、Aステージで処理中の命令のP
C値を保持するラツチAPC(136)、さらに分岐予測テー
ブル(113)にも結合している。TPC(134)にはEステ
ージ(35)で分岐やジヤンプが生じたとき、新たな命令
番地を入力するため、CAバス(103)からの入力経路も
ある。
らかを選択して入力する被加算値選択回路(131)の出
力と、Dステージ(32)でデコードした命令のPC値を保
持するDPC(135)またはステツプコードの切れ目毎の作
業用PC値を保持するTPC(134)のどちらかと、はPC加算
器(132)に入力される。PC加算器(132)の出力はPC加
算器出力ラツチ(133)を通してCAバス(104)やPOバス
(105)に出力される。POバス(105)はラツチTPC(13
4)、ラツチDPC(135)、Aステージで処理中の命令のP
C値を保持するラツチAPC(136)、さらに分岐予測テー
ブル(113)にも結合している。TPC(134)にはEステ
ージ(35)で分岐やジヤンプが生じたとき、新たな命令
番地を入力するため、CAバス(103)からの入力経路も
ある。
補正値バス(102)の出力とDISPバス(100)の出力は
デイスプレースメント選択回路(122)に入力され、ど
ちらか一方がアドレス加算器(124)に入力される。DIS
Pバス(100)出力とAバス(103)出力はベースアドレ
ス選択回路(123)に入力され、どちらか一方がアドレ
ス加算器(124)に入力される。アドレス加算器(124)
は、デイスプレースメント選択回路(122)の出力、ベ
ースアドレス選択回路(123)の出力、それにAバス(1
03)より入力された値をシフトすることにより、1倍、
2倍、4倍、8倍の値とするインデツクス値生成回路
(121)の出力、の計3つの値を入力として、3値加算
を行う。アドレス加算器(124)の出力値はアドレス加
算器出力ラツチ(125)を通して、AOバス(106)に出力
される。AOバス(106)は、メモリ間接アドレツシング
を行うとき、AAバス(107)を通してアドレス出力回路
(58)からCPU外部にアドレス値を出力するときそのア
ドレス値を保持するラツチIA(126)と、Fステージで
のオペランドプリフエツチ時に、AAバス(107)を通し
てアドレス出力回路(58)からCPU外部にオペランドア
ドレス値を出力するとき、そのオペランドアドレス保持
するラツチFA(127)と、につながる。
デイスプレースメント選択回路(122)に入力され、ど
ちらか一方がアドレス加算器(124)に入力される。DIS
Pバス(100)出力とAバス(103)出力はベースアドレ
ス選択回路(123)に入力され、どちらか一方がアドレ
ス加算器(124)に入力される。アドレス加算器(124)
は、デイスプレースメント選択回路(122)の出力、ベ
ースアドレス選択回路(123)の出力、それにAバス(1
03)より入力された値をシフトすることにより、1倍、
2倍、4倍、8倍の値とするインデツクス値生成回路
(121)の出力、の計3つの値を入力として、3値加算
を行う。アドレス加算器(124)の出力値はアドレス加
算器出力ラツチ(125)を通して、AOバス(106)に出力
される。AOバス(106)は、メモリ間接アドレツシング
を行うとき、AAバス(107)を通してアドレス出力回路
(58)からCPU外部にアドレス値を出力するときそのア
ドレス値を保持するラツチIA(126)と、Fステージで
のオペランドプリフエツチ時に、AAバス(107)を通し
てアドレス出力回路(58)からCPU外部にオペランドア
ドレス値を出力するとき、そのオペランドアドレス保持
するラツチFA(127)と、につながる。
FA(127)は、アドレス加算器(124)で計算されたオ
ペランドアドレスをEステージ(35)で使用するために
オペランドアドレス値を保持するラツチSA(141)への
出力経路ももつ。SA(141)はデータ演算部(56)の汎
用データバスであるSバス(109)への出力経路をも
つ。命令のアドレスを転送するCAバス(104)はPC加算
器出力ラツチ(133)と、TPC(134)と、命令フエツチ
部(51)がプリフエツチする命令コードの番地を管理す
るカウンタQINPC(115)と、命令フエツチのためのアド
レスをAAバス(107)を通してアドレス出力回路(58)
からCPU外部に出力するときその値を保持するラツチCAA
(142)と、Eステージ(35)で分岐やジヤンプが起き
たときに新たな命令番地をSバス(109)から入力する
ラツチEB(143)と、に結合している。APC(136)はA
バス(103)と、Fステージ(34)で処理中の命令のPC
値を保持するラツチFPC(137)とに出力経路がある。FP
C(137)はEステージ(35)で処理中の命令のPC値を保
持する。ラツチCPC(138)への出力経路をもつ。CPC(1
38)はSバス(109)と、分岐履歴書換えのためにPC値
の最下位バイトの値を保持するラツチOPC(139)とに出
力経路をもつ。レジスタフアイル(144)は汎用レジス
タや作業用レジスタなどからなり、Sバス(109)とA
バス(103)への出力経路をもち、Dバス(110)から入
力経路を持つ。データ演算部(56)の演算機構であるデ
ータ演算器(145)はSバス(109)から入力経路をも
ち、Dバス(110)への出力経路を持つ。
ペランドアドレスをEステージ(35)で使用するために
オペランドアドレス値を保持するラツチSA(141)への
出力経路ももつ。SA(141)はデータ演算部(56)の汎
用データバスであるSバス(109)への出力経路をも
つ。命令のアドレスを転送するCAバス(104)はPC加算
器出力ラツチ(133)と、TPC(134)と、命令フエツチ
部(51)がプリフエツチする命令コードの番地を管理す
るカウンタQINPC(115)と、命令フエツチのためのアド
レスをAAバス(107)を通してアドレス出力回路(58)
からCPU外部に出力するときその値を保持するラツチCAA
(142)と、Eステージ(35)で分岐やジヤンプが起き
たときに新たな命令番地をSバス(109)から入力する
ラツチEB(143)と、に結合している。APC(136)はA
バス(103)と、Fステージ(34)で処理中の命令のPC
値を保持するラツチFPC(137)とに出力経路がある。FP
C(137)はEステージ(35)で処理中の命令のPC値を保
持する。ラツチCPC(138)への出力経路をもつ。CPC(1
38)はSバス(109)と、分岐履歴書換えのためにPC値
の最下位バイトの値を保持するラツチOPC(139)とに出
力経路をもつ。レジスタフアイル(144)は汎用レジス
タや作業用レジスタなどからなり、Sバス(109)とA
バス(103)への出力経路をもち、Dバス(110)から入
力経路を持つ。データ演算部(56)の演算機構であるデ
ータ演算器(145)はSバス(109)から入力経路をも
ち、Dバス(110)への出力経路を持つ。
(4.3)分岐予測方法 本発明のデータ処理装置では無条件分岐命令BRA、サ
ブルーチン分岐命令BSR、ループ制御命令ACB、3つの命
令については、分岐予測テーブルの出力である分岐予測
ビツトにかかわらず、必ず分岐すると予測する。BRA,BS
Rに対してはこの予測は必ず正しい。
ブルーチン分岐命令BSR、ループ制御命令ACB、3つの命
令については、分岐予測テーブルの出力である分岐予測
ビツトにかかわらず、必ず分岐すると予測する。BRA,BS
Rに対してはこの予測は必ず正しい。
ACBはループ制御変数に指定された値を加えて、その
結果がループ終了条件を満たすかどうかを判定し、ルー
プ終了条件を満たさなければ分岐し、満たせば分岐しな
い命令である。従つて、大多数のソフトウエアではACB
についてもこの予測方法はかなりの確立で正しい。ま
た、ACBに対する本発明のデータ処理装置の特徴的な処
理を意識してソフトウエアを作成すれば意識しない場合
より効率的なプログラムを作成することが可能である。
結果がループ終了条件を満たすかどうかを判定し、ルー
プ終了条件を満たさなければ分岐し、満たせば分岐しな
い命令である。従つて、大多数のソフトウエアではACB
についてもこの予測方法はかなりの確立で正しい。ま
た、ACBに対する本発明のデータ処理装置の特徴的な処
理を意識してソフトウエアを作成すれば意識しない場合
より効率的なプログラムを作成することが可能である。
条件分岐命令Bccについては分岐するかしないかを過
去の履歴に従つて判断する。履歴はBcc命令の1つ前に
実行した命令のアドレスの下位8ビツトのアドレスをも
とに行う。分岐予測は過去1回の分岐履歴のみに従い、
1ビツトで示される。
去の履歴に従つて判断する。履歴はBcc命令の1つ前に
実行した命令のアドレスの下位8ビツトのアドレスをも
とに行う。分岐予測は過去1回の分岐履歴のみに従い、
1ビツトで示される。
(4.4)分岐予測テーブルの構成 第4図に分岐予測テーブル(113)の詳細を示す。PO
バス(105)からの入力7ビツトとOPC(139)からの入
力7ビツトはセレクタ(151)を通して、デコーダ(15
2)に入力される。デコーダ(152)では7ビツトを128
ビツトにデコードして128ビツトの分岐履歴ラツチ(15
3)のうち1つを分岐予測値として分岐予測出力ラツチ
(154)に出力する。
バス(105)からの入力7ビツトとOPC(139)からの入
力7ビツトはセレクタ(151)を通して、デコーダ(15
2)に入力される。デコーダ(152)では7ビツトを128
ビツトにデコードして128ビツトの分岐履歴ラツチ(15
3)のうち1つを分岐予測値として分岐予測出力ラツチ
(154)に出力する。
128ビツトの分岐履歴ラツチ(153)はクリア信号(15
7)が入力されると一斉に値をゼロにして「分岐しな
い」を示す。分岐予測出力ラツチ(154)は予測反転回
路(155)によりその内容を反転して分岐予測更新ラツ
チ(156)に結合されている。
7)が入力されると一斉に値をゼロにして「分岐しな
い」を示す。分岐予測出力ラツチ(154)は予測反転回
路(155)によりその内容を反転して分岐予測更新ラツ
チ(156)に結合されている。
本発明のデータ処理装置では、Dステージ(32)でデ
コードしようとする命令の1つ前にDステージ(32)で
デコードされた命令のアドレスの下位8ビツトをもとに
分岐予測テーブル(113)を引いて分岐予測を行う。分
岐予測は過去1回の履歴のみに従つたダイレクトマツピ
ング方式で登録されている。本発明のデータ処理装置で
は命令アドレスの最下位ビツト(右端のビツト)は必ず
ゼロであるため分岐予測テーブルは128ビツトで構成さ
れている。
コードしようとする命令の1つ前にDステージ(32)で
デコードされた命令のアドレスの下位8ビツトをもとに
分岐予測テーブル(113)を引いて分岐予測を行う。分
岐予測は過去1回の履歴のみに従つたダイレクトマツピ
ング方式で登録されている。本発明のデータ処理装置で
は命令アドレスの最下位ビツト(右端のビツト)は必ず
ゼロであるため分岐予測テーブルは128ビツトで構成さ
れている。
分岐予測ビツトを有効に使用するのはBcc命令をデコ
ードするときのみであるが、分岐予測ビツトは、使用す
るかどうかにかかわらず、すべての命令の命令コードと
共に命令デコーダに入力する。このため分岐予測テーブ
ル(113)の参照は、デコードしようとする命令の1つ
前の命令がデコードされているときPC加算器(132)か
ら出力されてくる1つ前の命令のPC値の下位1バイト
(最下位ビツトは不要)で行う。これにより、分岐予測
ビツトは、次のDステージ処理の最初までに命令デコー
ダ(111)に入力される。
ードするときのみであるが、分岐予測ビツトは、使用す
るかどうかにかかわらず、すべての命令の命令コードと
共に命令デコーダに入力する。このため分岐予測テーブ
ル(113)の参照は、デコードしようとする命令の1つ
前の命令がデコードされているときPC加算器(132)か
ら出力されてくる1つ前の命令のPC値の下位1バイト
(最下位ビツトは不要)で行う。これにより、分岐予測
ビツトは、次のDステージ処理の最初までに命令デコー
ダ(111)に入力される。
分岐予測テーブル(113)の分岐履歴はクリア信号(1
57)により初期値をすべて「分岐しない」とできる。分
岐予測の更新はBcc命令がEステージ(35)で分岐した
ときに行われる。Bcc命令がEステージ(35)で分岐を
起こしたとき、それはDステージ(32)での分岐予測が
間違つていたことを意味する。このときEステージ(3
5)で分岐予測の更新(間違つていた分岐履歴の反転)
が行われる。Eステージ(35)ではOPC(139)の内容を
デコーダ(152)に転送し、そのデコード結果で対応す
る分岐履歴ラツチ(153)の内容を分岐予測出力ラツチ
(154)に読み出す。次に、分岐予測出力ラツチ(154)
の内容が反転された分岐予測更新ラツチ(156)の内容
を、同じくOPC(139)の値で示された分岐履歴ラツチ
(153)に書き戻す。
57)により初期値をすべて「分岐しない」とできる。分
岐予測の更新はBcc命令がEステージ(35)で分岐した
ときに行われる。Bcc命令がEステージ(35)で分岐を
起こしたとき、それはDステージ(32)での分岐予測が
間違つていたことを意味する。このときEステージ(3
5)で分岐予測の更新(間違つていた分岐履歴の反転)
が行われる。Eステージ(35)ではOPC(139)の内容を
デコーダ(152)に転送し、そのデコード結果で対応す
る分岐履歴ラツチ(153)の内容を分岐予測出力ラツチ
(154)に読み出す。次に、分岐予測出力ラツチ(154)
の内容が反転された分岐予測更新ラツチ(156)の内容
を、同じくOPC(139)の値で示された分岐履歴ラツチ
(153)に書き戻す。
分岐予測は対象となるBcc命令がデコードされる1つ
前にデコードされた命令のPC値をもとに行われるため分
岐予測テーブル(113)の更新もEステージ(35)でBcc
命令の1つ前に実行された命令のPC値をもとに行う。こ
のためEステージ(35)では現在実行中の命令の1つ前
に実行した命令のPC値の下位1バイト(最下位ビツトは
不要)を記憶しておくOPC(139)があり、分岐予測テー
ブル(113)の更新はこの値を用いて行う。分岐履歴の
更新はEステージ(35)でBcc命令が分岐を起こしたと
きだけしか行われないため、Dステージ(32)の分岐予
測テーブル(13)の参照動作がEステージ(35)の更新
に妨げられることはない。Eステージ(35)で分岐が起
きた直後はDステージ(32)はIFステージ(31)からの
命令コード待ち状態となる。分岐履歴の書換えは、この
命令コード待ち状態の間に行われる。
前にデコードされた命令のPC値をもとに行われるため分
岐予測テーブル(113)の更新もEステージ(35)でBcc
命令の1つ前に実行された命令のPC値をもとに行う。こ
のためEステージ(35)では現在実行中の命令の1つ前
に実行した命令のPC値の下位1バイト(最下位ビツトは
不要)を記憶しておくOPC(139)があり、分岐予測テー
ブル(113)の更新はこの値を用いて行う。分岐履歴の
更新はEステージ(35)でBcc命令が分岐を起こしたと
きだけしか行われないため、Dステージ(32)の分岐予
測テーブル(13)の参照動作がEステージ(35)の更新
に妨げられることはない。Eステージ(35)で分岐が起
きた直後はDステージ(32)はIFステージ(31)からの
命令コード待ち状態となる。分岐履歴の書換えは、この
命令コード待ち状態の間に行われる。
(4.5)PC計算部の動作 PC計算部はDステージ(32)で命令コードがデコード
されるとき、1つ前にデコードされた命令コードの先頭
番地とからデコード中の命令コードの先頭番地を計算す
る。PC計算部ではDPC(135)に命令の切れ目のアドレス
である命令のPC値を保持し、TPC(134)にステツプコー
ドの切れ目のアドレスを管理する。DPC(135)は命令の
切れ目のアドレスが計算されたときだけ書き換えられ
る。TPC(134)はステツプコードの切れ目のアドレス、
つまり命令デコード処理ごとに書き換えられる。パイプ
ライン上で処理されるステップコードのPC値はそのステ
ツプコードのもとになつた命令のPC値が必要であるた
め、DPC(135)の値がAPC(136)、FPC(137)、CPD(1
38)と転送されていく。
されるとき、1つ前にデコードされた命令コードの先頭
番地とからデコード中の命令コードの先頭番地を計算す
る。PC計算部ではDPC(135)に命令の切れ目のアドレス
である命令のPC値を保持し、TPC(134)にステツプコー
ドの切れ目のアドレスを管理する。DPC(135)は命令の
切れ目のアドレスが計算されたときだけ書き換えられ
る。TPC(134)はステツプコードの切れ目のアドレス、
つまり命令デコード処理ごとに書き換えられる。パイプ
ライン上で処理されるステップコードのPC値はそのステ
ツプコードのもとになつた命令のPC値が必要であるた
め、DPC(135)の値がAPC(136)、FPC(137)、CPD(1
38)と転送されていく。
命令のデコードは(3.1.2)の節で述べたようにステ
ツプコード単位に行われ、1回のデコード処理で0〜6
バイトの命令コードが消費される。命令デコード処理ご
とに判明したそのとき使用した命令コードの長さが命令
デコーダ(111)から命令長バス(101)に出力される。
ツプコード単位に行われ、1回のデコード処理で0〜6
バイトの命令コードが消費される。命令デコード処理ご
とに判明したそのとき使用した命令コードの長さが命令
デコーダ(111)から命令長バス(101)に出力される。
プリブランチしない場合、Dステージ(32)は引き続
く次の命令のデコード処理を行うと同時に、PC計算部
(53)で引き続く次の命令のPC値を計算するため、TPC
(134)の値と命令長バス(101)から転送されたデコー
ドで消費した命令コード長さとの加算を行いTPC(134)
に加算結果を書き戻す。つまり、あるステツプコードの
先頭アドレスはそのステツプコードがデコード処理によ
り生成されたときに計算されるのである。プリブランチ
以外ではデコードすべき命令コードは命令キユー(11
2)から次々と出力されるため、デコード開始段階でそ
のコードの先頭アドレスを知る必要はない。Dステージ
(32)で生成したステツプコードが命令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値が書き込まれる。
く次の命令のデコード処理を行うと同時に、PC計算部
(53)で引き続く次の命令のPC値を計算するため、TPC
(134)の値と命令長バス(101)から転送されたデコー
ドで消費した命令コード長さとの加算を行いTPC(134)
に加算結果を書き戻す。つまり、あるステツプコードの
先頭アドレスはそのステツプコードがデコード処理によ
り生成されたときに計算されるのである。プリブランチ
以外ではデコードすべき命令コードは命令キユー(11
2)から次々と出力されるため、デコード開始段階でそ
のコードの先頭アドレスを知る必要はない。Dステージ
(32)で生成したステツプコードが命令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ステージ(3
1)に初期化指示を出し、加算結果である分岐命令のPC
値をTPC(134)とDPC(135)に書き込むと共に、CAバス
(104)にも出力してQINPC(115)、CAA(142)にも書
き込む。
ンチ命令の最後のステツプコードを出力した後、命令デ
コーダ(111)の処理を止め、分岐先命令のPC値を計算
するため、DPC(135)の値とDISPバス(100)より転送
された分岐変位の加算を行う。さらに、IFステージ(3
1)に初期化指示を出し、加算結果である分岐命令のPC
値をTPC(134)とDPC(135)に書き込むと共に、CAバス
(104)にも出力してQINPC(115)、CAA(142)にも書
き込む。
プリブランチによる分岐先命令アドレス計算の際、奇
数アドレスジヤンプトラツプの検出も行ない、Dコード
(41)中にその結果をパラメータとして示す。Eステー
ジ(35)ではプリブランチが正しいと判明した時に、奇
数アドレスジヤンプトラツプを起動する。プリブランチ
が間違つていて、再びEステージ(35)で分岐が生じた
ときはプリブランチで検出した奇数アドレスジヤンプト
ラツプは無視される。このため、Dステージ(32)で検
出された奇数アドレスジヤンプトラツプはその他のEIT
とは別扱いとなっている。また、Eステージ(35)では
奇数アドレスジヤンプトラツプの起動処理に奇数となつ
た命令アドレスの値を必要とする。このため、Dステー
ジ(32)は奇数アドレスジヤンプトラツプの検出を行つ
たとき、その奇数アドレス値をPC値とした特殊なステツ
プコード(OAJTステツプコード)を発生する。OAJTステ
ツプコードに対してAステージ(33)、Fステージ(3
4)はそのコードを次のステージに伝える。Eステージ
(35)はプリブランチが正しいと判断し、しかもそのプ
リブランチが奇数アドレスジヤンプトラツプを検出して
いるとき、CPC(138)を通して次に転送されてくるOAJT
ステツプコードのPC値を使用して奇数アドレスジヤンプ
トラツプの移動処理を行う。
数アドレスジヤンプトラツプの検出も行ない、Dコード
(41)中にその結果をパラメータとして示す。Eステー
ジ(35)ではプリブランチが正しいと判明した時に、奇
数アドレスジヤンプトラツプを起動する。プリブランチ
が間違つていて、再びEステージ(35)で分岐が生じた
ときはプリブランチで検出した奇数アドレスジヤンプト
ラツプは無視される。このため、Dステージ(32)で検
出された奇数アドレスジヤンプトラツプはその他のEIT
とは別扱いとなっている。また、Eステージ(35)では
奇数アドレスジヤンプトラツプの起動処理に奇数となつ
た命令アドレスの値を必要とする。このため、Dステー
ジ(32)は奇数アドレスジヤンプトラツプの検出を行つ
たとき、その奇数アドレス値をPC値とした特殊なステツ
プコード(OAJTステツプコード)を発生する。OAJTステ
ツプコードに対してAステージ(33)、Fステージ(3
4)はそのコードを次のステージに伝える。Eステージ
(35)はプリブランチが正しいと判断し、しかもそのプ
リブランチが奇数アドレスジヤンプトラツプを検出して
いるとき、CPC(138)を通して次に転送されてくるOAJT
ステツプコードのPC値を使用して奇数アドレスジヤンプ
トラツプの移動処理を行う。
Eステージ(35)で分岐が生じたときは分岐先アドレ
スがEB(143)からCAバス(104)を通じてTPC(134)に
転送されてくる。PC計算部(53)はこの値とゼロを加算
して結果をPOバス(105)からTPC(134)、DPC(135)
に書き込む。これでPC計算部(53)の初期化が完了す
る。この初期化の処理はEステージ(35)で分岐が生じ
た最初の単位デコード処理とオーバーラツプしてなされ
る。なお、QINPC(115),CAA(142)にはCAバス(104)
よりTPC(134)に値を取り込む際に同じ値がセツトされ
る。
スがEB(143)からCAバス(104)を通じてTPC(134)に
転送されてくる。PC計算部(53)はこの値とゼロを加算
して結果をPOバス(105)からTPC(134)、DPC(135)
に書き込む。これでPC計算部(53)の初期化が完了す
る。この初期化の処理はEステージ(35)で分岐が生じ
た最初の単位デコード処理とオーバーラツプしてなされ
る。なお、QINPC(115),CAA(142)にはCAバス(104)
よりTPC(134)に値を取り込む際に同じ値がセツトされ
る。
(4.7)プリブランチ命令に対するオペランドアドレス
計算部の動作 プリブランチ命令に対して、Dステージ(32)がプリ
ブランチ処理を行わなかつた場合、オペランドアドレス
計算部(54)がプリブランチ命令の分岐先アドレスを計
算する。分岐先アドレスの計算は、Aバス(103)より
転送されてくるAPC(136)の値とDISPバス(100)より
転送されてくる分岐変位値をアドレス加算器(124)で
加算することにより行われる。計算された分岐先アドレ
スはEステージ(35)に伝えられる。Aステージ(33)
で、オペランドアドレス計算部(54)を使用した分岐先
アドレスの計算の際は、奇数アドレスジヤンプトラツプ
の検出は行わない。Eステージ(35)に転送される分岐
先アドレスが奇数であることにより、奇数アドレスジヤ
ンプトラツプの情報が伝えられるのである。
計算部の動作 プリブランチ命令に対して、Dステージ(32)がプリ
ブランチ処理を行わなかつた場合、オペランドアドレス
計算部(54)がプリブランチ命令の分岐先アドレスを計
算する。分岐先アドレスの計算は、Aバス(103)より
転送されてくるAPC(136)の値とDISPバス(100)より
転送されてくる分岐変位値をアドレス加算器(124)で
加算することにより行われる。計算された分岐先アドレ
スはEステージ(35)に伝えられる。Aステージ(33)
で、オペランドアドレス計算部(54)を使用した分岐先
アドレスの計算の際は、奇数アドレスジヤンプトラツプ
の検出は行わない。Eステージ(35)に転送される分岐
先アドレスが奇数であることにより、奇数アドレスジヤ
ンプトラツプの情報が伝えられるのである。
Dステージ(32)がプリブランチ処理をした場合、Bc
c命令、ACB命令に対しては、Aステージ(33)がそのプ
リブランチ命令に引き続くアドレスにある次の命令のPC
値(非分岐先アドレス)を計算する。計算結果はEステ
ージ(35)に伝えられ、プリブランチが間違つていたと
きの再度の分岐先アドレスとして使用される。
c命令、ACB命令に対しては、Aステージ(33)がそのプ
リブランチ命令に引き続くアドレスにある次の命令のPC
値(非分岐先アドレス)を計算する。計算結果はEステ
ージ(35)に伝えられ、プリブランチが間違つていたと
きの再度の分岐先アドレスとして使用される。
Bcc命令など、Dステージ(132)で1ステツプコード
にデコードされる命令に対しては、Aバス(104)より
転送されてくるAPC(136)の値に補正値バス(102)か
ら転送されてくるBcc命令の命令長を加算して、加算結
果をAOバス(106)よりFA(127)に書き込む。ステツプ
コードが2つ以上に分かれるフオーマツトをもつACB命
令に対してはDISPバス(100)より転送されてくる最後
のステツプコードの先頭アドレスであるTPC(134)の値
と補正値バス(102)から転送されてくる最後のステツ
プコードのデコードで使用した命令コードの長さを加算
して、加算結果をAOバス(106)によりFA(127)に書き
込む。
にデコードされる命令に対しては、Aバス(104)より
転送されてくるAPC(136)の値に補正値バス(102)か
ら転送されてくるBcc命令の命令長を加算して、加算結
果をAOバス(106)よりFA(127)に書き込む。ステツプ
コードが2つ以上に分かれるフオーマツトをもつACB命
令に対してはDISPバス(100)より転送されてくる最後
のステツプコードの先頭アドレスであるTPC(134)の値
と補正値バス(102)から転送されてくる最後のステツ
プコードのデコードで使用した命令コードの長さを加算
して、加算結果をAOバス(106)によりFA(127)に書き
込む。
BSR命令についてはプリブランチは必ず正しいわけで
あるが、リターンアドレスとしてBSR命令の次の命令の
アドレスが必要なためオペランドアドレス計算部(54)
でアドレス計算を行う。BSR命令のフオーマツトは第33
図に示す。第33図で#dsはBSRの分岐変位を32ビツトの
2進数で指定するフイールドである。BSRはDステージ
(32)で1ステツプコードにデコードされる命令であ
り、Bccと同様にAバス(103)より転送されてくるAPC
(136)の値と補正値バス(102)より転送されてくるBS
Rの命令長との加算を行う。また、BSR命令に対するリタ
ーンアドレス計算の手法はTRAP(無条件トラツプ)命令
とTRAP/cccc(条件トラツプ)命令でも使用される。
あるが、リターンアドレスとしてBSR命令の次の命令の
アドレスが必要なためオペランドアドレス計算部(54)
でアドレス計算を行う。BSR命令のフオーマツトは第33
図に示す。第33図で#dsはBSRの分岐変位を32ビツトの
2進数で指定するフイールドである。BSRはDステージ
(32)で1ステツプコードにデコードされる命令であ
り、Bccと同様にAバス(103)より転送されてくるAPC
(136)の値と補正値バス(102)より転送されてくるBS
Rの命令長との加算を行う。また、BSR命令に対するリタ
ーンアドレス計算の手法はTRAP(無条件トラツプ)命令
とTRAP/cccc(条件トラツプ)命令でも使用される。
TRAPA命令、TRAP/cccc命令もDステージ(32)で1ス
テツプコードにデコードされる命令あり、BSRと同様に
アドレツシングモード指定フイールドを持たず、オペラ
ンドアドレス計算部(54)はこれらの命令のオペランド
アドレスの計算は行わない。TRAPA命令とTRAP/cccc命令
のフオーマツトは第34図に示す。第34図で(301)はTRA
PA命令のフオーマツト、(302)はTRAP/cccc命令のフオ
ーマツトである。第34図で#d4はTRAPA命令のベクトル
値指定フイールドであり、cccc(303)はトラツプ条件
指定フイールドである。TRAPA、TRAP/ccccではオペラン
ドアドレスの計算を行わないかわりに、これらの命令の
PC値であるAPC(136)と補正値バス(102)より転送さ
れてくるこれらの命令の命令長との加算を行う。
テツプコードにデコードされる命令あり、BSRと同様に
アドレツシングモード指定フイールドを持たず、オペラ
ンドアドレス計算部(54)はこれらの命令のオペランド
アドレスの計算は行わない。TRAPA命令とTRAP/cccc命令
のフオーマツトは第34図に示す。第34図で(301)はTRA
PA命令のフオーマツト、(302)はTRAP/cccc命令のフオ
ーマツトである。第34図で#d4はTRAPA命令のベクトル
値指定フイールドであり、cccc(303)はトラツプ条件
指定フイールドである。TRAPA、TRAP/ccccではオペラン
ドアドレスの計算を行わないかわりに、これらの命令の
PC値であるAPC(136)と補正値バス(102)より転送さ
れてくるこれらの命令の命令長との加算を行う。
(4.8)各分岐命令の処理方法の詳細 本発明のデータ処理装置がプリブランチを行う命令に
ついてここでまとめる。
ついてここでまとめる。
(4.8.1)BRA命令 BRA命令は無条件分岐命令であり、実行されると必ず
分岐を起こす。
分岐を起こす。
BRA命令は必ず分岐を起こすためDステージ(32)で
は分岐予測ビツトによらず必ず分岐すると判断してプリ
ブランチ処理をする。Aステージ(33)、Fステージ
(34)ではBRA命令はそのまた転送され、EIT検出があつ
たどうかを示すフラツグとPC値だけがEステージ(35)
に転送されていく。Eステージ(35)ではBRAに対して
分岐処理はしない。
は分岐予測ビツトによらず必ず分岐すると判断してプリ
ブランチ処理をする。Aステージ(33)、Fステージ
(34)ではBRA命令はそのまた転送され、EIT検出があつ
たどうかを示すフラツグとPC値だけがEステージ(35)
に転送されていく。Eステージ(35)ではBRAに対して
分岐処理はしない。
(4.8.2)BSR命令 BSR命令はサブルーチン分岐命令であり、実行される
とBSRの次のアドレスにある命令のPC値をスタツクにプ
ツシユして、必ず分岐を起こす。命令フオーマツトは第
33図に示されている。
とBSRの次のアドレスにある命令のPC値をスタツクにプ
ツシユして、必ず分岐を起こす。命令フオーマツトは第
33図に示されている。
BSR命令は必ず分岐を起こすためDステージ(32)で
は分岐予測ビツトによらず必ず分岐すると判断してプリ
ブランチ処理をする。Aステージ(33)ではAPC(136)
とBSRの命令長を加算してサブルーチンからのリターン
アドレス(非分岐先アドレス)を計算する。計算された
リターンアドレスはBSRのオペランドとしてEステージ
(35)に渡される。Eステージ(35)ではBSR命令に対
してリターンアドレスをスタツクにプツシユし、分岐処
理はしない。
は分岐予測ビツトによらず必ず分岐すると判断してプリ
ブランチ処理をする。Aステージ(33)ではAPC(136)
とBSRの命令長を加算してサブルーチンからのリターン
アドレス(非分岐先アドレス)を計算する。計算された
リターンアドレスはBSRのオペランドとしてEステージ
(35)に渡される。Eステージ(35)ではBSR命令に対
してリターンアドレスをスタツクにプツシユし、分岐処
理はしない。
(4.8.3)Bcc命令 Bcc命令は条件分布命令で、命令フオーマツトは第35
図に示す。温気条件cccc(304)は4ビツトのフイール
ドである。分岐条件は第35図の分岐条件cccc(304)の
最下位ビツトが「0」か「1」かにより、分岐条件を正
反対にするようになつている。#dsは分岐変位を32ビツ
トの2進数で指定するフイールドである。
図に示す。温気条件cccc(304)は4ビツトのフイール
ドである。分岐条件は第35図の分岐条件cccc(304)の
最下位ビツトが「0」か「1」かにより、分岐条件を正
反対にするようになつている。#dsは分岐変位を32ビツ
トの2進数で指定するフイールドである。
Bcc命令は分岐確立は過去の実行履歴にかなり依存す
るため、Dステージ(32)では分岐予測テーブル(11
3)から出力される分岐予測ビツトの値に従い、分岐す
るかどうかを判断する。Bcc命令の分岐確立の実行履歴
依存性についても上記のJ.K.F.Lee,A.J.Smith,「Branch
Prediction Strategies and Branch Target Buffer De
sign」,IEEE Computer,Vol.17,No.1,January,1984.で詳
しく述べられている。
るため、Dステージ(32)では分岐予測テーブル(11
3)から出力される分岐予測ビツトの値に従い、分岐す
るかどうかを判断する。Bcc命令の分岐確立の実行履歴
依存性についても上記のJ.K.F.Lee,A.J.Smith,「Branch
Prediction Strategies and Branch Target Buffer De
sign」,IEEE Computer,Vol.17,No.1,January,1984.で詳
しく述べられている。
分岐予測ビツトが「分岐する」を示している場合には
分岐予測命令としてDステージ(32)でプリブランチ処
理を行う。また、分岐予測ビツトが「分岐しない」を示
している場合には非分岐予測命令としてDステージ(3
2)でプリブランチ処理は行わない。プリブランチが行
われた場合には、分岐条件生成回路(114)で第35図の
分岐条件cccc(304)の最下位ビツトが反転されてEス
テージ(35)に渡されるため、Eステージ(35)ではD
ステージ(32)でプリブランチ処理が行われたかどうか
にかかわらず、渡された分岐条件に従いBcc命令を実行
すればよい。もしEステージ(35)でBcc命令が分岐を
起こした場合には、Dステージ(32)での分岐予測が誤
っていたわけであるから、分岐予測テーブル(113)を
アクセスし、OPC(139)で示される場所の分岐予測履歴
の更新はEステージ(35)でBcc命令が分岐を起こした
ときだけしか行われないため、Dステージ(32)の分岐
予測テーブル(113)の参照動作がEステージ(35)の
更新に妨げられることはない。Eステージ(35)で分岐
が起きた直後はDステージ(32)はIFステージ(31)か
らの命令コード待ち状態となる。分岐履歴の書換えは、
この命令コード待ち状態の間に行われる。
分岐予測命令としてDステージ(32)でプリブランチ処
理を行う。また、分岐予測ビツトが「分岐しない」を示
している場合には非分岐予測命令としてDステージ(3
2)でプリブランチ処理は行わない。プリブランチが行
われた場合には、分岐条件生成回路(114)で第35図の
分岐条件cccc(304)の最下位ビツトが反転されてEス
テージ(35)に渡されるため、Eステージ(35)ではD
ステージ(32)でプリブランチ処理が行われたかどうか
にかかわらず、渡された分岐条件に従いBcc命令を実行
すればよい。もしEステージ(35)でBcc命令が分岐を
起こした場合には、Dステージ(32)での分岐予測が誤
っていたわけであるから、分岐予測テーブル(113)を
アクセスし、OPC(139)で示される場所の分岐予測履歴
の更新はEステージ(35)でBcc命令が分岐を起こした
ときだけしか行われないため、Dステージ(32)の分岐
予測テーブル(113)の参照動作がEステージ(35)の
更新に妨げられることはない。Eステージ(35)で分岐
が起きた直後はDステージ(32)はIFステージ(31)か
らの命令コード待ち状態となる。分岐履歴の書換えは、
この命令コード待ち状態の間に行われる。
Bcc命令がプリブランチ時に奇数アドレスジヤンプト
ラツプを検出しており、Eステージ(35)で分岐を起こ
さなかつたときは奇数アドレスジヤンプトラツプを起動
する。Bcc命令がプリブランチ時に奇数アドレスジヤン
プトラツプを検出していてもEステージ(35)で再び分
岐を起こしたときはプリブランチ時の奇数アドレスジヤ
ンプトラツプ検出は無視される。この機能により分岐処
理を行わないBcc命令の実行により、奇数アドレスジヤ
ンプトラツプが検出されることはなくなる。
ラツプを検出しており、Eステージ(35)で分岐を起こ
さなかつたときは奇数アドレスジヤンプトラツプを起動
する。Bcc命令がプリブランチ時に奇数アドレスジヤン
プトラツプを検出していてもEステージ(35)で再び分
岐を起こしたときはプリブランチ時の奇数アドレスジヤ
ンプトラツプ検出は無視される。この機能により分岐処
理を行わないBcc命令の実行により、奇数アドレスジヤ
ンプトラツプが検出されることはなくなる。
(4.8.4)ACB命令 ACB命令はループのプリミテイブとして使用される命
令である。ACBはループ制御変数を増加して、比較し、
条件ジヤンプを行う命令である。
令である。ACBはループ制御変数を増加して、比較し、
条件ジヤンプを行う命令である。
ACBのフオーマツトは第36図に示す。第36図でEaRは一
般形のアドレツシングモードでループ制御変数に加算す
る値を指定するフイールド、EaRXは一般形アドレツシン
グモードでループ制御変数の比較対象値を指定するフイ
ールド、RgMXはループ制御変数の存在する汎用レジスタ
番号を指定するフイールド、#ds8は分岐変位を8ビツ
トの2進数で指定するフイールドである。ACBはDステ
ージ(32)で3ステツプコード以上に分解されてパイプ
ライン上に流れる命令である。
般形のアドレツシングモードでループ制御変数に加算す
る値を指定するフイールド、EaRXは一般形アドレツシン
グモードでループ制御変数の比較対象値を指定するフイ
ールド、RgMXはループ制御変数の存在する汎用レジスタ
番号を指定するフイールド、#ds8は分岐変位を8ビツ
トの2進数で指定するフイールドである。ACBはDステ
ージ(32)で3ステツプコード以上に分解されてパイプ
ライン上に流れる命令である。
ACB命令は分岐する確率が高いため本発明のデータ処
理装置ではこの命令に対して分岐予測ビツトにかかわら
ず、分岐すると判断し分岐予測命令としてプリブランチ
処理を行う。
理装置ではこの命令に対して分岐予測ビツトにかかわら
ず、分岐すると判断し分岐予測命令としてプリブランチ
処理を行う。
この命令はステツプコードが3つ以上(多段間接アド
レツシングモードが含まない場合に3つ)になるため、
プリブランチ処理を最後のステツプコードをDステージ
(32)が出力するときに行う。Dステージ(32)ではAC
BのPC値であるDPC(135)の内容と命令デコーダ(111)
からDISPバス(100)を通して出力される分岐変位を加
算することにより、プリブランチ処理を行う。Aステー
ジ(33)ではプリブランチが間違つていたときにそな
え、ACB命令の次のアドレス命令のPC値(非分岐先アド
レス)を計算するとき、TPC(134)からDISPバス(10
0)を通して転送された最後のステツプコードのデコー
ドに使用した命令コードの先頭番地と、補正値バス(10
2)を通して転送された最後のステツプコードのデコー
ドに使用した命令コードの長さを加算する。
レツシングモードが含まない場合に3つ)になるため、
プリブランチ処理を最後のステツプコードをDステージ
(32)が出力するときに行う。Dステージ(32)ではAC
BのPC値であるDPC(135)の内容と命令デコーダ(111)
からDISPバス(100)を通して出力される分岐変位を加
算することにより、プリブランチ処理を行う。Aステー
ジ(33)ではプリブランチが間違つていたときにそな
え、ACB命令の次のアドレス命令のPC値(非分岐先アド
レス)を計算するとき、TPC(134)からDISPバス(10
0)を通して転送された最後のステツプコードのデコー
ドに使用した命令コードの先頭番地と、補正値バス(10
2)を通して転送された最後のステツプコードのデコー
ドに使用した命令コードの長さを加算する。
この命令に対してはDステージ(32)で必ずプリブラ
ンチが行われているので、Eステージ(35)では、分岐
条件の判断を常に逆に行う。プリブランチ処理が誤つて
いた場合、Eステージ(35)で分岐が起こる。しかし、
この命令は分岐予測テーブル(113)に従つてプリブラ
ンチをするものではないので、プリブランチが間違つて
いた場合でも分岐履歴の書換えは行わない。
ンチが行われているので、Eステージ(35)では、分岐
条件の判断を常に逆に行う。プリブランチ処理が誤つて
いた場合、Eステージ(35)で分岐が起こる。しかし、
この命令は分岐予測テーブル(113)に従つてプリブラ
ンチをするものではないので、プリブランチが間違つて
いた場合でも分岐履歴の書換えは行わない。
またこの命令に対してDステージ(32)でのプリブラ
ンチ時に奇数アドレスジヤンプ例外が検出されたときそ
の検出はBcc命令と同様にパラメータでEステージ(3
5)に伝えられる。Eステージ(35)に伝えられた奇数
アドレスジヤンプトラツプはやはりBcc命令と同様に、
Eステージ(35)で分岐が行われたときには起動され
ず、分岐が行われなかつたときに起動される。この機能
により分岐処理を行わないACB命令の実行により、奇数
アドレスジヤンプトラツプが検出されることはなくな
る。
ンチ時に奇数アドレスジヤンプ例外が検出されたときそ
の検出はBcc命令と同様にパラメータでEステージ(3
5)に伝えられる。Eステージ(35)に伝えられた奇数
アドレスジヤンプトラツプはやはりBcc命令と同様に、
Eステージ(35)で分岐が行われたときには起動され
ず、分岐が行われなかつたときに起動される。この機能
により分岐処理を行わないACB命令の実行により、奇数
アドレスジヤンプトラツプが検出されることはなくな
る。
(5)本発明の他の実施例 上記の実施例では、命令デコーダ(111)からPC計算
部(53)やオペランドアドレス計算部(54)に、命令デ
コードに使用した命令コードの長さを転送するために、
補正値バス(102)と命令長バス(101)の2つのバスを
用いているが、例えば補正値バス(102)からPC計算部
(53)への入力経路を設けて、命令長バス(101)を廃
止してもよい。
部(53)やオペランドアドレス計算部(54)に、命令デ
コードに使用した命令コードの長さを転送するために、
補正値バス(102)と命令長バス(101)の2つのバスを
用いているが、例えば補正値バス(102)からPC計算部
(53)への入力経路を設けて、命令長バス(101)を廃
止してもよい。
また、上記の実施例ではACB命令のプリブランチ処理
でTPC(134)の値をDISPバス(102)を通して、オペラ
ンドアドレス計算部(54)に転送する例を述べたが、こ
のTPC(134)の値の転送はAバス(103)で行つてもよ
い。
でTPC(134)の値をDISPバス(102)を通して、オペラ
ンドアドレス計算部(54)に転送する例を述べたが、こ
のTPC(134)の値の転送はAバス(103)で行つてもよ
い。
(6)本発明の実施態様 本発明は次の1〜3項の実施態様により実施できる。
1.複数の命令うち一の命令をデコードする命令デコード
機構と、 プラグラムカウンタ値を計算する第1の計算機構と、 オペランドアドレスを計算する第2の計算機構と、 オペランドに対して演算を行う演算機構と、 第1〜第3のバスとを備え、 上記命令デコード機構は、デコード対象の命令が、上
記条件分岐命令のうち、分岐条件が成立すると予測され
る分岐予測命令である場合、上記分岐予測命令をデコー
ドして、その命令長を上記第2のバスを介して上記第2
の計算機構に転送するとともに、その分岐変位を上記第
3のバスを介して上記第1の計算機構に出力し、 上記第1の計算機構は、計算対象の命令が上記分岐予
測命令の場合、上記条件分岐命令のプログラムカウンタ
値を上記第1のバスを介して上記第2の計算機構に転送
するとともに、上記分岐予測命令のプログラムカウンタ
値と上記分岐予測命令の分岐変位とを加算して上記分岐
予測命令の上記分岐先アドレスを計算し、 上記第2の計算機構は、計算対象の命令が上記分岐予
測命令の場合、上記分岐予測命令のプログラムカウンタ
値と上記分岐予測命令の命令長とを加算して上記分岐予
測命令の非分岐先アドレスを計算することを特徴とする
データ処理装置。
機構と、 プラグラムカウンタ値を計算する第1の計算機構と、 オペランドアドレスを計算する第2の計算機構と、 オペランドに対して演算を行う演算機構と、 第1〜第3のバスとを備え、 上記命令デコード機構は、デコード対象の命令が、上
記条件分岐命令のうち、分岐条件が成立すると予測され
る分岐予測命令である場合、上記分岐予測命令をデコー
ドして、その命令長を上記第2のバスを介して上記第2
の計算機構に転送するとともに、その分岐変位を上記第
3のバスを介して上記第1の計算機構に出力し、 上記第1の計算機構は、計算対象の命令が上記分岐予
測命令の場合、上記条件分岐命令のプログラムカウンタ
値を上記第1のバスを介して上記第2の計算機構に転送
するとともに、上記分岐予測命令のプログラムカウンタ
値と上記分岐予測命令の分岐変位とを加算して上記分岐
予測命令の上記分岐先アドレスを計算し、 上記第2の計算機構は、計算対象の命令が上記分岐予
測命令の場合、上記分岐予測命令のプログラムカウンタ
値と上記分岐予測命令の命令長とを加算して上記分岐予
測命令の非分岐先アドレスを計算することを特徴とする
データ処理装置。
2.複数の命令うち一の命令をデコードする命令デコード
機構と、 プログラムカウンタ値を計算する第1の計算機構と、 オペランドアドレスを計算する第2の計算機構と、 オペランドに対して演算を行う演算機構と、 第1〜第3のバスとを備え、 上記命令デコード機構は、デコード対象の命令がサブ
ルーチン分岐命令である場合、上記サブルーチン分岐命
令をデコードして、その命令長を上記第2のバスを介し
て上記第2の計算機構に転送するとともに、その分岐変
位を上記第3のバスを介して上記第1の計算機構に出力
し、 上記第1の計算機構は、計算対象の命令がサブルーチ
ン分岐命令の場合、上記サブルーチン分岐命令のプログ
ラムカウンタ値を上記第1のバスを介して上記第2の計
算機構に転送するとともに、上記サブルーチン分岐命令
のプログラムカウンタ値と上記分岐変位とを加算して上
記サブルーチン分岐命令の上記分岐先アドレスを計算
し、 上記第2の計算機構は、計算対象の命令がサブルーチ
ン分岐命令の場合、上記サブルーチン命令のプログラム
カウンタ値と上記命令長とを加算して上記非分岐先アド
レスを計算することを特徴とするデータ処理装置。
機構と、 プログラムカウンタ値を計算する第1の計算機構と、 オペランドアドレスを計算する第2の計算機構と、 オペランドに対して演算を行う演算機構と、 第1〜第3のバスとを備え、 上記命令デコード機構は、デコード対象の命令がサブ
ルーチン分岐命令である場合、上記サブルーチン分岐命
令をデコードして、その命令長を上記第2のバスを介し
て上記第2の計算機構に転送するとともに、その分岐変
位を上記第3のバスを介して上記第1の計算機構に出力
し、 上記第1の計算機構は、計算対象の命令がサブルーチ
ン分岐命令の場合、上記サブルーチン分岐命令のプログ
ラムカウンタ値を上記第1のバスを介して上記第2の計
算機構に転送するとともに、上記サブルーチン分岐命令
のプログラムカウンタ値と上記分岐変位とを加算して上
記サブルーチン分岐命令の上記分岐先アドレスを計算
し、 上記第2の計算機構は、計算対象の命令がサブルーチ
ン分岐命令の場合、上記サブルーチン命令のプログラム
カウンタ値と上記命令長とを加算して上記非分岐先アド
レスを計算することを特徴とするデータ処理装置。
3.上記命令デコード機構は、さらに、デコード対象の命
令が、上記分岐予測命令のうち、分岐条件が成立しない
と予測される非分岐予測命令である場合、上記非分岐予
測命令をデコードして、その分岐変位を上記第2のバス
を介して上記第2の計算機構に転送するとともに、その
命令長を上記第3のバスを介して上記第1の計算機構に
出力し、 上記第1の計算機構は、さらに、上記非分岐予測命令
のプログラムカウンタ値を上記第1のバスを介して上記
第2の計算機構に転送するとともに、上記非分岐予測命
令のプログラムカウンタ値と上記非分岐予測命令の命令
長とを加算して上記非分岐予測命令の非分岐先アドレス
を計算し、 上記第2の計算機構は、さらに、計算対象の命令が上
記非分岐予測命令の場合、上記非分岐予測命令のプログ
ラムカウンタ値と上記非分岐予測命令の分岐変位とを加
算して上記非分岐予測命令の分岐先アドレスを計算する
ことを特徴とする請求項1記載のデータ処理装置。
令が、上記分岐予測命令のうち、分岐条件が成立しない
と予測される非分岐予測命令である場合、上記非分岐予
測命令をデコードして、その分岐変位を上記第2のバス
を介して上記第2の計算機構に転送するとともに、その
命令長を上記第3のバスを介して上記第1の計算機構に
出力し、 上記第1の計算機構は、さらに、上記非分岐予測命令
のプログラムカウンタ値を上記第1のバスを介して上記
第2の計算機構に転送するとともに、上記非分岐予測命
令のプログラムカウンタ値と上記非分岐予測命令の命令
長とを加算して上記非分岐予測命令の非分岐先アドレス
を計算し、 上記第2の計算機構は、さらに、計算対象の命令が上
記非分岐予測命令の場合、上記非分岐予測命令のプログ
ラムカウンタ値と上記非分岐予測命令の分岐変位とを加
算して上記非分岐予測命令の分岐先アドレスを計算する
ことを特徴とする請求項1記載のデータ処理装置。
本発明のデータ処理装置では上記のように1ステツプ
コードで処理されるBRA命令、BSR命令、Bcc命令に対し
ても複数ステツプコードになるACB命令に対してもDス
テージ(32)で分岐処理を行うので、多くの分岐命令に
対してパイプライン処理の乱れを少なくできる。
コードで処理されるBRA命令、BSR命令、Bcc命令に対し
ても複数ステツプコードになるACB命令に対してもDス
テージ(32)で分岐処理を行うので、多くの分岐命令に
対してパイプライン処理の乱れを少なくできる。
第7図にプリブランチを行う本発明のデータ処理装置
でプリブランチ命令が実行された場合に、パイプライン
中を流れる命令の様子を示す。第7図では命令3及び命
令12は分岐命令であり、本発明のデータ処理装置のプリ
ブランチ処理の対象になる命令である。
でプリブランチ命令が実行された場合に、パイプライン
中を流れる命令の様子を示す。第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命令処理
分であつたのに比べ、本発明のデータ処理装置が無駄時
間を半減していることを意味する。
ンチすると判断されると、Dステージ(32)では次にPC
計算部(53)で分岐先命令のPC値を計算する。次に分岐
先命令がIFステージ(31)によりフエツチされ、パイプ
ライン処理対象が早期に命令11に切り替わる。命令4は
処理をキヤンセルされる。Dステージ(32)、IFステー
ジ(31)がプリブランチ処理を行つている間もパイプラ
イン上を先行する命令1や命令2は処理を続行する。結
果、命令3がEステージ(35)で処理されてから2命令
処理分の時間後に命令11がEステージ(35)で処理され
る。これは、第6図に示すように、プリブランチ処理を
行わない従来のデータ処理装置で無駄時間が4命令処理
分であつたのに比べ、本発明のデータ処理装置が無駄時
間を半減していることを意味する。
このようにプリブランチはデータ処理装置の高速化に
非常に有効な技術であり、なるべく多くの分岐命令に対
してプリブランチを行うことが重要である。
非常に有効な技術であり、なるべく多くの分岐命令に対
してプリブランチを行うことが重要である。
本発明では、BSR命令に対してプリブランチを行い、
プリブランチを行わない場合は分岐先アドレスを計算す
べきオペランドアドレス計算部(54)で、BSR命令の分
岐先ルーチンからの戻り先命令のアドレス(非分岐先ア
ドレス)を計算することによりBSR命令のパイプライン
処理効率を高めている。また、オペランドアドレス計算
部(54)のもつ、サブルーチンからの戻り先命令のアド
レスを計算する機能を汎用的に利用し、TRAPA命令など
に対しても、自分の命令の次のアドレスにある命令のPC
値(非分岐先アドレス)を計算し、命令がEステージ
(35)で実行される時間を短くし、パイプライン処理効
率の向上したデータ処理装置を得ている。
プリブランチを行わない場合は分岐先アドレスを計算す
べきオペランドアドレス計算部(54)で、BSR命令の分
岐先ルーチンからの戻り先命令のアドレス(非分岐先ア
ドレス)を計算することによりBSR命令のパイプライン
処理効率を高めている。また、オペランドアドレス計算
部(54)のもつ、サブルーチンからの戻り先命令のアド
レスを計算する機能を汎用的に利用し、TRAPA命令など
に対しても、自分の命令の次のアドレスにある命令のPC
値(非分岐先アドレス)を計算し、命令がEステージ
(35)で実行される時間を短くし、パイプライン処理効
率の向上したデータ処理装置を得ている。
第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計算部、(56)は
データ演算部、(102)は補正値バス、(103)はAバス
を示す。
図、第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計算部、(56)は
データ演算部、(102)は補正値バス、(103)はAバス
を示す。
Claims (3)
- 【請求項1】条件分岐命令を含んだ複数の命令を順次処
理するデータ処理装置であって、上記条件分岐命令は、
条件成立時に分岐先アドレスにある命令の実行を要求
し、条件不成立時に上記条件分岐命令の次に記述された
非分岐先アドレスにある命令の実行を要求する命令であ
り、 前記複数の命令のうち一の命令をデコードする命令デコ
ード機構と、 プログラムカウンタ値を計算する第1の計算機構と、 オペランドアドレスを計算する第2の計算機構と、 オペランドに対して演算を行う演算機構と、 第1〜第3のバスとを備え、 上記命令デコード機構は、デコード対象の命令が、上記
条件分岐命令のうち、分岐条件が成立すると予測される
分岐予測命令である場合、上記分岐予測命令をデコード
して、その命令長を上記第2のバスを介して上記第2の
計算機構に転送するとともに、その分岐変位を上記第3
のバスを介して上記第1の計算機構に出力し、 上記第1の計算機構は、計算対象の命令が上記分岐予測
命令の場合、上記条件分岐命令のプログラムカウンタ値
を上記第1のバスを介して上記第2の計算機構に転送す
るとともに、上記分岐予測命令のプログラムカウンタ値
と上記分岐予測命令の分岐変位とを加算して上記分岐予
測命令の上記分岐先アドレスを計算し、 上記第2の計算機構は、計算対象の命令が上記分岐予測
命令の場合、上記分岐予測命令のプログラムカウンタ値
と上記分岐予測命令の命令長とを加算して上記分岐予測
命令の非分岐先アドレスを計算することを特徴とするデ
ータ処理装置。 - 【請求項2】サブルーチン分岐命令を含んだ複数の命令
を順次処理するデータ処理装置であって、上記サブルー
チン分岐命令は、無条件に分岐先アドレスにある命令の
実行を要求し、その命令の終了後に上記サブルーチン分
岐命令の次に記述された非分岐先アドレスにある命令の
実行を要求する命令であり、 前記複数の命令うち一の命令をデコードする命令デコー
ド機構と、 プログラムカウンタ値を計算する第1の計算機構と、 オペランドアドレスを計算する第2の計算機構と、 オペランドに対して演算を行う演算機構と、 第1〜第3のバスとを備え、 上記命令デコード機構は、デコード対象の命令がサブル
ーチン分岐命令である場合、上記サブルーチン分岐命令
をデコードして、その命令長を上記第2のバスを介して
上記第2の計算機構に転送するとともに、その分岐変位
を上記第3のバスを介して上記第1の計算機構に出力
し、 上記第1の計算機構は、計算対象の命令がサブルーチン
分岐命令の場合、上記サブルーチン分岐命令のプログラ
ムカウンタ値を上記第1のバスを介して上記第2の計算
機構に転送するとともに、上記サブルーチン分岐命令の
プログラムカウンタ値と上記分岐変位とを加算して上記
サブルーチン分岐命令の上記分岐先アドレスを計算し、 上記第2の計算機構は、計算対象の命令がサブルーチン
分岐命令の場合、上記サブルーチン分岐命令のプログラ
ムカウンタ値と上記命令長とを加算して上記非分岐先ア
ドレスを計算することを特徴とするデータ処理装置。 - 【請求項3】上記命令デコード機構は、さらに、デコー
ド対象の命令が、上記分岐予測命令のうち、分岐条件が
成立しないと予測される非分岐予測命令である場合、上
記非分岐予測命令をデコードして、その分岐変位を上記
第2のバスを介して上記第2の計算機構に転送するとと
もに、その命令長を上記第3のバスを介して上記第1の
計算機構に出力し、 上記第1の計算機構は、さらに、上記非分岐予測命令の
プログラムカウンタ値を上記第1のバスを介して上記第
2の計算機構に転送するとともに、上記非分岐予測命令
のプログラムカウンタ値と上記非分岐予測命令の命令長
とを加算して上記非分岐予測命令の非分岐先アドレスを
計算し、 上記第2の計算機構は、さらに、計算対象の命令が上記
非分岐予測命令の場合、上記非分岐予測命令のプログラ
ムカウンタ値と上記非分岐予測命令の分岐変位とを加算
して上記非分岐予測命令の分岐先アドレスを計算するこ
とを特徴とする請求項1記載のデータ処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63040025A JPH081600B2 (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 |
---|---|---|---|
JP63040025A JPH081600B2 (ja) | 1988-02-23 | 1988-02-23 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01214933A JPH01214933A (ja) | 1989-08-29 |
JPH081600B2 true JPH081600B2 (ja) | 1996-01-10 |
Family
ID=12569363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63040025A Expired - Fee Related JPH081600B2 (ja) | 1988-02-23 | 1988-02-23 | データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH081600B2 (ja) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS55143653A (en) * | 1979-04-25 | 1980-11-10 | Nec Corp | Branch prefetch computer |
-
1988
- 1988-02-23 JP JP63040025A patent/JPH081600B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH01214933A (ja) | 1989-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2616182B2 (ja) | データ処理装置 | |
US5522053A (en) | Branch target and next instruction address calculation in a pipeline processor | |
US5091853A (en) | Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction | |
JP2507638B2 (ja) | デ―タ処理装置 | |
JPH05224928A (ja) | データ処理装置 | |
US5321821A (en) | System for processing parameters in instructions of different format to execute the instructions using same microinstructions | |
JP3543181B2 (ja) | データ処理装置 | |
JPH07114469A (ja) | データ処理装置 | |
JP2581236B2 (ja) | データ処理装置 | |
JPH081602B2 (ja) | データ処理装置 | |
JPH081599B2 (ja) | データ処理装置 | |
US4945511A (en) | Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions | |
JPH07120284B2 (ja) | データ処理装置 | |
JP3345787B2 (ja) | データ処理装置 | |
JP2556182B2 (ja) | デ−タ処理装置 | |
JP2668456B2 (ja) | ビット検索回路及びそれを備えたデータ処理装置 | |
JP2504312B2 (ja) | プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置 | |
US5361338A (en) | Pipelined system for decomposing instruction into two decoding parts and either concurrently generating two operands addresses of merging decomposing decoding codes based upon the second operand | |
US5269008A (en) | Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer | |
JP2504235B2 (ja) | デ―タ処理装置 | |
JP2646855B2 (ja) | データ処理装置 | |
JPH081600B2 (ja) | データ処理装置 | |
JP2522048B2 (ja) | マイクロプロセッサ及びそれを使用したデ―タ処理装置 | |
JPH0769808B2 (ja) | データ処理装置 | |
JPH0769805B2 (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 |