JPH01258032A - パイプライン処理機構を持つデータ処理装置 - Google Patents

パイプライン処理機構を持つデータ処理装置

Info

Publication number
JPH01258032A
JPH01258032A JP63086704A JP8670488A JPH01258032A JP H01258032 A JPH01258032 A JP H01258032A JP 63086704 A JP63086704 A JP 63086704A JP 8670488 A JP8670488 A JP 8670488A JP H01258032 A JPH01258032 A JP H01258032A
Authority
JP
Japan
Prior art keywords
instruction
stage
address
value
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
Application number
JP63086704A
Other languages
English (en)
Other versions
JPH0769814B2 (ja
Inventor
Masahito Matsuo
雅仁 松尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to JP63086704A priority Critical patent/JPH0769814B2/ja
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to US07/317,253 priority patent/US5193205A/en
Publication of JPH01258032A publication Critical patent/JPH01258032A/ja
Priority to US07/953,414 priority patent/US5355459A/en
Priority to US08/181,353 priority patent/US5526498A/en
Publication of JPH0769814B2 publication Critical patent/JPH0769814B2/ja
Priority to US08/657,710 priority patent/US5701449A/en
Priority to US08/996,787 priority patent/US5978904A/en
Priority to US09/359,843 priority patent/US6151673A/en
Priority to US09/602,830 priority patent/US6408385B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野] この発明は、高度なパイプライン処理機構により高い処
理能力を実現したデータ処理装置に関すルモのでアシ、
特に、サブル−チンリターン命令に関しても、パイプラ
イン処理の初期の段階で戻り先アドレヌへの先行分岐処
理が可能なデータ処理装置に関するものである。
〔従来の技術J 第8図は従来のデータ処理装置の典型的なパイプライン
ステージを示す図であシ、図において、(1)は命令フ
ェッチステージ、(2)は命令デコードスデージ、(3
)はアドレス計算ステージ、(4)はオペランドフェッ
チステージ、(5)は実行ステージ、(8)ハオペラン
ドライトステージでアル。
次に動作について説明する。第8図に示したデータ処理
装置は、バスが空いている時間を利用して命令データの
取シ込みを行う命令フェッチステージ(1)、命令デー
タの解析を行う命令デコードステージ(2)、オペラン
ド等のアドレス計算を行うアドレス計算ステージ(3)
、オペランドデータのフェッチを行うオペランドフェッ
チステージ(4)、データの処理を行う実行ステージ(
5)、オペランドデータの書キ込みを行うオペフンドラ
イドステージ(8)の6段のパイプラインステージで構
成されてお)、各ステージは異なる命令を同時に処理す
ることが可能である。ただしオペランドやメモリアクセ
スに関してコンフリクトが起こったような場合には優先
度の低いステージがコンフリクトが解消されるまで処理
を一時停止する。
以上のように、パイプライン化されたデータ処理装置で
は、データの処理の流れに従って処理を複数のステージ
に分割し、各ステージを同時に動作させることによ9%
 l命令に必要な平均処理時間を短縮させて全体として
