JPH1040104A - 分岐命令の結果予測装置及び方法 - Google Patents

分岐命令の結果予測装置及び方法

Info

Publication number
JPH1040104A
JPH1040104A JP9109719A JP10971997A JPH1040104A JP H1040104 A JPH1040104 A JP H1040104A JP 9109719 A JP9109719 A JP 9109719A JP 10971997 A JP10971997 A JP 10971997A JP H1040104 A JPH1040104 A JP H1040104A
Authority
JP
Japan
Prior art keywords
branch instruction
branch
entry
instruction
predictor
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
JP9109719A
Other languages
English (en)
Inventor
Ekanadamu Katsutamuri
カッタムリ・エカナダム
N Rektoschafen Rudolf
ルドルフ・エヌ・レクトシャフェン
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH1040104A publication Critical patent/JPH1040104A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or 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 OR CALCULATING; 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 1又は複数の分岐命令に関連するコンテキス
ト指向予測子を記録するヒストリ・テーブルを用いて分
岐結果を予測する装置及び方法を提供する。 【解決手段】 コンテキスト指向予測子は、ヒストリ・
テーブルの各エントリ内の分岐予測子ベクトルを統合す
ることにより導出される。このベクトルは、nの各値に
ついて2個の予測子のセットからなる(nは任意に設定
され、好適には実施態様により固定される)。プロセッ
サのプリフェッチ動作によりヒストリ・テーブルがアク
セスされると、先祖分岐と称される所与の分岐について
の予測子のベクトルがヒストリ・テーブルから取り出さ
れ記憶される。n回の取り出しの後、最後のn個の分岐
の動作ヒストリを用いて、次に現れる分岐のn番目の先
祖に関連する予測子ベクトルからの予測子へアクセスす
る。この予測子は、その先祖分岐のn番目の子孫分岐を
予測するために用いられる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データ処理システ
ムに関し、特に、データ処理システムにより実行される
分岐命令の予測に関する。
【0002】図1は、プロセッサのパイプラインを構成
する主要な構成要素を示す。これらの構成要素は、命令
フェッチ(段階I)、命令デコード及びアドレス発生
(段階II)、ディスパッチ(段階III)、命令実行(段
階IV)、並びに完了(段階V)である。各命令がパイプ
ラインに入ると、理想的には各パイプライン段階におい
て1サイクルを費やす。従って、理想的には、各命令が
このパイプラインを通るために5サイクルを要する。し
かしながら、仮にこのパイプラインを満杯状態とするこ
とが可能であって、プロセッサの各構成要素(パイプラ
イン段階)がそれぞれ異なるパイプライン段階にある別
の命令に関して作業するような活動状態とすることが可
能な場合、1サイクル毎に1つの命令を完了することが
できる。
【0003】上記のように、パイプライン・プロセッサ
は、現在の命令の実行が終わる前に次の命令を実行パイ
プラインへとフェッチしなければならない。現在の命令
が条件分岐命令である場合、プロセッサは、その分岐が
選択されると仮定してその分岐の目標アドレスからフェ
ッチするか、又は、その分岐が選択されないと仮定して
次の順序通りのアドレスからフェッチするかを決定しな
ければならない。誤って推論されると、パイプラインが
再び有効な命令で満たされるまでパイプラインが停止す
ることとなる。この遅延は、「分岐ペナルティ」と称さ
れる。幾つかのシステムでは、ヒストリ(活動記録)・テ
ーブルを用いることにより条件分岐命令に関する分岐ペ
ナルティを低減することが試みられている。
【0004】米国特許第3559183号では、分岐ヒ
ストリ・テーブル(BHT)を用いる命令フェッチ機構が
記載されている。これは、個々に検討したところほとん
どの分岐が首尾一貫して選択されるか又は選択されない
かのいずれかであり、かつ選択される場合は首尾一貫し
た目標アドレスを有することとなる、という観察結果に
基づいている。この手法においては、選択された分岐の
テーブルが構築される。このテーブルの各エントリは、
選択された分岐のアドレス及びそれに続くその分岐の目
標アドレスから構成される。このテーブルは、ハードウ
ェア構成であるので所定のサイズを有し、通常1024
乃至4096個のエントリをもつ。エントリは、選択さ
れる分岐に遭遇したとき、それらの分岐についてのみ作
成される。テーブルが満杯となったとき、新たなエント
リを追加するために古いエントリを置換する必要があ
る。これは、キャッシュにおけると同様のLRU(Least
Recently Used)アルゴリズムにより実現することがで
きる。
【0005】原則的には、プロセッサの実行パイプライ
ン内の各分岐命令はそのアドレスを用いてテーブルを参
照され、そして見出された場合には、その目標アドレス
がフェッチされてそのパイプラインへロードされる次の
命令となる。もしその分岐がテーブル内で見出されなか
った場合には、選択されないと推定する。その分岐命令
の実行が進行すると、それに従ってテーブルが更新され
る。仮に、選択されると予測された分岐が選択されなか
った場合は、その関連するテーブルのエントリは削除さ
れる。仮に、選択されないと予測された分岐が選択され
た場合は、その分岐について新たなエントリが作成され
る。予測された目標アドレスが誤っている場合は、修正
されたアドレスが入力される。
【0006】米国特許第4477872号では、デコー
ド・ヒストリ・テーブル(DHT)を用いたデコード時間
予測機構が記載されている。DHTは、エントリからな
るテーブルであり、予測される分岐命令のアドレスを構
成するビットに対するハッシュ変換や切捨て変換等の変
換に基づいてエントリがアクセスされる。エントリ自体
は、単一ビットからなる。このビットは、対応する分岐
命令が実行された最後のときにその分岐命令が選択され
た場合にセットされ、そうでない場合はセットされな
い。従って、通常DHTは、BHTのような各分岐命令
に対応する固有のエントリを含まない。これによりDH
Tは、BHTよりも機能は劣ることになるがそのサイズ
を小さくすることができる。
【0007】条件分岐命令の結果をより良好に予測する
ために、BHT/DHTのエントリへ更なる情報(すな
わち関連する更なる情報)を追加する他のシステムも提
示されている。
【0008】J. Smithによる「A Study of Branch Pred
iction Strategies(分岐予測方式の研究)」(24th Int
ernational Symposium on Computer Architecture, May
1981, pp. 135-148)では、所与の分岐命令の結果を予
測するために2個のヒストリ・ビットを用いることを提
示する。この方法においては、2個のビットを飽和カウ
ンタとみなすことができ、分岐命令が選択されたと解明
されたときに増分され、そして分岐命令が選択されなか
ったと解明されたときに減分される。
【0009】Yeh及びPrattによる「A Comparison of Dy
namic Branch Predictors that useTwo Levels of Bran
ch History(2レベルの分岐ヒストリを用いる動的分岐
予測の対比)」(Conference Proceedings Annual Sympo
sium on Computer Archtecture, 1993, pp. 257-266、I
EEE Computer Society Presss刊行)では、所与の分岐命
令の結果を予測するために2つの記憶レベルを用いる3
つの方式が記載されている。第1の記憶レベルは、1又
は複数のエントリを保持し、各々が最後のK個の分岐の
状態(選択/非選択)を表す。第2の記憶レベルは、パ
ターン・テーブルと称され、複数の2ビット・エントリ
を含む。1つのエントリ(又はエントリ群)は、第1の
記憶レベル内の対応するエントリによりエンコードされ
た状態に対応する。パターン・テーブルの各エントリの
2ビットは、第1の記憶レベル内の対応するエントリに
より特定の状態がエンコードされるときに発生した先行
する繰返しの結果を追跡する。
【0010】第1の方式(グローバル・ヒストリ方式)
では、第1の記憶レベルが、グローバル分岐ヒストリ・
レジスタと称され、遭遇した最後のK個の分岐の状態を
記憶する。第2の方式(パー・アドレス・ヒストリ方
式)では、第1の記憶レベルが、パー・アドレス分岐ヒ
ストリ・テーブルと称され、複数のエントリを記憶す
る。そして、各エントリが静的分岐命令アドレスにより
索引付けされ、その静的分岐命令アドレス索引により識
別された特定の分岐命令の最後のK個の発生状態をエン
コードする。第3の方式(パー・セット・ヒストリ方
式)では、分岐命令が複数のセットへと区分けされる。
所与の分岐のセット属性は、分岐命令コード、コンパイ
ラにより割当てられた分岐クラス、又は分岐アドレスに
より決定することができる。第3の方式では、第1の記
憶レベルが、パー・セット分岐ヒストリ・テーブルと称
され、複数のエントリを記憶する。各エントリは、セッ
ト属性により索引付けされ、そしてそのセット属性索引
により識別された特定のセット内の最後のK個の分岐命
令の状態をエンコードする。
【0011】3つの方式の各々におけるパターン・テー
ブルのエントリの関係は、次の3種類が可能である。 1)1つのエントリが、第1の記憶レベル内の対応する
エントリによりエンコードされた状態に関係する(グロ
ーバル・パターン・ヒストリ・テーブルと称される)。 2)エントリの群が、第1の記憶レベル内の対応するエ
ントリによりエンコードされた状態に関係するが、さら
に、その群中の各エントリが、特定の分岐命令の静的分
岐アドレスにより索引付けされる(パー・アドレス・パ
ターン・ヒストリ・テーブルと称される)。 3)エントリの群が、第1の記憶レベル内の対応するエ
ントリによりエンコードされた状態に関係するが、さら
に、その群中の各エントリが、所与の分岐命令セットの
セット属性に関係付けられる(パー・セット・パターン
・ヒストリ・テーブルと称される)。
【0012】Yeh及びPratt による2レベル分岐予測機
構は、次のように機能する。分岐命令に遭遇したとき、
第1の記憶レベルがアクセスされ、その特定の分岐命令
に対応するエントリが第1の記憶レベルから読み取られ
る。第1の方式においては、第1の記憶レベルが1つの
エントリのみを保持し、そしてそのエントリはその特定
の分岐命令に対応する。第2の方式においては、特定の
分岐命令に対応する第1の記憶レベルのエントリが、そ
のエントリの索引がその特定の分岐命令のアドレスに一
致することにより識別される。第3の方式においては、
特定の分岐命令に対応する第1の記憶レベルのエントリ
が、そのエントリの索引がその特定の分岐命令に関連す
るセット属性に一致することにより識別される。
【0013】第1の記憶レベル(及び可能であればその
特定の分岐命令の分岐アドレスやセット属性)によりエ
ンコードされた状態は、パターン・テーブルを索引付け
するために用いられる。その後、その索引に対応するエ
ントリが、パターン・テーブルから読み取られる。パタ
ーン・テーブルから読み取られた2ビット・エントリ
は、その予測を示す。特定の分岐命令が選択であるか若
しくは非選択であるかが解明された後、それに従って、
第1の記憶レベル内の対応するエントリにエンコードさ
れた状態が更新されると共に、パターン・テーブル内の
対応するエントリもまた更新される。
【0014】IBM Technical Disclosere Bulletin, Vo
l. 36, No. 12, Dec. 1993に提示された別のシステムに
おいては、分岐命令の結果を予測するビットを記憶する
分岐コンテキスト・レジスタ・ヒストリ・テーブル(B
CRHT)が用いられる。BCRHTのビットは、所与
の分岐命令についての予測子(predictor)のベクトルを
導出するためにその所与の分岐命令のアドレスを用いて
アクセスされる。このベクトルは、グローバル分岐動作
ベクトルに保持される値により索引づけされる。グロー
バル分岐動作ベクトルは、その所与の分岐命令に先行す
る最後のn個の分岐の動作を表現するnビットのバイナ
リ値を記憶する。この索引は、所与の分岐命令の動作を
予測するために用いられることになる予測子のベクトル
の成分を選択する。分岐命令の結果が解明されると、用
いられた予測子のベクトルの成分が必要に応じて更新さ
れる。更新された予測子のベクトルが元のベクトルと異
なる場合は、更新されたベクトルにより元のベクトルが
置換される。
【0015】
【発明が解決しようとする課題】本発明の目的は、高い
確度で、条件分岐命令の結果を効率的に予測する機構を
提供することである。
【0016】
【課題を解決するための手段】本発明によれば、ヒスト
リ・テーブルが、1又は複数の分岐命令に関連するコン
テキスト指向予測子を記録するために用いられる。好適
には、コンテキスト指向予測子は、ヒストリ・テーブル
の各エントリ内で分岐予測子のベクトルを統合すること
によりヒストリ・テーブルから導出される。このベクト
ルは、各nの値について2n個の予測子(predictor)のセ
ットを構成する(ここで、nは任意のセットとすること
ができるが、好適には所与の実施態様において一定とさ
れる)。プロセッサのプリフェッチ動作によりヒストリ
・テーブルがアクセスされるとき、先祖分岐と称される
所与の分岐についての予測子のベクトルがヒストリ・テ
ーブルから取り出されて記憶される。n回の取り出しの
後、次に訪れる分岐のn番目の先祖分岐(すなわち先行
分岐)に関連した予測子のベクトルから予測子へアクセ
スするために最後のn個の分岐の動作ヒストリが用いら
れる。この予測子は、その先祖分岐のn番目の後続分岐
を予測するために用いられる。必要に応じて、先祖分岐
に関連するベクトルから導出された予測子を更新するた
めに、このようなn番目の後続分岐の次の動作が用いら
れ、そしてそのベクトルは、ヒストリ・テーブル内のそ
の先祖分岐命令に従って索引付けされる場所に再記憶さ
れる。
【0017】コンテキスト指向予測子の長所は、次に現
れる分岐の動作予測がその分岐のアドレスに依存しない
ので、その動作予測をその分岐のデコード時間よりもは
るかに速く行うことができる点である。さらに、予測子
を先祖分岐及び一連の分岐解明結果に関連付けることに
より、その分岐の実行に先行するプログラム動作を表す
パスが、より忠実に個別化されると共に、予測機構に対
してさらに多くの情報が使用可能である。予測されよう
とする分岐の場所は、最終的には命令フェッチ機構によ
り明らかにされ、このアドレスはその分岐動作を予測す
るためには特に用いられないが、分岐予測子の集まりを
索引付けするために先祖分岐アドレスと目標分岐アドレ
スの組合せが用いられるときに利用することができる。
【0018】本発明の他の目的及び利点は、以下の図面
と共に示される詳細な説明によりさらに明確に理解され
るであろう。
【0019】
【発明の実施の形態】先ず、一般的な高性能プロセッサ
において命令がフェッチされ実行される方法を説明す
る。その後、本発明による分岐ヒストリ・テーブルを用
いたマシンの構造及び動作をさらに詳細に説明する。以
下の説明は、本発明をRISCアーキテクチャのプロセ
ッサにおいて実施するものであるが、本発明はこのアー
キテクチャに限定されず、有効性及び汎用性を失うこと
なく非RISCアーキテクチャのプロセッサにおいても
実施可能である。
【0020】図2は、一般的な高性能処理システムの本
質的特徴を示す構成図である。説明のために、図2で
は、分岐予測と共に含まれるRISC状のパイプライン
・プロセッサの部分を強調している。そして完全な設計
において必要な他の多くの特徴については簡略化又は省
略している。
【0021】処理システムは、プロセッサ・ユニット1
00及び関連するメモリ・ユニット102を含む。メモ
リ・ユニット102は、プロセッサ・ユニット100上
で実行されるプログラム・データ及び命令を保持する。
メモリ・ユニット102に記憶される命令は、分岐命令
を含むことができる。
【0022】汎用的であるが、命令ユニット102は、
命令キャッシュ・ユニット104及びデータ・キャッシ
ュ・ユニット106とインタフェースされることによ
り、メモリ・ユニット102内の頻繁に用いられる命令
部分及びデータ部分が、それぞれ命令キャッシュ・ユニ
ット104及びデータ・キャッシュ・ユニット106内
に維持される。別の手段として、命令キャッシュ・ユニ
ット104とデータ・キャッシュ・ユニット106を、
1つに統合したキャッシュへと併合することもできる。
キャッシュ・ユニット104、106に関するアクセス
時間は、通常、メモリ・ユニット102のそれに比べて
はるかに短い。命令キャッシュ104及び/又はデータ
・キャッシュ106は、周知のように、多数のキャッシ
ュ若しくは多階層のキャッシュから構成することもでき
る。
【0023】通常、命令キャッシュ104及びデータ・
キャッシュ106に記憶される命令及びデータは、それ
ぞれライン又はブロックへ分割される。命令フェッチ・
ユニット108は、命令キャッシュ104に記憶された
命令の1又は複数のブロックをデコード・ユニット11
0へとフェッチする。デコード・ユニット110は、分
岐及び条件レジスタ更新命令を実行のために分岐ユニッ
ト112へ送り、そして順次の非分岐命令をディスパッ
チ・ユニット114へ送る。ディスパッチ・ユニット1
14は、ペンディング中の命令同士の間の依存性を解析
し、1又は複数の機能ユニット116上での命令の実行
をスケジューリングする。
【0024】Dフェッチ・ユニット118は、データの
ブロックをデータ・キャッシュ106から必要に応じて
機能ユニット116へフェッチすることを取り扱う。デ
ータ・キャッシュ・ユニット106は、命令によりソー
ス・オペランドとして用いられる所与のデータ及び実行
された命令により発生される所与のデータ値を保持す
る。多数のメモリ常駐データ値が機能ユニット116に
より同時に必要とされたり、多数のメモリ行きの結果が
同時に発生されたりするので、通常、データ・キャッシ
ュ・ユニット106はマルチポートとされている。
【0025】処理ユニット100はさらに、一組のレジ
スタを含むレジスタ・ファイル120を具備する。レジ
スタ・ファイル120は、命令を実行するために機能ユ
ニット116に対してオペランドを提供すると共に、実
行の結果を受信する。このレジスタ・ファイル120
は、アーキテクチャ的に可視のレジスタの組とアーキテ
クチャ的に不可視のレジスタの組へと分割される。アー
キテクチャ的に可視の、すなわち構造化レジスタは、レ
ジスタの固定セットと称され、マシンのアセンブリ・レ
ベルのプログラマ(又はコンパイラ)に対してアクセス
可能である。このようなレジスタ・ファイル120は、
従来の技術として知られている。
【0026】各機能ユニット116は、幾つかの又は全
てのタイプの命令の実行を行うことができる。機能ユニ
ット116は、レジスタ・ファイル120及び/又はデ
ータ・キャッシュ・ユニット106から入力ソース・オ
ペランドを受信し、かつ、これらへ出力結果を書き込
む。実施例においては、全ての機能ユニット116が同
一であるので、任意の命令を実行することができる。別
の方法として機能ユニット116を非対称としてもよ
く、その場合、特定のユニットが、命令の所与のサブセ
ットのみを実行することができる。この場合、ディスパ
ッチ・ユニット114は、この非対称性を認知すると共
に命令を適宜スケジューリングしなければならない。
【0027】プロセッサ・ユニット100はさらに、ア
ーキテクチャにより有効な順序とみなされる順序で命令
実行を完了することを担う完了ユニット122を具備す
る。機能ユニット116が順序に従わずに命令を実行す
る場合であっても、アーキテクチャの制約によってはプ
ロセッサ・ユニット100が、同じ順序で命令を完了で
きる場合とできない場合がある。
【0028】分岐ユニット112は、分岐命令としてデ
コードされた命令を処理すると共に、命令フェッチ・ユ
ニット108による命令のフェッチを制御する。プログ
ラム実行の中で発生可能な3つのタイプの分岐命令があ
る。 タイプ1:決して選択されない分岐命令 タイプ2:常に選択される分岐命令 タイプ3:選択されて、そして引き続き選択されない分
岐命令であって、通常、条件分岐命令と称される。
【0029】タイプ1の分岐命令は、プロセッサ内のプ
リフェッチを実行することに関して分岐ユニット112
により無視される。本発明自体、タイプ2及びタイプ3
の分岐命令に関連する。タイプ3の分岐命令は分岐ユニ
ット112により識別され、そして識別されたならば、
分岐ユニット112は、その条件分岐命令の現在の動的
インスタンスを予測するために機能する。条件分岐命令
の結果を予測した後、命令フェッチ・ユニット108に
より記憶された命令フェッチ・アドレスがその予測に従
って更新される。もしその条件分岐命令が選択されると
予測されたならば、命令フェッチ・ユニット108は、
その分岐命令の非順次目標アドレスにより更新される。
この場合、命令フェッチ・ユニット108は、その条件
分岐命令の目標アドレスにおいて始まる予測されたパス
から推論的に命令をロードすることができる。もし条件
分岐命令が選択されないと予測されたならば、命令フェ
ッチ・ユニット108は、命令シーケンス中の次の順次
アドレスにより更新される。この場合、命令フェッチ・
ユニット108は、次の順次アドレスのアドレスにおい
て始まる予測されたパスから推論的に命令をロードする
ことができる。
【0030】分岐ユニット112が、条件分岐命令が解
明されたと判断したとき、命令フェッチ・ユニット10
8により記憶された命令フェッチ・アドレスが、その解
明された分岐命令に従って更新される。条件分岐命令
は、その命令が依存する条件レジスタ・ビットが更新さ
れた後にのみ解明されたとみなされる。さらに具体的に
云えば、解明された分岐命令が、選択されると予測され
ておりかつ選択されたと解明された場合、コンピュータ
処理システムの通常のオペレーションが続けられる。同
様に、解明された分岐命令が、選択されないと予測され
ておりかつ選択されなかったと解明された場合も、通常
のオペレーションが続けられる。一方、解明された命令
が、選択されると予測されておりかつ選択されなかった
と解明された場合、命令フェッチ・ユニット108が順
次(非選択)パスに従ってフェッチするべく更新される
と共に、目標(選択)パスから推論的に実行された命令
が破棄される。同様に、解明された命令が、選択されな
いと予測されておりかつ選択されたと解明された場合、
命令フェッチ・ユニット108が目標(選択)パスに従
ってフェッチするべく更新されると共に、順次(非選
択)パスから推論的に実行された命令が破棄される。
【0031】本発明は、条件分岐命令の結果予測におけ
る分岐ユニット112の構造及びオペレーションを対象
とする。本発明における分岐ユニット112は、複数の
エントリを記録する分岐ヒストリ・テーブル(BHT)
を含む。幾つかのエントリは、タイプ2の分岐命令に対
応する。他のエントリは、タイプ3の条件分岐命令に対
応する。条件分岐命令に対応する各エントリは、条件分
岐命令の目標アドレスを識別する目標アドレス・フィー
ルドと、条件分岐命令に続く複数のパスに関連する予測
子情報とを含む。予測子情報は、各パスについて、所与
のパスの終わりにおける終端条件分岐命令が、選択され
ると予測されるべきか又は選択されないと予測されるべ
きかを示す。所与の条件分岐命令についての予測子を発
生するプロセスは、その所与の分岐命令に対応する先祖
分岐命令に関連する予測子情報を識別し、その先祖分岐
命令からその所与の分岐命令までを導くパスに対応する
適宜の予測子情報を選択することを含む。このパスは、
その先祖分岐命令からその所与の条件分岐命令の直前の
条件分岐命令までの、各条件分岐命令の解明により決定
される。
【0032】例えば、図3に示すプログラム・セグメン
トを想定する。条件分岐命令は、B0、B1、B
2、...と符号を付され、非条件命令は、S0、S1、
S2、...と符号を付されている。さらに、このような
条件分岐命令に対応するBHTのエントリは、分岐命令
から2個の分岐を経るパス(すなわちn=2)に対応す
る予測子情報を含む。この場合、BHTは、分岐B0に
対応するエントリを記録する。このエントリは、分岐B
0の目標アドレスを識別する目標アドレス・フィールド
と、分岐命令B0に続く4つのパス(選択/選択、選択
/非選択、非選択/選択、非選択/非選択)の各々に関
連する予測子情報とを含む。この予測子情報は、各パス
について、所与のパスの終わりにおける終端条件分岐命
令(B6、B5、B4、B3)が選択されると予測され
るべきか又は選択されないと予測されるべきかを示す。
【0033】さらに、BHTは、B1分岐に対応するエ
ントリを記録する。このエントリは、分岐B1の目標ア
ドレスを識別する目標アドレス・フィールドと、分岐命
令B1に続く4つのパス((選択/選択、選択/非選
択、非選択/選択、非選択/非選択))の各々に関連す
る予測子情報とを含む。この予測子情報は、各パスにつ
いて、所与のパスの終わりにおける終端条件分岐命令が
選択されると予測されるべきか又は選択されないと予測
されるべきかを示す。
【0034】同様に、BHTは、分岐B2、B3、B
4、B5及びB6に対応するエントリを記録する。例え
ば、分岐b6に対応するエントリは、分岐B6の目標ア
ドレスを識別する目標アドレス・フィールドと、分岐命
令B1に続く4つのパス((選択/選択、選択/非選
択、非選択/選択、非選択/非選択))の各々に関連す
る予測子情報とを含む。この予測子情報は、各パスにつ
いて、所与のパスの終わりにおける終端条件分岐命令が
選択されると予測されるべきか又は選択されないと予測
されるべきかを示す。
【0035】所与の条件分岐命令、例えば分岐命令B6
についての予測子を発生するために、その所与の分岐命
令B6に対応する先祖分岐命令B0に関連するエントリ
がBHTから読み取られ、そして先祖分岐命令B0から
所与の分岐命令B6までを導くパスに対応する所与のエ
ントリ内の適宜の予測子情報が選択される。このパス
は、先祖分岐命令B0から所与の分岐命令の直前の条件
分岐命令(B6に対するB2)までの条件分岐の結果の
解明により決定される。仮に条件分岐命令B6について
発生された予測子が、分岐命令B6は選択と予測される
べきであることを示している場合、条件分岐命令B6の
目標アドレスが命令フェッチ・ユニット108へ送られ
る。好適には、条件分岐命令B6の目標アドレスは、条
件分岐命令B6に関連するBHTから読み取られたエン
トリの一部である。
【0036】さらに具体的には図4に示すように、本発
明の分岐ユニット112が、BHT201、分岐解明記
録レジスタ203、分岐アドレス及び予測ベクトルのス
タック(以下、分岐予測スタック205と称する)、及
び予測論理207を含み、これらは、条件分岐命令の結
果を予測するために協同的に動作し、そして選択される
と予測された条件分岐命令については、その予測された
条件分岐の目標アドレスをBHTから命令フェッチ・ユ
ニット108へと送らせる。
【0037】図5乃至図7は、BHT201をより詳細
に示す図である。図5に示すように、BHT201は、
プリフェッチ・アドレスXを記憶する入力ラッチ300
を含む。アドレスXは、2つの部分へ分割することがで
きる。すなわち、そのブロックのブロック・アドレスB
A及びオフセットOFFである。入力ラッチ300に記
憶されたアドレスXは、エントリのアレイ302と比較
される。図6に示すように、アレイ302の各エントリ
は条件ビットB(符号305)を含み、これがセットさ
れるときはそのエントリが条件分岐命令に関連すること
を示す。BRタグ306は、そのブロック中の対応する
分岐命令の場所を示す。ベクトル308は対応する条件
分岐命令に関連し、目標アドレス・フィールド309は
対応する分岐命令の目標アドレスを識別する。図7に示
すように、ベクトル308は、複数のサブフィールドを
含む。例えば、図示のサブフィールド403−0、40
3−1、...403−3である。この場合、各サブフィ
ールドは、関連するBRタグ306により識別された条
件分岐命令に続くパスに対応する。各サブフィールド
は、所与のサブフィールドに関連するパスの終わりにお
ける分岐命令が選択と予測されるべきか又は非選択と予
測されるべきかを示す予測子を含む。予測子サブフィー
ルド403−1、403−2、...403−3内で用い
られるビットの数は、実施態様による決定事項であり、
開示される本発明のオペレーションには影響を及ぼさな
い。最も単純な手法としては、単一ビットの予測子サブ
フィールドを用いる。この場合、「1」は、所与のパス
における分岐命令が選択と予測されるべきであることを
示し、そして「0」は、所与のパスにおける分岐命令が
非選択と予測されるべきであることを示す。通常、所与
のパスの終わりにおける分岐命令の最も新しく発生した
ものが選択と解明されたとき、ビットが「1」にセット
され、そして、所与のパスの終わりにおける分岐命令の
最も新しく発生したものが非選択と解明されたとき、ビ
ットが「0」にクリアされる。予測子サブフィールドと
して、1ビットより多いビットを用いることができる。
例えば、J. Smithによる「A Study of Branch Predicti
on Strategies」(24th InternationalSymposium on Com
puter Architecture, May 1981, pp.135-148)に記載さ
れるように、予測子サブフィールドを2ビット飽和カウ
ンタとしてもよい。さらに、アレイ302は、完全アソ
シアティブ構造、直接マッピング構造、又はセット・ア
ソシアティブ構造として配置してもよい。図示のよう
に、アレイ302は、4ウェイ・セット・アソシアティ
ブ構造として配置されている。
【0038】さらに具体的には、入力ラッチ300に記
憶される完全アドレスXの第1の部分BAは、デコーダ
310へ与えられる。デコーダ310の機能は、アレイ
302の対応する行を活動状態とすることである。活動
状態とされた行の各エントリ(図示ように、4個のエン
トリ)は、アレイ302から記憶素子312へと読み出
される。入力ラッチ300に記憶された完全アドレスX
の第2の部分OFFと共に記憶素子312へロードされ
たエントリは、ヒット認知及び選択論理314へ与えら
れる。ヒット認知及び選択論理314は、記憶素子31
2へロードされたエントリが2つの条件に適合するか否
かを判断する。すなわち、条件ビットBがセットされて
いるか否か、及び、BRタグ306がプリフェッチ・ア
ドレスのオフセットOFFよりも大きいか否かである。
これら2つの条件に適合する場合、ヒット認知及び選択
論理314は、「ヒット」信号、ブロック・アドレスB
A及び分岐アドレスBR(条件に適合する分岐命令の完
全アドレスを識別する)、その分岐命令に関連する予測
ベクトル、並びにその分岐命令に関連する目標アドレス
TAを出力する。もしこれら2つの条件に適合しない場
合は、ヒット認知及び選択論理314は、「ミス」信号
を出力する。
【0039】ここで、1つのブロックについて複数の分
岐命令が2つの条件を満足する場合があることを注記す
る。この場合、ヒット認知及び選択論理314は、それ
らの分岐命令から1つの命令を抽出するために更なる論
理を含む。例えば、BRタグがプリフェッチ・アドレス
のオフセットOFFに最も近くかつそれよりも大きい分
岐命令を抽出する。
【0040】BHT201のヒット認知及び選択論理3
14により発生されたヒット信号/ミス信号、ブロック
・アドレスBA及び分岐アドレスBR(分岐命令の完全
アドレスを識別する)、その分岐命令の予測ベクトル並
びに目標アドレスは、データ・パス211を介して分岐
予測スタック205へ与えられる。分岐予測スタック2
05は、好適には、n個のエントリを保持する先入れ先
出し(FIFO)バッファとして構成される。その各エ
ントリは、分岐命令の完全アドレスと、その分岐命令に
関連する予測ベクトルとを含む。好適には、ヒット信号
が分岐予測スタックへ与えられた場合、ブロックアドレ
スBAと分岐アドレスBRとが連結されて分岐命令の完
全アドレスを形成する。完全アドレスは、関連する予測
ベクトルと共に、分岐予測スタック205内の先頭エン
トリとして追加される。従って、分岐予測スタック20
5内の最も古いエントリは、次に現れる条件分岐命令の
n番目の先祖である条件分岐に対応する。
【0041】加えて、分岐ユニット112は分岐解明論
理209を含む。分岐解明論理209は、条件分岐命令
が選択又は非選択のいずれかであると解明し、そしてそ
の分岐命令が選択又は非選択として解明されたことを示
すためにその条件分岐命令に関連する分岐解明記録レジ
スタ203のビットをデータ・パス213を介してセッ
トする。例えば、バイナリ値「1」をもつ分岐解明記録
レジスタ203のビットは、そのビットに関連する条件
分岐命令が選択されたと解明されたことを示す。そして
バイナリ値「0」をもつ分岐解明記録レジスタ203の
ビットは、そのビットに関連する条件分岐命令が選択さ
れなかったと解明されたことを示す。好適には、分岐解
明記録レジスタ203のビットは、シーケンシャル順序
における最も新しいn個の分岐命令の解明結果を表す。
【0042】分岐解明論理209は、シーケンシャル順
序において条件分岐命令を解明することができる。この
場合、分岐解明記録レジスタ203をnビットのシフト
・レジスタとすることができる。このnビットのシフト
・レジスタは、分岐解明論理209によりロードされる
ことにより、最も新しく解明された分岐命令の選択/非
選択の解明状態を示すビットをシフトさせる。一方、分
岐解明論理209は、シーケンシャル順序に従わずに条
件分岐命令を解明することもできる。この場合も、分岐
解明記録レジスタ203のビットが、プログラム順序で
次に現れる任意の条件分岐に先行するn個の条件分岐の
解明結果を表すとすれば、分岐解明記録レジスタ203
を更新するためにさらに高度な機構が必要となることが
ある。
【0043】本発明は、次の条件分岐を予測するため
に、分岐予測スタック205における最も古いエントリ
と共に分岐解明記録レジスタ203に記憶されたデータ
を利用する。説明のために図8に示したスタックを想定
する。次の条件分岐命令に対応するエントリは、このス
タックの一部ではなく、αとして示される。次の条件分
岐命令αのn番目の先祖条件分岐命令に対応するエント
リは、このスタックの最も古いエントリであり、βとし
て示される。n番目の先祖条件分岐命令βと次に現れる
条件分岐命令αとの間の条件分岐命令に対応するn−1
個のエントリもまた、スタック2054の一部である。
スタック205の最も新しいエントリは、条件分岐命令
δに対応し、これは、次に現れる条件分岐命令αの直前
である。加えて、条件分岐命令βの直前の条件分岐命令
γに対応するエントリは、図示のようにスタックの一部
ではない。
【0044】次に現れる分岐命令αについての予測子を
発生するプロセスは、先祖分岐β(分岐予測スタック2
05内の最も古いエントリに記憶されている)に関連す
る予測ベクトルと、βとαとの間のn−1個の条件分岐
の解明結果(分岐解明記録レジスタ203内に記憶され
ている)とを含む。
【0045】さらに具体的には、分岐解明記録レジスタ
203内のデータが、先祖分岐命令から次に現れる分岐
命令αまでのパスを特定し、そして、そのパスに対応す
る分岐予測スタック205中の最古エントリの予測子ベ
クトル内のサブフィールドを選択するために用いられ
る。次に、選択された予測子サブフィールドは、データ
・パス215を介して予測論理207へ送られる。予測
論理207は、予測子サブフィールドを解析することに
より、その分岐命令が選択されると予測すべきか選択さ
れないと予測すべきかを決定する。上記の通り、予測子
サブフィールドに用いられるビットの数は、実施態様に
よる決定事項である。予測子サブフィールドが、その分
岐命令は選択されないと予測すべきことを示す場合、予
測論理207は、BHTの再検査を起動させることによ
り、プリフェッチ・ブロック内に後に発生する条件分岐
命令に対応する別のエントリをBHTが含むか否かを決
定する。適合するエントリが見出されない(すなわち、
再検査の結果が別の非選択予測となった)場合、予測論
理207は非選択信号を発生し、この信号は命令フェッ
チ・ユニット108へ送られる。一方、予測子サブフィ
ールドが、その分岐命令は選択されると予測すべきこと
を示す場合、予測論理207は、選択信号を発生して命
令フェッチ・ユニット108へと送り、さらにデータ・
パス217を介してBHT201を制御することにより
分岐命令αの目標アドレスを命令フェッチ・ユニット1
08へと送る。分岐命令αの目標アドレスは、BHT2
01内の分岐命令αに関連するエントリから読み出され
る。
【0046】上記の本発明のBHT201は、好適に
は、タイプ2の分岐命令に対応するエントリを含む。こ
のようなエントリは、図5乃至図7に示したタイプ3の
分岐命令に対応するBHTエントリと同様に、条件ビッ
トB(符号305)、BRタグ306、及び目標アドレ
ス・フィールド309を含む。このようなエントリの条
件ビットBは、タイプ2の分岐命令に対応するエントリ
であることを示すためにクリアされる。さらに、タイプ
2の分岐命令は常に選択されるので、そのエントリの予
測子フィールド308は、タイプ2の分岐命令の結果を
予測する際に用いられない。このようなエントリの1つ
がBHT201から読み取られた場合、BHT201
は、ヒット信号を発生し、そのエントリの目標アドレス
を命令フェッチ・ユニット108へと送る。命令フェッ
チ・ユニット108は、そのタイプ2の分岐命令の目標
アドレスにおいて始まる予測されたパスから推論的に命
令をロードする。タイプ2の分岐命令が選択されなかっ
たと解明された場合、BHT更新論理は、BHT内にタ
イプ3の分岐命令に対応する新たなエントリを作成し、
そして後述するようにその新たなエントリを初期化す
る。さらに、命令フェッチ・ユニット108は、そのタ
イプ2の分岐命令のシーケンシャル(非選択)・パスに
従ってフェッチするべく更新されると共に、そのタイプ
2の分岐命令の目標(選択)パスに従って推論的に実行
された命令が破棄される。
【0047】BHT201は、修正を必要とすることが
ある。例えば、分岐命令βに関連するBHTエントリの
予測ベクトルに記憶された分岐命令αの選択/非選択予
測が誤っていることがある。すなわち、分岐命令αに関
連するBHTエントリに記憶された分岐命令αの目標ア
ドレスが誤っている場合である。BHT201の修正を
可能とするために、本発明のシステムは、BHT更新論
理を含む。この論理は、タイプ2の分岐命令についての
動作の誤り、タイプ2及びタイプ3の分岐命令について
の目標の誤り、並びにタイプ3の分岐命令についての予
測の更新を処理する。もし、非選択と解明されたタイプ
2の分岐命令をBHTが有しているならば、BHT更新
論理は、そのエントリがタイプ3の分岐命令に対応する
ことを示すべく条件ビットC(符号305)をセットす
ることによりBHTエントリを更新し、そしてそのエン
トリの予測ベクトルが以下に説明するように初期化され
る。そのエントリの目標アドレス・フィールドは修正さ
れない。タイプ2又はタイプ3の分岐命令のいずれかに
ついて目標の誤りが発生した場合、既存のBHTエント
リを更新するために新たに解明された目標アドレスが用
いられる。ここで、タイプ3の分岐命令についての予測
の更新について説明する。
【0048】前述の条件分岐命令βに続く命令シーケン
スを想定する。条件分岐命令γは、条件分岐命令βの直
前にある。この状況において、スタック205内の最古
のエントリが分岐命令βに対応しかつ分岐命令δ(この
スタック内の最新のエントリに対応する)が選択又は非
選択と解明されたとき、BHT更新論理は、以下の1)
乃至4)を記憶する。 1)条件分岐命令γに対応するBHTエントリの場所を
識別するデータ、例えば、分岐命令γのアドレス。 2)分岐命令γに関連する最も新しい予測ベクトル。 3)分岐命令δの解明状態(選択/非選択)。 4)分岐命令δの結果を予測するために用いられる分岐
解明記録レジスタ203のビット(これらのビットは、
分岐命令γから分岐命令δまでのパスを特定する)。
【0049】分岐命令γのアドレス及び分岐命令γに関
連する最新予測ベクトルが、スタック205からBHT
更新論理へロードされると、分岐命令γに対応するエン
トリがシフトしてスタック205から出される。分岐命
令δの解明状態(選択/非選択)は、分岐解明論理20
9によりBHT更新論理へ与えることができる。
【0050】BHT更新論理は、必要に応じて、先ず分
岐命令γに関連する最新予測ベクトル内の適宜の予測子
サブフィールドを選択することにより、分岐命令γに関
連するBHTエントリの予測ベクトルを更新する。適宜
の予測子サブフィールドは、分岐命令δの結果を予測す
るために用いられる分岐解明記録レジスタ203のビッ
トにより特定される分岐命令γから分岐命令δまでのパ
スに対応する。次に、BHT更新論理は、分岐命令δの
解明状態に従って選択された予測子サブフィールドを更
新する。例えば、「1」ビットの予測子サブフィールド
が実施されかつ選択された予測子サブフィールドが分岐
命令δの解明状態に一致しない場合、予測子サブフィー
ルドは、分岐命令δの解明状態に一致するように更新さ
れる。選択された予測子サブフィールドに変更がない場
合、BHT更新論理のオペレーションは終了する。一
方、選択された予測子サブフィールドが更新される場
合、更新された予測子サブフィールドが、分岐命令γに
関連する予測子ベクトルへ組み込まれ、そして更新され
た予測子ベクトルは、分岐命令γのアドレスにより識別
される場所においてBHTへ書き込まれる。
【0051】BHT201の初期化は、多くの異なる手
法を用いて実行することができる。例えば、先ずBHT
201がクリアされ、そして全ての分岐が存在しないす
なわち選択されないとみなされる。次に、選択された分
岐が解明されると、これらの分岐に関連するエントリが
BHT201内に作成され、これらのエントリは、その
分岐をそれらの適宜の目標に対して非条件的であり選択
されるとして特定する。もしBHT201内のエントリ
が、その後に選択されたかったならば、条件分岐ビット
がセットされ、そしてこの分岐のn個の子孫分岐につい
ての予測子ベクトルが初期値に、例えば、全てが選択に
セットされる。予測子が用いられると、その予測子ベク
トル成分が用いられた子孫分岐の解明に基づいて適宜初
期値が修正されることになる。n番目の条件分岐の検知
の前に、更新手順がバイパスされ、分岐予測スタック2
05内の初期値が、所与のデフォールトの初期値を含む
ことにより所与のエントリが無効であることを示すこと
になる。この場合、条件分岐の予測もまたデフォールト
のオプションを用いることになる。
【0052】上記のように、本発明のBHTは、タイプ
2とタイプ3の双方の分岐命令に対応するエントリと、
最後のタイプ3の分岐命令の解明状態を記録する分岐解
明記録レジスタとを含む。次に現れる分岐命令について
の予測子は、n番目の先祖条件分岐命令に関連する予測
ベクトルと、分岐解明記録レジスタに記憶されたn番目
の先祖条件分岐命令と次に現れる条件分岐命令との間の
n−1個の条件分岐の解明結果とを読み取ることにより
発生される。従って、この手法を利用すると、タイプ2
の分岐命令は先祖となり得ない。しかしながら、本発明
はこの点に関して限定されない。別の手法として、分岐
解明記録レジスタが、最後のタイプ2及び/又はタイプ
3の分岐命令の解明状態を記録してもよい。この場合、
次に現れる分岐命令についての予測子は、n番目の先祖
分岐命令に関連する予測ベクトルと、分岐解明レジスタ
に記憶されたn番目の先祖分岐命令と次に現れる分岐命
令との間のn−1個の分岐の解明結果とを読み取ること
により発生される。従って、この場合の予測方式は、タ
イプ2とタイプ3の分岐命令の間で差異はない。
【0053】別の実施例として、タイプ2とタイプ3の
それぞれの分岐命令に対して2つの別個のテーブルを用
いることもできる。第1のBHTは、好適には上記の本
発明のBHTであるが、タイプ3の分岐命令を予測する
ために用いられる。そして第2のBHTは、汎用的なB
HTであってもよく、タイプ2の分岐命令を予測するた
めに用いられる。タイプ2の分岐命令が選択されると予
測され、そして選択されなかったと解明された(すなわ
ち、タイプ3の分岐命令となる)場合、この分岐命令に
対応するエントリが第2のBHTから取り除かれ、第1
のBHT内に新たなエントリが作成される。
【0054】さらに別の実施例として、本発明をDHT
として実施することができる。前述のように、DHT
は、BHTのように選択される分岐の動作と目標アドレ
スを予測するのではなく、分岐の動作を予測する。DH
Tは、通常、その分岐の動作を予測する予測子のテーブ
ル内へ索引付けするためにその分岐のアドレスと最新の
分岐動作を利用する。本発明によれば、索引付けオペレ
ーションにおいてその分岐のアドレスを置換するものと
して先祖分岐のアドレスを用いることができる。以前に
遭遇した分岐についての情報は保持されないので、予測
子のテーブルを索引付けするために用いられるアドレス
を有する先祖分岐命令と、その予測子を用いようとする
子孫分岐命令との間の隔たりを規定する際に、全ての分
岐(タイプ1、タイプ2及びタイプ3)が考慮されるこ
とが好ましい。好適には、DHTのエントリは、先祖分
岐のアドレスに関連しかつその先祖分岐命令と予測され
ようとする分岐命令との間にある分岐の中間動作ヒスト
リに基づく複数のコンテキスト指向予測子を含む。
【0055】この発明におけるn値は任意であるが、ハ
ードウェア・レジスタの幅を決定する実施態様の範囲内
で固定される。このことは、予測ベクトルの成分として
用いられる予測子のタイプにも同様に当てはめられる。
【0056】本発明のコンテキスト指向予測子は、相関
分岐予測子とは区別される。相関分岐予測子は、分岐の
アドレス及び最後のn個の分岐命令の動作に基づくもの
である。コンテキスト指向予測子は、次の状況下におい
て相関分岐予測子よりも優れている。 1)より早期の予測子が望ましい状況下において優れて
いる。コンテキスト予測子は、予測されようとする分岐
のアドレスではなく先祖分岐のアドレスに基づくからで
ある。 2)予測子の数が制約要因でない状況下において優れて
いる。この場合、動作シーケンスの長さに対して、予測
子の数が、選択可能なパスの数とほぼ同じである。 3)短い動作シーケンスに基づく予測が必要とされる状
況下において優れている。
【0057】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0058】(1)メモリに記憶された命令のシーケン
スが少なくとも1つのプロセッサ・ユニットにより実行
されかつ前記メモリに記憶された命令のシーケンスが1
又は複数の分岐命令を含むデータ処理システムにおいて
分岐命令の結果を予測する装置であって、各エントリが
それぞれ分岐命令に関連しかつその関連する分岐命令か
ら終端の分岐命令までを導く実行パスに対応する予測子
のセットを含み、かつ各予測子が前記対応する実行パス
の終わりにおける前記終端の分岐命令の結果を予測する
ためのデータを記憶している、複数のエントリを記憶す
るテーブルと、前記テーブルへ与えられるアクセス信号
に関連するエントリを前記テーブルから読み出す手段
と、前記テーブルから読み出された前記エントリに関連
する前記分岐命令から次に現れる分岐命令までを導く実
行パスを決定する手段と、前記実行パスに対応するテー
ブルから読み出された前記エントリに含まれる前記予測
子のセットの中から予測子を選択する手段と、前記選択
された予測子に記憶されたデータに従って前記次に現れ
る分岐命令の結果の予測を発生する手段とを有する分岐
命令の結果予測装置。 (2)前記テーブルの特定のエントリの各々が、前記特
定のエントリに関連する分岐命令を識別する分岐識別フ
ィールドを含む上記(1)に記載の装置。 (3)前記データ処理システムが、前記次に現れる分岐
命令の結果の予測に従う前記データ処理システムによる
推論的実行のためにメモリからデータをフェッチするデ
ータ・フェッチ手段を有する上記(1)に記載の装置。 (4)前記アクセス信号が、前記データ処理システムに
よる推論的実行のためにフェッチされるメモリに記憶さ
れた命令のブロックを識別する命令フェッチ・アドレス
の一部である上記(3)に記載の装置。 (5)前記テーブルの特定のエントリの各々が、前記特
定のエントリに関連する分岐命令の目標アドレスの一部
を識別する目標アドレス・フィールドを含み、前記次に
現れる分岐命令の結果の予測がその分岐命令が選択され
るとして示される場合、前記データ・フェッチ手段が、
前記次に現れる分岐命令に関連するエントリの前記目標
アドレス・フィールドにより識別される前記メモリ内の
場所からデータをフェッチする上記(3)に記載の装
置。 (6)各エントリが複数の分岐命令に関連する上記
(1)に記載の装置。 (7)前記アクセス信号が、前記データ処理システムに
より実行される分岐命令を識別する分岐命令アドレスの
一部である上記(6)に記載の装置。 (8)前記テーブルのエントリと前記複数の分岐命令の
特定の分岐命令の各々との間の関係が、前記特定の分岐
命令の前記分岐命令アドレスの一部を変換することによ
り決定される上記(7)に記載の装置。 (9)前記次に現れる分岐命令の解明状態に従って、前
記テーブルから読み出された前記エントリに含まれる前
記予測子のセット内の前記選択された1の予測子を更新
する手段を有する上記(1)に記載の装置。 (10)メモリに記憶された命令のシーケンスが少なく
とも1つのプロセッサ・ユニットにより実行され、前記
メモリに記憶された命令のシーケンスが1又は複数の分
岐命令であるデータ処理システムにおいて分岐命令の結
果を予測する方法であって、各エントリがそれぞれ分岐
命令に関連しかつその関連する分岐命令から終端の分岐
命令までを導く実行パスに対応する予測子のセットを含
み、かつ各予測子が前記対応する実行パスの終わりにお
ける前記終端の分岐命令の結果を予測するためのデータ
を含む複数のエントリをテーブルに記憶するステップ
と、前記テーブルへ与えられるアクセス信号に関連する
エントリを前記テーブルから読み出すステップと、前記
テーブルから読み出された前記エントリに関連する前記
分岐命令から次に現れる分岐命令までを導く実行パスを
決定するステップと、前記実行パスに対応するテーブル
から読み出された前記エントリに含まれる前記予測子の
セットの中から予測子を選択するステップと、前記選択
された予測子に記憶されたデータに従って前記次に現れ
る分岐命令の結果の予測を発生するステップとを有する
分岐命令の結果予測方法。 (11)前記テーブルの特定のエントリの各々が、前記
特定のエントリに関連する分岐命令を識別する分岐識別
フィールドを含む上記(10)に記載の方法。 (12)前記次に現れる分岐命令の結果の予測に従う前
記データ処理システムによる推論的実行のためにメモリ
からデータをフェッチするステップを有する上記(1
0)に記載の方法。 (13)前記アクセス信号が、前記データ処理システム
による実行のためにフェッチされるメモリに記憶された
命令のブロックを識別する命令フェッチ・アドレスの一
部である上記(12)に記載の方法。 (14)前記テーブルの特定のエントリの各々が、前記
特定のエントリに関連する分岐命令の目標アドレスの一
部を識別する目標アドレス・フィールドを含み、前記次
に現れる分岐命令の結果の予測がその分岐命令が選択さ
れるとして示される場合、前記データ・フェッチ手段
が、前記次に現れる分岐命令に関連するエントリの前記
目標アドレス・フィールドにより識別される前記メモリ
内の場所からデータがフェッチされる上記(12)に記
載の方法。 (15)各エントリが複数の分岐命令に関連する上記
(10)に記載の方法。 (16)前記アクセス信号が、前記データ処理システム
により実行される分岐命令を識別する分岐命令アドレス
の一部である上記(15)に記載の方法。 (17)前記テーブルのエントリと前記複数の分岐命令
の特定の分岐命令の各々との間の関係が、前記特定の分
岐命令の前記分岐命令アドレスの一部を変換することに
より決定される上記(16)に記載の方法。 (18)前記次に現れる分岐命令の解明状態に従って、
前記テーブルから読み出された前記エントリに含まれる
前記予測子のセット内の前記選択された1の予測子を更
新するステップを有する上記(10)に記載の方法。 (19)メモリに記憶された命令のシーケンスが少なく
とも1つのプロセッサ・ユニットにより実行されかつ前
記メモリに記憶された命令のシーケンスが1又は複数の
分岐命令を含むデータ処理システムにおいて分岐命令の
結果を予測する装置であって、各エントリがそれぞれ分
岐命令に関連しかつその関連する分岐命令から終端の分
岐命令までを導く実行パスに対応する予測子のセットを
含み、各予測子が前記対応する実行パスの終わりにおけ
る前記終端の分岐命令の結果を予測するためのデータを
記憶している複数のエントリを記憶し、かつ、与えられ
るアクセス信号に関連するエントリを読み出すための論
理を含むテーブルと、前記テーブルから読み出されたエ
ントリに含まれる前記予測子のセットを記憶するスタッ
クと、前記テーブルから読み出された各エントリについ
て、前記各エントリに関連する前記分岐命令から次に現
れる分岐命令までを導く実行パスを識別するデータを記
憶するレジスタと、前記スタック及び前記レジスタに結
合され、前記レジスタに記憶された前記データに従って
先祖分岐命令に対応する前記スタックに記憶された前記
予測子のセットの中から予測子を選択し、前記レジスタ
に記憶された前記データが前記先祖分岐命令から次に現
れる分岐命令までの実行パスを表し、前記選択された予
測子に記憶されたデータに従って前記次に現れる分岐命
令の結果の予測を発生する予測論理とを有する分岐命令
の結果予測装置。 (20)前記テーブルの特定のエントリの各々が、前記
特定のエントリに関連する分岐命令を識別する分岐識別
フィールドを含む上記(19)に記載の装置。 (21)前記データ処理システムが、前記次に現れる分
岐命令の結果の予測に従う前記データ処理システムによ
る推論的実行のためにメモリから命令をフェッチする命
令フェッチ論理を有する上記(19)に記載の装置。 (22)前記アクセス信号が、前記データ処理システム
による推論的実行のためにフェッチされるメモリに記憶
された命令のブロックを識別する命令フェッチ・アドレ
スの一部である上記(21)に記載の装置。 (23)前記テーブルの特定のエントリの各々が、前記
特定のエントリに関連する分岐命令の目標アドレスの一
部を識別する目標アドレス・フィールドを含み、前記次
に現れる分岐命令の結果の予測がその分岐命令が選択さ
れるとして示される場合、前記命令フェッチ論理が、前
記次に現れる分岐命令に関連するエントリの前記目標ア
ドレス・フィールドにより識別される前記メモリ内の場
所から命令のブロックをフェッチする上記(22)に記
載の装置。 (24)各エントリが複数の分岐命令に関連する上記
(19)に記載の装置。 (25)前記アクセス信号が、前記データ処理システム
により実行される分岐命令を識別する分岐命令アドレス
の一部である上記(24)に記載の装置。 (26)前記テーブルのエントリと前記複数の分岐命令
の特定の分岐命令の各々との間の関係が、前記特定の分
岐命令の前記分岐命令アドレスの一部を変換することに
より決定される上記(25)に記載の装置。 (27)前記次に現れる分岐命令の解明状態に従って、
前記テーブルから読み出された前記エントリに含まれる
前記予測子のセット内の前記選択された1の予測子を更
新する更新論理を有する上記(19)に記載の装置。
【図面の簡単な説明】
【図1】パイプライン・プロセッサの各段階を表す図で
ある。
【図2】汎用的プロセッサの機能構成図である
【図3】プロセッサのメモリ・システム102に記憶さ
れる命令シーケンスを表す図である。
【図4】本発明による分岐ヒストリ・テーブル(BH
T)、BHT予測スタック、BHT予測更新論理及び分
岐解明記録レジスタを含む分岐ユニットの機能構成図で
ある。
【図5】本発明による図4のBHTの構造を示す図であ
る。
【図6】本発明による図4のBHTの構造を示す図であ
る。
【図7】本発明による図4のBHTの構造を示す図であ
る。
【図8】図4のBHT予測スタックを表す図である。
【符号の説明】
100 プロセッサ 102 メモリ 104 命令キャッシュ 106 データ・キャッシュ 108 命令フェッチ・ユニット 110 デコード・ユニット 112 分岐ユニット 114 ディスパッチ・ユニット 116 機能ユニット 118 データ・フェッチ・ユニット 120 レジスタ・ファイル 122 完了ユニット 201 BHT 203 分岐解明記録レジスタ 205 分岐予測スタック 207 予測論理 209 分岐解明論理 308 予測子 310 デコーダ 314 ヒット認知及び選択論理
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ルドルフ・エヌ・レクトシャフェン アメリカ合衆国10583、ニューヨーク州、 スケアスデイル、インネス・ロード 24

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】メモリに記憶された命令のシーケンスが少
    なくとも1つのプロセッサ・ユニットにより実行されか
    つ前記メモリに記憶された命令のシーケンスが1又は複
    数の分岐命令を含むデータ処理システムにおいて分岐命
    令の結果を予測する装置であって、 各エントリがそれぞれ分岐命令に関連しかつその関連す
    る分岐命令から終端の分岐命令までを導く実行パスに対
    応する予測子のセットを含み、かつ各予測子が前記対応
    する実行パスの終わりにおける前記終端の分岐命令の結
    果を予測するためのデータを記憶している、複数のエン
    トリを記憶するテーブルと、 前記テーブルへ与えられるアクセス信号に関連するエン
    トリを前記テーブルから読み出す手段と、 前記テーブルから読み出された前記エントリに関連する
    前記分岐命令から次に現れる分岐命令までを導く実行パ
    スを決定する手段と、 前記実行パスに対応するテーブルから読み出された前記
    エントリに含まれる前記予測子のセットの中から予測子
    を選択する手段と、 前記選択された予測子に記憶されたデータに従って前記
    次に現れる分岐命令の結果の予測を発生する手段とを有
    する分岐命令の結果予測装置。
  2. 【請求項2】前記テーブルの特定のエントリの各々が、
    前記特定のエントリに関連する分岐命令を識別する分岐
    識別フィールドを含む請求項1に記載の装置。
  3. 【請求項3】前記データ処理システムが、前記次に現れ
    る分岐命令の結果の予測に従う前記データ処理システム
    による推論的実行のためにメモリからデータをフェッチ
    するデータ・フェッチ手段を有する請求項1に記載の装
    置。
  4. 【請求項4】前記アクセス信号が、前記データ処理シス
    テムによる推論的実行のためにフェッチされるメモリに
    記憶された命令のブロックを識別する命令フェッチ・ア
    ドレスの一部である請求項3に記載の装置。
  5. 【請求項5】前記テーブルの特定のエントリの各々が、
    前記特定のエントリに関連する分岐命令の目標アドレス
    の一部を識別する目標アドレス・フィールドを含み、前
    記次に現れる分岐命令の結果の予測がその分岐命令が選
    択されるとして示される場合、前記データ・フェッチ手
    段が、前記次に現れる分岐命令に関連するエントリの前
    記目標アドレス・フィールドにより識別される前記メモ
    リ内の場所からデータをフェッチする請求項3に記載の
    装置。
  6. 【請求項6】各エントリが複数の分岐命令に関連する請
    求項1に記載の装置。
  7. 【請求項7】前記アクセス信号が、前記データ処理シス
    テムにより実行される分岐命令を識別する分岐命令アド
    レスの一部である請求項6に記載の装置。
  8. 【請求項8】前記テーブルのエントリと前記複数の分岐
    命令の特定の分岐命令の各々との間の関係が、前記特定
    の分岐命令の前記分岐命令アドレスの一部を変換するこ
    とにより決定される請求項7に記載の装置。
  9. 【請求項9】前記次に現れる分岐命令の解明状態に従っ
    て、前記テーブルから読み出された前記エントリに含ま
    れる前記予測子のセット内の前記選択された1の予測子
    を更新する手段を有する請求項1に記載の装置。
  10. 【請求項10】メモリに記憶された命令のシーケンスが
    少なくとも1つのプロセッサ・ユニットにより実行さ
    れ、前記メモリに記憶された命令のシーケンスが1又は
    複数の分岐命令であるデータ処理システムにおいて分岐
    命令の結果を予測する方法であって、 各エントリがそれぞれ分岐命令に関連しかつその関連す
    る分岐命令から終端の分岐命令までを導く実行パスに対
    応する予測子のセットを含み、かつ各予測子が前記対応
    する実行パスの終わりにおける前記終端の分岐命令の結
    果を予測するためのデータを含む複数のエントリをテー
    ブルに記憶するステップと、 前記テーブルへ与えられるアクセス信号に関連するエン
    トリを前記テーブルから読み出すステップと、 前記テーブルから読み出された前記エントリに関連する
    前記分岐命令から次に現れる分岐命令までを導く実行パ
    スを決定するステップと、 前記実行パスに対応するテーブルから読み出された前記
    エントリに含まれる前記予測子のセットの中から予測子
    を選択するステップと、 前記選択された予測子に記憶されたデータに従って前記
    次に現れる分岐命令の結果の予測を発生するステップと
    を有する分岐命令の結果予測方法。
  11. 【請求項11】前記テーブルの特定のエントリの各々
    が、前記特定のエントリに関連する分岐命令を識別する
    分岐識別フィールドを含む請求項10に記載の方法。
  12. 【請求項12】前記次に現れる分岐命令の結果の予測に
    従う前記データ処理システムによる推論的実行のために
    メモリからデータをフェッチするステップを有する請求
    項10に記載の方法。
  13. 【請求項13】前記アクセス信号が、前記データ処理シ
    ステムによる実行のためにフェッチされるメモリに記憶
    された命令のブロックを識別する命令フェッチ・アドレ
    スの一部である請求項12に記載の方法。
  14. 【請求項14】前記テーブルの特定のエントリの各々
    が、前記特定のエントリに関連する分岐命令の目標アド
    レスの一部を識別する目標アドレス・フィールドを含
    み、前記次に現れる分岐命令の結果の予測がその分岐命
    令が選択されるとして示される場合、前記データ・フェ
    ッチ手段が、前記次に現れる分岐命令に関連するエント
    リの前記目標アドレス・フィールドにより識別される前
    記メモリ内の場所からデータがフェッチされる請求項1
    2に記載の方法。
  15. 【請求項15】各エントリが複数の分岐命令に関連する
    請求項10に記載の方法。
  16. 【請求項16】前記アクセス信号が、前記データ処理シ
    ステムにより実行される分岐命令を識別する分岐命令ア
    ドレスの一部である請求項15に記載の方法。
  17. 【請求項17】前記テーブルのエントリと前記複数の分
    岐命令の特定の分岐命令の各々との間の関係が、前記特
    定の分岐命令の前記分岐命令アドレスの一部を変換する
    ことにより決定される請求項16に記載の方法。
  18. 【請求項18】前記次に現れる分岐命令の解明状態に従
    って、前記テーブルから読み出された前記エントリに含
    まれる前記予測子のセット内の前記選択された1の予測
    子を更新するステップを有する請求項10に記載の方
    法。
  19. 【請求項19】メモリに記憶された命令のシーケンスが
    少なくとも1つのプロセッサ・ユニットにより実行され
    かつ前記メモリに記憶された命令のシーケンスが1又は
    複数の分岐命令を含むデータ処理システムにおいて分岐
    命令の結果を予測する装置であって、 各エントリがそれぞれ分岐命令に関連しかつその関連す
    る分岐命令から終端の分岐命令までを導く実行パスに対
    応する予測子のセットを含み、各予測子が前記対応する
    実行パスの終わりにおける前記終端の分岐命令の結果を
    予測するためのデータを記憶している複数のエントリを
    記憶し、かつ、与えられるアクセス信号に関連するエン
    トリを読み出すための論理を含むテーブルと、 前記テーブルから読み出されたエントリに含まれる前記
    予測子のセットを記憶するスタックと、 前記テーブルから読み出された各エントリについて、前
    記各エントリに関連する前記分岐命令から次に現れる分
    岐命令までを導く実行パスを識別するデータを記憶する
    レジスタと、 前記スタック及び前記レジスタに結合され、前記レジス
    タに記憶された前記データに従って先祖分岐命令に対応
    する前記スタックに記憶された前記予測子のセットの中
    から予測子を選択し、前記レジスタに記憶された前記デ
    ータが前記先祖分岐命令から次に現れる分岐命令までの
    実行パスを表し、前記選択された予測子に記憶されたデ
    ータに従って前記次に現れる分岐命令の結果の予測を発
    生する予測論理とを有する分岐命令の結果予測装置。
  20. 【請求項20】前記テーブルの特定のエントリの各々
    が、前記特定のエントリに関連する分岐命令を識別する
    分岐識別フィールドを含む請求項19に記載の装置。
  21. 【請求項21】前記データ処理システムが、前記次に現
    れる分岐命令の結果の予測に従う前記データ処理システ
    ムによる推論的実行のためにメモリから命令をフェッチ
    する命令フェッチ論理を有する請求項19に記載の装
    置。
  22. 【請求項22】前記アクセス信号が、前記データ処理シ
    ステムによる推論的実行のためにフェッチされるメモリ
    に記憶された命令のブロックを識別する命令フェッチ・
    アドレスの一部である請求項21に記載の装置。
  23. 【請求項23】前記テーブルの特定のエントリの各々
    が、前記特定のエントリに関連する分岐命令の目標アド
    レスの一部を識別する目標アドレス・フィールドを含
    み、前記次に現れる分岐命令の結果の予測がその分岐命
    令が選択されるとして示される場合、前記命令フェッチ
    論理が、前記次に現れる分岐命令に関連するエントリの
    前記目標アドレス・フィールドにより識別される前記メ
    モリ内の場所から命令のブロックをフェッチする請求項
    22に記載の装置。
  24. 【請求項24】各エントリが複数の分岐命令に関連する
    請求項19に記載の装置。
  25. 【請求項25】前記アクセス信号が、前記データ処理シ
    ステムにより実行される分岐命令を識別する分岐命令ア
    ドレスの一部である請求項24に記載の装置。
  26. 【請求項26】前記テーブルのエントリと前記複数の分
    岐命令の特定の分岐命令の各々との間の関係が、前記特
    定の分岐命令の前記分岐命令アドレスの一部を変換する
    ことにより決定される請求項25に記載の装置。
  27. 【請求項27】前記次に現れる分岐命令の解明状態に従
    って、前記テーブルから読み出された前記エントリに含
    まれる前記予測子のセット内の前記選択された1の予測
    子を更新する更新論理を有する請求項19に記載の装
    置。
