JPH0769814B2 - パイプライン処理機構を持つデータ処理装置 - Google Patents
パイプライン処理機構を持つデータ処理装置Info
- Publication number
- JPH0769814B2 JPH0769814B2 JP63086704A JP8670488A JPH0769814B2 JP H0769814 B2 JPH0769814 B2 JP H0769814B2 JP 63086704 A JP63086704 A JP 63086704A JP 8670488 A JP8670488 A JP 8670488A JP H0769814 B2 JPH0769814 B2 JP H0769814B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- stage
- return
- value
- 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)
- Executing Machine-Instructions (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 この発明は、高度なパイプライン処理機構により高い処
理能力を実現したデータ処理装置に関するものであり、
特に、サブルーチンリターン命令に関しても、パイプラ
イン処理の初期の段階で戻り先アドレスへの先行分岐処
理が可能なデータ処理装置に関するものである。
理能力を実現したデータ処理装置に関するものであり、
特に、サブルーチンリターン命令に関しても、パイプラ
イン処理の初期の段階で戻り先アドレスへの先行分岐処
理が可能なデータ処理装置に関するものである。
第8図は従来のデータ処理装置の典型的なパイプライン
ステージを示す図であり、図において、(1)は命令フ
エツチステージ、(2)は命令デコードステージ、
(3)はアドレス計算ステージ、(4)はオペランドフ
エツチステージ、(5)は実行ステージ、(8)はオペ
ランドライトステージである。
ステージを示す図であり、図において、(1)は命令フ
エツチステージ、(2)は命令デコードステージ、
(3)はアドレス計算ステージ、(4)はオペランドフ
エツチステージ、(5)は実行ステージ、(8)はオペ
ランドライトステージである。
次に動作について説明する。第8図に示したデータ処理
装置は、バスが空いている時間を利用して命令データの
取り込みを行う命令フエツチステージ(1)、命令デー
タの解析を行う命令デコードステージ(2)、オペラン
ド等のアドレス計算を行うアドレス計算ステージ
(3)、オペランドデータのフエツチを行うオペランド
フエツチステージ(4)、データの処理を行う実行ステ
ージ(5)、オペランドデータの書き込みを行うオペラ
ンドライトステージ(8)の6段のパイプラインステー
ジで構成されており、各ステージは異なる命令を同時に
処理することが可能である。ただしオペランドやメモリ
アクセスに関してコンフリクトが起こつたような場合に
は優先度の低いステージがコンフリクトが解消されるま
で処理を一時停止する。
装置は、バスが空いている時間を利用して命令データの
取り込みを行う命令フエツチステージ(1)、命令デー
タの解析を行う命令デコードステージ(2)、オペラン
ド等のアドレス計算を行うアドレス計算ステージ
(3)、オペランドデータのフエツチを行うオペランド
フエツチステージ(4)、データの処理を行う実行ステ
ージ(5)、オペランドデータの書き込みを行うオペラ
ンドライトステージ(8)の6段のパイプラインステー
ジで構成されており、各ステージは異なる命令を同時に
処理することが可能である。ただしオペランドやメモリ
アクセスに関してコンフリクトが起こつたような場合に
は優先度の低いステージがコンフリクトが解消されるま
で処理を一時停止する。
以上のように、パイプライン化されたデータ処理装置で
は、データの処理の流れに従つて処理を複数のステージ
に分割し、各ステージを同時に動作させることにより、
1命令に必要な平均処理時間を短縮させて全体としての
性能を向上させている。
は、データの処理の流れに従つて処理を複数のステージ
に分割し、各ステージを同時に動作させることにより、
1命令に必要な平均処理時間を短縮させて全体としての
性能を向上させている。
ところが、このようにパイプライン化されたデータ処理
装置において、分岐命令等の命令の流れを乱す命令が実
行ステージ(5)で実行された場合には、それより前の
ステージで行われていた処理がすべてキヤンセルされ、
次に実行される命令は命令のフエツチから行わなければ
ない。このように、処理の流れを乱す命令が実行される
と、パイプライン処理のオーバーヘツドが大きくなり、
データ処理装置の実行速度が上がらない。データ処理装
置の性能向上のため、無条件分岐命令、条件分岐命令等
の命令実行に関するオーバーヘツド削減について様々な
工夫がなされてきた。例えば、分岐命令のアドレスと分
岐先のアドレスを組にして記憶しておくブランチターゲ
ツトバツフアというものを用いて、命令フエツチの段階
で命令の流れを予測し、処理を行つている。(J.K.F.Le
e and A.J.Smith,“Branch Prediction Strategies and
Branch Target Buffer Design,"IEEE COMPUTER Vol.1
7,No.1,January 1984,pp.6-22.参照)以上のように、パ
イプライン処理の初期の段階で処理の流れを予測し、次
に実行されると予測される命令をパイプラインに流す
(以下先行分岐処理と呼ぶ)ことにより分岐命令実行時
のオーバーヘツド削減が計られている。ところが、サブ
ルーチンからのリターン命令に関してはサブルーチンか
らのリターンアドレスが、対応するサブルーチンコール
命令のアドレスに依存するため、処理の流れを予測する
ことが困難であつた。
装置において、分岐命令等の命令の流れを乱す命令が実
行ステージ(5)で実行された場合には、それより前の
ステージで行われていた処理がすべてキヤンセルされ、
次に実行される命令は命令のフエツチから行わなければ
ない。このように、処理の流れを乱す命令が実行される
と、パイプライン処理のオーバーヘツドが大きくなり、
データ処理装置の実行速度が上がらない。データ処理装
置の性能向上のため、無条件分岐命令、条件分岐命令等
の命令実行に関するオーバーヘツド削減について様々な
工夫がなされてきた。例えば、分岐命令のアドレスと分
岐先のアドレスを組にして記憶しておくブランチターゲ
ツトバツフアというものを用いて、命令フエツチの段階
で命令の流れを予測し、処理を行つている。(J.K.F.Le
e and A.J.Smith,“Branch Prediction Strategies and
Branch Target Buffer Design,"IEEE COMPUTER Vol.1
7,No.1,January 1984,pp.6-22.参照)以上のように、パ
イプライン処理の初期の段階で処理の流れを予測し、次
に実行されると予測される命令をパイプラインに流す
(以下先行分岐処理と呼ぶ)ことにより分岐命令実行時
のオーバーヘツド削減が計られている。ところが、サブ
ルーチンからのリターン命令に関してはサブルーチンか
らのリターンアドレスが、対応するサブルーチンコール
命令のアドレスに依存するため、処理の流れを予測する
ことが困難であつた。
従来のデータ処理装置は、以上で述べたように、サブル
ーチンからのリターン命令に対してサブルーチンからの
リターンアドレスが対応するサブルーチンコール命令の
アドレスに依存するため、処理の流れを予測する有効な
手段がなかつた。
ーチンからのリターン命令に対してサブルーチンからの
リターンアドレスが対応するサブルーチンコール命令の
アドレスに依存するため、処理の流れを予測する有効な
手段がなかつた。
この発明は上記のような問題点を解消するためになされ
たもので、サブルーチンリターン命令に関しても、パイ
プライン処理の初期の段階で戻り先アドレスへの先行分
岐処理が可能なデータ処理装置を得ることを目的とす
る。
たもので、サブルーチンリターン命令に関しても、パイ
プライン処理の初期の段階で戻り先アドレスへの先行分
岐処理が可能なデータ処理装置を得ることを目的とす
る。
この発明に係るデータ処理装置は、サブルーチンコール
命令のリターンアドレスのみを格納するプログラムカウ
ンタ(PC)専用のスタツクメモリ(以下PCスタツクと呼
ぶ)を備えたものである。
命令のリターンアドレスのみを格納するプログラムカウ
ンタ(PC)専用のスタツクメモリ(以下PCスタツクと呼
ぶ)を備えたものである。
この発明におけるデータ処理装置は、実行ステージでサ
ブルーチンコール命令実行時にサブルーチンからのリタ
ーンアドレスがPCスタツクにプツシユされ、命令デコー
ドステージでサブルーチンリターン命令デコード時にPC
スタツクからポツプされたアドレスに先行分岐処理を行
う。
ブルーチンコール命令実行時にサブルーチンからのリタ
ーンアドレスがPCスタツクにプツシユされ、命令デコー
ドステージでサブルーチンリターン命令デコード時にPC
スタツクからポツプされたアドレスに先行分岐処理を行
う。
(1)パイプライン機構 この発明のデータ処理装置のパイプライン処理は第1図
に示す構成となる。命令のプリフエツチを行う命令フエ
ツチステージ(IFステージ(1))、1段目の命令のデ
コードを行うデコードステージ(Dステージ(2))、
2段目の命令のデコードとオペランドのアドレス計算を
行うオペランドアドレス計算ステージ(Aステージ
(3))、マイクロROMのアクセス(特にRステージ
(6)と呼ぶ)とオペランドのプリフエツチ(特にOFス
テージ(7)と呼ぶ)を行うオペランドフエツチステー
ジ(Fステージ(4))、命令の実行を行う実行ステー
ジ(Eステージ(5))の5段構成をパイプライン処理
の基本とする。Eステージ(5)では1段のストアバツ
フアがあるほか、高機能命令の一部は命令実行自体をパ
イプライン化するため、実際には5段以上のパイプライ
ン処理効果がある。
に示す構成となる。命令のプリフエツチを行う命令フエ
ツチステージ(IFステージ(1))、1段目の命令のデ
コードを行うデコードステージ(Dステージ(2))、
2段目の命令のデコードとオペランドのアドレス計算を
行うオペランドアドレス計算ステージ(Aステージ
(3))、マイクロROMのアクセス(特にRステージ
(6)と呼ぶ)とオペランドのプリフエツチ(特にOFス
テージ(7)と呼ぶ)を行うオペランドフエツチステー
ジ(Fステージ(4))、命令の実行を行う実行ステー
ジ(Eステージ(5))の5段構成をパイプライン処理
の基本とする。Eステージ(5)では1段のストアバツ
フアがあるほか、高機能命令の一部は命令実行自体をパ
イプライン化するため、実際には5段以上のパイプライ
ン処理効果がある。
各ステージは他のステージとは独立に動作し、論理上は
5つのステージが完全に独立動作する。各ステージは1
回の処理を最小2クロツクで行うことができる。従つて
理想的には2クロツクごとに次々とパイプライン処理が
進行する。
5つのステージが完全に独立動作する。各ステージは1
回の処理を最小2クロツクで行うことができる。従つて
理想的には2クロツクごとに次々とパイプライン処理が
進行する。
この発明のデータ処理装置にはメモリ−メモリ間演算
や、メモリ間接アドレツシングなど、基本パイプライン
処理1回だけでは処理が行えない命令があるが、本発明
のデータ処理装置はこれらの処理に対してもなるべく均
衡したパイプライン処理が行えるように設計されてい
る。複数のメモリオペランドをもつ命令に対してはメモ
リオペランドの数をもとに、デコード段階で複数のパイ
プライン処理単位(ステツプコード)に分解してパイプ
ライン処理を行うのである。パイプライン処理単位の分
解方法に関しては特願昭61-236456で詳しく述べられて
いる。
や、メモリ間接アドレツシングなど、基本パイプライン
処理1回だけでは処理が行えない命令があるが、本発明
のデータ処理装置はこれらの処理に対してもなるべく均
衡したパイプライン処理が行えるように設計されてい
る。複数のメモリオペランドをもつ命令に対してはメモ
リオペランドの数をもとに、デコード段階で複数のパイ
プライン処理単位(ステツプコード)に分解してパイプ
ライン処理を行うのである。パイプライン処理単位の分
解方法に関しては特願昭61-236456で詳しく述べられて
いる。
IFステージ(1)からDステージ(2)に渡される情報
は命令コード(11)そのものである。Dステージ(2)
からAステージ(3)に渡される情報は命令で指定され
た演算に関するもの(Dコード(12)と呼ぶ)と、オペ
ランドのアドレス計算に関係するもの(Aコード(13)
と呼ぶ)との2つある。Aステージ(3)からFステー
ジ(4)に渡される情報はマイクロプログラムルーチン
のエントリ番地やマイクロプログラムへのパラメータな
どを含むRコード(14)と、オペランドのアドレスとア
クセス方法指示情報などを含むFコード(15)との2つ
である。Fステージ(4)からEステージ(5)に渡さ
れる情報は演算制御情報とリテラルなどを含むEコード
(16)と、オペランドやオペランドアドレスなどを含む
Sコード(17)との2つである。
は命令コード(11)そのものである。Dステージ(2)
からAステージ(3)に渡される情報は命令で指定され
た演算に関するもの(Dコード(12)と呼ぶ)と、オペ
ランドのアドレス計算に関係するもの(Aコード(13)
と呼ぶ)との2つある。Aステージ(3)からFステー
ジ(4)に渡される情報はマイクロプログラムルーチン
のエントリ番地やマイクロプログラムへのパラメータな
どを含むRコード(14)と、オペランドのアドレスとア
クセス方法指示情報などを含むFコード(15)との2つ
である。Fステージ(4)からEステージ(5)に渡さ
れる情報は演算制御情報とリテラルなどを含むEコード
(16)と、オペランドやオペランドアドレスなどを含む
Sコード(17)との2つである。
(1.1)各パイプラインステージの処理 (1.1.1)命令フエツチステージ 命令フエツチステージ(IFステージ(1))は外部メモ
リから命令をフエツチし、命令キユーに入力して、Dス
テージ(2)に対して命令コード(11)を出力する。
リから命令をフエツチし、命令キユーに入力して、Dス
テージ(2)に対して命令コード(11)を出力する。
命令キユーの入力は整置された4バイト単位で行う。メ
モリから命令をフエツチするときは整置された4バイト
につき最小2クロツクを要する。
モリから命令をフエツチするときは整置された4バイト
につき最小2クロツクを要する。
命令キユーの出力単位は2バイトごとに可変であり、2
クロツクの間に最大6バイトまで出力できる。また分岐
の直後には命令キユーをバイパスして命令基本部2バイ
トを直接命令デコーダに転送することもできる。
クロツクの間に最大6バイトまで出力できる。また分岐
の直後には命令キユーをバイパスして命令基本部2バイ
トを直接命令デコーダに転送することもできる。
プリフエツチ先命令アドレスの管理もIFステージ(1)
で行う。次にフエツチすべき命令のアドレスは命令キユ
ーに入力すべき命令のアドレスとして専用のカウンタで
計算される。分岐やジヤンプが起きたときには、新たな
命令のアドレスが、PC演算部やデータ演算部より転送さ
れてくる。
で行う。次にフエツチすべき命令のアドレスは命令キユ
ーに入力すべき命令のアドレスとして専用のカウンタで
計算される。分岐やジヤンプが起きたときには、新たな
命令のアドレスが、PC演算部やデータ演算部より転送さ
れてくる。
(1.1.2)命令デコードステージ 命令デコードステージ(Dステージ(2))はIFステー
ジ(1)から入力された命令コード(11)をデコードす
る。命令コードは16ビツト(ハーフワード)単位となつ
ている。デコードは2クロツク単位に1度行ない、1回
のデコード処理で0〜3ハーフワードの命令コードを消
費する。このDステージ(2)で命令コードがパイプラ
イン処理単位であるステツプコードに分解される。すな
わち、1命令が1つないし複数のステツプコードに分解
されて、後段のパイプラインステージで処理されていく
のである。Dステージ(2)ではステツプコードとして
Aステージ(3)に対してアドレス計算情報であるAコ
ード(13)と、オペコードの中間デコード結果であるD
コード(12)とを出力する。
ジ(1)から入力された命令コード(11)をデコードす
る。命令コードは16ビツト(ハーフワード)単位となつ
ている。デコードは2クロツク単位に1度行ない、1回
のデコード処理で0〜3ハーフワードの命令コードを消
費する。このDステージ(2)で命令コードがパイプラ
イン処理単位であるステツプコードに分解される。すな
わち、1命令が1つないし複数のステツプコードに分解
されて、後段のパイプラインステージで処理されていく
のである。Dステージ(2)ではステツプコードとして
Aステージ(3)に対してアドレス計算情報であるAコ
ード(13)と、オペコードの中間デコード結果であるD
コード(12)とを出力する。
Dステージ(2)ではPC演算部の制御、分岐予測処理、
プリブランチ命令に対する先行分岐処理(プリブラン
チ)、命令キユーからの命令コード出力制御等も行う。
プリブランチ処理とは、Eステージ(5)での分岐処理
に先立ち、無条件分岐命令、条件分岐命令等の分岐を予
測し、PC演算部で飛び先の番地を計算し、IFステージ
(1)に飛び先の命令をフエツチさせ、飛び先の命令を
パイプラインに流すことである。プリブランチ命令と
は、プリブランチ処理を行う命令である。
プリブランチ命令に対する先行分岐処理(プリブラン
チ)、命令キユーからの命令コード出力制御等も行う。
プリブランチ処理とは、Eステージ(5)での分岐処理
に先立ち、無条件分岐命令、条件分岐命令等の分岐を予
測し、PC演算部で飛び先の番地を計算し、IFステージ
(1)に飛び先の命令をフエツチさせ、飛び先の命令を
パイプラインに流すことである。プリブランチ命令と
は、プリブランチ処理を行う命令である。
(1.1.3)オペランドアドレス計算ステージ オペランドアドレス計算ステージ(Aステージ(3))
は処理が大きく2つに分かれる。1つはオペコードの後
段デコードを行う処理で、もう1つはオペランドのアド
レスの計算を行う処理である。
は処理が大きく2つに分かれる。1つはオペコードの後
段デコードを行う処理で、もう1つはオペランドのアド
レスの計算を行う処理である。
オペコードの後段デコード処理はDコード(12)を入力
とし、レジスタやメモリの書き込み予約及びマイクロプ
ログラムのエントリ番地とマイクロプログラムに対する
パラメータなどを含むRコード(14)の出力を行う。な
お、レジスタやメモリの書き込み予約は、アドレス計算
で参照したレジスタやメモリの内容が、パイプライン上
を先行する命令で書き換えられ、誤つたアドレス計算が
行われるのを防ぐためのものである。レジスタやメモリ
の書き込み予約はデツドロツクを避けるため、ステツプ
コードごとに行うのではなく命令ごとに行う。レジスタ
やメモリの書き込み予約については特願昭62-144394で
詳しく述べられている。
とし、レジスタやメモリの書き込み予約及びマイクロプ
ログラムのエントリ番地とマイクロプログラムに対する
パラメータなどを含むRコード(14)の出力を行う。な
お、レジスタやメモリの書き込み予約は、アドレス計算
で参照したレジスタやメモリの内容が、パイプライン上
を先行する命令で書き換えられ、誤つたアドレス計算が
行われるのを防ぐためのものである。レジスタやメモリ
の書き込み予約はデツドロツクを避けるため、ステツプ
コードごとに行うのではなく命令ごとに行う。レジスタ
やメモリの書き込み予約については特願昭62-144394で
詳しく述べられている。
オペランドアドレス計算処理はAコード(13)を入力と
し、Aコード(13)に従いオペランドアドレス計算部で
加算やメモリ間接参照を組み合わせてアドレス計算行
い、その計算結果をFコード(15)として出力する。こ
の際、アドレス計算に伴うレジスタやメモリの読み出し
時にコンフリクトチエツクを行い、先行命令がレジスタ
やメモリに書き込み処理を終了していないためコンフリ
クトが指示されれば、先行命令がEステージ(5)で書
き込み処理を終了するまで待つ。
し、Aコード(13)に従いオペランドアドレス計算部で
加算やメモリ間接参照を組み合わせてアドレス計算行
い、その計算結果をFコード(15)として出力する。こ
の際、アドレス計算に伴うレジスタやメモリの読み出し
時にコンフリクトチエツクを行い、先行命令がレジスタ
やメモリに書き込み処理を終了していないためコンフリ
クトが指示されれば、先行命令がEステージ(5)で書
き込み処理を終了するまで待つ。
また、Aステージ(3)ではスタツクからのポツプ操
作、スタツクへのプツシユ操作等によるスタツクポイン
タ(SP)のコンフリクトを防ぐため、実行ステージ
(5)のSPに先行してAステージスタツクポインタ(AS
P)を備えており、ポツプ、プツシユ操作に伴うASPの更
新はこのステージで行われる。従つて、通常のポツプ、
プツシユ操作直後でもASPを参照することにより、SPの
コンフリクトでステツプコードの処理を遅らせることな
く処理を進めることができる。SPの管理方法に関しては
特願昭62-145852で詳しく述べられている。
作、スタツクへのプツシユ操作等によるスタツクポイン
タ(SP)のコンフリクトを防ぐため、実行ステージ
(5)のSPに先行してAステージスタツクポインタ(AS
P)を備えており、ポツプ、プツシユ操作に伴うASPの更
新はこのステージで行われる。従つて、通常のポツプ、
プツシユ操作直後でもASPを参照することにより、SPの
コンフリクトでステツプコードの処理を遅らせることな
く処理を進めることができる。SPの管理方法に関しては
特願昭62-145852で詳しく述べられている。
(1.1.4)マイクロROMアクセスステージ オペランドフエツチステージ(Fステージ(4))も処
理が大きく2つに分かれる。1つはマイクロROMのアク
セス処理であり、特にRステージ(6)と呼ぶ。他方は
オペランドプリフエツチ処理であり、特にOFステージ
(7)と呼ぶ。Rステージ(6)とOFステージ(7)は
必ずしも同時に動作するわけではなく、メモリアクセス
権が獲得できるかどうかなどに依存して、独立に動作す
る。
理が大きく2つに分かれる。1つはマイクロROMのアク
セス処理であり、特にRステージ(6)と呼ぶ。他方は
オペランドプリフエツチ処理であり、特にOFステージ
(7)と呼ぶ。Rステージ(6)とOFステージ(7)は
必ずしも同時に動作するわけではなく、メモリアクセス
権が獲得できるかどうかなどに依存して、独立に動作す
る。
Rステージ(6)では、Rコード(14)に対して次のE
ステージ(5)での実行に使用する実行制御コードであ
るEコード(16)を作り出すためのマイクロROMアクセ
スとマイクロ命令デコード処理が行われる。1つのRコ
ードに対する処理が2つ以上のマイクロプログラムステ
ツプに分解される場合、マイクロROMはEステージ
(5)で使用され、次のRコード(14)はマイクロROM
アクセス待ちになる。Rコード(14)に対するマイクロ
ROMアクセスが行われるのはその前のEステージ(5)
での最後のマイクロ命令実行の時である。本発明のデー
タ処理装置ではほとんどの基本命令は1マイクロプログ
ラムステツプ行われるため実際にはRコード(14)に対
するマイクロROMアクセスが次々と行われることが多
い。
ステージ(5)での実行に使用する実行制御コードであ
るEコード(16)を作り出すためのマイクロROMアクセ
スとマイクロ命令デコード処理が行われる。1つのRコ
ードに対する処理が2つ以上のマイクロプログラムステ
ツプに分解される場合、マイクロROMはEステージ
(5)で使用され、次のRコード(14)はマイクロROM
アクセス待ちになる。Rコード(14)に対するマイクロ
ROMアクセスが行われるのはその前のEステージ(5)
での最後のマイクロ命令実行の時である。本発明のデー
タ処理装置ではほとんどの基本命令は1マイクロプログ
ラムステツプ行われるため実際にはRコード(14)に対
するマイクロROMアクセスが次々と行われることが多
い。
(1.1.5)オペランドフエツチステージ オペランドフエツチステージ(OFステージ(7))はF
ステージ(4)で行う上記の2つの処理のうちオペラン
ドプリフエツチ処理を行う。
ステージ(4)で行う上記の2つの処理のうちオペラン
ドプリフエツチ処理を行う。
オペランドプリフエツチはFコード(15)を入力とし、
フエツチしたオペランドとそのアドレスをSコード(1
7)として出力する。1つのFコード(15)ではワード
境界をまたいでもよいが4バイト以下のオペランドフエ
ツチを指定する。Fコード(15)にはオペランドのアク
セスを行うかどうかの指定も含まれており、Aステージ
(3)で計算したオペランドアドレス自体や即値をEス
テージ(5)に転送する場合にはオペランドプリフエツ
チは行わず、Fコード(15)の内容をSコード(17)と
して転送する。また、プリフエツチしようとするオペラ
ンドとEステージ(5)が書き込み処理を行おうとする
オペランドとが包含関係を満たすときには、オペランド
プリフエツチに関してメモリアクセスは行わず、Eステ
ージ(5)が書き込もうとする値をバイパスする。
フエツチしたオペランドとそのアドレスをSコード(1
7)として出力する。1つのFコード(15)ではワード
境界をまたいでもよいが4バイト以下のオペランドフエ
ツチを指定する。Fコード(15)にはオペランドのアク
セスを行うかどうかの指定も含まれており、Aステージ
(3)で計算したオペランドアドレス自体や即値をEス
テージ(5)に転送する場合にはオペランドプリフエツ
チは行わず、Fコード(15)の内容をSコード(17)と
して転送する。また、プリフエツチしようとするオペラ
ンドとEステージ(5)が書き込み処理を行おうとする
オペランドとが包含関係を満たすときには、オペランド
プリフエツチに関してメモリアクセスは行わず、Eステ
ージ(5)が書き込もうとする値をバイパスする。
(1.1.6)実行ステージ 実行ステージ(Eステージ(5))はEコード(16)、
Sコード(17)を入力として、各種演算器を用いたデー
タの処理、データのリード、ライト等の処理を行う。演
算器としてはALU、バレルシフタ、プライオリテイエン
コーダやカウンタ、シフトレジスタなどがある。Eステ
ージ(5)はマイクロプログラムにより制御され、Rコ
ード(16)に示されたマイクロプログラムのエントリ番
地からの一連のマイクロプログラムを実行することによ
り命令を実行する。レジスタと主な演算器の間は3バス
で結合されており、1つのレジスタ間演算を指示する1
マイクロ命令を2クロツクサイクルで処理する。
Sコード(17)を入力として、各種演算器を用いたデー
タの処理、データのリード、ライト等の処理を行う。演
算器としてはALU、バレルシフタ、プライオリテイエン
コーダやカウンタ、シフトレジスタなどがある。Eステ
ージ(5)はマイクロプログラムにより制御され、Rコ
ード(16)に示されたマイクロプログラムのエントリ番
地からの一連のマイクロプログラムを実行することによ
り命令を実行する。レジスタと主な演算器の間は3バス
で結合されており、1つのレジスタ間演算を指示する1
マイクロ命令を2クロツクサイクルで処理する。
このEステージ(5)が命令を実行するステージあり、
Fステージ(4)以前にステージで行われた処理はすべ
てEステージ(5)のための前処理である。Eステージ
(5)で分岐が起こると、IFステージ(1)〜Fステー
ジ(4)までの処理はすべて無効化され、飛び先番地が
命令フエツチ部とPC計算部に出力される。
Fステージ(4)以前にステージで行われた処理はすべ
てEステージ(5)のための前処理である。Eステージ
(5)で分岐が起こると、IFステージ(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図は、この発明のデータ処理装置のブロツク図であ
り、サブルーチンコール命令、サブルーチンリターン命
令の処理を説明するために必要な部分だけが抜き出され
て説明されている。図において、(21)は命令キユー、
(22)は命令デコード部、(23)は外部とデータのやり
取りを行うデータ入出力回路、(24)は外部にアドレス
の出力を行うアドレス出力回路、(25)は命令フエツチ
を行うアドレスを出力するためのカウンタ(QINPC)、
(26)は各ステツプコード生成毎に命令デコード部(2
2)で処理された命令長を格納するラツチ(IL)、(2
7)はプリブランチのためのPCに対する変位を格納する
ためのラツチ(PD)、(30)はPC演算部(54)での加算
を行うためのPC加算器、(28)、(29)、(31)はそれ
ぞれPC加算器(30)の入出力ラツチ(PA,PB,PO)、(3
2)はステツプコード処理毎のテンポラリなPCを格納す
るためのレジスタ(TPC)、(33)は現在デコード中の
命令のPCを格納するためのDステージPC(DPC)、(3
4)はアドレス計算中のステツプコードに対応するPCを
格納するためのAステージPC(APC)、(38)はアドレ
ス計算のための3値加算を行うアドレス加算器、(3
5)、(36)、(37)、(39)はそれぞれアドレス加算
器(38)の入出力ラツチ(AI,AD,AB,AO)、(40)はA
ステージ(3)でインクリメントやデクリメントを行い
SPの管理を行うAステージスタツクポインタ(ASP)、
(41)はFコード(15)としてのアドレスを格納するた
めのFコードアドレスレジスタ(FA)、(42)はSコー
ド(17)としてのアドレスを格納するためのSコードア
ドレスレジスタ、(43)は命令フエツチを行うアドレス
を一時的に記憶するためのCAアドレスレジスタ(CA
A)、(44)はEステージ(5)で管理しているアドレ
スレジスタ(AA)、(45)はEステージ(5)での分岐
先アドレスを格納するためのEステージブランチアドレ
スレジスタ(EB)、(46)はサブルーチンコール時の戻
り先アドレスのみを格納しておくPCスタツク、(47)は
スタツクポインタ、フレームポインタ、ワーキングレジ
スタ等を含むレジスタフアイル、(50)はデータ演算の
ためのALU、(48)、(49)、(51)はALU(50)の入出
力ラツチ(DA,DB,DO)、(52)はSコード(17)として
のデータを格納するためのSコードデータレジスタ(S
D)、(53)はEステージ(5)で行うメモリアクセス
に関するデータを格納するデータレジスタ(DD)であ
り、(101)〜(110)はそれぞれ内部でデータやアドレ
スの転送を行うための内部バス(S1バス、S2バス、DOバ
ス、Aバス、AOバス、DISPバス、POバス、CAバス、AAバ
ス、DDバス)である。(54)はPC演算部、(55)はアド
レス計算部である。
り、サブルーチンコール命令、サブルーチンリターン命
令の処理を説明するために必要な部分だけが抜き出され
て説明されている。図において、(21)は命令キユー、
(22)は命令デコード部、(23)は外部とデータのやり
取りを行うデータ入出力回路、(24)は外部にアドレス
の出力を行うアドレス出力回路、(25)は命令フエツチ
を行うアドレスを出力するためのカウンタ(QINPC)、
(26)は各ステツプコード生成毎に命令デコード部(2
2)で処理された命令長を格納するラツチ(IL)、(2
7)はプリブランチのためのPCに対する変位を格納する
ためのラツチ(PD)、(30)はPC演算部(54)での加算
を行うためのPC加算器、(28)、(29)、(31)はそれ
ぞれPC加算器(30)の入出力ラツチ(PA,PB,PO)、(3
2)はステツプコード処理毎のテンポラリなPCを格納す
るためのレジスタ(TPC)、(33)は現在デコード中の
命令のPCを格納するためのDステージPC(DPC)、(3
4)はアドレス計算中のステツプコードに対応するPCを
格納するためのAステージPC(APC)、(38)はアドレ
ス計算のための3値加算を行うアドレス加算器、(3
5)、(36)、(37)、(39)はそれぞれアドレス加算
器(38)の入出力ラツチ(AI,AD,AB,AO)、(40)はA
ステージ(3)でインクリメントやデクリメントを行い
SPの管理を行うAステージスタツクポインタ(ASP)、
(41)はFコード(15)としてのアドレスを格納するた
めのFコードアドレスレジスタ(FA)、(42)はSコー
ド(17)としてのアドレスを格納するためのSコードア
ドレスレジスタ、(43)は命令フエツチを行うアドレス
を一時的に記憶するためのCAアドレスレジスタ(CA
A)、(44)はEステージ(5)で管理しているアドレ
スレジスタ(AA)、(45)はEステージ(5)での分岐
先アドレスを格納するためのEステージブランチアドレ
スレジスタ(EB)、(46)はサブルーチンコール時の戻
り先アドレスのみを格納しておくPCスタツク、(47)は
スタツクポインタ、フレームポインタ、ワーキングレジ
スタ等を含むレジスタフアイル、(50)はデータ演算の
ためのALU、(48)、(49)、(51)はALU(50)の入出
力ラツチ(DA,DB,DO)、(52)はSコード(17)として
のデータを格納するためのSコードデータレジスタ(S
D)、(53)はEステージ(5)で行うメモリアクセス
に関するデータを格納するデータレジスタ(DD)であ
り、(101)〜(110)はそれぞれ内部でデータやアドレ
スの転送を行うための内部バス(S1バス、S2バス、DOバ
ス、Aバス、AOバス、DISPバス、POバス、CAバス、AAバ
ス、DDバス)である。(54)はPC演算部、(55)はアド
レス計算部である。
第3図は、この発明のデータ処理装置におけるサブルー
チンリターン命令の先行分岐処理に特に関係する部分の
ブロツク図である。図において、(61)はDステージ制
御部、(62)はIFステージ制御部、(63)はEステージ
制御部、(65)はパイプライン処理途中のサブルーチン
コール命令の数をカウントするための3ビツトのカウン
タであるBSRカウンタ、(66)はDステージ(2)が管
理している3ビツトのPCスタツクポインタ(DP)、(6
7)はEステージ(5)が管理している3ビツトのPCス
タツクポインタ(EP)、(68),(69)はそれぞれDP
(66)、EP(67)をデコードするデコーダ、(70)はAN
Dゲート、(71)は有効ビツト制御信号ラツチであり、
(201)〜(214)は各部の制御信号である。この図で
は、簡単のためタイミングを制御するためのクロツク信
号は省略してある。
チンリターン命令の先行分岐処理に特に関係する部分の
ブロツク図である。図において、(61)はDステージ制
御部、(62)はIFステージ制御部、(63)はEステージ
制御部、(65)はパイプライン処理途中のサブルーチン
コール命令の数をカウントするための3ビツトのカウン
タであるBSRカウンタ、(66)はDステージ(2)が管
理している3ビツトのPCスタツクポインタ(DP)、(6
7)はEステージ(5)が管理している3ビツトのPCス
タツクポインタ(EP)、(68),(69)はそれぞれDP
(66)、EP(67)をデコードするデコーダ、(70)はAN
Dゲート、(71)は有効ビツト制御信号ラツチであり、
(201)〜(214)は各部の制御信号である。この図で
は、簡単のためタイミングを制御するためのクロツク信
号は省略してある。
第4図は、PCスタツク(46)の構成を示す図であり、図
において、(46A)は戻り先アドレスを格納する戻り先
アドレスフイールド、(46B)は各エントリ内に格納さ
れている戻り先アドレスが有効か無効かを示す有効ビツ
トである。
において、(46A)は戻り先アドレスを格納する戻り先
アドレスフイールド、(46B)は各エントリ内に格納さ
れている戻り先アドレスが有効か無効かを示す有効ビツ
トである。
本実施例では、PCスタツク(46)は8エントリで構成さ
れている。また、命令コードが16ビツト単位となつてい
るので、PCとしては奇数アドレスは存在せず、戻り先ア
ドレスフイールドは31ビツトになつている。PCスタツク
(46)から、戻り先アドレスが読み出される場合には、
最下位ビツトは‘0'として出力される。DP(66),EP(6
7)は3ビツトとなつているが、インクリメント時の最
上位ビツトからのキヤリー、デクリメント時の最上位ビ
ツトへのボローは無視される。すなわち、PCスタツク
(46)は、ポインタ‘000'とポインタ‘111'の指し示す
エントリが隣合つたリング状のスタツクメモリとして取
り扱われている。
れている。また、命令コードが16ビツト単位となつてい
るので、PCとしては奇数アドレスは存在せず、戻り先ア
ドレスフイールドは31ビツトになつている。PCスタツク
(46)から、戻り先アドレスが読み出される場合には、
最下位ビツトは‘0'として出力される。DP(66),EP(6
7)は3ビツトとなつているが、インクリメント時の最
上位ビツトからのキヤリー、デクリメント時の最上位ビ
ツトへのボローは無視される。すなわち、PCスタツク
(46)は、ポインタ‘000'とポインタ‘111'の指し示す
エントリが隣合つたリング状のスタツクメモリとして取
り扱われている。
(2.1)PCスタツクの動作の概要 この発明のデータ処理装置では、サブルーチンコール命
令としてブランチサブルーチン(BSR)命令とジヤンプ
サブルーチン(JSR)命令がある。また、サブルーチン
リターン命令としては、リターンサブルーチン(RTS)
命令と高機能命令として高級言語用サブルーチンリター
ンとパラメータ解放を一度に行うEXITD命令がある。
令としてブランチサブルーチン(BSR)命令とジヤンプ
サブルーチン(JSR)命令がある。また、サブルーチン
リターン命令としては、リターンサブルーチン(RTS)
命令と高機能命令として高級言語用サブルーチンリター
ンとパラメータ解放を一度に行うEXITD命令がある。
サブルーチンコール命令が実行されると、Eステージ
(5)でサブルーチンからの戻り先アドレスがPCスタツ
ク(46)にプツシユされる。サブルーチンリターン命令
がデコードされると、Dステージ(2)でPCスタツク
(46)のスタツクトツプにあるアドレスに先行分岐処理
(プリリターン)を行う。Eステージ(5)では、Dス
テージ(2)でのプリリターン処理が正しかつたかどう
かがチエツクされ、プリリターンを行つたアドレスが誤
つていた場合には、真の戻り先アドレスへの分岐処理を
行う。
(5)でサブルーチンからの戻り先アドレスがPCスタツ
ク(46)にプツシユされる。サブルーチンリターン命令
がデコードされると、Dステージ(2)でPCスタツク
(46)のスタツクトツプにあるアドレスに先行分岐処理
(プリリターン)を行う。Eステージ(5)では、Dス
テージ(2)でのプリリターン処理が正しかつたかどう
かがチエツクされ、プリリターンを行つたアドレスが誤
つていた場合には、真の戻り先アドレスへの分岐処理を
行う。
ポインタDP(66)、EP(66)等の更新も含めて以下で詳
しく説明する。ただし、有効ビツト制御信号ラツチ(7
1)の値は‘1'とする。
しく説明する。ただし、有効ビツト制御信号ラツチ(7
1)の値は‘1'とする。
リセツトされた状態では、PCスタツク(46)初期化信号
(INIT信号(208))により、BSRカウンタ(65)、EP
(67)はゼロクリアされ、DP(66)にはゼロになつてい
るEP(67)の値がコピーされる。また、PCスタツク(4
6)中の有効ビツト(46B)はすべて‘0'にクリアされ
る。
(INIT信号(208))により、BSRカウンタ(65)、EP
(67)はゼロクリアされ、DP(66)にはゼロになつてい
るEP(67)の値がコピーされる。また、PCスタツク(4
6)中の有効ビツト(46B)はすべて‘0'にクリアされ
る。
まず、命令キユー(21)から取り込まれた命令コード
(11)が命令デコード部(22)でデコードされる。デコ
ードの結果、取り込まれた命令がサブルーチンコール命
令であつた場合にはDPDEC信号(202)によりDPのデクリ
メントを行うと共に、BSRカウンタ(65)をカウントア
ツプする。アドレス計算ステージ(3)では、アドレス
加算器(38)により戻り先アドレスが計算されてAOバス
(105)を介してFAレジスタ(41)に転送される。Fス
テージ(4)では、FAレジスタ(41)の値がSAレジスタ
(42)に転送される。サブルーチンコール命令がEステ
ージ(5)で実行されるとEPDEC信号(206)によりEP
(67)の値がプリデクリメントされる。そして、PCスタ
ツク(46)中のPCWRITE信号(210)により更新されたEP
(67)が指すエントリの戻り先アドレスフイールド(46
A)に、S1バス(101)を介してSAレジスタ(42)に格納
されている戻り番地の値が書き込まれ、そのエントリの
有効ビツト(46B)が‘1'にセツトされる。また、BSRCD
EC信号(205)によりBSRカウンタ(65)をデクリメント
する。BSR命令では、Dステージ(2)でサブルーチン
の先頭番地への分岐処理を行うので、Eステージ(5)
で分岐処理を行う必要はない。
(11)が命令デコード部(22)でデコードされる。デコ
ードの結果、取り込まれた命令がサブルーチンコール命
令であつた場合にはDPDEC信号(202)によりDPのデクリ
メントを行うと共に、BSRカウンタ(65)をカウントア
ツプする。アドレス計算ステージ(3)では、アドレス
加算器(38)により戻り先アドレスが計算されてAOバス
(105)を介してFAレジスタ(41)に転送される。Fス
テージ(4)では、FAレジスタ(41)の値がSAレジスタ
(42)に転送される。サブルーチンコール命令がEステ
ージ(5)で実行されるとEPDEC信号(206)によりEP
(67)の値がプリデクリメントされる。そして、PCスタ
ツク(46)中のPCWRITE信号(210)により更新されたEP
(67)が指すエントリの戻り先アドレスフイールド(46
A)に、S1バス(101)を介してSAレジスタ(42)に格納
されている戻り番地の値が書き込まれ、そのエントリの
有効ビツト(46B)が‘1'にセツトされる。また、BSRCD
EC信号(205)によりBSRカウンタ(65)をデクリメント
する。BSR命令では、Dステージ(2)でサブルーチン
の先頭番地への分岐処理を行うので、Eステージ(5)
で分岐処理を行う必要はない。
次に、サブルーチンリターン命令の処理について説明す
る。命令キユー(21)から取り込まれた命令がサブルー
チンリターン命令であつたときにはBSRカウンタ(65)
の値がゼロであるかどうかを示すBSRCZ信号(201)のチ
エツクを行う。もしBSRカウンタ(65)がゼロでなかつ
たら、BSRカウンタ(65)の値がゼロになるまでDステ
ージ(2)は処理を一時停止する。BSRカウンタ(65)
がゼロでないということは、まだ対応するサブルーチン
コール命令がEステージ(5)で実行されずにパイプラ
イン中にあることを示しており、PCスタツク(46)に対
応する戻り番地が登録されていないことを示している。
BSRCZ信号(201)により、BSRカウンタ(65)の値がゼ
ロである、あるいは、ゼロになつたことが示されると、
Dステージ制御部(61)はPRERET信号(209)により、I
Fステージ制御部(62)及びPCスタツク(46)にプリリ
ターン処理を行うことを知らせる。PCスタツク(46)
は、DP(66)が指し示しているエントリの戻り先アドレ
スフイールド(46A)の内容をCAバス(108)に出力す
る。IFステージ制御部(62)は、命令キユー(21)に取
り込まれている命令データをすべて無効化し、CAバスに
出力された値で戻り先アドレスの命令のフエツチを行
い、取り込まれた命令データを命令デコード部(22)に
送る。PCスタツク(46)の内容がCAバス(108)に出力
された後に、DPINC信号(203)によりDP(66)がポスト
インクリメントされる。VREAD信号(211)によりPCスタ
ツク(46)中のEP(67)が指し示すエントリの有効ビツ
ト(46B)の内容が、VALID信号(214)としてEステー
ジ制御部(63)に送られる。読み出されたエントリの有
効ビツト(46B)は、‘0'にクリアされる。Eステージ
制御部(63)では、もしVALID信号(214)が‘1'であつ
たなら、プリリターンが正しかつたことを示しているの
で、サブルーチンリターン命令の実行を終了する。もし
VALID信号(214)が‘0'であつた場合には、プリリター
ンを行つた戻り先アドレスが誤つていたことを示してい
る。このとき、真の戻り先アドレスの値をメモリからDD
レジスタ(53)に取り込み、S1バス(101)を介してEB
レジスタ(45)に転送した後、EBレジスタ(45)の値を
CAバス(108)に出力する。IFステージ(1)はCAバス
(108)に出力された値により命令フエツチを行う。
る。命令キユー(21)から取り込まれた命令がサブルー
チンリターン命令であつたときにはBSRカウンタ(65)
の値がゼロであるかどうかを示すBSRCZ信号(201)のチ
エツクを行う。もしBSRカウンタ(65)がゼロでなかつ
たら、BSRカウンタ(65)の値がゼロになるまでDステ
ージ(2)は処理を一時停止する。BSRカウンタ(65)
がゼロでないということは、まだ対応するサブルーチン
コール命令がEステージ(5)で実行されずにパイプラ
イン中にあることを示しており、PCスタツク(46)に対
応する戻り番地が登録されていないことを示している。
BSRCZ信号(201)により、BSRカウンタ(65)の値がゼ
ロである、あるいは、ゼロになつたことが示されると、
Dステージ制御部(61)はPRERET信号(209)により、I
Fステージ制御部(62)及びPCスタツク(46)にプリリ
ターン処理を行うことを知らせる。PCスタツク(46)
は、DP(66)が指し示しているエントリの戻り先アドレ
スフイールド(46A)の内容をCAバス(108)に出力す
る。IFステージ制御部(62)は、命令キユー(21)に取
り込まれている命令データをすべて無効化し、CAバスに
出力された値で戻り先アドレスの命令のフエツチを行
い、取り込まれた命令データを命令デコード部(22)に
送る。PCスタツク(46)の内容がCAバス(108)に出力
された後に、DPINC信号(203)によりDP(66)がポスト
インクリメントされる。VREAD信号(211)によりPCスタ
ツク(46)中のEP(67)が指し示すエントリの有効ビツ
ト(46B)の内容が、VALID信号(214)としてEステー
ジ制御部(63)に送られる。読み出されたエントリの有
効ビツト(46B)は、‘0'にクリアされる。Eステージ
制御部(63)では、もしVALID信号(214)が‘1'であつ
たなら、プリリターンが正しかつたことを示しているの
で、サブルーチンリターン命令の実行を終了する。もし
VALID信号(214)が‘0'であつた場合には、プリリター
ンを行つた戻り先アドレスが誤つていたことを示してい
る。このとき、真の戻り先アドレスの値をメモリからDD
レジスタ(53)に取り込み、S1バス(101)を介してEB
レジスタ(45)に転送した後、EBレジスタ(45)の値を
CAバス(108)に出力する。IFステージ(1)はCAバス
(108)に出力された値により命令フエツチを行う。
PCスタツク(46)中の有効ビツト(46B)は、サブルー
チンコール時の戻り先アドレスを登録したとき‘1'にセ
ツトされ、サブルーチンリターン時に有効ビツト(46
B)が読み出された後で‘0'にクリアされる。すなわ
ち、PCスタツク中の有効ビツト(46B)が‘1'のエント
リには、正しい戻り先アドレスが登録されている。
チンコール時の戻り先アドレスを登録したとき‘1'にセ
ツトされ、サブルーチンリターン時に有効ビツト(46
B)が読み出された後で‘0'にクリアされる。すなわ
ち、PCスタツク中の有効ビツト(46B)が‘1'のエント
リには、正しい戻り先アドレスが登録されている。
サブルーチンリターン命令実行時に、Eステージ(5)
では、Dステージ(2)でプリリターンを行つた戻り先
アドレスが正しかつたかどうかのチエツクを行つてい
る。これは、PCスタツク(46)が8エントリで構成され
ているため、サブルーチンコールが9レベル以上の入れ
子になつた場合には8レベルより上のレベルのサブルー
チンコールに関する戻り先アドレスのデータがオーバー
ライトされて壊されてしまう。このような場合に備え、
Eステージ(5)ではプリリターンが正しく実行された
かどうかのチエツクを行つているのである。一番深くな
つたところから8レベル以上PCスタツク(46)がリード
(サブルーチンリターン)されると、PCスタツク(46)
中の有効ビツト(46B)はすべて‘0'となり、有効な戻
り先アドレスが格納されていないことを示す。しかし、
サブルーチンレベルが一番深くなつたところから8レベ
ルのサブルーチンコールに関してはいつも正しい値がPC
スタツク(46)に格納されているので、プリリターンが
正しく行われる確率は非常に高い。
では、Dステージ(2)でプリリターンを行つた戻り先
アドレスが正しかつたかどうかのチエツクを行つてい
る。これは、PCスタツク(46)が8エントリで構成され
ているため、サブルーチンコールが9レベル以上の入れ
子になつた場合には8レベルより上のレベルのサブルー
チンコールに関する戻り先アドレスのデータがオーバー
ライトされて壊されてしまう。このような場合に備え、
Eステージ(5)ではプリリターンが正しく実行された
かどうかのチエツクを行つているのである。一番深くな
つたところから8レベル以上PCスタツク(46)がリード
(サブルーチンリターン)されると、PCスタツク(46)
中の有効ビツト(46B)はすべて‘0'となり、有効な戻
り先アドレスが格納されていないことを示す。しかし、
サブルーチンレベルが一番深くなつたところから8レベ
ルのサブルーチンコールに関してはいつも正しい値がPC
スタツク(46)に格納されているので、プリリターンが
正しく行われる確率は非常に高い。
先に述べたBSRカウンタ(65)は、プリブランチを行うB
SR命令直後でも、正確なプリリターンを行い、Eステー
ジ(5)での比較を確実に行うために備えられている。
この機能がないと、BSR命令が処理中であり、Dステー
ジ(2)での処理は終了したが、Eステージ(5)でま
だ戻り先アドレスの値がPCスタツク(46)に書き込まれ
ていないうちに、Dステージ(2)でサブルーチンリタ
ーン命令が実行された場合、対応するサブルーチンリタ
ーン命令の戻り先アドレスが登録されていないため、誤
つた戻り先アドレスにプリリターン処理を行つてしま
う。ところが、サブルーチンリターン命令がEステージ
(5)で処理される段階では、先行していたBSR命令が
すでに処理されており、PCスタツク(46)には正しい戻
り先アドレスが登録されているため、Eステージ(5)
で有効ビツト(46B)を参照した際VALID信号(214)は
‘1'(有効)を示し、プリリターンが正しかつたとして
処理されてしまう。すなわち、このような場合誤動作を
行つてしまうわけである。BSRカウンタの機能を備える
ことにより、参照すべき戻り先アドレスの値が先行する
BSR命令により登録された後に、プリリターンが行われ
る。また、BSR命令の実行に際し、Dステージ(2)でP
Cスタツク(46)が参照されてからEステージ(5)で
処理されるまでPCスタツク(46)が書き換えられること
がないので、Dステージ(2)で戻り先アドレスが読み
出されたPCスタツク(46)中のエントリに対応する有効
ビツト(46B)がEステージ(5)において正しく参照
される。
SR命令直後でも、正確なプリリターンを行い、Eステー
ジ(5)での比較を確実に行うために備えられている。
この機能がないと、BSR命令が処理中であり、Dステー
ジ(2)での処理は終了したが、Eステージ(5)でま
だ戻り先アドレスの値がPCスタツク(46)に書き込まれ
ていないうちに、Dステージ(2)でサブルーチンリタ
ーン命令が実行された場合、対応するサブルーチンリタ
ーン命令の戻り先アドレスが登録されていないため、誤
つた戻り先アドレスにプリリターン処理を行つてしま
う。ところが、サブルーチンリターン命令がEステージ
(5)で処理される段階では、先行していたBSR命令が
すでに処理されており、PCスタツク(46)には正しい戻
り先アドレスが登録されているため、Eステージ(5)
で有効ビツト(46B)を参照した際VALID信号(214)は
‘1'(有効)を示し、プリリターンが正しかつたとして
処理されてしまう。すなわち、このような場合誤動作を
行つてしまうわけである。BSRカウンタの機能を備える
ことにより、参照すべき戻り先アドレスの値が先行する
BSR命令により登録された後に、プリリターンが行われ
る。また、BSR命令の実行に際し、Dステージ(2)でP
Cスタツク(46)が参照されてからEステージ(5)で
処理されるまでPCスタツク(46)が書き換えられること
がないので、Dステージ(2)で戻り先アドレスが読み
出されたPCスタツク(46)中のエントリに対応する有効
ビツト(46B)がEステージ(5)において正しく参照
される。
プリブランチを行わないJSR命令では、Eステージ
(5)において分岐先アドレスへの分岐処理が行われる
ため、もし、RTS命令ががJSR命令で登録される前のPCス
タツク(46)を参照してプリリターンしても、そのRTS
命令自体が実行される前にパイプラインはキヤンセルさ
れるので、このようなことは起こらない。BSR命令に関
してプリブランチ処理を行わない場合も同様である。
(5)において分岐先アドレスへの分岐処理が行われる
ため、もし、RTS命令ががJSR命令で登録される前のPCス
タツク(46)を参照してプリリターンしても、そのRTS
命令自体が実行される前にパイプラインはキヤンセルさ
れるので、このようなことは起こらない。BSR命令に関
してプリブランチ処理を行わない場合も同様である。
以上で述べたように、サブルーチンコール時の戻り先ア
ドレスのみを記憶するPCスタツク(46)を設けることに
より、サブルーチンリターン命令に対して命令のデコー
ド段階で戻り先アドレスへのプリリターンを行い、サブ
ルーチンリターン命令実行時のパイプラインの乱れをな
くす。
ドレスのみを記憶するPCスタツク(46)を設けることに
より、サブルーチンリターン命令に対して命令のデコー
ド段階で戻り先アドレスへのプリリターンを行い、サブ
ルーチンリターン命令実行時のパイプラインの乱れをな
くす。
Eステージ(5)においてブランチが起こつた場合に
は、EBRA信号(204)によりBSRカウンタ(65)の値がゼ
ロクリアされ、EP(67)の内容がDP(66)にコピーされ
る。Eステージ(5)においてブランチが起こつた場合
には、IFステージ(1)〜Fステージでの処理がすべて
無効化されるため、Dステージ(2)でデコードされた
が、Eステージ(5)では実行されなかつた処理途中の
サブルーチンコール命令、サブルーチンリターン命令に
対して行われたBSRカウンタ(65)、DP(66)の更新を
無効化し、PCスタツク(46)のそのレベルまでの戻り先
アドレスの値をDステージ(2)で正しく参照できるよ
うになつている。
は、EBRA信号(204)によりBSRカウンタ(65)の値がゼ
ロクリアされ、EP(67)の内容がDP(66)にコピーされ
る。Eステージ(5)においてブランチが起こつた場合
には、IFステージ(1)〜Fステージでの処理がすべて
無効化されるため、Dステージ(2)でデコードされた
が、Eステージ(5)では実行されなかつた処理途中の
サブルーチンコール命令、サブルーチンリターン命令に
対して行われたBSRカウンタ(65)、DP(66)の更新を
無効化し、PCスタツク(46)のそのレベルまでの戻り先
アドレスの値をDステージ(2)で正しく参照できるよ
うになつている。
プログラムによつて外部メモリ上のサブルーチンからの
戻り先アドレスの値が書き換えられた場合には、PCスタ
ツク(46)に格納されている戻り先アドレスと、外部メ
モリ上の戻り先アドレスが異なつた値となるため、動作
は保証されない。従つて。プリリターン処理を行う場合
はプログラムによる外部メモリ上の戻り先アドレスの値
の書き換えは禁止する。
戻り先アドレスの値が書き換えられた場合には、PCスタ
ツク(46)に格納されている戻り先アドレスと、外部メ
モリ上の戻り先アドレスが異なつた値となるため、動作
は保証されない。従つて。プリリターン処理を行う場合
はプログラムによる外部メモリ上の戻り先アドレスの値
の書き換えは禁止する。
この発明のデータ処理装置は、プログラムによつてプリ
リターン処理を強制的に無効化する手段を有している。
プログラムで制御レジスタ中の有効ビツト制御信号ラツ
チ(VCNTラツチ(71))の内容を書き換えることによつ
て、この処理を行う。VCNTラツチ(71)を‘1'にセツト
しておくと、上述のようにプリリターン処理を行つた戻
り先アドレスが正しかつたかどうかを示すVALID信号(2
14)が、PCスタツク(46)中の有効ビツト(46B)の値
を反映して、Eステージ制御部(63)に送られる。VCNT
ラツチ(71)を‘0'にセツトしておくと、VCNT信号(21
3)が‘0'となり、PCスタツク(46)中の有効ビツト(4
6B)の値が何であつても、ANDゲート(70)からEステ
ージ制御部(63)に送られるVALID信号(214)は‘0'と
なる。従つて、Dステージ(2)で行われたプリリター
ン処理はいつも無効となり、Eステージ(5)で戻り先
アドレスが外部メモリから読み出され、その戻り先アド
レスにリターンする。プリリターン処理がすべて無効と
なるので、外部メモリ上のサブルーチンからの戻り先ア
ドレスの値が書き換えられても正確な動作が保証され
る。
リターン処理を強制的に無効化する手段を有している。
プログラムで制御レジスタ中の有効ビツト制御信号ラツ
チ(VCNTラツチ(71))の内容を書き換えることによつ
て、この処理を行う。VCNTラツチ(71)を‘1'にセツト
しておくと、上述のようにプリリターン処理を行つた戻
り先アドレスが正しかつたかどうかを示すVALID信号(2
14)が、PCスタツク(46)中の有効ビツト(46B)の値
を反映して、Eステージ制御部(63)に送られる。VCNT
ラツチ(71)を‘0'にセツトしておくと、VCNT信号(21
3)が‘0'となり、PCスタツク(46)中の有効ビツト(4
6B)の値が何であつても、ANDゲート(70)からEステ
ージ制御部(63)に送られるVALID信号(214)は‘0'と
なる。従つて、Dステージ(2)で行われたプリリター
ン処理はいつも無効となり、Eステージ(5)で戻り先
アドレスが外部メモリから読み出され、その戻り先アド
レスにリターンする。プリリターン処理がすべて無効と
なるので、外部メモリ上のサブルーチンからの戻り先ア
ドレスの値が書き換えられても正確な動作が保証され
る。
また、有効ビツト制御信号ラツチ(VCNTラツチ(71))
に‘0'をセツトしたのち、再びプリリターン処理を有効
にする場合には、プログラムにより制御レジスタ中のPC
スタツク(46)初期化信号(INIT信号(208))を‘1'
にセツトすることにより、PCスタツク(46)の初期化を
行う。BSRカウンタ(65)、EP(67)はゼロクリアさ
れ、DP(66)にはゼロになつているEP(67)の値がコピ
ーされる。また、PCスタツク(46)中の有効ビツト(46
B)はすべて‘0'にクリアされる。その後、VCNTラツチ
(71)を‘1'にセツトすることにより、再びプリリター
ン処理を有効にする。
に‘0'をセツトしたのち、再びプリリターン処理を有効
にする場合には、プログラムにより制御レジスタ中のPC
スタツク(46)初期化信号(INIT信号(208))を‘1'
にセツトすることにより、PCスタツク(46)の初期化を
行う。BSRカウンタ(65)、EP(67)はゼロクリアさ
れ、DP(66)にはゼロになつているEP(67)の値がコピ
ーされる。また、PCスタツク(46)中の有効ビツト(46
B)はすべて‘0'にクリアされる。その後、VCNTラツチ
(71)を‘1'にセツトすることにより、再びプリリター
ン処理を有効にする。
(2.2)サブルーチンコール命令、サブルーチンリター
ン命令の詳細動作 以上では、サブルーチンコール命令とサブルーチンリタ
ーン命令の大まかな動作について述べてきたが、ここで
は各命令の詳細な動作について説明する。
ン命令の詳細動作 以上では、サブルーチンコール命令とサブルーチンリタ
ーン命令の大まかな動作について述べてきたが、ここで
は各命令の詳細な動作について説明する。
この発明のデータ処理装置では、サブルーチンコール命
令としてブランチサブルーチン(BSR)命令とジヤンプ
サブルーチン(JSR)命令がある。また、サブルーチン
リターン命令としては、リターンサブルーチン(RTS)
命令と高機能命令として高級言語用サブルーチンリター
ンとパラメータ解放を一度に行うEXITD命令がある。各
命令のビツト割り付けを第5図に示してある。‘−’は
オペレーシヨンコードを示す。
令としてブランチサブルーチン(BSR)命令とジヤンプ
サブルーチン(JSR)命令がある。また、サブルーチン
リターン命令としては、リターンサブルーチン(RTS)
命令と高機能命令として高級言語用サブルーチンリター
ンとパラメータ解放を一度に行うEXITD命令がある。各
命令のビツト割り付けを第5図に示してある。‘−’は
オペレーシヨンコードを示す。
BSR命令とJSR命令及びRTS命令とEXITD命令は、PCスタツ
ク(46)に関する処理は同じなので、以下、BSR命令とR
TS命令について詳細な説明を行う。
ク(46)に関する処理は同じなので、以下、BSR命令とR
TS命令について詳細な説明を行う。
(2.2.1)BSR命令 BSR命令はPC相対のアドレツシングのみをサポートする
サブルーチンコール命令であり、戻り先アドレスがスタ
ツクに退避される。第5図(A),(B)に示すように
BSR命令に関しては一般形(Gフオーマツト)と短縮形
(Dフオーマツト)の2つの命令フオーマツトがある。
Dステージ(2)では、どちらのフオーマツトでも同様
の処理が行われる。この命令は、1つのステツプコード
として処理される。
サブルーチンコール命令であり、戻り先アドレスがスタ
ツクに退避される。第5図(A),(B)に示すように
BSR命令に関しては一般形(Gフオーマツト)と短縮形
(Dフオーマツト)の2つの命令フオーマツトがある。
Dステージ(2)では、どちらのフオーマツトでも同様
の処理が行われる。この命令は、1つのステツプコード
として処理される。
BSR命令実行のフローチヤートを第6図に示す。BSR命令
が命令デコード部(22)で処理されると、BSR命令のス
テツプコードを示すDコード(12)と戻り先アドレスを
計算するためのAコード(13)が生成される。Gフオー
マツトの命令であれば、変位のサイズを示すフイールド
(82B)に従つて変位(82D)の値も同時に取り込む。ま
た、DPDEC信号(202)によりDP(66)のデクリメント、
及び、BSRカウンタ(65)のインクリメント処理を行
う。この命令は、プリブランチを行う命令であり、PC演
算部(54)において飛び先アドレスの計算が行われ、演
算結果がCAバスに出力されてプリブランチ処理が行われ
る。Aステージ(3)では、Aコード(13)の指示に従
つてアドレス計算部(55)において戻り先アドレスが計
算され、AOバス(105)を介してFAレジスタ(41)に転
送される。Fステージ(14)ではFAレジスタ(41)の値
がSAレジスタ(42)に転送される。Eステージ(5)で
は、まず、EPDEC信号(206)によりEP(67)のプリデク
リメントを行う。次に、PCWRITE信号(210)によつて、
戻り先アドレスが格納されているSAレジスタ(42)の値
がS1バス(101)を介してPCスタツク(46)中のEP(6
7)の指すエントリの戻り先アドレスフイールド(46A)
に書き込まれ、そのエントリの有効ビツト(46B)が
‘1'にセツトされる。また、同時にS1バス(101)の値
がALU(50)、DOバス(103)を介してDDレジスタ(53)
に書き込まれ、戻り先アドレスの格納されたDDレジスタ
(53)の値をスタツクポインタによつてソフトウエアで
管理されているメモリ上のスタツクにプツシユする。PC
スタツク(46)に戻り先アドレスが登録されたらBSRCDE
C信号(205)によりBRSカウンタ(65)がデクリメント
される。この命令では、Dステージ(2)においてすで
に分岐処理が行われているので、Eステージでは分岐処
理は行わない。
が命令デコード部(22)で処理されると、BSR命令のス
テツプコードを示すDコード(12)と戻り先アドレスを
計算するためのAコード(13)が生成される。Gフオー
マツトの命令であれば、変位のサイズを示すフイールド
(82B)に従つて変位(82D)の値も同時に取り込む。ま
た、DPDEC信号(202)によりDP(66)のデクリメント、
及び、BSRカウンタ(65)のインクリメント処理を行
う。この命令は、プリブランチを行う命令であり、PC演
算部(54)において飛び先アドレスの計算が行われ、演
算結果がCAバスに出力されてプリブランチ処理が行われ
る。Aステージ(3)では、Aコード(13)の指示に従
つてアドレス計算部(55)において戻り先アドレスが計
算され、AOバス(105)を介してFAレジスタ(41)に転
送される。Fステージ(14)ではFAレジスタ(41)の値
がSAレジスタ(42)に転送される。Eステージ(5)で
は、まず、EPDEC信号(206)によりEP(67)のプリデク
リメントを行う。次に、PCWRITE信号(210)によつて、
戻り先アドレスが格納されているSAレジスタ(42)の値
がS1バス(101)を介してPCスタツク(46)中のEP(6
7)の指すエントリの戻り先アドレスフイールド(46A)
に書き込まれ、そのエントリの有効ビツト(46B)が
‘1'にセツトされる。また、同時にS1バス(101)の値
がALU(50)、DOバス(103)を介してDDレジスタ(53)
に書き込まれ、戻り先アドレスの格納されたDDレジスタ
(53)の値をスタツクポインタによつてソフトウエアで
管理されているメモリ上のスタツクにプツシユする。PC
スタツク(46)に戻り先アドレスが登録されたらBSRCDE
C信号(205)によりBRSカウンタ(65)がデクリメント
される。この命令では、Dステージ(2)においてすで
に分岐処理が行われているので、Eステージでは分岐処
理は行わない。
(2.2.2)RTS命令 RTS命令はサブルーチンからのリターンを行う命令であ
り、スタツクから復帰されたリターンアドレスにジヤン
プする。この命令は、1つのステツプコードとして処理
される。
り、スタツクから復帰されたリターンアドレスにジヤン
プする。この命令は、1つのステツプコードとして処理
される。
RTS命令実行のフローチヤートを第7図に示す。RTS命令
が命令デコード部(22)で処理されると、RTS命令のス
テツプコードを示すDコード(12)とスタツクトツプの
アドレスを計算するためのAコード(13)が生成され
る。この命令はプリリターンを行う命令である。BSRCZ
信号(201)によりパイプライン中にサブルーチンコー
ル命令が存在することが示されている場合にはBSRカウ
ンタ(65)の内容がゼロになるまで処理を一時停止す
る。BSRカウンタ(65)がゼロである場合にはプリリタ
ーン処理を行う。PRERET信号(209)により、PCスタツ
ク(46)中のDP(66)が指し示すエントリの戻り先アド
レスフイールド(46A)の内容をCAバス(108)に出力
し、先行分岐処理(プリリターン)を行う。また、PCス
タツク(46)参照後、DPINC信号(203)によりDP(66)
のポストインクリメント処理を行う。Aステージ(3)
では、Aコード(13)の指示に従つてアドレス計算部
(55)においてスタツクトツプのアドレスが計算され、
AOバス(105)を介してFAレジスタ(41)に書き込まれ
る。スタツクトツプのアドレスとはASP(40)の値その
ものである。Fステージ(4)では、FAレジスタ(41)
の値がSAレジスタ(42)に転送される。Eステージ
(5)では、VREAD信号(211)によつて、プリリターン
時に参照されたリターンアドレスが格納されているPCス
タツク(46)中のEP(67)の指すエントリの有効ビツト
(46B)の内容がVALID信号(214)としてEステージ制
御部(63)に送られ、そのエントリの有効ビツト(46
B)の値が‘0'にクリアされる。また、同時に、スタツ
クトツプのアドレスを示しているSAレジスタ(42)の値
を、S1バス(101)を介してAAレジスタ(44)に転送す
る。PCスタツク(46)参照後、EPINC信号(207)により
EP(67)のポストインクリメントを行う。VALID信号(2
14)が‘1'であつたら、正しいアドレスにプリリターン
が行われたことを示しており、Eステージ(5)は1マ
イクロサイクルNOPを実行して命令の実行を終了する。V
ALID信号(214)が‘0'であつた場合にはプリリターン
を行つたリターンアドレスが誤つていたことを示してお
り、AAレジスタ(45)の値をアドレスとして戻り先アド
レスの値をフエツチし、DDレジスタ(53)に取り込む。
DDレジスタ(53)の値をS1バス(101)を介してEBレジ
スタ(45)に転送し、EBレジスタ(45)の値がCAバス
(108)に出力されて分岐処理が行われる。このとき、E
BRA信号(204)により、BSRカウンタ(65)はクリアさ
れ、DP(66)にはEP(67)の値がコピーされる。
が命令デコード部(22)で処理されると、RTS命令のス
テツプコードを示すDコード(12)とスタツクトツプの
アドレスを計算するためのAコード(13)が生成され
る。この命令はプリリターンを行う命令である。BSRCZ
信号(201)によりパイプライン中にサブルーチンコー
ル命令が存在することが示されている場合にはBSRカウ
ンタ(65)の内容がゼロになるまで処理を一時停止す
る。BSRカウンタ(65)がゼロである場合にはプリリタ
ーン処理を行う。PRERET信号(209)により、PCスタツ
ク(46)中のDP(66)が指し示すエントリの戻り先アド
レスフイールド(46A)の内容をCAバス(108)に出力
し、先行分岐処理(プリリターン)を行う。また、PCス
タツク(46)参照後、DPINC信号(203)によりDP(66)
のポストインクリメント処理を行う。Aステージ(3)
では、Aコード(13)の指示に従つてアドレス計算部
(55)においてスタツクトツプのアドレスが計算され、
AOバス(105)を介してFAレジスタ(41)に書き込まれ
る。スタツクトツプのアドレスとはASP(40)の値その
ものである。Fステージ(4)では、FAレジスタ(41)
の値がSAレジスタ(42)に転送される。Eステージ
(5)では、VREAD信号(211)によつて、プリリターン
時に参照されたリターンアドレスが格納されているPCス
タツク(46)中のEP(67)の指すエントリの有効ビツト
(46B)の内容がVALID信号(214)としてEステージ制
御部(63)に送られ、そのエントリの有効ビツト(46
B)の値が‘0'にクリアされる。また、同時に、スタツ
クトツプのアドレスを示しているSAレジスタ(42)の値
を、S1バス(101)を介してAAレジスタ(44)に転送す
る。PCスタツク(46)参照後、EPINC信号(207)により
EP(67)のポストインクリメントを行う。VALID信号(2
14)が‘1'であつたら、正しいアドレスにプリリターン
が行われたことを示しており、Eステージ(5)は1マ
イクロサイクルNOPを実行して命令の実行を終了する。V
ALID信号(214)が‘0'であつた場合にはプリリターン
を行つたリターンアドレスが誤つていたことを示してお
り、AAレジスタ(45)の値をアドレスとして戻り先アド
レスの値をフエツチし、DDレジスタ(53)に取り込む。
DDレジスタ(53)の値をS1バス(101)を介してEBレジ
スタ(45)に転送し、EBレジスタ(45)の値がCAバス
(108)に出力されて分岐処理が行われる。このとき、E
BRA信号(204)により、BSRカウンタ(65)はクリアさ
れ、DP(66)にはEP(67)の値がコピーされる。
(2.3)他の実施例の説明 本実施例では、PCスタツク(46)は8エントリで構成さ
れている。従つて、サブルーチンコールが9レベル以上
の入れ子となつたときには、有効な戻り先アドレスが格
納されているエントリに別の戻り先アドレスがオーバー
ライトされるため、最初の値が消えてしまう。従つて、
リカーシブコールを行うような特殊な場合を除いて、9
レベル以上の入れ子になると誤つたプリリターンを行う
ことになる。このため、Eステージでプリリターンが正
しかつたどうかのチエツクが必要になるわけである。PC
スタツクを何エントリ設けるかに関しては、何レベルま
での深さのサブルーチンコールに対して正しいプリリタ
ーンを行うかという性能の問題と、ハードウエアの増加
量との兼ね合いで決定すればよい。
れている。従つて、サブルーチンコールが9レベル以上
の入れ子となつたときには、有効な戻り先アドレスが格
納されているエントリに別の戻り先アドレスがオーバー
ライトされるため、最初の値が消えてしまう。従つて、
リカーシブコールを行うような特殊な場合を除いて、9
レベル以上の入れ子になると誤つたプリリターンを行う
ことになる。このため、Eステージでプリリターンが正
しかつたどうかのチエツクが必要になるわけである。PC
スタツクを何エントリ設けるかに関しては、何レベルま
での深さのサブルーチンコールに対して正しいプリリタ
ーンを行うかという性能の問題と、ハードウエアの増加
量との兼ね合いで決定すればよい。
本実施例では、確実なプリリターンを行うためにBSRカ
ウンタ(65)を備えらているが、サブルーチンコール命
令のプリブランチ処理を行わない場合には、サブルーチ
ンコール命令実行後必ず飛び先番地への分岐処理が行わ
れ、パイプラインがキヤンセルされるためこの機能は必
要ない。また、BSR命令をDステージ(2)デコードす
るときポインタDP(66)をデクリメントしているが、BS
R命令をEステージ(5)で実行するとき、デクリメン
トしたポインタEP(67)の値をコピーすれようにしても
よい。
ウンタ(65)を備えらているが、サブルーチンコール命
令のプリブランチ処理を行わない場合には、サブルーチ
ンコール命令実行後必ず飛び先番地への分岐処理が行わ
れ、パイプラインがキヤンセルされるためこの機能は必
要ない。また、BSR命令をDステージ(2)デコードす
るときポインタDP(66)をデクリメントしているが、BS
R命令をEステージ(5)で実行するとき、デクリメン
トしたポインタEP(67)の値をコピーすれようにしても
よい。
また、本実施例では、Eステージ(5)でプリリターン
が正しく行われたかどうかのチエツクを行うために、PC
スタツク(46)からプリリターンを行う際に参照したエ
ントリの有効ビツト(46B)を読み出しているが、Dス
テージ(2)でプリリターンを行う際に有効ビツト(46
B)も同時に読み出し、その有効ビツトの値をEステー
ジ(5)まで転送するようにしてもよい。この場合、転
送されてきた有効ビツトの値を用いて本実施例と同様に
Eステージ(5)でチエツクを行つてもよいし、この有
効ビツトの値を用いて、マイクロ命令のエントリアドレ
スを変えるなどしてマイクロ命令の処理をRステージ
(4)で変えてもよい。ただし、この場合もポインタの
切り替え処理、及び有効ビツト(46B)のクリア処理は
必要である。
が正しく行われたかどうかのチエツクを行うために、PC
スタツク(46)からプリリターンを行う際に参照したエ
ントリの有効ビツト(46B)を読み出しているが、Dス
テージ(2)でプリリターンを行う際に有効ビツト(46
B)も同時に読み出し、その有効ビツトの値をEステー
ジ(5)まで転送するようにしてもよい。この場合、転
送されてきた有効ビツトの値を用いて本実施例と同様に
Eステージ(5)でチエツクを行つてもよいし、この有
効ビツトの値を用いて、マイクロ命令のエントリアドレ
スを変えるなどしてマイクロ命令の処理をRステージ
(4)で変えてもよい。ただし、この場合もポインタの
切り替え処理、及び有効ビツト(46B)のクリア処理は
必要である。
また、本実施例では、Dステージ(2)でサブルーチン
リターン命令が処理されたときには必ずプリリターン処
理を行つているが、Dステージ(2)でプリリターンを
行う際に有効ビツト(46B)も同時に読み出し、その有
効ビツトの値が‘1'(有効)であつたときのみプリリタ
ーン処理を行うようにしてもよい。
リターン命令が処理されたときには必ずプリリターン処
理を行つているが、Dステージ(2)でプリリターンを
行う際に有効ビツト(46B)も同時に読み出し、その有
効ビツトの値が‘1'(有効)であつたときのみプリリタ
ーン処理を行うようにしてもよい。
また、本実施例では、Eステージ(5)でプリリターン
が正しかつたかどうかのチエツクを行つてから、誤つて
いたときのみ正しい戻り先アドレスを外部メモリから取
り込んでいるが、チエツクの結果にかかわらず戻り先ア
ドレスの値を読み出してもよい。例えば、RTS命令であ
ればFステージ(4)で戻り先アドレスの値をプリフエ
ツチしてもよい。
が正しかつたかどうかのチエツクを行つてから、誤つて
いたときのみ正しい戻り先アドレスを外部メモリから取
り込んでいるが、チエツクの結果にかかわらず戻り先ア
ドレスの値を読み出してもよい。例えば、RTS命令であ
ればFステージ(4)で戻り先アドレスの値をプリフエ
ツチしてもよい。
また、本実施例ではDステージ(2)より後段のステー
ジがサブルーチンコール命令を処理しているかどうかを
検出する手段としてカウンタを用いているが、各ステツ
プコードあるいは各パイプラインステージにサブルーチ
ンコール命令用のフラグを設けて、全てのフラグが立つ
ていないときのみ、プリリターン処理を行うようにして
もよい。
ジがサブルーチンコール命令を処理しているかどうかを
検出する手段としてカウンタを用いているが、各ステツ
プコードあるいは各パイプラインステージにサブルーチ
ンコール命令用のフラグを設けて、全てのフラグが立つ
ていないときのみ、プリリターン処理を行うようにして
もよい。
また、本実施例では、PCスタツク(46)のポインタとし
て、Dステージ(2)で管理しているポインタDP(66)
とEステージ(5)で管理しているポインタEP(67)の
2つのポインタを備えている。これは、複数のサブルー
チンリターン命令がパイプライン中で処理される場合に
も正しい戻り先アドレスを参照できるようにしたもので
ある。EP(67)はEステージ(5)で実行されたサブル
ーチンコール命令、サブルーチンリターン命令に対応し
て変化する。DP(66)は命令デコード段階で変化するた
め、2つ以上のサブルーチンリターン命令がパイプライ
ン中に取り込まれても対応するサブルーチンコール命令
の戻り先アドレスが参照できるわけである。Eステージ
(5)で分岐処理が行われたときにはパイプラインはキ
ヤンセルされるのでEP(67)の値がDP(66)にコピーさ
れる。PCスタツク(46)のポインタ管理をすべてEP(6
7)のみで行うようにし、サブルーチンリターン命令用
のフラグを設け、Aステージ(3)以降のステージでサ
ブルーチンリターン命令を実行中の時はそのフラグを立
てておき、そのフラグが立つているときにはプリリター
ンの処理を待つようにしてもよい。この場合、ポインタ
が正しく切り替わつてからPCスタツク(46)の参照が行
えるので正しいプリリターンが行える。
て、Dステージ(2)で管理しているポインタDP(66)
とEステージ(5)で管理しているポインタEP(67)の
2つのポインタを備えている。これは、複数のサブルー
チンリターン命令がパイプライン中で処理される場合に
も正しい戻り先アドレスを参照できるようにしたもので
ある。EP(67)はEステージ(5)で実行されたサブル
ーチンコール命令、サブルーチンリターン命令に対応し
て変化する。DP(66)は命令デコード段階で変化するた
め、2つ以上のサブルーチンリターン命令がパイプライ
ン中に取り込まれても対応するサブルーチンコール命令
の戻り先アドレスが参照できるわけである。Eステージ
(5)で分岐処理が行われたときにはパイプラインはキ
ヤンセルされるのでEP(67)の値がDP(66)にコピーさ
れる。PCスタツク(46)のポインタ管理をすべてEP(6
7)のみで行うようにし、サブルーチンリターン命令用
のフラグを設け、Aステージ(3)以降のステージでサ
ブルーチンリターン命令を実行中の時はそのフラグを立
てておき、そのフラグが立つているときにはプリリター
ンの処理を待つようにしてもよい。この場合、ポインタ
が正しく切り替わつてからPCスタツク(46)の参照が行
えるので正しいプリリターンが行える。
また、この発明のPCスタツク(46)はプリリターン時に
もプリリターンが正しく行われたかどうか判断するとき
ににもアクセスされ、CPU外部のメモリアクセスとは独
立に行うと効率がよい。従つて、CPUが1つの集積回路
チツプで実現されるマイクロプロセツサの様なデータ処
理装置ではPCスタツク(46)をCPUと同じ集積回路内に
もつようにすれば、CPU外部のメモリアクセスとは独立
にPCスタツク(46)がアクセスできる。
もプリリターンが正しく行われたかどうか判断するとき
ににもアクセスされ、CPU外部のメモリアクセスとは独
立に行うと効率がよい。従つて、CPUが1つの集積回路
チツプで実現されるマイクロプロセツサの様なデータ処
理装置ではPCスタツク(46)をCPUと同じ集積回路内に
もつようにすれば、CPU外部のメモリアクセスとは独立
にPCスタツク(46)がアクセスできる。
この発明では次の(1)〜(4)項の実施態様により実
施することができる。
施することができる。
(1)第1のステージと第2のステージをもち、命令の
実行に対して第1のステージでの処理が第2のステージ
での処理に先行して行われるパイプライン処理により命
令を処理するデータ処理装置であつて、 命令やデータを格納する第1の記憶装置と、 サブルーチンからの戻り先命令のアドレス値を1つまた
は複数個格納するアドレス記憶部と、前記アドレス記憶
部に格納されている各戻り先アドレスの値が有効か無効
かを示す有効ビツトをサブルーチンからの戻り先アドレ
スと組にして格納する有効ビツト記憶部とを含む第1の
記憶装置とは異なる第2の記憶装置と、 サブルーチンからの戻り先アドレスとなる値を前記第1
の記憶装置に書き込む第1の書き込み手段と、 サブルーチンからの戻り先アドレスとなる値を前記第2
の記憶装置の前記戻り先アドレス記憶部に書き込む第2
の書き込み手段と、 前記第1のステージで制御され、第1の値を前記第2の
記憶装置から読みだす第1の読み出し手段と、 サブルーチンリターン命令処理時に、サブルーチンから
の戻り先アドレスとなる第2の値を前記第1の記憶装置
から読みだす第2の読み出し手段と、サブルーチンコー
ル命令処理時に、前記第2の記憶装置の前記有効ビツト
記憶部に有効を示す値を書き込む有効ビツト書き込み手
段と、 サブルーチンリターン命令処理時に、前記第2の記憶装
置の前記有効ビツト記憶部に無効を示す値を書き込む有
効ビツトクリア手段と、 サブルーチンリターン命令処理時に、前記第2の記憶装
置の前記有効ビツト記憶部に格納されている前記有効ビ
ツトを読み出す有効ビツト読み出し手段と、 前記第1の記憶装置から命令をフエツチする命令フエツ
チ手段とを備え、 前記命令フエツチ手段が、前記第1の記憶装置の前記第
1の値の示すアドレスから第1の命令をフエツチする機
能と、前記第1の記憶装置の前記第2の値の示すアドレ
スから第2の命令をフエツチする機能を備え、 サブルーチンリターン命令処理時に、 前記有効ビツト読み出し手段により読み出された有効ビ
ツトの値が有効を示す時は、前記第1の命令を実行し、 前記有効ビツト読み出し手段により読み出された有効ビ
ツトの値が有効を示す時は、前記第2の命令を実行する ことを特徴とするデータ処理装置。
実行に対して第1のステージでの処理が第2のステージ
での処理に先行して行われるパイプライン処理により命
令を処理するデータ処理装置であつて、 命令やデータを格納する第1の記憶装置と、 サブルーチンからの戻り先命令のアドレス値を1つまた
は複数個格納するアドレス記憶部と、前記アドレス記憶
部に格納されている各戻り先アドレスの値が有効か無効
かを示す有効ビツトをサブルーチンからの戻り先アドレ
スと組にして格納する有効ビツト記憶部とを含む第1の
記憶装置とは異なる第2の記憶装置と、 サブルーチンからの戻り先アドレスとなる値を前記第1
の記憶装置に書き込む第1の書き込み手段と、 サブルーチンからの戻り先アドレスとなる値を前記第2
の記憶装置の前記戻り先アドレス記憶部に書き込む第2
の書き込み手段と、 前記第1のステージで制御され、第1の値を前記第2の
記憶装置から読みだす第1の読み出し手段と、 サブルーチンリターン命令処理時に、サブルーチンから
の戻り先アドレスとなる第2の値を前記第1の記憶装置
から読みだす第2の読み出し手段と、サブルーチンコー
ル命令処理時に、前記第2の記憶装置の前記有効ビツト
記憶部に有効を示す値を書き込む有効ビツト書き込み手
段と、 サブルーチンリターン命令処理時に、前記第2の記憶装
置の前記有効ビツト記憶部に無効を示す値を書き込む有
効ビツトクリア手段と、 サブルーチンリターン命令処理時に、前記第2の記憶装
置の前記有効ビツト記憶部に格納されている前記有効ビ
ツトを読み出す有効ビツト読み出し手段と、 前記第1の記憶装置から命令をフエツチする命令フエツ
チ手段とを備え、 前記命令フエツチ手段が、前記第1の記憶装置の前記第
1の値の示すアドレスから第1の命令をフエツチする機
能と、前記第1の記憶装置の前記第2の値の示すアドレ
スから第2の命令をフエツチする機能を備え、 サブルーチンリターン命令処理時に、 前記有効ビツト読み出し手段により読み出された有効ビ
ツトの値が有効を示す時は、前記第1の命令を実行し、 前記有効ビツト読み出し手段により読み出された有効ビ
ツトの値が有効を示す時は、前記第2の命令を実行する ことを特徴とするデータ処理装置。
(2)前記第2の記憶装置は、前記アドレス記憶部の1
つのエントリと前記有効ビツト記憶部の1エントリを1
つのエントリとし、2n個のサイクリツクな番号がつけら
れたエントリで構成され、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビツト
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビツトカウンタ
と、 前記第2のnビツトカウンタの値を前記第1のnビツト
カウンタに書き込む第3の書き込み手段を備え、 前記第2の書き込み手段が前記第2の記憶装置の前記第
2のnビツトカウンタの値が示すエントリ番号にサブル
ーチンからの戻り先アドレスを書き込む手段であり、 前記第1の読み出し手段が前記第2の記憶装置の前記第
1のnビツトカウンタの値が示すエントリ番号の前記ア
ドレス記憶部から前記第1の値を読み出す手段であり、 前記有効ビツト書き込み手段が前記第2の記憶装置の前
記第2のnビツトカウンタの値が示すエントリ番号の前
記有効ビツト記憶部に有効を示す値を書き込む手段であ
り、 前記有効ビツトクリア手段が前記第2の記憶装置の前記
第2のnビツトカウンタの値が示すエントリ番号の前記
有効ビツト記憶部に無効を示す値を書き込む手段である ことを特徴とする第1項記載のデータ処理装置。
つのエントリと前記有効ビツト記憶部の1エントリを1
つのエントリとし、2n個のサイクリツクな番号がつけら
れたエントリで構成され、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビツト
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビツトカウンタ
と、 前記第2のnビツトカウンタの値を前記第1のnビツト
カウンタに書き込む第3の書き込み手段を備え、 前記第2の書き込み手段が前記第2の記憶装置の前記第
2のnビツトカウンタの値が示すエントリ番号にサブル
ーチンからの戻り先アドレスを書き込む手段であり、 前記第1の読み出し手段が前記第2の記憶装置の前記第
1のnビツトカウンタの値が示すエントリ番号の前記ア
ドレス記憶部から前記第1の値を読み出す手段であり、 前記有効ビツト書き込み手段が前記第2の記憶装置の前
記第2のnビツトカウンタの値が示すエントリ番号の前
記有効ビツト記憶部に有効を示す値を書き込む手段であ
り、 前記有効ビツトクリア手段が前記第2の記憶装置の前記
第2のnビツトカウンタの値が示すエントリ番号の前記
有効ビツト記憶部に無効を示す値を書き込む手段である ことを特徴とする第1項記載のデータ処理装置。
(3)前記第2の書き込み手段により、前記第1のステ
ージで処理を終えた全サブルーチンコール命令に対す
る、前記第2の記憶装置へのサブルーチンからの戻り先
命令のアドレスの書き込み処理が終了しているかどうか
を検出するサブルーチンコール命令処理検出手段を備え
た ことを特徴とする第1項あるいは第2項記載のデータ処
理装置。
ージで処理を終えた全サブルーチンコール命令に対す
る、前記第2の記憶装置へのサブルーチンからの戻り先
命令のアドレスの書き込み処理が終了しているかどうか
を検出するサブルーチンコール命令処理検出手段を備え
た ことを特徴とする第1項あるいは第2項記載のデータ処
理装置。
(4)命令やデータを格納する第1の記憶装置と、 第1の記憶装置とは異なり、サブルーチンからの戻り先
命令のアドレス値の一部あるいは全部を格納するアドレ
ス記憶部と前記アドレス値が有効か無効かを示す有効ビ
ツトを格納する有効ビツト格納部を1エントリずつ組に
して1つのエントリとして格納し、2n個のエントリから
なる第2の記憶装置と、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビツト
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビツトカウンタ
と、 前記第2の記憶装置の前記第1のnビツトカウンタの値
が示すエントリから戻り先命令のアドレス値を読みだす
第1の読み出し手段と、 前記第2の記憶装置の前記第2のnビツトカウンタの値
が示すエントリの前記アドレス記憶部にサブルーチンか
らの戻り先命令のアドレスの一部または全部を書き込む
第1の書き込み手段と、 前記第2の記憶装置の前記第2のnビツトカウンタの値
が示すエントリの前記有効ビツト記憶部に有効か無効か
を示す値を書き込む有効ビツト書き込み手段と、 前記第2の記憶装置の前記有効ビツト記憶部に格納され
ている有効ビツトの値を読み出す有効ビツト読み出し手
段と、 前記第2のnビツトカウンタの値を前記第1のnビツト
カウンタに書き込む第2の書き込み手段と、前記第2の
記憶装置の全てのエントリの前記有効ビツト記憶部に無
効を示す値を書き込む有効ビツトクリア手段とを備えた ことを特徴とするデータ処理装置。
命令のアドレス値の一部あるいは全部を格納するアドレ
ス記憶部と前記アドレス値が有効か無効かを示す有効ビ
ツトを格納する有効ビツト格納部を1エントリずつ組に
して1つのエントリとして格納し、2n個のエントリから
なる第2の記憶装置と、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビツト
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビツトカウンタ
と、 前記第2の記憶装置の前記第1のnビツトカウンタの値
が示すエントリから戻り先命令のアドレス値を読みだす
第1の読み出し手段と、 前記第2の記憶装置の前記第2のnビツトカウンタの値
が示すエントリの前記アドレス記憶部にサブルーチンか
らの戻り先命令のアドレスの一部または全部を書き込む
第1の書き込み手段と、 前記第2の記憶装置の前記第2のnビツトカウンタの値
が示すエントリの前記有効ビツト記憶部に有効か無効か
を示す値を書き込む有効ビツト書き込み手段と、 前記第2の記憶装置の前記有効ビツト記憶部に格納され
ている有効ビツトの値を読み出す有効ビツト読み出し手
段と、 前記第2のnビツトカウンタの値を前記第1のnビツト
カウンタに書き込む第2の書き込み手段と、前記第2の
記憶装置の全てのエントリの前記有効ビツト記憶部に無
効を示す値を書き込む有効ビツトクリア手段とを備えた ことを特徴とするデータ処理装置。
以上のように、この発明によればサブルーチンコール命
令の戻り先アドレスのみを格納するPCスタツクを設ける
ことにより、サブルーチンリターン命令の分岐処理を命
令実行ステージでの処理に先だつて行うことができ、サ
ブルーチンリターン命令実行によるパイプライン処理の
オーバーヘツドが削減されるので、高性能なデータ処理
装置が得られる効果がある。
令の戻り先アドレスのみを格納するPCスタツクを設ける
ことにより、サブルーチンリターン命令の分岐処理を命
令実行ステージでの処理に先だつて行うことができ、サ
ブルーチンリターン命令実行によるパイプライン処理の
オーバーヘツドが削減されるので、高性能なデータ処理
装置が得られる効果がある。
第1図はこの発明のデータ処理装置のパイプライン処理
構成を示す図、第2図はこの発明のデータ処理装置のブ
ロツク図、第3図はこの発明のデータ処理装置における
サブルーチンリターン命令の先行分岐処理に特に関係す
る部分のブロツク図、第4図はこの発明のPCスタツク
(46)の構成を示す図、第5図はこの発明のデータ処理
装置におけるサブルーチンコール命令及びサブルーチン
リターン命令のビツト割り付けを示す図、第6図はBSR
命令実行のフローチヤート、第7図はRTS命令実行のフ
ローチヤート、第8図は従来のデータ処理装置の典型的
なパイプラインステージを示す図である。 (46)はサブルーチンコール命令の戻り先アドレスのみ
を格納するPCスタツク、(46A)はPCスタツク(46)に
おいてサブルーチンコール時の戻り先アドレスを登録す
る戻り先アドレスフイールド、(46B)はPCスタツク(4
6)中の各エントリに格納されている戻り先アドレスが
有効か無効かを示す有効ビツト、(65)は命令デコード
ステージ以降のステージで処理されているサブルーチン
コール命令の数をカウントするBSRカウンタ、(66)は
命令デコードステージが管理しているPCスタツク(46)
のポインタDP、(67)は命令実行ステージが管理してい
るPCスタツク(46)のポインタEPである。 なお、図中、同一符号は同一、又は相当部分を示す。
構成を示す図、第2図はこの発明のデータ処理装置のブ
ロツク図、第3図はこの発明のデータ処理装置における
サブルーチンリターン命令の先行分岐処理に特に関係す
る部分のブロツク図、第4図はこの発明のPCスタツク
(46)の構成を示す図、第5図はこの発明のデータ処理
装置におけるサブルーチンコール命令及びサブルーチン
リターン命令のビツト割り付けを示す図、第6図はBSR
命令実行のフローチヤート、第7図はRTS命令実行のフ
ローチヤート、第8図は従来のデータ処理装置の典型的
なパイプラインステージを示す図である。 (46)はサブルーチンコール命令の戻り先アドレスのみ
を格納するPCスタツク、(46A)はPCスタツク(46)に
おいてサブルーチンコール時の戻り先アドレスを登録す
る戻り先アドレスフイールド、(46B)はPCスタツク(4
6)中の各エントリに格納されている戻り先アドレスが
有効か無効かを示す有効ビツト、(65)は命令デコード
ステージ以降のステージで処理されているサブルーチン
コール命令の数をカウントするBSRカウンタ、(66)は
命令デコードステージが管理しているPCスタツク(46)
のポインタDP、(67)は命令実行ステージが管理してい
るPCスタツク(46)のポインタEPである。 なお、図中、同一符号は同一、又は相当部分を示す。
Claims (2)
- 【請求項1】第1のステージと第2のステージをもち、
命令の実行に対して第1のステージでの処理が第2のス
テージでの処理に先行して行われるパイプライン処理に
より命令を処理するデータ処理装置であって、 命令やデータを格納する第1の記憶装置と、 サブルーチンからの戻り先命令のアドレス値を1つまた
は複数個格納するアドレス記憶部と、前記アドレス記憶
部に格納されている各戻り先アドレスの値が有効か無効
かを示す有効ビットをサブルーチンからの戻り先アドレ
スと組にして格納する有効ビット記憶部とを含む第1の
記憶装置とは異なる第2の記憶装置と、 サブルーチンからの戻り先アドレスとなる値を前記第1
の記憶装置に書き込む第1の書き込み手段と、 サブルーチンからの戻り先アドレスとなる値を前記第2
の記憶装置の前記戻り先アドレス記憶部に書き込む第2
の書き込み手段と、 前記第1のステージで制御され、第1の値を前記第2の
記憶装置から読み出す第1の読み出し手段と、 サブルーチンリターン命令処理時に、サブルーチンから
の戻り先アドレスとなる第2の値を前記第1の記憶装置
から読み出す第2の読み出し手段と、 サブルーチンコール命令処理時に、前記第2の記憶装置
の前記有効ビット記憶部に有効を示す値を書き込む有効
ビット書き込み手段と、 サブルーチンリターン命令処理時に、前記第2の記憶装
置の前記有効ビット記憶部に無効を示す値を書き込む有
効ビットクリア手段と、 サブルーチンリターン命令処理時に、前記第2の記憶装
置の前記有効ビット記憶部に格納されている前記有効ビ
ットを読み出す有効ビット読み出し手段と、 前記第1の記憶装置から命令をフェッチする命令フェッ
チ手段とを備え、 前記命令フェッチ手段が、前記第1の記憶装置の前記第
1の値の示すアドレスから第1の命令をフェッチする機
能と、前記第1の記憶装置の前記第2の値の示すアドレ
スから第2の命令をフェッチする機能を備え、 サブルーチンリターン命令処理時に、 前記有効ビット読み出し手段により読み出された有効ビ
ットの値が有効を示すときは、前記第1の命令を実行
し、 前記有効ビット読み出し手段により読み出された有効ビ
ットの値が無効を示すときは、前記第2の命令を実行す
ることを特徴とする、データ処理装置。 - 【請求項2】命令やデータを格納する第1の記憶装置
と、 前記第1の記憶装置とは異なり、サブルーチンからの戻
り先命令のアドレス値の一部あるいは全部を格納するア
ドレス記憶部と前記アドレス記憶部に格納されている戻
り先アドレスの値が有効か無効かを示す有効ビットを格
納する有効ビット記憶部を1エントリずつ組にして1つ
のエントリとして格納し、2n個のエントリからなる第2
の記憶装置と、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1のnビット
カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタ
と、 前記第2の記憶装置の前記第1のnビットカウンタの値
が示すエントリから戻り先命令のアドレス値を読み出す
第1の読み出し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリの前記アドレス記憶部にサブルーチンか
らの戻り先命令のアドレスの一部または全部を書き込む
第1の書き込み手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリの前記有効ビット記憶部に有効か無効か
を示す値を書き込む有効ビット書き込み手段と、 前記第2の記憶装置の前記有効ビット記憶部に格納され
ている有効ビットの値を読み出す有効ビット読み出し手
段と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第2の書き込み手段と、 前記第2の記憶装置の全てのエントリの前記有効ビット
記憶部に無効を示す値を書き込む有効ビットクリア手段
とを備えた、データ処理装置。
Priority Applications (8)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63086704A JPH0769814B2 (ja) | 1988-04-07 | 1988-04-07 | パイプライン処理機構を持つデータ処理装置 |
| 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 |
|---|---|---|---|
| JP63086704A JPH0769814B2 (ja) | 1988-04-07 | 1988-04-07 | パイプライン処理機構を持つデータ処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH01258032A JPH01258032A (ja) | 1989-10-16 |
| JPH0769814B2 true JPH0769814B2 (ja) | 1995-07-31 |
Family
ID=13894319
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63086704A Expired - Fee Related JPH0769814B2 (ja) | 1988-03-01 | 1988-04-07 | パイプライン処理機構を持つデータ処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0769814B2 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2045791A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Branch performance in high speed processor |
| JP4286768B2 (ja) | 2004-11-30 | 2009-07-01 | 富士通株式会社 | 分岐予測装置およびその制御方法 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5991551A (ja) * | 1982-11-17 | 1984-05-26 | Nec Corp | 分岐先アドレス予測を行なう命令先取り装置 |
| JPS62285140A (ja) * | 1986-06-04 | 1987-12-11 | Hitachi Ltd | 情報処理装置 |
-
1988
- 1988-04-07 JP JP63086704A patent/JPH0769814B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH01258032A (ja) | 1989-10-16 |
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 | |
| CA1323938C (en) | Control of multiple function units with parallel operation in a microcoded execution unit | |
| US6073215A (en) | Data processing system having a data prefetch mechanism and method therefor | |
| US6119203A (en) | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system | |
| JP2761688B2 (ja) | データ処理装置 | |
| JP3055980B2 (ja) | マルチプロセッサ又はパイプラインプロセッサシステムにおいてデータの完全性を確保する方法 | |
| US5717946A (en) | Data processor | |
| JP3543181B2 (ja) | データ処理装置 | |
| JP2507638B2 (ja) | デ―タ処理装置 | |
| US5502827A (en) | Pipelined data processor for floating point and integer operation with exception handling | |
| JPH06119166A (ja) | 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法 | |
| JPH081599B2 (ja) | データ処理装置 | |
| JPH0766324B2 (ja) | データ処理装置 | |
| KR100385495B1 (ko) | 워드정렬브랜치타겟을가지는처리시스템 | |
| US20040064684A1 (en) | System and method for selectively updating pointers used in conditionally executed load/store with update instructions | |
| JPH01214932A (ja) | データ処理装置 | |
| JPH07120278B2 (ja) | データ処理装置 | |
| JPH07120284B2 (ja) | データ処理装置 | |
| JP3345787B2 (ja) | データ処理装置 | |
| EP1190305B1 (en) | Method and apparatus for jump delay slot control in a pipelined processor | |
| US5212779A (en) | System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction | |
| EP1190303B1 (en) | Method and apparatus for jump control in a pipelined processor | |
| US6016544A (en) | Apparatus and method for tracking changes in address size and for different size retranslate second instruction with an indicator from address size | |
| JPH0769814B2 (ja) | パイプライン処理機構を持つデータ処理装置 | |
| JPH10124312A (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 |