の性能を向上させている。
ところが、このようにパイプライン化されたデータ処理
装置において、分岐命令等の命令の流れを乱す命令が実
行ステージ(5)で実行された場合には、それよシ前の
ステージで行われていた処理がすべてキャンセμされ、
次に実行される命令は命令の7エツチから行わなければ
ないOこのように、処理の流れを乱す命令が実行される
と、パイプライン処理のオーバーヘッドが大きくなp、
データ処理装置の実行速度が上がらない。データ処理装
置の性能向上のため、無条件分岐命令、条件分岐命令等
の命令実行に関するオーバーヘッド削減について様々な
工夫がなされてきた。例えば、分岐命令のアドレスと分
岐先のアドレスを組にして記憶しておくブランチターゲ
ットバッファというものを用いて、命令フェッチの段階
で命令の流れを予測し、処理を行っている。(、T、 
IK、 F、 Lee aDdんJ、 Sm1th、 
”Branch Prediction Strate
gies andBranch Target Buf
fer Design、”IEEE COMPUTER
Vol、 17. No、 l、 January 1
984. pp、 6−22.参照)以上のように、パ
イプライン処理の初期の段階で処理の流れを予測し、次
に実行されると予測される命令をパイプラインに流す(
以下先行分岐処理と呼ぶ)ことにより分岐命令実行時の
オーバーヘッド削減が計られている。ところが、サブル
−チンからのリターン命令に関してはサブルーチンから
のリターンアドレスが、対応するサブルー六ンコーμ命
令のアドレスに依存するため、処理の流れを予測するこ
とが困難であった。
〔発明が解決しようとする課題」 従来のデータ処理装置は、以上で述べたように、サブμ
m六ンからのリターン命令に対してサブルーチンカラの
リターンアドレスが対応するサグ/l/−fンコー〃命
会のアドレスに依存するため、処理の流れを予測する有
効な手段がなかった。
この発明は上記のような問題点を解消するためKなされ
たもので、サブルーチンリターン命令に関しても、パイ
プライン処理の初期の段階で戻り先アドレスへの先行分
岐処理が可能なデ−タ処理装置を得ることを目的とする
〔課題を解決するための手段J この発明に係るデータ処理装置は、サグμmチンコール
命令のリターンアドレスのみを格納するプログラムカウ
ンタ(PC)専用のスタックメモリ(以下PCスタック
と呼ぶ)を備えたものである。
〔作用] この発明におけるデータ地理装置は、実行ステージでサ
ブル−をンコーp命令実行時にサグフレー六ンからのリ
ターンアドレスがPCスタックにデツンユされ、分食テ
゛コードステージでサグル−チンリターン命令デコード
時にPCスタックからポツプされたアドレスに先行分岐
処理を行う。
〔実施例] (1)パイプライン機構 この発明のデータ処理装置のパイプライン処理は第1図
に示す構成となる。命令のブリフェッチt−ffつ命−
f)フェッチステージ(工Fステージ(1) )、1段
目の命令のデコードを行うデコードステージ(Dステー
ジ(2) ) 、2段目の命令のデコードとオペランド
のアドレス計算を行うオペフンドアドレス計算ステージ
(Aステージ(3))、マイクロROMのアクセス(特
にRステージ(6)ト呼ぶ)とオペランドのグリフエラ
5F″(特にOFステージ(7)ト呼ぶ)ヲ行うオペラ
ンドフェッチステージ(Fステージ(4) ) 、命令
の実行を行う実行ステージ(Eステージ(5))の5段
構成をパイプライン処理の基本とする。Eステージ(5
)では1段のストアバッファがあるほか、高機能命令の
一部は命−i)実行自体をパイグライン化するため、実
際には5段以上のパイプライン処理効果がある。
各ステージは他のステージとは独立に動作し、論理上は
5つのステージが完全に独立動作する。
各ステージは1回の処理を最小2クロックで行うことが
できる。従って理想的には2クロツクごとに次々とパイ
プライン処理が進行する。
この発明のテ゛−タ処理装置にはメモリーメモリ間演算
や、メモリ間接アドレッシングなど、基本パイプライン
処理1回だけでは処理が行えない命令があるが、本発明
のデータ処理装置はこれらの処理に対してもなるべく均
衡したパイプライン処理が行えるように設計されている
。複数のメモリオペランドをもつ命令に対してはメモリ
オペランドの数をもとに、デコード段階で複数のパイプ
ライン処理単位(ステップコード)に分解してバイプラ
イン処理を行うのである。パイプライン処理単位の分解
方法に関しては特願昭61−236456で詳しく述べ
られている。
IP’ステージ(1)からDステージ(2)に渡される
情報は命令コード(11)そのものである。Dステージ
(2)からAステージ(3)に渡される情報は命令で指
定された演算に関するもの(Dコード(12)と呼ぶ)
と、オペランドのアドレス計算に関係するもの(Aコー
ド(13)と呼ぶ)との2つある。Aステージ(3)か
らFステージ(4)に渡される情報はマイクログログヲ
ム/l/−fンのエントリ番地やマイクロプログツムへ
のバフメータなどを含むRコード(14) ト、オペラ
ンドのアドレスとアクセス方法指示情報などを含むFコ
ード(15)との2つである。Fステージ(4)からE
ステージ(5)に渡される情報は演算制御情報とリテラ
ルなどを含むEコード(16)と、オペランドやオペフ
ンドアドレスなどを含trsコード;17)との2つで
ある。
(1,1)各パイプラインステージの処理(1,1,1
)命令フェッチステージ 命令フェッチステージ(IFステージ(1) )は外部
メモリから命令をフェッチし、命令キューに入力して、
Dステージ(2)に対して命令コード(11)を出力す
る。
命令キューの入力は整置された4バイト単位で行う。メ
モリから命令をフェッチするときは整置された4バイト
につき最小2クロックを要する。
プフンtバッファがヒツトした時は整置された4バイト
につきlクロックでフェッチ可能である。
命令キューの出力単位は2バイトごとに可変であシ、2
クロツクの間に最大6バイトまで出力できる。また分岐
の直後には命令キューをバイパスして命令基本部2バイ
トを直接命令デコーダに転送することもできる。
ブリフェッチ先命令アドレスの管理4工Fステージ(1
)で行う。次にフェッチすべき命令のアドレスは命令キ
ューに入力すべき命令のアドレスとして専用のカウンタ
で計算される。分岐やジャンプが起きたときには、新た
な命令のアドレスが、PC演算部やデータ演算部よシ転
送されてくる。
(1,1,2)命令デコードステージ 命令デコードステージ(Dステージ(2))はIFステ
ージ(1)から入力された命令コード(11)をデコー
ドする。命令コードは16ビツト(ハーフワード)単位
となっている。デコードは2クロック単位に1度行ない
、1回のデコード処理で0〜3ハーフワードの命令コー
ドを消費する。とのDステージ(2)で命令コードがパ
イプライン処理単位であるステップコードに分解される
。すなわち、l命令が1つないし複数のステップコード
に分解されて、後段のパイプラインステージで処理され
ていくのである。Dステージ(2)ではステップコード
としてAステージ(3)に対してアドレス計算情報であ
るAコード(13)と、オペコードの中間デコード結果
であるDコード(12)とを出力する。
Dステージ(2)ではPC演算部の制御、分岐予測処理
、プリブランチ命令に対する先行分岐処理(グリプフン
t)、命令キューからの命令コード出力制御等も行う。
プリブランチ処理とは、Eステージ(5)での分岐処理
に先立ち、無条件分岐合弁、条件分岐命令等の分岐を予
測し、PC演算部で飛び先の番地を計算し、IFステー
ジ(1)に飛び先の命令をフェッチさせ、飛び先の命令
をパイプラインに流すことである。グリブランチ命令と
は、グリプフンを処理を行う命令である。
(1,1,3)オペランドアドレス計算ステージオペラ
ンドアドレス計算ステージ(Aステージ(3))は処理
が大きく2つに分かれる。1つはオペコードの後段デコ
ードを行う処理で、も戻りつはオペランドのアドレスの
計算を行うも理である。
オペコードの後段デコード処理はDコード(12)を入
力とし、レジスタやメモリの書き込み予約及びマイクロ
ブログツムのエントリ番地とマイクロプログラムに対す
るバフメータなどを含むRコード(14)の出力を行9
゜なお、レジスタやメモリの簀き込み予約は、アドレス
計算で参照したレジスタやメモリの内容が、パイプライ
ン上を先行する命令で書き換えられ、誤ったアドレス計
算が行われるのを防ぐためのものである。レジスタやメ
モリの書き込み予約はデッドロックを避けるため、ステ
ップコードごとに行うのではなく命令ごとに行う。レジ
スタやメモリの書き込み予約については特願昭62−1
44394で詳しく述べられている。
オペランドアドレス計算処理はAコード(13)全入力
とし、Aコード(13)に従いオペランドアドレス計算
部で加算やメモリ間接参照を組み合わせてアドレス計算
前い、その計算結果をFコード(15)として出力する
。この際、アドレス計算に伴うレジスタやメモリの読み
出し時にコンフリクトtニックを行い、先行命令がレジ
スタやメモリに書き込み処理を終了していないためコン
フリクトが指示されれば、先行命令がEステージ(5)
で書き込み地理を終了するまで待つ。
また、Aステージ(3)ではスタックからのポツプ操作
、スタックへのブツシュ操作等によるスタックポインタ
(sp)のコンフリクトを防ぐため、実行ステージ(5
)の8Pに先行してAステージスタックポインタ(AS
F)を備えてお)、ポツプ、ブツシュ操作に伴うASF
の更新はこのステージで行われる。従って、通常のポツ
プ、ブツシュ操作直後でもASFを参照することにより
、SPのコンフリクトでステップコードの処理を遅らせ
ることなく処理を進めることができる。SPの管理方法
に関しては特願昭62−145852で詳しく述べられ
ている。
(1,1,4)マイクロ10Mアク も処理が大きく2つに分かれる。1つはマイクロROM
C)アクセス処理であシ、特にRステージ(6)と呼ぶ
。他方はオペランドプリフェッチ処理であシ、特にor
ステージ(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アクセスが次々1わ
れることか多い。
( 1.1.5 )オペランドフェッチステージオペラ
ンドフェッチステージ(OFステージ(7))はFステ
ージ(4)で行う上記の2つの処理のうちオペランドプ
リフェッチ処理を行う。
オベフンドプリフィツtはFコード(15)を入力とし
、フィンfLftオペランドとそのアドレスをSコード
(17)として出力する。1つのFコード(15)では
ワード境界をまたいでもよいが4バイト以下のオペフン
ドアエッチを指定する。Fコード(15)にはオペラン
ドのアクセスを行うかどうかの指定も含まれておシ、A
ステージ(3)で計算したオペランドアドレス自体や即
[をEステージ(5) K 4i送する場合にはオペフ
ンドプリフィッtは行わず、Fコード(15)の内容を
Sコード(17)として転送する。また、グリフエッチ
しようとするオペランドとEステージ(5)が書き込み
処理を行おうとするオペランドとが包含関係を満たすと
きには、オペフンドグリフエッチに関してメモリアクセ
スは行わず、Eステージ(5)が書き込もうとする値を
バイパスする。
(1.1.6)実行ステージ 実行ステージ(Eステージ(5))はEコード(16)
、8コード(17)を入力として、各種演算器を用いた
データの処理、データのリード、ライト等の処埋を行う
。演算器としてはALU、バレルシフタ、グフイオリテ
イエンコーダやカウンタ、シフトレジスタなどがある。
Eステージ(5)はマイクロプログラムにより制御され
、Rコード(16)に示されたマイクロプログラムのエ
ントリ番地からの一連のマイクロプログラムを実行する
ことにより命令を実行する。レジスタと主な演算器の間
は3バスで結合されておシ、1つのレジヌタ間演箕を指
示する1マイクロ命令を2クロツクサイクμで処理す°
る。
このEステージ(5)が命令を実行するステージあシ、
Fステージ(4)以前にステージで行われた処理ハスべ
てEステージ(5)のための前処理である。Eステージ
(5)で分岐が起こると、より’ステージ(1)〜Fス
テージ(4)までの処理はすべて無効化され、飛び先番
地が命令フェッチ部とpc計算部に出力される。
Eステージ(5)ではデータ演算部(56)にあるスト
アバッファt−利用して、4バイト以内のオペランドス
トアと次のマイクロ命4?実行をパイプライン処理する
こともできる。
Eステージ(5)ではAステージ(3)で行ったレジス
タやメモリに対する書き込み予約をオペランドの書き込
みの後、解除する。
また条件分岐命令がEステージ(5)で分岐を起こした
ときはその条件分岐命令に対する分岐予測が誤っていた
ことを示しておシ分岐履歴の書換えも理を行う。
(1,2)プログラムカウンタの管理 この発明のデータ処理装置のパイプライン上に存在する
ステップコードはすべて別命令に対するものである可能
性があシ、プログラムカウンタの値はステップコードご
とに管理する。すべてのステップコードはそのステップ
コードのもとになった命令のプログラムカウンタ値をも
つ。ステップコードに付属してバイグラインの各ステー
ジヲ流れるプログラムカウンタ値はステップグログラム
カウンタ(SPC)と呼ぶ。SPCはパイプラインステ
ージを次々と受は渡されていく。
(2)サグ/l/−fンリターン命令の先行分岐処理こ
の発明のデータ処理装置は実行ステージでのサブルーチ
ンリターン命令の実行によるパイプラインの乱れを抑え
るために、サブルーチンリターン命令の実行に関しては
命令デコードステージ(Dステージ(2))で先行分岐
処理を行う。以下、詳細な動作を説明する。
第2図は、この発明のデータあ理装置のブロック図であ
シ、サグル−tンコー、V命令、サブルーチンリターン
命令の処理を説明するために必要な部分だけが抜き出さ
れて説明されている。図において、(21)は命令キュ
ー、(22)は命令デコード部、(23)は外部とデー
タのやjlJ)を行うデータ入出力回路、(24)は外
部にアドレスの出力を行うアドレス出力回路、(25)
は命令フエツチを行うアドレスを出力するためのカウン
タ(qxnpc )、(26)は各ステップコード生成
毎に命令デコード部(22)で処理された命令長を格納
するフッf(工L)、(27)はプリブランチのための
PCに対する変位を格納するためのヲツf(FD)、(
30)はPC演算部(54)での加算を行うためのPC
加算器、(28) 、 (29) 、(31)はそれぞ
れPC加算器(30)の入出力フッ+Cph、FB、P
O)、(32)はステップコード処理毎のテンポフリな
PCを格納するためのレジスタ(TPO)、(33)は
現在デコード中の命令のpcを格納するためのDステー
ジPC(DPC)、(34)はアドレス計算中のステッ
プコードに対応するPCを格納するためのAステージP
C(APC)、(38)はアドレス計算のための3値加
算を行うアドレス加算器、(35) 、(36) 、 
(37) 、 (39)はそれぞれアドレス加算器(3
8)の入出力フッf (A工、 AD、 AB、 AO
)、(40)はAステージ(3)でインクリメントやデ
クリメントを行いSPの管理を行うAステージスタック
ポインタ(ASP)、(41)はFコード(15)とし
てのアドレスを格納するためのFコードアドレスレジス
タ(FA)、(42)はSコード(17)としてのアド
レスを格納するためのSコードアドレスレジスタ、(4
3)は命令フェッチを行うアドレスを一時的に配憶する
ためのCAアドレスレジスタ(CAA )、(44)は
Eステージ(5)で管理しているアドレスレジスタ(A
 A ) 、(+5)ハEステージ(5)での分岐先ア
ドレスを格納するためのEステージブランチアドレスレ
ジスタ(EB)、(46)はサブルーチンコール時の戻
り先アドレスのみを格納してお(PCスタック、(47
)はスタックポインタ、フレームポインタ、ワーキング
レジスタ等ヲ含むレジスタファイル、(50)はデータ
演算のためのA L U 、 (48)、(49)、(
戻り)はA L U (50)の入出力ラッチ(DA、
 DB、 Do )、(52)はSコード(17)とし
てのデータを格納するためのSコードデータレジスタ(
SD)、(53)はEステージ(5)で行うメモリアク
セスに関するデータを格納するデータレジスタ(DD)
であシ、(101)〜(110)はそれぞれ内部でデー
タやアドレスの転送を行うための内部パス(Slバス、
S2バス、DOババスAバ/C,AOパヌ、D工spバ
ス、poババス CAパス、AAパス、DDパス)であ
る。(54)はPC演算部、(55)はアドレス計算部
である。
第3図は、この発明のテ°−タ処理装置におけるサブ、
11/−fンリターン命令の先行分岐処理に特に関係す
る部分のブロック図である。図において、(61)はD
ステージ制御部、(62)は工Fステージ制御部、(6
3)はEステージ制御部、(65)はパイプライン処理
途中のサブルーチンコール命会の数をカウントするため
の3ビツトのカウンタであるBSRカウンタ、(66)
はDステージ(2)が管理している3ビツトのpcスタ
ックポインタ(DP)、(67)はEステージ(5)が
管理している3ビツトのPCスタックポインタ(EP)
、(68)、  (69)はそれぞれD P (66)
、E P (67)をデコードするデコーダ、(70)
はANDゲート、(71)は有効ビット制御信号ヲッt
であシ、(2n1)〜(214)は各部の制御信号であ
る。この図では、簡単のためタイミングを制御するため
のクロック信号は省略しである。
第4図は、PCスタック(46)の構成を示す図であシ
、図において、(46A)はIND先アドレスを格納す
る戻り先アドレスフィールド、(46B)は各エントリ
内に格納されている戻り先アドレスが有効か無効かを示
す有効ビットである。
本実施例では、]?Cスタック(46)は8エントリで
構成されている。また、命令コードが16ピツト単位と
なっているので、PCとしては奇数アドレスは存在せず
、戻り先アドレスフィールドハ31ピットになっている
。PCスタック(46)から、戻り先アドレスが読み出
される場合には、最下位ビットは′0′として出力され
る。D P (66) 、  I P (67)は3ビ
ツトとなっているが、インクリメント時の最上位ビット
からのキャリー、デクリメント時の最上位ビットへのボ
ローは無視される。すなわち、PCスタック(46)は
、ポインタ’ooo’とポインタ″ill’の指し示す
エントリが隣合ったリング状のスタックメモリとして取
シ扱われている。
(2,1)PCスタックの動作の概要 この発明のデータ処理装置では、サブルーチンコール命
令としてプフンチサグp−チン(BAR)命令とジャン
プサブルーチン(、TSR)命令がある。また、サブル
ーチンリターン命令としては、リターンサブルーチン(
RTS)命令と高機能命令として高級言語用サブμ−を
ンリターンとバフメータ解放を一度に行うEXITD命
令がある。
サブμmtンコー〃命令が実行されると、Eステージ(
5)でサブ/I/−5’−ンからの戻り先アドレスがP
Cスタック(46)にブツシュされる。サブp−チンリ
ターン命令がデコードされると、Dステージ(2)でP
Cスタック(46)のスタックトップにあるアドレスに
先行分岐処理(プリリターン)を行う。
Eステージ(5)では、Dステージ(2)でのプリリタ
ーン処理が正しかったかどうかがチエツクされ、プリリ
ターンを行ったアドレスが誤っていた場合には、真の戻
り先アドレスへの分岐処理を行う。
ポインタD P (66)、E P (66)等の更新
も含めて以下で詳しく説明する。ただし、有効ビット制
御信号ヲツf (71)の値はl′とする。
リセットされた状囚では、PCスタック(46)初期化
信号(工N工T信号(2ng) )により、BSRカウ
ンタ(65)、I P (67)はゼロクリアされ、D
 P (66)KはゼロになっているE p (67)
