JPH07239782A - 演算処理装置 - Google Patents

演算処理装置

Info

Publication number
JPH07239782A
JPH07239782A JP2933094A JP2933094A JPH07239782A JP H07239782 A JPH07239782 A JP H07239782A JP 2933094 A JP2933094 A JP 2933094A JP 2933094 A JP2933094 A JP 2933094A JP H07239782 A JPH07239782 A JP H07239782A
Authority
JP
Japan
Prior art keywords
instruction
instructions
return
stage
storage means
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.)
Pending
Application number
JP2933094A
Other languages
English (en)
Inventor
Hiroshi Shinkai
浩 新海
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2933094A priority Critical patent/JPH07239782A/ja
Publication of JPH07239782A publication Critical patent/JPH07239782A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】サブルーチン復帰時のタイムラグがなくし、連
想メモリを用いないでパイプラインを乱さずに高速で命
令分岐を実行する。 【構成】パイプラインの第1ステージで命令をプリフェ
ッチし、サブルーチンを呼出すコール命令とサブルーチ
ンから復帰するリターン命令を検出するプリデコーダ
(12b)を有したプリフェッチ処理回路12と、プリフェ
ッチ処理回路12でコール命令検出時にこのコール命令に
続くプログラム上の命令を少なくともパイプラインの第
1ステージから実行ステージまでの数から2減じた数分
だけ保持する分岐先命令スタックキャッシュ19とを備
え、上記プリフェッチ処理回路12でリターン命令検出時
にこのリターン命令に続く複数命令を上記分岐先命令ス
タックキャッシュ19に保持した複数命令に総合制御回路
17が置換する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、パイプライン処理方式
により演算を実行する演算処理装置に関する。
【0002】
【従来の技術】従来より、マイクロプロセッサの性能向
上を図るために、マイクロプロセッサの行なう種々の命
令(演算)を連続した4〜5段階(ステージ)に細分化
して並列処理を行なうパイプライン処理方式のものが多
く採用されている。
【0003】図9はこのパイプライン処理による1つの
命令の処理段階を示すもので、ここでは1つの命令を4
ステージに分けるものとする。図中、「F」がフェッチ
(取込み)ステージ、「D」がデコード(解釈とメモリ
からのデータ読出し)ステージ、「E」が実行ステー
ジ、「W」がメモリへの書込み(演算結果の出力)ステ
ージである。
【0004】続く図10は上記図9のパイプライン処理
方式での分岐命令の実行を例示するもので、横方向が1
つの命令に関する時間の流れ、縦方向が一連のプログラ
ムの処理に従った時間の流れを示している。同図中、
「B」が分岐命令、「N1」及び「N2」が一連のプロ
グラム上で上記分岐命令の次に位置し、分岐実行時に無
効となる命令、「T1」及び「T2」が分岐先の命令で
ある。
【0005】分岐命令「B」のデコードステージでその
命令が分岐を示すものであると解釈した時点で、すでに
次の「N1」命令のフェッチステージを終えており、ま
た分岐命令「B」の実行ステージで分岐を実行する際に
はその前にさらに続く命令「N2」のフェッチステージ
と命令「N1」のデコードステージとを終えていること
となる。したがって、次いで分岐先の命令「T1」「T
2」の処理に移行する際には命令「N1」「N2」に関
する処理は放棄され、その処理及び時間が無駄なものと
なる。
【0006】また、上記分岐命令「B」が特にサブルー
チンのコール(呼出し)命令であった場合には、当該サ
ブルーチンを終えて復帰した場合に上記命令「N1」の
フェッチステージからの処理を再度やり直さなくてはな
らず、サブルーチンからの復帰にタイムラグを生じると
いう不具合がある。
【0007】
【発明が解決しようとする課題】上記のような不具合を
解消すべく、分岐命令等があると1回目のプログラム実
行時に分岐先の命令を分岐先のアドレスと共に予め用意
した分岐命令保持回路(分岐バッファ)にて保持させ、
2回目以降のプログラム実行時には分岐先のアドレスを
上記分岐命令保持回路に渡すことでアドレスが一致した
場合に命令を取出し、分岐命令の後に挿入するという方
法が考えられた。
【0008】しかしながら、この分岐命令保持回路を持
つ方法では、アドレスを直接与えるのではなく、記憶内
容を検索情報として与えることでそれに等しい記憶情報
を持つ記憶位置のアドレスを求めるような連想メモリが
必要となり、装置が複雑で高価となり、さらには高速化
しにくいものとなってしまうという欠点を生じる。
【0009】本発明は上記のような実情に鑑みてなされ
たもので、その目的とするところは、サブルーチン復帰
時のタイムラグがなくし、連想メモリを用いないでパイ
プラインを乱さずに高速で命令分岐を実行することが可
能なパイプライン処理による演算処理装置を提供するこ
とにある。
【0010】
【課題を解決するための手段】すなわち本発明は、プロ
グラム中の命令をパイプライン処理する演算処理装置で
あって、パイプラインの第1ステージで命令をプリフェ
ッチし、サブルーチンを呼出すコール命令とサブルーチ
ンから復帰するリターン命令を検出するプリデコード機
構を有したプリフェッチバッファと、上記プリフェッチ
バッファでコール命令検出時にこのコール命令に続くプ
ログラム上の命令を少なくともパイプラインの第1ステ
ージから実行ステージまでの数から2引いた数分だけ保
持する内部キャッシュとを備え、上記プリフェッチバッ
ファでリターン命令検出時にこのリターン命令に続く複
数命令を上記内部キャッシュに保持した複数命令に置換
するようにしたものである。
【0011】
【作用】上記のような構成によれば、特に分岐後に分岐
アドレスの次位置に復帰することが分かっているサブル
ーチンの実行時に限っては、復帰時のタイムラグがなく
し、連想メモリを用いないでパイプラインを乱さずに高
速で命令分岐を実行することができる。
【0012】
【実施例】以下図面を参照して本発明の一実施例を説明
する。図1は全体の回路構成を示すもので、11がパイプ
ライン処理を行なうマイクロプロセッサである。このマ
イクロプロセッサ11は、パイプラインの第1ステージで
命令をプリフェッチする、バッファで構成されるプリフ
ェッチ処理回路(図では「F1処理回路」と示す)12、
同第2ステージで命令をフェッチするフェッチ処理回路
(図では「F2処理回路」と示す)13、同第3ステージ
で命令をデコードするデコード処理回路(図では「D処
理回路」と示す)14、同第4ステージで命令を実行する
実行処理回路(図では「E処理回路」と示す)15、同第
5ステージでメモリへの書込みを行なう書込み処理回路
(図では「W処理回路」と示す)16と、これら各処理回
路12〜16を統括制御する総合制御回路17、この総合制御
回路17に接続されたレジスタ群18及び分岐先命令スタッ
クキャッシュ(図では「TISC」と示す)19を有す
る。
【0013】上記プリフェッチ処理回路12は、プリフェ
ッチを行なう命令のアドレスを保持するプリフェッチア
ドレスレジスタ(図では「PFA」と示す)12aと、特
にプリフェッチした命令がサブルーチンのコール命令あ
るいはリターン命令であることを判断する後述するプリ
デコーダ12b(ここでは図示せず)とを有する。また、
上記フェッチ処理回路13は、デコードする命令のアドレ
スをカウントするデコードプログラムカウンタ(図では
「DPC」と示す)13aを有する。
【0014】しかして上記総合制御回路17は、マイクロ
プロセッサ11外部のバスライン20を介して主記憶の外部
メモリ21、例えば外部記憶装置として磁気ディスク装置
23を接続した入出力制御回路22の双方とデータの送受を
行なう一方、表示部としてのCRT24に表示データを出
力し、キーボード25からのキー入力を受付ける。
【0015】次いで図2により上記分岐先命令スタック
キャッシュ19内の構成について述べる。同図に示す如く
分岐先命令スタックキャッシュ19は、プログラムの命令
を記憶するメモリ31とこのメモリ31のアドレス指定を行
なうアドレス発生回路32とから構成される。
【0016】アドレス発生回路32内には、循環バッファ
で構成されるトップアドレスレジスタ(top)32a、
同じく循環バッファで構成されるボトムアドレスレジス
タ(bottom)32b、フルフラグレジスタ(ful
l)32c、エンプティフラグレジスタ(empty)32
d及び読出しフラグレジスタ(read)32eとこれら
各レジスタ32a〜32eを制御するコントロール回路32f
とが設けられる。
【0017】このコントロール回路32fは、総合制御回
路17から送られてくるプッシュ(push)信号及びポ
ップ(pop)信号に対応して動作し、また総合制御回
路17に対して入力指示(in)信号及び出力指示(ou
t)信号を送出する。
【0018】すなわちコントロール回路32fは、上記プ
ッシュ信号が“H”レベルとなった際に総合制御回路17
を介してデコードプログラムカウンタ13aのカウント値
及びデコード処理回路14の処理する命令をメモリ31に順
次1つずつ記憶させると共に、メモリ31がフル記憶状態
となった場合にフルフラグレジスタ32cにフラグをセッ
トする。
【0019】また、コントロール回路32fは、上記ポッ
プ信号が“H”レベルとなった際には、メモリ31に記憶
している2つの命令を同時に読出して総合制御回路17へ
送出させ、メモリ31から読出した命令を消去すると共
に、メモリ31が空の状態となった場合にエンプティフラ
グレジスタ32dにフラグをセットする。
【0020】さらにコントロール回路32fは、メモリ31
に記憶している命令の数が予め設定された数より少なく
なった際に読出しフラグレジスタ32eにフラグをセット
すると共に、できる限りメモリサイクルが空いている際
に上記外部メモリ21から命令を取込んでメモリ31に記憶
させる。
【0021】上記トップアドレスレジスタ32aは、通常
のプッシュ信号到来時にはメモリ31の書込みアドレス
を、ポップ信号到来時には読出しアドレスを保持する。
ボトムアドレスレジスタ32bの内容は、通常のプッシュ
信号到来時及びポップ信号到来時には変化しないが、上
記外部メモリ21にアクセスする場合、すなわち読出しフ
ラグレジスタ32eにフラグがセットされているポップ信
号到来時に変化する。この場合、外部メモリ21に内容を
掃き出す際にはボトムアドレスレジスタ32bの内容がト
ップアドレスレジスタ32aの保持アドレスに近付き、外
部メモリ21から命令を取込む際にはボトムアドレスレジ
スタ32bの内容がトップアドレスレジスタ32aの保持ア
ドレスから遠ざかる。
【0022】上述した如くトップアドレスレジスタ32a
及びボトムアドレスレジスタ32bは共に循環バッファで
構成されるため、保持内容が上限(あるいは下限)を越
えると、下限(あるいは上限)の値に自動設定されるも
のである。
【0023】次に、図3により上記分岐先命令スタック
キャッシュ19と外部メモリ21、上記プリフェッチ処理回
路12内のプリフェッチアドレスレジスタ12a及びフェッ
チ処理回路13内のデコードプログラムカウンタ13a等の
関係を例示する。
【0024】外部メモリ21は、上記レジスタ群18及び分
岐先命令スタックキャッシュ19のいずれかとの間で記憶
しているプログラムの命令やデータの送受を行なうもの
で、その際のアドレス指定は、プリフェッチ処理回路12
内のプリフェッチアドレスレジスタ12a、フェッチ処理
回路13内のデコードプログラムカウンタ13a、外部メモ
リ21のスタック中の位置を指示するスタックポインタ
(図では「EXTISP」と示す)17aあるいは外部メ
モリ21自身とレジスタ群18との間で送受される命令中の
分岐先アドレスにしたがってなされる。
【0025】上記スタックポインタ17aは総合制御回路
17内に設けられ、外部メモリ21上のスタック位置を統括
制御する同じく総合制御回路17内のコントロール回路17
bの指示によりその内容が加減制御されるもので、その
際にコントロール回路17bは外部メモリ21上のスタック
にデータがあることを示すフラグレジスタ(図では「E
XTISE」と示す)17cを参照する。
【0026】しかるに、上記分岐先命令スタックキャッ
シュ19の出力する入力指示(in)信号及び出力指示
(out)信号は、総合制御回路17内のコントロール回
路17bに送られる。
【0027】次いで実際にプログラムをパイプライン処
理で実行する場合の動作について、適宜上記総合制御回
路17内の機構を織り混ぜて説明する。図6がこのマイク
ロプロセッサ11における1つの命令の処理段階を示すも
ので、ここでは上記図1でも説明したように1つの命令
を5ステージに分けるものとする。図中、「F1」が命
令をプリフェッチするプリフェッチステージ、「F2」
が命令をフェッチするフェッチステージ、「D」がフェ
ッチした命令をデコードするデコードステージ、「E」
がデコードした命令を実行する実行ステージ、「W」が
実行結果を外部メモリ21へ書込むための書込みステージ
である。
【0028】続く図7は上記図6のパイプライン処理方
式で特にサブルーチンのコール命令及びこれに続く命令
の実行を例示するもので、同図中「call」が同コー
ル命令、「M1」及び「M2」が一連のプログラム上で
上記コール命令の次に位置し、コール実行時に一時的に
無効となる命令、「T1」及び「T2」がコール先のサ
ブルーチンの先頭に位置する命令である。
【0029】マイクロプロセッサ11のプリフェッチ処理
回路12がプリフェッチアドレスレジスタ12aに保持する
アドレス値に従ってコール命令を第1ステージでプリフ
ェッチし、プリデコーダ12bでプリデコードしてコール
命令であることを判断すると、このプログラム上でコー
ル命令の次に位置し、コール実行時に一時的に無効とな
る2つの命令「M1」「M2」を分岐先命令スタックキ
ャッシュ19に取込むべく、分岐先命令スタックキャッシ
ュ19に対して2クロック(ステージ処理に同期した動作
クロック)分だけプッシュ信号を送出する。
【0030】このプッシュ信号により分岐先命令スタッ
クキャッシュ19内では、コントロール回路32fがメモリ
31に総合制御回路17からの2つの命令「M1」「M2」
を順次1つずつデコードプログラムカウンタ13aのカウ
ント値と共に記憶させる。この際のメモリ31のアドレス
指定はトップアドレスレジスタ32の保持内容に従うもの
で、コントロール回路32fはメモリ31に命令を1つ記憶
させる毎にこのトップアドレスレジスタ32の内容を更新
設定する。
【0031】また、特にメモリ31がフル記憶状態となっ
た場合、すなわちトップアドレスレジスタ32の保持内容
がその上限値となった場合には、コントロール回路32f
がフルフラグレジスタ32cにフラグをセットする。
【0032】しかるに、上記動作を行なうことで図7に
ハッチングで示した2つの命令「M1」「M2」のフェ
ッチステージ以降の処理がここでは行われなくなる。そ
の後、図4に示す総合制御回路17内の機構によりプリフ
ェッチアドレスレジスタ12aの内容をコール命令に対応
した新しい値に切換え、上記コール命令の3クロック後
からサブルーチン側の命令「C1」「C2」…を順次実
行する。
【0033】ここで図4においては、プリフェッチ処理
回路12からのコール命令及びリターン命令のプリデコー
ド判断結果が切換信号として直接、また遅延回路41,42
で順次1クロックずつ遅延されて与えられる。
【0034】この直接の切換信号により、分岐先の新た
なプリフェッチアドレス(PFA)が、それまでのプリ
フェッチアドレスを「+1」回路43で「+1」更新設定
した値に代わって遅延回路44に与えられる。
【0035】この遅延回路44の遅延出力はそのままプリ
フェッチアドレスとして上記プリフェッチアドレスレジ
スタ12a及び「+1」回路43へ送出される一方、それま
でのデコードプログラムカウンタ値(DPC)を「+
1」回路45で「+1」更新設定した値に代わって遅延回
路46に与えられる。
【0036】この遅延回路46の遅延出力はそのままデコ
ードプログラムカウンタ値として上記デコードプログラ
ムカウンタ13a及び「+1」回路45へ送出される一方、
それまでの実行プログラムカウンタ値(EPC)を「+
1」回路47で「+1」更新設定した値に代わって遅延回
路48に与えられる。
【0037】そして、この遅延回路48の遅延出力がその
まま実行プログラムカウンタ値として上記「+1」回路
47及び後段の同様回路(図示せず)に送出される。とこ
ろで、上記遅延回路44に与えられる新しいプリフェッチ
アドレスはコール命令が示しているアドレスであり、命
令中のアドレスフィールドを取出せばよい。しかしなが
ら、コール命令のアドレッシングモードと前の命令の種
類によっては、プリフェッチアドレスがすぐに取出せな
い場合がある。例えば、r1がレジスタであり、 add r1,r1,1;r1←r1+1(r1を「+
1」更新設定) call r1 ;更新設定したr1の示すとこ
ろにジャンプ のように、ジャンプする命令が他の命令と依存関係があ
る場合には、従来一般のパイプライン方式の演算と同様
に必要な分だけ新しいプリフェッチアドレスへの変更を
遅らせるようにする。
【0038】上記のようにしてコールしたサブルーチン
中の命令を順次実行し、そのサブルーチンの最後の命令
であるリターン命令を図8に示すようにプリフェッチス
テージでプリフェッチした後にプリデコードしてリター
ン命令であることを判断すると、上記コール命令時に分
岐先命令スタックキャッシュ19に取込んだ2つの命令
「M1」「M2」及びデコードプログラムカウント値を
取出すべく、分岐先命令スタックキャッシュ19に対して
1クロック分だけポップ信号を送出する。
【0039】このポップ信号により分岐先命令スタック
キャッシュ19内では、コントロール回路32fがメモリ31
に記憶させた2つの命令「M1」「M2」をプログラム
カウント値と共に同時に取出す。この際のメモリ31のア
ドレス指定はトップアドレスレジスタ32の保持内容に従
うもので、コントロール回路32fはメモリ31から命令を
取出す毎にこのトップアドレスレジスタ32の内容を更新
設定する。また、特にメモリ31に記憶している命令の数
が一定値を下回った場合もしくは全くなくなった場合に
は、それぞれコントロール回路32fが読出しフラグレジ
スタ32e、エンプティフラグレジスタ32dにフラグをセ
ットする。
【0040】しかるに、取出した2つの命令「M1」
「M2」及びデコードプログラムカウント値を、このプ
ログラムアドレス上のリターン命令の次に位置する命令
「R1」「R2」、すなわちプログラムの流れに従えば
本来実行されない命令に代えて図5に示す総合制御回路
17の機構により置換する。
【0041】すなわち、同図でプログラムアドレス上の
リターン命令の次に位置する命令、例えば「R1」「R
2」は総合制御回路17内の遅延回路51に与えられる。こ
の遅延回路51の遅延出力はそのまま分岐先命令スタック
キャッシュ19に読出される一方、プリフェッチステージ
の命令として分岐先命令スタックキャッシュ19から取出
される命令と択一的に遅延回路52へ送られる。
【0042】同様に、この遅延回路52の遅延出力はその
まま分岐先命令スタックキャッシュ19に読出される一
方、フェッチステージの命令として分岐先命令スタック
キャッシュ19から取出される命令と択一的に遅延回路53
へ送られる。
【0043】遅延回路53の出力はデコードステージの命
令として次段の処理回路(図示せず)に出力される。し
かるに、分岐先命令スタックキャッシュ19に対して上記
プリフェッチ処理回路12内に設けられるプリデコーダ
(図では「PD」と示す)12bからプッシュ信号及びポ
ップ信号が送り込まれるもので、このうちのポップ信号
はまた、上記遅延回路52、遅延回路53に入力される命令
を選択する際の切換信号としても用いられる。
【0044】このような回路構成とすることにより、プ
リデコーダ12bがポップ信号を出力する状態、すなわち
リターン命令が検出判断された場合には、それまで遅延
回路51,52に保持されていた遅延命令に代えて、分岐先
命令スタックキャッシュ19から取出される命令が遅延回
路52,53へ切換選択されて送出されることで命令の置換
が実現されることとなる。
【0045】また、リターン命令の実行時に上記命令と
共に分岐先命令スタックキャッシュ19から取出したデコ
ードプログラムカウント値を新たにデコードプログラム
カウンタ13aに記憶設定するものとする。
【0046】なお、上記ではリターン命令のプリデコー
ドに際して分岐先命令スタックキャッシュ19から取出し
た2つの命令、例えば「M1」「M2」をリターン命令
を含まない、プログラムアドレス上での次の2つの命
令、例えば「R1」「R2」に置換するものとして説明
したが、図8中に()で示すようにリターン命令それ自
体及びプログラムアドレス上での次の1つの命令「R
1」と置換し、分岐先命令スタックキャッシュ19から命
令と共に取出したデコードプログラムカウント値を1つ
めの命令「M1」実行時に新たにデコードプログラムカ
ウンタ13aに記憶設定するものとすれば、サブルーチン
の復帰に要する時間を上記の方法に比してさらに1クロ
ック分短縮することができる。
【0047】また、上記分岐先命令スタックキャッシュ
19で記憶させるべき命令がオーバフローしてしまう場合
に総合制御回路17が行なう処理としては、分岐先命令ス
タックキャッシュ19に記憶されている最も古い命令を捨
ててしまう方法と、分岐先命令スタックキャッシュ19か
ら取出して外部メモリ21に記憶させる方法とが考えられ
る。
【0048】前者の最も古い命令を捨ててしまう方法で
は、複数のサブルーチンをコールして記憶させるべき命
令が溢れてしまうと判断した際にそのまま分岐先命令ス
タックキャッシュ19にオーバライト(上書き)すること
で、最も古い命令は順次自然消去されることとなる。
【0049】しかるにこの方法では、複数のサブルーチ
ンから戻る際に分岐先命令スタックキャッシュ19の中に
次に実行すべき命令がすでに消去されてない場合があ
る。その場合、分岐先命令スタックキャッシュ19のエン
プティフラグレジスタ32dをチェックすることで判断
し、エンプティフラグレジスタ32dにフラグがセットさ
れていると判断した際には、あらためてコール側の命令
をフェッチすればよい。
【0050】また、上記後者の外部メモリ21に記憶させ
る方法では、分岐先命令スタックキャッシュ19内にエン
プティフラグレジスタ32dの他に上記フルフラグレジス
タ32c、読出しフラグレジスタ32eを使用し、また総合
制御回路17内に外部メモリ21上のスタックのどこに書
込むかを示すポインタとしてのスタックポインタ17a
及び該スタックにデータがあることを示すフラグをセッ
トするためのフラグレジスタ17cを用いる。
【0051】しかるにこの方法では、複数のサブルーチ
ンをコールし、分岐先命令スタックキャッシュ19がオー
バフローしてフルフラグレジスタ32cがセットされたと
判断した時点で最も古い命令を取出して外部メモリ21に
記憶させ、次に新たな命令を分岐先命令スタックキャッ
シュ19の空いた領域へ記憶させることとなる。
【0052】そして、複数のサブルーチンから戻る際に
は、分岐先命令スタックキャッシュ19の中に次に実行す
べき命令がなくなるアンダフローの状態となる可能性が
ある。これを防止するためには、分岐先命令スタックキ
ャッシュ19の読出しフラグレジスタ32eにフラグがセッ
トされている状態、すなわち分岐先命令スタックキャッ
シュ19に記憶している命令の数がある一定値以下となっ
た時点で外部メモリ21から取出すようにする。この外部
メモリ21からの命令の取出しは、外部メモリ21にアクセ
スしていない時にできるだけ行なうが、エンプティフラ
グレジスタ32dにフラグがセットされてしまった状態、
すなわちアンダフローを生じてしまった状態では、必ず
外部メモリ21からのみ命令を取出すこととする。
【0053】ただし、上記アンダフローが生じた場合
は、上記前者の最も古い命令を捨ててしまう方法で次に
実行すべき命令がすでに消去されてない場合と同様、エ
ンプティフラグレジスタ32dにフラグがセットされてい
るか否かで判断し、その際にはあらためてコール側の命
令をフェッチすると共に、総合制御回路17内のコントロ
ール回路17bによりスタックポインタ17aの保持値を必
要数、すなわちパイプラインの第1ステージから実行ス
テージまでの数から2引いた数以上(ここでは2)だけ
減じる。そして、さらに必要であれば、外部メモリ21上
のスタックにデータがあることを示すフラグレジスタ17
cをリセットする。
【0054】上記読出しフラグレジスタ32eにいつフラ
グをセットするか、すなわち分岐先命令スタックキャッ
シュ19に記憶している命令の残数がいくつになった時点
で分岐先命令スタックキャッシュ19からの命令の取出し
を外部メモリ21に切換えるかは任意に設定可能とする
が、外部メモリ21のスタック内にある一定の規定値(こ
の規定値は2以上で分岐先命令スタックキャッシュ19の
サイズ以下とする)以下しか有効な情報がなく、かつ外
部メモリ21上のスタックが使用されていてフラグレジス
タ17cにフラグがセットされている場合に、読出しフラ
グレジスタ32eにフラグがセットされるように設定する
ものとする。
【0055】なお、上記実施例ではパイプライン処理を
5ステージに分け、第1のプリフェッチステージから実
行ステージまでが4ステージであるために、コール命令
が検出判断された際に分岐先命令スタックキャッシュ19
にコール命令以後の2つの命令を記憶させるものとした
が、この数に限るものではなく、要はパイプライン処理
の第1ステージから実行ステージまでのステージ数から
2を減じた数以上の命令、実際にはフェッチステージか
ら実行ステージに至る間のステージ段数の命令を少なく
とも記憶可能とすればよい。
【0056】
【発明の効果】以上詳記した如く本発明によれば、特に
分岐後に分岐アドレスの次位置に復帰することが分かっ
ているサブルーチンの実行時に限っては、復帰時のタイ
ムラグをなくし、連想メモリを用いないでパイプライン
を乱さずに高速で命令分岐を実行することが可能なパイ
プライン処理による演算処理装置を提供することができ
る。
【図面の簡単な説明】
【図1】本発明の一実施例に係る回路構成を示すブロッ
ク図。
【図2】図1の分岐先命令スタックキャッシュ内の詳細
な回路構成を示すブロック図。
【図3】図1の外部メモリに対する記憶内容及びアドレ
ス指定の関係を示す図。
【図4】図1の総合制御回路17内の部分構成を示す図。
【図5】図1の総合制御回路17内の部分構成を示す図。
【図6】同実施例に係るパイプライン処理を例示する
図。
【図7】同実施例に係るパイプライン処理によるサブル
ーチンのコール命令及びこれに続く命令の実行を例示す
る図。
【図8】同実施例に係るパイプライン処理によるサブル
ーチンのリターン命令及びこれに続く命令の実行を例示
する図。
【図9】一般的なパイプライン処理を例示する図。
【図10】一般的なパイプライン処理によるサブルーチ
ンのコール命令及びこれに続く命令の実行を例示する
図。
【符号の説明】
11…マイクロプロセッサ、12…プリフェッチ処理回路、
12a…プリフェッチアドレスレジスタ(PFA)、12b
…プリデコーダ(PD)、13…フェッチ処理回路、13a
…デコードプログラムカウンタ(DPC)、14…デコー
ド処理回路、15…実行処理回路、16…書込み処理回路、
17…総合制御回路、17a…スタックポインタ(EXTI
SP)、17b…コントロール回路、17c…フラグレジス
タ(EXTISE)、18…レジスタ群、19…分岐先命令
スタックキャッシュ(TISC)、20…バスライン、21
…外部メモリ、22…入出力制御回路、23…磁気ディスク
装置、31…メモリ、32…アドレス発生回路、32a…トッ
プアドレスレジスタ、32b…ボトムアドレスレジスタ、
32c…フルフラグレジスタ、32d…エンプティフラグレ
ジスタ、32e…読出しフラグレジスタ、32f…コントロ
ール回路、41,42,44,46,48,48,51〜53…遅延回
路、43,45,47…「+1」回路。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 プログラム中の命令をパイプライン処理
    する演算処理装置であって、 パイプラインの第1ステージで命令をプリフェッチし、
    サブルーチンを呼出すコール命令とサブルーチンから復
    帰するリターン命令を検出するプリデコード機構を有し
    たプリフェッチバッファと、 上記プリフェッチバッファでコール命令検出時にこのコ
    ール命令に続くプログラム上の命令を少なくともパイプ
    ラインの第1ステージから実行ステージまでの数から2
    引いた数分だけ保持する内部キャッシュ記憶手段と、 上記プリフェッチバッファでリターン命令検出時にこの
    リターン命令を含まないリターン命令に続く複数命令を
    上記内部キャッシュ記憶手段に保持した複数命令に置換
    する置換手段とを具備したことを特徴とする演算処理装
    置。
  2. 【請求項2】 上記置換手段は上記プリフェッチバッフ
    ァでリターン命令検出時にこのリターン命令を含むリタ
    ーン命令以降の複数命令を上記内部キャッシュ記憶手段
    に保持した複数命令に置換し、実行ステージで復帰先の
    命令を実行すると同時にプログラムの実行アドレスを変
    更することを特徴とする請求項1記載の演算処理装置。
  3. 【請求項3】 上記プリフェッチバッファのプリデコー
    ド機構は上記内部キャッシュ記憶手段に対してコール命
    令に続くプログラム上の命令と共にその時点でのプログ
    ラムカウント値も保持させることを特徴とする請求項1
    記載の演算処理装置。
  4. 【請求項4】 上記内部キャッシュ記憶手段の飽和状態
    を検出してフラグ設定する第1のフラグ設定手段と、 この第1のフラグ設定手段の設定内容により上記内部キ
    ャッシュ記憶手段に記憶された命令を転送記憶する外部
    記憶手段とをさらに具備することを特徴とする請求項1
    記載の演算処理装置。
  5. 【請求項5】 上記内部キャッシュ記憶手段の一定の空
    乏状態を検出してフラグ設定する第2のフラグ設定手段
    とをさらに具備し、 上記置換手段は上記第2のフラグ設定手段の設定内容に
    より上記内部キャッシュ記憶手段に代えて上記外部記憶
    手段に記憶した複数命令を用いてリターン命令に続く複
    数命令を置換することを特徴とする請求項4記載の演算
    処理装置。
JP2933094A 1994-02-28 1994-02-28 演算処理装置 Pending JPH07239782A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2933094A JPH07239782A (ja) 1994-02-28 1994-02-28 演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2933094A JPH07239782A (ja) 1994-02-28 1994-02-28 演算処理装置

Publications (1)

Publication Number Publication Date
JPH07239782A true JPH07239782A (ja) 1995-09-12

Family

ID=12273225

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2933094A Pending JPH07239782A (ja) 1994-02-28 1994-02-28 演算処理装置

Country Status (1)

Country Link
JP (1) JPH07239782A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011503718A (ja) * 2007-11-02 2011-01-27 クゥアルコム・インコーポレイテッド プロシージャリターンシーケンスを加速するための方法およびシステム
GB2542831A (en) * 2015-09-30 2017-04-05 Imagination Tech Ltd Fetch unit for predicting target for subroutine return instructions

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011503718A (ja) * 2007-11-02 2011-01-27 クゥアルコム・インコーポレイテッド プロシージャリターンシーケンスを加速するための方法およびシステム
JP2013211023A (ja) * 2007-11-02 2013-10-10 Qualcomm Inc プロシージャリターンシーケンスを加速するための方法およびシステム
JP2015133126A (ja) * 2007-11-02 2015-07-23 クゥアルコム・インコーポレイテッドQualcomm Incorporated プロシージャリターンシーケンスを加速するための方法およびシステム
GB2542831A (en) * 2015-09-30 2017-04-05 Imagination Tech Ltd Fetch unit for predicting target for subroutine return instructions
GB2542831B (en) * 2015-09-30 2018-05-30 Imagination Tech Ltd Fetch unit for predicting target for subroutine return instructions
US10360037B2 (en) 2015-09-30 2019-07-23 MIPS Tech, LLC Fetch unit for predicting target for subroutine return instructions

