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

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

Info

Publication number
JPH06324865A
JPH06324865A JP3252872A JP25287291A JPH06324865A JP H06324865 A JPH06324865 A JP H06324865A JP 3252872 A JP3252872 A JP 3252872A JP 25287291 A JP25287291 A JP 25287291A JP H06324865 A JPH06324865 A JP H06324865A
Authority
JP
Japan
Prior art keywords
branch
instruction
prediction
address
branch prediction
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
JP3252872A
Other languages
English (en)
Other versions
JPH0820950B2 (ja
Inventor
Philip G Emma
フィリップ・ジョージ・エマ
Joshua W Knight
ジョシュア・ウィルソン・ナイト
James H Pomerene
ジェームス・ハーバート・ポメレーヌ
Thomas R Puzak
トーマス・ロバーツ・プザック
Rudolph N Rechtschaffen
ルドルフ・ネイサン・リヒトシャーフェン
James R Robinson
ジェームス・ロバート・ロビンソン
Van Albert J Norstrand
アルバート・ジェームス・バン・ノーストランド,ジュニア
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 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/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)

Abstract

(57)【要約】 【目的】 条件付き分岐の結果を予測するマルチ予測型
分岐予測機構であり、分岐履歴テーブルの利点と、デコ
ード履歴テーブルの利点とを組合せてコンピュータ性能
の向上を図る。 【構成】 マルチ予測型分岐予測機構によって、条件付
き分岐の各々を、少なくとも2回予測するに当たり、最
初、パイプラインの命令フェッチ段階中に予測し、次
に、パイプラインのデコード段階中に予測する。この機
構によって、少なくとも2つの異なった分岐予測機構を
利用し、これらは互いに独立した機構である。一組のル
ールを利用して、これら予測における差を解決する。

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

    【特許請求の範囲】
  1. 【請求項1】フェッチした命令を一時記憶するメモリに
    接続された命令バッファと、この命令バッファに接続さ
    れ、命令バッファ内に一時記憶された命令をデコードす
    る命令デコード機構と、この命令デコード機構からのデ
    コードされた命令に応答して、前記メモリをアドレスす
    ることにより前記命令バッファへの命令をフェッチする
    アドレス生成機構と、前記命令デコード機構からのデコ
    ードされた命令に応答して、デコードされた命令に従っ
    て動作を実行する実行ユニットとを含むパイプラインプ
    ロセッサを有するコンピュータにおける分岐命令の結果
    を予測するマルチ予測型分岐予測機構において、 前記パイプラインプロセッサに接続され、前記パイプラ
    インのそれぞれ異なるステージにおいて分岐命令を独立
    して予測する少なくとも2個の独立した分岐予測機構
    と、 前記分岐予測機構に応答して、前記分岐予測機構の各々
    から得られた予測が互いに異なる場合にこれを解決する
    手段と、 前記実行ユニットに応答し、分岐命令の実行に基づい
    て、前記分岐予測機構を更新する手段とを備えたことを
    特徴とするマルチ予測型分岐予測機構。
  2. 【請求項2】前記少なくとも2つの独立した分岐予測機
    構の1つまたはそれ以上の機構が、 前記命令バッファおよび前記アドレス生成機構に接続さ
    れた命令フェッチ分岐機構を有し、この命令フェッチ分
    岐機構によって、採用された分岐の限定された履歴に基
    づいて初期分岐予測を生成し、目標アドレスを前記アド
    レス生成機構に供給することを特徴とする請求項1記載
    のマルチ予測型分岐予測機構。
  3. 【請求項3】前記少なくとも2つの独立した分岐予測機
    構の1つまたはそれ以上の機構が、前記命令デコード機
    構および前記命令分岐予測機構に接続されたデコード時
    分岐予測機構を有し、このデコード時分岐予測機構によ
    って、実行した分岐の履歴に基づいて分岐予測を生成す
    ることを特徴とする請求項1記載のマルチ予測型分岐予
    測機構。
  4. 【請求項4】前記少なくとも2つの独立した分岐予測機
    構が、 前記命令バッファと前記アドレス生成機構とに接続さ
    れ、採用された分岐の限定された履歴に基づいて初期分
    岐予測を生成し、目標アドレスを前記アドレス生成機構
    に供給する命令フェッチ分岐予測機構と、 前記命令デコード機構と前記命令フェッチ分岐予測機構
    とに接続され、実行した分岐の履歴に基いて分岐予測を
    生成するデコード時予測機構とを有することを特徴とす
    る請求項1記載のマルチ予測型分岐予測機構。
  5. 【請求項5】前記分岐予測機構に応答して、前記分岐予
    測機構の各々から得られた予測が互いに相違した場合
    に、これを解決する前記手段が、 前記命令フェッチ分岐予測機構からの前記初期分岐予測
    と、前記デコード時分岐予測機構からの前記分岐予測と
    を比較する比較手段と、 この比較手段に応答して、前記初期分岐予測と、デコー
    ド時分岐予測機構からの分岐予測との間で一致が発生し
    た時に、前記命令フェッチ分岐予測機構からの初期分岐
    予測を受入れるが、前記デコード時分岐予測機構からの
    分岐予測を選択し、前記初期分岐予測と前記分岐予測と
    が一致しない場合に、前記パイプラインを再始動するこ
    とによって、前記初期分岐予測を無効とする選択手段と
    を有することを特徴とする請求項4記載のマルチ予測型
    分岐予測機構。
  6. 【請求項6】前記命令フェッチ分岐予測機構が、分岐の
    目標アドレスが続く最近実行された一組の分岐が記憶さ
    れる分岐履歴テーブルを有し、前記デコード時分岐予測
    機構が、各分岐の動作の記録が記憶されるデコード履歴
    テーブルを有することを特徴とする請求項5記載のマル
    チ予測型分岐予測機構。
  7. 【請求項7】前記実行ユニットに応答して、分岐命令の
    実行に基いて前記分岐予測機構を更新する前記手段が、
    前記実行ユニット,分岐履歴テーブルおよびデコード履
    歴テーブルに接続され、これらテーブルに記憶された情
    報を分岐命令の実行に基づいて補正する補正処理機構を
    有することを特徴とする請求項6記載のマルチ予測型分
    岐予測機構。
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 1996-01-31