の値がコピーされる。また、PCスタック(46)中の
有効ピッに46B )はすべて′0′にクリアされる。
まず、命令キュー(21)から取シ込まれた命令コード
(11)が命令デコード部(22)でデコードされ&グ
コードの結果、取シ込まれた命令がサブルーチンコール
命令であった場合にはDPDEC信号(2n2)によ、
9DPのデクリメントを行うと共に、BSRカウンタ(
65)をカウントアツプする。アドレス計算ステージ(
3)では、アドレス加算器(38)により戻り先アドレ
スが計算されてAOパス(105)を介してFAレジス
タ(41)に転送される。Fステージ(4)では、FA
レジヌタ(41)の値がSAレジスタ(42)に転送さ
れる。サブ/に−fチンール命令がEステージ(5)で
実行されるとEPDEC信t(2n6)によりEP(6
7)の値がプリデクリメントされる。そして、pcスタ
ツク(46)中のPCWR工TE信号(210)により
更新されたE p (67)が指すエントリの戻り先ア
ドレスフィールド(46A)に、81バス(101)を
介してSAレジスタ(42)に格納されて込る戻り誉地
の値が書き込まれ、そのエントリの有効ピッ)(46B
)が111にセットされる。また、BSRCDEC信号
(2n5)によりBSRカウンタ(65)をデクリメン
トする。BSR命令では、Dステージ(2)でサブルー
チンの先頭番地への分岐処理を行うので、Eステージ(
5)で分岐処理を行う必要はない。
次ニ、サブルーチンリターン命令の処理について説明す
る。命令キュー(21)から取シ込まれた命令がサブル
ーチンリターン命令であったときにはBSRカウンタ(
65)の値がゼロであるかどうかを示すBSRCZ信号
(2n1)のチエツクを行う。もしBSRカウンタ(6
5)がゼロでなかったら、BSRカウンタ(65)の値
がゼロになるまでDステージ(2)は処理を一時停止す
る。BARカウンタ(65)がゼロでないということは
、まだ対応するサグμmチンコール命弁がEステージ(
5)で実行されずにパイプライン中にあることを示して
おfi、pcスタツク(46)に対応する戻り番地が登
録されていないことを示している。BSRCZ信号(2
n1)により、BSRカウンタ(65) O[がゼロで
ある、あるいは、ゼロになったことが示されると、Dス
テージ制御部(61)はPRERET信号(2n9)に
より、IFステージ制御部(62)及びpcスタツク(
46)にプリリターン処理を行うことを知らせる。pc
スタック(46)は、D P (66)が指し示して込
るエントリの医シ先アドレスフィーμド(46A)の内
容をCAパス(108)に出力する。IFステージ制御
部(62)は、命令キュー(21)に取シ込まれている
命令データをすべて無効化し、OAババス出力された値
で戻り先アドレスの命令のフェッチを行い、取り込まれ
た命令データを命令デコード部(22)に送る。pcス
タツク(46)の内容がCAパス(108)に出力され
た後に、DP工NC信号(2n3)によりD P (6
6)がポストインクリメントされる。VREAD信号(
211)によりpcスタック(46)中のE P (6
7)が指し示すエントリの有効ビット(46B)の内容
が、VALID信号(214)としてEステージ制御部
(63)に送られる。読み出されたエントリの有効ビッ
ト(46B)は、lotにクリアされる。
Eステージ制御部(63)では、もしVALID信号(
214)がIllであったなら、プリリターンが正しか
つたことを示しているので、サブルーチンリターン命令
の実行を終了する。もしVALID信号(214)がO
°であった場合には、グリリターンを行った戻り先アド
レスが誤っていたことを示している。
このとき、真の戻り先アドレスの値をメモリからDDレ
ジスタ(53)に取シ込み、S1バス(101)を介し
てEBレジヌタ(45)に転送した後、EBレジスタ(
45)の値をCAババス108)に出力する。工1i’
ステージ(1)はCAパス(108)に出力された値に
より命令フェッチを行う。
pcスタツク(46)中の有効ビット(46B)は、サ
ブルー千ンコーμ時の戻り先アドレスを登録したときI
llにセットされ、サブルーチンリターン時に有効ピッ
) (46B)が読み出された後で°O°にクリアされ
る。すなわち、pcスタツク中の有効ビット(46B)
がIllのエントリには、正しいib先アドレスが登録
されている。
サブルーチンリターン命令裏打時に、Eステージ(5)
では、Dステージ(2)でプリリターンを行ったib先
アドレスが正しかったかどうかのチエツクを行っている
。これは、pcスタツク(46) カ8 、r−ントリ
で構成されているため、サブルーチンコーμが9レベル
以上の入れ子になった場合には8レベルよル上のレベル
のサブ/l/−fンコー〃に関する戻り先アドレスのデ
ータがオーバーライトサレて壊されてしまう。このよう
な場合に備え、Eステージ(5)ではプリリターンが正
しく実行されたかどうかのチエツクを行っているのであ
る。一番深くなったところから8レベル以上PCスタッ
ク(46)がリード(サブルーチンリターン)されると
、PCスタック(46)中の有効ビット(46]3)は
すべてlotとなυ、有効なib先アドレスが格納され
ていないことを示す。しかし、サブルーチンレベルが一
番深くな′つたところから8レベルのサブ)V −チン
コールに関してはいつも正しい値がPCスタック(46
)に格納されているので、プリリターンが正しく行われ
る確率は非常に高い。
先に述べたBSRカウンタ(65)は、ブリブフンtを
行うBSR命令直後でも、正確なプリリターンを行い、
Eステージ(5)での比較を確実に行うために備えられ
ている。この機能がないと、BSR命弁が処理中であシ
、Dステージ(2)での処理は終了したが、Eステージ
(5)でまだ医シ先アドレスの値がPCスタック(46
)に書き込まれていないうちに、Dステージ(2)でサ
ブμ−をンリターン命令が実行された場合、対応するサ
ブ/L/ −fンリターン命令のMD先アドレスが登録
されていないため、誤った戻り先アドレスにプリリター
ン処理を行ってしまう。ところが、サブルーチンリター
ン命6がEステージ(5)で処理される段階では、先行
していたBSR命令がすでに処理されておシ、PCスタ
ツク(46)には正しい災υ先アドレスが登録されてい
るため、Eステージ(5)で有効ビット(46B)を参
照した際VALID信号(214)は°l’ (有効)
を示し、プリリターンが正しかったとして処理されてし
まう。すなわち、このような場合誤動作を行ってしまう
わけである。BSRカウンタの機能を備えることにより
、参照すべき戻り先アドレスの値が先行するBSR命令
により登録された後に、プリリターンが行われる。また
、BSR命令の実行に際し、Dステージ(2)でPCス
タック(46)が参照されてからEステージ(5)で処
理されるまでPCスタック(46)が書き換えられるこ
とがないので、Dステージ(2)で戻り先ナトレスが読
み出されたPCスタツク(46)中の二ントリに対応す
る有効ビット(46B)がEステージ(5)において正
しく参照される。
プリプヲンチを行わない、TSR命令では、Eステージ
(5)において分岐先アドレスへの分岐処理が行われる
ため、もし、R’I’S命令がが、TSR命令で登録さ
れる前のPCスタック(46)を参照してプリリターン
しても、そのR’l’S命令自体が実行される前にバイ
グフィンはキャンセルされるので、このようなことは起
こらない。BSR命令に関してブリプヲンチ処理を行わ
ない場合も同様である。
以上で述べたように、サブルーtンコーμ時の良り先ア
ドレスのみを記憶するPCスタック(46)を設けるこ
とにより、サブルーチンリターン命令に対して命令のデ
コード段階で戻り先アドレスへのグリリターンを行い、
サブルーチンリターン命令実行時のパイプラインの乱れ
をなくす。
Eステージ(5)においてプフンチが起こった場合には
、EBRA信号(2n4)によ#)BSRカウンタ(6
5)の値がゼロクリアされ、E P (67)O内容が
DP(66)にコピーされる。Eステージ(5)におい
てプフンtが起こった場合には、IFステージ(1)〜
Fステージでの処理がすべて無効化されるため、Dステ
ージ(2)でデコードされたが、Eステージ(5)では
実行されなかった処理途中のサブp−チンコール命令、
サブ〜−をンリターン命令に対して行われたBSRカウ
ンタ(65)、D p (66)の更新を無効化し、P
Cスタック(46)のそのレベ/L/までのMD先アド
レスの値をDステージ(2)で正しく参照できるように
なっている。
プログラムによって外部メ七す上のサブルーチンからの
戻り先アドレスの値が書き換えられた場合には、PCス
タック(46)に格納されているib先アドレスと、外
部メモリ上の戻り先アドレスが異なった値となるため、
動作は保証されない。従って、プリリターン処理を行う
場合はプログラムによる外部メモリ上の戻り先アドレス
の値の書き換えは禁止する。
この発明のデータ処理装置は、プログラムによってプリ
リターン処理を強制的に無効化する手段を有している。
プログラムで制御レジスタ中の有効ビット制御信号フッ
f (VCNTフツチ(71) )の内容を書き換える
ことによって、この処理を行う。
VCNTフッ? (71)をIllにセットしておくと
、上述のようにプリリターン処理を行った戻り先アドレ
スが正しかったかどうかを示すVALより信号(214
)が、PCスタツク(46)中の有効ビット(46B)
の値を反映して、Eステージ制御部(63)に送られる
VCNT ? ツf(7t)を′0°に−tc’7トし
ておくと、VCNT信号(213)がlO″となシ、P
Cスタック(46)中の有効ピッ) (46B)の値が
何であっても、ANDグー) (70)からEステージ
制御部(63)に送られるVALIDyI号(214)
は+θ′となる。従って、Dステージ(2)で行われた
プリリターン処理はいつも無効となシ、Eステージ(5
)でib先アドレスが外部メモリから読み出され、その
戻り先アドレスにリターンする。プリリターン処理がす
べて無効となるので、外部メモリ上のサブルーチンから
の戻り先アドレスの値が書き換えられても正確な動作が
保証される。
また、有効ビット制御信号フッデー(VITフッf (
71) )に101をセットしたのち、再びプリリター
ン処理を有効にする場合には、グログラムにより制御レ
ジスタ中のPCスタック(46)初期化信号(IN工T
信号(2n8) )を+1+にセットすることにより、
PCスタック(46)の初期化を行う。BSRカウンタ
(65)、E P (67)はセロクリアされ、DP(
66)にはゼロになっているE p (67)の[lt
コピーされる。また、PCスタック(46)中の有効ビ
ット(46B)はすべてIQIにクリアされる。その後
、vCNTラッチ(71)を°l′にセットすることに
より、再びプリリターン処理を有効にする。
(2,2)サブ/L’−fンコーy命令、サブルーチン
リターン命令の詳細動作 以上では、サブルーチンコール命令とサブル−チンリタ
ーン命令の大まかな動作について述べてきたが、ここで
は各命令の詳細な動作について説明する。
この発明のデータ処理装置では、サブルーチンコール命
Iしてプフンチサブ/l/−fン(BSR)命令とジャ
ンプザブμmチン(、TSR)命令がある。また、サブ
ルーチンリターン命令としては、リターンサグ/L/−
fン(R′rS)命令と高機能命令として高級言語用サ
ブルーチンリターンとパラメータ解放を一度に行うgX
ITD命令がある。各命令のピット割シ付けを第5図に
示しである。°−゛はオベレーVヨンコードを示す。
BSR命令と、TSR命令及びRTS命令とEX工TD
命令は、PCスタツク(46)に関する処理は同じなの
で、以下、BAR命令とRTs命令について詳細な説明
を行う。
(2,2,1) B S R命令 BSR命令はPC相対の7ドレツシングのみをサポート
するサブルーチンコール命令であシ、戻り先アドレスが
スタックに退避される。第5図(A)、 CB)に示す
ようにBSR命令に関しては一般形(G7.t−マット
)と短縮形(Dフォーマット)の2つの命令フォーマッ
トがある。Dステージ(2)では、どちらのフォーマッ
トでも同様の処理が行われる。この命令は、1つのステ
ップコードとして処理される。
BSR命令来行のフローチャートを第6図に示す。BS
R命令が命令デコード部(22)で処理されると、B8
R命令のステップコードを示すDフード(12)と戻り
先アドレスを計算するためのAコード(13)が生成さ
れる。Gフォーマットの命令であれば、変位のサイズを
示すフィーμド(82B)に従って変位(82D)の値
も同時に取シ込む。また、DPDEC信号(2n2)に
よp D p (66)のデクリメント、及び、BSR
カウンタ(65)のインクリメント処理を行う。この命
令は、プリプフンチを行う命令であシ、PC演算部(5
4)において飛び先アドレスの計算が行われ、演算結果
がCAババス出力されてプリプフンを処理が行われる。
Aステージ(3)では、A:I−)’ (13)の指示
に従ってアドレス計算部(55)において戻り先アドレ
スが計算され、AOババス105)を介してFAレジス
タ(41)に転送される。Fステージ(14)ではFA
レジスタ(41)の値がSAレジスタ(42)に転送さ
れる。Eステージ(5)では、if、BPDEC信号(
2n6)によりE P (67)のブリテ゛クリメント
を行う。次に、PCWRITE信号(210)によって
、戻り先アドレスが格納されているSAレジスタ(42
)の値が81バス(101)を介してPCスタック(4
6)中のE P (67)の指すエントリの戻り先アド
レスフィールド(46A)に書き込まれ、そのエントリ
の有効ピット(46B)が′l″にセットされる。また
、同時にsiババス101)の値がA L U (50
)、Doババス103 )を介してDDレジスタ(53
)に書き込まれ、戻り先アドレスの格納されたDDレジ
スタ(53)の値をスタックポインタによってソフトウ
ェアで管理されているメモリ上のスタックにグツシュす
る。PCスタック(46)に戻り先アドレスが登録され
たらBSRCDEC信号(2n5)によりBRSカウン
タ(65)がグクリメントされる。この命令では、Dス
テージ(2)においてすでに分岐処理が行われているの
で、Eステージでは分岐処理は行わない〇 (2,2,2) RT S命令 RTS命令はサブ/L’−f−ンからのリターンを行う
命令であり、スタックから復帰されたリターンアドレス
にジャンプする。この命令は、1つのステップコードと
して処理される。
RTS命令実行のフローチャートを第7図に示す。RT
S命令が命令デコード部(22)で処理されると、RT
S命令のステップコードを示すDコード(12)とスタ
ックトップのアドレスを計算するためのAコード(13
)が生成される。この命令はプリリターンを行う命令で
ある。BR8CZ 8号(2n1)によりバイブフィン
中にサブルーチンコール命令が存在することが示されて
いる場合にはBARカウンタ(65)の内容がゼロにな
るまで処理を一時停止する。BSRカクンタ(65)が
ゼロである場合にはプリリターン処理を行う。PRER
ET信号(2n9)により、PCスタック(46)中の
D P (66)が指し示すエントリのII)先アドレ
スフィールド(46A)の内容をCAパス(108)に
出力し、先行分岐処理(プリリターン)を行う。また、
PCスタック(46)参照後、DPINC信号(2n3
)によりD p (66)のポストインクリメント処理
を行う。Aステージ(3)では、Aコード(13)の指
示に従ってアドレス計算部(55)においてスタックト
ップのアドレスが計算され、AOババス105 )を介
してFAL>ジスタ(41)に書き込まれる。
スタックトップのアドレスとはA S p (40)の
値そのものである。Fステージ(4)では、FAvジス
タ(41)の値が8Aレジスタ(42)に転送される。
Eステージ(5)では、VREAD信号(211)によ
って、プリリターン時に参照されたリターンアドレスが
格納されているPCスタツク(46)中のE P (6
7)の指すエントリの有効ピッ) (46B)の内容が
VALより信号(214)としてEステージ制御部(6
3)に送られ、そのエントリの有効ピット(46B)の
値が”0″にクリアされる。
また、同時に、スタックトップのアドレスを示している
SAレジスタ(42)の値を、81バス(101)を介
してAAレジスタ(44)に転送する。PCスタック(
46)参照後、EP工NC信!(2n7)によりE P
 (67)のポストインクリメントを行う。VALより
