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
Application number
JP27622199A
Other languages
English (en)
Other versions
JP3723019B2 (ja
Inventor
Ryuichi Sunayama
竜一 砂山
Masaki Ukai
昌樹 鵜飼
Aiichiro Inoue
愛一郎 井上
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP27622199A priority Critical patent/JP3723019B2/ja
Priority to US09/533,042 priority patent/US6898698B1/en
Publication of JP2001100993A publication Critical patent/JP2001100993A/ja
Application granted granted Critical
Publication of JP3723019B2 publication Critical patent/JP3723019B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent 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

(57)【要約】 【課題】 サブルーチンリターンのための特別な命令が
用意されていない情報処理装置において、サブルーチン
リターン相当の命令を正しく認識することが課題であ
る。 【解決手段】 サブルーチンコール相当の命令により指
定されたリンクレジスタのレジスタ番号をリンクスタッ
ク33に記録しておき、比較回路32により、サブルー
チンリターンの可能性のある分岐命令の分岐先アドレス
レジスタの番号を、記録されたレジスタ番号と比較す
る。そして、両者が一致すれば、その分岐命令をサブル
ーチンリターン相当の命令と認識する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、分岐予測機構を有
する情報処理装置に係り、特に、サブルーチンリターン
のための特別な命令が用意されていないアーキテクチャ
において、サブルーチンリターン相当の命令の分岐予測
を行う分岐予測装置およびその方法に関する。
【0002】
【従来の技術】従来の命令処理装置においては、パイプ
ライン処理やアウトオブオーダー処理のような技術を用
いて、ある命令の実行の完了を待たずに後続の命令の実
行を次々と開始することで、性能の向上が図られてき
た。
【0003】パイプライン処理において、先行する命令
が、分岐命令のように後続の実行シーケンスを変更する
命令である場合、分岐が成立するときに、分岐先の命令
を実行パイプラインに投入する必要がある。そうしなけ
れば、実行パイプラインが乱され、最悪の場合は、逆に
性能が落ちてしまう。
【0004】そこで、ブランチヒストリ(分岐予測テー
ブル)に代表される分岐予測機構を設けて、分岐の成立
・不成立を予測することで、性能の向上が図られてき
た。このような装置において、分岐の成立が予測された
場合には、分岐命令の後に分岐先の命令が実行パイプラ
インに投入されるため、分岐が実際に成立したときに実
行パイプラインが乱されることがない。
【0005】また、サブルーチンリターン命令の分岐先
(戻り先)は、その命令の性質上、実行の度に変わるこ
とが多い。これは、サブルーチンの呼び出し元であるサ
ブルーチンコール命令の場所が実行の度に異なるためで
ある。このような命令に対しては、リターンアドレスス
タックと呼ばれる専用の分岐予測機構を設けることで、
性能の向上が可能となることが知られている。
【0006】
【発明が解決しようとする課題】しかしながら、上述し
た従来の分岐予測機構には、以下のような問題がある。
CPU(中央処理装置)アーキテクチャの中には、サブ
ルーチンコール・リターン命令対として、あらかじめ特
別な命令を準備していないものがある。このようなアー
キテクチャにおいて、リターンアドレススタックを採用
して性能向上を図るためには、実行される分岐命令の中
から、サブルーチンコール・リターン相当の命令対を動
的に抽出する技術が必要となる。
【0007】ところが、従来の情報処理装置では、デコ
ード時にサブルーチンコール・リターン命令であるか否
かを静的に決定していたため、ハードウェアによる解釈
と異なるプログラミングは好ましいものではなかった。
この場合、好ましくないプログラミングにより、コール
・リターン対の対応関係が、一旦、実際とずれてしまう
と、リターンアドレススタックの特性上、それ以降の分
岐先を次々と誤ることになる。このため、リターンアド
レススタックが多段であればあるほど、性能を落として
いた。
【0008】図18は、このようなアーキテクチャにお
いて使用される、サブルーチンコール・リターン命令対
を含むプログラムの例を示している。この例では、メイ
ンルーチンの中の命令“balr 14,15”によ
り、サブルーチンS1が呼び出され(Call 1)、
さらにその中の命令“balr15,13”により別の
サブルーチンS2が呼び出されている(Call
2)。そして、条件リターン命令“bcr 7,15”
により制御がサブルーチンS1に戻り(Return
2)、さらに無条件リターン命令“bcr 15,1
4”によりメインルーチンに戻っている(Return
1)。
【0009】ここで、命令処理装置が、特定のオペレー
ションコード“balr”を、サブルーチンコール相当
の命令として認識し、特定のオペレーションコードとオ
ペランドを含む無条件分岐命令“bcr 15,x”
(xは任意)を、サブルーチンリターン相当の命令とし
て認識するものとする。
【0010】この場合、サブルーチンS2の中の命令
“bcr 7,15”は、サブルーチンリターン相当の
命令として認識されずに、見落とされる。このため、従
来のリターンアドレススタックでは、Call 2に対
応するリターンがReturn1であると認識してしま
い、分岐予測に失敗する。実際には、Call 2に対
応する正しいリターンは、Return 2である。
【0011】また、命令処理装置が、オペレーションコ
ード“bcr”を含むすべての命令を単純にサブルーチ
ンリターン相当の命令として認識すると、サブルーチン
S2の中の単なる条件分岐命令である“bcr 4,
3”が、Call 2に対応するリターンであると認識
されてしまう。したがって、この場合も、リターンアド
レススタックがコール・リターン対を誤認識することが
分かる。
【0012】このように、リターンアドレススタックを
持つ情報処理装置においては、命令の実行時に、正しい
サブルーチンコール・リターン命令対を認識することが
重要になる。
【0013】本発明の課題は、サブルーチンリターンの
ための特別な命令が用意されていない情報処理装置にお
いて、サブルーチンリターン相当の命令を正しく認識す
る分岐予測装置およびその方法を提供することである。
【0014】
【課題を解決するための手段】図1は、本発明の分岐予
測装置の原理図である。本発明の第1の局面において、
分岐予測装置は、格納手段1、比較手段2、および識別
手段3を備える。
【0015】格納手段1は、サブルーチンコール相当の
命令が検出されたとき、サブルーチンの戻り先アドレス
を指定する情報を格納する。比較手段2は、サブルーチ
ンリターン相当の命令になり得る命令が検出されたと
き、そのサブルーチンリターン相当の命令になり得る命
令の分岐先アドレスを指定する情報と、格納手段1に格
納された戻り先アドレスを指定する情報とを比較し、比
較結果を出力する。識別手段3は、その比較結果に基づ
いて、上記サブルーチンコール相当の命令に対応するサ
ブルーチンリターン相当の命令を識別する。
【0016】実行された(実行される)命令が、サブル
ーチンコール相当の動作をする命令であるとき、その命
令により指定される戻り先アドレスや戻り先アドレスを
保持するレジスタの情報等が、戻り先アドレスを指定す
る情報として格納手段1に格納される。
【0017】次に、実行された(実行される)命令が、
サブルーチンリターン相当の動作をする命令である可能
性があるとき、その命令により指定される分岐先アドレ
スや分岐先アドレスを保持するレジスタの情報等が、分
岐先アドレスを指定する情報として選択され、比較手段
2により、その情報が戻り先アドレスを指定する情報と
比較される。
【0018】そして、識別手段3は、分岐先アドレスを
指定する情報と戻り先アドレスを指定する情報が一致す
れば、後者の命令を前者の命令に対応するサブルーチン
リターン相当の命令であると識別し、それらが一致しな
ければ、後者の命令を前者の命令に対応するサブルーチ
ンリターン相当の命令ではないと識別する。
【0019】このように、サブルーチンの戻り先アドレ
スを指定する情報を用いることで、正しいサブルーチン
コール・リターン相当の命令対を動的に抽出することが
できる。したがって、コール・リターン対の対応関係が
正しく認識され、その対応関係のズレが防止される。
【0020】また、本発明の第2の局面において、分岐
予測装置は、スタック手段4、プッシュ手段5、比較手
段2、および識別手段3を備える。スタック手段4は、
サブルーチンの戻り先アドレスを指定する情報を格納す
る。プッシュ手段5は、サブルーチンコール相当の命令
が検出されたとき、上記戻り先アドレスを指定する情報
をスタック手段4にプッシュする。
【0021】比較手段2は、サブルーチンリターン相当
の命令になり得る命令が検出されたとき、そのサブルー
チンリターン相当の命令になり得る命令の分岐先アドレ
スを指定する情報と、スタック手段4の先頭エントリに
格納された戻り先アドレスを指定する情報とを比較し、
比較結果を出力する。識別手段3は、その比較結果に基
づいて、上記サブルーチンコール相当の命令に対応する
サブルーチンリターン相当の命令を識別する。
【0022】サブルーチンコール相当の動作をする命令
が検出されると、プッシュ手段5は、戻り先アドレスを
指定する情報をスタック手段4にプッシュする。次に、
サブルーチンリターン相当の動作をする命令である可能
性がある命令が検出されると、比較手段2は、その命令
の分岐先アドレスを指定する情報を、スタック手段4に
プッシュされた戻り先アドレスを指定する情報と比較す
る。
【0023】そして、識別手段3は、分岐先アドレスを
指定する情報と戻り先アドレスを指定する情報が一致す
れば、後者の命令を前者の命令に対応するサブルーチン
リターン相当の命令であると識別し、それらが一致しな
ければ、後者の命令を前者の命令に対応するサブルーチ
ンリターン相当の命令ではないと識別する。
【0024】このように、サブルーチンの戻り先アドレ
スを指定する情報をスタック手段4にプッシュすること
で、第1の局面の分岐予測装置と同様に、コール・リタ
ーン対の対応関係が正しく認識され、その対応関係のズ
レが防止される。
【0025】また、本発明の第3の局面において、分岐
予測装置は、リターンアドレススタック手段6、比較手
段2、および識別手段3を備える。リターンアドレスス
タック手段6は、サブルーチンコール相当の命令が検出
されたとき、サブルーチンの戻り先アドレスを格納す
る。比較手段2は、サブルーチンリターン相当の命令に
なり得る命令が検出されたとき、そのサブルーチンリタ
ーン相当の命令になり得る命令の分岐先アドレスと、リ
ターンアドレススタック手段6に格納された戻り先アド
レスとを比較し、比較結果を出力する。識別手段3は、
その比較結果に基づいて、上記サブルーチンコール相当
の命令に対応するサブルーチンリターン相当の命令を識
別する。
【0026】サブルーチンコール相当の動作をする命令
が検出されると、その命令により指定された戻り先アド
レスがリターンアドレススタック手段6にプッシュされ
る。次に、サブルーチンリターン相当の動作をする命令
である可能性がある命令が検出されると、比較手段2
は、その命令の分岐先アドレスを、リターンアドレスス
タック手段6にプッシュされた戻り先アドレスと比較す
る。
【0027】そして、識別手段3は、分岐先アドレスと
戻り先アドレスが一致すれば、後者の命令を前者の命令
に対応するサブルーチンリターン相当の命令であると識
別し、それらが一致しなければ、後者の命令を前者の命
令に対応するサブルーチンリターン相当の命令ではない
と識別する。
【0028】このように、リターンアドレススタック手
段6にプッシュされた戻り先アドレスを、直接、命令の
分岐先アドレスと比較することで、第1の局面の分岐予
測装置と同様に、コール・リターン対の対応関係が正し
く認識され、その対応関係のズレが防止される。
【0029】例えば、図1の格納手段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に対応する。
【0030】
【発明の実施の形態】以下、図面を参照しながら、本発
明の実施の形態を詳細に説明する。命令処理装置におい
ては、サブルーチンコール相当の命令により、戻り先の
アドレスを格納するリンクレジスタが指定され、指定さ
れたリンクレジスタを用いて、サブルーチンリターン相
当の命令による分岐が行われる。
【0031】サブルーチンコールまたはリターン相当の
命令は、例えば、図2に示すように、オペレーションコ
ード(OPコード)11、第1オペランド12、および
第2オペランド13を含む。サブルーチンコール相当の
命令においては、第1オペランド12が、リンクレジス
タのレジスタ番号を表し、サブルーチンリターン相当の
命令においては、第2オペランド13が、分岐先アドレ
スを格納するレジスタのレジスタ番号を表す。
【0032】そこで、本実施形態においては、サブルー
チンコール時に指定されたリンクレジスタのレジスタ番
号を記録するリンクスタックを設ける。そして、リンク
スタックに記録された番号のレジスタ内のアドレスを分
岐先アドレスとして用いる分岐命令が出現したとき、そ
の分岐命令をサブルーチンリターン相当の命令と認識す
る。
【0033】このような制御によれば、リンクレジスタ
のレジスタ番号をリンク情報として用いて、サブルーチ
ンコール相当の命令とサブルーチンリターン相当の命令
を対応付けることができ、サブルーチンコール・リター
ン相当の命令対を動的に抽出することが可能になる。し
たがって、コール・リターン対の対応関係を正しく認識
することができ、その対応関係のズレが防止されるの
で、リターンアドレススタックによる分岐予測の精度が
向上する。
【0034】例えば、図18の例の場合、コール命令に
含まれるリンクレジスタの番号と、リターン命令に含ま
れる分岐先アドレスレジスタの番号を比較すれば、正し
いコール・リターン対を認識することができ、分岐予測
も成功する。
【0035】Call 1の命令“balr 14,1
5”の第1オペランドは、リンクレジスタの番号が“1
4”であることを表しており、Return 1の命令
“bcr 15,14”の第2オペランドは、分岐先ア
ドレスレジスタの番号が“14”であることを表してい
る。したがって、後者の命令は、Call 1に対応す
るリターン相当の命令であると認識される。
【0036】また、Call 2の命令“balr 1
5,13”の第1オペランドは、リンクレジスタの番号
が“15”であることを表しており、Return 2
の命令“bcr 7,15”の第2オペランドは、分岐
先アドレスレジスタの番号が“15”であることを表し
ている。したがって、後者の命令は、Call 2に対
応するリターン相当の命令であると認識される。
【0037】次に、特別なサブルーチンコール・リター
ン命令対を準備していないアーキテクチャの一例を用い
て、本実施形態における情報処理装置の動作をより詳細
に説明する。このようなアーキテクチャは、例えば、E
SA(enterprise systems architecture )/390の
POO(principles of operation )により規定されて
いる。
【0038】サブルーチンコールとして使用可能な命令
としては、サブルーチンリターン相当の命令による戻り
先のアドレス(リンクアドレス)をレジスタに保存可能
である命令が考えられる。このような命令には、ba
l、balr、bas、basr、bassm等があ
る。
【0039】また、サブルーチンリターンとして使用可
能な命令としては、一般の分岐命令のほとんどが挙げら
れる。これらの中でも、特に、分岐先アドレスを1つの
レジスタで指定する分岐命令、すなわち、RR形式命令
が用いられやすい。RR形式命令には、bcr、bsm
等がある。もちろん、これらの命令は、通常の無条件分
岐命令あるいは条件分岐命令としても用いられる。
【0040】また、このようなアーキテクチャでは、出
現頻度は低いものの、サブルーチンコール・リターン対
を崩し得る命令も存在し得る。このような命令として
は、例えば、lpswや、bc等のRX形式命令が挙げ
られる。また、一部の割り込み事象においても、サブル
ーチンコール・リターン対が崩されることがある。
【0041】bcに代表されるRX形式の分岐命令は、
リターン先アドレスを1つのレジスタのみで指定すると
は限らず、特に、ディスプレイスメントを指定する場合
がある。他にも、リンクレジスタの値を書き換える等の
処理により、戻り先アドレスが変更される場合もある。
【0042】このような命令がサブルーチンリターンと
して使用された場合、コール時にリターンアドレススタ
ックに登録された戻り先アドレスが正しくならないの
で、リターン時にリターンアドレススタックを参照しな
いことが望ましい。その代わりに、通常の分岐命令と同
じように、ブランチヒストリに登録されている予測分岐
先を参照すれば、正しい戻り先アドレスが得られる可能
性がある。
【0043】また、lpswは、分岐先アドレスをレジ
スタで直接指定せず、オペランドが指すメモリ上のデー
タ列を分岐先アドレスとして用いる。このような命令列
が出現した場合には、コール・リターン対の対応関係が
崩れてしまう可能性がある。あるいはまた、割り込みが
発生した場合にも、その割り込みの種類によっては、同
様にコール・リターン対が崩れてしまうことがある。
【0044】そこで、リターンアドレススタックに何ら
かの機構を組み込む必要がある。その一方法として、こ
のような命令が実行されたときやこのような割り込みが
発生したときに、リターンアドレススタックとリンクス
タック双方のエントリをすべて消去してしまうことが考
えられる。このような制御により、リターンアドレスス
タックの対応のズレが防止され、発生したズレにそれ以
降の予測結果が引き摺られて性能が劣化することはなく
なる。
【0045】また、基本的な分岐命令がハードワイヤー
ドで実現されているにもかかわらず、一部の分岐命令
は、他の複雑な動作を伴うために、マイクロコードによ
り制御されている場合がある。このような複雑な分岐命
令は、回路が複雑になるわりには得るものが少ない等の
理由で、ブランチヒストリに登録しているメリットがな
い。このため、リターンアドレススタックも動作しな
い。
【0046】しかしながら、前述したように、このよう
な複雑な命令でも、サブルーチンコールもしくはリター
ン相当の命令になり得る場合には、その命令に対する対
策を講じなければ、リターンアドレススタックの対応が
ずれてしまい、性能劣化の原因となる。
【0047】そこで、ブランチヒストリに登録されてい
ないサブルーチンコール相当の分岐命令が実行された後
に、それに対応すると考えられるサブルーチンリターン
相当の命令が検出されたとき、ブランチヒストリおよび
リターンアドレススタックにおいて、そのサブルーチン
リターン相当の命令をリターン相当の命令とは認識しな
いような制御を行う。
【0048】また、プログラム指針書等により特定のレ
ジスタをリンクレジスタとして使用することが推奨され
る場合等のように、特定のレジスタがリンクレジスタと
して非常に多く使われることがある。このようなシステ
ムでは、その特定のレジスタを用いる命令を、常に、サ
ブルーチンコールまたはリターン相当の命令と認識する
ことにする。これにより、リンクスタックのエントリを
効率的に用いることができ、規模の小さなリンクスタッ
クでも大きな効果が得られる。
【0049】また、分岐命令において、分岐先アドレス
のレジスタ番号として“0”を指定すると、分岐は行わ
れない。このようなアーキテクチャでは、レジスタ番号
“0”をリンク情報として、対応するサブルーチンリタ
ーン相当の命令を判別することは不可能である。そこ
で、サブルーチンコール相当の命令において、リンクレ
ジスタの番号として“0”が指定されたときには、この
命令をサブルーチンコール相当の命令として認識しない
ようにする。
【0050】図3は、本実施形態における命令処理装置
の構成図である。図3の命令処理装置は、命令フェッチ
回路21、分岐予測機構22、デコーダ23、分岐先ア
ドレス生成回路24、分岐命令実行処理回路25、およ
び命令実行完了処理回路26を備え、命令をアウトオブ
オーダー方式で処理する。アウトオブオーダー処理方式
を採用した命令処理装置においては、性能の向上を図る
ため、1つの命令実行の完了を待たずに、後続の命令列
が順次複数のパイプラインに投入される。
【0051】命令フェッチ回路21と分岐予測機構22
は、命令フェッチパイプラインの回路に対応する。分岐
予測機構22は、予測回路31、比較回路32、および
リンクスタック33を含み、予測回路31は、ブランチ
ヒストリ34とリターンアドレススタック35を含む。
【0052】また、デコーダ23、分岐先アドレス生成
回路24、分岐命令実行処理回路25、および命令実行
完了処理回路26は、命令実行パイプラインの回路に対
応する。分岐命令実行処理回路25は、複数のRSBR
(Reservation Station forBRanch)36を含む。
【0053】命令フェッチパイプラインは、命令アドレ
ス発行サイクル(IA)、テーブルサイクル(IT)、
バッファサイクル(IB)、および結果サイクル(I
R)を含み、命令実行パイプラインは、デコードサイク
ル(D)、アドレス計算サイクル(A)、実行サイクル
(X)、更新サイクル(U)、およびライトサイクル
(W)を含む。
【0054】RSBR36は、分岐命令を制御するため
の処理待ちのスタックである。分岐命令実行処理回路2
5は、アウトオブオーダー処理方式に従って、スタック
内の処理可能なエントリを選択し、プログラムにより指
示された順序とは異なる順序で、随時、分岐命令を実行
することができる。
【0055】RSBR36で扱われる分岐命令のうち、
bal、balr(ただし、balr 1,14を除
く)、bras、bas、およびbasrは、サブルー
チンコール相当の命令として扱われ、bcr、bsm、
balr 1,14は、サブルーチンリターン相当の命
令として扱われる。また、bassmは、サブルーチン
コール相当の命令ではあるが、RSBR36では扱われ
ない複雑命令である。
【0056】分岐命令実行処理回路25が分岐命令を実
行した結果、分岐が生じることが判明した場合、分岐先
の命令アドレスと分岐命令自身の命令アドレスが、対に
してブランチヒストリ34に登録される。そして、命令
フェッチ回路21は、分岐命令をフェッチしたとき、次
の命令のフェッチに先立ってブランチヒストリ34を検
索し、分岐先を予測する。
【0057】また、デコーダ23がサブルーチンコール
相当の命令を検出したとき、その命令のオペランドが表
すリンクレジスタの番号がリンクスタック33にプッシ
ュされ、対応する戻り先の命令アドレスがリターンアド
レススタック35にプッシュされる。
【0058】また、デコーダ23がサブルーチンリター
ン相当の命令になり得る命令を検出すると、比較回路3
2は、リンクスタック33の先頭エントリに登録されて
いるレジスタ番号と、検出された命令のオペランドが表
す分岐先アドレスレジスタの番号を比較する。そして、
2つのレジスタ番号が一致すれば、その命令がサブルー
チンリターン相当の動作をする命令であると判断し、比
較結果を予測回路31に出力する。
【0059】このとき、リンクスタック33からレジス
タ番号がポップされ、リターンアドレススタック35か
ら対応する命令アドレスがポップされる。そして、ポッ
プされた命令アドレスが、予測分岐先として命令フェッ
チ回路21に渡される。
【0060】リンクスタック33のエントリは、図4に
示すように、リターンアドレススタック35のエントリ
と1対1に対応しており、これらの2つのスタックは、
同時にプッシュ動作およびポップ動作を行う。ここで
は、リンクスタック33のエントリには、4ビットのレ
ジスタ番号〈0:3〉が格納されており、リターンアド
レススタック35のエントリには、32ビットの分岐先
アドレス〈0:31〉が格納されている。これらのスタ
ックは、一般に、n個(n≧1)のエントリからなるn
段のスタックとして実装される。
【0061】図5は、図3の命令処理装置において用い
られる信号を示している。デコーダ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に出力
する。
【0062】信号+D_BALR、+D_BAL、+D
_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〉のデータを表す。
【0063】分岐命令実行処理回路25は、信号+BR
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に出力する。
【0064】信号+BRHIS_UPDATE_SUB
ROUTINE_CALLは、命令がサブルーチンコー
ル相当の命令と判別されたときに論理“1”となり、信
号+BRHIS_UPDATE_SUBROUTINE
_RTNは、命令がサブルーチンリターン相当の命令に
なり得る命令と判別されたときに論理“1”となる。ま
た、信号+BRHIS_UPDATE_CALL_RT
N_REG〈0:3〉は、命令のオペランドにより指定
されたレジスタ番号を表し、信号+BRHIS_UPD
ATE_BSMは、bsm命令の実行が完了したときに
論理“1”となる。
【0065】次に、図6から図17までを参照しなが
ら、図3の命令処理装置の構成と動作についてより詳細
に説明する。まず、デコーダ23による命令デコード時
に、図5に示した信号がRSBR36に入力され、サブ
ルーチンコール相当の命令とサブルーチンリターン相当
の命令になり得る命令が判別される。このうち、サブル
ーチンリターン相当の命令になり得る命令については、
後述するリンクスタック33の回路により、サブルーチ
ンリターンとのより厳密な対応関係が識別されることに
なる。
【0066】図6は、RSBR36内の判別回路を示し
ている。図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”となる。
【0067】OR回路42は、AND回路41からの出
力信号と、入力信号+D_BAL、+D_BRAS、+
D_BASR、および+D_BASの論理和を、信号+
D_SUBROUTINE_CALLとして出力する。
この信号+D_SUBROUTINE_CALLは、デ
コードされた命令がサブルーチンコール相当の命令であ
るときに論理“1”となるフラグとして用いられる。
【0068】また、OR回路43は、入力信号+D_B
ALR_1E、+D_BCR、および+D_BSMの論
理和を、信号+D_SUBROUTINE_RETUR
Nとして出力する。この信号+D_SUBROUTIN
E_RETURNは、デコードされた命令がサブルーチ
ンリターン相当の命令になり得る命令であるときに論理
“1”となるフラグとして用いられる。
【0069】デコードされた命令が分岐命令であれば、
通常は、デコード結果がRSBR36に登録される。こ
の時点で、RSBR36には、サブルーチンコール・リ
ターン判別結果を表すフラグと、リンクレジスタや分岐
先アドレスレジスタの情報等が登録される。
【0070】ESA/390 POOのアーキテクチャ
では、サブルーチンコール相当の命令になり得る命令
(機械語命令)のビット〈8:11〉にリンクレジスタ
の番号が指定され、サブルーチンリターン相当の命令に
なり得る命令(機械語命令)のビット〈12:15〉に
分岐アドレスレジスタの番号が指定される。そこで、ビ
ット〈8:15〉のデータがこれらのレジスタの情報と
して登録される。
【0071】図7は、RSBR36内の登録回路を示し
ている。図7において、入力信号+RSBR_VALI
Dは、対応するRSBR36が有効である間、論理
“1”となる。ラッチ回路51は、入力信号+D_OP
C〈8:15〉の値をラッチし、信号+RSBR_OP
C〈8:15〉として出力する。
【0072】また、ラッチ回路52は、図6の判別回路
が生成したフラグ+D_SUBROUTINE_CAL
Lと+D_SUBROUTINE_RETURNの値を
ラッチし、それぞれ、信号+RSBR_SUBROUT
INE_CALLと+RSBR_SUBROUTINE
_RETURNとして出力する。
【0073】信号+RSBR_VALIDが論理“1”
となると、これらの情報の登録が終了し、対応するRS
BR36が有効である間、ラッチ回路51、52に登録
された情報が保持される。
【0074】次に、分岐履歴情報の更新時において、R
SBR36に登録されたサブルーチンコール・リターン
判別結果とレジスタ情報が、その他の分岐履歴情報と同
時に、分岐予測機構22へ送出される。サブルーチンコ
ール相当の命令である場合は、リンクレジスタの番号が
レジスタ情報として選択され、サブルーチンリターン相
当の命令になり得る命令である場合は、分岐先アドレス
レジスタの番号がレジスタ情報として選択される。
【0075】図8は、RSBR36内の選択回路を示し
ている。図8において、AND回路61は、図7の登録
回路からの信号+RSBR_SUBROUTINE_C
ALLと+RSBR_OPC〈8:11〉の論理積を、
OR回路63に出力する。したがって、フラグ+RSB
R_SUBROUTINE_CALLが立っているとき
は、リンクレジスタの番号がAND回路61から出力さ
れる。
【0076】また、AND回路62は、図7の登録回路
からの信号+RSBR_SUBROUTINE_RET
URNと+RSBR_OPC〈12:15〉の論理積
を、OR回路63に出力する。したがって、フラグ+R
SBR_SUBROUTINE_RETURNが立って
いるときは、分岐先アドレスレジスタの番号がAND回
路62から出力される。
【0077】そして、OR回路63は、AND回路6
1、62の出力信号の論理和を、信号+RSBR_CA
LL_RETURN_REG〈0:3〉として出力す
る。ここで、フラグ+RSBR_SUBROUTINE
_CALLと+RSBR_SUBROUTINE_RE
TURNが同時に立つことはないので、OR回路63
は、AND回路61、62の出力信号を選択的に出力す
ることになる。
【0078】信号+RSBR_SUBROUTINE_
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へ送出され
る。
【0079】ところで、前述したように、分岐命令(サ
ブルーチンリターン相当の命令を含む)において、分岐
先アドレスレジスタの番号として“0”を指定すると、
分岐は行われない。また、逆に、デコード時にサブルー
チンコール相当の命令と判別された命令でも、リンクレ
ジスタの番号として“0”が指定された場合には、この
命令をサブルーチンコール相当の命令として識別しない
方がよい。
【0080】そこで、図9のような識別回路を分岐予測
機構22に設けて、送られてきたレジスタ番号が“0”
でないときにのみ有効となる制御信号を生成する。図9
において、NAND回路71は、信号+BRHIS_U
PDATE_CALL_RTN_REG〈0:3〉の4
つのビットの否定の論理積を求め、その論理積の否定を
信号+SBRTN_LINK_REG_VALとして出
力する。
【0081】したがって、この出力信号は、信号+BR
HIS_UPDATE_CALL_RTN_REG
〈0:3〉が表すレジスタ番号が“0”でないときにの
み、論理“1”となり、リンクレジスタが有効であるこ
とを表す。この信号を用いたリンクスタック33の制御
については、後述することにする。
【0082】分岐命令が分岐しないことを表す分岐先ア
ドレスレジスタの番号として、“0”以外の特定の番号
が用いられた場合も、図9と同様の回路により同様の制
御信号が生成される。
【0083】また、サブルーチンコールとして使用可能
なbassm命令については、ハードワイヤードではな
く、マイコロコードにより実現されるため、ブランチヒ
ストリ34には登録されず、分岐履歴情報の更新時に情
報が送られてこない。その代わりに、デコード時に生成
された図5の信号+D_BASSMが分岐予測機構22
に送出される。
【0084】そこで、図10のような識別回路を分岐予
測機構22に設けて、bassm命令に関する制御を行
う。ここでは、bassm命令に対応するリターン命令
はbsmのみであるものと仮定している。
【0085】図10において、AND回路81は、ラッ
チ回路83の出力とNAND回路84の出力の論理積を
OR回路82に出力し、OR回路82は、入力信号+D
_BASSMとAND回路81の出力信号の論理和をラ
ッチ回路83に出力する。ラッチ回路83は、実質的に
Set−Resetフリップフロップの動作を行い、O
R回路82の出力信号をラッチして、NAND回路84
に出力する。
【0086】また、NAND回路84は、図5の信号+
BRHIS_UPDATE_BSMと、図9の制御信号
+SBRTN_LINK_REG_VALと、ラッチ回
路83の出力信号の論理積の否定を、信号−SBRTN
_BASSM_BSM_RTN_VALIDとして出力
する。この信号−SBRTN_BASSM_BSM_R
TN_VALIDは、論理“0”のとき、実行されたb
sm命令が上記bassm命令に対応するリターン命令
であることを表す。
【0087】このような識別回路によれば、分岐するb
assm命令が実行された場合には、信号+D_BAS
SMが論理“1”となり、ラッチ回路83の出力も論理
“1”となる。そして、ラッチ回路83の出力と図9の
信号+SBRTN_LINK_REG_VALが論理
“1”である間に、bsm命令の実行が完了して信号+
BRHIS_UPDATE_BSMが論理“1”となる
と、実行されたbsm命令は上記bassm命令に対応
するリターン命令であると識別される。
【0088】このとき、信号−SBRTN_BASSM
_BSM_RTN_VALIDが論理“0”となるた
め、AND回路81の出力も論理“0”となる。また、
信号+D_BASSMも論理“0”であるため、ラッチ
回路83の出力も論理“0”となる。
【0089】このように、ラッチ回路83の出力信号
は、bassm命令およびbsm命令が検出されたこと
を表す所定のフラグとして用いられ、分岐するbass
m命令が検出されたときにセットされ、それに対応する
bsm命令が検出されたときにリセットされる。
【0090】また、信号−SBRTN_BASSM_B
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命令に対応するリターン命令であることを表す。
【0091】こうして識別されたbassm命令に対応
するbsm命令は、ブランチヒストリ34あるいはリタ
ーンアドレススタック35上では、リターン相当の命令
とは認識されなくなる。なぜなら、bassm命令自身
がコール相当の命令として登録されていないからであ
る。
【0092】分岐予測機構22は、分岐命令実行処理回
路25から送られてきた信号と、図9および図10の識
別回路により生成された特別な制御信号とを用いて、サ
ブルーチンコール・リターン相当の命令を判別する。
【0093】図11は、分岐予測機構22内の判別回路
を示している。図11において、入力信号−BRHIS
_UPDATE_SUBROUTINE_RTNは、図
5の信号+BRHIS_UPDATE_SUBROUT
INE_RTNの否定に対応する。
【0094】また、入力信号+RTN_LINK_RE
G_STK0〈0:3〉は、リンクスタック33の先頭
エントリに保持されたレジスタ番号を表す。入力信号+
SBRTN_LINK_REG_EQ_Eは、図5の信
号+BRHIS_UPDATE_CALL_RTN_R
EG〈0:3〉がレジスタ番号“14”を表すとき、論
理“1”となり、それ以外の番号を表すとき、論理
“0”となる。
【0095】AND回路91は、図5の信号+BRHI
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として出力する。
【0096】この信号+BR_COMP_SUBROU
TINE_CALLは、分岐予測機構22において、サ
ブルーチンコール相当の命令を表すフラグ(サブルーチ
ンコールフラグ)として用いられる。このフラグが論理
“1”のとき、分岐命令実行処理回路25で実行された
命令はサブルーチンコール相当の命令であると判別され
る。実行された命令がリンクレジスタとして番号“0”
のレジスタを指定していた場合は、このフラグが論理
“0”となり、サブルーチンコール相当の命令ではない
と判別される。
【0097】また、EXNOR回路101は、図5の信
号+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の論理和を出力する。
【0098】そして、AND回路103は、図5の信号
+BRHIS_UPDATE_SUBROUTINE_
RTNと、図9の信号+SBRTN_LINK_REG
_VALと、図10の信号−SBRTN_BASSM_
BSM_RTN_VALIDと、OR回路102の出力
信号の論理積を、信号+BR_COMP_SUBROU
TINE_RTNとして出力する。
【0099】この信号+BR_COMP_SUBROU
TINE_RTNは、分岐予測機構22において、サブ
ルーチンリターン相当の命令を表すフラグ(サブルーチ
ンリターンフラグ)として用いられる。このフラグが論
理“1”のとき、分岐命令実行処理回路25で実行され
た命令はサブルーチンリターン相当の命令であると判別
される。この判別動作は、対応する分岐履歴情報がブラ
ンチヒストリ34やリターンアドレススタック35に登
録される前に行われる。
【0100】EXNOR回路101、OR回路102、
およびAND回路103からなるサブルーチンリターン
判別回路は、図3の比較回路32に対応する。この判別
回路によれば、EXNOR回路101により、実行され
たサブルーチンリターン相当の命令になり得る命令の分
岐先アドレスレジスタの番号がリンクスタック33の先
頭エントリと比較され、それらが一致したとき、実行さ
れた命令がサブルーチンリターン相当の命令であると判
別される。
【0101】ただし、前述したように、分岐予測機構2
2では、bassm命令に対応するbsm命令をリター
ン相当の命令として扱わないので、信号−SBRTN_
BASSM_BSM_RTN_VALIDにより、AN
D回路103の出力が抑制されている。
【0102】また、慣習的に、番号“14”のレジスタ
は、サブルーチンリターンにおける分岐先アドレスレジ
スタとして用いられることが多い。そこで、このレジス
タが分岐先アドレスレジスタとして指定された場合は、
信号+SBRTN_LINK_REQ_EQ_Eを用い
て、EXNOR回路101の比較結果にかかわらず、実
行された命令をサブルーチンリターン相当の命令とみな
している。
【0103】サブルーチンリターン相当の命令であるこ
とを表す分岐先アドレスレジスタの番号として、“1
4”以外の特定の番号が用いられた場合も、図11と同
様の回路により同様の制御が行われる。
【0104】こうして生成されたサブルーチンコールフ
ラグとサブルーチンリターンフラグを用いて、リンクス
タック33は、図12のような制御回路によりプッシュ
動作とポップ動作を行う。ここでは、リンクスタック3
3は2つのエントリからなるものとし、入力信号+RT
N_LINK_REG_STK0〈0:3〉と+RTN
_LINK_REG_STK1〈0:3〉は、それぞ
れ、先頭エントリ(エントリ0)と2番目のエントリ
(エントリ1)に保持されたレジスタ番号を表してい
る。
【0105】また、入力信号−SBRTN_LINK_
REQ_EQ_Eは、図11の信号+SBRTN_LI
NK_REQ_EQ_Eの否定に対応し、入力信号BR
HIS_UPDATE_TAKENは、分岐命令による
分岐が実行され、分岐履歴情報が更新されるときに、論
理“1”となる。
【0106】まず、AND回路111は、これらの2つ
の信号の論理積を出力する。AND回路112は、図1
1のフラグ+BR_COMP_SUBROUTINE_
CALLとAND回路111の出力信号の論理積を、動
作信号+PUSH_RTN_STACK_LINK_R
EGとして出力する。この信号は、リンクスタック33
およびリターンアドレススタック35のプッシュ動作の
指示に用いられ、サブルーチンコール相当の命令が実行
されて分岐履歴情報が更新されるときに、論理“1”と
なる。
【0107】また、AND回路113は、図11のフラ
グ+BR_COMP_SUBROUTINE_RTNと
AND回路111の出力信号の論理積を、動作信号+P
OP_RTN_STACK_LINK_REGとして出
力する。この信号は、リンクスタック33およびリター
ンアドレススタック35のポップ動作の指示に用いら
れ、サブルーチンリターン相当の命令が実行されて分岐
履歴情報が更新されるときに、論理“1”となる。
【0108】ここで、リンクレジスタの番号として“1
4”を指定するサブルーチンコール相当の命令と、分岐
先アドレスレジスタの番号として“14”を指定するサ
ブルーチンリターン相当の命令は、常にコール・リター
ン命令対を形成するものとすると、リンクスタック33
を用いなくてもこれらの対応関係を抽出することができ
る。
【0109】そこで、このような場合にリンクスタック
33を動作させないように、信号−SBRTN_LIN
K_REQ_EQ_Eを用いて、プッシュ動作およびポ
ップ動作の動作信号を抑制している。これにより、リン
クスタック33のエントリの浪費が防止され、少ない段
数でも効率的な動作が可能になる。
【0110】次に、AND回路114は、図5の信号+
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の論理積を出力する。
【0111】また、OR回路116は、AND回路11
4、115の出力信号の論理和を、信号+SET_RT
N_LINK_REG_STK0〈0:3〉として出力
する。この信号は、リンクスタック33の先頭エントリ
にセットされるレジスタ番号を表す。
【0112】ここで、動作信号+PUSH_RTN_S
TACK_LINK_REGと+POP_RTN_ST
ACK_LINK_REGが同時に論理“1”になるこ
とはないので、OR回路116は、AND回路114、
115の出力信号を選択的に出力することになる。した
がって、プッシュ動作の場合は、サブルーチンコール相
当の命令により指定されたリンクレジスタの番号がセッ
トされ、ポップ動作の場合は、リンクスタック33の2
番目のエントリに保持されたレジスタ番号がセットされ
る。
【0113】また、AND回路117は、信号+RTN
_LINK_REG_STK0〈0:3〉と動作信号+
PUSH_RTN_STACK_LINK_REGの論
理積を、信号+SET_RTN_LINK_REG_S
TK1〈0:3〉として出力する。この信号は、リンク
スタック33の2番目のエントリにセットされるレジス
タ番号を表し、プッシュ動作の場合は、リンクスタック
33の先頭エントリに保持されたレジスタ番号に一致す
る。
【0114】図13は、リンクスタック33内でレジス
タ番号を保持するラッチ回路を示している。図13にお
いて、入力信号−PUSH_POP_RTN_LINK
_REG_STKは、プッシュ動作またはポップ動作が
終了したときに論理“1”となる。
【0115】ラッチ回路121は、図12の信号+SE
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〉と
して出力する。
【0116】信号−PUSH_POP_RTN_LIN
K_REG_STKが論理“1”となると、これらのエ
ントリへのレジスタ番号の登録が終了し、この信号が論
理“0”になるまで、登録されたレジスタ番号が保持さ
れる。
【0117】ところで、前述したlpsw命令(複雑命
令)は、サブルーチンコール・リターン命令のいずれに
もなり得るため、コール・リターンの対応関係を崩すも
のと考えられる。あるいはまた、割り込みが発生した場
合、それが割り込み処理の後に元のプログラムに戻らな
い種類の割り込みであれば、やはり、コール・リターン
の対応関係を崩すものと考えられる。
【0118】そこで、このような事象(命令や割り込み
等)が発生した場合には、その命令や割り込みの実行時
に、リンクスタック33とリターンアドレススタック3
5のエントリをすべてクリアして、保持された情報を無
効化する。
【0119】図14は、分岐予測機構22内の無効化回
路を示している。図14において、入力信号+MICR
O_PURGE_RTN_ADRS_STKは、リンク
スタック33とリターンアドレススタック35のエント
リをクリアする信号であり、コール・リターンの対応関
係を崩すような命令や割り込みが発生したときに、論理
“1”となる。
【0120】NOR回路131は、図12の動作信号+
PUSH_RTN_STACK_LINK_REGと+
POP_RTN_STACK_LINK_REG、およ
び信号+MICRO_PURGE_RTN_ADRS_
STKの論理和の否定を、図13の信号−PUSH_P
OP_RTN_LINK_REG_STKとして出力す
る。
【0121】したがって、信号+MICRO_PURG
E_RTN_ADRS_STKが論理“1”となると、
信号−PUSH_POP_RTN_LINK_REG_
STKが論理“0”となり、図13のラッチ回路12
1、122に保持されたレジスタ番号がクリアされる。
【0122】また、サブルーチンコールに対応する戻り
先、すなわち、サブルーチンコール相当の命令の直後の
命令アドレスに戻らないサブルーチンリターン相当の命
令を認識した場合、ブランチヒストリ34に、そのサブ
ルーチンリターン相当の命令の戻り先が異なることを示
すフラグを設定することができる。
【0123】図15は、RSBR36において、このよ
うなフラグを生成する回路を示している。図15におい
て、入力信号+D_BCは、デコーダ23によりオペレ
ーションコード“bc”が検出されたときに、論理
“1”となる。入力信号−D_DISP_EQ_0は、
命令により指定されたディスプレイスメントが0でない
ときに、論理“1”となる。
【0124】また、入力信号+D_BR_EQ_E、+
D_XR_EQ_Eは、それぞれ、命令により指定され
たベースレジスタ、インデックスレジスタの番号が“1
4”のときに、論理“1”となる。これらの信号は、デ
コーダ23からRSBR36に出力される。
【0125】OR回路141は、信号+D_BR_EQ
_Eと+D_XR_EQ_Eの論理和を表す信号を出力
し、AND回路142は、信号+D_BCと−D_DI
SP_EQ_0、およびOR回路141の出力信号の論
理積を、信号+D_BC_GIDDY_RTNとして出
力する。
【0126】また、ラッチ回路143は、OR回路14
1からの信号+D_BC_GIDDY_RTNをラッチ
し、信号+RSBR_BC_GIDDY_RTNとして
出力する。この信号は、対応するRSBR36が有効で
ある間、ラッチ回路143に保持され、サブルーチンリ
ターン相当の命令の戻り先が異なることを示すフラグと
して用いられる。
【0127】このフラグ+RSBR_BC_GIDDY
_RTNは、信号+BRHIS_UPDATE_BC_
GIDDY_RTNとして分岐予測機構22に送出さ
れ、図16に示すように、ブランチヒストリ34のエン
トリのフラグGIDDY RTNに設定される。
【0128】図16のブランチヒストリ34のエントリ
には、フラグGIDDY RTN以外に、分岐命令アド
レスIAR、分岐先アドレスTIAR、およびフラグC
ALL、RTNが格納されている。フラグCALL、R
TNは、それぞれ、サブルーチンコールフラグ、サブル
ーチンリターンフラグに対応する。
【0129】例えば、ディスプレイスメントdが0でな
いような分岐命令“bc m.d(14)”がデコード
された場合、信号+D_BC_GIDDY_RTNが論
理“1”となり、フラグ+RSBR_BC_GIDDY
_RTNが立つ。したがって、ブランチヒストリ34に
この分岐命令が登録されたとき、対応するフラグGID
DY RTNに論理“1”が格納される。
【0130】予測回路31による分岐予測時に、このフ
ラグGIDDY RTNが立っていた場合、リターンア
ドレススタック35はリターン命令を予測したときと同
様のポップ動作を行うが、予測回路31は、リターンア
ドレススタック35からポップされた分岐先アドレスで
はなく、ブランチヒストリ34に登録された分岐先アド
レスを、予測分岐先アドレスとして出力する。したがっ
て、ブランチヒストリ34により予測された分岐先の命
令フェッチが行われ、リターンアドレススタック35に
よる予測結果は廃棄される。
【0131】上述した実施形態においては、リンクスタ
ック33に登録されたリンクレジスタの番号と、実行さ
れた(実行される)命令の分岐先アドレスレジスタの番
号を比較することで、その命令がサブルーチンリターン
相当の命令であるか否かを判別している。これ以外の他
の実施形態として、リンクスタック33を用いず、リタ
ーンアドレススタック35に登録されている戻り先アド
レスと、実行された(実行される)命令の分岐先アドレ
スを比較することで、同様の判別を行うことも考えられ
る。
【0132】この方法では、上述したbc命令等のよう
に、戻り先がコール命令の直後とならないリターン相当
の命令が出現すると、認識されるコール・リターン対の
対応関係が崩れてしまい、リターンアドレススタック3
5の本来の性能が発揮できない。しかし、リンクスタッ
ク33を新たに設ける必要がないというメリットがあ
る。
【0133】図17は、分岐予測機構22内でこのよう
な判別を行う回路を示している。図17において、信号
+BRHIS_UPDATE_TIARは、サブルーチ
ンリターン相当の命令になり得る命令の分岐先アドレス
を表し、RSBR36から送出される。
【0134】比較回路151は、この信号+BRHIS
_UPDATE_TIARをリターンアドレススタック
35の先頭エントリ(エントリ0)と比較し、それらが
一致すると論理“1”の信号を出力する。ここでは、リ
ターンアドレススタック35は、n段のスタックとして
示されている。AND回路152は、図5の信号+BR
HIS_UPDATE_SUBROUTINE_RTN
と比較回路151の出力信号の論理積を、図12の信号
+BR_COMP_SUBROUTINE_RTNとし
て出力する。
【0135】図17の判別回路は、図11に示したサブ
ルーチンリターン相当の命令の判別回路の代用となり、
リンクスタック33のエントリを参照しなくても、サブ
ルーチンリターンフラグを生成することができる。した
がって、この場合、リンクスタック33は不要となる。
【0136】以上説明した実施形態においては、主とし
て、リンクスタック33およびリターンアドレススタッ
ク35を2段のスタックとしているが、任意の段数のス
タックを用いた場合も、同様の制御を行うことができ
る。また、レジスタ番号や命令アドレス以外にも、サブ
ルーチンの戻り先アドレスを指定する任意の情報を比較
することで、サブルーチンコール・リターン命令対を認
識することができる。
【0137】
【発明の効果】本発明によれば、リターンアドレススタ
ック等の分岐予測機構を有する情報処理装置において、
正しいサブルーチンコール・リターン命令対を動的に抽
出することができる。したがって、分岐予測機構におけ
るコール・リターン対の対応関係のズレが防止され、サ
ブルーチンリターン相当の命令の分岐予測の精度が向上
する。
【図面の簡単な説明】
【図1】本発明の分岐予測装置の原理図である。
【図2】命令コードを示す図である。
【図3】命令処理装置の構成図である。
【図4】リンクスタックとリターンアドレススタックの
対応関係を示す図である。
【図5】命令処理装置で用いられる信号を示す図であ
る。
【図6】第1の判別回路を示す図である。
【図7】登録回路を示す図である。
【図8】選択回路を示す図である。
【図9】第1の識別回路を示す図である。
【図10】第2の識別回路を示す図である。
【図11】第2の判別回路を示す図である。
【図12】制御回路を示す図である。
【図13】ラッチ回路を示す図である。
【図14】無効化回路を示す図である。
【図15】フラグ生成回路を示す図である。
【図16】ブランチヒストリに登録されるエントリを示
す図である。
【図17】第3の判別回路を示す図である。
【図18】サブルーチンコール・リターン命令対を示す
図である。
【符号の説明】
1 格納手段 2 比較手段 3 識別手段 4 スタック手段 5 プッシュ手段 6 リターンアドレススタック手段 11 オペレーションコード 12、13 オペランド 21 命令フェッチ回路 22 分岐予測機構 23 デコーダ 24 分岐先アドレス生成回路 25 分岐命令実行処理回路 26 命令実行完了処理回路 31 予測回路 32、151 比較回路 33 リンクスタック 35 リターンアドレススタック 36 RSBR 41、61、62、81、91、92、103、11
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回路
───────────────────────────────────────────────────── フロントページの続き (72)発明者 井上 愛一郎 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5B013 BB02 BB17 5B033 AA02 AA13 CA04 CA09 DA16 DB06 DE07 EA09

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 サブルーチンコール相当の命令が検出さ
    れたとき、サブルーチンの戻り先アドレスを指定する情
    報を格納する格納手段と、 サブルーチンリターン相当の命令になり得る命令が検出
    されたとき、該サブルーチンリターン相当の命令になり
    得る命令の分岐先アドレスを指定する情報と、前記格納
    手段に格納された前記戻り先アドレスを指定する情報と
    を比較し、比較結果を出力する比較手段と、 前記比較結果に基づいて、前記サブルーチンコール相当
    の命令に対応するサブルーチンリターン相当の命令を識
    別する識別手段とを備えることを特徴とする分岐予測装
    置。
  2. 【請求項2】 前記格納手段は、前記サブルーチンコー
    ル相当の命令により指定されたリンクレジスタのレジス
    タ番号を、前記戻り先アドレスを指定する情報として格
    納することを特徴とする請求項1記載の分岐予測装置。
  3. 【請求項3】 前記格納手段は、前記サブルーチンの戻
    り先アドレスを、前記戻り先アドレスを指定する情報と
    して格納することを特徴とする請求項1記載の分岐予測
    装置。
  4. 【請求項4】 サブルーチンの戻り先アドレスを指定す
    る情報を格納するスタック手段と、 サブルーチンコール相当の命令が検出されたとき、前記
    戻り先アドレスを指定する情報を前記スタック手段にプ
    ッシュするプッシュ手段と、 サブルーチンリターン相当の命令になり得る命令が検出
    されたとき、該サブルーチンリターン相当の命令になり
    得る命令の分岐先アドレスを指定する情報と、前記スタ
    ック手段の先頭エントリに格納された前記戻り先アドレ
    スを指定する情報とを比較し、比較結果を出力する比較
    手段と、 前記比較結果に基づいて、前記サブルーチンコール相当
    の命令に対応するサブルーチンリターン相当の命令を識
    別する識別手段とを備えることを特徴とする分岐予測装
    置。
  5. 【請求項5】 前記プッシュ手段は、前記サブルーチン
    コール相当の命令により指定されたリンクレジスタのレ
    ジスタ番号を、前記戻り先アドレスを指定する情報とし
    て前記スタック手段にプッシュし、前記比較手段は、前
    記サブルーチンリターン相当の命令になり得る命令によ
    り指定された分岐先アドレスレジスタのレジスタ番号
    と、前記スタック手段の先頭エントリに格納されたレジ
    スタ番号とを比較し、前記識別手段は、比較された2つ
    のレジスタ番号が一致したとき、該サブルーチンリター
    ン相当の命令になり得る命令を、前記サブルーチンリタ
    ーン相当の命令であると識別することを特徴とする請求
    項4記載の分岐予測装置。
  6. 【請求項6】 前記識別手段は、前記分岐先アドレスレ
    ジスタのレジスタ番号が特定のレジスタに対応すると
    き、前記比較結果にかかわらず、前記サブルーチンリタ
    ーン相当の命令になり得る命令を、前記サブルーチンリ
    ターン相当の命令であると識別することを特徴とする請
    求項5記載の分岐予測装置。
  7. 【請求項7】 前記プッシュ手段は、前記リンクレジス
    タのレジスタ番号が特定のレジスタに対応するとき、該
    リンクレジスタのレジスタ番号を前記スタック手段にプ
    ッシュしないことを特徴とする請求項5記載の分岐予測
    装置。
  8. 【請求項8】 前記識別手段が、前記サブルーチンリタ
    ーン相当の命令になり得る命令を前記サブルーチンリタ
    ーン相当の命令であると識別し、該サブルーチンリター
    ン相当の命令による分岐が実行されたとき、前記スタッ
    ク手段をポップするポップ手段をさらに備えることを特
    徴とする請求項4記載の分岐予測装置。
  9. 【請求項9】 分岐予測のための分岐履歴情報を格納す
    る予測手段をさらに備え、前記比較手段は、該分岐履歴
    情報が該予測手段に登録されるとき、前記分岐先アドレ
    スを指定する情報と前記戻り先アドレスを指定する情報
    とを比較することを特徴とする請求項1記載の分岐予測
    装置。
  10. 【請求項10】 サブルーチンコールとサブルーチンリ
    ターンの対応関係を崩す可能性がある事象が発生したと
    き、前記格納手段に格納された情報を無効化する手段を
    さらに備えることを特徴とする請求項1記載の分岐予測
    装置。
  11. 【請求項11】 分岐予測のための分岐履歴情報を格納
    する予測手段をさらに備え、前記サブルーチンコール相
    当の命令の直後の命令アドレスに戻らないサブルーチン
    リターン相当の命令が検出されたとき、検出されたサブ
    ルーチンリターン相当の命令の戻り先が異なることを示
    すフラグを該予測手段に設定する設定手段をさらに備え
    ることを特徴とする請求項1記載の分岐予測装置。
  12. 【請求項12】 前記予測手段は、前記サブルーチンの
    戻り先アドレスを格納するリターンアドレススタック手
    段を含み、分岐予測時に前記フラグが認識された場合、
    該リターンアドレススタック手段をポップし、ポップさ
    れた戻り先アドレスを予測分岐先として用いないことを
    特徴とする請求項11記載の分岐予測装置。
  13. 【請求項13】 分岐予測のための分岐履歴情報を格納
    する予測手段と、該予測手段に登録されていないサブル
    ーチンコール相当の命令が検出されたとき、所定のフラ
    グをセットし、該登録されていないサブルーチンコール
    相当の命令に対応するサブルーチンリターン相当の命令
    が検出されたとき、該所定のフラグをリセットして、該
    予測手段では該対応するサブルーチンリターン相当の命
    令をサブルーチンリターン相当の命令とは認識しないよ
    うな制御を行う手段とをさらに備えることを特徴とする
    請求項1記載の分岐予測装置。
  14. 【請求項14】 サブルーチンコール相当の命令が検出
    されたとき、サブルーチンの戻り先アドレスを格納する
    リターンアドレススタック手段と、 サブルーチンリターン相当の命令になり得る命令が検出
    されたとき、該サブルーチンリターン相当の命令になり
    得る命令の分岐先アドレスと、前記リターンアドレスス
    タック手段に格納された前記戻り先アドレスとを比較
    し、比較結果を出力する比較手段と、 前記比較結果に基づいて、前記サブルーチンコール相当
    の命令に対応するサブルーチンリターン相当の命令を識
    別する識別手段とを備えることを特徴とする分岐予測装
    置。
  15. 【請求項15】 サブルーチンコール相当の命令が検出
    されたとき、サブルーチンの戻り先アドレスを指定する
    情報を登録し、 サブルーチンリターン相当の命令になり得る命令が検出
    されたとき、該サブルーチンリターン相当の命令になり
    得る命令の分岐先アドレスを指定する情報と、登録され
    ている前記戻り先アドレスを指定する情報とを比較し、 前記分岐先アドレスを指定する情報と前記戻り先アドレ
    スを指定する情報が一致すれば、前記サブルーチンリタ
    ーン相当の命令になり得る命令を、前記サブルーチンコ
    ール相当の命令に対応するサブルーチンリターン相当の
    命令であると識別し、 前記分岐先アドレスを指定する情報と前記戻り先アドレ
    スを指定する情報が一致しなければ、前記サブルーチン
    リターン相当の命令になり得る命令を、前記サブルーチ
    ンコール相当の命令に対応するサブルーチンリターン相
    当の命令ではないと識別し、 識別結果を用いて分岐予測を行うことを特徴とする分岐
    予測方法。
JP27622199A 1999-09-29 1999-09-29 サブルーチンリターン相当の命令の分岐予測を行う装置および方法 Expired - Fee Related JP3723019B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (6)

* Cited by examiner, † Cited by third party
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