Similar Documents

Publication Publication Date Title
KR100577445B1 (ko) 분기 예측들을 신속하게 특정하기 위해 명령 캐시 내의 바이트 범위들과 관련되는 분기 선택자들
US6339822B1 (en) Using padded instructions in a block-oriented cache
EP1003095B1 (en) A computer system for executing branch instructions
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US6122727A (en) Symmetrical instructions queue for high clock frequency scheduling
KR100431168B1 (ko) 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템
US6185675B1 (en) Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US6212622B1 (en) Mechanism for load block on store address generation
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
JP2002508865A (ja) 高周波数での命令ディスパッチのための二重命令キューを用いた命令アライメントユニット
JP3794918B2 (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JPH06266556A (ja) データ処理装置
US5890006A (en) Apparatus for extracting instruction specific bytes from an instruction
JPH07239782A (ja) 演算処理装置
US6061775A (en) Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types
JP3490005B2 (ja) 命令制御装置及びその方法
US6134650A (en) Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data
JP2001022577A (ja) 情報処理装置
JPWO2008155839A1 (ja) 命令処理装置
JP3493110B2 (ja) 高速分岐処理装置
JPH06131180A (ja) 命令処理方式および命令処理装置
KR100632317B1 (ko) 프로세서에서 명령어들을 버퍼링하기 위한 방법 및 그 시스템
JPH0646381B2 (ja) 命令取出し装置
JPH01271842A (ja) 情報処理装置