信号(214)がIllであったら、正しいアドレスに
デ、リリターンが行われたことを示しておシ、Eステー
ジ(5)は1マイクロサイク/l/N0Pt−実行して
命令の実行を終了する。VALより信号(214)が1
01であった場合にはプリリターンを行ったリターンア
ドレスが誤っていたことを示してお夛、AAレジスタ(
45)の値をアドレスとしてl)先アドレスの値をフェ
ッチし、DDレジスタ(53)に取シ込む。DDレジス
タ(53)の値をStパス(101)を介してEBレジ
スタ(45)に転送し、EBレジスタ(45)の値がO
Aパス(108)に出力されて分岐処理が行われる。こ
のとき、EBRA信号(2n4)によj)、B8Rカウ
ンタ(65)はクリアされ、D p (66)にはE 
p (67)の値がコピーされる。
(2,3)他の実施例の説明 本実施例では、PCスタック(46)は8エントリで構
成されている。従って、サブル−をンコーyが9レベル
以上の入れ子となったときには、有効な戻り゛先アドレ
スが格納されているエントリに別の戻り先アドレスがオ
ーバーライドされるため、最初の値が消えてしまう。従
って、リカーシブコ−yを行うような特殊な場合を除い
て、9レベル以上の入れ子になると誤ったプリリターン
を行うことになる。このため、Eステージでプリリター
ンが正しかったかどうかのチエツクが必要になるわけで
ある。PCスタックを何エントリ設けるかに関しては、
何しペ/I/までの深さのサブ〜−をノコ−NlIC対
1..て正しいプリリターンを行うかという性能の問題
と、ハードウェアの増加量との兼ね合いで決定すればよ
い。
本実施例では、確実なグリリターンを行うためにBSR
カウンタ(65)を備えらているが、サブル−tンコー
〜命令のプリブランチ処理を行わない場合には、サブル
−チンコーμ命令実行後必ず飛び先番地への分岐処理が
行われ、バイグフィンがキャンセルされるためこの機能
は必要ない。また、BSR命令をDステージ(2)デコ
ードするときポインタD p (66)をデクリメント
しているが、BSR命令をEステージ(5)で実行する
とき、デクリメントしたポインタE p (67)の値
をコピーすれようにしてもよい。
また、本実施例では、Eステージ(5)でプリリターン
が正しく行われたかどうかのチエツクを行うために、P
Cスタック(46)からプリリターンを行う際に参照し
たエントリの有効ピッ) (46B)を読み出している
が、Dステージ(2)でプリリターンを行う際に有効ピ
ッ) (46B)も同時に読み出し、その有効ビットの
値をEステージ(5)まで転送するようにしてもよい。
この場合、転送されてきた有効ビットの値を用いて本実
施例と同様にEステージ(5)でチエツクを行ってもよ
いし、この有効ビットの値t−用いて、マイクロ命令の
エントリアドレスを変えるなどしてマイクロ命令の処理
をRステージ(4)で変えてもよい。ただし、この場合
もポインタの切シ替え処理、及び有効ピッ)(46B)
のクリア処理は必要である。
また、本実施例では、Dステージ(2)でサブ、u −
チンリターン命令が処理されたときには必ずプリリター
ン処理を行っているが、Dステージ(2)でプリリター
ンを行う際に有効ビット(46B)も同時に読み出し、
その有効ビットの値が1’ (有効)であったときのみ
プリリターン処理を行うようにしてもよい。
また、本実施例では、Eステージ(5)でグリリターン
が正しかったかどうかのチエツクを行ってから、誤って
いたときのみ正しいib先アドレスを外部メモリから取
シ込んでいるが、チエツクの結果にかかわらず戻り先ア
トVスの値を読み出してもよい。例えば、RTS命令で
あればFステージ(4)で戻り先アドレスの値をプリフ
ェッチしてもよい0 また、本実施例ではDステージ(2)よシ後段のステー
ジがサブ〜−tンコー!命令を地理しているかどうかを
検出する手段としてカウンタを用いているが、各ステツ
ブコードあるいは各バイグラインステージにサブルーチ
ンコール命令用のフラグを設けて、全てのフラグが立っ
ていないときのみ、プリリターン処理を行うようにして
もよい。
また、本実施例では、PCスタック(46)のポインタ
として、Dステージ(2)で管理しているポインl D
 P (66) トEステージ(5)で管理しているポ