JP9109719A 1996-05-01 1997-04-25 分岐命令の結果予測装置及び方法 Pending JPH1040104A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/641610 1996-05-01
US08/641,610 US5822577A (en) 1996-05-01 1996-05-01 Context oriented branch history table

Publications (1)

Publication Number Publication Date
JPH1040104A true JPH1040104A (ja) 1998-02-13

Family

ID=24573100

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9109719A Pending JPH1040104A (ja) 1996-05-01 1997-04-25 分岐命令の結果予測装置及び方法

Country Status (4)

Country Link
US (1) US5822577A (ja)
JP (1) JPH1040104A (ja)
KR (1) KR970076253A (ja)
TW (1) TW312775B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009037302A (ja) * 2007-07-31 2009-02-19 Nec Corp 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
JP2009140502A (ja) * 2007-12-05 2009-06-25 Internatl Business Mach Corp <Ibm> プロセッサ、プロセッサを動作させる方法、および情報処理システム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1063685A (ja) * 1996-08-19 1998-03-06 Nec Corp 情報検索システム
US6347377B2 (en) * 1998-11-04 2002-02-12 Phoenix Technologies Ltd. Method and apparatus for providing intelligent power management
US6272624B1 (en) * 1999-04-02 2001-08-07 Compaq Computer Corporation Method and apparatus for predicting multiple conditional branches
US6715064B1 (en) * 2000-01-21 2004-03-30 Intel Corporation Method and apparatus for performing sequential executions of elements in cooperation with a transform
KR100578233B1 (ko) * 2000-12-30 2006-05-12 주식회사 하이닉스반도체 동기식메모리장치의 데이터 입출력 가변제어장치
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US6978361B2 (en) * 2002-09-20 2005-12-20 International Business Machines Corporation Effectively infinite branch prediction table mechanism
US7426631B2 (en) * 2005-02-02 2008-09-16 International Business Machines Corporation Methods and systems for storing branch information in an address table of a processor
US7673122B1 (en) * 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
US8578347B1 (en) * 2006-12-28 2013-11-05 The Mathworks, Inc. Determining stack usage of generated code from a model
US8527969B2 (en) * 2009-07-14 2013-09-03 Unisys Corporation Systems, methods, and computer programs for dynamic binary translation in an interpreter
US11113066B2 (en) 2018-01-09 2021-09-07 International Business Machines Corporation Predicting a branch instruction classified as simple or hard to predict based on a confidence counter in a branch type table
US11579886B2 (en) * 2018-01-09 2023-02-14 International Business Machines Corporation System and method for multi-level classification of branches

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3559183A (en) * 1968-02-29 1971-01-26 Ibm Instruction sequence control
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
JP2508280B2 (ja) * 1989-07-28 1996-06-19 日本電気株式会社 分岐ヒストリテ―ブル制御方式
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
US5394530A (en) * 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
WO1993017384A1 (en) * 1992-02-27 1993-09-02 Wang Laboratories, Inc. Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009037302A (ja) * 2007-07-31 2009-02-19 Nec Corp 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US8892852B2 (en) 2007-07-31 2014-11-18 Nec Corporation Branch prediction device and method that breaks accessing a pattern history table into multiple pipeline stages
JP2009140502A (ja) * 2007-12-05 2009-06-25 Internatl Business Mach Corp <Ibm> プロセッサ、プロセッサを動作させる方法、および情報処理システム

