JP2001100993A - サブルーチンリターン相当の命令の分岐予測を行う装置および方法 - Google Patents
サブルーチンリターン相当の命令の分岐予測を行う装置および方法Info
- Publication number
- JP2001100993A JP2001100993A JP27622199A JP27622199A JP2001100993A JP 2001100993 A JP2001100993 A JP 2001100993A JP 27622199 A JP27622199 A JP 27622199A JP 27622199 A JP27622199 A JP 27622199A JP 2001100993 A JP2001100993 A JP 2001100993A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- return
- subroutine
- branch
- equivalent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 11
- 238000010586 diagram Methods 0.000 description 20
- 230000010365 information processing Effects 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000003672 processing method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101100316860 Autographa californica nuclear polyhedrosis virus DA18 gene Proteins 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
用意されていない情報処理装置において、サブルーチン
リターン相当の命令を正しく認識することが課題であ
る。 【解決手段】 サブルーチンコール相当の命令により指
定されたリンクレジスタのレジスタ番号をリンクスタッ
ク33に記録しておき、比較回路32により、サブルー
チンリターンの可能性のある分岐命令の分岐先アドレス
レジスタの番号を、記録されたレジスタ番号と比較す
る。そして、両者が一致すれば、その分岐命令をサブル
ーチンリターン相当の命令と認識する。
Description
する情報処理装置に係り、特に、サブルーチンリターン
のための特別な命令が用意されていないアーキテクチャ
において、サブルーチンリターン相当の命令の分岐予測
を行う分岐予測装置およびその方法に関する。
ライン処理やアウトオブオーダー処理のような技術を用
いて、ある命令の実行の完了を待たずに後続の命令の実
行を次々と開始することで、性能の向上が図られてき
た。
が、分岐命令のように後続の実行シーケンスを変更する
命令である場合、分岐が成立するときに、分岐先の命令
を実行パイプラインに投入する必要がある。そうしなけ
れば、実行パイプラインが乱され、最悪の場合は、逆に
性能が落ちてしまう。
ブル)に代表される分岐予測機構を設けて、分岐の成立
・不成立を予測することで、性能の向上が図られてき
た。このような装置において、分岐の成立が予測された
場合には、分岐命令の後に分岐先の命令が実行パイプラ
インに投入されるため、分岐が実際に成立したときに実
行パイプラインが乱されることがない。
(戻り先)は、その命令の性質上、実行の度に変わるこ
とが多い。これは、サブルーチンの呼び出し元であるサ
ブルーチンコール命令の場所が実行の度に異なるためで
ある。このような命令に対しては、リターンアドレスス
タックと呼ばれる専用の分岐予測機構を設けることで、
性能の向上が可能となることが知られている。
た従来の分岐予測機構には、以下のような問題がある。
CPU(中央処理装置)アーキテクチャの中には、サブ
ルーチンコール・リターン命令対として、あらかじめ特
別な命令を準備していないものがある。このようなアー
キテクチャにおいて、リターンアドレススタックを採用
して性能向上を図るためには、実行される分岐命令の中
から、サブルーチンコール・リターン相当の命令対を動
的に抽出する技術が必要となる。
ード時にサブルーチンコール・リターン命令であるか否
かを静的に決定していたため、ハードウェアによる解釈
と異なるプログラミングは好ましいものではなかった。
この場合、好ましくないプログラミングにより、コール
・リターン対の対応関係が、一旦、実際とずれてしまう
と、リターンアドレススタックの特性上、それ以降の分
岐先を次々と誤ることになる。このため、リターンアド
レススタックが多段であればあるほど、性能を落として
いた。
いて使用される、サブルーチンコール・リターン命令対
を含むプログラムの例を示している。この例では、メイ
ンルーチンの中の命令“balr 14,15”によ
り、サブルーチンS1が呼び出され(Call 1)、
さらにその中の命令“balr15,13”により別の
サブルーチンS2が呼び出されている(Call
2)。そして、条件リターン命令“bcr 7,15”
により制御がサブルーチンS1に戻り(Return
2)、さらに無条件リターン命令“bcr 15,1
4”によりメインルーチンに戻っている(Return
1)。
ションコード“balr”を、サブルーチンコール相当
の命令として認識し、特定のオペレーションコードとオ
ペランドを含む無条件分岐命令“bcr 15,x”
(xは任意)を、サブルーチンリターン相当の命令とし
て認識するものとする。
“bcr 7,15”は、サブルーチンリターン相当の
命令として認識されずに、見落とされる。このため、従
来のリターンアドレススタックでは、Call 2に対
応するリターンがReturn1であると認識してしま
い、分岐予測に失敗する。実際には、Call 2に対
応する正しいリターンは、Return 2である。
ード“bcr”を含むすべての命令を単純にサブルーチ
ンリターン相当の命令として認識すると、サブルーチン
S2の中の単なる条件分岐命令である“bcr 4,
3”が、Call 2に対応するリターンであると認識
されてしまう。したがって、この場合も、リターンアド
レススタックがコール・リターン対を誤認識することが
分かる。
持つ情報処理装置においては、命令の実行時に、正しい
サブルーチンコール・リターン命令対を認識することが
重要になる。
ための特別な命令が用意されていない情報処理装置にお
いて、サブルーチンリターン相当の命令を正しく認識す
る分岐予測装置およびその方法を提供することである。
測装置の原理図である。本発明の第1の局面において、
分岐予測装置は、格納手段1、比較手段2、および識別
手段3を備える。
命令が検出されたとき、サブルーチンの戻り先アドレス
を指定する情報を格納する。比較手段2は、サブルーチ
ンリターン相当の命令になり得る命令が検出されたと
き、そのサブルーチンリターン相当の命令になり得る命
令の分岐先アドレスを指定する情報と、格納手段1に格
納された戻り先アドレスを指定する情報とを比較し、比
較結果を出力する。識別手段3は、その比較結果に基づ
いて、上記サブルーチンコール相当の命令に対応するサ
ブルーチンリターン相当の命令を識別する。
ーチンコール相当の動作をする命令であるとき、その命
令により指定される戻り先アドレスや戻り先アドレスを
保持するレジスタの情報等が、戻り先アドレスを指定す
る情報として格納手段1に格納される。
サブルーチンリターン相当の動作をする命令である可能
性があるとき、その命令により指定される分岐先アドレ
スや分岐先アドレスを保持するレジスタの情報等が、分
岐先アドレスを指定する情報として選択され、比較手段
2により、その情報が戻り先アドレスを指定する情報と
比較される。
指定する情報と戻り先アドレスを指定する情報が一致す
れば、後者の命令を前者の命令に対応するサブルーチン
リターン相当の命令であると識別し、それらが一致しな
ければ、後者の命令を前者の命令に対応するサブルーチ
ンリターン相当の命令ではないと識別する。
スを指定する情報を用いることで、正しいサブルーチン
コール・リターン相当の命令対を動的に抽出することが
できる。したがって、コール・リターン対の対応関係が
正しく認識され、その対応関係のズレが防止される。
予測装置は、スタック手段4、プッシュ手段5、比較手
段2、および識別手段3を備える。スタック手段4は、
サブルーチンの戻り先アドレスを指定する情報を格納す
る。プッシュ手段5は、サブルーチンコール相当の命令
が検出されたとき、上記戻り先アドレスを指定する情報
をスタック手段4にプッシュする。
の命令になり得る命令が検出されたとき、そのサブルー
チンリターン相当の命令になり得る命令の分岐先アドレ
スを指定する情報と、スタック手段4の先頭エントリに
格納された戻り先アドレスを指定する情報とを比較し、
比較結果を出力する。識別手段3は、その比較結果に基
づいて、上記サブルーチンコール相当の命令に対応する
サブルーチンリターン相当の命令を識別する。
が検出されると、プッシュ手段5は、戻り先アドレスを
指定する情報をスタック手段4にプッシュする。次に、
サブルーチンリターン相当の動作をする命令である可能
性がある命令が検出されると、比較手段2は、その命令
の分岐先アドレスを指定する情報を、スタック手段4に
プッシュされた戻り先アドレスを指定する情報と比較す
る。
指定する情報と戻り先アドレスを指定する情報が一致す
れば、後者の命令を前者の命令に対応するサブルーチン
リターン相当の命令であると識別し、それらが一致しな
ければ、後者の命令を前者の命令に対応するサブルーチ
ンリターン相当の命令ではないと識別する。
スを指定する情報をスタック手段4にプッシュすること
で、第1の局面の分岐予測装置と同様に、コール・リタ
ーン対の対応関係が正しく認識され、その対応関係のズ
レが防止される。
予測装置は、リターンアドレススタック手段6、比較手
段2、および識別手段3を備える。リターンアドレスス
タック手段6は、サブルーチンコール相当の命令が検出
されたとき、サブルーチンの戻り先アドレスを格納す
る。比較手段2は、サブルーチンリターン相当の命令に
なり得る命令が検出されたとき、そのサブルーチンリタ
ーン相当の命令になり得る命令の分岐先アドレスと、リ
ターンアドレススタック手段6に格納された戻り先アド
レスとを比較し、比較結果を出力する。識別手段3は、
その比較結果に基づいて、上記サブルーチンコール相当
の命令に対応するサブルーチンリターン相当の命令を識
別する。
が検出されると、その命令により指定された戻り先アド
レスがリターンアドレススタック手段6にプッシュされ
る。次に、サブルーチンリターン相当の動作をする命令
である可能性がある命令が検出されると、比較手段2
は、その命令の分岐先アドレスを、リターンアドレスス
タック手段6にプッシュされた戻り先アドレスと比較す
る。
戻り先アドレスが一致すれば、後者の命令を前者の命令
に対応するサブルーチンリターン相当の命令であると識
別し、それらが一致しなければ、後者の命令を前者の命
令に対応するサブルーチンリターン相当の命令ではない
と識別する。
段6にプッシュされた戻り先アドレスを、直接、命令の
分岐先アドレスと比較することで、第1の局面の分岐予
測装置と同様に、コール・リターン対の対応関係が正し
く認識され、その対応関係のズレが防止される。
手段4は、後述する図3のリンクスタック33、または
リターンアドレススタック35に対応する。また、例え
ば、図1の比較手段2と識別手段3は、後述する図11
のEXNOR回路101、OR回路102、およびAN
D回路103、または後述する図17の比較回路151
およびAND回路152に対応する。また、図1のプッ
シュ手段5は、後述する図12の制御回路に対応し、図
1のリターンアドレススタック手段6は、図3のリター
ンアドレススタック35に対応する。
明の実施の形態を詳細に説明する。命令処理装置におい
ては、サブルーチンコール相当の命令により、戻り先の
アドレスを格納するリンクレジスタが指定され、指定さ
れたリンクレジスタを用いて、サブルーチンリターン相
当の命令による分岐が行われる。
命令は、例えば、図2に示すように、オペレーションコ
ード(OPコード)11、第1オペランド12、および
第2オペランド13を含む。サブルーチンコール相当の
命令においては、第1オペランド12が、リンクレジス
タのレジスタ番号を表し、サブルーチンリターン相当の
命令においては、第2オペランド13が、分岐先アドレ
スを格納するレジスタのレジスタ番号を表す。
チンコール時に指定されたリンクレジスタのレジスタ番
号を記録するリンクスタックを設ける。そして、リンク
スタックに記録された番号のレジスタ内のアドレスを分
岐先アドレスとして用いる分岐命令が出現したとき、そ
の分岐命令をサブルーチンリターン相当の命令と認識す
る。
のレジスタ番号をリンク情報として用いて、サブルーチ
ンコール相当の命令とサブルーチンリターン相当の命令
を対応付けることができ、サブルーチンコール・リター
ン相当の命令対を動的に抽出することが可能になる。し
たがって、コール・リターン対の対応関係を正しく認識
することができ、その対応関係のズレが防止されるの
で、リターンアドレススタックによる分岐予測の精度が
向上する。
含まれるリンクレジスタの番号と、リターン命令に含ま
れる分岐先アドレスレジスタの番号を比較すれば、正し
いコール・リターン対を認識することができ、分岐予測
も成功する。
5”の第1オペランドは、リンクレジスタの番号が“1
4”であることを表しており、Return 1の命令
“bcr 15,14”の第2オペランドは、分岐先ア
ドレスレジスタの番号が“14”であることを表してい
る。したがって、後者の命令は、Call 1に対応す
るリターン相当の命令であると認識される。
5,13”の第1オペランドは、リンクレジスタの番号
が“15”であることを表しており、Return 2
の命令“bcr 7,15”の第2オペランドは、分岐
先アドレスレジスタの番号が“15”であることを表し
ている。したがって、後者の命令は、Call 2に対
応するリターン相当の命令であると認識される。
ン命令対を準備していないアーキテクチャの一例を用い
て、本実施形態における情報処理装置の動作をより詳細
に説明する。このようなアーキテクチャは、例えば、E
SA(enterprise systems architecture )/390の
POO(principles of operation )により規定されて
いる。
としては、サブルーチンリターン相当の命令による戻り
先のアドレス(リンクアドレス)をレジスタに保存可能
である命令が考えられる。このような命令には、ba
l、balr、bas、basr、bassm等があ
る。
能な命令としては、一般の分岐命令のほとんどが挙げら
れる。これらの中でも、特に、分岐先アドレスを1つの
レジスタで指定する分岐命令、すなわち、RR形式命令
が用いられやすい。RR形式命令には、bcr、bsm
等がある。もちろん、これらの命令は、通常の無条件分
岐命令あるいは条件分岐命令としても用いられる。
現頻度は低いものの、サブルーチンコール・リターン対
を崩し得る命令も存在し得る。このような命令として
は、例えば、lpswや、bc等のRX形式命令が挙げ
られる。また、一部の割り込み事象においても、サブル
ーチンコール・リターン対が崩されることがある。
リターン先アドレスを1つのレジスタのみで指定すると
は限らず、特に、ディスプレイスメントを指定する場合
がある。他にも、リンクレジスタの値を書き換える等の
処理により、戻り先アドレスが変更される場合もある。
して使用された場合、コール時にリターンアドレススタ
ックに登録された戻り先アドレスが正しくならないの
で、リターン時にリターンアドレススタックを参照しな
いことが望ましい。その代わりに、通常の分岐命令と同
じように、ブランチヒストリに登録されている予測分岐
先を参照すれば、正しい戻り先アドレスが得られる可能
性がある。
スタで直接指定せず、オペランドが指すメモリ上のデー
タ列を分岐先アドレスとして用いる。このような命令列
が出現した場合には、コール・リターン対の対応関係が
崩れてしまう可能性がある。あるいはまた、割り込みが
発生した場合にも、その割り込みの種類によっては、同
様にコール・リターン対が崩れてしまうことがある。
かの機構を組み込む必要がある。その一方法として、こ
のような命令が実行されたときやこのような割り込みが
発生したときに、リターンアドレススタックとリンクス
タック双方のエントリをすべて消去してしまうことが考
えられる。このような制御により、リターンアドレスス
タックの対応のズレが防止され、発生したズレにそれ以
降の予測結果が引き摺られて性能が劣化することはなく
なる。
ドで実現されているにもかかわらず、一部の分岐命令
は、他の複雑な動作を伴うために、マイクロコードによ
り制御されている場合がある。このような複雑な分岐命
令は、回路が複雑になるわりには得るものが少ない等の
理由で、ブランチヒストリに登録しているメリットがな
い。このため、リターンアドレススタックも動作しな
い。
な複雑な命令でも、サブルーチンコールもしくはリター
ン相当の命令になり得る場合には、その命令に対する対
策を講じなければ、リターンアドレススタックの対応が
ずれてしまい、性能劣化の原因となる。
ないサブルーチンコール相当の分岐命令が実行された後
に、それに対応すると考えられるサブルーチンリターン
相当の命令が検出されたとき、ブランチヒストリおよび
リターンアドレススタックにおいて、そのサブルーチン
リターン相当の命令をリターン相当の命令とは認識しな
いような制御を行う。
ジスタをリンクレジスタとして使用することが推奨され
る場合等のように、特定のレジスタがリンクレジスタと
して非常に多く使われることがある。このようなシステ
ムでは、その特定のレジスタを用いる命令を、常に、サ
ブルーチンコールまたはリターン相当の命令と認識する
ことにする。これにより、リンクスタックのエントリを
効率的に用いることができ、規模の小さなリンクスタッ
クでも大きな効果が得られる。
のレジスタ番号として“0”を指定すると、分岐は行わ
れない。このようなアーキテクチャでは、レジスタ番号
“0”をリンク情報として、対応するサブルーチンリタ
ーン相当の命令を判別することは不可能である。そこ
で、サブルーチンコール相当の命令において、リンクレ
ジスタの番号として“0”が指定されたときには、この
命令をサブルーチンコール相当の命令として認識しない
ようにする。
の構成図である。図3の命令処理装置は、命令フェッチ
回路21、分岐予測機構22、デコーダ23、分岐先ア
ドレス生成回路24、分岐命令実行処理回路25、およ
び命令実行完了処理回路26を備え、命令をアウトオブ
オーダー方式で処理する。アウトオブオーダー処理方式
を採用した命令処理装置においては、性能の向上を図る
ため、1つの命令実行の完了を待たずに、後続の命令列
が順次複数のパイプラインに投入される。
は、命令フェッチパイプラインの回路に対応する。分岐
予測機構22は、予測回路31、比較回路32、および
リンクスタック33を含み、予測回路31は、ブランチ
ヒストリ34とリターンアドレススタック35を含む。
回路24、分岐命令実行処理回路25、および命令実行
完了処理回路26は、命令実行パイプラインの回路に対
応する。分岐命令実行処理回路25は、複数のRSBR
(Reservation Station forBRanch)36を含む。
ス発行サイクル(IA)、テーブルサイクル(IT)、
バッファサイクル(IB)、および結果サイクル(I
R)を含み、命令実行パイプラインは、デコードサイク
ル(D)、アドレス計算サイクル(A)、実行サイクル
(X)、更新サイクル(U)、およびライトサイクル
(W)を含む。
の処理待ちのスタックである。分岐命令実行処理回路2
5は、アウトオブオーダー処理方式に従って、スタック
内の処理可能なエントリを選択し、プログラムにより指
示された順序とは異なる順序で、随時、分岐命令を実行
することができる。
bal、balr(ただし、balr 1,14を除
く)、bras、bas、およびbasrは、サブルー
チンコール相当の命令として扱われ、bcr、bsm、
balr 1,14は、サブルーチンリターン相当の命
令として扱われる。また、bassmは、サブルーチン
コール相当の命令ではあるが、RSBR36では扱われ
ない複雑命令である。
行した結果、分岐が生じることが判明した場合、分岐先
の命令アドレスと分岐命令自身の命令アドレスが、対に
してブランチヒストリ34に登録される。そして、命令
フェッチ回路21は、分岐命令をフェッチしたとき、次
の命令のフェッチに先立ってブランチヒストリ34を検
索し、分岐先を予測する。
相当の命令を検出したとき、その命令のオペランドが表
すリンクレジスタの番号がリンクスタック33にプッシ
ュされ、対応する戻り先の命令アドレスがリターンアド
レススタック35にプッシュされる。
ン相当の命令になり得る命令を検出すると、比較回路3
2は、リンクスタック33の先頭エントリに登録されて
いるレジスタ番号と、検出された命令のオペランドが表
す分岐先アドレスレジスタの番号を比較する。そして、
2つのレジスタ番号が一致すれば、その命令がサブルー
チンリターン相当の動作をする命令であると判断し、比
較結果を予測回路31に出力する。
タ番号がポップされ、リターンアドレススタック35か
ら対応する命令アドレスがポップされる。そして、ポッ
プされた命令アドレスが、予測分岐先として命令フェッ
チ回路21に渡される。
示すように、リターンアドレススタック35のエントリ
と1対1に対応しており、これらの2つのスタックは、
同時にプッシュ動作およびポップ動作を行う。ここで
は、リンクスタック33のエントリには、4ビットのレ
ジスタ番号〈0:3〉が格納されており、リターンアド
レススタック35のエントリには、32ビットの分岐先
アドレス〈0:31〉が格納されている。これらのスタ
ックは、一般に、n個(n≧1)のエントリからなるn
段のスタックとして実装される。
られる信号を示している。デコーダ23は、信号+D_
BALR、+D_BAL、+D_BRAS、+D_BA
S、+D_BASR、+D_BALR_1E、+D_B
CR、+D_BSM、+D_BASSM、および+D_
OPC〈8:15〉を分岐命令実行処理回路25に出力
する。
_BRAS、+D_BAS、+D_BASR、+D_B
ALR_1E、+D_BCR、+D_BSM、および+
D_BASSMは、それぞれ、balr、bal、br
as、bas、basr、balr 1,14、bc
r、bsm、およびbassmが検出されたときに、論
理“1”となる。また、信号+D_OPC〈8:15〉
は、機械語命令のビット〈8:15〉のデータを表す。
HIS_UPDATE_SUBROUTINE_CAL
L、+BRHIS_UPDATE_SUBROUTIN
E_RTN、+BRHIS_UPDATE_CALL_
RTN_REG〈0:3〉、+BRHIS_UPDAT
E_BSM、および+D_BASSMを分岐予測機構2
2に出力する。
ROUTINE_CALLは、命令がサブルーチンコー
ル相当の命令と判別されたときに論理“1”となり、信
号+BRHIS_UPDATE_SUBROUTINE
_RTNは、命令がサブルーチンリターン相当の命令に
なり得る命令と判別されたときに論理“1”となる。ま
た、信号+BRHIS_UPDATE_CALL_RT
N_REG〈0:3〉は、命令のオペランドにより指定
されたレジスタ番号を表し、信号+BRHIS_UPD
ATE_BSMは、bsm命令の実行が完了したときに
論理“1”となる。
ら、図3の命令処理装置の構成と動作についてより詳細
に説明する。まず、デコーダ23による命令デコード時
に、図5に示した信号がRSBR36に入力され、サブ
ルーチンコール相当の命令とサブルーチンリターン相当
の命令になり得る命令が判別される。このうち、サブル
ーチンリターン相当の命令になり得る命令については、
後述するリンクスタック33の回路により、サブルーチ
ンリターンとのより厳密な対応関係が識別されることに
なる。
ている。図6において、入力信号−D_BALR_1E
は、図5の信号+D_BALR_1Eの否定を表し、命
令“balr 1,14”がデコードされたときに論理
“0”となる。AND回路41は、入力信号+D_BA
LRと−D_BALR_1Eの論理積を、OR回路42
に出力する。したがって、“balr 1,14”以外
のbalr命令がデコードされたとき、AND回路41
の出力は論理“1”となる。
力信号と、入力信号+D_BAL、+D_BRAS、+
D_BASR、および+D_BASの論理和を、信号+
D_SUBROUTINE_CALLとして出力する。
この信号+D_SUBROUTINE_CALLは、デ
コードされた命令がサブルーチンコール相当の命令であ
るときに論理“1”となるフラグとして用いられる。
ALR_1E、+D_BCR、および+D_BSMの論
理和を、信号+D_SUBROUTINE_RETUR
Nとして出力する。この信号+D_SUBROUTIN
E_RETURNは、デコードされた命令がサブルーチ
ンリターン相当の命令になり得る命令であるときに論理
“1”となるフラグとして用いられる。
通常は、デコード結果がRSBR36に登録される。こ
の時点で、RSBR36には、サブルーチンコール・リ
ターン判別結果を表すフラグと、リンクレジスタや分岐
先アドレスレジスタの情報等が登録される。
では、サブルーチンコール相当の命令になり得る命令
(機械語命令)のビット〈8:11〉にリンクレジスタ
の番号が指定され、サブルーチンリターン相当の命令に
なり得る命令(機械語命令)のビット〈12:15〉に
分岐アドレスレジスタの番号が指定される。そこで、ビ
ット〈8:15〉のデータがこれらのレジスタの情報と
して登録される。
ている。図7において、入力信号+RSBR_VALI
Dは、対応するRSBR36が有効である間、論理
“1”となる。ラッチ回路51は、入力信号+D_OP
C〈8:15〉の値をラッチし、信号+RSBR_OP
C〈8:15〉として出力する。
が生成したフラグ+D_SUBROUTINE_CAL
Lと+D_SUBROUTINE_RETURNの値を
ラッチし、それぞれ、信号+RSBR_SUBROUT
INE_CALLと+RSBR_SUBROUTINE
_RETURNとして出力する。
となると、これらの情報の登録が終了し、対応するRS
BR36が有効である間、ラッチ回路51、52に登録
された情報が保持される。
SBR36に登録されたサブルーチンコール・リターン
判別結果とレジスタ情報が、その他の分岐履歴情報と同
時に、分岐予測機構22へ送出される。サブルーチンコ
ール相当の命令である場合は、リンクレジスタの番号が
レジスタ情報として選択され、サブルーチンリターン相
当の命令になり得る命令である場合は、分岐先アドレス
レジスタの番号がレジスタ情報として選択される。
ている。図8において、AND回路61は、図7の登録
回路からの信号+RSBR_SUBROUTINE_C
ALLと+RSBR_OPC〈8:11〉の論理積を、
OR回路63に出力する。したがって、フラグ+RSB
R_SUBROUTINE_CALLが立っているとき
は、リンクレジスタの番号がAND回路61から出力さ
れる。
からの信号+RSBR_SUBROUTINE_RET
URNと+RSBR_OPC〈12:15〉の論理積
を、OR回路63に出力する。したがって、フラグ+R
SBR_SUBROUTINE_RETURNが立って
いるときは、分岐先アドレスレジスタの番号がAND回
路62から出力される。
1、62の出力信号の論理和を、信号+RSBR_CA
LL_RETURN_REG〈0:3〉として出力す
る。ここで、フラグ+RSBR_SUBROUTINE
_CALLと+RSBR_SUBROUTINE_RE
TURNが同時に立つことはないので、OR回路63
は、AND回路61、62の出力信号を選択的に出力す
ることになる。
CALL、+RSBR_SUBROUTINE_RET
URN、および+RSBR_CALL_RETURN_
REG〈0:3〉は、ぞれぞれ、図5の信号BRHIS
_UPDATE_SUBROUTINE_CALL、B
RHIS_UPDATE_SUBROUTINE_RT
N、+BRHIS_UPDATE_CALL_RTN_
REG〈0:3〉として、分岐予測機構22へ送出され
る。
ブルーチンリターン相当の命令を含む)において、分岐
先アドレスレジスタの番号として“0”を指定すると、
分岐は行われない。また、逆に、デコード時にサブルー
チンコール相当の命令と判別された命令でも、リンクレ
ジスタの番号として“0”が指定された場合には、この
命令をサブルーチンコール相当の命令として識別しない
方がよい。
機構22に設けて、送られてきたレジスタ番号が“0”
でないときにのみ有効となる制御信号を生成する。図9
において、NAND回路71は、信号+BRHIS_U
PDATE_CALL_RTN_REG〈0:3〉の4
つのビットの否定の論理積を求め、その論理積の否定を
信号+SBRTN_LINK_REG_VALとして出
力する。
HIS_UPDATE_CALL_RTN_REG
〈0:3〉が表すレジスタ番号が“0”でないときにの
み、論理“1”となり、リンクレジスタが有効であるこ
とを表す。この信号を用いたリンクスタック33の制御
については、後述することにする。
ドレスレジスタの番号として、“0”以外の特定の番号
が用いられた場合も、図9と同様の回路により同様の制
御信号が生成される。
なbassm命令については、ハードワイヤードではな
く、マイコロコードにより実現されるため、ブランチヒ
ストリ34には登録されず、分岐履歴情報の更新時に情
報が送られてこない。その代わりに、デコード時に生成
された図5の信号+D_BASSMが分岐予測機構22
に送出される。
測機構22に設けて、bassm命令に関する制御を行
う。ここでは、bassm命令に対応するリターン命令
はbsmのみであるものと仮定している。
チ回路83の出力とNAND回路84の出力の論理積を
OR回路82に出力し、OR回路82は、入力信号+D
_BASSMとAND回路81の出力信号の論理和をラ
ッチ回路83に出力する。ラッチ回路83は、実質的に
Set−Resetフリップフロップの動作を行い、O
R回路82の出力信号をラッチして、NAND回路84
に出力する。
BRHIS_UPDATE_BSMと、図9の制御信号
+SBRTN_LINK_REG_VALと、ラッチ回
路83の出力信号の論理積の否定を、信号−SBRTN
_BASSM_BSM_RTN_VALIDとして出力
する。この信号−SBRTN_BASSM_BSM_R
TN_VALIDは、論理“0”のとき、実行されたb
sm命令が上記bassm命令に対応するリターン命令
であることを表す。
assm命令が実行された場合には、信号+D_BAS
SMが論理“1”となり、ラッチ回路83の出力も論理
“1”となる。そして、ラッチ回路83の出力と図9の
信号+SBRTN_LINK_REG_VALが論理
“1”である間に、bsm命令の実行が完了して信号+
BRHIS_UPDATE_BSMが論理“1”となる
と、実行されたbsm命令は上記bassm命令に対応
するリターン命令であると識別される。
_BSM_RTN_VALIDが論理“0”となるた
め、AND回路81の出力も論理“0”となる。また、
信号+D_BASSMも論理“0”であるため、ラッチ
回路83の出力も論理“0”となる。
は、bassm命令およびbsm命令が検出されたこと
を表す所定のフラグとして用いられ、分岐するbass
m命令が検出されたときにセットされ、それに対応する
bsm命令が検出されたときにリセットされる。
SM_RTN_VALIDと同時に、不図示の信号+S
BRTN_BASSM_BSM_RTN_VALIDも
生成される。この信号+SBRTN_BASSM_BS
M_RTN_VALIDは、信号−SBRTN_BAS
SM_BSM_RTN_VALIDの否定に対応し、論
理“1”のとき、実行されたbsm命令が上記bass
m命令に対応するリターン命令であることを表す。
するbsm命令は、ブランチヒストリ34あるいはリタ
ーンアドレススタック35上では、リターン相当の命令
とは認識されなくなる。なぜなら、bassm命令自身
がコール相当の命令として登録されていないからであ
る。
路25から送られてきた信号と、図9および図10の識
別回路により生成された特別な制御信号とを用いて、サ
ブルーチンコール・リターン相当の命令を判別する。
を示している。図11において、入力信号−BRHIS
_UPDATE_SUBROUTINE_RTNは、図
5の信号+BRHIS_UPDATE_SUBROUT
INE_RTNの否定に対応する。
G_STK0〈0:3〉は、リンクスタック33の先頭
エントリに保持されたレジスタ番号を表す。入力信号+
SBRTN_LINK_REG_EQ_Eは、図5の信
号+BRHIS_UPDATE_CALL_RTN_R
EG〈0:3〉がレジスタ番号“14”を表すとき、論
理“1”となり、それ以外の番号を表すとき、論理
“0”となる。
S_UPDATE_SUBROUTINE_CALLと
図9の信号+SBRTN_LINK_REG_VALの
論理積を、AND回路92に出力する。AND回路92
は、AND回路91の出力信号と信号−BRHIS_U
PDATE_SUBROUTINE_RTNの論理積
を、信号+BR_COMP_SUBROUTINE_C
ALLとして出力する。
TINE_CALLは、分岐予測機構22において、サ
ブルーチンコール相当の命令を表すフラグ(サブルーチ
ンコールフラグ)として用いられる。このフラグが論理
“1”のとき、分岐命令実行処理回路25で実行された
命令はサブルーチンコール相当の命令であると判別され
る。実行された命令がリンクレジスタとして番号“0”
のレジスタを指定していた場合は、このフラグが論理
“0”となり、サブルーチンコール相当の命令ではない
と判別される。
号+BRHIS_UPDATE_CALL_RTN_R
EG〈0:3〉と、信号+RTN_LINK_REG_
STK0〈0:3〉を比較し、2つの信号の排他的論理
和の否定を出力する。OR回路102は、EXNOR回
路101の出力信号と信号+SBRTN_LINK_R
EG_EQ_Eの論理和を出力する。
+BRHIS_UPDATE_SUBROUTINE_
RTNと、図9の信号+SBRTN_LINK_REG
_VALと、図10の信号−SBRTN_BASSM_
BSM_RTN_VALIDと、OR回路102の出力
信号の論理積を、信号+BR_COMP_SUBROU
TINE_RTNとして出力する。
TINE_RTNは、分岐予測機構22において、サブ
ルーチンリターン相当の命令を表すフラグ(サブルーチ
ンリターンフラグ)として用いられる。このフラグが論
理“1”のとき、分岐命令実行処理回路25で実行され
た命令はサブルーチンリターン相当の命令であると判別
される。この判別動作は、対応する分岐履歴情報がブラ
ンチヒストリ34やリターンアドレススタック35に登
録される前に行われる。
およびAND回路103からなるサブルーチンリターン
判別回路は、図3の比較回路32に対応する。この判別
回路によれば、EXNOR回路101により、実行され
たサブルーチンリターン相当の命令になり得る命令の分
岐先アドレスレジスタの番号がリンクスタック33の先
頭エントリと比較され、それらが一致したとき、実行さ
れた命令がサブルーチンリターン相当の命令であると判
別される。
2では、bassm命令に対応するbsm命令をリター
ン相当の命令として扱わないので、信号−SBRTN_
BASSM_BSM_RTN_VALIDにより、AN
D回路103の出力が抑制されている。
は、サブルーチンリターンにおける分岐先アドレスレジ
スタとして用いられることが多い。そこで、このレジス
タが分岐先アドレスレジスタとして指定された場合は、
信号+SBRTN_LINK_REQ_EQ_Eを用い
て、EXNOR回路101の比較結果にかかわらず、実
行された命令をサブルーチンリターン相当の命令とみな
している。
とを表す分岐先アドレスレジスタの番号として、“1
4”以外の特定の番号が用いられた場合も、図11と同
様の回路により同様の制御が行われる。
ラグとサブルーチンリターンフラグを用いて、リンクス
タック33は、図12のような制御回路によりプッシュ
動作とポップ動作を行う。ここでは、リンクスタック3
3は2つのエントリからなるものとし、入力信号+RT
N_LINK_REG_STK0〈0:3〉と+RTN
_LINK_REG_STK1〈0:3〉は、それぞ
れ、先頭エントリ(エントリ0)と2番目のエントリ
(エントリ1)に保持されたレジスタ番号を表してい
る。
REQ_EQ_Eは、図11の信号+SBRTN_LI
NK_REQ_EQ_Eの否定に対応し、入力信号BR
HIS_UPDATE_TAKENは、分岐命令による
分岐が実行され、分岐履歴情報が更新されるときに、論
理“1”となる。
の信号の論理積を出力する。AND回路112は、図1
1のフラグ+BR_COMP_SUBROUTINE_
CALLとAND回路111の出力信号の論理積を、動
作信号+PUSH_RTN_STACK_LINK_R
EGとして出力する。この信号は、リンクスタック33
およびリターンアドレススタック35のプッシュ動作の
指示に用いられ、サブルーチンコール相当の命令が実行
されて分岐履歴情報が更新されるときに、論理“1”と
なる。
グ+BR_COMP_SUBROUTINE_RTNと
AND回路111の出力信号の論理積を、動作信号+P
OP_RTN_STACK_LINK_REGとして出
力する。この信号は、リンクスタック33およびリター
ンアドレススタック35のポップ動作の指示に用いら
れ、サブルーチンリターン相当の命令が実行されて分岐
履歴情報が更新されるときに、論理“1”となる。
4”を指定するサブルーチンコール相当の命令と、分岐
先アドレスレジスタの番号として“14”を指定するサ
ブルーチンリターン相当の命令は、常にコール・リター
ン命令対を形成するものとすると、リンクスタック33
を用いなくてもこれらの対応関係を抽出することができ
る。
33を動作させないように、信号−SBRTN_LIN
K_REQ_EQ_Eを用いて、プッシュ動作およびポ
ップ動作の動作信号を抑制している。これにより、リン
クスタック33のエントリの浪費が防止され、少ない段
数でも効率的な動作が可能になる。
BRHIS_UPDATE_CALL_RTN_REG
〈0:3〉と動作信号+PUSH_RTN_STACK
_LINK_REGの論理積を出力し、AND回路11
5は、信号+RTN_LINK_REG_STK1
〈0:3〉と動作信号+POP_RTN_STACK_
LINK_REGの論理積を出力する。
4、115の出力信号の論理和を、信号+SET_RT
N_LINK_REG_STK0〈0:3〉として出力
する。この信号は、リンクスタック33の先頭エントリ
にセットされるレジスタ番号を表す。
TACK_LINK_REGと+POP_RTN_ST
ACK_LINK_REGが同時に論理“1”になるこ
とはないので、OR回路116は、AND回路114、
115の出力信号を選択的に出力することになる。した
がって、プッシュ動作の場合は、サブルーチンコール相
当の命令により指定されたリンクレジスタの番号がセッ
トされ、ポップ動作の場合は、リンクスタック33の2
番目のエントリに保持されたレジスタ番号がセットされ
る。
_LINK_REG_STK0〈0:3〉と動作信号+
PUSH_RTN_STACK_LINK_REGの論
理積を、信号+SET_RTN_LINK_REG_S
TK1〈0:3〉として出力する。この信号は、リンク
スタック33の2番目のエントリにセットされるレジス
タ番号を表し、プッシュ動作の場合は、リンクスタック
33の先頭エントリに保持されたレジスタ番号に一致す
る。
タ番号を保持するラッチ回路を示している。図13にお
いて、入力信号−PUSH_POP_RTN_LINK
_REG_STKは、プッシュ動作またはポップ動作が
終了したときに論理“1”となる。
T_RTN_LINK_REG_STK0〈0:3〉を
先頭エントリとしてラッチし、それを図12の信号+R
TN_LINK_REG_STK0〈0:3〉として出
力する。また、ラッチ回路122は、図12の信号+S
ET_RTN_LINK_REG_STK1〈0:3〉
を2番目のエントリとしてラッチし、それを図12の信
号+RTN_LINK_REG_STK1〈0:3〉と
して出力する。
K_REG_STKが論理“1”となると、これらのエ
ントリへのレジスタ番号の登録が終了し、この信号が論
理“0”になるまで、登録されたレジスタ番号が保持さ
れる。
令)は、サブルーチンコール・リターン命令のいずれに
もなり得るため、コール・リターンの対応関係を崩すも
のと考えられる。あるいはまた、割り込みが発生した場
合、それが割り込み処理の後に元のプログラムに戻らな
い種類の割り込みであれば、やはり、コール・リターン
の対応関係を崩すものと考えられる。
等)が発生した場合には、その命令や割り込みの実行時
に、リンクスタック33とリターンアドレススタック3
5のエントリをすべてクリアして、保持された情報を無
効化する。
路を示している。図14において、入力信号+MICR
O_PURGE_RTN_ADRS_STKは、リンク
スタック33とリターンアドレススタック35のエント
リをクリアする信号であり、コール・リターンの対応関
係を崩すような命令や割り込みが発生したときに、論理
“1”となる。
PUSH_RTN_STACK_LINK_REGと+
POP_RTN_STACK_LINK_REG、およ
び信号+MICRO_PURGE_RTN_ADRS_
STKの論理和の否定を、図13の信号−PUSH_P
OP_RTN_LINK_REG_STKとして出力す
る。
E_RTN_ADRS_STKが論理“1”となると、
信号−PUSH_POP_RTN_LINK_REG_
STKが論理“0”となり、図13のラッチ回路12
1、122に保持されたレジスタ番号がクリアされる。
先、すなわち、サブルーチンコール相当の命令の直後の
命令アドレスに戻らないサブルーチンリターン相当の命
令を認識した場合、ブランチヒストリ34に、そのサブ
ルーチンリターン相当の命令の戻り先が異なることを示
すフラグを設定することができる。
うなフラグを生成する回路を示している。図15におい
て、入力信号+D_BCは、デコーダ23によりオペレ
ーションコード“bc”が検出されたときに、論理
“1”となる。入力信号−D_DISP_EQ_0は、
命令により指定されたディスプレイスメントが0でない
ときに、論理“1”となる。
D_XR_EQ_Eは、それぞれ、命令により指定され
たベースレジスタ、インデックスレジスタの番号が“1
4”のときに、論理“1”となる。これらの信号は、デ
コーダ23からRSBR36に出力される。
_Eと+D_XR_EQ_Eの論理和を表す信号を出力
し、AND回路142は、信号+D_BCと−D_DI
SP_EQ_0、およびOR回路141の出力信号の論
理積を、信号+D_BC_GIDDY_RTNとして出
力する。
1からの信号+D_BC_GIDDY_RTNをラッチ
し、信号+RSBR_BC_GIDDY_RTNとして
出力する。この信号は、対応するRSBR36が有効で
ある間、ラッチ回路143に保持され、サブルーチンリ
ターン相当の命令の戻り先が異なることを示すフラグと
して用いられる。
_RTNは、信号+BRHIS_UPDATE_BC_
GIDDY_RTNとして分岐予測機構22に送出さ
れ、図16に示すように、ブランチヒストリ34のエン
トリのフラグGIDDY RTNに設定される。
には、フラグGIDDY RTN以外に、分岐命令アド
レスIAR、分岐先アドレスTIAR、およびフラグC
ALL、RTNが格納されている。フラグCALL、R
TNは、それぞれ、サブルーチンコールフラグ、サブル
ーチンリターンフラグに対応する。
いような分岐命令“bc m.d(14)”がデコード
された場合、信号+D_BC_GIDDY_RTNが論
理“1”となり、フラグ+RSBR_BC_GIDDY
_RTNが立つ。したがって、ブランチヒストリ34に
この分岐命令が登録されたとき、対応するフラグGID
DY RTNに論理“1”が格納される。
ラグGIDDY RTNが立っていた場合、リターンア
ドレススタック35はリターン命令を予測したときと同
様のポップ動作を行うが、予測回路31は、リターンア
ドレススタック35からポップされた分岐先アドレスで
はなく、ブランチヒストリ34に登録された分岐先アド
レスを、予測分岐先アドレスとして出力する。したがっ
て、ブランチヒストリ34により予測された分岐先の命
令フェッチが行われ、リターンアドレススタック35に
よる予測結果は廃棄される。
ック33に登録されたリンクレジスタの番号と、実行さ
れた(実行される)命令の分岐先アドレスレジスタの番
号を比較することで、その命令がサブルーチンリターン
相当の命令であるか否かを判別している。これ以外の他
の実施形態として、リンクスタック33を用いず、リタ
ーンアドレススタック35に登録されている戻り先アド
レスと、実行された(実行される)命令の分岐先アドレ
スを比較することで、同様の判別を行うことも考えられ
る。
に、戻り先がコール命令の直後とならないリターン相当
の命令が出現すると、認識されるコール・リターン対の
対応関係が崩れてしまい、リターンアドレススタック3
5の本来の性能が発揮できない。しかし、リンクスタッ
ク33を新たに設ける必要がないというメリットがあ
る。
な判別を行う回路を示している。図17において、信号
+BRHIS_UPDATE_TIARは、サブルーチ
ンリターン相当の命令になり得る命令の分岐先アドレス
を表し、RSBR36から送出される。
_UPDATE_TIARをリターンアドレススタック
35の先頭エントリ(エントリ0)と比較し、それらが
一致すると論理“1”の信号を出力する。ここでは、リ
ターンアドレススタック35は、n段のスタックとして
示されている。AND回路152は、図5の信号+BR
HIS_UPDATE_SUBROUTINE_RTN
と比較回路151の出力信号の論理積を、図12の信号
+BR_COMP_SUBROUTINE_RTNとし
て出力する。
ルーチンリターン相当の命令の判別回路の代用となり、
リンクスタック33のエントリを参照しなくても、サブ
ルーチンリターンフラグを生成することができる。した
がって、この場合、リンクスタック33は不要となる。
て、リンクスタック33およびリターンアドレススタッ
ク35を2段のスタックとしているが、任意の段数のス
タックを用いた場合も、同様の制御を行うことができ
る。また、レジスタ番号や命令アドレス以外にも、サブ
ルーチンの戻り先アドレスを指定する任意の情報を比較
することで、サブルーチンコール・リターン命令対を認
識することができる。
ック等の分岐予測機構を有する情報処理装置において、
正しいサブルーチンコール・リターン命令対を動的に抽
出することができる。したがって、分岐予測機構におけ
るコール・リターン対の対応関係のズレが防止され、サ
ブルーチンリターン相当の命令の分岐予測の精度が向上
する。
対応関係を示す図である。
る。
す図である。
図である。
1、112、113、114、115、117、14
2、152 AND回路 42、43、63、82、102、116、141 O
R回路 51、52、83、121、122、143 ラッチ回
路 71、84 NAND回路 101 EXNOR回路 131 NOR回路
Claims (15)
- 【請求項1】 サブルーチンコール相当の命令が検出さ
れたとき、サブルーチンの戻り先アドレスを指定する情
報を格納する格納手段と、 サブルーチンリターン相当の命令になり得る命令が検出
されたとき、該サブルーチンリターン相当の命令になり
得る命令の分岐先アドレスを指定する情報と、前記格納
手段に格納された前記戻り先アドレスを指定する情報と
を比較し、比較結果を出力する比較手段と、 前記比較結果に基づいて、前記サブルーチンコール相当
の命令に対応するサブルーチンリターン相当の命令を識
別する識別手段とを備えることを特徴とする分岐予測装
置。 - 【請求項2】 前記格納手段は、前記サブルーチンコー
ル相当の命令により指定されたリンクレジスタのレジス
タ番号を、前記戻り先アドレスを指定する情報として格
納することを特徴とする請求項1記載の分岐予測装置。 - 【請求項3】 前記格納手段は、前記サブルーチンの戻
り先アドレスを、前記戻り先アドレスを指定する情報と
して格納することを特徴とする請求項1記載の分岐予測
装置。 - 【請求項4】 サブルーチンの戻り先アドレスを指定す
る情報を格納するスタック手段と、 サブルーチンコール相当の命令が検出されたとき、前記
戻り先アドレスを指定する情報を前記スタック手段にプ
ッシュするプッシュ手段と、 サブルーチンリターン相当の命令になり得る命令が検出
されたとき、該サブルーチンリターン相当の命令になり
得る命令の分岐先アドレスを指定する情報と、前記スタ
ック手段の先頭エントリに格納された前記戻り先アドレ
スを指定する情報とを比較し、比較結果を出力する比較
手段と、 前記比較結果に基づいて、前記サブルーチンコール相当
の命令に対応するサブルーチンリターン相当の命令を識
別する識別手段とを備えることを特徴とする分岐予測装
置。 - 【請求項5】 前記プッシュ手段は、前記サブルーチン
コール相当の命令により指定されたリンクレジスタのレ
ジスタ番号を、前記戻り先アドレスを指定する情報とし
て前記スタック手段にプッシュし、前記比較手段は、前
記サブルーチンリターン相当の命令になり得る命令によ
り指定された分岐先アドレスレジスタのレジスタ番号
と、前記スタック手段の先頭エントリに格納されたレジ
スタ番号とを比較し、前記識別手段は、比較された2つ
のレジスタ番号が一致したとき、該サブルーチンリター
ン相当の命令になり得る命令を、前記サブルーチンリタ
ーン相当の命令であると識別することを特徴とする請求
項4記載の分岐予測装置。 - 【請求項6】 前記識別手段は、前記分岐先アドレスレ
ジスタのレジスタ番号が特定のレジスタに対応すると
き、前記比較結果にかかわらず、前記サブルーチンリタ
ーン相当の命令になり得る命令を、前記サブルーチンリ
ターン相当の命令であると識別することを特徴とする請
求項5記載の分岐予測装置。 - 【請求項7】 前記プッシュ手段は、前記リンクレジス
タのレジスタ番号が特定のレジスタに対応するとき、該
リンクレジスタのレジスタ番号を前記スタック手段にプ
ッシュしないことを特徴とする請求項5記載の分岐予測
装置。 - 【請求項8】 前記識別手段が、前記サブルーチンリタ
ーン相当の命令になり得る命令を前記サブルーチンリタ
ーン相当の命令であると識別し、該サブルーチンリター
ン相当の命令による分岐が実行されたとき、前記スタッ
ク手段をポップするポップ手段をさらに備えることを特
徴とする請求項4記載の分岐予測装置。 - 【請求項9】 分岐予測のための分岐履歴情報を格納す
る予測手段をさらに備え、前記比較手段は、該分岐履歴
情報が該予測手段に登録されるとき、前記分岐先アドレ
スを指定する情報と前記戻り先アドレスを指定する情報
とを比較することを特徴とする請求項1記載の分岐予測
装置。 - 【請求項10】 サブルーチンコールとサブルーチンリ
ターンの対応関係を崩す可能性がある事象が発生したと
き、前記格納手段に格納された情報を無効化する手段を
さらに備えることを特徴とする請求項1記載の分岐予測
装置。 - 【請求項11】 分岐予測のための分岐履歴情報を格納
する予測手段をさらに備え、前記サブルーチンコール相
当の命令の直後の命令アドレスに戻らないサブルーチン
リターン相当の命令が検出されたとき、検出されたサブ
ルーチンリターン相当の命令の戻り先が異なることを示
すフラグを該予測手段に設定する設定手段をさらに備え
ることを特徴とする請求項1記載の分岐予測装置。 - 【請求項12】 前記予測手段は、前記サブルーチンの
戻り先アドレスを格納するリターンアドレススタック手
段を含み、分岐予測時に前記フラグが認識された場合、
該リターンアドレススタック手段をポップし、ポップさ
れた戻り先アドレスを予測分岐先として用いないことを
特徴とする請求項11記載の分岐予測装置。 - 【請求項13】 分岐予測のための分岐履歴情報を格納
する予測手段と、該予測手段に登録されていないサブル
ーチンコール相当の命令が検出されたとき、所定のフラ
グをセットし、該登録されていないサブルーチンコール
相当の命令に対応するサブルーチンリターン相当の命令
が検出されたとき、該所定のフラグをリセットして、該
予測手段では該対応するサブルーチンリターン相当の命
令をサブルーチンリターン相当の命令とは認識しないよ
うな制御を行う手段とをさらに備えることを特徴とする
請求項1記載の分岐予測装置。 - 【請求項14】 サブルーチンコール相当の命令が検出
されたとき、サブルーチンの戻り先アドレスを格納する
リターンアドレススタック手段と、 サブルーチンリターン相当の命令になり得る命令が検出
されたとき、該サブルーチンリターン相当の命令になり
得る命令の分岐先アドレスと、前記リターンアドレスス
タック手段に格納された前記戻り先アドレスとを比較
し、比較結果を出力する比較手段と、 前記比較結果に基づいて、前記サブルーチンコール相当
の命令に対応するサブルーチンリターン相当の命令を識
別する識別手段とを備えることを特徴とする分岐予測装
置。 - 【請求項15】 サブルーチンコール相当の命令が検出
されたとき、サブルーチンの戻り先アドレスを指定する
情報を登録し、 サブルーチンリターン相当の命令になり得る命令が検出
されたとき、該サブルーチンリターン相当の命令になり
得る命令の分岐先アドレスを指定する情報と、登録され
ている前記戻り先アドレスを指定する情報とを比較し、 前記分岐先アドレスを指定する情報と前記戻り先アドレ
スを指定する情報が一致すれば、前記サブルーチンリタ
ーン相当の命令になり得る命令を、前記サブルーチンコ
ール相当の命令に対応するサブルーチンリターン相当の
命令であると識別し、 前記分岐先アドレスを指定する情報と前記戻り先アドレ
スを指定する情報が一致しなければ、前記サブルーチン
リターン相当の命令になり得る命令を、前記サブルーチ
ンコール相当の命令に対応するサブルーチンリターン相
当の命令ではないと識別し、 識別結果を用いて分岐予測を行うことを特徴とする分岐
予測方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27622199A JP3723019B2 (ja) | 1999-09-29 | 1999-09-29 | サブルーチンリターン相当の命令の分岐予測を行う装置および方法 |
US09/533,042 US6898698B1 (en) | 1999-09-29 | 2000-03-22 | Device predicting a branch of an instruction equivalent to a subroutine return and a method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27622199A JP3723019B2 (ja) | 1999-09-29 | 1999-09-29 | サブルーチンリターン相当の命令の分岐予測を行う装置および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001100993A true JP2001100993A (ja) | 2001-04-13 |
JP3723019B2 JP3723019B2 (ja) | 2005-12-07 |
Family
ID=17566386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27622199A Expired - Fee Related JP3723019B2 (ja) | 1999-09-29 | 1999-09-29 | サブルーチンリターン相当の命令の分岐予測を行う装置および方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6898698B1 (ja) |
JP (1) | JP3723019B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010511251A (ja) * | 2006-11-28 | 2010-04-08 | クゥアルコム・インコーポレイテッド | サブルーチン呼び出しを認識(recognize)する方法及び装置 |
JP2011503718A (ja) * | 2007-11-02 | 2011-01-27 | クゥアルコム・インコーポレイテッド | プロシージャリターンシーケンスを加速するための方法およびシステム |
JP5579347B1 (ja) * | 2014-01-15 | 2014-08-27 | 三菱電機株式会社 | 数値制御装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7533251B2 (en) * | 2003-12-24 | 2009-05-12 | Panasonic Corporation | Semiconductor integrated circuit, development support system and execution history tracing method |
US7401210B2 (en) * | 2005-03-30 | 2008-07-15 | Arm Limited | Selecting subroutine return mechanisms |
US20140283060A1 (en) * | 2013-03-15 | 2014-09-18 | Oracle International Corporation | Mitigating vulnerabilities associated with return-oriented programming |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5786952A (en) | 1980-11-20 | 1982-05-31 | Nec Corp | Microprogram control information processor |
US5276882A (en) * | 1990-07-27 | 1994-01-04 | International Business Machines Corp. | Subroutine return through branch history table |
US5313634A (en) * | 1992-07-28 | 1994-05-17 | International Business Machines Corporation | Computer system branch prediction of subroutine returns |
JPH08212075A (ja) | 1995-01-31 | 1996-08-20 | Nec Corp | 情報処理装置 |
JPH08292887A (ja) | 1995-02-24 | 1996-11-05 | Hitachi Ltd | 命令の分岐方法およびプロセッサ |
US5790845A (en) * | 1995-02-24 | 1998-08-04 | Hitachi, Ltd. | System with reservation instruction execution to store branch target address for use upon reaching the branch point |
US6157999A (en) * | 1997-06-03 | 2000-12-05 | Motorola Inc. | Data processing system having a synchronizing link stack and method thereof |
-
1999
- 1999-09-29 JP JP27622199A patent/JP3723019B2/ja not_active Expired - Fee Related
-
2000
- 2000-03-22 US US09/533,042 patent/US6898698B1/en not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010511251A (ja) * | 2006-11-28 | 2010-04-08 | クゥアルコム・インコーポレイテッド | サブルーチン呼び出しを認識(recognize)する方法及び装置 |
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 | プロシージャリターンシーケンスを加速するための方法およびシステム |
JP5579347B1 (ja) * | 2014-01-15 | 2014-08-27 | 三菱電機株式会社 | 数値制御装置 |
WO2015107637A1 (ja) * | 2014-01-15 | 2015-07-23 | 三菱電機株式会社 | 数値制御装置 |
Also Published As
Publication number | Publication date |
---|---|
JP3723019B2 (ja) | 2005-12-07 |
US6898698B1 (en) | 2005-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3565504B2 (ja) | プロセッサにおける分岐予測方法及びプロセッサ | |
TWI223195B (en) | Optimized branch predictions for strongly predicted compiler branches | |
US6898699B2 (en) | Return address stack including speculative return address buffer with back pointers | |
JP2603626B2 (ja) | データ処理装置 | |
US5276882A (en) | Subroutine return through branch history table | |
EP0902362A2 (en) | Multiple instruction issue computer architecture | |
JP3565314B2 (ja) | 分岐命令実行制御装置 | |
US6530016B1 (en) | Predicted return address selection upon matching target in branch history table with entries in return address stack | |
KR20010077297A (ko) | 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기 | |
JP5815596B2 (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
JPH11282677A (ja) | マイクロプロセッサの分岐命令予測方法 | |
JP4009248B2 (ja) | 分岐予測装置および分岐予測方法 | |
JP2001100993A (ja) | サブルーチンリターン相当の命令の分岐予測を行う装置および方法 | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
US11055101B2 (en) | Processing apparatus and controlling method for processing apparatus | |
CN110221862B (zh) | 指令执行方法及指令执行装置 | |
US20220043908A1 (en) | Mitigation of return stack buffer side channel attacks in a processor | |
US8533441B2 (en) | Method for managing branch instructions and a device having branch instruction management capabilities | |
JP2001100994A (ja) | モードを変更する分岐命令を制御する命令処理装置および方法 | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
JPH04220722A (ja) | パイプライン処理装置 | |
JPH0695306B2 (ja) | 命令先取り装置 | |
CN111857826A (zh) | 指令执行方法及指令执行装置 | |
JPH02255918A (ja) | 命令取出し制御方式 | |
JP2001184207A (ja) | マイクロ命令における分岐命令制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050606 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050614 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050815 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050913 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050914 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080922 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090922 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090922 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100922 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100922 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110922 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120922 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120922 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130922 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |