JPH0820950B2 - マルチ予測型分岐予測機構 - Google Patents

マルチ予測型分岐予測機構

Info

Publication number
JPH0820950B2
JPH0820950B2 JP3252872A JP25287291A JPH0820950B2 JP H0820950 B2 JPH0820950 B2 JP H0820950B2 JP 3252872 A JP3252872 A JP 3252872A JP 25287291 A JP25287291 A JP 25287291A JP H0820950 B2 JPH0820950 B2 JP H0820950B2
Authority
JP
Japan
Prior art keywords
branch
instruction
address
prediction
bht
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.)
Expired - Lifetime
Application number
JP3252872A
Other languages
English (en)
Other versions
JPH06324865A (ja
Inventor
フィリップ・ジョージ・エマ
ジョシュア・ウィルソン・ナイト
ジェームス・ハーバート・ポメレーヌ
トーマス・ロバーツ・プザック
ルドルフ・ネイサン・リヒトシャーフェン
ジェームス・ロバート・ロビンソン
アルバート・ジェームス・バン・ノーストランド,ジュニア
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 JPH06324865A publication Critical patent/JPH06324865A/ja
Publication of JPH0820950B2 publication Critical patent/JPH0820950B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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 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; 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

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)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ処理の分野に関
するもので、特に、コンピュータのプロセッサで成立し
または成立しない条件付き分岐の結果を予測する機構に
関するものである。
【0002】
【従来の技術】高性能なプロセッサの大部分は、パイプ
ラインを、性能の向上のための手段として利用してい
る。このようなパイプラインによってプロセッサを別個
の構成要素に分割することができ、この各構成要素は、
命令実行の異なった段階の遂行を引き受けている。例え
ば、図1は、プロセッサのパイプラインを構成する主要
構成要素を示すものである。これら構成要素は、命令フ
ェッチ(ステージI)、命令デコードおよびアドレス生
成(ステージII)、オペランド・フェッチ(ステージII
I )、命令実行(ステージIV)および結果の格納(ステ
ージV)である。各命令はこのパイプラインに入り、理
想的には、パイプラインの各ステージにおいて、1サイ
クルをついやす。各命令はパイプラインを通るのに5サ
イクルを必要とする。しかしながら、パイプラインを満
杯な状態で維持できるならば、プロセッサの各構成要素
(パイプライン・ステージ)を異なった命令に関してそ
れぞれ異なったパイプライン・ステージにおいて能動的
に作動させることができ、更に、1つの命令をサイクル
毎に完了させることができる。しかし、パイプラインを
満杯な状態で維持することは困難な作業である。パイプ
ラインではブレーク、即ち破壊が頻繁に起こってしま
い、この結果としてアイドル・サイクルが生じ、これに
よって、命令の実行が遅延してしまう。
【0003】分岐命令は、パイプラインの破壊の主要原
因の1つである。この分岐命令によって、一時的な不確
実性がパイプライン中にもたらされる。その理由は、こ
のパイプラインを満杯の状態で維持するために、プロセ
ッサは、2つの可能な命令の内どちらが次のパイプライ
ンに導入されるかを推測する必要がある。即ち、フォー
ルスルー命令または分岐の目標のどちらかである。高性
能プロセッサの大部分によれば、実行する前に分岐の結
果を推定し、次に、推定されたパスへの命令をフェッチ
しデコードする(分岐命令は成立するかまたは成立しな
い)。
【0004】分岐の結果を予測することによって、プロ
セッサは、このパイプラインを命令で満杯に維持するこ
とができると共に、この分岐の結果を正しく推測する場
合には、パイプラインの破壊を回避できる。しかし、こ
の分岐を誤って推測した場合に、例えば、実際には分岐
が成立するのに不成立であると推測すると、この分岐に
続くパイプラインに導入されるあらゆる命令はキャンセ
ルされ、パイプラインが正しい命令で再び開始される。
【0005】いくつかの特許は分岐の予測機構に関する
もので、それらには、それぞれ或る利点と欠点とが存在
する。これら特許の多くは、大部分の分岐が確実に成立
または不成立であり、個々に取扱われた場合に、確実
に、同一目標アドレスへ分岐するという観測に基いたも
のである。例えば、米国特許第4,477,872号明
細書によれば、各条件付き分岐を動作の以前の性能に基
いて予測する機構が記載されている。成立または不成立
の条件付き分岐の各々の動作を記録するテーブルが設け
られている。このテーブルの各エントリは、1または0
の1ビット値から構成され、この分岐が成立または不成
立であるかを表している。分岐を構成するアドレスビッ
トの一部を利用して、このテーブルを、条件付き分岐を
デコードする毎に調べる。このテーブルは“デコード履
歴テーブル(DHT)”と呼ばれており、組合せロジッ
クによってこのテーブルで見つけた値から推測を決定す
る。分岐目標を予測することはしない。その理由として
は、これはデコード時に既知なものであるから、分岐の
結果が丁度、予測されるからである。このDHTを用い
ることによって、条件付き分岐のみの結果が予測され
る。その理由は、無条件分岐が一旦デコードされると、
その結果は明らかになるからである。
【0006】米国特許第3,325,785号明細書に
よれば、分岐の種類と、分岐を成立するかどうかの統計
学的経験とに基いて、分岐の結果を予測する機構が記載
されている。他の分岐ストラテジによれば、分岐が完全
に実行されるまでパイプラインを保持することが記載さ
れている。したがって、成立または不成立の分岐の結果
が既知となり、更に、正しい命令をパイプラインを介し
てフェッチし処理できる。しかしながら、このようなス
トラテジでは、分岐当り数サイクルのパイプライン遅延
(アイドル・サイクル)が生じてしまう。
【0007】また、米国特許第4,181,942号明
細書によれば、特別な分岐命令をプロセッサで利用し
て、分岐の種類、即ち、内部レジスタの状態によって決
定される条件付きまたは無条件分岐を指示する機構が開
示されている。この特殊な分岐命令は、プログラム・ル
ープの最後におけるプログラム制御に、およびループ外
への無条件分岐に利用される。
【0008】更に、米国特許第4,200,927号明
細書によれば、命令ストリーム中に存在する各分岐の予
測に基いて、複数命令バッファをアドレスし、充満させ
る機構が記載されている。各命令バッファへの命令のプ
リフェッチ、および命令をデコーダにゲートするための
命令バッファの1つの選択は、ロジックによって制御す
る。このロジックは、各命令バッファに格納されている
命令ストリームおよび分岐の状態を追跡する。分岐を、
これらの種類に基いて推測し、条件付き分岐命令の実行
に応答して、命令実行ユニットからの結果信号によって
種々のポインタの設定を制御して、新しい命令ストリー
ムを命令バッファに割り当て、分岐実行の結果に基いて
命令ストリームを割り当て解除しまたはリセットする。
【0009】更に、有効なストラテジが米国特許第3,
559,183号明細書に記載されている。この特許に
よれば、テーブルに、最近実行した一組の分岐のアドレ
ス(分岐の目標アドレスが続く)を記録する機構が開示
されている。このテーブルを分岐履歴テーブル(BH
T)と称している。エントリは、成立した各分岐に対し
て形成されており、この分岐は、プロセッサが出会う条
件付きおよび無条件分岐である。このテーブル(BH
T)は、パイプラインの命令フェッチ(I−フェッチ)
段階中にアクセスされる(図1のステージI)。このこ
とによって、BHTは、分岐命令がデコードされてしま
う前にも、分岐の結果を予測できるようになる。プロセ
ッサによって実行された各命令フェッチをBHTに保管
された各分岐アドレスに対して比較し、一致した場合に
分岐は成立したものと仮定し、またテーブル中の目標ア
ドレスは次の命令フェッチ・アドレスとなる。原則的
に、このテーブルで見つけられた命令フェッチ・アドレ
スは、分岐命令がそのアドレスで見つけられ、この分岐
がBHTに保管された目標アドレスによって指定された
同一のアドレスに成立することを予測する。このBHT
内でエントリが見つからない場合には、命令フェッチ・
アドレス(フェッチされる命令ダブルワードのアドレ
ス)内に分岐が存在しないものと仮定されるか、また
は、分岐が存在すれば、成立しないものと仮定される。
パイプラインの命令フェッチ段階中に、このBHTをア
クセスすることによって、できるだけ早期に、成立した
分岐を見つけるようにすると共に、分岐命令アドレスを
デコードする前にもこの目標アドレスをフェッチするよ
うにする。理想的には、このことによって、パイプライ
ン化プロセッサで成立した分岐によって発生するあらゆ
るパイプライン遅延を回避するようになる。代表的に
は、プロセッサは、その目標をフェッチする前に分岐が
デコードされるまで待機する場合に、パイプラインの破
壊が起こるようになる(成立した各分岐に対して)。そ
の理由は、キャッシュまたはメモリから分岐の目標をフ
ェッチするには、数サイクル必要とするからである。分
岐をデコードする以前にも、この分岐の目標をフェッチ
することによって、BHTにより、前述した分岐予測機
構に対して極めて大きな性能の改善が達成されるように
なる。
【0010】米国特許第4,679,141号明細書に
よれば、米国特許第3,559,183号明細書に記載
のように、BHTを改善する分岐予測機構が記載されて
いる。このBHTを2つの部分、即ち、アクティブ領域
およびバックアップ領域に分割することによって改良し
ている。このアクティブ領域には、プロセッサが出会っ
た小さな一部の分岐に対するエントリが含まれており、
更に、バックアップ領域には、他の分岐エントリのすべ
てが含まれている。このバックアップ領域からエントリ
をアクティブ領域へ、プロセッサがこれらエントリを使
用するに先立って移動させる機構が記載されている。こ
のアクティブ領域の小さなサイズによって、これをプロ
セッサの物理的なレイアウト中に、迅速に、且つ、最適
に配置することができる。
【0011】前述した従来の特許を2つのカテゴリに分
割することが可能である。即ち、一方のカテゴリは、命
令フェッチ時に、分岐に対する予測を行う。他方のカテ
ゴリは、デコード時に、この予測を行うものである。前
述の米国特許第4,200,927号明細書、第4,1
81,942号明細書、第3,325,785号明細書
および第4,477,872号明細書においては、各分
岐をパイプラインのデコード段階(図1のステージI
I)中に発見し、推測している。このような理由のため
に、条件付き分岐のみがDHTによって推測即ち予測さ
れる必要がある。その理由は、デコード時の後に、無条
件分岐のすべての分岐確実性が既知となるからである。
これら特許を、“デコード時分岐予測機構”と称するも
のとする。これら予測機構のいずれにおいても、分岐の
目標を予測するものではない。即ち、分岐がデコードさ
れた時に、この目標が正確にわかるからである。これに
対して、残りの特許においては、パイプラインの命令フ
ェッチ段階(図1のステージI)中に、分岐予測が行わ
れ、この予測中に、条件付きおよび無条件の成立分岐の
すべてに対する結果を予測する必要があり、成立した分
岐の目標を予測する必要がある。これら残余の特許を、
“命令フェッチ時分岐予測機構”と称する。これら命令
フェッチ時分岐予測機構の各々は、デコード時分岐予測
機構のものに比べて極めて大きなハードウェアを与える
が、性能が改善されて、それらの実行を保証するように
なる。
【0012】説明のために、BHTとDHTを実行する
のに必要なハードウェアの量の簡単な比較を行う。先ず
初めに、BHTとDHTとによって使用される各テーブ
ルのハードウェアの量について比較する。BHTの各エ
ントリは2つのアドレス、即ち、分岐アドレスおよびこ
れに続く予測した目標アドレスから構成されるのに対し
て、DHTの各エントリは単一ビットにより表され、こ
れによって、分岐が成立えあるかまたは不成立であるか
を表している。従って、BHT中の各アドレスが32ビ
ットとして表現されるならば、1kエントリを有するB
HTは1024個の2つのアドレス対(即ち、1024
×64ビット)より構成され、ここでは各エントリが6
4ビットで表される。次に、各機構の相対サイズについ
て比較すると、1kエントリで構成されるBHTは、1
kエントリで構成されるDHTに比べて実際に、64倍
も大きくなる。
【0013】
【発明が解決しようとする課題】従って、本発明の目的
は、各分岐の結果を複数回にわたって予測し、結果が一
致しない場合に、予測の不一致を解決する機構を提供す
ることにある。
【0014】また、本発明の他の目的は、コンピュータ
における条件付き分岐の結果を予測するマルチ予測型分
岐予測機構であって、分岐履歴テーブルの利点と、デコ
ード履歴テーブルの利点とを組合せてコンピュータの性
能を向上させる一方、同時に、向上した性能に通常は関
連するハードウェア・オーバーヘッドを最小化する機構
を提供することにある。
【0015】
【課題を解決するための手段】本発明のマルチ予測型分
岐予測と称する分岐予測機構によって、各分岐を少なく
とも2回だけ予測し、最初の予測は、パイプラインの命
令フェッチ段階中であり、次の予測は、パイプラインの
デコード段階中である。この機構は、2つの異なった分
岐予測機構を利用し、各々は、互いに独立した機構であ
る。この機構は、これら2つの独立の分岐予測機構が不
一致である時にこの分岐を予測する一組のルールを有す
る。この命令フェッチタイム予測機構に対してBHTが
好適に選択され、デコードタイム予測機構に対してはD
HTが好適に選択される。各機構は、好適なものであ
る。その理由は、各機構の予測精度はそれぞれ極めて高
いものであると共に、組合せた場合に、更に、高い推測
精度比率が得られるからである。例えば、4kエントリ
から成るBHTまたはDHTに対して、プロセッサが遭
遇する分岐の80%以上の結果を首尾良く予測すること
はまれなことではない。しかし、他のデコードタイムま
たは命令フェッチ機構を所望に応じて置換することがで
きる。
【0016】2個またはそれ以上の分岐予測機構がパイ
プライン化したプロセッサ中に共存できるかどうかは直
ちにいえることではない。概念を実行可能にするもの
は、予測が互いに相異した場合に、これを解決するため
の一組のルールを利用することである。本発明の利点
は、単一の予測機構だけを利用した時に比べて、高度な
正しい予測率が達成されると共に、これが比較的少ない
ハードウェア・オーバーヘッドによって実現できること
である。
【0017】
【実施例】標準のBHTまたはDHTを有するプロセッ
サの動作を、マルチ予測型分岐予測による本発明の動作
に対する前置きとして以下に説明する。
【0018】前述したように、このBHTは、その分岐
を高いパーセンテージで正しく予測する必要があり、そ
の理由は、予測が誤った時に、厳しいペナルティが課せ
られているからである。通常、このBHTによって生じ
た予測誤りの多くは、分岐の実行後に発見される。も
し、各誤りがもっと初期の段階で予測できたならば、数
サイクル分の遅延を回避できる。BHTはパイプライン
の命令フェッチ段階中に、その予測を行い、分岐が最終
的に実行されるまで数サイクル必要となることを想起さ
れたい。DHTを利用してプロセッサが遭遇する各条件
付き分岐の結果を、再予測することにより、BHTによ
って生じる潜在予測誤りを、パイプラインのデコード段
階中に検出することができる。そして、このプロセッサ
を正しい命令ストリームに再度、向かわせることによっ
て、数サイクルの遅延が回避できる。
【0019】この予測プロセスについて以下説明する。
BHTは上述したのと同じように使用され、一方、DH
TはBHTによって行われた分岐予測を確認し、これら
予測が異なるような或る場合において、BHTによって
行われた予測を無効にするのに用いられる。両方の予測
が一致した場合においては、例えば、両方が成立または
不成立であっても、いずれの分岐予測も無効にする必要
がないことは明らかである。しかしながら、分岐に対す
る予測が異なった場合に、成立または不成立と云う分岐
の結果に関する決定を行う必要がある。例えば、BHT
による初期の予測が、分岐を不成立と予測し、DHTが
分岐を成立すると予測する場合のケースについて考え
る。
【0020】即ち、プロセッサによる命令フェッチが、
BHTに含まれているすべての“分岐アドレス”エント
リをミスしたものと考える。このことは、命令に関しア
クセスしたデータ中に成立分岐が存在しないことを示し
ている。このことは、すべての将来の命令フェッチを
“フォールスルー”パスに向かわせる。しかしながら命
令デコーダによってこのデータ内で条件付き分岐を発見
させ、DHTのエントリによって分岐が成立したことを
示すようにさせる。この事象は、DHTによって予測さ
れたように“分岐成立パス”をフェッチする必要がある
ことを表す。このような事象のシーケンスに対して、B
HTが分岐の結果を誤って予測したものと仮定し、更
に、DHTによって行われた予測は正しいものであるも
のと仮定する。従って、このことによって命令デコーダ
は、“予測された目標アドレス”パスから命令をデコー
ドするように指示される。
【0021】上述した例において、DHTによって行わ
れた予測が、BHTによって行われた予測を無効にでき
る以下のいくつかの理由が存在する。
【0022】(a)エントリの数量において、より大き
なDHTを小さいBHTと一緒に利用でき、しかもこの
DHTのサイズは、BHTの全体のサイズよりかなり小
さいままとすることができる。このことによって、DH
Tが、BHTの分岐結果より相当多くの分岐からの分岐
結果を覚えることができ、しかもDHTをBHTに比べ
て大幅に小さなままとすることができる。例えば、4k
エントリを有するDHTは、1kエントリのBHTのサ
イズの僅か1/16のままである(4096ビット/
(1024×64)ビット)。
【0023】(b)BHTは、すべての“成立分岐”情
報の保管場所として機能し、その一定サイズ制限のため
に、キャッシュの場合と同じヒットおよびミス統計に悩
まされる。命令フェッチ・アドレスは、ヒットとなるべ
きBHTに含まれる分岐アドレスの1つに一致しなけれ
ばならず、一方、DHTは、分岐のアドレスビットの一
部を用いてアクセスされ、常時、予測を行うことを想起
されたい。
【0024】(c)BHTは、条件付きおよび無条件の
すべての成立分岐を記録する必要があるのに対して、D
HTは、条件付き分岐の結果のみを記録する。すべての
無条件分岐は命令デコーダによって正確に予測でき、こ
れら分岐はこれら分岐の結果をDHT情報の一部分とし
て記憶しておく必要がないことを想起されたい。従っ
て、BHTは、予測するための別個の分岐を、DHTに
比べて更に多く有するようになる。このことによって、
有限のBHTディレクトリに関連したキャッシュ型のミ
ス現象を更に悪化させる。
【0025】(d)すべての“新しい”(最初の)成立
分岐は、BHTに対してミスするものとなるが、その大
きいサイズのために、DHT中に、依然含まれるように
なる。これら“新しい”分岐は分岐の初期実行を表すこ
ともあり、またはその有限のサイズのために古くなって
BHTから追い出された分岐の再実行を表すこともあ
る。これら条件によって、実際には成立するが、BHT
によって“不成立”と予測されている条件付き分岐が生
じたときにDHTが、命令デコーダを正確に再指向でき
るようになる。
【0026】命令フェッチ時にBHTを用い、更にデコ
ード時にDHTを用いることによって、各分岐を2回予
測することにより、プロセッサの性能を実際に増大する
ことができ、マシーンのハードウェア全体を減少させら
れる。例えば、1kエントリを有するBHTと協動して
作動する16kエントリを有するDHTは、2kエント
リを有するBHTよりかなり少ないハードウェアを与え
る。また、1kBHTと16kDHTとによって分岐の
大部分のパーセンテージを正確に予測でき、この結果、
これより大きなBHT以上に性能を増大できる。
【0027】図面を参照しながら説明した上述の説明は
基本的なものであり、従って、当業者であれば、このプ
ロセッサの設計を確立する実際の特徴の大部分を簡略化
または省略できることは容易に理解できるであろう。例
えば、BHTとしては、実際の実施において必要とされ
ることのある従来型のセット・アソシエイティブ・ルッ
クアップよりも、完全に連想型のディレクトリが、選択
される。BHTに関する更に詳細な説明は、米国特許第
3,559,183号明細書および第4,679,14
1号明細書に開示されており、DHTに関するものは、
米国特許第4,477,872号明細書に開示されてい
る。
【0028】また、図面において、類似の参照番号は、
同一または類似の部分を表すものとする。図2は、BH
Tを有するプロセッサの主要構成を示す。各構成要素の
動作は、図1に示した各パイプライン段階に従って詳述
されている。各段階は別個に記載されているが、いかな
るパイプライン・プロセッサの場合とも同様に、パイプ
ラインのすべての段階は並列に起こるものである。
【0029】命令はメモリ10に記憶されており、この
メモリ10からフェッチされ、キャッシュ13に記憶さ
れる。これらは、周知の機構に従って行われる。パイプ
ラインの命令フェッチ段階中に、命令バッファ11はB
HT12に対して、“命令バッファは満杯でない”信号
を介して他の命令フェッチに対してスペースが利用でき
ることを知らせる。BHT12は次の命令フェッチを発
生し、アドレスをキャッシュ13に送る。I−フェッチ
・セグメントはそのときキャッシュからパス14を介し
て戻される。
【0030】デコード段階中に、BHT12によって、
命令バッファ11へパス15を介して、信号が与えら
れ、これにより“次命令レジスタ”16に適当な次の命
令がロードされる。このロードされた命令は、前にロー
ドされた命令の直後の命令、即ち、“次の順序命令”、
または、“分岐目標命令”とすることができ、これは、
BHTから送られた情報の内容に応じて決定される。
【0031】命令デコーダ17は次命令レジスタ16か
らロードされる。この命令がデコードされ、オペレーシ
ョン・コード(OPコード)および実行情報が組立てら
れる。命令をデコードした後に、実行情報は実行ユニッ
ト18に送られ、ここで実行されるまで保持される。オ
ペランドが命令によって要求されると、必要情報(ベー
ス・レジスタ値、インデックス・レジスタおよび変位)
がアドレス生成部19へ送られる。アドレス生成部19
の出力はオペランドのアドレスである。次に、このアド
レスがキャッシュ13へ送られる。続いて、このキャッ
シュ13によってオペランド情報がパス21を介して実
行ユニット18へ戻される。
【0032】命令は、必要なデータがキャッシュから得
られるまで、実行ユニット18で待機する。ここで、命
令は実行され、その実行結果が要求通りに保管される。
分岐が実行された場合に、BHT更新情報が実行ユニッ
ト18からパス22を介してBHT12に戻される。B
HT更新情報は、BHTが各分岐の結果を正確に予測す
ることを確実ならしめるために送られる。最後に、エン
ドオペ(終了オペレーション)23を発行して、命令が
首尾良く完了した時点をマークする。
【0033】この動作と並行して、デコード・レジスタ
17によって生成された命令長情報がアドレス加算器2
5に送られる。ここで、この情報と、命令カウンタ(I
C)レジスタ26からの値と組合せることにより、次命
令アドレスが形成される。アドレス加算器25からの出
力は、更新命令カウンタ・レジスタ27に送られると共
に、ライン28を介してBHT12に送られる。これに
より更新命令カウンタ・レジスタ27は、次のサイクル
でデコードされる命令の値を保持することになる。次
に、この事象シーケンスは次のサイクルについてプロセ
ッサによって繰返される。
【0034】BHTについて更に詳しい説明が図3に開
示されている。基本的には、このBHTを利用して、プ
ロセッサの命令フェッチ方針を効果的に指示し、次の順
序または分岐目標である正しい命令を命令デコーダに指
示することによって分岐予測の精度を改善することを行
っている。これを実行するために、BHTはプロセッサ
によって行われた各命令フェッチのアドレスを検査し、
命令フェッチ・セグメント内に成立分岐が含まれている
ことを検出する必要がある。各命令フェッチは、命令フ
ェッチ・アドレス・レジスタ31に保持される。このア
ドレスは比較部33によってBHTディレクトリ32で
保持した各分岐アドレスに対して比較される。通常、命
令フェッチ・セグメントの各々は、1個以上の命令を含
んでいる。現状のマシーンでは、命令フェッチ・セグメ
ントは数ワード長(即ち、8バイトのダブル(2倍)ワ
ードまたは16バイトのクワド(4倍)ワード)であ
る。従って、数個の命令が各命令フェッチ・セグメント
内に存在する可能性がある。BHTに含まれている分岐
アドレスに一致する命令フェッチ・アドレスを、以下
“BHTヒット”と称する。同様に、“BHTミス”と
称する用語を以下のように用いる。即ち、BHT内に含
まれたすべての分岐アドレスと一致しない命令フェッチ
・セグメントを意味する。即ち、命令フェッチのアドレ
スが、BHTディレクトリ中に保持された命令セグメン
トのいずれとも比較に失敗することである。
【0035】命令フェッチがすべてのBHTエントリを
ミスした場合に、プロセッサによって形成された次命令
フェッチアドレスは、次順序ロジック34によって決定
される通りに、“次順序”命令フェッチ・セグメントと
なる。命令フェッチ・アドレスが“BHT中でヒット”
した場合に、プロセッサは命令ストリームを切換え、プ
ロセッサによって生成させた次命令アドレス・セグメン
トは、“ヒット”の原因となったBHTエントリの目標
アドレスとなる。この新しい目標アドレスがゲート35
に移り、BHTヒットが検出された場合に、新しい命令
フェッチ・アドレスとなる。次順序命令フェッチは、B
HTミスがゲート36を介して検出された時に、呼び出
される。
【0036】アドレス一致、即ち、ヒットが起こると、
分岐アドレス(BA)および目標アドレス(TA)が分
岐アドレス,目標アドレス(BA/TA)スタック37
に保管され、この目標アドレスは、後続のサイクルにお
ける次の命令フェッチ・アドレスとなる。このBA/T
Aスタックは、命令バッファから、次命令レジスタへの
命令の事前ロードを案内するのに用いられる。この命令
バッファをロードするための情報はパス15を介して送
られる。命令バッファをロードするために用いた情報、
即ち、アドレスは、BA/TAスタック37中の最も古
いエントリの分岐アドレスと、パス28を介して送った
次命令アドレスとを比較することによって得られる。こ
れら比較対象のアドレスが機能ブロック41により等し
いものと判定されれば、この次命令アドレスは、スタッ
ク37中のBA/TA対に対する目標アドレスとなる。
ここで、BHTが分岐の動作の予測において正しい場合
に、このことが起こるものである。このように一致した
BA/TA対に対する目標アドレスはパス15上の次命
令アドレスにこのアドレスを選択するために機能ブロッ
ク42および信号ユニット43で保持される。機能ブロ
ック41における比較結果が等しくない場合には選択が
行われず、パス28からの次命令アドレスは、パス15
から送られる次命令アドレスとなる。この場合、このB
A/TA対はスタック37から除去され、スタックで見
出した次の最も古いBA/TA対によって処理が継続す
る。
【0037】次順序論理回路34の内部の最終セグメン
トフェッチレジスタは、目標アドレス値でロードされ
る。“次順序”命令フェッチが呼び出される時は何時で
も、この最終命令フェッチ・レジスタに保管された値が
1ユニット分だけ増分されて次命令フェッチ・セグメン
トのアドレスとなり、これは、新たな命令フェッチ・ア
ドレスとなる。
【0038】前述したBHTに関する説明は、BHTに
よって行われた各予測は正しいものであると仮定してい
た。しかしながら、場合によっては、BHTは誤った決
定を行うこともある。従って、更新または補正機構をこ
のBHTに設ける必要がある。
【0039】BHTによる予測誤りは、命令のアドレス
生成段階または実行段階の後に検出できる。分岐が実行
された後で発見されるBHT予測誤りによって、かなり
のパイプライン遅延が発生する。“パイプライン再始
動”信号は、実行ユニットによってBHTへ送られる。
これは、成立または不成立の分岐の結果が予測した動作
と異なるものであることがわかった場合には何時でも送
られる。BHT補正情報と一緒に再始動情報がパス22
を介して送られる。パイプラインの命令デコードおよび
AGEN段階の後にBHT誤りを検出することによって
パイプラインはもっと早期に再始動するようにできる。
このことによって、分岐が実行された後実行ユニット中
の分岐予測誤りを検出するならば生じる筈の数サイクル
のパイプライン遅延が回避される。
【0040】BHTが、分岐が無く、BHTミスと予測
し、命令デコーダが無条件分岐をデコードする時はいつ
でも、BHT予測誤りがデコード時に検出され得る。こ
の情報はパス22を介してBHTも送られることができ
る。
【0041】分岐の目標アドレスを予測する場合の誤り
は、アドレス生成部19の後に検出することができ、図
2に示したようにパス28を介してBHT12がこれを
得ることができるようになる。分岐がデコード・レジス
タ17によってデコードされた場合には、何時でも、分
岐の目標アドレス(アドレス生成部19の出力)がBH
T12に送られ、図3のBA/TAスタック37中に保
持された予測済み目標アドレスと比較される。このロジ
ックは図3の機能40内に包含されている。アドレス生
成部19からのTAが、予測したTAと一致しない場合
に補正が必要となる。BHTエントリ中に保管された目
標アドレスは、新しい、即ち現在の分岐命令の目標アド
レスを反映させるように修正される必要がある。これら
補正はパス46を介してBHTディレクトリ32に送ら
れる。パイプライン再始動情報はパス45を介して送ら
れ、I−フェッチ・アドレス・レジスタ31を再ロード
し、BA/TAスタック37を消去する。パイプライン
再始動の効果を以下に説明する。
【0042】BHT補正はまた、命令実行段階の後にも
検出される。補正情報はパス22を介して送られる。こ
こで、成立または不成立の各分岐の出力がBHTに送ら
れ、BA/TAスタック37に現在保有されている各分
岐の予測状態と比較される。これはユニット47で行わ
れる。もし、誤りが成立分岐を予測するのに失敗した時
のものであった場合、新しいエントリがBHTディレク
トリ中に形成される。この新しいBA/TA情報がパス
46を介してBHTに送られる。また、誤りが分岐が成
立するという予測であり、実際にはこの分岐が成立しな
い場合には、BHTに現在保持されているBA/TAエ
ントリを削除する必要がある。この補正情報はまたパス
46を介してBHTに送られる。
【0043】予測誤りがプロセッサで一旦、検出される
と、パイプラインは再始動される必要がある。例えば、
分岐が成立しないものと予測され、分岐が実際には成立
した場合を考える。BHTの命令フェッチ方式は、分岐
の目標が決してフェッチされず、パイプラインは、正し
い命令情報がフェッチされ命令バッファに格納されるま
で、アイドル状態であるようになっている。正しい命令
がキャッシュから一旦フェッチされると、通常のパイプ
ラインの流れが継続されるようになる。この“パイプラ
イン再始動”を完了させるためには、情報がパス45を
介して送られる。再始動ロジックによって、命令フェッ
チ・アドレス31が新しい命令アドレス(この場合、分
岐の目標に相当する)でロードされる。このことによっ
て命令フェッチ・シーケンスが改めて開始し得るように
なる。この“パイプライン再始動”手順によって、図2
の命令バッファ11が消去され、図3のBA/TAスタ
ック37が空となる。次に、このプロセッサは、正しい
命令(再始動アドレス中に含まれている)をキャッシュ
からフェッチし、通常のパイプラインの流れが継続でき
る。パイプラインを再始動することのできる方法は数種
類存在する。大部分の方法は、上述した一方法に比べて
更に複雑なものである。例えば、命令バッファ11に
は、すでに、正しい命令が含まれており、これによって
パイプラインを再び始動でき、更に、これら命令を命令
バッファから僅かの遅延または全く遅延無しでフェッチ
することにより実行を継続できる。このことを実行する
ために、追加ハードウェアが必要となる。しかしなが
ら、本実施例において、簡単な再始動手順が用いられ、
各BHT誤りの後で、パイプラインが再び始動するもの
とする。
【0044】DHTを有するプロセッサの動作につい
て、以下説明する。図4は、DHTを有するプロセッサ
の主要特徴部を示す。この図は、DHT付きプロセッサ
によってBHTを有するプロセッサ中に見出される特徴
の大部分が保有されていることを示している。しかしな
がら、主要な差異としては、このDHTは成立または不
成立の各条件付き分岐の出力を予測するだけであり、更
に、BHTの命令フェッチ・ロジックを、“次の順序”
フェッチのみを発生することが可能な更に簡単な機構に
よって置き換えることである。
【0045】DHTを有するプロセッサ内の構成要素の
大部分は、BHTを有するプロセッサ中で見られるもの
と類似の機能を有する。しかしながら、いくつかの主要
な差異が存在する。キャッシュ13はこの場合にも命令
フェッチ情報を命令バッファ11へ送る。命令バッファ
(IB)11は、キャッシュ13より戻された命令フェ
ッチ・セグメントを保持する。これら命令バッファの複
数のものが存在してもよい。マルチ命令ストリーム・プ
ロセッサのように、独立のIBを用いて、再始動情報
(DHTによる予測が誤っている場合に、パイプライン
を再び始動するためのもの)、命令フェッチ情報(パイ
プライン中の現在の命令ストリーム用の命令フェッチ・
セグメント)および代替命令パス情報を保持する。マル
チ命令ストリーム・マルチ命令バッファ・プロセッサに
ついては、例えば、米国特許第4,200,927号明
細書に詳述されている。次命令レジスタ16は命令バッ
ファからロードされる。この命令バッファは次命令アド
レスを利用する。このアドレスは、更新命令カウンタ
(更新IC)27に入力されて、どの命令を次命令レジ
スタ16にロードするかを決定する。
【0046】命令デコーダ17は以下の情報を出力とし
て与える。
【0047】即ち、 ・命令に関する実行情報を実行ユニットに与えること、 ・オペランド情報(ベース・レジスタ,インデックス・
レジスタ,および変位値)をアドレス生成機能に与える
こと、 ・アドレス加算器25に命令長情報を与えること、であ
る。
【0048】次に、このアドレス加算器25は、命令長
値を命令カウンタ値26と組合わせて、次命令アドレス
を生成する。次に、この値は更新命令カウンタ27に保
管される。オペランド・アドレスがアドレス生成ユニッ
ト19で計算され、フェッチ・リクエストおよびアドレ
スがキャッシュ13へ送られる。これらオペランドはパ
ス21を介して実行ユニット18へ戻される。ここで
は、命令が実行されて、その結果が格納される。次にエ
ンドオペ・ユニット23は命令の完了を知らせる。
【0049】命令デコーダ17が、無条件分岐を検出す
るものとすると、この分岐の目標アドレス(これは命令
である)がキャッシュ13からフェッチされ、この目標
命令がパス21およびゲート51を介して次命令レジス
タ16にロードされる。分岐の目標アドレスがアドレス
生成ユニット19から得られる。目標アドレスは、更新
IC27にも送られると共に、パス53と54をそれぞ
れ介して、順次プリフェッチ制御部(SPC)52へも
送られる。このSPC52は、分岐の新たな目標アドレ
スで始まる命令セグメントをフェッチし始める。
【0050】命令デコーダ17が条件付き分岐を検出し
た場合に、DHT55がパス91を介してアクセスさ
れ、これによって成立または不成立の分岐の結果を予測
する。このDHT55は、命令カウンタ26に含まれた
アドレス・ビットの一部を利用して、DHT55に含ま
れたDHTアレイを検査する。この分岐の予測が“成立
する”であると、目標アドレスが、無条件分岐に対する
目標アドレスがフェッチされたのと同様にフェッチされ
る。即ち、目標アドレスがキャッシュ13からフェッチ
され、目標命令がゲート51を介して次命令レジスタ1
6にロードされる。また、目標アドレスがパス53を介
して更新IC27にも送られると共に、DHT55は、
パス56を経て順次プリフェッチ制御部(SPC)52
に信号を与えて、その命令フェッチアドレスを、分岐の
予測された目標アドレスにリセットして、新たな次順序
フェッチを開始する。この分岐の目標アドレスはパス5
4を介してSPC52に送られる。
【0051】命令フェッチ・ロジックは順次プリフェッ
チ制御(SPC)52に包含されている。図5は、この
機構を更に詳細に示すものである。ここで、最終命令フ
ェッチのアドレスは最終セグメント・フェッチド・レジ
スタ61に保管され、命令バッファが、SPC52に対
して、ゲート62を経て、次の命令フェッチ用にスペー
スを利用できる旨を知らせた場合は何時でも、次の順次
命令フェッチ・アドレスが発生され、キャッシュ13へ
送られる。無条件分岐または、予測された成立条件付き
分岐がデコードされ、SPC52にパス56を経て、そ
の命令フェッチ・アドレスを分岐命令の目標アドレスに
リセットするよう指令する時は、何時でも、最終ブロッ
ク・フェッチド・レジスタ61に分岐の目標アドレスが
ロードされる。このアドレスは、アドレス生成部19に
より与えられる。その後に、次順序フェッチのすべてを
SPC52内で生成することができる。目標アドレスは
このSPC52にパス54を介して送られ、DHT55
からパス56を介して無条件分岐または予測された成立
条件付き分岐がデコードされたという信号が送られてき
たときにゲート63を経てロードされる。
【0052】分岐予測はDHT55によって実行され
る。図6はDHTの更に詳細な説明である。前述したよ
うに、条件付き分岐のみがDHTによって予測される。
これは、すべての無条件分岐は、一旦デコードされれ
ば、これら分岐を正確に予測できるからである。条件付
き分岐をデコードした時は、何時でも、DHTは、パス
91を経て命令デコーダ17より信号通知される。DH
Tアレイ71は、命令カウンタレジスタ26内に保持さ
れた命令アドレスを表すビットの一部を利用してアクセ
スされる。各アレイ・エントリは、単一ビットのみから
構成され、このビットの値は、このメモリ・ロケーショ
ンからこのテーブルの終わりまでにある分岐の結果を表
す。例えば、DHTアレイ71で検査されたエントリが
1(DHTヒット)の場合に、この分岐は成立したもの
と推定される。または、見出された値がゼロ(DHTミ
ス)の場合に、この分岐は成立しなかったものと推定さ
れる。ここで、用語“DHTヒット”および“DHTミ
ス”とは、BHTに対する用語、即ち、“BHTヒッ
ト”および“BHTミス”に対応するものである。これ
ら用語は、分岐が成立としてまたは不成立として予測さ
れるかどうかを表している。
【0053】DHT補正情報がパス22を経て、実行ユ
ニット18からDHTへ送られる。この補正情報には、
成立または不成立である分岐の実行結果が含まれてお
り、更に、分岐のアドレスも含まれている。この情報を
利用して、DHTが更新される。DHTは、各条件付き
分岐の動作を予測するだけであるので、各分岐の実行結
果のみをDHTへ戻すだけでよい。
【0054】BHTおよびDHTを有するプロセッサの
動作についての概要について説明する。図7(A)およ
び図7(B)は、これらプロセッサにおいて起こる事象
および動作を要約した表形態のルールのセットを表して
いる。これら事象はデコード時および命令フェッチ時動
作に従ってリストされており、BHTおよびDHTヒッ
トまたはミス結果が表されている。例えば、図7(A)
は、“BHTヒット”(成立の予測)によって命令フェ
ッチ機構を、分岐の目標アドレス(命令フェッチ時の)
に切り換えさせることを表している。しかしながら、B
HTミスにおいては、命令フェッチ機構は命令を次の順
次パスへフェッチし続ける。パイプラインのデコード段
階中に、命令デコーダは、BHTヒットによって識別さ
れたように目標アドレスストリームに切換えられるか、
または、BHTエントリが見つからなかった場合(BH
Tミス)、次の順序パスをデコードし続ける。
【0055】図7(B)に示したように、DHTを有す
るプロセッサに対し成立した動作は、互いに相違する。
命令フェッチ段階中に、命令フェッチ機構によって、予
測結果に拘らず、次の順序命令のみをフェッチすること
ができる。しかしながら、分岐がデコード時に発見さ
れ、成立したものと(DHTヒット)予測された場合
に、命令フェッチ機構は、命令セグメントを目標アドレ
ス・パスへフェッチし始める。同様に、命令デコーダ
は、DHTヒットが起こると、命令を目標アドレス・パ
スへデコードするように切換える。予測がDHTミスの
場合に、プロセッサは命令を次の順序パスへフェッチし
続け、次のサイクルのフォールスルー命令をデコードす
る。
【0056】次に、本発明の特別な実施例、即ち、マル
チ予測型分岐予測機構を説明する。この機構は、BHT
とDHTとを両方利用して分岐を予測するもので、この
ような予測を行う場合に、どちらの予測機構(DHT/
BHT)も単独では与えることができない特徴を提供す
ることによって、予測プロセスを改良することができ
る。従って、これらの特別な特徴によって、分岐予測の
全体の精度を改善し、この結果として性能を改善する。
図8は、本発明を説明する事象および動作の概要を示す
テーブルである。BHTヒットの各々はここでは2つの
カテゴリ、即ち、“アクティブ成立ヒット”および“ゴ
ースト・ヒット”に分割される。
【0057】アクティブ成立ヒットはこれまでBHTヒ
ットと呼ばれていたものを意味する用語である。即ち、
命令フェッチ・アドレスは、BHTに保管された分岐ア
ドレスに一致し、この分岐が現在成立する。しかしなが
ら、“ゴースト・ヒット”とは、命令フェッチアドレス
がBHTにセーブされた分岐アドレスに一致するが、こ
の分岐は最早、成立しない場合のことを意味する。図9
を用いてこれらの差異を詳述する。この図は、BHTデ
ィレクトリ,アレイおよびブロック・エントリ用のフォ
ーマットを表す。各ディレクトリ・エントリ81は、命
令フェッチ・セグメントのアドレスを表し、このセグメ
ントには少なくとも1個のすでに実行して成立した分岐
が含まれる。ディレクトリのエントリの各々に関連した
アレイ情報82によって、(a)命令フェッチ・セグメ
ント内に含まれた成立分岐の各々のアドレスと、(b)
各分岐の目標アドレスと、(c)成立/不成立ビット
と、(d)有効ビットと、(e)LRU使用ビットとを
表す。
【0058】命令フェッチ・セグメント中に含まれた成
立分岐がXをアドレスするものとする。セグメントはB
HTディレクトリ83にXの値および対応するセグメン
ト情報84を有するようになる。ディレクトリ・エント
リは命令フェッチ・セグメントのアドレスを表すので、
成立した複数の分岐が各セグメント内に存在し得る。各
命令フェッチ・セグメントは、通常、数ワード長であ
り、いくつかの命令を含むことを思い出されたい。従っ
て、アレイ・セグメント・エントリ情報には、各命令フ
ェッチ・セグメント内で見つかった成立分岐を識別する
情報が含まれている。図9は、セグメント・エントリの
各々によって、命令フェッチ・セグメント内の成立分岐
を4個まで識別できることを示している。このことは、
クワドワード(16バイト)の命令フェッチ・セグメン
トに対して充分以上のものである。各サブ・セグメント
・エントリは、命令フェッチ・セグメント内の分岐アド
レスを識別する情報を含んでいる。このフィールドは、
IBM S/370アーキテクチャにおけるクワドワー
ド・セグメント内の命令を識別するには、僅か3ビット
長であれば良い。その理由は、命令を各ハーフワード境
界でのみ開始できるからである。分岐はあらゆる命令フ
ェッチ・セグメントに分岐できるから、目標アドレスは
完全な命令アドレスである必要がある。しかしながら、
目標アドレスはBHTに記憶されるときに、略記または
短縮されることができる。目標アドレス全体をなすビッ
トの内下位ビットの一部のみを保管することができる。
従って、この完全な目標アドレスは、命令カウンタ・レ
ジスタからの現在の高位ビットをBHTに保管された低
位ビットに連結することによって再構成することができ
る。この手法は、一般に分岐が短い距離しかジャンプせ
ず、完全な目標アドレスをアドレス・ビットの短縮され
たセットのみから発生する場合に、非常に僅かの精度し
か失われないという観察を利用しようとするものであ
る。
【0059】有効ビットは、各ブロックにおけるBA/
TA対の(4個まで)のいずれが有効であるかを表すの
に用いられる。前述したように、各命令フェッチセグメ
ント内の4個までの分岐アドレスを記憶しておくように
する手段が与えられている。
【0060】分岐はその動作を変更できるから、成立ビ
ットが必要となる。即ち最初に、BHTに入るように分
岐が生じる必要がある。しかしながら、続く実行におい
て、分岐の成立しないことがありうる。この動作は、B
HT補正を生じることになる。このBHT補正は、成立
するものと予測され、次に、実行時に成立しないことに
なるすべての分岐に対して行われることを思い出された
い。この補正機構は、このBHTエントリに対して成立
ビットを“ターンオフ”する必要がある。命令フェッチ
・セグメントが、ターンオフされた“成立ビット”を有
する分岐アドレスに一致する場合に、ゴースト・ヒット
が識別される。これらゴースト・ヒットは、最早成立し
ないBHTエントリ(分岐)に対するヒットを記述する
のに用いられる。
【0061】命令フェッチ・セグメントには4個より多
くの成立分岐を含むことができるので、最古使用ビット
を必要とする。このことが起こった場合に、最近参照し
た分岐アドレスを保持し、過去において最も古く参照し
た分岐アドレスを廃棄するために置き換え機構が用いら
れる。代表的に、最古使用(LRU)アルゴリズムまた
はLRUアルゴリズムの形態が、置き換えアルゴリズム
として用いられる。
【0062】図8から理解できるように、BHT予測の
各々(ヒット,ゴースト・ヒット,ミス)は、現在、D
HT予測(ヒットまたはミス)と対となっている。これ
ら事象が、プロセッサの命令フェッチおよびデコード時
段階に従ってリストされている。
【0063】例えば、有効BHTヒットによって、命令
機構がBHT内で見出された分岐の目標をフェッチす
る。このことはDHTの予測、ヒットまたはミスに関係
なく起こるものである。デコード時において、このプロ
セッサは、目標アドレス・パスからの命令をデコードす
るように切り換えることになる。目標アドレスパスから
の命令は、DHTヒットまたはミスに対しプロセッサに
よってデコードされる。
【0064】しかしながら、各“ゴースト・ヒット”予
測(命令フェッチ時での)は、命令フェッチ機構が、次
順序パスからの命令をフェッチし続けるようにする。パ
イプラインのデコード段階中は、プロセッサは、DHT
予測がヒットまたはミスに関係なく、次順序パスをデコ
ードし続ける。
【0065】BHTミスに対して、プロセッサは、次順
序セグメントをフェッチし続ける。デコード時におい
て、DHTが分岐は成立しないと予測した場合に、プロ
セッサは次順序パスからの命令をデコードし続ける。し
かしながら、BHTによって実行される初期予測がミス
(即ち、成立しない)であり、DHTが分岐は成立す
る、即ち、デコード時にDHTヒットであると予測する
場合には、プロセッサは、次順序パスのフェッチを停止
し、目標アドレス・パスからの命令をフェッチするよう
に切り換わる。分岐の目標アドレスはアドレス生成機能
より得られる。目標アドレス命令が命令バッファ内で得
られると、命令デコーダはまた、分岐によって識別され
た目標アドレス・パスからの命令をデコードするように
切り換わる。
【0066】図10は、分岐予測にBHTとDHTの両
者を利用する本発明の好適な実施例によるプロセッサの
特徴を示している。この図における特徴の大部分は、B
HTだけを有するプロセッサ(図2)またはDHTのみ
を有するプロセッサ(図4)で説明したのと同様な機能
を有するものである。例えば、キャッシュ13によって
命令を命令バッファ11に供給すると共に、オペランド
を実行ユニット18に供給する。次命令レジスタ16に
は、命令デコーダ17によって処理すべき次命令が含ま
れている。BHT12は分岐予測を実行し、命令のフェ
ッチ動作を制御し、更に、パイプラインを経る命令の流
れを指定する。BHT12は、次命令レジスタ16に適
当な次命令、即ち、次順序命令または分岐目標命令をロ
ードするように命令バッファ11に指令する。次命令フ
ェッチは、スペースが利用可能であることを命令バッフ
ァ11から通知されたときにBHT12によって発生さ
れる。次命令フェッチは、前の命令フェッチの結果(B
HTヒットまたはBHTミス)に応じて、次順序アドレ
スまたは分岐命令の目標アドレスのいずれかとなる。
【0067】DHT55の動作は、図4に記載したDH
Tの動作に類似したものである。即ち、このDHT55
はパイプラインのデコード段階中に条件付き分岐を予測
し、BHTに対しパス56を介して、分岐予測の結果
(ヒットまたはミス)について信号通知する。分岐予測
結果と一緒に、分岐のアドレスならびに分岐の目標アド
レスもまた、パス56を介して供給される。この情報
は、BHT12における命令フェッチ・ロジックによっ
て利用され、BHTによって行われた分岐予測(これは
パイプラインの命令フェッチ段階中に行われる)が正し
いことを確認する。しかしながら、分岐の目標アドレス
はパス28を介してBHT12にすでに供給されている
ので、重ねてパス56を介して送られる必要がないこと
が判る。この情報をパス56上の信号に包含させること
によって、パイプラインの再始動および命令フェッチ・
ロジックが簡略化される。
【0068】条件付き分岐がデコードされた場合には、
DHT55はパス91を介して命令デコーダ17から信
号通知される。分岐のアドレスは、命令カウンタ・レジ
スタ26からDHT55へ供給される。BHTとDHT
との補正が、実行ユニット18からパス22を介して信
号通知される。アドレス加算器25は、デコードされ且
つICレジスタで見出された命令のアドレスと、デコー
ドされる命令の長さとをその入力とし、次命令アドレス
を計算する。新しいアドレスは更新ICレジスタ27に
保管される。分岐が成立であるかまたは不成立であるか
を決定するためのDHT予測ロジックは、図6で説明し
たものと同一である。この情報をBHT内で見出される
分岐予測ロジックと組合せることにより、BHTまたは
DHTが単独で与えることのできない分岐方式が改善さ
れる。
【0069】図3に関連して説明したように、BHTに
対していくつかの変更がなされる。図11は、図9で説
明したように正しいBA/TA対がどのようにしてBH
Tエントリから選択されるかを、詳細に示したものであ
る。“BHTヒット”とは、図3において、命令フェッ
チアドレス31の結果であり、図9のBHT82に保管
された命令フェッチセグメントに一致している。比較ロ
ジックが機能部102に含まれる。比較に使用された命
令フェッチアドレスは2つの部分103と104とに分
割され得る。部分103は、BHTに保管された各命令
フェッチ・セグメントに対して比較を行うのに用いられ
る。アドレスのこの部分は、キャッシュまたはメモリか
らの命令をフェッチするために使用したアドレス・フェ
ッチ・バスの幅に依存してダブルワードまたはクワドワ
ードまでの命令フェッチのアドレスを指定する必要があ
るだけである。部分104は命令フェッチ・アドレスの
サブアドレス(SA)部分を表し、更に、命令フェッチ
・セグメント内のどの命令がBHTエントリを生じさせ
たかを識別する。この命令は成立分岐となる。このアド
レスの部分は、“BHTヒット”を検出する時に直ちに
必要となるものではない。これは、命令フェッチ・アド
レスとBHTに保管された命令フェッチ・セグメントと
の初期一致後にのみ使用される。“BHTヒット”が検
出された後に、命令フェッチ・セグメント内の正しい分
岐を選択する必要がある。各命令フェッチ・セグメント
内に数個の成立分岐が存在し得ることを想起されたい。
【0070】所望の分岐は、命令フェッチ・アドレス以
降に出会う、最も近接した分岐として識別される。適切
な分岐アドレスは、以下のルールに従って、選択ロジッ
ク105によって選択される。: ・識別されたBHTセグメント中の各BAフィールドか
らSAフィールドを減算する。; ・負および無効の差を無視する。; ・差が最小のまたは差が零のBAを選択する。
【0071】次に、完全なBAが選択ゲートロジック1
06において生成される。選択ロジック106から選択
されたBA104の値が命令フェッチ・アドレス103
に付加されて、完全な分岐アドレスを生成する。次に、
このアドレスは適当なTAと対にされて、BA/TA対
を形成する。このBA/TA対は、成立ビットがゼロ、
T=0の場合に、ゴースト・ヒットを表し、T=1の場
合に、有効な成立ヒットを表す。選択されたBA/TA
対は図3のBA/TAスタック37に保管されて、命令
バッファ11から、図2の次命令レジスタ16への“次
命令”の後での選択を案内する。選択された目標アドレ
スはまた他の2つのロケーションにゲートされる。第1
として、TAは図3の次命令フェッチ・アドレス31を
更新するのに用いられる。第2として、目標アドレス
は、図3の次順序命令フェッチ制御部34をリセットす
るのに用いられる。
【0072】図12は、DHTおよびBHTを利用した
予測ロジックを詳細に説明するものである。このロジッ
クの要素は、図3に説明した予測ロジックに類似してい
る。次命令フェッチ・アドレス31に含まれている命令
フェッチ・アドレスの各々は、BHTに含まれている命
令フェッチ・セグメントに対して比較される。比較ロジ
ックは機能ブロック33中に含まれている。一致が検出
(BHTヒット)されると、適切なBA/TAアドレス
がBA/TAスタック37に保管される。有効な成立ヒ
ット(成立ビットT=1)とゴースト・ヒット(T=
0)とが、BA/TAスタック中に保管される。これら
BA/TAアドレス対は、次命令レジスタ16を命令バ
ッファ11から適切な次命令でロードするのに用いられ
る。
【0073】“BHTヒット”が有効な成立ヒット(T
=1)の場合に、TAは命令フェッチ・レジスタ31に
も送られ、次順序フェッチ機構34にも送られる。選択
されたTAはすべての有効な成立ヒット時に次命令フェ
ッチとなり、次順序フェッチ制御部34をリセットする
のに用いられる。
【0074】パス56を介して得られたDHTの予測結
果と、BA/TAスタック37により与えられたBHT
による予測とが機能ブロック111で検証される。BA
/TAスタック37中の最古のエントリのBAが、丁度
デコードした分岐のアドレスと比較される。これらアド
レスが互いに等しくない場合は、プロセッサは、BHT
が不成立、即ちBHTミスである分岐をデコードする。
次に、この処理ロジックは機能ブロック112に進ん
で、ここでは、DHTによる予測を検証する。分岐が成
立するとDHTが予測した場合に、BHTによって行わ
れる予測が正しいものでなく、正しい予測はDHTによ
るものであると仮定される。このことによってパイプラ
インが再び始動されるようになり(機能ブロック11
3)、図8で説明したBHTミスおよびDHTヒットに
対する命令フェッチおよびデコード時の方針が実施され
る。丁度デコードされた分岐の目標アドレスは、次命令
フェッチ・アドレスとなり、パイプラインは目標アドレ
ス・パスへ進行する。このDHTは、BHTより多数の
分岐の結果を記憶することができるが、サイズにおいて
は依然小さいものであることを想起されたい。この結
果、成立しない分岐、即ちBHTミスの予測は、小さな
BHTから古くなって追い出されたものであるが依然と
して大きなDHTに保持されている、成立した分岐の結
果である可能性がある。
【0075】DHTによって成された予測が成立しない
場合に、機能ブロック43は、命令バッファからロード
される次命令として分岐に継続する命令を、次命令レジ
スタ16にロードするように指令される。
【0076】機能ブロック111のロジックに戻り、B
A/TAスタック37からのBAが、デコードされる分
岐のアドレスに等しい場合には、図8のBHTヒット方
針が実行される。この分岐が有効な成立ヒット(T=
1)として識別される場合に、機能ブロック42は、目
標アドレス情報を命令バッファ11からロードされた次
命令として利用するよう指令される。BHTエントリが
ゴースト・ヒット(T=0)を識別する場合に、機能ブ
ロック43は、命令バッファからロードされた次命令が
次順序またはフォールスルー命令であることを伝える。
【0077】機能41は、パス28を介して戻された次
命令アドレスを、BA/TAスタック37中の最古のエ
ントリのBAと比較するのに再び用いられる。これは命
令バッファからの命令を、次命令レジスタ16にロード
するのを案内する。機能40は、図2のアドレス生成部
19によって計算された分岐の目標アドレスを、BA/
TAスタック37に保管された分岐の目標アドレスと比
較する。保管された目標アドレスがデコード時の生成目
標アドレスと異なる場合に、パイプラインを再び始動す
る必要がある。この再始動情報はパス45を介して送ら
れる。BHT補正が補正処理スタック47へ送られる。
ここで、成立または不成立の各分岐の実行結果が、予測
結果に基いてチェックされ、更新、新しいエントリまた
は、分岐削除が更新パス46を経てBHTへスケジュー
ルされる。
【0078】最後に、図13は、比較ロジックの詳細を
示し、このロジックを利用してBHTとDHTとによっ
て行われた予測が検証される。機能111は、丁度デコ
ードされた分岐のアドレス(パス56を介して送られ
た)を、BA/TAスタック37中の最も古いエントリ
のBAと比較する。これらアドレスが等しい場合に(B
HTヒットを識別する場合)、成立または不成立のビッ
トが機能122で検証される。機能122の出力は、選
択された分岐が有効な成立ヒットであるかまたはゴース
ト・ヒットであるかを決定する。比較ロジック122
が、BA/TAスタック37からの分岐アドレスがデコ
ードされた分岐のアドレスと等しくないことを判定する
と、BHTミスが識別される。
【0079】選択ゲート123〜128は、どの命令フ
ェッチ/デコード時方針が、図8で説明したように取ら
れるかを決定する。各ゲートは、ANDゲートを表し、
その出力は以下のユニット(図12に示した)に送られ
る。: ・次順序命令を次の命令としてデコードするユニット4
3。; ・分岐の目標アドレスを次の命令としてデコードするユ
ニット42。; ・パイプラインを再始動させるユニット113。このユ
ニットによって、分岐の目標アドレスをフェッチさせ、
次の命令としてデコードする。
【0080】前述した実施例においては、パイプライン
の命令フェッチ段階中およびデコード時に、各分岐が2
度予測される。従って実施例では、2つの独立した分岐
予測方針が互いに一致しないときは何時でも、予測を決
定する一組のルールを利用する。特に、実施例で記載さ
れている2つの分岐予測方式はBHTとDHTとであ
る。すべての分岐予測差を調停するルールの組が図8に
記載されている。BHTとDHTとは、分岐予測方針に
おける好適な選択である。その理由は、これらは各々別
個に、分岐の予測において極めて高い成功率を有してお
り、更に、これらを一緒に利用した場合に、高いパーセ
ンテージの分岐をうまく予測できるからである。
【0081】しかしながら、従来技術で説明したような
他の分岐予測方式の1つを、BHTまたはDHT予測方
式で置換することは容易なことであり、これは依然、本
発明の技術思想上の範囲内である。例えば、分岐予測は
米国特許第4,181,942号明細書および第4,2
00,927号明細書に記載されたようなopコード・
タイプに従って実行できる。これらopコード・タイプ
の両方を、BHTおよびDHTで置換することができ
る。従って、図8に関連して記載したルールに類似した
ルールが、分岐予測方式が一致しない時に、これら差異
を解決するために必要となる。事実、第3の分岐予測方
針を利用して、最初の2つの分岐予測スキームが一致し
ないケースを調停するようにすることができる。
【0082】例えば、BHTとDHTとによって行われ
た予測が一致しない場合に、他の分岐予測スキーム(o
pコード・タイプによって各分岐を予測できるもの)を
利用してこれら差異を調停することができる。あるいは
また、マルチ予測型分岐予測機構を、各分岐の実際の予
測を2つの予測の一致によって決めるようにして3つの
別個の分岐予測方針で構成することができる。当業者で
あれば、異なる分岐予測方式を、本発明の実施例で説明
した方式と置き換えるか、または、現存の分岐予測スキ
ームを変更でき、および本発明の技術思想の範囲内で変
形し得るものである。
【図面の簡単な説明】
【図1】高性能コンピュータにおけるパイプライン・ス
テージの概念を示すブロック図である。
【図2】分岐履歴テーブル付き従来のプロセッサを示す
ブロック・ダイヤグラムである。
【図3】図2のプロセッサのテーブルと組合された動作
を示すフローチャートである。
【図4】デコード履歴テーブル付き従来のプロセッサを
示すブロック・ダイヤグラムである。
【図5】図4に示したプロセッサにおける順序フェッチ
・ロジック制御を示すブロック・ダイヤグラムである。
【図6】図4のプロセッサのデコード履歴テーブルを示
すブロック・ダイヤグラムである。
【図7】図2と図4に示したプロセッサの分岐履歴テー
ブルとデコード履歴テーブル命令フェッチ・デコード・
アルゴリズムを示すテーブルである。
【図8】本発明の一実施例による、集積された分岐履歴
/デコード履歴テーブル命令フェッチおよびデコード時
アルゴリズムを示すテーブルである。
【図9】本発明による分岐履歴テーブル・ダイヤグラム
と、セグメント・エントリ情報を示すテーブルである。
【図10】本発明の一実施例による、分岐履歴テーブル
と、デコード履歴テーブルとを有するプロセッサのブロ
ック・ダイヤグラムである。
【図11】本発明の一実施例で使用されている分岐アド
レス/目標アドレス選択機構を示すブロック・ダイヤグ
ラムである。
【図12】分岐履歴テーブルおよびデコード履歴テーブ
ル・ロジックを示すフローチャートである。
【図13】分岐履歴テーブルとデコード履歴テーブル予
測機構の詳細を示すブロック・ダイヤグラムである。
【符号の説明】
10 メモリ 13 キャッシュ 17 命令デコーダ 27 更新命令カウンタ・レジスタ 31 アドレス・レジスタ 37 目標アドレス・スタック 43 信号ユニット 52 順序プリフェッチ制御 71 DHTアレイ 82 アレイ情報 103 命令フェッチ・アドレス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョシュア・ウィルソン・ナイト アメリカ合衆国 ニューヨーク州 モヒガ ン レイク サガモア アベニュー 3490 (72)発明者 ジェームス・ハーバート・ポメレーヌ アメリカ合衆国 ニューヨーク州 チャッ パカ ノース ベッドフォード ロード 403 (72)発明者 トーマス・ロバーツ・プザック アメリカ合衆国 コネチカット州 リッジ フィールド スクール ハウス プレイス 9 (72)発明者 ルドルフ・ネイサン・リヒトシャーフェン アメリカ合衆国 ニューヨーク州 スカー スデール インズ ロード 24 (72)発明者 ジェームス・ロバート・ロビンソン アメリカ合衆国 ニューヨーク州 クリン トン コーナーズ アール アール 2 ボックス 319 (72)発明者 アルバート・ジェームス・バン・ノースト ランド,ジュニア アメリカ合衆国 ニューヨーク州 レッド フック グランドムール ドライブ 3

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】フェッチした命令を一時記憶するメモリに
    接続された命令バッファと、この命令バッファに接続さ
    れ、命令バッファ内に一時記憶された命令をデコードす
    る命令デコード機構と、この命令デコード機構からのデ
    コードされた命令に応答して、前記メモリをアドレスす
    ることにより前記命令バッファに命令をフェッチするア
    ドレス生成機構と、前記命令デコード機構からのデコー
    ドされた命令に応答して、デコードされた命令に従って
    動作を実行する実行ユニットとを含み、複数の異なる処
    理ステージがパイプラインの異なる位置に対応し、かつ
    それぞれ互いに異なる処理時刻を有するパイプラインプ
    ロセッサを有するコンピュータにおける分岐命令の結果
    を予測するマルチ予測型分岐予測機構において、 前記パイプラインプロセッサに接続され、前記パイプラ
    インのそれぞれ異なるステージにおいて分岐命令を独立
    して予測する少なくとも2個の独立した分岐予測機構
    と、 前記分岐予測機構に応答して、前記分岐予測機構の各々
    から得られた予測が互いに異なる場合にこれを解決する
    手段と、 前記実行ユニットに応答し、分岐命令の実行に基づい
    て、前記分岐予測機構を更新する手段とを備えたことを
    特徴とするマルチ予測型分岐予測機構。
  2. 【請求項2】前記少なくとも2つの独立した分岐予測機
    構の1つまたはそれ以上の機構が、前記命令バッファお
    よび前記アドレス生成機構に接続された命令フェッチ分
    岐予測手段を有し、この命令フェッチ分岐予測手段によ
    って、成立した分岐の限定された履歴に基づいて初期分
    岐予測を生成し、目標アドレスを前記アドレス生成機構
    に供給することを特徴とする請求項1記載のマルチ予測
    型分岐予測機構。
  3. 【請求項3】前記少なくとも2つの独立した分岐予測機
    構の1つまたはそれ以上の機構が、前記命令デコード機
    構および前記命令フェッチ分岐予測手段に接続されたデ
    コード時分岐予測機構を有し、このデコード時分岐予測
    機構によって、実行した分岐の履歴に基づいて分岐予測
    を生成することを特徴とする請求項1記載のマルチ予測
    型分岐予測機構。
  4. 【請求項4】前記少なくとも2つの独立した分岐予測機
    構が、 前記命令バッファと前記アドレス生成機構とに接続さ
    れ、成立した分岐の限定された履歴に基づいて初期分岐
    予測を生成し、目標アドレスを前記アドレス生成機構に
    供給する命令フェッチ分岐予測手段と、 前記命令デコード機構と前記命令フェッチ分岐予測手段
    とに接続され、実行した分岐の履歴に基いて分岐予測を
    生成するデコード時分岐予測機構とを有することを特徴
    とする請求項1記載のマルチ予測型分岐予測機構。
  5. 【請求項5】前記命令フェッチ分岐予測手段が、最近実
    行された一組の分岐およびこれに続く分岐の目標アドレ
    スが記憶される分岐履歴テーブルを有し、前記デコード
    時分岐予測機構が、各分岐の動作の記録が記憶されるデ
    コード履歴テーブルを有することを特徴とする請求項4
    記載のマルチ予測型分岐予測機構。
  6. 【請求項6】前記実行ユニットに応答して、分岐命令の
    実行に基いて前記分岐予測機構を更新する前記手段が、
    前記実行ユニット,分岐履歴テーブルおよびデコード履
    歴テーブルに接続され、これらテーブルに記憶された情
    報を分岐命令の実行に基づいて補正する補正処理機構を
    有することを特徴とする請求項5記載のマルチ予測型分
    岐予測機構。
JP3252872A 1990-10-09 1991-09-05 マルチ予測型分岐予測機構 Expired - Lifetime JPH0820950B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US59452990A 1990-10-09 1990-10-09
US594529 1990-10-09

Publications (2)

Publication Number Publication Date
JPH06324865A JPH06324865A (ja) 1994-11-25
JPH0820950B2 true JPH0820950B2 (ja) 1996-03-04

Family

ID=24379263

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3252872A Expired - Lifetime JPH0820950B2 (ja) 1990-10-09 1991-09-05 マルチ予測型分岐予測機構

Country Status (3)

Country Link
US (1) US5353421A (ja)
EP (1) EP0480193A3 (ja)
JP (1) JPH0820950B2 (ja)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5748976A (en) * 1993-10-18 1998-05-05 Amdahl Corporation Mechanism for maintaining data coherency in a branch history instruction cache
ATE184407T1 (de) * 1994-01-03 1999-09-15 Intel Corp Verfahren und vorrichtung zum implementieren eines vierstufigen verzweigungsauflosungssystem in einem rechnerprozessor
TW253946B (en) * 1994-02-04 1995-08-11 Ibm Data processor with branch prediction and method of operation
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5758142A (en) * 1994-05-31 1998-05-26 Digital Equipment Corporation Trainable apparatus for predicting instruction outcomes in pipelined processors
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
US5819080A (en) * 1996-01-02 1998-10-06 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
US5761490A (en) * 1996-05-28 1998-06-02 Hewlett-Packard Company Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US5822576A (en) * 1997-03-26 1998-10-13 International Business Machines Corporation Branch history table with branch pattern field
US6157998A (en) * 1998-04-03 2000-12-05 Motorola Inc. Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers
JP3683439B2 (ja) 1999-08-24 2005-08-17 富士通株式会社 分岐予測を抑止する情報処理装置および方法
DE19961149A1 (de) * 1999-12-17 2001-07-05 Siemens Ag Vorrichtung und Verfahren zum Überwachen der Vermittlungspfade eines Zeit-/Raumkoppelnetzes
JP2001325111A (ja) * 2000-05-16 2001-11-22 Hitachi Ltd 投機機構向けコンパイル方法
JP2004505345A (ja) * 2000-07-21 2004-02-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 分岐ターゲットバッファを有するデータプロセッサ
FR2821450B1 (fr) * 2001-02-27 2004-07-09 St Microelectronics Sa Procede de gestion d'instructions de branchement au sein d'un processeur, en particulier un processeur de traitement numerique du signal, et processeur correspondant
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US20020194462A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line
US6895498B2 (en) 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US20050015578A1 (en) * 2003-07-14 2005-01-20 Kimming So Two-bit branch prediction scheme using reduced memory size
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
JP2006048132A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 分岐予測装置、分岐予測装置の制御方法、情報処理装置
US20060036837A1 (en) * 2004-08-13 2006-02-16 Stark Jared W Prophet/critic hybrid predictor
US7278012B2 (en) * 2005-06-02 2007-10-02 Qualcomm Incorporated Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US20080177990A1 (en) * 2007-01-19 2008-07-24 Mips Technologies, Inc. Synthesized assertions in a self-correcting processor and applications thereof
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US8639945B2 (en) 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US8788797B2 (en) * 2010-12-22 2014-07-22 Advanced Micro Devices, Inc. Combined level 1 and level 2 branch predictor
JP5656074B2 (ja) * 2011-02-21 2015-01-21 日本電気株式会社 分岐予測装置、プロセッサ及び分岐予測方法
US9201654B2 (en) 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US9207938B2 (en) * 2012-08-29 2015-12-08 Hewlett-Packard Development Company, L.P. Instruction forwarding based on predication criteria
JP6098429B2 (ja) * 2013-08-12 2017-03-22 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US20190369999A1 (en) * 2018-06-04 2019-12-05 Advanced Micro Devices, Inc. Storing incidental branch predictions to reduce latency of misprediction recovery
JP7100258B2 (ja) * 2018-10-10 2022-07-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4763245A (en) * 1985-10-30 1988-08-09 International Business Machines Corporation Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction

Also Published As

Publication number Publication date
EP0480193A2 (en) 1992-04-15
US5353421A (en) 1994-10-04
JPH06324865A (ja) 1994-11-25
EP0480193A3 (en) 1994-09-14

Similar Documents

Publication Publication Date Title
JPH0820950B2 (ja) マルチ予測型分岐予測機構
US5210831A (en) Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5394530A (en) Arrangement for predicting a branch target address in the second iteration of a short loop
US5313634A (en) Computer system branch prediction of subroutine returns
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
EP0381444B1 (en) Branch prediction
US6957327B1 (en) Block-based branch target buffer
US9875106B2 (en) Computer processor employing instruction block exit prediction
US7493480B2 (en) Method and apparatus for prefetching branch history information
KR100333470B1 (ko) 세트 예측을 사용하여 세트 연상 캐시에서 대기 시간을감소시키기 위한 방법 및 장치
US5790823A (en) Operand prefetch table
US5297281A (en) Multiple sequence processor system
US7337271B2 (en) Context look ahead storage structures
JP2000215056A (ja) 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理
JPH08249181A (ja) ブランチ予測式データ処理装置および動作方法
US6910104B2 (en) Icache-based value prediction mechanism
US5634119A (en) Computer processing unit employing a separate millicode branch history table
US6742112B1 (en) Lookahead register value tracking
US5822577A (en) Context oriented branch history table
US5794027A (en) Method and apparatus for managing the execution of instructons with proximate successive branches in a cache-based data processing system
US6108776A (en) Globally or selectively disabling branch history table operations during sensitive portion of millicode routine in millimode supporting computer
MX2009001747A (es) Metodos y aparatos para reducir las busquedas en una memoria cache de direccion destino de saltos.
US20030163678A1 (en) Method and apparatus for reducing branch prediction table pollution
US5964870A (en) Method and apparatus for using function context to improve branch
US6978361B2 (en) Effectively infinite branch prediction table mechanism