Publications (2)

Publication Number Publication Date
JPH06324865A true JPH06324865A (ja) 1994-11-25
JPH0820950B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754813B1 (en) 1999-08-24 2004-06-22 Fujitsu Limited Apparatus and method of processing information for suppression of branch prediction
JP2008542917A (ja) * 2005-06-02 2008-11-27 クゥアルコム・インコーポレイテッド 分岐命令を予測するための方法及び装置
JP2012173967A (ja) * 2011-02-21 2012-09-10 Nec Corp 分岐予測装置及び分岐予測方式
JP2020060946A (ja) * 2018-10-10 2020-04-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Families Citing this family (56)

* 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
SG52391A1 (en) * 1994-01-03 1998-09-28 Intel Corp Method and apparatus for implementing a four stage branch resolution system in a computer processor
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
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
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
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
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
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
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
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US6895498B2 (en) 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
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
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
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 富士通株式会社 分岐予測装置および分岐予測方法
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
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
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
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
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US8788797B2 (en) * 2010-12-22 2014-07-22 Advanced Micro Devices, Inc. Combined level 1 and level 2 branch predictor
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
US12204908B2 (en) * 2018-06-04 2025-01-21 Advanced Micro Devices, Inc. Storing incidental branch predictions to reduce latency of misprediction recovery
US20240427602A1 (en) * 2023-06-23 2024-12-26 Texas Instruments Incorporated Multi-condition branch instruction for conditional branch operations

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
DE3752100T2 (de) * 1986-01-07 1997-12-11 Nippon Electric Co Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754813B1 (en) 1999-08-24 2004-06-22 Fujitsu Limited Apparatus and method of processing information for suppression of branch prediction
JP2008542917A (ja) * 2005-06-02 2008-11-27 クゥアルコム・インコーポレイテッド 分岐命令を予測するための方法及び装置
JP2012173967A (ja) * 2011-02-21 2012-09-10 Nec Corp 分岐予測装置及び分岐予測方式
JP2020060946A (ja) * 2018-10-10 2020-04-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
EP0480193A2 (en) 1992-04-15
US5353421A (en) 1994-10-04
EP0480193A3 (en) 1994-09-14
JPH0820950B2 (ja) 1996-03-04

Similar Documents

Publication Publication Date Title
JPH06324865A (ja) マルチ予測型分岐予測機構
US5313634A (en) Computer system branch prediction of subroutine returns
KR100333470B1 (ko) 세트 예측을 사용하여 세트 연상 캐시에서 대기 시간을감소시키기 위한 방법 및 장치
US5394530A (en) Arrangement for predicting a branch target address in the second iteration of a short loop
EP0381444B1 (en) Branch prediction
JP5558814B2 (ja) プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
US6665776B2 (en) Apparatus and method for speculative prefetching after data cache misses
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
US5974543A (en) Apparatus and method for performing subroutine call and return operations
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US5210831A (en) Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5790823A (en) Operand prefetch table
US6055621A (en) Touch history table
US5297281A (en) Multiple sequence processor system
US20020023204A1 (en) Universal load address/value prediction scheme
JPH08249181A (ja) ブランチ予測式データ処理装置および動作方法
US6910104B2 (en) Icache-based value prediction mechanism
JPH06242949A (ja) キュー管理式命令キャッシュ
US10338923B2 (en) Branch prediction path wrong guess instruction
US5634119A (en) Computer processing unit employing a separate millicode branch history table
US5822577A (en) Context oriented branch history table
US6622241B1 (en) Method and apparatus for reducing branch prediction table pollution
US6108776A (en) Globally or selectively disabling branch history table operations during sensitive portion of millicode routine in millimode supporting computer
US5964870A (en) Method and apparatus for using function context to improve branch
US6978361B2 (en) Effectively infinite branch prediction table mechanism