インタE P (67)の2つのポインタを備えている
。これは、複数のサブル−チンリターン命令がバイグフ
ィン中で処理される場合にも正しい災シ先アドレスを参
照できるようにしたものである。E P (67)はE
ステージ(5)で実行されたサブルーチンコール命令、
サブ/I/−fンリターン命令に対応して変化する。D
 P (66)は命令デコード段階で変化するため、2
つ以上のサブルーチンリターン命令がパイプライン中に
取〕込まれても対応するサブy−チンコーy命令の5i
Ej)先アドレスが参照できるわけである。Eステージ
(5)で分岐処理が行われたときにはパイプラインはキ
ャンセルされるのでEP(67)の値がD P (66
)にコピーされる。PCスタック(46)のポインタ管
理をすべてI P (67)のみで行うようにし、サブ
ルー六チンターン命令用のフラグを設け、ムステージ(
3)以降のステージでサブルーチンリターン命令を’i
t!ff中の時はそのフラグを立てておき、そのフラグ
が立っているときにはプリリターンの処理を待つように
してもよい。この場合、ポインタが正しく切シ替わって
からpcスタック(46)の参照が行えるので正しいプ
リリターンが行える。
また、この発明のPCスタック(46)はプリリターン
時にもプリリターンが正しく行われたかどうか判断する
ときににもアクセスされ、CPU外部のメモリアクセス
とは独立の行うと効率がよい。
従って、CPUが1つの集積回路チップで実現されるマ
イクロプロセッサの様なデータ処理装置ではpcスタッ
ク(46)をCPUと同じ集積回路内にもつようにすれ
ば、CPU外部のメモリアクセスとは独立にPCスタッ
ク(46)がアクセスできる。
この発明では次の(1)〜(4)項の実施態様により実
施することができる。
(1)第1のステージと第2のステージをもち、命令の
実行に対して第1のステージでの処理が第2のステージ
での処理に先行して行われるバイグフィン処理により命
令を処理するデータ処理装置であって、 命令やデータを格納する第1の記憶装置と、サブルーチ
ンからの戻り先命令のアドレス値を1つまたは複数個格
納するアドレス記憶部と、前記アドレス記憶部に格納さ
れている各II先アドレスの値が有効か無効かを示す有
効ビットをサブルーチンからの1)先アドレスと組にし
て格納する有効ビット記憶部とを含む第1の記憶装置と
は異なる第2の記憶装置と、 サブルーチンからの戻り先アドレスとなる値を前記第1
の記憶装置に書き込む第1の書き込み手段と、 サブルーチンからの戻り先アドレスとなる値を前記第2
の記憶装置の前記民υ先アドレス記憶部に書き込む第2
の書き込み手段と、 前記第1のステージで制御され、第1の値を前記第2の
記憶装置から読みだす第1の読み出し手段と、 サブルーチンリターン命令処理時に、サブルーチンから
の医シ先アドレスとなる第2の値を前記第10紀億装置
から読みだす第2の読み出し手段と、サブルーチンコー
ル命令処理時に、前記第2の記憶装置の前記有効ビット
記憶部に有効を示す値を書き込む有効ビット書き込み手
段と、 サブルーチンリターン命令処理時に、前記第2の記憶装
置の前記有効ビット記憶部に無効を示す値を書き込む有
効ビットクリア手段と、 サブμ−をノリターン命令処理時に、前記M2の8億装
置の前記有効ビット記憶部に格納されている前記有効ビ
ットを読み出す有効ビット読み出し手段と、 前記第1の記憶装置から命令をフェッチする命令フェッ
チ手段とを備え、 前記命令フェッチ手段が、前記第L(D記憶装置の前記
第1の値の示すアドレスから第1の命令をフェッチする
機能と、前記第1の記憶装置の前記第2の値の示すアド
レスから第2の命令をフェッチする機能を備え、 サブルーチンリターン命令処理時に、 前記有効ビット読み出し手段により読み出された有効ビ
ットの値が有効を示す時は、前記第1の命令を実行し、 前記有効ビット読み出し手段により読み出された有効ビ
ットの値が有効を示す時は0、前記第2の命令を実行す
る ことを特徴とするデータ処理装置。
(2)前記第2の記憶装置は、前記アドレス記憶部の1
つのエントリと前記有効ビット記憶部の1エントリを1
つのエントリとし、2”lliのサイクリックな番号が
つけられたエントリで構成され、インクリメントまたは
デクリメントの少なくとも一方が可能で、前記エントリ
の番号を管理する第1のnビットカウンタと、 インクリメントおよびデクリメントの両方が可能で、前
記エントリの番号を管理する第2のnビットカウンタと
、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第3の書き込み手段を備え、 前記第2の書き込み手段が前記第2の記憶装置の前記第
2のΩビットカウンタの値が示すエントリ番号にサブル
ーチンからの戻り先アドレスを書き込む手段であシ、 前記第1の読み出し手段が前記第2の記憶装置の前記第
1のnビットカウンタの値が示すエントリ番号の前記ア
ドレス記憶部から前記第1c)[を読み出す手段であシ
、 前記有効ビット書き込み手段が前記第2の記憶装置の前
記第2のnビットカウンタの値が示すエントリ番号の前
記有効ビット記憶部に有効を示す値を書き込む手段であ
シ、 前記有効ビットクリア手段が前記第2の記憶装置の前記
第2のnビットカウンタの値が示すエントリ番号の前記
有効ビット記憶部に無効を示す値を書き込む手段である ことを特徴とする第1項記載のデータ処理装置。
(3)前記第2の書き込み手段により、前記第1のステ
ージで処理を終えた全すブμmチンコーμ命令に対する
、前記第2の記憶装置へのサブルーチンからの戻り先命
令のアドレスの書き込み処理が終了しているかどうかを
検出するサブルーチンコーμ命令処理検出手段を備えた ことを特徴とする第1項あるいは第2項記載のデータ処
理装置。
(4)命令やデータを格納する第1の記憶装置と、第1
の記憶装置とは異なシ、サグμmチンからの戻り先命令
のアドレス値の一部あるいは全部を格納するアドレス記
憶部と前記アドレス値が有効か無効かを示す有効ビット
を格納する有効ビット格納部を1エントリずつ組にして
1つのエントリとして格納し、2!1個のエントリから
なる第2の記憶装置と、 インクリメントまたはデクリメントの少なくとも一方が
可能で、前記エントリの番号を管理する第1 Onビッ
トカウンタと、 インクリメンFおよびデクリメントの両方が可能で、前
記二ン)すの番号を管理する第2のnビットカウンタと
、 前記第2の記憶装置の前記第1のnビットカウンタの値
が示すエントリから災シ先命令のアドレス値を読みだす
第1の読み出し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
が示すエントリの前記アドレス記憶部にサブルーチンか
らの戻り先命令のアドレスの一部または全部を書き込む
第1の書き込み手段と、前記第2の記憶装置の前記第2
のnビットカウンタの値が示すエントリの前記有効ビッ
ト記憶部に有効か無効かを示す値を書き込む有効ビット
書き込み手段と、 前記第2の記憶装置の前記有効ビット記憶部に格納され
ている有効ビットの値を読み出す有効ビット読み出し手
段と、 前記第2のnビットカウンタの値を前記第1のnビット
カウンタに書き込む第2の書き込み手段と、前記第2の
記憶装置の全てのエントリの前記有効ビット記憶部に無
効を示す値を書き込む有効ビットクリア手段とを備え、 ことを特徴とするデータ処理装置。
〔発明の効果J 以上のように、この発明によればサブルーチンコール命
令のIIJ先アドレスのみを格納するPCスタックを設
けることにより、サブルーチンニ−ル命令の分岐処理を
命令実行ステージでの処理に先だって行うことができ、
サブルーチンリターン全4r寮行によるパイプライン処
理のオーバーヘッドが削減されるので、高性能なデータ
処理装置が得られる効果がある。
【図面の簡単な説明】 第1図はこの発明のデータ処理装置のパイプライン処理
構成を示す図、第2図はこの発明のデータ処理装置のブ
ロック図、第3図はこの発明のデータ処理装置における
サブ/l/−fンリターン命令の先行分岐処理K特に関
係する部分のブロック図、第4図はこの発明のPCスタ
ック(46)の構成を示す図、第5図はこの発明のデー
タ処理装置におけるサブμ−をンコール命令及びサブル
ーチンリターン命令のビット割シ付けを示す図、第6図
はB8R命令夾行のフローチャート、第7図はRTS命
4?実行のフローチャート、第8図は従来のデータ処理
装置の典型的なパイプラインステージを示す図である。 (46)はサブルーチンニール命令の戻り先アドレスの
みを格納するPCスタック、 (46A)はPCスタッ
ク(46)においてサブμ−チンコーμ時の戻り先アド
レスを登録するND先アドレスフィールド、(46B)
はPCスタック(46)中の各エントリに格納されてい
る戻り先アドレスが有効か無効かを示す有効ビット、(
65)は命令デコードステージ以降のステージで処理さ
れているサブルーチンニール命令の数をカウントするB
日Rカウンタ、(66)は命令デコードステージが管理
しているPCスタック(46)のポインタDP、(67
)は命令実行ステージが管理しているPCスタック(4
6)のポインタEPである。 なお、図中、同一符号は同一、又は相当部分を示す。