Also Published As

Publication number Publication date
TW312775B (en) 1997-08-11
KR970076253A (ko) 1997-12-12
US5822577A (en) 1998-10-13

Similar Documents

Publication Publication Date Title
US6263427B1 (en) Branch prediction mechanism
US6081887A (en) System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US5136697A (en) System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
US5758142A (en) Trainable apparatus for predicting instruction outcomes in pipelined processors
US6427206B1 (en) Optimized branch predictions for strongly predicted compiler branches
US5805877A (en) Data processor with branch target address cache and method of operation
US4860197A (en) Branch cache system with instruction boundary determination independent of parcel boundary
US5530825A (en) Data processor with branch target address cache and method of operation
US6898699B2 (en) Return address stack including speculative return address buffer with back pointers
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
EP1851620B1 (en) Suppressing update of a branch history register by loop-ending branches
US6178498B1 (en) Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
EP0738962A2 (en) Computer processing unit employing aggressive speculative prefetching of instruction and data
US20080189535A1 (en) Method and System for Dependency Tracking and Flush Recovery for an Out-Of-Order Microprocessor
JP2000029701A (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
US11301253B2 (en) Branch prediction structure indexed based on return address popped from a call-return stack
US20210382718A1 (en) Controlling Prediction Functional Blocks Used by a Branch Predictor in a Processor
JPH1040104A (ja) 分岐命令の結果予測装置及び方法
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
CN101176060A (zh) 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器
US5761490A (en) Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US7454602B2 (en) Pipeline having bifurcated global branch history buffer for indexing branch history table per instruction fetch group