JPH01222332A - パイプライン処理機構を持つデータ処理装置 - Google Patents
パイプライン処理機構を持つデータ処理装置Info
- Publication number
- JPH01222332A JPH01222332A JP63049093A JP4909388A JPH01222332A JP H01222332 A JPH01222332 A JP H01222332A JP 63049093 A JP63049093 A JP 63049093A JP 4909388 A JP4909388 A JP 4909388A JP H01222332 A JPH01222332 A JP H01222332A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- stage
- value
- subroutine
- return
- 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
Links
- 238000004364 calculation method Methods 0.000 description 34
- 238000000034 method Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 101000860173 Myxococcus xanthus C-factor Proteins 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- CQZCVYWWRJDZBO-UHFFFAOYSA-N diphenyliodanium;nitrate Chemical compound [O-][N+]([O-])=O.C=1C=CC=CC=1[I+]C1=CC=CC=C1 CQZCVYWWRJDZBO-UHFFFAOYSA-N 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- VXPLXMJHHKHSOA-UHFFFAOYSA-N propham Chemical compound CC(C)OC(=O)NC1=CC=CC=C1 VXPLXMJHHKHSOA-UHFFFAOYSA-N 0.000 description 1
- 230000002747 voluntary effect Effects 0.000 description 1
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
この発明は、高度なパイプライン処理機構により高い処
理能力を実現したデータ処理装置に関するものであり、
特にサブルーチンリターン命令に関しても、パイプライ
ン処理の初期の段階で戻り先アドレスへの先行分岐処理
が可能なデータ処理装置に関するものである。
理能力を実現したデータ処理装置に関するものであり、
特にサブルーチンリターン命令に関しても、パイプライ
ン処理の初期の段階で戻り先アドレスへの先行分岐処理
が可能なデータ処理装置に関するものである。
第7図は従来のデータ処理装置の典型的なパイプライン
ステージを示す図であり、図において、(1)は命令フ
ェッチステージ、(2)は命令デコードステージ、(3
)はアドレス計算ステージ、(4)はオペランドフェッ
チステージ、(5)は実行ステージ、(8)はオペラン
ドライトステージである。
ステージを示す図であり、図において、(1)は命令フ
ェッチステージ、(2)は命令デコードステージ、(3
)はアドレス計算ステージ、(4)はオペランドフェッ
チステージ、(5)は実行ステージ、(8)はオペラン
ドライトステージである。
次に動作について説明する。第7図に示したデータ処理
装置は、バスが空いている時間を利用して命令データの
取り込みを行う命令フェッチステージ(1)、命令デー
タの解析を行う命令デコードステージ(2)、オペラン
ド等のアドレス計算を行うアドレス計算ステージ(3)
、オペランドデータのフェッチを行うオペランドフェッ
チステージ(4)、データの処理を行う実行ステージ(
5)、オペランドデータの書き込みを行うオペランドラ
イトステージ(8)の6段のパイプラインステージで構
成されており、各ステージは異なる命令を同時に処理す
ることが可能である。ただしオペランドやメモリアクセ
スに関してコンフリクトが起こったような場合には優先
度の低いステージがコンフリクトが解消されるまで処理
を一時停止する。
装置は、バスが空いている時間を利用して命令データの
取り込みを行う命令フェッチステージ(1)、命令デー
タの解析を行う命令デコードステージ(2)、オペラン
ド等のアドレス計算を行うアドレス計算ステージ(3)
、オペランドデータのフェッチを行うオペランドフェッ
チステージ(4)、データの処理を行う実行ステージ(
5)、オペランドデータの書き込みを行うオペランドラ
イトステージ(8)の6段のパイプラインステージで構
成されており、各ステージは異なる命令を同時に処理す
ることが可能である。ただしオペランドやメモリアクセ
スに関してコンフリクトが起こったような場合には優先
度の低いステージがコンフリクトが解消されるまで処理
を一時停止する。
以上のように、パイプライン化されたデータ処理装置で
は、データの処理の流れに従って処理を複数のステージ
に分割し、各ステージを同時に動作させることにより、
1命令に必要な平均処理時間を短縮させて全体としての
性能を向上させている。
は、データの処理の流れに従って処理を複数のステージ
に分割し、各ステージを同時に動作させることにより、
1命令に必要な平均処理時間を短縮させて全体としての
性能を向上させている。
ところが、このようにパイプライン化されたデータ処理
装置において、分岐命令等の命令の流れを乱す命令が実
行ステージ(5)で実行された場合には、それより前の
ステージで行われていた処理がすべてキャンセルされ、
次に実行される命令は命令のフェッチから行わなければ
ない、このように、処理の流れを乱す命令が実行される
と、パイプライン処理のオーバーヘッドが大きくなり、
データ処理装置の実行速度が上がらない、データ処理装
置の性能向上のため、無条件分岐命令、条件分岐命令等
の命令実行に関するオーバーヘッド削減について様々な
工夫がなされてきた0例えば、分岐命令のアドレスと分
岐先のアドレスを組にして記憶しておくブランチターゲ
ットバッファというものを用いて、命令フェッチの段階
で命令の流れを予測し、処理を行っている。 (J、
に、F、Lee and A。
装置において、分岐命令等の命令の流れを乱す命令が実
行ステージ(5)で実行された場合には、それより前の
ステージで行われていた処理がすべてキャンセルされ、
次に実行される命令は命令のフェッチから行わなければ
ない、このように、処理の流れを乱す命令が実行される
と、パイプライン処理のオーバーヘッドが大きくなり、
データ処理装置の実行速度が上がらない、データ処理装
置の性能向上のため、無条件分岐命令、条件分岐命令等
の命令実行に関するオーバーヘッド削減について様々な
工夫がなされてきた0例えば、分岐命令のアドレスと分
岐先のアドレスを組にして記憶しておくブランチターゲ
ットバッファというものを用いて、命令フェッチの段階
で命令の流れを予測し、処理を行っている。 (J、
に、F、Lee and A。
J、Sm1th、”Branch Predictio
n Strategies BranchTarget
Buffer Desigh、”1EBI!
C0IIPLITIIRVol、1?+No、1+Ja
nuary 198Lpp、6−22.参照)以上のよ
うに、パイプライン処理の初期の段階で処理の流れを予
測し、次に実行されると予測される命令をパイプライン
に流す(以下先行分岐処理と呼ぶ)ことにより分岐命令
実行時のオーバーヘッド削減が計られている。ところが
、サブルーチンからのリターン命令に関してはサブルー
チンからのリターンアドレスが対応するサブルーチンコ
ール命令のアドレスに依存するため、処理の流れを予測
することが困難であった。
n Strategies BranchTarget
Buffer Desigh、”1EBI!
C0IIPLITIIRVol、1?+No、1+Ja
nuary 198Lpp、6−22.参照)以上のよ
うに、パイプライン処理の初期の段階で処理の流れを予
測し、次に実行されると予測される命令をパイプライン
に流す(以下先行分岐処理と呼ぶ)ことにより分岐命令
実行時のオーバーヘッド削減が計られている。ところが
、サブルーチンからのリターン命令に関してはサブルー
チンからのリターンアドレスが対応するサブルーチンコ
ール命令のアドレスに依存するため、処理の流れを予測
することが困難であった。
従来のデータ処理装置は、以上で述べたように、サブル
ーチンからのリターン命令に対してサブルーチンからの
リターンアドレスが対応するサブルーチンコール命令の
アドレスに依存するため、処理の流れを予測する有効な
手段がなかった。
ーチンからのリターン命令に対してサブルーチンからの
リターンアドレスが対応するサブルーチンコール命令の
アドレスに依存するため、処理の流れを予測する有効な
手段がなかった。
この発明は上記のような問題点を解消するためになされ
たもので、サブルーチンリターン命令に関しても、パイ
プライン処理の初期の段階で戻り先アドレスへの先行分
岐処理が可能なデータ処理装置を得ることを目的とする
。
たもので、サブルーチンリターン命令に関しても、パイ
プライン処理の初期の段階で戻り先アドレスへの先行分
岐処理が可能なデータ処理装置を得ることを目的とする
。
〔課題を解決するための手段〕
この発明に係るデータ処理装置は、サブルーチンコール
命令のリターンアドレスのみを格納するプログラムカウ
ンタ(PC)専用のスタックメモリ(以下PCスタック
と呼ぶ)を備えたものである。
命令のリターンアドレスのみを格納するプログラムカウ
ンタ(PC)専用のスタックメモリ(以下PCスタック
と呼ぶ)を備えたものである。
この発明におけるデータ処理装置は、実行ステージでサ
ブルーチンコール命令実行時にサブルーチンからのリタ
ーンアドレスがPCスタックにブツシュされ、命令デコ
ードステージでサブルーチンリターン命令デコード時に
PCスタックからポツプされてアドレスに先行1分岐処
理を行う。
ブルーチンコール命令実行時にサブルーチンからのリタ
ーンアドレスがPCスタックにブツシュされ、命令デコ
ードステージでサブルーチンリターン命令デコード時に
PCスタックからポツプされてアドレスに先行1分岐処
理を行う。
(発明の実施例)
+1)パイプライン機構
本発明のデータ処理装置のパイプライン処理は第1図に
示す構成となる。命令のブリフェッチを行う命令フェッ
チステージ(IFステージ(1))、1段目の命令のデ
コードを行うデコードステージ(Dステージ+2))、
2段目の命令のデコードとオペランドのアドレス計算を
行うオペランドアドレス計算ステージ(Aステージ(3
))、マイクロROMのアクセス(特にRステージ(6
)と呼ぶ)とオペランドのブリフェッチ(特にOFステ
ージ(刀と呼ぶ)を行うオペランドフェッチステージ(
Fステージ(4))、命令の実行を行う実行ステージ(
Eステージ(5))の5段構成をパイプライン処理の基
本とする。Eステージ(5)では1段のストアバッファ
があるほか、高機能命令の一部は命令実行自体をパイプ
ライン化するため、実際には5段以上のパイプライン処
理効果がある。
示す構成となる。命令のブリフェッチを行う命令フェッ
チステージ(IFステージ(1))、1段目の命令のデ
コードを行うデコードステージ(Dステージ+2))、
2段目の命令のデコードとオペランドのアドレス計算を
行うオペランドアドレス計算ステージ(Aステージ(3
))、マイクロROMのアクセス(特にRステージ(6
)と呼ぶ)とオペランドのブリフェッチ(特にOFステ
ージ(刀と呼ぶ)を行うオペランドフェッチステージ(
Fステージ(4))、命令の実行を行う実行ステージ(
Eステージ(5))の5段構成をパイプライン処理の基
本とする。Eステージ(5)では1段のストアバッファ
があるほか、高機能命令の一部は命令実行自体をパイプ
ライン化するため、実際には5段以上のパイプライン処
理効果がある。
各ステージは他のステージとは独立に動作し、理論上は
5つのステージが完全に独立動作する。
5つのステージが完全に独立動作する。
各ステージは1回の処理を最小2クロックで行うことが
できる。従って理想的には2クロツクごとに次々とパイ
プライン処理が進行する。
できる。従って理想的には2クロツクごとに次々とパイ
プライン処理が進行する。
本発明のデータ処理装置にはメモリーメモリ間演算や、
メモリ間接アドレッシングなど基本パイプライン処理1
回だけでは処理が行えない命令があるが、本発明のデー
タ処理装置はこれらの処理に対してもなるべく均衡した
パイプライン処理が行えるように設計されている。複数
のメモリオペランドをもつ命令に対してはメモリオペラ
ンドの数をもとに、デコード段階で複数のパイプライン
処理単位(ステップコード)に分解してパイプライン処
理を行うのである。パイプライン処理単位の分解方法に
関しては 61−236456で詳しく述べられて
いる。
メモリ間接アドレッシングなど基本パイプライン処理1
回だけでは処理が行えない命令があるが、本発明のデー
タ処理装置はこれらの処理に対してもなるべく均衡した
パイプライン処理が行えるように設計されている。複数
のメモリオペランドをもつ命令に対してはメモリオペラ
ンドの数をもとに、デコード段階で複数のパイプライン
処理単位(ステップコード)に分解してパイプライン処
理を行うのである。パイプライン処理単位の分解方法に
関しては 61−236456で詳しく述べられて
いる。
!Fステージ(1)からDステージ(2)に渡される情
報は命令コードQDそのものである。Dステージ(2)
からAステージ(3)に渡される情報は命令で指定され
た演算に関するもの(Dコード(2)と呼ぶ)と、オペ
ランドのアドレス計算に関係するもの(Aコード(至)
と呼ぶ)との2つある。Aステージ13)からFステー
ジ(4)に渡される情報はマイクロプログラムルーチン
のエントリ番地やマイクロプログラムへのパラメータな
どを含むRコード(2)と、オペランドのアドレスとア
クセス方法指示情報などを含むFコードa9との2つで
ある。Fステージ(4)からEステージ(5)に渡され
る情報は演算制御情報とリテラルなどを含むEコードa
eと、オペランドやオペランドアドレスなどを含むSコ
ード0ηとの2つである。
報は命令コードQDそのものである。Dステージ(2)
からAステージ(3)に渡される情報は命令で指定され
た演算に関するもの(Dコード(2)と呼ぶ)と、オペ
ランドのアドレス計算に関係するもの(Aコード(至)
と呼ぶ)との2つある。Aステージ13)からFステー
ジ(4)に渡される情報はマイクロプログラムルーチン
のエントリ番地やマイクロプログラムへのパラメータな
どを含むRコード(2)と、オペランドのアドレスとア
クセス方法指示情報などを含むFコードa9との2つで
ある。Fステージ(4)からEステージ(5)に渡され
る情報は演算制御情報とリテラルなどを含むEコードa
eと、オペランドやオペランドアドレスなどを含むSコ
ード0ηとの2つである。
(1,1)各パイプラインステージの処理(1,1,1
)命令フェッチステージ 命令フェッチステージ(IFステージ(l))は外部メ
モリから命令をフェッチし、命令キューに人力して、D
ステージ(2)に対して命令コードaOを出力する。
)命令フェッチステージ 命令フェッチステージ(IFステージ(l))は外部メ
モリから命令をフェッチし、命令キューに人力して、D
ステージ(2)に対して命令コードaOを出力する。
命令キューの入力は整置された4バイト単位で行う、メ
モリから命令をフェッチするときは整置された4バイト
につき最小2クロックを要する。
モリから命令をフェッチするときは整置された4バイト
につき最小2クロックを要する。
ブランチバッファがヒツトした時は整置された4バイト
につきlクロックでフェッチ可能である。
につきlクロックでフェッチ可能である。
命令キューの出力単位は2バイトごとに可変であ・す、
2クロンクの間に最大6バイトまで出力できる。また分
岐の直後には命令キューをバイパスして命令基本部2バ
イトを直接命令デコーダに転送することもできる。
2クロンクの間に最大6バイトまで出力できる。また分
岐の直後には命令キューをバイパスして命令基本部2バ
イトを直接命令デコーダに転送することもできる。
ブリフェッチ先命令アドレスの管理もIFステージ(1
)で行う0次にフェッチすべき命令のアドレスは命令キ
ューに入力すべき命令のアドレスとして専用のカウンタ
で計算される0分岐やジャンプが起きたときには、新た
な命令のアドレスが、pc演算部やデータ演算部より転
送されてくる。
)で行う0次にフェッチすべき命令のアドレスは命令キ
ューに入力すべき命令のアドレスとして専用のカウンタ
で計算される0分岐やジャンプが起きたときには、新た
な命令のアドレスが、pc演算部やデータ演算部より転
送されてくる。
(1,1,2)命令デコードステージ
命令デコードステージ(Dステージ(2))はtpステ
ージillから入力された命令コード仙をデコードする
。命令コードは16ビツト (ハーフワード)単位とな
っている。デコードは2クロック単位に1度行ない、1
回のデコード処理で0〜3ハーフワードの命令コードを
消費する。このDステージ(2)で命令コードがパイプ
ライン処理単位であるステップコードに分解される。す
なわち、l命令が1つないし複数のステップコードに分
解されて、後段のパイプラインステップコードで処理さ
れていくのである。Dステージ(2)ではステップコー
ドとしてAステージ(3)に対してアドレス計算情報で
あるAコード(至)と、オペコードの中間デコード結果
であるDコード@とを出力する。
ージillから入力された命令コード仙をデコードする
。命令コードは16ビツト (ハーフワード)単位とな
っている。デコードは2クロック単位に1度行ない、1
回のデコード処理で0〜3ハーフワードの命令コードを
消費する。このDステージ(2)で命令コードがパイプ
ライン処理単位であるステップコードに分解される。す
なわち、l命令が1つないし複数のステップコードに分
解されて、後段のパイプラインステップコードで処理さ
れていくのである。Dステージ(2)ではステップコー
ドとしてAステージ(3)に対してアドレス計算情報で
あるAコード(至)と、オペコードの中間デコード結果
であるDコード@とを出力する。
Dステージ(2)ではpc演算部の制御、分岐予測処理
、プリブランチ命令に対する先行分岐処理(ブリブラン
チ)、命令キューかあの命令コード出力制御等も行う、
ブリブランチ処理とは、Eステージ(5)での分岐処理
に先立ち、無条件分岐命令、条、件分岐命令等の分岐を
予測し、pc演算部で攪び先の番地を計算し、IFステ
ージ(1)に飛び先の命令をフェッチさせ、飛び先の命
令をパイプラインに流すことである。プリブランチ命令
とは、プリブランチ処理を行う命令である。
、プリブランチ命令に対する先行分岐処理(ブリブラン
チ)、命令キューかあの命令コード出力制御等も行う、
ブリブランチ処理とは、Eステージ(5)での分岐処理
に先立ち、無条件分岐命令、条、件分岐命令等の分岐を
予測し、pc演算部で攪び先の番地を計算し、IFステ
ージ(1)に飛び先の命令をフェッチさせ、飛び先の命
令をパイプラインに流すことである。プリブランチ命令
とは、プリブランチ処理を行う命令である。
(1,1,3)オペレータアドレス計算ステージオペレ
ータアドレス計算ステージ(Aステージ(3))は処理
が大きく2つに分かれる。1つはオペコードの後段デコ
ードを行う処理で、もう1つはオペランドのアドレスの
計算を行う処理である。
ータアドレス計算ステージ(Aステージ(3))は処理
が大きく2つに分かれる。1つはオペコードの後段デコ
ードを行う処理で、もう1つはオペランドのアドレスの
計算を行う処理である。
オペコードの後段デコード処理はDコード(ロ)を入力
とし、レジスタやメモリの書き込み予約及びマイクロプ
ログラムのエントリ番地とマイクロプログラムに対する
パラメータなどを含むRコード04+の出力を行う、な
お、レジスタやメモリの書き込み予約は、アドレス計算
で参照したレジスタやメモリの内容が、パイプライン上
を先行する命令で書き換えられ、誤ったアドレス計算が
行われるのを防ぐためのものである。レジスタやメモリ
の書き込み予約はデッドロンクを避けるため、ステップ
コードごとに行うのではなく命令ごとに行う。
とし、レジスタやメモリの書き込み予約及びマイクロプ
ログラムのエントリ番地とマイクロプログラムに対する
パラメータなどを含むRコード04+の出力を行う、な
お、レジスタやメモリの書き込み予約は、アドレス計算
で参照したレジスタやメモリの内容が、パイプライン上
を先行する命令で書き換えられ、誤ったアドレス計算が
行われるのを防ぐためのものである。レジスタやメモリ
の書き込み予約はデッドロンクを避けるため、ステップ
コードごとに行うのではなく命令ごとに行う。
レジスタやメモリの書き込み予約は[二旦4394で詳
しく述べられている。
しく述べられている。
オペランドアドレス計算処理はAコード(Lmを人力と
し、Aコードαりに従いオペランドアドレス計算部で加
算やメモリ間接参照を組み合わせてアドレス計算行い、
その計算結果をFコードa−として出力する。この際、
アドレス計算に伴うレジスタやメモリの読み出し時にコ
ンフリクトチエツクを行い、先行命令がレジスタやメモ
リに書き込み処理を終了していないためコンフリクトが
指示されれば、先行命令がEステージ(5)で書き込み
処理を終了するまで待つ。
し、Aコードαりに従いオペランドアドレス計算部で加
算やメモリ間接参照を組み合わせてアドレス計算行い、
その計算結果をFコードa−として出力する。この際、
アドレス計算に伴うレジスタやメモリの読み出し時にコ
ンフリクトチエツクを行い、先行命令がレジスタやメモ
リに書き込み処理を終了していないためコンフリクトが
指示されれば、先行命令がEステージ(5)で書き込み
処理を終了するまで待つ。
また、Aステージ(3)ではスタックからのポンプ操作
、スタックへのブツシュ操作等によるスタックポインタ
(SP)のコンフリクトを防ぐため、実行ステージ(5
)のSPに先行してAステージスタックポインタ(AS
P)を備えており、ポンプ、ブツシュ操作に伴う^SP
の更新はこのステージで行われる。
、スタックへのブツシュ操作等によるスタックポインタ
(SP)のコンフリクトを防ぐため、実行ステージ(5
)のSPに先行してAステージスタックポインタ(AS
P)を備えており、ポンプ、ブツシュ操作に伴う^SP
の更新はこのステージで行われる。
従って、通常のポツプ、ブツシュ操作直後でもASPを
参照することにより、SPのコンフリクトでステップコ
ードの処理を遅らせることなく処理を進めることができ
る。SPの管理方法に関してはm62−145852で
詳しく述べられている。
参照することにより、SPのコンフリクトでステップコ
ードの処理を遅らせることなく処理を進めることができ
る。SPの管理方法に関してはm62−145852で
詳しく述べられている。
(1,1,4)マイクロROMアクセスステージオペラ
ンドフェッチステージ(FステージC4))も処理が大
きく2つに分かれる。1つはマイクロROMのアクセス
処理であり、特にRステージ(6)と呼ぶ、他方はオペ
ランドプリフェッチ処理であり、特にOFステージ(7
)と呼ぶ、Rステージ(6)とOFステージ(7)は必
ずしも同時に動作するわけではな(、メモリアクセス権
が獲得できるかどうかなどに依存して、独立に動作する
。
ンドフェッチステージ(FステージC4))も処理が大
きく2つに分かれる。1つはマイクロROMのアクセス
処理であり、特にRステージ(6)と呼ぶ、他方はオペ
ランドプリフェッチ処理であり、特にOFステージ(7
)と呼ぶ、Rステージ(6)とOFステージ(7)は必
ずしも同時に動作するわけではな(、メモリアクセス権
が獲得できるかどうかなどに依存して、独立に動作する
。
Rステージ(6)では、Rコードα4)に対して次のE
ステージ(5)での実行に使用する実行制御コードであ
る。Eコード(至)を作り出すためのマイクロROMア
クセスとマイクロ命令デコード処理が行われる。
ステージ(5)での実行に使用する実行制御コードであ
る。Eコード(至)を作り出すためのマイクロROMア
クセスとマイクロ命令デコード処理が行われる。
1つのRコードに対する処理が2つ以上のマイクロプロ
グラムステップに分解される場合、マイクロROMはE
ステージ(5)で使用され、次のRコード圓はマイクロ
ROMアクセス待ちになる。Rコードα俳に対するマイ
クロROMアクセが行われるのはその前のEステージ+
61での最後のマイクロ命令実行の時である6本発明の
データ処理装置ではほとんどの基本命令は1マイクロプ
ログラムステツプ行われるため実際にはRコード■に対
するマイクロROMアクセスが次々と行われることが多
い。
グラムステップに分解される場合、マイクロROMはE
ステージ(5)で使用され、次のRコード圓はマイクロ
ROMアクセス待ちになる。Rコードα俳に対するマイ
クロROMアクセが行われるのはその前のEステージ+
61での最後のマイクロ命令実行の時である6本発明の
データ処理装置ではほとんどの基本命令は1マイクロプ
ログラムステツプ行われるため実際にはRコード■に対
するマイクロROMアクセスが次々と行われることが多
い。
(1,1,5)オペランドフェッチステージオペランド
フェッチステージ(OFステージ(7))はFステージ
(4)で行う上記の2つの処理のうちオペランドプリフ
ェッチ処理を行う。
フェッチステージ(OFステージ(7))はFステージ
(4)で行う上記の2つの処理のうちオペランドプリフ
ェッチ処理を行う。
オペランドプリフェッチはFコードα9を入力とし、フ
ェッチしたオペランドとそのアドレスをSコードα力と
して出力する。1つのFコード(2)ではワード境界を
またいでもよいが4バイト以下のオペランドフェッチを
指定する。Fコード(至)にはオペランドのアクセスを
行うかどうかの指定も含まれており、Aステージ(3)
で計算したオペランドアドレス自体や即値をEステージ
(5)に転送する場合にはオペランドプリフェッチは行
わず、Fコード(19の内容をSコード顛として転送す
る。また、プリフェッチしようとするオペランドとEス
テージ(5)が書き込み処理を行おうとするオペランド
とが包含関係を満たすときには、オペランドプリフェッ
チに関してメモリアクセスは行わず、Eステージ(5)
が書き込もうとする値をバイパスする。
ェッチしたオペランドとそのアドレスをSコードα力と
して出力する。1つのFコード(2)ではワード境界を
またいでもよいが4バイト以下のオペランドフェッチを
指定する。Fコード(至)にはオペランドのアクセスを
行うかどうかの指定も含まれており、Aステージ(3)
で計算したオペランドアドレス自体や即値をEステージ
(5)に転送する場合にはオペランドプリフェッチは行
わず、Fコード(19の内容をSコード顛として転送す
る。また、プリフェッチしようとするオペランドとEス
テージ(5)が書き込み処理を行おうとするオペランド
とが包含関係を満たすときには、オペランドプリフェッ
チに関してメモリアクセスは行わず、Eステージ(5)
が書き込もうとする値をバイパスする。
(1,1,6)実行ステージ
実行ステージ(Eステージ(5))はEコードQl 。
Sコードα力を入力として、各種演算器を用いたデータ
の処理、データのリード、ライト等の処理を行う、演算
器としてはALII 、バレルシウタ、プライオリティ
エンコーダやカウンタ、シフトレジスタなどがある。E
ステージ(5)はマイクロプログラムにより制御されR
コードαeに示されたマイクロプログラムのエントリ番
地からの一連のマイクロプログラムを実行することによ
り命令を実行する。
の処理、データのリード、ライト等の処理を行う、演算
器としてはALII 、バレルシウタ、プライオリティ
エンコーダやカウンタ、シフトレジスタなどがある。E
ステージ(5)はマイクロプログラムにより制御されR
コードαeに示されたマイクロプログラムのエントリ番
地からの一連のマイクロプログラムを実行することによ
り命令を実行する。
レジスタと主な演算器の間は3バスで結合されており、
1つのレジスタ間演算を指示する1マイクロ命令を2ク
ロツクサイクルで処理する。
1つのレジスタ間演算を指示する1マイクロ命令を2ク
ロツクサイクルで処理する。
このEステージ(5)が命令を実行するステージあり、
Eステージ(4)以前にステージで行われた処理はすべ
てEステージ(5)のための前処理である。Eステージ
(5)で分岐が起こると、!Fステージ+1)〜Fステ
ージ(4)までの処理はすべて無効化され、攪び先番地
が命令フェッチ部とPC計算部に出力される。
Eステージ(4)以前にステージで行われた処理はすべ
てEステージ(5)のための前処理である。Eステージ
(5)で分岐が起こると、!Fステージ+1)〜Fステ
ージ(4)までの処理はすべて無効化され、攪び先番地
が命令フェッチ部とPC計算部に出力される。
Eステージ(5)ではデータ演算部(56)にあるスト
アバッファを利用して、4バイト以内のオペランドスト
アと次のマイクロ命令実行をパイプライン処理すること
もできる。
アバッファを利用して、4バイト以内のオペランドスト
アと次のマイクロ命令実行をパイプライン処理すること
もできる。
′Eステージ(5)ではAステージ(3)で行ったレジ
スタやメモリに対する書き込み予約をオペランドの書き
込みの後、解除する。
スタやメモリに対する書き込み予約をオペランドの書き
込みの後、解除する。
また条件分岐命令がEステージ(5)で分岐を起こした
ときはその条件分岐命令に対する分岐予測が誤っていた
ことを示しており分岐履歴の書換え処理を行う。
ときはその条件分岐命令に対する分岐予測が誤っていた
ことを示しており分岐履歴の書換え処理を行う。
(1,2) プログラムカウンタの管理本発明のデータ
処理装置のパイプライン上に存在するステップコードは
すべて別命令に対するものである可能性があり、プログ
ラムカウンタの値はステップコードごとに管理する。す
べてのステップコードはそのステップコードのもとにな
った命令のプログラムカウンタ値をもつ、ステップコー
ドに付属してパイプラインの各ステージを流れるプログ
ラムカウンタ値はステンププログラムカウンタ(SPC
) と呼ぶ、 spcはパイプラインステージを次々
と受は渡されていく。
処理装置のパイプライン上に存在するステップコードは
すべて別命令に対するものである可能性があり、プログ
ラムカウンタの値はステップコードごとに管理する。す
べてのステップコードはそのステップコードのもとにな
った命令のプログラムカウンタ値をもつ、ステップコー
ドに付属してパイプラインの各ステージを流れるプログ
ラムカウンタ値はステンププログラムカウンタ(SPC
) と呼ぶ、 spcはパイプラインステージを次々
と受は渡されていく。
(2)サブルーチンリターン命令の先行分岐処理本発明
のデータ処理装置は実行ステージでのサブルーチンリタ
ーン命令の実行によるパイプラインの乱れを抑えるため
に、サブルーチンリターン命令の実行に関しては命令デ
コードステージ(Dステージ(2))で先行き分岐処理
を行う、以下、詳細な動作を説明する。
のデータ処理装置は実行ステージでのサブルーチンリタ
ーン命令の実行によるパイプラインの乱れを抑えるため
に、サブルーチンリターン命令の実行に関しては命令デ
コードステージ(Dステージ(2))で先行き分岐処理
を行う、以下、詳細な動作を説明する。
第2図は、本発明のデータ処理装置のブロック図であり
、サブルーチンコール命令、サブルーチンリターン命令
の処理を説明するために必要な部分だけが抜き出されて
説明されている6図において、(21)は命令キュー、
(22)は命令デコード部、(23)は外部とデータの
やり取りを行うデータ入出力回路、(24)は外部アド
レスの出力を行うアドレス出力回路、(25)は命令フ
ェッチを行うアドレスを出力するための力゛ウンタ(Q
INPC) 、(26)は各ステップコード生成毎に命
令デコード部(22)で処理された命令長を格納するラ
ッチ(IL)、(27)はプリブランチのためのPCに
対する変位を格納するためのラッチ(PD)、(30)
はpc演算部(54)での加算を行うためのpc加算器
、(28)、(29)、(31)はそれぞれpc加算器
(30)の入出力ラッチ(P^、PB、PO)、(32
)はステップコード処理毎のテンポラリなPCを格納す
るためのレジスタ(TPC) 、(33)は現在デコー
ド中の命令のPCを格納するためのDステージPC(D
PC)、(34)はアドレス計算中のステップコードコ
ードに対応するPCを格納するためのAステージPC(
八PC)、(38)はアドレス計算のための3値加算を
行うアドレス加算器、(35)、(36)、(37)、
(39)はそれぞれアドレス加算器(38)の入出力ラ
ッチ(AI、AD、八B、AO)、(40)はAステー
ジ(3)でインクリメントやデクリメントを行いSPの
管理を行うAステージスタックポインタ〈^SP) 、
(41)はFコードα9としてのアドレスを格納するた
めのFコードアドレスレジスタ(FA)、(42)はS
コードaηとしてのアドレスを格納するためのSコード
アドレスレジスタ、(43)は命令フェッチを行うアド
レスを一時的に記憶するためのC^アドレスレジスタ(
CA^’) 、 (44)はEステージ(5)で管理し
ているアドレスレジスタ(AA)、(45)はEステー
ジ(5)での分岐先アドレスを格納するためのEステー
ジブランチアドレスレジスタ(EB)、(46)はサブ
ルーチンコール時の戻り先アドレスのみを格納しており
PCスタックポインタ、フレームボインク、ワーキング
レジスタ等を含みレジスタファイル、(56)はS2バ
ス(102)から値を入力してDOババス103)に値
を出力する0Mラッチ、(50)はデータ演算のため(
7)ALU 、 (48)、(49)、(51)はAL
U (50)の入出力ランチ、(DA、DB、Do)、
(52)はSコードα力としてのデータ格納するための
Sコードデータレジスタ(SO)、(53)はEステー
ジ(5)で行うメモリアクセスに関するデータを格納す
るデータレジスタ(DO)であり、(101)〜(1)
0)はそれぞれ内部でデータやアドレスの転送を行うた
めの内部バス(31バス、S2バス、DOババスAバス
、AOババス[1ISPバス、poババスCA、バス、
AAババス00バス)である。
、サブルーチンコール命令、サブルーチンリターン命令
の処理を説明するために必要な部分だけが抜き出されて
説明されている6図において、(21)は命令キュー、
(22)は命令デコード部、(23)は外部とデータの
やり取りを行うデータ入出力回路、(24)は外部アド
レスの出力を行うアドレス出力回路、(25)は命令フ
ェッチを行うアドレスを出力するための力゛ウンタ(Q
INPC) 、(26)は各ステップコード生成毎に命
令デコード部(22)で処理された命令長を格納するラ
ッチ(IL)、(27)はプリブランチのためのPCに
対する変位を格納するためのラッチ(PD)、(30)
はpc演算部(54)での加算を行うためのpc加算器
、(28)、(29)、(31)はそれぞれpc加算器
(30)の入出力ラッチ(P^、PB、PO)、(32
)はステップコード処理毎のテンポラリなPCを格納す
るためのレジスタ(TPC) 、(33)は現在デコー
ド中の命令のPCを格納するためのDステージPC(D
PC)、(34)はアドレス計算中のステップコードコ
ードに対応するPCを格納するためのAステージPC(
八PC)、(38)はアドレス計算のための3値加算を
行うアドレス加算器、(35)、(36)、(37)、
(39)はそれぞれアドレス加算器(38)の入出力ラ
ッチ(AI、AD、八B、AO)、(40)はAステー
ジ(3)でインクリメントやデクリメントを行いSPの
管理を行うAステージスタックポインタ〈^SP) 、
(41)はFコードα9としてのアドレスを格納するた
めのFコードアドレスレジスタ(FA)、(42)はS
コードaηとしてのアドレスを格納するためのSコード
アドレスレジスタ、(43)は命令フェッチを行うアド
レスを一時的に記憶するためのC^アドレスレジスタ(
CA^’) 、 (44)はEステージ(5)で管理し
ているアドレスレジスタ(AA)、(45)はEステー
ジ(5)での分岐先アドレスを格納するためのEステー
ジブランチアドレスレジスタ(EB)、(46)はサブ
ルーチンコール時の戻り先アドレスのみを格納しており
PCスタックポインタ、フレームボインク、ワーキング
レジスタ等を含みレジスタファイル、(56)はS2バ
ス(102)から値を入力してDOババス103)に値
を出力する0Mラッチ、(50)はデータ演算のため(
7)ALU 、 (48)、(49)、(51)はAL
U (50)の入出力ランチ、(DA、DB、Do)、
(52)はSコードα力としてのデータ格納するための
Sコードデータレジスタ(SO)、(53)はEステー
ジ(5)で行うメモリアクセスに関するデータを格納す
るデータレジスタ(DO)であり、(101)〜(1)
0)はそれぞれ内部でデータやアドレスの転送を行うた
めの内部バス(31バス、S2バス、DOババスAバス
、AOババス[1ISPバス、poババスCA、バス、
AAババス00バス)である。
(54)はPC演算部、(55)はアドレス計算部であ
る。
る。
第3図は本発明のデータ処理装置におけるサブルーチン
リターン命令の先行分岐処理に特に関係する部分のブロ
ック図である0図において、(61)はDステージ制御
部、(62)はIFステージ制御部、(63)はEステ
ージ制御部、(65)はパイプライン処理途中のサブル
ーチンコール命令の数をカウントするための3ビツトの
カウンタであるBSRカウンタ、(66)はDステージ
(2)が管理している3ビツトのpcスタックポインタ
(OP)、(67)はEステージ(5)が管理している
3ビツトのPCスタックポインタ(EP)、(6B)
、 (69) はそれぞれOP (66)、EP (6
7)をデコードするデコーダであり、(201)〜(2
12)は各部の制御信号である。この図では簡単のため
タイミングを制御するためのクロック信号は省略しであ
る。
リターン命令の先行分岐処理に特に関係する部分のブロ
ック図である0図において、(61)はDステージ制御
部、(62)はIFステージ制御部、(63)はEステ
ージ制御部、(65)はパイプライン処理途中のサブル
ーチンコール命令の数をカウントするための3ビツトの
カウンタであるBSRカウンタ、(66)はDステージ
(2)が管理している3ビツトのpcスタックポインタ
(OP)、(67)はEステージ(5)が管理している
3ビツトのPCスタックポインタ(EP)、(6B)
、 (69) はそれぞれOP (66)、EP (6
7)をデコードするデコーダであり、(201)〜(2
12)は各部の制御信号である。この図では簡単のため
タイミングを制御するためのクロック信号は省略しであ
る。
本実施例では、PCスタック(46)は8エントリで構
成されている。また、OP (66) 、 IMF (
67)は3ピントとなっているが、インクリメント時の
最上位ビットからのキャリー、デクリメント時の最上位
ビットへのボローは無視される。すなわち、PCスタッ
ク(46)は、ポインタ゛000° の指し示すエント
リが隣合ったリング状のスタックメモリとして取り扱わ
れている。
成されている。また、OP (66) 、 IMF (
67)は3ピントとなっているが、インクリメント時の
最上位ビットからのキャリー、デクリメント時の最上位
ビットへのボローは無視される。すなわち、PCスタッ
ク(46)は、ポインタ゛000° の指し示すエント
リが隣合ったリング状のスタックメモリとして取り扱わ
れている。
(2,1) PCスタックの動作の概要本発明のデータ
処理装置においてサブルーチンコール命令およびサブル
ーチンリターン命令がどのように実行されるか大まかに
説明する。
処理装置においてサブルーチンコール命令およびサブル
ーチンリターン命令がどのように実行されるか大まかに
説明する。
本発明のデータ処理装置では、サブルーチンコール命令
としてブランチサブルーチン(BSR)命令とジャンプ
サブルーチン(JSR)命令がある。また、サブルーチ
ンリターン命令としては、リターンサブルーチン(RT
S)命令と高機能命令として高級言語用サブルーチンリ
ターンとパラメータ解放を一度に行うEXITD命令が
ある。
としてブランチサブルーチン(BSR)命令とジャンプ
サブルーチン(JSR)命令がある。また、サブルーチ
ンリターン命令としては、リターンサブルーチン(RT
S)命令と高機能命令として高級言語用サブルーチンリ
ターンとパラメータ解放を一度に行うEXITD命令が
ある。
サブルーチンコール命令が実行されると、Eステージ(
5)でサブルーチンからの戻り先アドレスがPCスタッ
ク(46)にブソシェされる。サブルーチンリターン命
令がデコードされると、Dステージe)でPCスタック
(46)のスタックトップにあるアドレスに先行分岐処
理(プリリターン)を行う、パイプラインの初期段階で
あるデコードステージで分岐処理を行うためサブルーチ
ンリターン命令実行によるパイプラインの乱れを大幅に
削減できる。
5)でサブルーチンからの戻り先アドレスがPCスタッ
ク(46)にブソシェされる。サブルーチンリターン命
令がデコードされると、Dステージe)でPCスタック
(46)のスタックトップにあるアドレスに先行分岐処
理(プリリターン)を行う、パイプラインの初期段階で
あるデコードステージで分岐処理を行うためサブルーチ
ンリターン命令実行によるパイプラインの乱れを大幅に
削減できる。
実行ステージでは、プリリターンを行ったアドレスとメ
モリから読み込んだ真の戻り先アドレスが比較され、不
一致であったならば真の戻り先アドレスへの分岐処理を
行う、ポインタ0P(66)、IMF(66)等の更新
も含めて少し詳しく説明する。
モリから読み込んだ真の戻り先アドレスが比較され、不
一致であったならば真の戻り先アドレスへの分岐処理を
行う、ポインタ0P(66)、IMF(66)等の更新
も含めて少し詳しく説明する。
リセットされた状態では、RES[!T信号(20B)
により、BSRカウンタ(65)、IMF (67)は
ゼロクリアされ、0P(66)にはゼロになっているE
P (67)の値がコピーされる。
により、BSRカウンタ(65)、IMF (67)は
ゼロクリアされ、0P(66)にはゼロになっているE
P (67)の値がコピーされる。
□ まず、命令キエー(21)から取り込まれた命令コ
ードが命令デコードブランチ(22)でデコードされる
。デコードの結果、取り込まれた命令がサブルーチンコ
ール命令であった場合にはDPDEC信号(202)に
よりOPのデクリメントを行うと共に、BSRカウンタ
(65)をカウントアツプする。アドレス計算ステージ
(湧では、アドレス加算器(38)により戻り先アドレ
スが計算されて^0バス(105)を介してFAレジス
タ(41)に転送される。Fステージ(4)では、FA
レジスタ(41)の値がS^レジスタ(42)に転送さ
れる。サブルーチンコール命令がEステージ(5)で実
行されるとEPDEC信号(206)によりEP (6
7)の値がプリデクリメントされる。そしてPCWRI
TII信号(21G)により更新された(67)が指す
PCスタック(46)に、SLババス101)を介して
SAレジスタ(42)に格納されている戻り番地の値が
書き込まれる。また、BSRCDIIC信号(205)
によりBSRカウンタ(65)をデクリメントする。
BSR命令では、Dステージ(2)でサブルーチンの先
頭番地への分岐処理を行う、 BSR命令では、Eステ
ージ(5)での分岐処理を行う必要はない。
ードが命令デコードブランチ(22)でデコードされる
。デコードの結果、取り込まれた命令がサブルーチンコ
ール命令であった場合にはDPDEC信号(202)に
よりOPのデクリメントを行うと共に、BSRカウンタ
(65)をカウントアツプする。アドレス計算ステージ
(湧では、アドレス加算器(38)により戻り先アドレ
スが計算されて^0バス(105)を介してFAレジス
タ(41)に転送される。Fステージ(4)では、FA
レジスタ(41)の値がS^レジスタ(42)に転送さ
れる。サブルーチンコール命令がEステージ(5)で実
行されるとEPDEC信号(206)によりEP (6
7)の値がプリデクリメントされる。そしてPCWRI
TII信号(21G)により更新された(67)が指す
PCスタック(46)に、SLババス101)を介して
SAレジスタ(42)に格納されている戻り番地の値が
書き込まれる。また、BSRCDIIC信号(205)
によりBSRカウンタ(65)をデクリメントする。
BSR命令では、Dステージ(2)でサブルーチンの先
頭番地への分岐処理を行う、 BSR命令では、Eステ
ージ(5)での分岐処理を行う必要はない。
次に、サブルーチンリターン命令の処理について説明す
る。命令キュー(21)から取り込まれた命令がサブル
ーチンリターン命令であったときにはBSRカウンタ(
65)の値がゼロであるかどうかを示すBSRCZ信号
(201) (D (s y りを行う、もし、BSR
カウンタ(65)がゼロでなかったら、BSRカウンタ
(65)の値がゼロになるまでDステージ(2)は処理
を一時停止する。 BSRカウンタ(65)がゼロでな
いということは、まだ対応するサブルーチンコール命令
がEステージ(5)で実行されずにパイプライン中にあ
ることを示しており、PCスタック(46)に対応する
戻り番地が登録されていないことを示している。 BS
RCZ信号(201)により、BSRカウンタ(65)
の値がゼロである、あるいは、ゼロになったことが示さ
れると、Dステージ制in部(61)はPRERET信
号(209)により、IFステージ制御部(62)及び
pcスタック(46)にプリリターン処理を行うことを
知らせる。 PCスタック(46)はDP (66)が
指し示しているPCスタック(46)の内容をC^ババ
ス10B)に出力する。
る。命令キュー(21)から取り込まれた命令がサブル
ーチンリターン命令であったときにはBSRカウンタ(
65)の値がゼロであるかどうかを示すBSRCZ信号
(201) (D (s y りを行う、もし、BSR
カウンタ(65)がゼロでなかったら、BSRカウンタ
(65)の値がゼロになるまでDステージ(2)は処理
を一時停止する。 BSRカウンタ(65)がゼロでな
いということは、まだ対応するサブルーチンコール命令
がEステージ(5)で実行されずにパイプライン中にあ
ることを示しており、PCスタック(46)に対応する
戻り番地が登録されていないことを示している。 BS
RCZ信号(201)により、BSRカウンタ(65)
の値がゼロである、あるいは、ゼロになったことが示さ
れると、Dステージ制in部(61)はPRERET信
号(209)により、IFステージ制御部(62)及び
pcスタック(46)にプリリターン処理を行うことを
知らせる。 PCスタック(46)はDP (66)が
指し示しているPCスタック(46)の内容をC^ババ
ス10B)に出力する。
IF スf −シ@ ’a 部(62) 4;!、命令
キュー(21)ニ取す込まれている命令データをすべて
無効化し、CAババス出力された値で戻り先アドレスの
命令のフェッチを行い、取り込まれた命令データを命令
デコード部(22)に送る。 pcスタック(46)の
内容がCAババス108)に出力さした後に、DPIN
C信号(203)によりDP (66)がポストインク
リメントされる。 RTS命令では、Fステージ(41
で、メモリから正しい戻り先アドレスがフェッチされ、
SDレジスタ(52)に取り込まれている。また、I!
XIT口命令では、Eステージ(5)での命令実行中に
、メモリから正しい戻り先アドレスをDDレジスタ(5
3)に取り込む、 PCRE八〇信へ(21))により
HP (67)が指し示すPCスタック(46)の内容
が31バスに出力され、ALII (50)の入力ラン
チであるOAクラッチ48)に取り込まれる。 OAク
ラッチ48)に取り込まれた値は現在Eステージ(5)
で処理中のサブルーチンリターン命令がプリリターンを
行ったときの戻り先アドレスである。また、SDレジス
タ〈52)あるいはDOレジスタ(53)に取り込まれ
ている真の戻り先アドレスS2バス(102) を介し
i’ DB ’l y + (49) ニ取り込まれる
。 ALU(50) テは、D^ランチ(48)の内
容とDBクラッチ49)の内容の比較を行い比較結果で
あるゼロフラグ(ZPLAG信号(49))をEステー
ジ制御部(63)に送る。Eステージ制御部(63)で
は、もし比較結果が一敢てあったなら、プリリターンが
正しかったことを示しているので、サブルーチンリター
ン命令の実行を終了する。もし比較結果が不一致であっ
た場合には、プリリターンを行った戻り先アドレスが誤
っていたことを示している。このとき、真の戻り先アド
レスの値をSlバス(101)を介してE8レジスタ(
45)に転送した後、EBレジスタ(45)の値をCA
ババス10B)に出力する。 IFステージ(1)はC
Aババス108) に出力された値により命令フェッ
チを行う。
キュー(21)ニ取す込まれている命令データをすべて
無効化し、CAババス出力された値で戻り先アドレスの
命令のフェッチを行い、取り込まれた命令データを命令
デコード部(22)に送る。 pcスタック(46)の
内容がCAババス108)に出力さした後に、DPIN
C信号(203)によりDP (66)がポストインク
リメントされる。 RTS命令では、Fステージ(41
で、メモリから正しい戻り先アドレスがフェッチされ、
SDレジスタ(52)に取り込まれている。また、I!
XIT口命令では、Eステージ(5)での命令実行中に
、メモリから正しい戻り先アドレスをDDレジスタ(5
3)に取り込む、 PCRE八〇信へ(21))により
HP (67)が指し示すPCスタック(46)の内容
が31バスに出力され、ALII (50)の入力ラン
チであるOAクラッチ48)に取り込まれる。 OAク
ラッチ48)に取り込まれた値は現在Eステージ(5)
で処理中のサブルーチンリターン命令がプリリターンを
行ったときの戻り先アドレスである。また、SDレジス
タ〈52)あるいはDOレジスタ(53)に取り込まれ
ている真の戻り先アドレスS2バス(102) を介し
i’ DB ’l y + (49) ニ取り込まれる
。 ALU(50) テは、D^ランチ(48)の内
容とDBクラッチ49)の内容の比較を行い比較結果で
あるゼロフラグ(ZPLAG信号(49))をEステー
ジ制御部(63)に送る。Eステージ制御部(63)で
は、もし比較結果が一敢てあったなら、プリリターンが
正しかったことを示しているので、サブルーチンリター
ン命令の実行を終了する。もし比較結果が不一致であっ
た場合には、プリリターンを行った戻り先アドレスが誤
っていたことを示している。このとき、真の戻り先アド
レスの値をSlバス(101)を介してE8レジスタ(
45)に転送した後、EBレジスタ(45)の値をCA
ババス10B)に出力する。 IFステージ(1)はC
Aババス108) に出力された値により命令フェッ
チを行う。
サブルーチンリターン命令実行時に、Eステージ(5)
では、Dステージ(2)でプリリターンを行った戻り先
アドレスが正しかったかどうかのチエツクを行っている
。これは、PCスタック(46)が8エントリで構成さ
れているため、サブルーチンコールが9レベル以上の入
れ子になった場合には8レベル以上上のレベルのサブル
ーチンコールに関する戻り先アドレスのデータがオーバ
ーライドされて壊されてしまう、また、プログラムによ
って外部メモリ上の戻り先アドレスの値が書き換えられ
た場合にも、PCスタック(46)に登録されている戻
り先アドレスとは異なるアドレスにリターンする。
では、Dステージ(2)でプリリターンを行った戻り先
アドレスが正しかったかどうかのチエツクを行っている
。これは、PCスタック(46)が8エントリで構成さ
れているため、サブルーチンコールが9レベル以上の入
れ子になった場合には8レベル以上上のレベルのサブル
ーチンコールに関する戻り先アドレスのデータがオーバ
ーライドされて壊されてしまう、また、プログラムによ
って外部メモリ上の戻り先アドレスの値が書き換えられ
た場合にも、PCスタック(46)に登録されている戻
り先アドレスとは異なるアドレスにリターンする。
このような場合に備え、Eステージ(5)ではプリリタ
ーンが正しく実行されたかどうかのチエツクを行ってい
るのである。しかし、プログラムによって外部メモリ上
の戻り先アドレスの値を書き換える様なことはまずない
し、サブルーチンレベルが一番深くなったところから8
レベルのサブルーチンコールに関してはいつも正しい値
がPCスタック(46)に格納されているので、プリリ
ターンが正しく行われる確立は非常に高い。
ーンが正しく実行されたかどうかのチエツクを行ってい
るのである。しかし、プログラムによって外部メモリ上
の戻り先アドレスの値を書き換える様なことはまずない
し、サブルーチンレベルが一番深くなったところから8
レベルのサブルーチンコールに関してはいつも正しい値
がPCスタック(46)に格納されているので、プリリ
ターンが正しく行われる確立は非常に高い。
先に述べたBSRカウンタ(65)は、より正確なプリ
リターンを行い、Eステージ(5)での比較を確実に行
うために備えられている。この機能がないと、サブルー
チンコール命令が処理中であり、Dステージ(2)での
処理は終了したが、Eステージ(5)でまだ戻り先アド
レスの値がPCスタック(46)に書き込まれていない
うちに、Dステージ(2)でサブルーチンリターン命令
が実行された場合、対応するサブルーチンリターン命令
の戻り先アドレスが登録されていないため、誤った戻り
先アドレスにブリリターン処理を行ってしまう、ところ
が、サブルーチンリターン命令がEステージ(5)で処
理される段階では、先行していたサブルーチンコール命
令がすでに処理されており、PCスタック(46)には
正しい戻り先アドレスが登録されているため、Eステー
ジ(5)での比較結果は一致を示し、プリリターンが正
しかったとして処理されてしまう、すなわち、このよう
な場合誤動作を行ってしまうわけである。
リターンを行い、Eステージ(5)での比較を確実に行
うために備えられている。この機能がないと、サブルー
チンコール命令が処理中であり、Dステージ(2)での
処理は終了したが、Eステージ(5)でまだ戻り先アド
レスの値がPCスタック(46)に書き込まれていない
うちに、Dステージ(2)でサブルーチンリターン命令
が実行された場合、対応するサブルーチンリターン命令
の戻り先アドレスが登録されていないため、誤った戻り
先アドレスにブリリターン処理を行ってしまう、ところ
が、サブルーチンリターン命令がEステージ(5)で処
理される段階では、先行していたサブルーチンコール命
令がすでに処理されており、PCスタック(46)には
正しい戻り先アドレスが登録されているため、Eステー
ジ(5)での比較結果は一致を示し、プリリターンが正
しかったとして処理されてしまう、すなわち、このよう
な場合誤動作を行ってしまうわけである。
BSRカウンタの機能を備えることにより、参照すべき
戻り先アドレスの値が先行するサブルーチンコール命令
により登録された後に、プリリターンが行われる。また
、サブルーチンコール命令の実行に際し、Dステージ(
2)でPCスタック(46)、;(参照されてからEス
テージ(5)処理されるまでPCスタック(46)が書
き換えられることがないので、Dステージ(2)でプリ
リターンを行った戻り先アドレスの値がEステージ(5
)において正しく参照される。ただし、プリブランチを
行わないJSR命令では、Eステージ(5)において分
岐先アドレスへの分岐処理が行われるため、もし、RT
S命令ががJSR命令で登録される前のPCスタックを
参照してプリリターンしても、そのRTS命令自体が実
行される前にパイプラインはキャンセルされるので、こ
のようなことは起こらない。
戻り先アドレスの値が先行するサブルーチンコール命令
により登録された後に、プリリターンが行われる。また
、サブルーチンコール命令の実行に際し、Dステージ(
2)でPCスタック(46)、;(参照されてからEス
テージ(5)処理されるまでPCスタック(46)が書
き換えられることがないので、Dステージ(2)でプリ
リターンを行った戻り先アドレスの値がEステージ(5
)において正しく参照される。ただし、プリブランチを
行わないJSR命令では、Eステージ(5)において分
岐先アドレスへの分岐処理が行われるため、もし、RT
S命令ががJSR命令で登録される前のPCスタックを
参照してプリリターンしても、そのRTS命令自体が実
行される前にパイプラインはキャンセルされるので、こ
のようなことは起こらない。
以上で述べたように、サブルーチンコール時の戻り先ア
ドレスのみを記憶するPCスタック(46)を設けるこ
とにより、サブルーチンリターン命令に対して命令のデ
コード段階で戻り先アドレスへのプリリターンを行い、
サブルーチンリターン命令実行時のパイプラインの乱れ
をなくす。
ドレスのみを記憶するPCスタック(46)を設けるこ
とにより、サブルーチンリターン命令に対して命令のデ
コード段階で戻り先アドレスへのプリリターンを行い、
サブルーチンリターン命令実行時のパイプラインの乱れ
をなくす。
Eステージ(5)においてブランチが起こった場合には
、EBRA信号(204)によりBSRカウンタ(65
)の値がゼロクリアされ、I!P (67)の内容がU
P (66)にコピーされる。Eステージ(5)におい
てブランチが起こった場合には、夏Fステージ+1)〜
Fステージでの処理がすべて無効化されるため、Dステ
ージ(2)でデコードされたが、Eステージ(5)では
実行されなかった処理途中サブルーチンコール命令、サ
ブルーチンリターン命令に対して行われたBSRカウン
タ(65)、OP (66)の更新を無効化し、pcス
タック(46)ノそのレベルまでの戻り先アドレスの値
をDステージ(2)で正しく参照できるようになってい
る。
、EBRA信号(204)によりBSRカウンタ(65
)の値がゼロクリアされ、I!P (67)の内容がU
P (66)にコピーされる。Eステージ(5)におい
てブランチが起こった場合には、夏Fステージ+1)〜
Fステージでの処理がすべて無効化されるため、Dステ
ージ(2)でデコードされたが、Eステージ(5)では
実行されなかった処理途中サブルーチンコール命令、サ
ブルーチンリターン命令に対して行われたBSRカウン
タ(65)、OP (66)の更新を無効化し、pcス
タック(46)ノそのレベルまでの戻り先アドレスの値
をDステージ(2)で正しく参照できるようになってい
る。
(2,2)サブルーチンコール命令、サブルーチンリタ
ーン命令の詳細動作 以上では、サブルーチンコール命令とサブルーチンリタ
ーン命令の大まかな動作について述べてきたが、ここで
は各命令の詳細な動作について説明する。
ーン命令の詳細動作 以上では、サブルーチンコール命令とサブルーチンリタ
ーン命令の大まかな動作について述べてきたが、ここで
は各命令の詳細な動作について説明する。
本発明のデータ処理装置では、サブルーチンコール命令
としてブランチサブルーチン(BSR)命令とジャンプ
サブルーチン(JSR)命令がある。また、サブルーチ
ンリターン命令としては、リターンサブルーチン(RT
S)命令と高機能命令として高級言語用サブルーチンリ
ターンとパラメータ解放を一度に行うEXITD命令が
ある。以下、各命令について詳細な説明を行う、各命令
のビット割り付けを第4図に示しである。′−9はオペ
レージタンコードを示す。
としてブランチサブルーチン(BSR)命令とジャンプ
サブルーチン(JSR)命令がある。また、サブルーチ
ンリターン命令としては、リターンサブルーチン(RT
S)命令と高機能命令として高級言語用サブルーチンリ
ターンとパラメータ解放を一度に行うEXITD命令が
ある。以下、各命令について詳細な説明を行う、各命令
のビット割り付けを第4図に示しである。′−9はオペ
レージタンコードを示す。
(2,2,1)BSR命令
BSR命令はPC相対のアドレッシングのみをサポート
するサブルーチンコール命令であり、戻り先アドレスが
スタックに退避される。第4図(A)。
するサブルーチンコール命令であり、戻り先アドレスが
スタックに退避される。第4図(A)。
(B)に示すようにBSR命令に関しては一般形(Gフ
ォーマット)と短縮形(Elフォーマット)の2つの命
令フォーマットがある。Dステージ(2)では、どちら
のフォーマットでも同様の処理が行われる。
ォーマット)と短縮形(Elフォーマット)の2つの命
令フォーマットがある。Dステージ(2)では、どちら
のフォーマットでも同様の処理が行われる。
この命令は、1つのステップコードとして処理される。
BSR命令実行のフローチャートを第5図に示す。
BSR命令が命令デコード部(22)で処理されると、
BSR命令のステップコードを示すDコードOコと戻り
先アドレスを計算するためのAコードQ3が生成される
。Gフォーマントの命令であれば、変位のサイズを示す
フィールド(82B)に従って変位(820)の値も同
時に取り込む、また、DPDEC信号(202)により
DP (66)のデクリメント、及びBSRカウンタ(
65)のインクリメント処理を行う、この命令は、ブリ
ブランチを行う命令であり、PC演算部(54)におい
て飛び先アドレスの計算が行われ、演算結果がCAババ
ス出力されてブリブランチ処理が行われる。Aステージ
(3)では、Aコード01の指示に従ってアドレス計算
部(55)において戻り先のアドレスが計算され、^0
バス(105)を介してFAレジスタ(41)に転送さ
れる。Fステージ(14)ではFAレジスタ(41)の
値がSAレジスタ(42)に転送される。Eステージ(
5)では、まず、!!PDIIC信号(206)により
EP(67)のブリデクリメントを行う0次に、PCW
RITE信号(210)によって、戻り先アドレスが格
納されているS^レジスタ(42)の値が51バス(1
01)を介してPCスタック(46)中の[EP (6
7)の指すエントリに書き込まれる。また、同時に51
バス(101)の値が^LSI(50)、DOババス1
03) を介してDOレジスタ(53)に書き込まれ、
戻り先アドレスの格納されたDDレジスタ(53)の値
をスタックポインタによってソフトウェアで管理されて
いるメモリ上のスタックにブツシュする。PCスタック
(46)に戻り先アドレスが登録されたらBSRCDE
C信号(205)によりBRSカウンタ(65)がデク
リメントされる。この命令では、Dステージ(2)にお
いてすでに分岐処理が行われているので、Eステージで
は分岐処理は行わない。
BSR命令のステップコードを示すDコードOコと戻り
先アドレスを計算するためのAコードQ3が生成される
。Gフォーマントの命令であれば、変位のサイズを示す
フィールド(82B)に従って変位(820)の値も同
時に取り込む、また、DPDEC信号(202)により
DP (66)のデクリメント、及びBSRカウンタ(
65)のインクリメント処理を行う、この命令は、ブリ
ブランチを行う命令であり、PC演算部(54)におい
て飛び先アドレスの計算が行われ、演算結果がCAババ
ス出力されてブリブランチ処理が行われる。Aステージ
(3)では、Aコード01の指示に従ってアドレス計算
部(55)において戻り先のアドレスが計算され、^0
バス(105)を介してFAレジスタ(41)に転送さ
れる。Fステージ(14)ではFAレジスタ(41)の
値がSAレジスタ(42)に転送される。Eステージ(
5)では、まず、!!PDIIC信号(206)により
EP(67)のブリデクリメントを行う0次に、PCW
RITE信号(210)によって、戻り先アドレスが格
納されているS^レジスタ(42)の値が51バス(1
01)を介してPCスタック(46)中の[EP (6
7)の指すエントリに書き込まれる。また、同時に51
バス(101)の値が^LSI(50)、DOババス1
03) を介してDOレジスタ(53)に書き込まれ、
戻り先アドレスの格納されたDDレジスタ(53)の値
をスタックポインタによってソフトウェアで管理されて
いるメモリ上のスタックにブツシュする。PCスタック
(46)に戻り先アドレスが登録されたらBSRCDE
C信号(205)によりBRSカウンタ(65)がデク
リメントされる。この命令では、Dステージ(2)にお
いてすでに分岐処理が行われているので、Eステージで
は分岐処理は行わない。
(2,2,2)JSR命令
JSR命令のビット割り付けが第4図(C)に示されて
いる。 JSR命令はNl!GH’C(83C)の実効
アドレスにサブルーチンジャンプする命令であり、戻り
先アドレスがスタックに退避される。飛び先番地に関し
ては複数段のアドレッシング拡張指定が可能であるが簡
単のため拡張指定がない場合について説明する。この命
令はDステージ(2)で2つのステップコードに分解さ
れて処理される。第1のステップコードは飛び先のアド
レスに関する処理を行い、第2のステップコードでは戻
り先アドレスに関する処理を行う。
いる。 JSR命令はNl!GH’C(83C)の実効
アドレスにサブルーチンジャンプする命令であり、戻り
先アドレスがスタックに退避される。飛び先番地に関し
ては複数段のアドレッシング拡張指定が可能であるが簡
単のため拡張指定がない場合について説明する。この命
令はDステージ(2)で2つのステップコードに分解さ
れて処理される。第1のステップコードは飛び先のアド
レスに関する処理を行い、第2のステップコードでは戻
り先アドレスに関する処理を行う。
まず、第1のステップコードに関する処理について説明
する。 JSR命令が命令デコード部(22)でデコシ
ドされると、JSR命令の第1ステツプコードを示すD
コード(2)と飛び先番地の実効アドレスを計算するた
めのAコードα簿が生成される。もし飛び先番地のアド
レス計算に絶対アドレスや変位等の拡張部(83C)を
必要とする場合にはそのデータも命令キュー(21)か
ら同時取り込む、Aステージ(3)では、Aコード01
の指示に従ってアドレス計算部(55)において飛び先
のアドレスが計算され、AOババス105)を介してF
Aレジスタ(41)に転送される。Fステージ(4)で
はFAレジスタ(41)の値がSAレジスタ(42)に
転送される。Eステージ(5)では飛び先アドレスが格
納されているS^レジスタ(42)の値が31バス(1
01)を介してEBレジスタ(45)に転送される。
する。 JSR命令が命令デコード部(22)でデコシ
ドされると、JSR命令の第1ステツプコードを示すD
コード(2)と飛び先番地の実効アドレスを計算するた
めのAコードα簿が生成される。もし飛び先番地のアド
レス計算に絶対アドレスや変位等の拡張部(83C)を
必要とする場合にはそのデータも命令キュー(21)か
ら同時取り込む、Aステージ(3)では、Aコード01
の指示に従ってアドレス計算部(55)において飛び先
のアドレスが計算され、AOババス105)を介してF
Aレジスタ(41)に転送される。Fステージ(4)で
はFAレジスタ(41)の値がSAレジスタ(42)に
転送される。Eステージ(5)では飛び先アドレスが格
納されているS^レジスタ(42)の値が31バス(1
01)を介してEBレジスタ(45)に転送される。
次に、第2のステップコードに関する処理について説明
する。Dステージ(2)ではJSR命令の第2ステツプ
コードを示すDコード(2)と戻り先アドレスの実効ア
ドレスを計算するためのAコードα湯が生成される。こ
のステップコードの処理では命令キュー(21)から命
令データは取り込まれない、また、DPDIIC信号(
202)によりDP (66)のデクリメント、及び、
BSRカウンタ(65)のインクリメント処理を行う、
Aステージ(3)では、Aコードa1の指示に従ってア
ドレス計算部(55)において戻り先のアドレスが計算
され、AOババス105)を介してFAレジスタ(41
)に転送される。Fステージ(4)ではFAレジスタ(
41)の値がS^レジスタ(42)に転送される。Eス
テージ(5)では、まず、[!PDEC信号(206)
、により1!P(67)のブリデクリメントを行う0次
に、PCWRITI!信号(210)によって、戻り先
アドレスが格納されているS^レジスタ(42)の値が
51バス(101)を介してPCスタック(46)中の
EP (67)の指すエントリに書き込まれる。また、
同時にSlバス(101)の値がALU(50)、DO
ババス103)を介して0Dレジスタ(53)に書き込
まれ、戻り先アドレスの格納されたODレジスタ(53
)の値をスタックポインタによってソフトフエアで管理
されているメモリ上のスタックにブツシュする。第2ス
テツプコードですでに(45)に書き込まれている飛び
先番地の値をCAババス出力して分岐処理を行う、この
とき、EBRA信号(204)により、BSRカウンタ
(65)はクリアされ、DP (66)にはBP (6
7)の値がコピーされる。
する。Dステージ(2)ではJSR命令の第2ステツプ
コードを示すDコード(2)と戻り先アドレスの実効ア
ドレスを計算するためのAコードα湯が生成される。こ
のステップコードの処理では命令キュー(21)から命
令データは取り込まれない、また、DPDIIC信号(
202)によりDP (66)のデクリメント、及び、
BSRカウンタ(65)のインクリメント処理を行う、
Aステージ(3)では、Aコードa1の指示に従ってア
ドレス計算部(55)において戻り先のアドレスが計算
され、AOババス105)を介してFAレジスタ(41
)に転送される。Fステージ(4)ではFAレジスタ(
41)の値がS^レジスタ(42)に転送される。Eス
テージ(5)では、まず、[!PDEC信号(206)
、により1!P(67)のブリデクリメントを行う0次
に、PCWRITI!信号(210)によって、戻り先
アドレスが格納されているS^レジスタ(42)の値が
51バス(101)を介してPCスタック(46)中の
EP (67)の指すエントリに書き込まれる。また、
同時にSlバス(101)の値がALU(50)、DO
ババス103)を介して0Dレジスタ(53)に書き込
まれ、戻り先アドレスの格納されたODレジスタ(53
)の値をスタックポインタによってソフトフエアで管理
されているメモリ上のスタックにブツシュする。第2ス
テツプコードですでに(45)に書き込まれている飛び
先番地の値をCAババス出力して分岐処理を行う、この
とき、EBRA信号(204)により、BSRカウンタ
(65)はクリアされ、DP (66)にはBP (6
7)の値がコピーされる。
以上述べたように、JSR命令でもPcスタック(46
)に関する処理はBS+?命令と同じである。
)に関する処理はBS+?命令と同じである。
(2,2,3) RTS命令
RTS命令はサブルーチンからのリターンを行う命令で
あり、スタックから復帰されたリターンアドレスにジャ
ンプする。この命令は、1つのステップコードとして処
理される。
あり、スタックから復帰されたリターンアドレスにジャ
ンプする。この命令は、1つのステップコードとして処
理される。
RTS命令実効のフローチャートを第6図に示す。
1?TS命令が命令デコード部(22ンで処理されると
、RTS命令のステップコードを示すDコード面とスタ
ックトップのアドレスを計算するためのAコード03が
生成される。この命令はプリリターンを行う命令である
。 BR5CZ信号(201)によりパイプライン中に
サブルーチンコール命令が存在することが示されている
場合にはBSRカウンタ(65)の内容がゼロになるま
で処理を一時停止する。 BSRカウンタ(65)がゼ
ロである場合にはプリリターン処理を行う、Pl?[!
RET信号(209) により、Pcスタック(46)
中のDP(66)が指し示すエントリの内容をCAババ
ス108)に出力し、先行分岐処理(プリリターン)を
行う、また、Pcスタック(46)参照後、DPINC
信号(203)によりDP (66)のポストインクリ
メント処理を行う、Aステージ(3)では、Aコードα
簿の指示に従ってアドレス計算部(55)においてスタ
ックトップのアドレスが計算され、^Oババス105)
を介してFAレジスタ(41)に書き込まれる。スタッ
クトップのアドレスとはASP(4G) の偵そのもの
である。
、RTS命令のステップコードを示すDコード面とスタ
ックトップのアドレスを計算するためのAコード03が
生成される。この命令はプリリターンを行う命令である
。 BR5CZ信号(201)によりパイプライン中に
サブルーチンコール命令が存在することが示されている
場合にはBSRカウンタ(65)の内容がゼロになるま
で処理を一時停止する。 BSRカウンタ(65)がゼ
ロである場合にはプリリターン処理を行う、Pl?[!
RET信号(209) により、Pcスタック(46)
中のDP(66)が指し示すエントリの内容をCAババ
ス108)に出力し、先行分岐処理(プリリターン)を
行う、また、Pcスタック(46)参照後、DPINC
信号(203)によりDP (66)のポストインクリ
メント処理を行う、Aステージ(3)では、Aコードα
簿の指示に従ってアドレス計算部(55)においてスタ
ックトップのアドレスが計算され、^Oババス105)
を介してFAレジスタ(41)に書き込まれる。スタッ
クトップのアドレスとはASP(4G) の偵そのもの
である。
Fステージ(4)でFAレジスタ(41)の値でオペラ
ンドがフェッチされ、SDレジスタ(52)に取り込ま
れる。
ンドがフェッチされ、SDレジスタ(52)に取り込ま
れる。
SDレジスタ(52)に取り込まれた値は、スタック上
に退避さ゛れていた真の戻り先アドレスであるEステー
ジ(5)では、PCRE^D信号(21)) によっ
て、ブリリターン時に参照されたリターンアドレスが格
納されているPcスタック(46)中のBP (67)
の指すエントリの内容が31バス(101) に出力さ
れ、D^ラッチ(48)に取り込まれる。そして、真の
戻り先アドレスが格納されているSDレジスタ(52)
の内容が82バス(102)を介してDBランチ(49
)に取り込まれる。
に退避さ゛れていた真の戻り先アドレスであるEステー
ジ(5)では、PCRE^D信号(21)) によっ
て、ブリリターン時に参照されたリターンアドレスが格
納されているPcスタック(46)中のBP (67)
の指すエントリの内容が31バス(101) に出力さ
れ、D^ラッチ(48)に取り込まれる。そして、真の
戻り先アドレスが格納されているSDレジスタ(52)
の内容が82バス(102)を介してDBランチ(49
)に取り込まれる。
ALU (50)ではブリリターンが行われたアドレス
と真の戻り先アドレスとの比較が行われ、比較結果がZ
FLAG信号(212)としてEステージ制御部(63
)に送られる。また、同時、sDレジスタ(52)の内
容が32ハス(102)、DMランチ(56)、DOハ
ス(103) を介して、レジスタファイル(47)
中のワーキングレジスタに退避される。Pcスタック(
46)参照後、[!PINC信号(20?)によりEP
(67)のポストインクリメントを行う、比較結果が
一敗していたら、正しいアドレスにプリリターが行われ
たことを示しており、Eステージ(5)は1マイクロサ
イクルNOPを実行して命令の実行を終了する。比較結
果が不一致であった場合にはブリリターンを行ったリタ
ーンアドレスが誤っていたことを示しており、ワーキン
グレジスタに退避されている真の戻り先アドレスの値を
stババス101)を介して8Bレジスタ(45)に転
送し、EBレジスタ(45)の値がCAババス108)
に出力されて分岐処理が行われる。このとき、EBRA
信号(204)により、BSIカウンタ(65)はクリ
アされ、0P(66) ニは[BP(67) 17)値
がコピーさレル。
と真の戻り先アドレスとの比較が行われ、比較結果がZ
FLAG信号(212)としてEステージ制御部(63
)に送られる。また、同時、sDレジスタ(52)の内
容が32ハス(102)、DMランチ(56)、DOハ
ス(103) を介して、レジスタファイル(47)
中のワーキングレジスタに退避される。Pcスタック(
46)参照後、[!PINC信号(20?)によりEP
(67)のポストインクリメントを行う、比較結果が
一敗していたら、正しいアドレスにプリリターが行われ
たことを示しており、Eステージ(5)は1マイクロサ
イクルNOPを実行して命令の実行を終了する。比較結
果が不一致であった場合にはブリリターンを行ったリタ
ーンアドレスが誤っていたことを示しており、ワーキン
グレジスタに退避されている真の戻り先アドレスの値を
stババス101)を介して8Bレジスタ(45)に転
送し、EBレジスタ(45)の値がCAババス108)
に出力されて分岐処理が行われる。このとき、EBRA
信号(204)により、BSIカウンタ(65)はクリ
アされ、0P(66) ニは[BP(67) 17)値
がコピーさレル。
EXITD命令は高級言語用のパラメータ解放、退避し
ていたレジスタの復帰、サブルーチンからのリターン、
及び、スタック上のサブルーチンパラメータの解放を行
う高機能命令である。第4図(E)。
ていたレジスタの復帰、サブルーチンからのリターン、
及び、スタック上のサブルーチンパラメータの解放を行
う高機能命令である。第4図(E)。
(F)に示すようにEXITD命令に関してはGフォー
マットとEフォーマントの2つの命令フォーマットがあ
る。Gフォーマットでは3つのステップコードとして処
理され、Eフォーマントではこの命令は、1つのステッ
プコードとして処理される。
マットとEフォーマントの2つの命令フォーマットがあ
る。Gフォーマットでは3つのステップコードとして処
理され、Eフォーマントではこの命令は、1つのステッ
プコードとして処理される。
簡単のため第4図(E)゛に示すEフォーマットの命令
についてのみ説明を行う f!XITD命令が命令デコード部(22)で処理され
ると、EXITO命令のステップコードを示すDコード
(転)と即値の転送を行うためのAコードαlが生成さ
れる。スタックポインタの補正値(85B)の値は、リ
テラルとしてDコード亜で送られる。この命令では、2
バイトの復帰するレジスタのビットマツプデータ(85
C)の値も同時に取り込み、Aコード01の即値として
転送されていく。この命令はプリリターンを行う命令で
ある。 BR5CZ信号によりパイプライン中にサブル
ーチンコール命令が存在することが示されている場合に
はBSRカウンタ(65)の内容がゼロになるまで処理
を一時停止する。 BSRカウンタ(65)がゼロであ
る場合にはプリリターン処理を行う、 PRERET信
号(209)によりpcスタック(46)中のDP (
66)が指し示すエントリの内容をC^ババス108)
に出力し、先行分岐処理(プリリターン)を行う、また
、pcスタック(46)参照後、DPINC信号(20
3)によりOP (66)のポストインクリメント処理
を行う、Aステージ(3)では、Aコードα罎の指示に
従ってアドレス計算部(55)において即値の値が転送
され、^0バス(105)を介してF^レジスタ(41
)に書き込まれる。FステージではFAレジスタ(41
)の値がSAレジスタ(42)に転送される。Eステー
ジ(5)では、退避されていたレジスタのスタックがら
の復帰、スタックフレームの解放、フレームポインタの
スタックからの復帰等の処理を行った後に、スタックか
ら戻り先アドレスの値をポンプし口Dレジスタ(53)
に取り込む、また、サブルーチンパラメータを解放する
ためにスタックポインタの補正を行う、 PCRE^0
信号(21))によって、プリリターン時に参照された
リターンアドレスが格納されているPCスタック(46
)中のEP (67)の指すエントリの内容がS1バス
(101)に出力され、D^ランチ(48)に取り込ま
れる。そして、真の戻り先アドレスが格納されている口
Dレジスタ(53)の内容が82バス(102)を介し
てDBクラッチ49)に取り込まれる。^LU (50
)ではプリリターンが行われたアドレスと真の戻り先ア
ドレスとの比較が行われ、比較結果がZFLAG信号(
212) としてEステージ制御部(63)に送られる
。また、同時に、SDレジスタ(52)の内容が、S2
バス(102) 、0Mラッチ(56)、口0バス(1
03) を介して、レジスタファイル(47)中のワー
キングレジスタに退避される。PCスタック(46)参
照後、EPINC信号(207)によりl!P (67
)のポストインクリメントを行う、比較結果が一敗して
いたら、正しいアドレスにプリリターンが行われたこと
を示しており、Eステージは1マイクロサイクルNOP
を実行して命令の実行を終了する。比較結果が不一致で
あった場合にはプリリターンを行ったリターンアドレス
が誤っていたことを示しており、ワーキングレジスタに
退避されている真の戻り先アドレスの値を81バス(1
01)を介してEBレジスタ(45)に転送し、EBレ
ジスタ(45)の値がCAババス108)に出力されて
分岐処理が行われる。このとき、EBR^信号(204
)により、BSRカウンタ(65)はクリアされ、0P
(66)にはIMF(67)の値がコピーされる。
についてのみ説明を行う f!XITD命令が命令デコード部(22)で処理され
ると、EXITO命令のステップコードを示すDコード
(転)と即値の転送を行うためのAコードαlが生成さ
れる。スタックポインタの補正値(85B)の値は、リ
テラルとしてDコード亜で送られる。この命令では、2
バイトの復帰するレジスタのビットマツプデータ(85
C)の値も同時に取り込み、Aコード01の即値として
転送されていく。この命令はプリリターンを行う命令で
ある。 BR5CZ信号によりパイプライン中にサブル
ーチンコール命令が存在することが示されている場合に
はBSRカウンタ(65)の内容がゼロになるまで処理
を一時停止する。 BSRカウンタ(65)がゼロであ
る場合にはプリリターン処理を行う、 PRERET信
号(209)によりpcスタック(46)中のDP (
66)が指し示すエントリの内容をC^ババス108)
に出力し、先行分岐処理(プリリターン)を行う、また
、pcスタック(46)参照後、DPINC信号(20
3)によりOP (66)のポストインクリメント処理
を行う、Aステージ(3)では、Aコードα罎の指示に
従ってアドレス計算部(55)において即値の値が転送
され、^0バス(105)を介してF^レジスタ(41
)に書き込まれる。FステージではFAレジスタ(41
)の値がSAレジスタ(42)に転送される。Eステー
ジ(5)では、退避されていたレジスタのスタックがら
の復帰、スタックフレームの解放、フレームポインタの
スタックからの復帰等の処理を行った後に、スタックか
ら戻り先アドレスの値をポンプし口Dレジスタ(53)
に取り込む、また、サブルーチンパラメータを解放する
ためにスタックポインタの補正を行う、 PCRE^0
信号(21))によって、プリリターン時に参照された
リターンアドレスが格納されているPCスタック(46
)中のEP (67)の指すエントリの内容がS1バス
(101)に出力され、D^ランチ(48)に取り込ま
れる。そして、真の戻り先アドレスが格納されている口
Dレジスタ(53)の内容が82バス(102)を介し
てDBクラッチ49)に取り込まれる。^LU (50
)ではプリリターンが行われたアドレスと真の戻り先ア
ドレスとの比較が行われ、比較結果がZFLAG信号(
212) としてEステージ制御部(63)に送られる
。また、同時に、SDレジスタ(52)の内容が、S2
バス(102) 、0Mラッチ(56)、口0バス(1
03) を介して、レジスタファイル(47)中のワー
キングレジスタに退避される。PCスタック(46)参
照後、EPINC信号(207)によりl!P (67
)のポストインクリメントを行う、比較結果が一敗して
いたら、正しいアドレスにプリリターンが行われたこと
を示しており、Eステージは1マイクロサイクルNOP
を実行して命令の実行を終了する。比較結果が不一致で
あった場合にはプリリターンを行ったリターンアドレス
が誤っていたことを示しており、ワーキングレジスタに
退避されている真の戻り先アドレスの値を81バス(1
01)を介してEBレジスタ(45)に転送し、EBレ
ジスタ(45)の値がCAババス108)に出力されて
分岐処理が行われる。このとき、EBR^信号(204
)により、BSRカウンタ(65)はクリアされ、0P
(66)にはIMF(67)の値がコピーされる。
以上述べたように、EXITD命令でもPCスタック(
46)に関する処理はRTS命令と同じである。
46)に関する処理はRTS命令と同じである。
(2,3)他の実施例の説明
本実施例では、PCスタック(46)は8エントリで構
成されている。従って、サブルーチンコールが9レベル
以上の入れ子となったときには、有効な戻り先アドレス
が格納されているエントリに別の戻り先アドレスがオー
バーライドされるため、最初の値が消えてしまう、従っ
て、リカーシブコールを行うような特殊な場合を除いて
、9レベル以上の入れ子になると誤ったプリリターンを
行うことになる。また、プログラムにより外部メモリ上
の戻り先アドレスを書き換えても誤った戻り先アドレス
にプリリターンを行うことになる。このため、Eステー
ジでプリリターンが正しかったかどうかのチエツクが必
要になるわけである。PCスタックを何エントリ設ける
かに関しては、何レベルまでの深さのサブルーチンコー
ルに対して正しいプリリターンを行うかという性能の問
題と、ハードウェアの増加量との兼ね合いで決定すれば
よい〉本実施例では、サブルーチンのなかでサブルーチ
ンからの戻り先アドレスが書き換えられても正しい動作
を保証するため、RTS命令実行時にCPU外部からフ
エ・ツチしたサブルーチンからの正しい戻り先アドレス
とPCスタック(46)からフェッチしてプリリターン
に使用したアドレスを比較している。もし、サーブルチ
ンからの戻り先アドレスが書き換えられないソフトウェ
アを実行するだけでよいのなら(実際のアプリケーショ
ンプログラムではサブルーチンからの戻り先アドレスが
書き換えられることはほとんどない) 、cpu外部の
メモリからサブルーチンの戻り先アドレスをフェッチす
る必要はない、PCスタック(46)にあるサブルーチ
ンの戻り先アドレスが書き換えられるかどうかをPCス
タック値の有効無効を示すフラッグを設けるなどしてチ
エツクするだけよい、つまり、CPt1外部のメモリに
あるサブルーチンからの戻り先アドレスがあるスタック
の整合性が保証されるのなら、ブリリターンが正しいか
どうかをPCスタック(46)の管理機構だけで判断し
て、PCスタックから正しいサブルーチンの戻り先アド
レスが得られないときだけ、CPU外部のメモリからサ
ブルーチンの戻り先アドレスをフェッチしてそのアドレ
スにリターンすればよい。
成されている。従って、サブルーチンコールが9レベル
以上の入れ子となったときには、有効な戻り先アドレス
が格納されているエントリに別の戻り先アドレスがオー
バーライドされるため、最初の値が消えてしまう、従っ
て、リカーシブコールを行うような特殊な場合を除いて
、9レベル以上の入れ子になると誤ったプリリターンを
行うことになる。また、プログラムにより外部メモリ上
の戻り先アドレスを書き換えても誤った戻り先アドレス
にプリリターンを行うことになる。このため、Eステー
ジでプリリターンが正しかったかどうかのチエツクが必
要になるわけである。PCスタックを何エントリ設ける
かに関しては、何レベルまでの深さのサブルーチンコー
ルに対して正しいプリリターンを行うかという性能の問
題と、ハードウェアの増加量との兼ね合いで決定すれば
よい〉本実施例では、サブルーチンのなかでサブルーチ
ンからの戻り先アドレスが書き換えられても正しい動作
を保証するため、RTS命令実行時にCPU外部からフ
エ・ツチしたサブルーチンからの正しい戻り先アドレス
とPCスタック(46)からフェッチしてプリリターン
に使用したアドレスを比較している。もし、サーブルチ
ンからの戻り先アドレスが書き換えられないソフトウェ
アを実行するだけでよいのなら(実際のアプリケーショ
ンプログラムではサブルーチンからの戻り先アドレスが
書き換えられることはほとんどない) 、cpu外部の
メモリからサブルーチンの戻り先アドレスをフェッチす
る必要はない、PCスタック(46)にあるサブルーチ
ンの戻り先アドレスが書き換えられるかどうかをPCス
タック値の有効無効を示すフラッグを設けるなどしてチ
エツクするだけよい、つまり、CPt1外部のメモリに
あるサブルーチンからの戻り先アドレスがあるスタック
の整合性が保証されるのなら、ブリリターンが正しいか
どうかをPCスタック(46)の管理機構だけで判断し
て、PCスタックから正しいサブルーチンの戻り先アド
レスが得られないときだけ、CPU外部のメモリからサ
ブルーチンの戻り先アドレスをフェッチしてそのアドレ
スにリターンすればよい。
本実施例では、確実なプリリターンを行うためにBSR
カウンタ(65)を備えらでいるが、サブルーチンコー
ル命令のブリブランチ処理を行わない場合には、サブル
ーチンコール命令実行後必ず飛び先番地への分岐処理が
行われ、パイプラインがキャンセルされるためこの機能
は必要ない。また、BSR命令をDステージ(2)デコ
ードするときポインタOP (66)をデクリメントし
ているが、8S1?命令をEステージ(5)で実行する
とき、デクリメントしたポインタEP (67)の値を
コピーすれようにしてもよい。
カウンタ(65)を備えらでいるが、サブルーチンコー
ル命令のブリブランチ処理を行わない場合には、サブル
ーチンコール命令実行後必ず飛び先番地への分岐処理が
行われ、パイプラインがキャンセルされるためこの機能
は必要ない。また、BSR命令をDステージ(2)デコ
ードするときポインタOP (66)をデクリメントし
ているが、8S1?命令をEステージ(5)で実行する
とき、デクリメントしたポインタEP (67)の値を
コピーすれようにしてもよい。
また、本実施例では、Eステージ(5)でプリリターン
が正しく行われたかどうかのチエツクを行うために、P
Cスタック(46)からプリリターンを行った戻り先ア
ドレスを参照して、cpu外部のメモリからフェッチし
た正しい戻り先アドレスと比較するようにしているが、
Dステージ(2)でプリリターンを行った戻り先アドレ
スを退避しておき、Eステージ+5)でその退避されて
いる値を参照するようにしてもよい。
が正しく行われたかどうかのチエツクを行うために、P
Cスタック(46)からプリリターンを行った戻り先ア
ドレスを参照して、cpu外部のメモリからフェッチし
た正しい戻り先アドレスと比較するようにしているが、
Dステージ(2)でプリリターンを行った戻り先アドレ
スを退避しておき、Eステージ+5)でその退避されて
いる値を参照するようにしてもよい。
また、本実施例でDステージ(2)より後段のステージ
がサブルーチンコール命令を処理しているかどうかを検
出する手段としてカウンタを用いているが、各ステップ
コードあるいは各パイプラインステージにサブルーチン
コール命令用のフラグを設けて、全てフラグが立ってい
ないときのみ、ブリリターン処理を行うようにしてもよ
い、また、ハードウェア削減のためBSRカウンタやそ
のかわりとなる上記のフラグの機能を外しても、サブル
ーチンリターン命令実行時に、プリリターンが正しかっ
たかどうかのチエツクを行っているので、正しい動作を
行うことができる。このときの性能低下は、サブルーチ
ンコール命令とそれに対応するサブルーチンリターン命
令がパイプライン中に同時に取り込まれる頻度がどの程
度あるかによる。
がサブルーチンコール命令を処理しているかどうかを検
出する手段としてカウンタを用いているが、各ステップ
コードあるいは各パイプラインステージにサブルーチン
コール命令用のフラグを設けて、全てフラグが立ってい
ないときのみ、ブリリターン処理を行うようにしてもよ
い、また、ハードウェア削減のためBSRカウンタやそ
のかわりとなる上記のフラグの機能を外しても、サブル
ーチンリターン命令実行時に、プリリターンが正しかっ
たかどうかのチエツクを行っているので、正しい動作を
行うことができる。このときの性能低下は、サブルーチ
ンコール命令とそれに対応するサブルーチンリターン命
令がパイプライン中に同時に取り込まれる頻度がどの程
度あるかによる。
また、本実施例では、PCスタック(46)のポインタ
として、Dステージ(2)で管理しているポインタDP
(66)とEステージ(5)で管理しているポインタI
MF(67)の2つのポインタを備えている。これは、
複数のサブルーチンリターン命令がパイプライン中で処
理される場合にも正しい戻り先アドレスを参照できるよ
うにしたものである。 EP(67)はEステージ(5
)で実行されたサブルーチンコール命令、サブルーチン
リターン命令に対応して変化する0DP(66)は命令
デコード段階で変化するため、2つ以上のサブルーチン
リターン命令がパイプライン中に取り込まれても対応す
るサブルーチンコール命令の戻り先アドレスが参照でき
るわけである。Eステージ(5)で分岐処理が行われた
ときにはパイプラインはキャンセルされるのでEP (
67)の値がDP (66)にコピーされる。サブルー
チンリターン命令実行時には、プリリターンが正しかっ
たかどうかのチエツクを行うているので、ハードウェア
削減のためPCスタック(46)のポインタ管理をすべ
てBP (67)のみで行うようにしても正しい動作を
行うことができる。この場合の性能低下は、2つ以上の
サブルーチンリターン命令がパイプライン中に同時取り
込まれる頻度がどの程度あるかによる。ポインタを1つ
にした場合、サブルーチンリターン命令用のフラグを設
け、Aステージ(3)以降のステージでサブルーチンリ
ターン命令を実行中の時はそのフラグを立てておき、そ
のフラグが立っているときにはプリリターンの処理を待
つようにすると、ポインタが正しく切り替わってからP
Cスタック(46)の参照が行えるので正しいプリリタ
ーンが可能となる。
として、Dステージ(2)で管理しているポインタDP
(66)とEステージ(5)で管理しているポインタI
MF(67)の2つのポインタを備えている。これは、
複数のサブルーチンリターン命令がパイプライン中で処
理される場合にも正しい戻り先アドレスを参照できるよ
うにしたものである。 EP(67)はEステージ(5
)で実行されたサブルーチンコール命令、サブルーチン
リターン命令に対応して変化する0DP(66)は命令
デコード段階で変化するため、2つ以上のサブルーチン
リターン命令がパイプライン中に取り込まれても対応す
るサブルーチンコール命令の戻り先アドレスが参照でき
るわけである。Eステージ(5)で分岐処理が行われた
ときにはパイプラインはキャンセルされるのでEP (
67)の値がDP (66)にコピーされる。サブルー
チンリターン命令実行時には、プリリターンが正しかっ
たかどうかのチエツクを行うているので、ハードウェア
削減のためPCスタック(46)のポインタ管理をすべ
てBP (67)のみで行うようにしても正しい動作を
行うことができる。この場合の性能低下は、2つ以上の
サブルーチンリターン命令がパイプライン中に同時取り
込まれる頻度がどの程度あるかによる。ポインタを1つ
にした場合、サブルーチンリターン命令用のフラグを設
け、Aステージ(3)以降のステージでサブルーチンリ
ターン命令を実行中の時はそのフラグを立てておき、そ
のフラグが立っているときにはプリリターンの処理を待
つようにすると、ポインタが正しく切り替わってからP
Cスタック(46)の参照が行えるので正しいプリリタ
ーンが可能となる。
また、本発明のPCスタック(46)はブリリターン時
にもプリリターンが正しく行われたかどうか判断すると
きにもアクセスされ、CPU外部のメモリアクセスとは
独立の行うこと効率がよい、従って、CPuが1つの集
積回路チップで実現されるマイクロプロフセサの様なデ
ータ処理装置ではPCスタック(46)をCPu と同
じ集積回路内にもつようにすれば、CPU外部のメモリ
アクセスとは独立にPCスタック(46)がアクセスで
きる。
にもプリリターンが正しく行われたかどうか判断すると
きにもアクセスされ、CPU外部のメモリアクセスとは
独立の行うこと効率がよい、従って、CPuが1つの集
積回路チップで実現されるマイクロプロフセサの様なデ
ータ処理装置ではPCスタック(46)をCPu と同
じ集積回路内にもつようにすれば、CPU外部のメモリ
アクセスとは独立にPCスタック(46)がアクセスで
きる。
(1)第1のステージと第2のステージをもち、命令の
実効に対して第1のステージでの処理が第2のステージ
での処理に先行して行われるパイプライン処理により命
令を処理するデータ処理装置であって、 命令やデータを格納する第1の記憶装置と、サブルーチ
ンからの戻り先命令のアドレス値を格納する第1の記憶
装置とは異なる第2の記憶装置と、 サブルーチンからの戻り先アドレスとなる値を前記第1
の記憶装置に書き込む第1の書き込み手段と、 サブルーチンからの戻り先アドレスとなる値を前記第2
の記憶装置に書き込む第2の書き込み手段と、 前記第1のステージで制御され、第1の値を前記第2の
記憶装置から読みだす第1の読み出し手段と、 サブルーチンリターン命令処理時に、サブルーチンから
の戻り先アドレスとなる第2の値を前記第1の記憶装置
から読みだす第2の読み出し手段と、 サブルーチンリターン命令処理時に、前記第1の値がサ
ブルーチンからの戻り先アドレスであるかどうかを判断
する判断手段と、 前記第1の記憶装置から命令をフェッチする命令フェッ
チ手段とを備え、 前記命令フェッチ手段が、前記第1の記憶装置の前記第
1の値の示すアドレスから第1の命令をフェッチする機
能と、前記第1の記憶装置の前記第2の値の示すアドレ
スから第2の命令フェッチする機能を備え、 サブルーチンリターン命令処理時に、 前記判断手段が、前記第1の値がサブルーチンからの戻
り先アドレスであると判断するときは前記第1の命令を
実行し、 前記判断手段が、前記第1の値がサブルーチンからの戻
り先アドレスでないと判断するときは前記第2の命令を
実行する ことを特徴とする。
実効に対して第1のステージでの処理が第2のステージ
での処理に先行して行われるパイプライン処理により命
令を処理するデータ処理装置であって、 命令やデータを格納する第1の記憶装置と、サブルーチ
ンからの戻り先命令のアドレス値を格納する第1の記憶
装置とは異なる第2の記憶装置と、 サブルーチンからの戻り先アドレスとなる値を前記第1
の記憶装置に書き込む第1の書き込み手段と、 サブルーチンからの戻り先アドレスとなる値を前記第2
の記憶装置に書き込む第2の書き込み手段と、 前記第1のステージで制御され、第1の値を前記第2の
記憶装置から読みだす第1の読み出し手段と、 サブルーチンリターン命令処理時に、サブルーチンから
の戻り先アドレスとなる第2の値を前記第1の記憶装置
から読みだす第2の読み出し手段と、 サブルーチンリターン命令処理時に、前記第1の値がサ
ブルーチンからの戻り先アドレスであるかどうかを判断
する判断手段と、 前記第1の記憶装置から命令をフェッチする命令フェッ
チ手段とを備え、 前記命令フェッチ手段が、前記第1の記憶装置の前記第
1の値の示すアドレスから第1の命令をフェッチする機
能と、前記第1の記憶装置の前記第2の値の示すアドレ
スから第2の命令フェッチする機能を備え、 サブルーチンリターン命令処理時に、 前記判断手段が、前記第1の値がサブルーチンからの戻
り先アドレスであると判断するときは前記第1の命令を
実行し、 前記判断手段が、前記第1の値がサブルーチンからの戻
り先アドレスでないと判断するときは前記第2の命令を
実行する ことを特徴とする。
(2)前記判断手段は前記第1の値と前記第2の値を比
較する比較手段であり、 前記比較手段による比較結果が一致するときは第1の値
がサブルーチンからの戻り先アドレスであると判断し、 前記比較手段による比較結果が一致しないときは第1の
値がサブルーチンからの戻り先アドレスでないと判断す
ることを特徴とする第1項記載のデータ処理装置。
較する比較手段であり、 前記比較手段による比較結果が一致するときは第1の値
がサブルーチンからの戻り先アドレスであると判断し、 前記比較手段による比較結果が一致しないときは第1の
値がサブルーチンからの戻り先アドレスでないと判断す
ることを特徴とする第1項記載のデータ処理装置。
(瞬前記第2の記憶装置がサイクリックな番号がつけら
れた複数のエントリと、前記サイクリックな番号を管理
する第1のポインタレジスタにより構成したスタック記
憶装置であることを特徴とする第1項記載のデータ処理
’装置。
れた複数のエントリと、前記サイクリックな番号を管理
する第1のポインタレジスタにより構成したスタック記
憶装置であることを特徴とする第1項記載のデータ処理
’装置。
(4)前記第2の記憶装置は2n個のエントリで構成さ
れ、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビット
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリから読み出す第3の読み出し手段゛と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第3の書き込み手段を備え、 前記第2の書き込み手段が前記第2の記憶装置の前記第
2のnビットカウンタの値が示すエントリ番号にサブル
ーチンからの戻り先アドレスを書き込む手段であり、 前記第1の読み出し手段が前記第2の記憶装置の前記第
1のnビットカウンタの値が示すエントリから前記第1
の値を読み出す手段であり、前記比較手段が前記第3の
読み出し手段により読み出して得た前記第1の値を前記
第2の値と比較する ことを特徴とする第2項記載のデータ処理装置。
れ、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビット
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリから読み出す第3の読み出し手段゛と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第3の書き込み手段を備え、 前記第2の書き込み手段が前記第2の記憶装置の前記第
2のnビットカウンタの値が示すエントリ番号にサブル
ーチンからの戻り先アドレスを書き込む手段であり、 前記第1の読み出し手段が前記第2の記憶装置の前記第
1のnビットカウンタの値が示すエントリから前記第1
の値を読み出す手段であり、前記比較手段が前記第3の
読み出し手段により読み出して得た前記第1の値を前記
第2の値と比較する ことを特徴とする第2項記載のデータ処理装置。
(5)前記第1のステージで処理を終えた全サブルーチ
ンコール命令に対する、前記第2の記憶装置へのサブル
ーチンからの戻り先命令のアドレスの書き込み処理が終
了しているかどうかを検出するサブルーチンコール命令
処理検出手段を備えたことを特徴とする 第1項あるいは第4項記載のデータ処理装置。
ンコール命令に対する、前記第2の記憶装置へのサブル
ーチンからの戻り先命令のアドレスの書き込み処理が終
了しているかどうかを検出するサブルーチンコール命令
処理検出手段を備えたことを特徴とする 第1項あるいは第4項記載のデータ処理装置。
(6)命令やデータを格納する第1の記憶装置と、第1
の記憶装置とは異なり、サブルーチンからの戻り先命令
のアドレス値を格納し、21)個のエントリからなる第
2の記憶装置と、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビット
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第1のnビy )カウンタの
値が示すエントリから値を読みだす第1の読み出し手段
と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリから値を読みだす第2の読み出し手段と
、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリにサブルーチンからの戻り先命令のアド
レスを書き込む第1の書き込み手段と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第2の書き込み手段と、 を備えることを特徴とするデータ処理装置。
の記憶装置とは異なり、サブルーチンからの戻り先命令
のアドレス値を格納し、21)個のエントリからなる第
2の記憶装置と、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビット
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第1のnビy )カウンタの
値が示すエントリから値を読みだす第1の読み出し手段
と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリから値を読みだす第2の読み出し手段と
、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリにサブルーチンからの戻り先命令のアド
レスを書き込む第1の書き込み手段と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第2の書き込み手段と、 を備えることを特徴とするデータ処理装置。
C7)サブルーチンからの戻り先命令のアドレス値を格
納し、2n個のエントリからなる記憶装置と、インクリ
メントまたはデクリメントの少なくとも一方が可能で前
記エントリの番号を管理する第1のnビットカウンタと
、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第1のnビットカウンタの値
が示すnビットカウンタから値を読みだす第1の読み出
し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すnビットカウンタから値を読みだす第2の読み出
し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリにサブルーチンからの戻り先命令のアド
レスを書き込む第1の書き込み手段と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第2の書き込み手段と、 をCPu と同じ単一の集積回路内に備えることを特徴
とするデータ処理装置。
納し、2n個のエントリからなる記憶装置と、インクリ
メントまたはデクリメントの少なくとも一方が可能で前
記エントリの番号を管理する第1のnビットカウンタと
、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第1のnビットカウンタの値
が示すnビットカウンタから値を読みだす第1の読み出
し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すnビットカウンタから値を読みだす第2の読み出
し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリにサブルーチンからの戻り先命令のアド
レスを書き込む第1の書き込み手段と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第2の書き込み手段と、 をCPu と同じ単一の集積回路内に備えることを特徴
とするデータ処理装置。
以上のように、この発明によればサブルーチンコール命
令の戻り先アドレスのみを格納するPCスタックを設け
ることにより、サブルーチンリターン命令の分岐処理を
命令実行ステージでの処理に先だって行うことができ、
サブルーチンリターン命令実行によるパイプライン処理
のオーバーヘッドが削減されるので、構性能なデータ処
理装置が得られる効果がある。
令の戻り先アドレスのみを格納するPCスタックを設け
ることにより、サブルーチンリターン命令の分岐処理を
命令実行ステージでの処理に先だって行うことができ、
サブルーチンリターン命令実行によるパイプライン処理
のオーバーヘッドが削減されるので、構性能なデータ処
理装置が得られる効果がある。
第1図は本発明のデータ処理装置のパイプライン処理構
成を示す図、第2図は本発明のデータ処理装置のブロッ
ク図、第3図は本発明のデータ処理装置におけるサブル
ーチンリターン命令の先行分岐処理に特に関係する部分
のブロック図、第4図は本発明のデータ処理装置におけ
るサブルーチンコール命令及びサブルーチンリターン命
令のビント割り付けを示す図、第5図はBSR命令実行
のフローチャート、第6図はRTS命令実行のフローチ
ャート、第7図は従来のデータ処理装置の典型的なパイ
プラインステージを示す図である。 (46)はサブルーチンコール命令の戻り先アドレスの
みを格納するPCスタック、(65)は命令デコードス
テージ以降のステージで処理されているサブルーチンコ
ール命令の数をカウントするBSRカウンタ、(66)
は命令デコードステージが管理しているPCスタック(
46)のポインタロP、 (67)は命令実行ステージ
が管理しているPCスタック(46)のポインタEPで
ある。 なお、図中、同一符号は同一、又は相当部分を示す。 代理人 大 岩 増 雄 第7図 W 、 fごラント−フィト 手続補正書(自発)
成を示す図、第2図は本発明のデータ処理装置のブロッ
ク図、第3図は本発明のデータ処理装置におけるサブル
ーチンリターン命令の先行分岐処理に特に関係する部分
のブロック図、第4図は本発明のデータ処理装置におけ
るサブルーチンコール命令及びサブルーチンリターン命
令のビント割り付けを示す図、第5図はBSR命令実行
のフローチャート、第6図はRTS命令実行のフローチ
ャート、第7図は従来のデータ処理装置の典型的なパイ
プラインステージを示す図である。 (46)はサブルーチンコール命令の戻り先アドレスの
みを格納するPCスタック、(65)は命令デコードス
テージ以降のステージで処理されているサブルーチンコ
ール命令の数をカウントするBSRカウンタ、(66)
は命令デコードステージが管理しているPCスタック(
46)のポインタロP、 (67)は命令実行ステージ
が管理しているPCスタック(46)のポインタEPで
ある。 なお、図中、同一符号は同一、又は相当部分を示す。 代理人 大 岩 増 雄 第7図 W 、 fごラント−フィト 手続補正書(自発)
Claims (3)
- (1)第1のステージと第2のステージをもち、命令の
実効に対して第1のステージでの処理が第2のステージ
での処理に先行して行われるパイプライン処理により命
令を処理するデータ処理装置であって、 命令やデータを格納する第1の記憶装置と、サブルーチ
ンからの戻り先命令のアドレス値を格納する第1の記憶
装置とは異なる第2の記憶装置と、 サブルーチンからの戻り先アドレスとなる値を前記第1
の記憶装置に書き込む第1の書き込み手段と、 サブルーチンからの戻り先アドレスとなる値を前記第2
の記憶装置に書き込む第2の書き込み手段と、 前記第1のステージで制御され、第1の値を前記第2の
記憶装置から読みだす第1の読み出し手段と、 サブルーチンリターン命令処理時に、サブルーチンから
の戻り先アドレスとなる第2の値を前記第1の記憶装置
から読みだす第2の読み出し手段と、 サブルーチンリターン命令処理時に、前記第1の値がサ
ブルーチンからの戻り先アドレスであるかどうかを判断
する判断手段と、 前記第1の記憶装置から命令をフェッチする命令フェッ
チ手段とを備え、 前記命令フェッチ手段が、前記第1の記憶装置の前記第
1の値の示すアドレスから第1の命令をフェッチする機
能と、前記第1の記憶装置の前記第2の値の示すアドレ
スから第2の命令フェッチする機能を備え、 サブルーチンリターン命令処理時に、 前記判断手段が、前記第1の値がサブルーチンからの戻
り先アドレスであると判断するときは前記第1の命令を
実行し、 前記判断手段が、前記第1の値がサブルーチンからの戻
り先アドレスでないと判断するときは前記第2の命令を
実行する ことを特徴とする。 - (2)命令やデータを格納する第1の記憶装置と、第1
の記憶装置とは異なり、サブルーチンからの戻り先命令
のアドレス値を格納し、2^n個のエントリからなる第
2の記憶装置と、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビット
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第1のnビットカウンタの値
が示すエントリから値を読みだす第1の読み出し手段と
、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリから値を読みだす第2の読み出し手段と
、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリにサブルーチンからの戻り先命令のアド
レスを書き込む第1の書き込み手段と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第2の書き込み手段と、 を備えることを特徴とするデータ処理装置。 - (3)サブルーチンからの戻り先命令のアドレス値を格
納し、2^n個のエントリからなる記憶装置と、インク
リメントまたはデクリメントの少なくとも一方が可能で
前記エントリの番号を管理する第1のnビットカウンタ
と、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第1のnビットカウンタの値
が示すnビットカウンタから値を読みだす第1の読み出
し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すnビットカウンタから値を読みだす第2の読み出
し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリにサブルーチンからの戻り先命令のアド
レスを書き込む第1の書き込み手段と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第2の書き込み手段と、 をCPUと同じ単一の集積回路内に備えることを特徴と
するデータ処理装置。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63049093A JPH0820952B2 (ja) | 1988-03-01 | 1988-03-01 | パイプライン処理機構を持つデータ処理装置 |
US07/317,253 US5193205A (en) | 1988-03-01 | 1989-02-28 | Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address |
US07/953,414 US5355459A (en) | 1988-03-01 | 1992-09-29 | Pipeline processor, with return address stack storing only pre-return processed addresses for judging validity and correction of unprocessed address |
US08/181,353 US5526498A (en) | 1988-03-01 | 1994-01-13 | Pipeline processor, with a return address stack and two stack pointers, for storing pre-return processed addresses |
US08/657,710 US5701449A (en) | 1988-03-01 | 1996-05-30 | Data processor |
US08/996,787 US5978904A (en) | 1988-03-01 | 1997-12-23 | Data processor |
US09/359,843 US6151673A (en) | 1988-03-01 | 1999-07-23 | Data processor |
US09/602,830 US6408385B1 (en) | 1988-03-01 | 2000-06-23 | Data processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63049093A JPH0820952B2 (ja) | 1988-03-01 | 1988-03-01 | パイプライン処理機構を持つデータ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01222332A true JPH01222332A (ja) | 1989-09-05 |
JPH0820952B2 JPH0820952B2 (ja) | 1996-03-04 |
Family
ID=12821481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63049093A Expired - Lifetime JPH0820952B2 (ja) | 1988-03-01 | 1988-03-01 | パイプライン処理機構を持つデータ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0820952B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06161748A (ja) * | 1989-12-18 | 1994-06-10 | Digital Equip Corp <Dec> | サブルーチン復帰予想機構 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62285140A (ja) * | 1986-06-04 | 1987-12-11 | Hitachi Ltd | 情報処理装置 |
-
1988
- 1988-03-01 JP JP63049093A patent/JPH0820952B2/ja not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62285140A (ja) * | 1986-06-04 | 1987-12-11 | Hitachi Ltd | 情報処理装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06161748A (ja) * | 1989-12-18 | 1994-06-10 | Digital Equip Corp <Dec> | サブルーチン復帰予想機構 |
Also Published As
Publication number | Publication date |
---|---|
JPH0820952B2 (ja) | 1996-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5193205A (en) | Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address | |
JP2761688B2 (ja) | データ処理装置 | |
JPH07114469A (ja) | データ処理装置 | |
JP2507638B2 (ja) | デ―タ処理装置 | |
JP3543181B2 (ja) | データ処理装置 | |
JPH081599B2 (ja) | データ処理装置 | |
JP2000137613A (ja) | 仮想条件コ―ド | |
JPH04260950A (ja) | キャッシュメモリ装置 | |
JPH0766324B2 (ja) | データ処理装置 | |
JPH1049370A (ja) | 遅延命令を有するマイクロプロセッサ | |
JPH01214932A (ja) | データ処理装置 | |
JPH0215331A (ja) | データ処理装置 | |
JPH07120284B2 (ja) | データ処理装置 | |
JPH06301535A (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 | |
JPH01222332A (ja) | パイプライン処理機構を持つデータ処理装置 | |
JPH02105937A (ja) | データ処理装置 | |
JP2532560B2 (ja) | 高機能な例外処理を行うデ―タ処理装置 | |
JP2522048B2 (ja) | マイクロプロセッサ及びそれを使用したデ―タ処理装置 | |
JPH03158929A (ja) | データ処理装置 | |
JPH0769814B2 (ja) | パイプライン処理機構を持つデータ処理装置 | |
JPH0769807B2 (ja) | データ処理装置 | |
JPH0769801B2 (ja) | データ処理装置 | |
JPH01281534A (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 |
|
EXPY | Cancellation because of completion of term |