Claims (2)

    【特許請求の範囲】
  1. (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. (2)命令やデータを格納する第1の記憶装置と、第1
    の記憶装置とは異なり、サブルーチンからの戻り先命令
    のアドレス値の一部あるいは全部を格納するアドレス記
    憶部と前記アドレス値が有効か無効かを示す有効ビット
    を格納する有効ビット格納部を1エントリずつ組にして
    1つのエントリとして格納し、2^n個のエントリから
    なる第2の記憶装置と、 インクリメントまたはデクリメントの少なくとも一方が
    可能で、前記エントリの番号を管理する第1のnビット
    カウンタと、 インクリメントおよびデクリメントの両方が可能で、前
    記エントリの番号を管理する第2のnビットカウンタと
    、 前記第2の記憶装置の前記第1のnビットカウンタの値
    が示すエントリから戻り先命令のアドレス値を読みだす
    第1の読み出し手段と、 前記第2の記憶装置の前記第2のnビットカウンタの値
    が示すエントリの前記アドレス記憶部にサブルーチンか
    らの戻り先命令のアドレスの一部または全部を書き込む
    第1の書き込み手段と、前記第2の記憶装置の前記第2
    のnビットカウンタの値が示すエントリの前記有効ビッ
    ト記憶部に有効か無効かを示す値を書き込む有効ビット
    書き込み手段と、 前記第2の記憶装置の前記有効ビット記憶部に格納され
    ている有効ビットの値を読み出す有効ビット読み出し手
    段と、 前記第2のnビットカウンタの値を前記第1のnビアト
    カウンタに書き込む第2の書き込み手段と、前記第2の
    記憶装置の全てのエントリの前記有効ビット記憶部に無
    効を示す値を書き込む有効ビットクリア手段とを備え、 ことを特徴とするデータ処理装置。
JP63086704A 1988-03-01 1988-04-07 パイプライン処理機構を持つデータ処理装置 Expired - Fee Related JPH0769814B2 (ja)

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 true JPH01258032A (ja) 1989-10-16
JPH0769814B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103067A (ja) * 1990-06-29 1994-04-15 Digital Equip Corp <Dec> 高性能プロセッサにおける分岐予想方法
US7320066B2 (en) 2004-11-30 2008-01-15 Fujitsu Limited Branch predicting apparatus and branch predicting method

Citations (2)

* Cited by examiner, † Cited by third party
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 情報処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
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 情報処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103067A (ja) * 1990-06-29 1994-04-15 Digital Equip Corp <Dec> 高性能プロセッサにおける分岐予想方法
US7320066B2 (en) 2004-11-30 2008-01-15 Fujitsu Limited Branch predicting apparatus and branch predicting method
USRE42466E1 (en) 2004-11-30 2011-06-14 Fujitsu Limited Branch predicting apparatus and branch predicting method

Also Published As

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

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
US5497468A (en) Data processor that utilizes full data width when processing a string operation
JPH03116233A (ja) データプロセッサの命令処理システム
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
JP3543181B2 (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
JPH0810428B2 (ja) データ処理装置
JPH081599B2 (ja) データ処理装置
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
JPH0766324B2 (ja) データ処理装置
JPH01214932A (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
JPH07120284B2 (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
JPH01258032A (ja) パイプライン処理機構を持つデータ処理装置
US5269008A (en) Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer
JPH0769806B2 (ja) データ処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JP2503223B2 (ja) 先行制御方式
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JP3147884B2 (ja) 記憶装置及び情報処理装置
JPH0820952B2 (ja) パイプライン処理機構を持つデータ処理装置
JPH0769801B2 (ja) データ処理装置
JPH0769807B2 (ja) データ処理装置
JPH0298734A (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