JPH07210383A - 分岐命令予測機構及び予測方法 - Google Patents

分岐命令予測機構及び予測方法

Info

Publication number
JPH07210383A
JPH07210383A JP6340321A JP34032194A JPH07210383A JP H07210383 A JPH07210383 A JP H07210383A JP 6340321 A JP6340321 A JP 6340321A JP 34032194 A JP34032194 A JP 34032194A JP H07210383 A JPH07210383 A JP H07210383A
Authority
JP
Japan
Prior art keywords
branch
instruction
target buffer
buffer circuit
address
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
JP6340321A
Other languages
English (en)
Other versions
JP3548255B2 (ja
Inventor
Bradley D Hoyt
ブラッドレー・ディ・ホイト
J Hinton Glen
グレン・ジェイ・ヒントン
David B Papworth
デビッド・ビイ・パップワース
Ashwani K Gupta
アシュワニ・クマー・ガプタ
Michael A Fetterman
マイケル・アラン・フェッターマン
Subramanian Natarajan
サブラマニアン・ナタラヤン
Sunil Shenoy
サニル・シェノイ
Sa Reynold V D
レイノルド・ヴィ・ドサ
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JPH07210383A publication Critical patent/JPH07210383A/ja
Application granted granted Critical
Publication of JP3548255B2 publication Critical patent/JP3548255B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions

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)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】コンピュータ命令の流れの中の分岐命令を予測
する分岐目標バッファ回路を提供する。 【構成】分岐目標バッファ回路は、前に実行した分岐命
令についての分岐情報を記憶する分岐目標バッファ・キ
ャッシュを使う。分岐目標バッファ・キャッシュに記憶
された分岐情報は、各分岐命令の最後のバイトによって
アドレスされる。フェッチ・ユニットが命令のブロック
をフェッチするとき、フェッチ・ユニットは分岐目標バ
ッファ回路に命令ポインタを送る。命令ポインタに基づ
いて、分岐目標バッファ回路は、分岐目標バッファ・キ
ャッシュを調べ、フェッチされるブロックの中に分岐命
令があるかどうかチェックする。分岐目標バッファ回路
が分岐目標バッファ・キャッシュの中にやがて現れる分
岐命令を見つけると、分岐目標バッファ回路はフェッチ
・ユニットに対してその分岐命令について知らせる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はマイクロプロセッサ・ア
ーキテクチャの分野に関し、特に命令の流れの中の分岐
命令を予測する分岐目標バッファ回路に関する。
【0002】
【従来の技術】初期のマイクロプロセッサは一般に命令
を一時に1つ処理していた。各命令は次の4つの連続し
た段階を用いて処理されていた。すなわち、命令のフェ
ッチ、命令の解読、実行及び結果の書き込みである。こ
のようなマイクロプロセッサでは、別々の専用の論理ブ
ロックがそれぞれ異なった処理段階を実行していた。各
論理ブロックは動作開始前に、全ての前段の論理ブロッ
クが動作を終了するまで待っていた。
【0003】効率を向上させるため、設計者はマイクロ
プロセッサがいくつかの命令を同時に実行できるよう
に、フェッチ、解読、実行、書き込みの論理段階を重複
して行えるようにした。動作中、フェッチ、解読、実
行、書き込みの論理段階は異なった命令を同時に処理す
る。各クロック・サイクルで各処理段階の結果は次の処
理段階へ送られる。フェッチ、解読、実行、書き込み段
階を重複させる技術を使用したマイクロプロセッサは、
「パイプライン化した」マイクロプロセッサとして知ら
れている。ある種のマイクロプロセッサは更に各処理段
階を小段階に分割して更に効率の向上を計っている。こ
のようなプロセッサは「深くパイプライン化した」マイ
クロプロセッサと云われる。
【0004】パイプライン化したマイクロプロセッサが
効率よく動作するために、パイプラインの先頭にある命
令フェッチ・ユニットがマイクロプロセッサ命令の流れ
をパイプラインに連続的に供給しなければならない。し
かし、命令の流れの中にある条件命令のために、命令フ
ェッチ・ユニットが次の命令を分岐条件が完全に分析さ
れるまでフェッチすることができない。パイプライン化
されたマイクロプロセッサにおいて、分岐条件はその分
岐命令がマイクロプロセッサ・パイプラインの終わりに
近い命令実行段階に到達するまで完全には分析されな
い。従って、命令フェッチ・ユニットは、分岐条件が未
分析のため、次にどの命令をフェッチしたら良いかが分
からず立ち往生してしまう。
【0005】この問題を多少とも解決するために、多く
のパイプライン化したマイクロプロセッサは、命令の流
れにおいて分岐命令の存在と結論を予測する分岐予測機
構を使用している。命令フェッチ・ユニットは、次の命
令をフェッチするために分岐予測を使用する。例えば、
イェー(Yeh)及びパット(Patt)は高精度2段
階適用の分岐予測を導入した。(Tse Yu Yeh 及びYale
N. Patt による「Twolevel Adaptive Branch Predictio
n」第24回ACM/IEEEマイクロ・アーキテクチ
ャに関する国際シンポジュウム及びワークショップ(1
991年11月、51頁ー61頁)参照)。イェーとパ
ットの分岐予測機構は、収集した2段階の分岐歴に基づ
いて分岐予測を行う。
【0006】分岐予測機構が分岐命令の結論を予測し、
マイクロプロセッサがその予測された経路に沿って次の
命令を実行するとき、そのマイクロプロセッサは予測さ
れた命令経路に沿って「推論的に実行した」と云われ
る。推論的な実行を行っている間、マイクロプロセッサ
は、もし分岐予測が正しく行われれば、有効な処理を実
行する。しかし、もし分岐予測機構が間違って分岐命令
を予測すると、マイクロプロセッサは推論実行の命令を
まちがった経路で実行することになり、従って何も達成
しないことになる。マイクロプロセッサが最終的に誤っ
て予測された分岐を検出したとき、そのマイクロプロセ
ッサは、推論で実行した全ての命令を無視し、正しいア
ドレスで実行を再スターとしなければならない。分岐命
令がまちがって予測された場合、マイクロプロセッサは
何も達成しないことになるので、正確に分岐命令の予測
をすることが望ましい。このことは特に、誤った分岐予
測がなされる度毎に長いパイプライン命令が無視される
深くパイプライン化したマイクロプロセッサに関してう
なずけるのである。
【0007】
【発明が解決しようとする課題】従って、本発明の目的
は、命令の流れにおいて分岐命令の存在を正確に予測す
る分岐予測機構を提供することである。本発明の別の目
的は、命令の流れの中で予測された全ての分岐命令の分
岐結論を正確に予測することである。更に本発明の別の
目的は、「採択」と予測された全ての分岐命令に関する
分岐目標アドレスを正確に予測することである。
【0008】
【課題を解決するための手段】これらの目的及びその他
の目的は本発明の分岐目標バッファ回路によって達成さ
れる。本発明の分岐目標バッファ回路は、分岐目標バッ
ファ・キャッシュを備えている。分岐目標バッファ・キ
ャッシュは、前に実行された分岐命令に関する情報を記
憶する。分岐目標バッファ・キャッシュに格納された分
岐情報は各分岐命令の最後のバイトによってアドレスさ
れる。命令フェッチ・ユニットが命令のブロックをフェ
ッチするとき、命令フェッチ・ユニットは分岐目標バッ
ファ回路に命令ポインタを送る。この命令ポインタに基
づいて、分岐目標バッファ回路は、分岐目標バッファ・
キャッシュの中を見て、フェッチされるブロックの中に
分岐命令があるかどうか調べる。分岐目標バッファ回路
が分岐目標バッファ・キャッシュの中にやがて現れる分
岐命令を見つけると、分岐目標バッファ回路は命令フェ
ッチを担当する命令フェッチ・ユニットに対して知らせ
る。
【0009】
【実施例】コンピュータ・プロセッサにおける分岐目標
バッファ回路を実現する方法と装置が開示される。以下
の記述において、説明の目的で本発明の充分な理解のた
めに特定の術語が使われている。しかし、当業者には、
これらの具体的詳細は本発明を実施するために必要ない
ことは明白である。更に、本発明を不必要に不明瞭にし
ないために、良く知られた回路や装置はブロック・ダイ
アグラムの形で示されている。
【0010】パイプライン化したスーパースカラ・マイ
クロプロセッサ 深くパイプライン化したプロセッサにおいて、命令フェ
ッチ、命令解読、命令実行等の主段階は、各処理段階が
パイプライン化されるように異なったいくつかの小段階
に分割される。これは長い命令パイプラインにおいて生
ずる。例えば、図1は1つの特定の深くパイプライン化
したプロセッサを定義する1組のパイプライン段階を示
す。図1の命令パイプラインにおいて、命令処理は、1
1のパイプライン段階に分割されている。
【0011】図1を参照すると、最初の2段階のパイプ
ライン段階は、命令をフェッチするために使われてい
る。パイプ段階3は、命令長解読(ILD)を実行す
る。個々のマイクロプロセッサ命令は、パイプ段階4及
び5で解読される。次の3段階のパイプライン段階(レ
ジスタ・リネーム、スケジューリング、分配)は実行の
ための命令を準備する。最後に、マイクロプロセッサは
命令をパイプライン段階9で実行する。最後の2段階の
パイプライン段階は、実行された命令を撤収する。
【0012】マイクロプロセッサを効率良く動作させる
ために、図1の2段階の命令フェッチ・パイプライン段
階は、マイクロプロセッサ命令の流れを連続的にフェッ
チしなければならない。各フェッチされた命令は、その
命令がパイプライン段階9(すなわち実行段階)に到達
するまで完全には実行されない。命令の流れの中にある
分岐命令は、しばしば、分岐目標アドレスと呼ばれる連
続しないアドレスでマイクロプロセッサに命令を実行す
るように仕向ける。パイプライン化したマイクロプロセ
ッサが分岐命令に出会うと、その分岐命令はまだ解読さ
れないか或いは実行されてないので、命令フェッチ段階
は直ちにその分岐に対して反応することができない。従
って、分岐命令は、マイクロプロセッサが推論的に実行
した命令を後で捨て去り、訂正されたアドレスで再スタ
ートしなければならないような、まちがった経路での推
論的実行をマイクロプロセッサにさせる可能性がある。
【0013】このような状況を防止するため、多くのパ
イプライン化したマイクロプロセッサは、命令の流れの
中の分岐命令を予測する分岐予測機構を採用している。
更に、このような分岐予測機構は、分岐命令の結論と分
岐目標アドレスを予測する。図1に示すパイプラインの
ような深いパイプラインを有するマイクロプロセッサに
おいて分岐命令を予測するため、本発明は、命令の流れ
の中で分岐命令の存在を予測する分岐目標バッファ回路
を備えている。本発明の分岐目標バッファ回路は、深く
パイプライン化したスーパースカラ・マイクロプロセッ
サの状況の中で開示されている。しかし、開示された分
岐目標バッファ回路の個々の機構が異なったアーキテク
チャの別のマイクロプロセッサにおいても実現できるこ
とは、当業者には明らかであろう。
【0014】図2は、図1に示す深いパイプラインを実
現する深くパイプライン化したスーパースカラ・マイク
ロプロセッサの主な論理回路をブロック・ダイアグラム
の形で表している。図2に示すマイクロプロセッサの概
略を説明し、続いて命令の流れの中で分岐命令の存在を
予測する分岐目標バッファ回路40について詳しく説明
する。
【0015】図2のブロック・ダイアグラムの一番上に
メモリ及びバス論理35がある。メモリ及びバス論理3
5は、情報をマイクロプロセッサへ入力し、マイクロプ
ロセッサから情報を出力することを担当する。メモリ及
びバス論理35は、通常先ず高速キャッシュ・メモリへ
入力或いは高速キャッシュ・メモリから格納しようとす
る。もしキャッシュ・メモリが使えなければ(恐らくキ
ャッシュ・ミスによる)、メモリ及びバス論理35は代
わって外部バスを通して主メモリをアクセスする。
【0016】メモリ及びバス論理35には命令フェッチ
・ユニット30が結合されている。この命令フェッチ・
ユニット30は、実行のため連続して新しいマイクロプ
ロセッサ命令(マイクロ命令とも呼ばれる)とオペラン
ドをフェッチすることを担当する。命令フェッチ・ユニ
ット30は、命令ポインタ(IP)を使って現在のフェ
ッチ・アドレスを維持する。フェッチされたマイクロプ
ロセッサ命令は命令パイプラインの先頭に供給される。
【0017】命令の流れの中の単純な無条件分岐命令
は、命令フェッチ・ユニット30が連続経路に沿って単
純に命令をフェッチすることを防止する。更に、命令の
流れの中の条件分岐命令は、分岐条件が分析され、フェ
ッチ経路が決定されなければならないので、命令フェッ
チ・ユニット30が所定の経路に沿って単純に命令をフ
ェッチすることを防止する。正しい命令のフェッチを支
援するため、命令フェッチ・ユニット30は分岐目標バ
ッファ回路40に問い合わせる。分岐目標バッファ回路
40は、命令の流れの中の分岐命令の存在を予測し、予
測された分岐命令の結論を予測する。分岐目標バッファ
回路40は、分岐予測情報を、命令フェッチ・ユニット
30が適切な命令をフェッチできるように、命令フェッ
チ・ユニット30に返送する。
【0018】命令フェッチ・ユニット30が各マイクロ
プロセッサ命令をフェッチした後、命令フェッチ・ユニ
ット30は、各マイクロプロセッサ命令を命令解読器6
0に渡す。もし、分岐目標バッファ回路40が命令に関
する分岐予測を行うと、命令フェッチ・ユニット30は
また、その命令に関する分岐目標バッファ回路の分岐予
測を命令解読器60に渡す。
【0019】命令解読器60は、どのタイプのマイクロ
プロセッサ命令を受け取ったかを判定し、マイクロプロ
セッサ命令を関連するオペランドと共に1つ以上のマイ
クロ演算(以後マイクロ・オペという)に分解する。マ
イクロプロセッサ命令に対応する1つ以上のマイクロ・
オペは、対応するマイクロプロセッサ命令の機能を実行
する。
【0020】もし命令解読器60が、受け取ったマイク
ロプロセッサ命令が分岐命令であると判定すると、命令
解読器60は、その分岐命令を記述する情報を特別の処
理を行うために分岐アドレス計算器50へ送る。もし分
岐目標バッファ回路40が、その分岐命令に対して分岐
予測を行っていたとすれば、分岐アドレス計算器50
は、できれば命令解読器60から受け取った分岐情報を
使ってその分岐予測を検証する。もし分岐目標バッファ
回路40が、その分岐命令に対して分岐予測を行ってい
なければ、分岐アドレス計算器50は、命令解読器60
から受け取った分岐情報を使ってその分岐命令に対する
分岐予測を行う。分岐アドレス計算器50が分岐命令の
処理を完了した後、分岐アドレス計算器50は処理され
た分岐情報を命令解読器60に返す。
【0021】命令解読器60がマイクロプロセッサ命令
を1組のマイクロ・オペに分解した後、命令解読器60
はそのマイクロ・オペと関連オペランドをアロケータ7
0へ送る。アロケータ70は、各マイクロ・オペを実行
するのに必要なプロセッサ資源を割り当てる。
【0022】本実施例において、マイクロプロセッサは
元のプログラムの順序からはずれてマイクロ・オペを実
行できるスーパースカラ・プロセッサである。しかし、
適切にそのコンピュータ・プログラムを実行するため
に、実行されたマイクロ・オペは、最終的には元のプロ
グラムの順序に戻されなければならない。元のプログラ
ム順序を維持するため、マイクロプロセッサはマイクロ
・オペの結果データを元のプログラム順序で格納するリ
オーダ・バッファ83を使用する。
【0023】図3はリオーダ・バッファ83を示す。図
3のリオーダ・バッファ83は、n個の記述欄を有する
循環バッファからなっており、各記述欄は、実行された
マイクロ・オペの結果を格納するために使われる。リオ
ーダ・バッファ83の各記述欄は、マイクロ・オペの結
果データを物理的に格納する行き先を提供するので、リ
オーダ・バッファの各記述欄は物理的行き先(pDs
t)と呼ばれる。リオーダ・バッファ83内のpDst
は、0からn−1までの番号が付けられている。図3を
参照すると、リオーダ・バッファ83のpDstは、マ
イクロ・オペの結果が有効かどうかを示す有効ビット、
マイクロ・オペの結果、マイクロ・オペによって影響さ
れた1組のフラグ、フラグに対するマスク、結果が何を
意味するかを示すコード及び誤りデータを含む。
【0024】各マイクロ・オペに関して、マイクロ・オ
ペの結果を格納するため、アロケータ70は、リオーダ
・バッファ83に次に使用可能なpDstを割り当て
る。マイクロ・オペを受け取ったのと同じ順序でリオー
ダ・バッファ83内に連続してpDstを割り当てるこ
とによって、マイクロ・オペの結果の元のプログラム順
序が維持される。
【0025】アロケータ70がpDstを分岐命令に関
する分岐マイクロ・オペに対してリオーダ・バッファ8
3内に割り当てるとき、同様に分岐目標バッファ回路4
0にある分岐IPテーブル(BIT)43と呼ばれる照
合入力欄がバッファ内に割り当てられる。命令解読器6
0は、それから分岐目標バッファ回路40に対して、分
岐命令の直ぐ後に続く命令のアドレスとプロセッサの状
態値を送る。分岐目標バッファ回路40は、分岐命令の
直ぐ後に続く命令のアドレスとプロセッサの状態値を分
岐IPテーブル(BIT)43に書き込む。分岐IPテ
ーブル(BIT)43に格納されたこの情報は、分岐実
行ユニットが分岐マイクロ・オペを実行した後で使われ
る。
【0026】アロケータ70はまた、各マイクロ・オペ
に関するマイクロ・オペ命令とオペランド・データを格
納する予約ステーション(RS)81に1つの記述欄を
割り当てる。各予約ステーション81の記述欄は、その
予約ステーション81の記述欄が有効かどうかを示す有
効ビット、マイクロ・オペ命令コード、2つのソース・
データ・フィールド、ソース・データ・フィールドに対
する2つの有効ビット、もしソース・データが有効でな
いときそのソース・データがどこから来たかを示す2つ
の物理的ソース・フィールド、及びマイクロ・オペの結
果の物理的行き先を格納する。アロケータ70が予約ス
テーションの記述欄とリオーダ・バッファ83のpDs
tを割り当てた後、各マイクロ・オペは予約ステーショ
ン81の記述欄でマイクロ・オペが実行されるのを待
つ。
【0027】予約ステーション81の記述欄にある各マ
イクロ・オペは、マイクロ・オペを実行するのに必要な
全てのソース・データが得られ、マイクロ・オペを実行
する実行ユニットが用意できるまで予約ステーション8
1の入力欄に止まっている。マイクロ・オペに関して必
要な全てのソース・データが用意でき、実行ユニットが
使用可能になったとき、予約ステーション81は、マイ
クロ・オペを実行論理回路90の中の実行ユニットへ分
配する。本実施例において、実行論理回路90内に4つ
の実行ユニット(EU1 91、EU2 92,EU3
93及びEU4 94)がある。実行ユニットがマイ
クロ・オペを実行した後、その実行ユニットは、結果デ
ータ、アーキテクチャ上のフラグ、及び誤り情報をアロ
ケータ70がそのマイクロ・オペに対して割り当てたリ
オーダ・バッファ83のpDstに書き込む。
【0028】本実施例において、実行ユニット92は分
岐実行ユニットとして指定されている。分岐実行ユニッ
ト92は、各分岐マイクロ・オペに関して最終的分岐決
定の結論と最終的分岐目標アドレスを決定する。分岐実
行ユニット92は、この最終分岐結論及び分岐目標アド
レスとを予測された分岐結論及び目標アドレスと比較す
る。もし分岐実行ユニット92が分岐予測の誤りを検出
すると、分岐実行ユニット92は、分岐予測誤りを訂正
する1組の行動を開始する。従って、分岐実行ユニット
92は分岐分析機構の第3の段階を有する。
【0029】最後に、撤収回路85は、リオーダ・バッ
ファ83のpDstに格納されている結果を各実行され
たマイクロ・オペから撤収する。撤収回路85は、リオ
ーダ・バッファ83のpDstを順番に調べて、アロケ
ータ70がpDstを割り当てたときと同じ順序でリオ
ーダ・バッファ83のpDstを撤収させる。撤収回路
85は、現在約束されたアーキテクチャ上の状態を格納
する実レジスタ・ファイル(RRF)84へマイクロ・
オペの結果を転送することによってpDstを撤収させ
る。アロケータ70が、リオーダ・バッファ83のpD
stを元のプログラム順に割り当て、撤収回路85がリ
オーダ・バッファ83のpDstのマイクロ・オペの結
果を同じ順序で撤収するので、仮にマイクロ・オペが元
のプログラム順序からはずれて実行されたとしても元の
プログラム順序は維持される。
【0030】図3を参照すると、マイクロ・オペを撤収
させるために、撤収回路はリオーダ・バッファのpDs
t記述欄の有効ビット201をテストし、そのpDst
が実行されたマイクロ・オペの有効な結果を持っている
かどうか調べる。もしそのpDstの有効ビット201
がセットされていれば、撤収回路はpDstの誤りフィ
ールド206をチェックして誤りを処理しなければなら
ないかどうか調べる。もしリオーダ・バッファのpDs
t記述欄が有効なマイクロ・オペ実行結果を持ってお
り、誤り問題がなければ実行されたマイクロ・オペの結
果は、実レジスタ・ファイル(RRF)84の永久アー
キテクチャ状態に入れられる。
【0031】撤収回路85が分岐マイクロ・オペを撤収
しようとするとき、撤収回路85はpDst記述欄の誤
りフィールド206をテストし、分岐マイクロ・オペが
誤って予測されたかどうか調べる。もし撤収回路が、マ
イクロ・オペが誤って予測されたことを検出すると、撤
収回路85は、リオーダ・バッファ83にある残りの命
令を捨て去る。これは、これらの命令は誤った分岐予測
が行われた後フェッチされたためである。
【0032】分岐目標バッファ回路の概観 前述のマイクロ・プロセッサ概観の節で述べたように、
命令フェッチ・ユニット30は、命令をマイクロ・プロ
セッサへフェッチしてくることを担当する。図2のマイ
クロ・プロセッサの命令フェッチ・ユニット30は、メ
モリ・アドレス空間を命令フェッチ・ユニット30が命
令とオペランドを16バイトのブロックでフェッチする
整列した16バイト・ブロックの集合とみなす。図4
は、アドレス空間が整列した16バイト・ブロックに分
割されたメモリ・マップを示す。命令フェッチ・ユニッ
ト30は、命令ポインタを使って現在のフェッチ・アド
レスを維持する。コード中に分岐命令がない場合、命令
フェッチ・ユニット30は、隣接した16バイト・ブロ
ックを順次フェッチすることによって、命令及ぶオペラ
ンドをフェッチする。
【0033】命令の流れの中で分岐命令の存在を予測す
るために、図2のマイクロプロセッサは分岐目標バッフ
ァ回路40を採用している。分岐目標バッファ回路40
は、マイクロプロセッサが前に実行した分岐命令に関す
る情報を有する分岐目標バッファ・キャッシュ41を備
えている。分岐目標バッファ回路40は、その分岐目標
バッファ・キャッシュ41の情報を使って分岐命令を認
識し、分岐命令の結論を予測する。
【0034】分岐目標バッファ回路40はまた、現在マ
イクロプロセッサ内にある分岐命令に関する情報を有す
る分岐IPテーブル(BIT)43を有する。分岐IP
テーブル43の情報は、誤って予測された分岐命令を訂
正し、分岐命令が実行された後分岐目標バッファ・キャ
ッシュ41を維持するために使われる。
【0035】図5は、どのように分岐目標バッファ回路
40が、図2のマイクロプロセッサの他の主な論理回路
と相互に作用するかを示すブロック・ダイアグラムであ
る。命令フェッチ・ユニット30は、命令ポインタを分
岐目標バッファ回路40に送ることによって分岐目標バ
ッファ回路40から到達すべき分岐命令に関する情報を
要求する。分岐目標バッファ回路40へ送られる命令ポ
インタは、命令フェッチ・ユニット30によって現在フ
ェッチされているメモリ・ブロックを指す。
【0036】分岐目標バッファ回路40は、分岐目標バ
ッファ・キャッシュ41をサーチし、命令フェッチ・ユ
ニット30によって現在フェッチされているメモリ・ブ
ロックにある分岐命令に関する情報を探す。分岐目標バ
ッファ回路40は、分岐目標バッファ・キャッシュ41
内で見つかった命令フェッチ・ユニット30によって現
在フェッチされているメモリ・ブロック内にある分岐命
令に関する分岐予測を行う。分岐目標バッファ回路40
は、分岐予測情報を命令フェッチ・ユニット30へ送
り、命令フェッチ・ユニット30に対して、現在命令フ
ェッチ・ユニット30によってフェッチされているメモ
リ・ブロック内にある分岐命令について知らせる。分岐
目標バッファ・キャッシュ41及び分岐IPテーブル4
3を維持するために、分岐目標バッファ回路40は、マ
イクロプロセッサ内の他のいくつかの論理回路から情報
を受け取る。
【0037】図5を参照すると、命令解読器60は分岐
情報を分岐目標バッファ回路40へ送る。命令解読器6
0から送られる分岐情報は、その分岐命令の直ぐ後に続
く命令のアドレスを含む。分岐目標バッファ回路40
は、後で使うため、分岐命令の直ぐ後に続く命令のアド
レスを分岐IPテーブル43に格納する。
【0038】分岐アドレス計算器50は、分岐目標バッ
ファ回路40によって行われた分岐予測を検証する。も
し分岐アドレス計算器50が、分岐目標バッファ回路4
0が存在しない分岐について予測したと判定すれば、分
岐アドレス計算器50は分岐目標バッファ回路40に対
して、存在しない分岐命令を含む分岐目標バッファ・キ
ャッシュ41の記述欄を取り除くように指示する。
【0039】アロケータ70は、リオーダ・バッファ8
3を各マイクロ・オペに対して割り当てるのを担当す
る。アロケータ70が、分岐マイクロ・オペに関してリ
オーダ・バッファ83のpDst記述欄を割り当てると
き、アロケータ70は、pDstの記述欄番号を分岐目
標バッファ回路40に提供する。分岐目標バッファ回路
40は、pDst記述欄番号を、分岐IPテーブル43
の対応する記述欄を割り当てるために使用する。分岐I
Pテーブル43の対応する記述欄は、分岐マイクロ・オ
ペがマイクロプロセッサ内に存在する間、その分岐マイ
クロ・オペについての情報を記憶する。
【0040】予約ステーション81は、実行を待ってい
るマイクロ・オペを記憶し、用意ができたマイクロ・オ
ペをマイクロプロセッサ内の実行ユニットへ分配する。
予約ステーション81が分岐マイクロ・オペを実行ユニ
ット92へ分配するとき、予約ステーション81は、分
岐目標バッファ回路に対して分岐マイクロ・オペに関す
るpDst記述欄について知らせる。分岐目標バッファ
回路40は、分岐IPテーブル43の分岐命令に関する
対応する記述欄を読み出すことによって応答する。分岐
IPテーブル43の記述欄から読み出された情報は、分
岐マイクロ・オペが実行した後で使われる。
【0041】分岐実行ユニット92は、マイクロプロセ
ッサに関する分岐マイクロ・オペを実行する。分岐実行
ユニット92が分岐マイクロ・オペを実行するとき、分
岐実行ユニット92は、分岐分析情報を分岐目標バッフ
ァ回路40に提供する。分岐目標バッファ回路40は、
分岐分析情報を使って、分岐目標バッファ・キャッシュ
41の既存の記述欄を更新するか或いは、分岐目標バッ
ファ・キャッシュ41に新しい記述欄を割り当てる。
【0042】分岐目標バッファ・キャッシュ 分岐目標バッファ回路40は、分岐目標バッファ・キャ
ッシュ41を維持し、命令の流れの中の分岐命令の存在
とこれら分岐命令の結論を予測する。分岐目標バッファ
・キャッシュ41は、マイクロプロセッサが前に実行し
た分岐命令に関する情報を有する。図6は、分岐目標バ
ッファ・キャッシュ41の構成を示す。
【0043】分岐目標バッファ・キャッシュ41は、メ
イン・メモリに配置された分岐命令についての情報を記
憶するセット・アソシアティブ・キャッシュである。本
実施例において、分岐目標バッファ・キャッシュ41
は、分岐命令についての情報を分岐情報の128個の別
々の「セット」で記憶する。分岐目標バッファ・キャッ
シュ41の分岐情報の各セットは、4個の分岐エントリ
を有し、各分岐エントリは、マイクロプロセッサが前に
実行した単一の分岐命令についての情報を保有する。
【0044】分岐目標バッファ・キャッシュ41内の分
岐エントリの各セットはまた、分岐パターン・テーブル
421及び一対の疑似最近置換(Pseudo-Least Recentl
y Replaced(PLRR))ビット420を含む。分岐目標バッ
ファ回路40は、分岐エントリのセットの中の条件分岐
命令の結論を予測するために分岐パターン・テーブル4
21を使う。分岐目標バッファ回路40は、疑似最近置
換(PLRR)ビット420を使って、新しい分岐につ
いての情報が分岐エントリのセットに書かれるときに分
岐エントリを選択する。
【0045】図7は、分岐目標バッファ・キャッシュ4
1のセットの各分岐エントリ内に格納された分岐情報を
示す。図7に示すように、各分岐エントリは、短縮タグ
・アドレス401、ブロック・オフセット402、分岐
タイプ403、真の分岐歴404、推論分岐歴405、
推論ビット406、有効ビット407及び分岐目標アド
レス408を含む。
【0046】短縮タグ・アドレス401及びブロック・
オフセット402は、分岐エントリと関連する分岐命令
のメモリ・アドレスを識別するために使われる。短縮タ
グ・アドレス401は、分岐命令の最上位21ビットの
圧縮された9ビット表現である。
【0047】ブロック・オフセット値402は、分岐命
令の最後のバイトの16バイト・メモリ・ブロック・ア
ドレスの中のバイト・オフセットを表す。分岐命令は最
後のバイトで索引され、ブロックの境界分岐命令の全て
のバイトが分岐予測を行う前にフェッチされる。例え
ば、図4のメモリ・マップを再び参照すると、4バイト
長の分岐命令がヘキサデシマル・アドレス1Eないし2
1で示されている。実行後、4バイトの分岐命令は分岐
目標バッファ・キャッシュ41内の記述欄に置かれ、ヘ
キサデシマル・アドレス21と関連される。従って、そ
の分岐命令に対する分岐エントリのブロック・オフセッ
ト402は1にセットされる。
【0048】逆に、もし分岐命令が最初のバイト(ヘキ
サデシマル1E)で索引されるとすると、分岐目標バッ
ファ回路40は命令フェッチ・ユニット30に対して分
岐命令を構成する全てのバイトがフェッチされる前に分
岐目標アドレスからフェッチするように指示する。従っ
て命令解読器60及び分岐実行ユニット92は、全体の
分岐命令がフェッチされないので、分岐命令を検証する
ことができない。
【0049】各分岐エントリの分岐タイプ・フィールド
403は、どのタイプの分岐命令を分岐エントリが識別
するかを指定する。表1は異なったタイプの分岐命令を
リストしたものである。
【0050】
【0051】分岐目標バッファ回路40は、異なった分
岐命令に対しては異なった分岐予測機構が使われるの
で、分岐予測をするとき分岐タイプ・フィールド403
を使う。例えば、分岐目標バッファ回路40は、分岐命
令歴に基づいて条件分岐命令の結論を予測する。分岐目
標バッファ回路40は、無条件分岐命令を常に「採択」
と予測する。
【0052】図7の真の分岐歴フィールド404は、分
岐実行ユニット92によって決定された「採択(take
n)」か「不採択(not-taken )」かの分岐命令歴を維
持する。真の分岐歴フィールド404は、最後の4回の
分岐命令の履歴を4ビットを使って記憶する。この4ビ
ットは、それぞれ「0」のとき「不採択」、「1」のと
き「採択」を示す。4ビットの「採択」(taken )、
「不採択」(not-taken )の履歴は、分岐予測を計算す
るとき、パターン状態テーブルを索引するのに使われ
る。これは分岐実行における分岐結論に基づく。
【0053】推論ビット406及び推論的分岐歴フィー
ルド405は、分岐命令の実行を待たずに分岐命令の予
測を行うのに使われる。図7の推論的分岐歴フィールド
405は、分岐目標バッファ回路40によって行われた
最後の4回の分岐予測に関する分岐命令の推論的「採
択」(taken )、「不採択」(not-taken )の履歴を維
持する。推論ビット406は、推論的分岐歴フィールド
405が有効推論歴を含むときセットされる。推論的分
岐歴405の4ビットは、分岐予測を計算するときパタ
ーン状態テーブルを索引するのに使われ、推論ビット4
06がセットされる。推論的分岐歴を使った分岐命令の
予測に関する詳細については、1993年5月14日出
願の米国特許出願第08/062,012号「分岐目標
バッファにおける推論歴機構を参照されたい。」
【0054】有効ビット407は、分岐エントリが有効
分岐情報を含むかどうかを示す。分岐目標バッファ回路
40が、分岐エントリを割り当て、記入するとき、分岐
目標バッファ回路40は、そのエントリに対する有効ビ
ット407をセットし、そのエントリが有効分岐情報を
有することを示す。後で、分岐アドレス計算器50がそ
の分岐エントリを取り除くとき、取り除かれるエントリ
の有効ビットはクリアされる。
【0055】図7の分岐目標アドレス・フィールド40
8は、分岐命令がサブルーチンからの戻り命令以外の場
合、分岐命令に対する分岐目標アドレスを記憶する。も
し分岐目標バッファ回路40が、分岐エントリに関する
分岐命令が「採択」であると予測すると、分岐目標アド
レス・フィールド408のアドレスは命令フェッチ・ユ
ニット30に送って、命令フェッチ・ユニット30に次
の命令をどこからフェッチすれば良いかを知らせる。
(しかし、分岐目標アドレス・フィールド408は常に
目標アドレスを予測するために使われるわけではな
い)。分岐目標アドレス・フィールド408の上位28
ビットは、もし分岐が行われれば命令フェッチ・ユニッ
ト30がフェッチすべき16バイト・ブロックを選択す
る。分岐目標アドレス・フィールド408の最下位4ビ
ットは、マイクロプロセッサが実行を再開すべきフェッ
チされたブロックの中のバイトを選択する。
【0056】分岐目標バッファ・キャッシュを用いた分
岐命令の予測 命令フェッチ・ユニット30は、命令ポインタを分岐目
標バッファ回路40に送ることによって、やがて現れる
分岐命令についての情報を要求する。図8は、やがて現
れる分岐命令に関する分岐目標バッファ・キャッシュ4
1をサーチするとき、分岐目標バッファ回路40によっ
て実行されるステップを示している。ステップ101
で、分岐目標バッファ回路40は、命令フェッチ・ユニ
ット30から命令ポインタを受け取る。
【0057】ステップ102で、分岐目標バッファ回路
40は、命令ポインタを使って分岐目標バッファ・キャ
ッシュ41から4つの分岐エントリのセットを読み出
す。分岐目標バッファ回路40がどのように命令ポイン
タを使うかを明確にするため、図9(a)は分岐目標バ
ッファ・キャッシュ41が分岐命令のアドレスを識別す
るのに使う32ビットの命令ポインタ・アドレスの個々
のビットを示している。アドレスの上位28ビットはメ
モリ・ブロックを識別する。アドレスの最下位4ビット
は16バイト・ブロックのオフセット位置を示す。分岐
目標バッファ・キャッシュ41において、各エントリ
は、16バイト・ブロック内で関連する分岐命令の最後
のバイトを突き止めるブロック・オフセットを含む。
【0058】メモリ・ブロックを識別するアドレスの上
位28ビットは、2つの別々のセクションに分割され
る。最上位21ビット(ビット11から31まで)は、
分岐目標バッファ・キャッシュ41における各分岐エン
トリに関連するタグを表す。残りの7ビット(ビット4
から10まで)は、分岐目標バッファ・キャッシュ41
内の分岐エントリのセットを識別する「セット・ビッ
ト」である。
【0059】分岐目標バッファ回路40は、命令ポイン
タの7ビット(ビット4から10まで)を使って分岐目
標バッファ・キャッシュ41を索引し、分岐エントリの
セットを選択する。分岐目標バッファ回路40は、それ
から選択された分岐エントリのセットを読み出す。
【0060】ステップ103で、分岐目標バッファ回路
40は、選択されたセット内の4つの分岐エントリを検
査し、4つの分岐エントリのどれかが、命令ポインタに
よって指定された16バイト・ブロックの中に分岐命令
に関する情報を含んでいるかどうか判定する。具体的に
は、分岐目標バッファ回路40は、命令ポインタ・アド
レスの上位21ビットの9ビット圧縮バージョンを各分
岐エントリの短縮タグ・フィールド401と比較し、合
致しない分岐エントリを除外する。
【0061】分岐目標バッファ・キャッシュ41を構成
するのに必要なダイ領域を削減するため、分岐目標バッ
ファ・キャッシュ41の各分岐エントリは、圧縮された
タグ・アドレスを記憶する。望ましい実施例において、
正規の21ビット・タグ値は、タグを9ビットに削減す
る短縮機構を通される。タグ・アドレスの圧縮はいくら
かの情報を失い、エイリアシングを引き起こすことがあ
る。圧縮タグによって起こったエイリアシングは、たま
に分岐予測誤りを起こすことがある。しかし、分岐予測
誤りは、最終的には、マイクロプロセッサの分岐アドレ
ス計算器50又は分岐実行ユニット92によって治され
る。
【0062】本発明の分岐目標バッファ回路40は、2
つの異なった短縮機構を使ってタグ・アドレスを圧縮す
る。両方の短縮機構は、正規の21ビット・タグ・アド
レスを9ビットの短縮タグに縮める。マイクロプロセッ
サの機械固有レジスタ(MSR)は、2つのタイプの短
縮機構のうちから1つを選択する。
【0063】図9(b)は、第1の短縮機構の動作を示
す。第1の短縮機構は、正規のタグ・アドレスの最上位
2ビット(ビット30及び31)と正規のタグ・アドレ
スの最下位7ビット(ビット11から17まで)を連結
して9ビットの短縮タグを生成する。この第1の短縮機
構は、通常下位7ビットが有用である極所的ジャンプを
行い、たまに最上位2ビットが有用となる遠くオペレー
ティング・システム・ルーチンへジャンプするプログラ
ムに関してうまく働く。
【0064】図9(a)は、第2の短縮機構の動作を示
す。第2の短縮機構は、正規のタグ・アドレスの最上位
2ビット(ビット30及び31)、正規のタグ・アドレ
スの次の16ビット(ビット14から29まで)の4ビ
ット排他的論理和(XOR)の組み合わせ及び正規のタ
グ・アドレスの最下位3ビット(ビット11から13ま
で)を連結して9ビット短縮タグを生成する。4ビット
排他的論理和(XOR)組み合わせは、中間の16ビッ
ト(ビット14から29まで)を図9(c)に示すよう
に4つのグループにまとめて組み合わせることによって
生成される。この第2の短縮機構は、全てのタグ・ビッ
トが考慮されているので、どこへでもジャンプするプロ
グラムに対してうまく働く。最上位2ビット(ビット3
0及び31)は、現アドレスから遠くはなれたオペレー
ティング・システム・ルーチンに対する呼び出し(cal
l)を検出するため、そのまま保持されることに留意さ
れたい。
【0065】分岐目標バッファ・キャッシュ41を検査
するとき、分岐目標バッファ回路40は、現命令ポイン
タの上位21ビットを短縮機構に通し、短縮命令ポイン
タ値を選択されたセットの4つの分岐エントリにある短
縮タグ・フィールド401と比較する。分岐目標バッフ
ァ回路40は、現短縮命令ポインタの値と一致しない短
縮タグ・フィールド401を有する分岐エントリを除外
する。
【0066】ステップ104で、分岐目標バッファ回路
40は、現命令ポインタよりも前にある分岐命令を識別
する選択されたセットの分岐エントリを除外する。例え
ば、図4のメモリ・マップを参照すると、4バイト長の
分岐命令がヘキサデシマル・アドレス1E〜21に示さ
れている。ヘキサデシマル・アドレス1Eから21の分
岐命令は、分岐目標バッファ・キャッシュ41の分岐エ
ントリに置かれており、ヘキサデシマル・アドレス21
と関連している。これはヘキサデシマル・アドレス21
がその分岐命令の最後のアドレスであるからである。従
って分岐エントリのブロック・オフセット・フィールド
402は1にセットされる。もし現命令ポインタがヘキ
サデシマル・アドレス23を指しているとすれば、分岐
目標バッファ回路40は、ブロック・オフセット・フィ
ールド402の3未満の値を有する全ての分岐エントリ
を除外し、ヘキサデシマル・アドレス21の分岐命令に
関する分岐エントリはもはや考慮されない。
【0067】残りの分岐エントリは、現分岐ポインタに
よって指定された16バイト・ブロック内の分岐命令を
記述し、現分岐ポインタの後にある。ステップ105
で、分岐目標バッファ回路40は、残りの分岐エントリ
のブロック・オフセット・フィールド402を使って残
りの分岐エントリを整理する。分岐目標バッファ回路4
0は、もし「採択された」分岐命令があれば、残りの整
理された分岐エントリから最初の「採択された」分岐命
令を選択する。残りの整理された分岐エントリから最初
の「採択された」分岐命令を選択するため、分岐目標バ
ッファ回路40は、選択されたセットの中の全ての残り
の分岐エントリに対して分岐結論予測を行わなければな
らない。
【0068】分岐結論及び分岐目標アドレスの予測 各エントリに対する分岐結論予測を行うために、分岐目
標バッファ回路40は、先ず分岐タイプ・フィールド4
03を読む。分岐目標バッファ回路40は、どのタイプ
の分岐命令が予測されるのかによって異なった分岐予測
を行う。
【0069】分岐タイプ・フィールドは、予測される分
岐命令が条件分岐、無条件分岐、サブルーチンの呼び出
し分岐、或いはサブルーチンからの戻り分岐のどれであ
るかを示す。サブルーチン呼び出し及びサブルーチンか
らの戻り分岐命令は、無条件分岐命令の特定のタイプだ
が、これらは2つの異なったタイプとしてマークされて
いる。分岐目標バッファ回路40は、サブルーチン呼び
出し及びサブルーチンからの戻り分岐命令を、これら2
つのタイプの分岐命令が予測されると分岐目標バッファ
回路40が特別の動作を行うので、異なったタイプとし
てマークする。
【0070】表2は分岐目標バッファ回路40がどのよ
うにして分岐目標バッファ・キャッシュ41に記憶され
た4つのタイプの分岐命令に対する分岐結論と目標アド
レスを予測するかをまとめたものである。
【0071】
【0072】表2で述べたように、条件分岐命令以外の
全ての分岐命令は、「採択」と予測される。条件分岐命
令の結論を予測するため、分岐目標バッファ回路40
は、イェ−及びパットの2段階適用分岐予測機構を使う
(Tse Yu Yeh 及びYale N. Patt による「2段階適用分
岐予測」(1991年11月第24回ACM/IEEマ
イクロ・アーキテクテャに関する国際シンポジュウム及
びワークショップ)51頁から61頁を参照)。イェー
及びパットの2段階分岐予測機構は、2段階の分岐歴を
ダイナミックに維持する。
【0073】2段階の分岐予測機構において維持される
第1段階の分岐歴は、各分岐エントリ内に記憶された
「採択」、「不採択」の履歴である。例えば、「不採
択」、「採択」、「採択」、「不採択」の分岐歴は、
「0110」で表される。本実施例では、2つのバージ
ョンの分岐歴が記憶される。すなわち、真の分岐歴及び
推論的分岐歴である。真の分岐歴は、分岐実行ユニット
92の決定に従って分岐命令の最後の4つの結論を記憶
する。推論的分岐歴は、分岐目標バッファ回路40の予
測に従って分岐命令の最後の4つの結論を記憶する。推
論歴は、真の分岐歴が充分迅速に更新されないと考えら
れるので、小さな(または「きつい」)ループ内の分岐
命令を予測する問題を解決するために使われる。本明細
書は真の分岐歴に傾中するけれども、推論的分岐歴につ
いての追加情報は、1993年5月14日出願の米国特
許出願第08/062,012号「分岐目標バッファに
おける推論歴機構」に見られる。
【0074】2段階適用分岐予測機構に維持される第2
段階の分岐歴は分岐パターン歴である。分岐パターン歴
は、同じ分岐歴を有する分岐命令の前の分岐結論に基づ
いた分岐命令の有望な結論を示す。分岐パターン歴は、
各可能な分岐歴パターンに対して2ビットの状態値とし
て記憶される。本実施例では、4ビットの分岐歴が記憶
されるので、図10(a)に示すように、16の可能な
分岐歴パターンに対して16の状態値がある。2ビット
の状態値は、分岐パターンを図10(b)に示すように
強く「採択」、弱く「採択」、弱く「不採択」、強く
「不採択」に分類する。
【0075】分岐パターン歴は、同じ分岐パターンが前
に発生していた場合に生成される。毎回条件分岐命令が
分析されると、分岐パターン・テーブルは、図10
(b)の状態移行矢印で示すようにリー及びスミス(Le
e & Smith )の飽和上/下カウンタを使って更新され
る。
【0076】1つの分岐予測例が図10(a)を参照し
て与えられている。図10(a)を参照すると、条件分
岐命令に対する4ビットの分岐歴が「不採択」、「採
択」、「採択」、「不採択」(0110)パターンを記
憶している。4ビットの分岐パターンは、各分岐パター
ンに関する分岐パターン歴状態値を記憶する分岐パター
ン・テーブルの索引に使われる。図10(a)におい
て、「0110」の分岐パターンは、「弱く採択」の状
態を表す「10」状態値を索引する。分岐予測機構は、
従って分岐が「採択」されると予測する。分岐命令が分
岐実行ユニット92によって分析されると、分岐実行ユ
ニット92は、分岐に関する分岐歴及び分岐パターン・
テーブルの適当な状態値の記述欄を更新する。
【0077】分岐目標バッファ回路40が、整理された
セットの中の全ての条件分岐命令に関する分岐結論を決
定した後、分岐目標バッファ回路40は、最初に採択さ
れた分岐命令をサーチする。もし分岐命令が「採択」さ
れる予測が何もなければ命令フェッチ・ユニット30
は、次の連続したメモリ・ブロックをフェッチする。し
かし、選択されたセットの中に「採択」される分岐命令
があると、分岐目標バッファ回路40は最初の「採択」
された分岐命令に対する分岐目標アドレスを予測する。
【0078】表2は、どのようにして分岐目標バッファ
回路40が、分岐命令が採択されると予測されたとき分
岐タイプ・フィールド403に示すような各タイプの分
岐命令に対する分岐目標アドレスを予測するかを記述し
ている。表2で述べたように、分岐目標バッファ回路4
0は、分岐目標バッファ・キャッシュ41の分岐目標ア
ドレス・フィールド408に与えられたアドレスへの分
岐を予測することによって無条件、条件付き、及びサブ
ルーチンへジャンプする分岐命令を処理する。しかしサ
ブルーチンからの戻り命令は異なって処理される。
【0079】分岐目標バッファ回路40がサブルーチン
からの戻り命令を予測したとき、分岐目標バッファ回路
40は、戻りレジスタ又は分岐アドレス計算器50の戻
りスタック・バッファから戻りアドレスを予測する。サ
ブルーチンからの戻り命令に対する戻りアドレスの予測
についてのより多くの情報は、 年 月出願の米国
特許出願 号「コンピュータ・プロセッサにお
けるサブルーチンからの戻り命令を分析する方法と装
置」に見られる。
【0080】分岐目標バッファ回路40は、予測された
分岐目標アドレスを命令フェッチ・ユニット30に送
る。命令フェッチ・ユニット30は、予測された分岐目
標アドレスを使って次のメモリ・ブロックをフェッチす
る。
【0081】分岐命令ポインタ・テーブル 分岐目標バッファ・キャッシュ41に加えて、分岐目標
バッファ回路40は、分岐命令ポインタ(IP)テーブ
ル43と呼ばれる別のキャッシュを維持する。分岐IP
テーブル43は、現在マイクロプロセッサ内にある全て
の未解決の分岐マイクロ・オペを記憶する。各マイクロ
・オペが実行された後、分岐IPテーブル43に記憶さ
れた情報が読み出され、分岐目標バッファ・キャッシュ
41を更新するか又は分岐予測誤りの場合はマイクロプ
ロセッサを再スタートさせる。
【0082】図11に本発明の分岐IPテーブル43を
示す。分岐IPテーブル43はn個の分岐エントリを有
するバッファを備えている。ここでnはリオーダ・バッ
ファ83のエントリの数に等しい。分岐IPテーブル4
3内の各分岐情報記述欄は、次の線形命令ポインタ(N
LIP)アドレス・フィールド及びプロセッサ状態情報
フィールドから構成される。
【0083】次の線形命令ポインタ(NLIP)アドレ
ス・フィールドは、分岐マイクロ・オペに関連する分岐
命令の直ぐ後に続く命令のアドレスを記憶する。命令フ
ェッチ・ユニット30は、その分岐が誤って「採択」と
予測され、その分岐が「採択」されるべきでなかったと
き、次の線形命令ポインタ(NLIP)アドレスを使
う。
【0084】次の線形命令ポインタ(NLIP)アドレ
スはまた、新しい分岐エントリを割り当てるとき又は既
存の分岐エントリの分岐歴情報を更新するとき分岐目標
バッファ・キャッシュ41を索引するのに使われる。新
しい分岐エントリを割り当てるとき又は既存の分岐エン
トリを更新するとき、次の線形命令ポインタ(NLI
P)アドレスは1減分され、分岐命令の最後のバイトの
アドレスを生成する。分岐命令の最後のバイトのアドレ
スは、分岐目標バッファ・キャッシュ41を索引するた
め分岐目標バッファ回路40によって使われる。
【0085】プロセッサ状態情報フィールドは、分岐予
測を行った後マイクロプロセッサが推論的実行を開始す
るときに変造されるかも知れない状態情報を記憶するの
に使われる。もしマイクロプロセッサが、分岐予測誤り
によって間違った経路で推論的に実行を行うと、予測誤
りが検出されたとき、状態情報は分岐IPテーブル43
から復帰させることができる。本実施例において、マイ
クロプロセッサ状態情報フィールドは、分岐アドレス計
算器50の戻りスタック・バッファに対するスタック・
ポインタを記憶する。
【0086】マイクロプロセッサ概観において述べたよ
うに、アロケータ70が分岐マイクロ・オペに対するリ
オーダ・バッファ83のpDst記述欄を割り当てると
き、分岐IPテーブル43の対応する記述欄が割り当て
られる。命令解読器60は、分岐目標バッファ回路40
に割り当てられたpDst記述欄、プロセッサ状態情報
及び次の線形命令ポインタ(NLIP)アドレスについ
て知らせる。分岐目標バッファ回路40は、プロセッサ
状態情報及び次の線形命令ポインタ(NLIP)アドレ
スを対応する分岐IPテーブル43の記述欄に書く。分
岐IPテーブル43についてのより多くの情報は 年
月出願の米国特許出願第 号「分岐命令ポイ
ンタ・テーブルに関する方法と装置」に見られる。
【0087】分岐目標バッファ・キャッシュの更新 図2を参照すると、各分岐マイクロ・オペは、その分岐
マイクロ・オペを実行するのに必要な全てのソース・デ
ータが得られ、分岐実行ユニット92が使用可能になる
まで予約ステーション81の記述欄に止まっている。分
岐マイクロ・オペを実行するのに必要なソース・データ
がそろったとき、予約ステーション81は分岐マイクロ
・オペを分岐実行ユニット92へ送る。
【0088】分岐目標バッファ回路40は、マイクロ・
オペを予約ステーション81から分岐実行ユニット92
へ送るバスを監視する。予約ステーション81が分岐マ
イクロ・オペを分岐実行ユニット92へ送るのが分かる
と、分岐目標バッファ回路40は、リオーダ・バッファ
のどのpDst記述欄番号が分岐マイクロ・オペの結果
を格納するのに使われるかに注目する。分岐実行ユニッ
ト92が分岐マイクロ・オペを実行する際、分岐目標バ
ッファ回路40は、リオーダ・バッファ83のpDst
記述欄と同じ記述欄番号を有する分岐IPテーブル43
の記述欄を読み出す。このようにして、分岐マイクロ・
オペが分析されるとき、実行される分岐マイクロ・オペ
に関連する記憶された分岐情報が利用可能になる。
【0089】分岐実行ユニット92は、最終的分岐目標
アドレス及び最終的分岐結論(「採択」又は「不採
択」)を決定することによって分岐マイクロ・オペを実
行する。分岐実行ユニット92は、最終分岐結論を予測
された分岐結論と比較して、分岐予測が正しかったかど
うか調べる。もし分岐予測が正しければ、プロセッサは
予測された経路に沿って続行する。もし分岐予測が誤っ
ていれば、分岐実行ユニット92は、マイクロプロセッ
サ・パイプラインのフロント・エンドを捨て去り、マイ
クロプロセッサを正しいアドレスから再スタートさせな
ければならない。もし分岐命令が「採択」と予測され、
最終分岐結論がこれに反して「不採択」であった場合、
マイクロプロセッサはその分岐命令の直ぐ後に続く命令
のアドレスから実行を再開しなければならない。分岐実
行ユニット92は、この状況をマイクロプロセッサ・パ
イプラインのフロント・エンドを捨て去り、命令フェッ
チ・ユニット30に対して分岐IPテーブル43によっ
て与えられた次の線形命令ポインタ(NLIP)のアド
レスから実行を再開するように指示することによって処
理する。
【0090】分岐実行ユニット92が分岐マイクロ・オ
ペを実行した後、分岐目標バッファ回路40は、分岐目
標バッファ・キャッシュ41において新しい記述欄を割
り当てるか又は既存の記述欄を更新しなければならな
い。分岐目標バッファ・キャッシュ41の適切なセット
をアクセスするため、分岐目標バッファ回路40は分岐
命令の最後のバイトのアドレスを持っていなければなら
ない。分岐命令の最後のバイトを計算するため、分岐目
標バッファ回路40は、分岐IPテーブル43から得ら
れた次の線形命令ポインタ(NLIP)アドレスを減分
する。
【0091】分岐目標バッファ・キャッシュ41を更新
するための情報を提供するため、分岐実行ユニット92
は、分析された分岐命令の情報を分岐目標バッファ回路
40へ送る。具体的には、分岐実行ユニット92は、分
岐目標バッファ回路40にどのタイプの分岐命令が実行
され、分岐が「採択」されたかされないか、及び分岐目
標アドレスを知らせる。分岐目標バッファ回路40は、
分析された分岐情報を使って分岐目標バッファ・キャッ
シュ41を更新する。
【0092】図12は、分岐目標バッファ回路40が分
岐目標バッファ・キャッシュ41を更新するときに実行
するステップを示す。ステップ301で、分岐目標バッ
ファ回路40は、分岐IPテーブル43から読まれた次
の線形命令ポインタ(NLIP)・アドレスを減分し、
分岐命令の最後のバイトのアドレスを計算する。分岐目
標バッファ回路40は、分岐命令の最後のバイトのアド
レスを使って分岐目標バッファ・キャッシュ41を索引
する。
【0093】ステップ302で、分岐目標バッファ回路
40は、分岐目標バッファ・キャッシュ41を索引し、
その分岐命令に対する分岐エントリが分岐目標バッファ
・キャッシュ41に既に存在するかどうか調べる。具体
的には、分岐目標バッファ回路40は、分岐エントリに
関する計算された命令アドレス・ブロックのセット・ビ
ットを使って分岐目標バッファ・キャッシュ41を索引
し、短縮タグ・フィールド401とブロック・オフセッ
ト・フィールド402をマッチングさせて分岐エントリ
を探す。
【0094】もし分岐目標バッファ回路40が、その分
岐命令に関して分岐エントリを分岐目標バッファ・キャ
ッシュ41の中に見つけることができなければ、分岐目
標バッファ回路40は、割り当て手段を使ってその分岐
命令が分岐目標バッファ・キャッシュ41に追加される
べきかどうか決定する。割り当て手段については本明細
書で後述する。逆にもし分岐目標バッファ回路40がそ
の分岐命令に関して分岐エントリを分岐目標バッファ・
キャッシュ41の中に見つけると、分岐目標バッファ回
路40は、ステップ310から始めて分岐エントリを更
新する。
【0095】分岐目標バッファ・キャッシュにおける既
存の分岐エントリの更新 分岐目標バッファ・キャッシュ41における既存の分岐
エントリの更新の全処理は、3マシン・サイクル必要で
ある。分岐目標バッファ・キャッシュ41における既存
の分岐エントリの更新は、その分岐エントリは更新すべ
きでないと判断されると、分岐目標バッファ回路40に
よって中断させられる。
【0096】図12のステップ310を参照すると、分
岐がサブルーチンからの戻り命令でなければ分岐目標バ
ッファ回路40は、分岐エントリの分岐目標アドレスを
分岐実行ユニット92によって計算された分岐目標アド
レスと比較する。もし2つの目標アドレスが一致しなけ
れば、分岐実行ユニット92はステップ311で分岐目
標アドレスを更新する。
【0097】図12のステップ312を参照すると、分
岐目標バッファ回路40は、分岐実行ユニット92によ
って与えられた分岐タイプを調べる。もし分岐タイプが
無条件分岐命令であれば、分岐目標バッファ回路40
は、分岐エントリの更新を完了する。もし分岐命令が条
件分岐命令であれば、分岐目標バッファ回路40は分岐
パターン・テーブルの分岐歴を更新する。
【0098】ステップ316で、分岐目標バッファ回路
40は、その分岐エントリを含んでいるセットに関する
分岐パターン・テーブル421を更新する。分岐パター
ン・テーブル421は、既存の真の分岐歴404を使
い、図10(b)に示す状態移行テーブルに従った最近
の分岐結果を使って状態値を変えて分岐パターン・テー
ブル421を索引することによって更新される。分岐パ
ターン・テーブル421は、真の分岐歴フィールド40
4における現在の履歴が分岐パターン・テーブル421
を索引する必要があるので、真の分岐フィールド404
が更新さる前に更新されなければならない。
【0099】ステップ316で分岐パターン・テーブル
を更新した後、分岐目標バッファ回路40は、ステップ
318で真の分岐歴フィールド404を更新する。分岐
目標バッファ回路40は、分岐実行ユニット92によっ
て計算された条件分岐命令の最新の分岐結論を真の分岐
歴フィールド404へシフトすることによって真の分岐
歴フィールド404を更新する。これによって条件分岐
命令に関する分岐エントリの更新が完了する。
【0100】分岐目標バッファ回路40は、分岐実行ユ
ニット92が分岐命令に関連した分岐マイクロ・オペを
実行してから2サイクル後に分岐目標バッファ・キャッ
シュ41の各分岐エントリを更新する。しかし、分岐目
標バッファ回路40を有するマイクロプロセッサは、マ
イクロ・オペを元のプログラム順序からはずされた順序
で実行できるので、分岐目標バッファ回路40は、分岐
目標バッファ・キャッシュ41を元のプログラム順序と
は異なる順序で更新することがある。
【0101】多くの場合、分岐目標バッファ・キャッシ
ュ41を元のプログラム順序とは異なる順序で更新する
ことは特に問題ない。しかし、分岐実行ユニットが、後
の分岐がすでに実行された後に、分岐実行中に分岐予測
誤りを検出したとき、後の分岐は無効な履歴で更新され
てしまっているであろう。この状況を矯正するため、分
岐目標バッファ回路40は、もし分岐目標バッファ回路
40が次の2サイクル以内に、分岐が実行されてはなら
なかったのだと云うことを知れば、分岐エントリの更新
を中断する。この状況の1例が図13を参照して説明さ
れる。
【0102】4つの分岐命令Br0、Br1、Br2及
びBr3がこの順序でコンピュータ・プログラムに現れ
る場合を考える。図2に示すマイクロプロセッサにおい
て、関連する分岐マイクロ・オペは、如何なる順序でも
実行され得る。図13において、4つの分岐命令はBr
3、Br1、Br2及び最後にBr0の順に実行され
る。
【0103】図13のパイプxを参照すると、分岐実行
ユニットはBr3を分析する。次のパイプ x+1で、
分岐実行ユニットはBr1を分析し、分岐目標バッファ
回路40はBr3の分岐エントリの更新を開始する。パ
イプx+2で、分岐実行ユニットはBr1を分析し、一
方同時に分岐目標バッファ回路40はBr1の分岐エン
トリの更新を開始し、Br3の分岐エントリの更新を継
続する。パイプx+3で、分岐ユニットはBr0を分析
し、一方同時に分岐目標バッファ回路40はBr2の分
岐エントリの更新を開始し、Br1の分岐エントリの更
新を継続し、Br3の分岐エントリの更新を終了する。
【0104】もし分岐実行ユニットがBr0は予測誤り
であったと判定すると、マイクロプロセッサは誤った経
路で推論的に実行しているので、次の分岐命令は実行さ
れてはならなかったことになる。もっと重要なことは、
分岐命令Br1、Br2及びBr3は、実行されてはな
らなかったのであるから、これらの分岐命令に関する分
岐エントリは更新されてはならないのであり、新しい分
岐歴は誤りであるということである。分岐実行ユニット
が予測誤りを検出したとき、分岐実行ユニットは、分岐
目標バッファ回路40に対して現在処理中の全ての更新
を中断するように指示する。従って分岐目標バッファ回
路40は、図13に示すように分岐命令Br1及びBr
2の更新を中断する。予測誤りが検出されたとき、Br
3の更新は既に完了しているので、更新を防止できな
い。しかし、更新完了前の2サイクル内に分岐エントリ
の中断をする能力は、このようなケースの大半を処理す
る。
【0105】分岐目標バッファ・キャッシュにおける分
岐エントリの割り当て 図12のステップ302を参照すると、もし分岐目標バ
ッファ回路40が分岐命令に関して分岐目標バッファ・
キャッシュ41の中に既存の分岐エントリを見つけなか
った場合、分岐目標バッファ回路40は分岐目標バッフ
ァ・キャッシュ41の中に新らしい分岐エントリが割り
当てられるかどうか判定しなければならない。分岐エン
トリを割り当てるかどうかを判定するため、マイクロプ
ロセッサは分岐エントリ割り当て手段を働かせる。ステ
ップ303及びステップ305は分岐目標バッファ・キ
ャッシュ41の割り当て手段を実行している。簡単に云
えば、本発明の分岐エントリ割り当て手段は、分岐アド
レス計算器50によって誤って予測された全ての分岐命
令と全ての「採択された」分岐命令の分岐エントリを割
り当てるためのものである。
【0106】図2を参照すると、分岐アドレス計算器5
0は、分岐目標バッファ回路40によって予測されない
分岐命令の静的予測を行う。静的予測は、分岐命令自身
の中でコード化された情報にのみ基づき、分岐アドレス
計算器50が常に所定の分岐命令に関して同じ予測を行
う。従って、分岐アドレス計算器50が分岐命令を誤っ
て予測すると、同じ予測誤りがくり返し行われる(分岐
結論が変わるまで)。この状況を防止するため、分岐ア
ドレス計算器50によって誤って予測された全ての分岐
命令は分岐目標バッファ・キャッシュ41に割り当てら
れる。従って図12のステップ303で、分岐目標バッ
ファ回路40は、その分岐命令が誤って予測されたかど
うかテストする。もし分岐が誤って予測されると、分岐
目標バッファ回路40は、その分岐命令の分岐エントリ
を分岐目標バッファ・キャッシュ41内に割り当てる。
【0107】もし分岐アドレス計算器50が、分岐命令
が「採択されない」と予測し、その分岐予測が正しい
と、遅れは起こらない。一方、もし分岐アドレス計算器
50が、分岐命令が「採択される」と予測すると、分岐
アドレス計算器50は、やはりマイクロプロセッサのフ
ロント・エンドを捨て、命令フェッチ・ユニット30の
フェッチを分岐目標アドレスから開始しなければならな
い。従って、もし分岐命令が「採択」されると、分岐ア
ドレス計算器50が正しく分岐命令の結論を予測するか
しないかによって5サイクルの遅れがある。この状況が
再発するのを防止するため、分岐目標バッファ回路40
は、全ての「採択」分岐命令に対して分岐目標バッファ
・キャッシュ内に分岐エントリを割り当てる。図12の
ステップ305を参照すると、分岐目標バッファ回路4
0は分岐命令が「採択」されたかどうかテストする。も
し分岐命令が「採択」された場合、分岐目標バッファ回
路40は、その分岐命令の分岐エントリを分岐目標バッ
ファ・キャッシュ41内に割り当てる。
【0108】分岐目標バッファ・キャッシュ41におい
て選択されたセットから1つの分岐エントリを選択する
ため、分岐目標バッファ回路40は、分岐目標バッファ
・キャッシュ41のセットの中の一対の疑似最近置換
(PLRR)ビット420を使う。疑似最近置換(PL
RR)ビット420はセットの中のどの分岐エントリが
一番先に置き換えられたかを示す。選択されたセットの
中の分岐エントリを選択するため、分岐目標バッファ回
路40は、選択されたセットの疑似最近置換(PLR
R)ビット420を読み、図14に示す分岐エントリ割
り当て手段に従う。分岐エントリ割り当て手段は、現メ
モリ・ブロック内の分岐命令に対する既存の分岐エント
リを破壊しないように試みる。
【0109】ステップ501で、分岐目標バッファ回路
40は、カウンタをゼロにセットする。ステップ503
で、分岐目標バッファ回路40は、分岐エントリをテス
トし、その短縮タグ・フィールド401が割り当てられ
る分岐命令の短縮タグと同じかどうか調べる。もしこの
2つの短縮タグが一致しなければ、分岐目標バッファ回
路40は、ステップ505へ進み、分岐エントリを置き
換える。分岐エントリを置き換えた後、分岐目標バッフ
ァ回路40は、ステップ507で疑似最近置換(PLR
R)ビット420を増分し、増分された疑似最近置換
(PLRR)ビットをセットの中に書き戻す。
【0110】もし2つの短縮タグが一致すれば、分岐目
標バッファ回路40は、ステップ511へ進み、そこで
分岐目標バッファ回路40は、カウンタをテストし、全
ての4つの分岐エントリがテストされたかどうか調べ
る。もし全ての4つの分岐エントリがテストされたら、
分岐目標バッファ回路40はステップ505へ進み、疑
似最近置換(PLRR)ビット420によって指示され
た分岐エントリを分岐セットから元々読まれたように置
き換える。ステップ511を参照すると、もし全ての4
つの分岐エントリがテストされていなければ、分岐目標
バッファ回路40はステップ513へ進み、カウンタ及
び疑似最近置換(PLRR)ビットが増分される。
【0111】ステップ513の後で、分岐目標バッファ
回路40はステップ503に戻り次の分岐エントリをテ
ストする。分岐目標バッファ・キャッシュ41の分岐エ
ントリが選択された後、分岐目標バッファ回路40は選
択された分岐エントリのデータ・フィールドに書き込
む。
【0112】もし分岐命令が「採択」であったら、分岐
目標バッファ回路40は真の履歴フィールド404を
「1011」とセットする。その他の場合、すなわち分
岐が「不採択」であったら、分岐目標バッファ回路40
は、真の履歴フィールドを「0100」とセットする。
【0113】推論ビット406はリセットされ、その分
岐エントリに関して推論歴はまだ存在しないことを示
す。推論歴フィールド405は、後に推論歴が生成され
たときセットされるので、分岐エントリ割り当て中は変
更されない。
【0114】短縮タグ・フィールド401及びブロック
・オフセット・フィールド402は、分岐命令の最後の
バイトを指示するアドレスを使ってセットされる。短縮
タグ・フィールド401は、分岐命令の最後のバイトを
指示するアドレスの最上位21ビットを選択された短縮
機構へ通すことによってセットされる。ブロック・オフ
セット・フィールド402は、分岐アドレスの最下位4
ビットを使ってセットされる。
【0115】分岐目標バッファ回路40は、分岐タイプ
・フィールド403を分岐実行ユニット92から受け取
った分岐タイプ情報を使ってセットする。分岐目標バッ
ファ回路40は、分岐目標アドレス・フィールド408
を分岐実行ユニット92によって計算された分岐命令の
目標アドレスを使ってセットする。
【0116】最後に、分岐エントリの有効ビット407
がセットされ、分岐エントリが分岐命令に関する有効情
報を有することを示す。将来発生する分岐命令は、分岐
目標バッファ回路40によって予測される。
【0117】分岐目標バッファ・キャッシュからの分岐
エントリの取り外し 図2を参照すると、分岐アドレス計算器50は、分岐目
標バッファ回路40によって予測された全ての分岐命令
の存在を検証する。有効な分岐命令を指示しない分岐目
標バッファ・キャッシュ41の記述欄は、分岐目標バッ
ファ回路40に存在しない分岐命令を予測させることに
なる。
【0118】分岐目標バッファ・キャッシュ41の分岐
エントリが有効な分岐命令を指示しないいくつかの理由
がある。自己修正コードが分岐命令を変更でき、分岐目
標バッファ・キャッシュ41の記述欄が正確でなくな
る。更に、短縮タグ・フィールド401がエイリアシン
グを起こし、複数のアドレスが各分岐エントリにマップ
される。
【0119】分岐アドレス計算器50が、分岐目標バッ
ファ回路40が存在しない分岐命令を予測したと判断す
ると、分岐目標バッファ・キャッシュ41の不正確な分
岐エントリは取り外さなければならない。分岐アドレス
計算器50が、存在しない分岐命令の分岐予測を検出す
ると、分岐アドレス計算器50は分岐目標バッファ回路
40に非分岐命令の最初のバイトに対するポインタを送
る。にせの分岐エントリを取り外すため、分岐目標バッ
ファ回路40は、送られたポインタによって定義された
セットの全ての分岐エントリ及び次の分岐エントリのセ
ットを取り外す。送られたポインタで定義されたセット
及び次の分岐エントリのセットは、分岐命令(最後のバ
イトのアドレスによって分岐目標バッファ・キャッシュ
41に置かれた)が2つのセットの分岐エントリのどち
らかに存在するかも知れないので取り外さなければなら
ない。1つのセットの分岐エントリを取り外すために、
分岐目標バッファ回路40は、分岐エントリの全ての有
効ビット407をリセットする。
【0120】命令の流れの中の分岐命令を予測する分岐
目標バッファ回路40を実施するいくつかの方法と装置
を説明した。本発明の範囲から逸脱することなく、本発
明の器材及び構成に対して当業者によって変更及び修正
が加えられることが予期される。
【図面の簡単な説明】
【図1】 マイクロプロセッサ命令を処理するための深
いマイクロプロセッサ・パイプラインのブロック・ダイ
アグラムを示す図。
【図2】 図1に示す深いパイプラインを実現するマイ
クロプロセッサの異なった回路ブロックのブロック・ダ
イアグラムを示す図。
【図3】 実行されたマイクロ・オペの結果を格納する
リオーダ・バッファの図。
【図4】 アドレス空間が16バイトのメモリ・ブロッ
クに分割されたメモリ・マップの図。
【図5】 図2に示すマイクロプロセッサにおいて、ど
のように分岐目標バッファ回路が他の論理回路と相互に
作用するかを示す図。
【図6】 分岐目標バッファ回路の中の分岐目標バッフ
ァ・キャッシュの内容を示す図。
【図7】 分岐目標バッファ・キャッシュの中の各分岐
のエントリの内容を示す図。
【図8】 分岐予測をするため、分岐目標バッファ・キ
ャッシュをサーチするとき、分 岐目標バッファ回路に
よって実行されるステップを説明する図。
【図9】 (a)は、分岐目標バッファ・キャッシュを
アクセスするとき、どのように分岐目標バッファ回路が
アドレスを使うかを示す図。(b)は、21ビット・タ
グを9ビットの短縮タグに縮める第1の短縮メカニズム
を示す図。(c)は、21ビット・タグを9ビットの短
縮タグに縮める第2の短縮メカニズムを示す図。
【図10】 (a)は、各記述欄が2ビットの状態値で
ある16項目の記入パターン・テーブルを指示する4ビ
ットの分岐歴を示す図。(b)は、分岐パターン・テー
ブルにおける各2ビットの状態値に関する状態変化を示
す状態図。
【図11】 分岐目標バッファ回路における分岐IPテ
ーブル(BIT)の内容を示す図。
【図12】 分岐目標バッファ・キャッシュを更新する
とき、分岐目標バッファ回路によって実行されるステッ
プを記載したフローチャート。
【図13】 どのようにして分岐目標バッファ回路に対
する3サイクル更新が中止されるかを示す図。
【図14】 分岐エントリを新しい分岐命令に対して割
り当てるとき、どのようにして分岐目標バッファ回路が
セットの中の分岐エントリを選ぶかを説明するフローチ
ャート。
【符号の説明】
30…命令フェッチ・ユニット、35…メモリ及びバス
論理、40…分岐目標バッファ回路、41…分岐目標バ
ッファ・キャッシュ、43…分岐IPテーブル、50…
分岐アドレス計算器。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 グレン・ジェイ・ヒントン アメリカ合衆国 97229 オレゴン州・ポ ートランド・ノースウエスト 185ティエ イチ アヴェニュ・6130 (72)発明者 デビッド・ビイ・パップワース アメリカ合衆国 97007 オレゴン州・ビ ーバートン・サウスウエスト ショルズ フェリー ロード・20101 (72)発明者 アシュワニ・クマー・ガプタ アメリカ合衆国 97006 オレゴン州・ビ ーバートン・ノースウエスト 163アール ディ コート・3553 (72)発明者 マイケル・アラン・フェッターマン アメリカ合衆国 97124 オレゴン州・ヒ ルズボロ・ノースイースト ヒルウッド ドライブ・371 (72)発明者 サブラマニアン・ナタラヤン アメリカ合衆国 97229 オレゴン州・ポ ートランド・ノースウエスト アナスタシ ア ドライブ・17991 (72)発明者 サニル・シェノイ アメリカ合衆国 97229 オレゴン州・ポ ートランド・ノースウエスト 204ティエ イチ プレイス・5687 (72)発明者 レイノルド・ヴィ・ドサ アメリカ合衆国 97006 オレゴン州・ア ロハ・サウスウエスト 178ティエイチ アヴェニュ・1563

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータ命令の流れの中の複数の分
    岐命令を予測する分岐命令予測機構において、 上記コンピュータ命令の流れの中の関連する分岐命令に
    ついての情報を記憶する複数の分岐エントリを備える分
    岐目標バッファ・キャッシュと、 命令ポインタを受け、その命令ポインタを使って上記分
    岐目標バッファ・キャッシュを索引し、上記命令ポイン
    タに基づいてやがて現れる分岐命令を捜索する分岐目標
    バッファ回路と、を備えた分岐命令予測機構。
  2. 【請求項2】 コンピュータ命令の流れの中の関連する
    分岐命令についての情報を記憶する複数の分岐エントリ
    を備える分岐目標バッファ・キャッシュであって、その
    分岐エントリイは上記分岐目標バッファ・キャッシュの
    中で上記関連する分岐命令の最後のバイトによってアド
    レスされることを特徴とする分岐目標バッファ・キャッ
    シュ。
  3. 【請求項3】 分岐目標バッファを更新する方法であっ
    て、 分岐命令を分析して上記分岐命令に関する最終的分岐結
    論及び最終的分岐目標アドレスを決定するステップと、 上記分岐目標バッファ内の1組の分岐エントリから上記
    分岐命令に関連する分岐エントリを見つけるステップ
    と、 上記分岐命令に関連する上記分岐エントリの分岐目標ア
    ドレスを上記最終的分岐目標アドレスを使って更新する
    ステップと、 上記分岐命令が条件分岐命令であるとき、上記分岐目標
    バッファ内の上記分岐エントリのセットに関連する分岐
    パターン・テーブルを更新するステップと、 上記分岐命令が条件分岐命令であるとき、上記分岐エン
    トリに関連する分岐歴を更新するステップと、からなる
    分岐目標バッファの更新方法。
  4. 【請求項4】 分岐命令を分析して上記分岐命令に関す
    る最終的分岐結論及び最終的分岐目標アドレスを決定す
    るステップと、 上記分岐命令が誤って予測されたかどうか判定するステ
    ップと、 上記分岐命令が誤って予測され、或いは上記分岐命令の
    上記最終的分岐結論が「採択」であった場合、上記分岐
    目標バッファに分岐エントリを割り当てるステップと、
    からなる分岐目標バッファに分岐エントリを割り当てる
    方法。
JP34032194A 1994-01-04 1994-12-29 分岐命令予測機構及び予測方法 Expired - Fee Related JP3548255B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/177,155 US5574871A (en) 1994-01-04 1994-01-04 Method and apparatus for implementing a set-associative branch target buffer
US177155 1998-10-22

Publications (2)

Publication Number Publication Date
JPH07210383A true JPH07210383A (ja) 1995-08-11
JP3548255B2 JP3548255B2 (ja) 2004-07-28

Family

ID=22647420

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34032194A Expired - Fee Related JP3548255B2 (ja) 1994-01-04 1994-12-29 分岐命令予測機構及び予測方法

Country Status (6)

Country Link
US (4) US5574871A (ja)
JP (1) JP3548255B2 (ja)
DE (1) DE4447238B4 (ja)
GB (1) GB2285526B (ja)
HK (1) HK1012743A1 (ja)
SG (1) SG50456A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100468618B1 (ko) * 2002-03-28 2005-01-31 매그나칩 반도체 유한회사 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치
KR100591769B1 (ko) * 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
WO2007099605A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited 圧縮したアドレス情報により分岐予測する処理装置
US7447881B2 (en) 2002-06-28 2008-11-04 Fujitsu Limited Branch prediction apparatus and method
WO2012132214A1 (ja) * 2011-03-31 2012-10-04 ルネサスエレクトロニクス株式会社 プロセッサ及びその命令処理方法
JP2013004101A (ja) * 2011-06-17 2013-01-07 Freescale Semiconductor Inc データプロセッサ内での分岐先バッファのアドレス指定
JP2014109953A (ja) * 2012-12-03 2014-06-12 Fujitsu Ltd 演算処理装置、演算処理方法
JP2021527892A (ja) * 2018-06-18 2021-10-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐命令のタイプに基づく先行分岐予測の選択的実行

Families Citing this family (121)

* 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
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
JP3590427B2 (ja) * 1994-08-30 2004-11-17 株式会社ルネサステクノロジ 先行読出機能付命令キャッシュメモリ
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
GB9521977D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
GB9521978D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Computer instruction supply
GB9521955D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5790822A (en) * 1996-03-21 1998-08-04 Intel Corporation Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor
US5842008A (en) * 1996-06-18 1998-11-24 Intel Corporation Method and apparatus for implementing a branch target buffer cache with multiple BTB banks
US6170053B1 (en) * 1996-06-27 2001-01-02 Texas Instruments Incorporated Microprocessor with circuits, systems and methods for responding to branch instructions based on history of prediction accuracy
US5864697A (en) * 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US5901307A (en) * 1996-07-22 1999-05-04 International Business Machines Corporation Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US5822575A (en) * 1996-09-12 1998-10-13 Advanced Micro Devices, Inc. Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US5875325A (en) * 1996-09-19 1999-02-23 International Business Machines Corporation Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
US5918044A (en) * 1996-10-31 1999-06-29 International Business Machines Corporation Apparatus and method for instruction fetching using a multi-port instruction cache directory
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US6253316B1 (en) 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
EP0848323B1 (en) * 1996-12-10 2004-02-25 Texas Instruments Incorporated Improvements in the branch prediction within a pipelined microprocessor
US6871275B1 (en) * 1996-12-12 2005-03-22 Intel Corporation Microprocessor having a branch predictor using speculative branch registers
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US6108775A (en) * 1996-12-30 2000-08-22 Texas Instruments Incorporated Dynamically loadable pattern history tables in a multi-task 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
JPH10333908A (ja) * 1997-05-30 1998-12-18 Mitsubishi Electric Corp 分岐予測方法
US6154833A (en) * 1997-08-11 2000-11-28 Intel Corporation System for recovering from a concurrent branch target buffer read with a write allocation by invalidating and then reinstating the instruction pointer
US6101598A (en) * 1997-11-14 2000-08-08 Cirrus Logic, Inc. Methods for debugging a multiprocessor system
US5938761A (en) * 1997-11-24 1999-08-17 Sun Microsystems Method and apparatus for branch target prediction
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6108774A (en) * 1997-12-19 2000-08-22 Advanced Micro Devices, Inc. Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits
US6256729B1 (en) * 1998-01-09 2001-07-03 Sun Microsystems, Inc. Method and apparatus for resolving multiple branches
US6289441B1 (en) * 1998-01-09 2001-09-11 Sun Microsystems, Inc. Method and apparatus for performing multiple branch predictions per cycle
US6151671A (en) * 1998-02-20 2000-11-21 Intel Corporation System and method of maintaining and utilizing multiple return stack buffers
US6055630A (en) * 1998-04-20 2000-04-25 Intel Corporation System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units
US6081887A (en) * 1998-05-13 2000-06-27 Compaq Computer Corporation System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US6493821B1 (en) 1998-06-09 2002-12-10 Intel Corporation Recovery from writeback stage event signal or micro-branch misprediction using instruction sequence number indexed state information table
US6134654A (en) * 1998-09-16 2000-10-17 Sun Microsystems, Inc. Bi-level branch target prediction scheme with fetch address prediction
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6978462B1 (en) * 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
JP3526773B2 (ja) * 1999-02-26 2004-05-17 松下電器産業株式会社 マルチプロセッサ装置およびその制御方法
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
US6526503B1 (en) 1999-11-04 2003-02-25 International Business Machines Corporation Apparatus and method for accessing a memory device during speculative instruction branching
US6633974B1 (en) 1999-11-04 2003-10-14 International Business Machines Corporation Apparatus and method for controlling link stack corruption during speculative instruction branching using multiple stacks
US6502188B1 (en) 1999-11-16 2002-12-31 Advanced Micro Devices, Inc. Dynamic classification of conditional branches in global history branch prediction
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6470438B1 (en) 2000-02-22 2002-10-22 Hewlett-Packard Company Methods and apparatus for reducing false hits in a non-tagged, n-way cache
US6918028B1 (en) * 2000-03-28 2005-07-12 Analog Devices, Inc. Pipelined processor including a loosely coupled side pipe
US7496734B1 (en) * 2000-04-28 2009-02-24 Stmicroelectronics, Inc. System and method for handling register dependency in a stack-based pipelined processor
US6910124B1 (en) 2000-05-02 2005-06-21 International Business Machines Corporation Apparatus and method for recovering a link stack from mis-speculation
JP3729064B2 (ja) * 2000-11-29 2005-12-21 日本電気株式会社 データ依存関係検出装置
US6883090B2 (en) * 2001-05-17 2005-04-19 Broadcom Corporation Method for cancelling conditional delay slot instructions
US6859874B2 (en) * 2001-09-24 2005-02-22 Broadcom Corporation Method for identifying basic blocks with conditional delay slot instructions
US6785804B2 (en) * 2001-05-17 2004-08-31 Broadcom Corporation Use of tags to cancel a conditional branch delay slot instruction
US6934796B1 (en) * 2002-02-01 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with hashing function
US7382637B1 (en) 2002-02-01 2008-06-03 Netlogic Microsystems, Inc. Block-writable content addressable memory device
US6697276B1 (en) 2002-02-01 2004-02-24 Netlogic Microsystems, Inc. Content addressable memory device
US6954849B2 (en) * 2002-02-21 2005-10-11 Intel Corporation Method and system to use and maintain a return buffer
US7082520B2 (en) * 2002-05-09 2006-07-25 International Business Machines Corporation Branch prediction utilizing both a branch target buffer and a multiple target table
US20030225992A1 (en) * 2002-05-29 2003-12-04 Balakrishna Venkatrao Method and system for compression of address tags in memory structures
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7426631B2 (en) * 2005-02-02 2008-09-16 International Business Machines Corporation Methods and systems for storing branch information in an address table of a processor
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US20070061555A1 (en) * 2005-09-15 2007-03-15 St Clair Michael Call return tracking technique
EP1990713B1 (en) * 2006-02-28 2013-04-10 Fujitsu Ltd. Branch predicting device for computer
US7574586B2 (en) * 2006-05-16 2009-08-11 Texas Instruments Incorporated Efficient transfer of branch information
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US9146745B2 (en) * 2006-06-29 2015-09-29 Intel Corporation Method and apparatus for partitioned pipelined execution of multiple execution threads
US8261130B2 (en) * 2007-03-02 2012-09-04 Infineon Technologies Ag Program code trace signature
US7664941B2 (en) * 2007-06-28 2010-02-16 Faraday Technology Corp. Branch prediction methods and devices capable of predicting first taken branch instruction within plurality of fetched instructions
US8909907B2 (en) * 2008-02-12 2014-12-09 International Business Machines Corporation Reducing branch prediction latency using a branch target buffer with a most recently used column prediction
US7913068B2 (en) * 2008-02-21 2011-03-22 International Business Machines Corporation System and method for providing asynchronous dynamic millicode entry prediction
US7873818B2 (en) * 2008-02-22 2011-01-18 International Business Machines Corporation System and method for search area confined branch prediction
US8181005B2 (en) * 2008-09-05 2012-05-15 Advanced Micro Devices, Inc. Hybrid branch prediction device with sparse and dense prediction caches
US20100191943A1 (en) * 2009-01-26 2010-07-29 Agere Systems Inc. Coordination between a branch-target-buffer circuit and an instruction cache
US8281110B2 (en) * 2009-07-15 2012-10-02 Via Technologies, Inc. Out-of-order microprocessor with separate branch information circular queue table tagged by branch instructions in reorder buffer to reduce unnecessary space in buffer
CN101840330B (zh) * 2009-07-15 2014-02-12 威盛电子股份有限公司 一种微处理器和其信息储存方法
CN102117198B (zh) * 2009-12-31 2015-07-15 上海芯豪微电子有限公司 一种分支处理方法
US9354886B2 (en) * 2011-11-28 2016-05-31 Apple Inc. Maintaining the integrity of an execution return address stack
US9235419B2 (en) 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9229723B2 (en) 2012-06-11 2016-01-05 International Business Machines Corporation Global weak pattern history table filtering
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US20140025894A1 (en) * 2012-07-18 2014-01-23 Electronics And Telecommunications Research Institute Processor using branch instruction execution cache and method of operating the same
US9395984B2 (en) 2012-09-12 2016-07-19 Qualcomm Incorporated Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods
US9645824B2 (en) * 2012-10-31 2017-05-09 Arm Limited Branch target address cache using hashed fetch addresses
US9405544B2 (en) 2013-05-14 2016-08-02 Apple Inc. Next fetch predictor return address stack
JP6523274B2 (ja) * 2013-10-25 2019-05-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US9690587B2 (en) 2014-04-08 2017-06-27 International Business Machines Corporation Variable updates of branch prediction states
GB2528676B (en) * 2014-07-25 2016-10-26 Imagination Tech Ltd Conditional Branch Prediction Using A Long History
US10534611B2 (en) 2014-07-31 2020-01-14 International Business Machines Corporation Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV)
US9619385B2 (en) 2015-02-25 2017-04-11 International Business Machines Corporation Single thread cache miss rate estimation
US10642615B2 (en) * 2018-04-27 2020-05-05 International Business Machines Corporation System and method for dynamic accuracy and threshold control for branch classification
GB2539037B (en) * 2015-06-05 2020-11-04 Advanced Risc Mach Ltd Apparatus having processing pipeline with first and second execution circuitry, and method
US9442726B1 (en) 2015-12-15 2016-09-13 International Business Machines Corporation Perceptron branch predictor with virtualized weights
US10908902B2 (en) 2016-05-26 2021-02-02 International Business Machines Corporation Distance based branch prediction and detection of potential call and potential return instructions
US10423419B2 (en) 2016-06-27 2019-09-24 International Business Machines Corporation Stream based branch prediction index accelerator for multiple stream exits
US10430195B2 (en) 2016-06-27 2019-10-01 International Business Machines Corporation Stream based branch prediction index accelerator with power prediction
US10592248B2 (en) * 2016-08-30 2020-03-17 Advanced Micro Devices, Inc. Branch target buffer compression
US10747539B1 (en) 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction
US10394559B2 (en) 2016-12-13 2019-08-27 International Business Machines Corporation Branch predictor search qualification using stream length prediction
GB2577051B (en) * 2018-09-11 2021-03-03 Advanced Risc Mach Ltd Branch prediction using branch target buffer
GB2578573B (en) * 2018-10-30 2021-09-08 Advanced Risc Mach Ltd Technique for maintaining data values in a prediction register that are used to predict whether a branch represented by a branch instruction will be taken.
US11321095B2 (en) 2018-12-14 2022-05-03 Apple Inc. Indirect branch predictor security protection
US11995447B2 (en) * 2020-10-15 2024-05-28 Centaur Technology, Inc. Quick predictor override and update by a BTAC
US12050917B2 (en) * 2021-12-30 2024-07-30 Arm Limited Methods and apparatus for tracking instruction information stored in virtual sub-elements mapped to physical sub-elements of a given element
CN116719561B (zh) * 2023-08-09 2023-10-31 芯砺智能科技(上海)有限公司 一种条件分支指令的处理系统和方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
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
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
DE4211222B4 (de) * 1991-04-05 2009-05-28 Kabushiki Kaisha Toshiba, Kawasaki Abzweigungs-Vorhersage-Vorrichtung und Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor
US5333283A (en) * 1991-10-29 1994-07-26 International Business Machines Corporation Case block table for predicting the outcome of blocks of conditional branches having a common operand
AU3776793A (en) * 1992-02-27 1993-09-13 Intel Corporation Dynamic flow instruction cache memory
US5423011A (en) * 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
JP2614686B2 (ja) * 1992-06-30 1997-05-28 住友軽金属工業株式会社 形状凍結性及び塗装焼付硬化性に優れた成形加工用アルミニウム合金の製造方法
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
JPH09500989A (ja) * 1993-05-14 1997-01-28 インテル・コーポレーション 分岐ターゲット・バッファにおける推論履歴
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5604877A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5860104A (en) * 1995-08-31 1999-01-12 Advanced Micro Devices, Inc. Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US5842008A (en) * 1996-06-18 1998-11-24 Intel Corporation Method and apparatus for implementing a branch target buffer cache with multiple BTB banks
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100468618B1 (ko) * 2002-03-28 2005-01-31 매그나칩 반도체 유한회사 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치
US7447881B2 (en) 2002-06-28 2008-11-04 Fujitsu Limited Branch prediction apparatus and method
US7609582B2 (en) 2004-07-16 2009-10-27 Samsung Electronics Co., Ltd. Branch target buffer and method of use
KR100591769B1 (ko) * 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
US7471574B2 (en) 2004-07-16 2008-12-30 Samsung Electronics Co., Ltd. Branch target buffer and method of use
US7949862B2 (en) 2006-02-28 2011-05-24 Fujitsu Limited Branch prediction table storing addresses with compressed high order bits
WO2007099605A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited 圧縮したアドレス情報により分岐予測する処理装置
JP5136405B2 (ja) * 2006-02-28 2013-02-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
WO2012132214A1 (ja) * 2011-03-31 2012-10-04 ルネサスエレクトロニクス株式会社 プロセッサ及びその命令処理方法
JP5696210B2 (ja) * 2011-03-31 2015-04-08 ルネサスエレクトロニクス株式会社 プロセッサ及びその命令処理方法
JP2013004101A (ja) * 2011-06-17 2013-01-07 Freescale Semiconductor Inc データプロセッサ内での分岐先バッファのアドレス指定
JP2014109953A (ja) * 2012-12-03 2014-06-12 Fujitsu Ltd 演算処理装置、演算処理方法
JP2021527892A (ja) * 2018-06-18 2021-10-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐命令のタイプに基づく先行分岐予測の選択的実行

Also Published As

Publication number Publication date
GB2285526A (en) 1995-07-12
US5903751A (en) 1999-05-11
DE4447238B4 (de) 2005-08-18
US5574871A (en) 1996-11-12
HK1012743A1 (en) 1999-08-06
SG50456A1 (en) 1998-07-20
DE4447238A1 (de) 1995-07-13
JP3548255B2 (ja) 2004-07-28
US5944817A (en) 1999-08-31
GB2285526B (en) 1998-11-18
GB9425726D0 (en) 1995-02-22
US5706492A (en) 1998-01-06

Similar Documents

Publication Publication Date Title
JP3548255B2 (ja) 分岐命令予測機構及び予測方法
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
US6697932B1 (en) System and method for early resolution of low confidence branches and safe data cache accesses
US5812839A (en) Dual prediction branch system having two step of branch recovery process which activated only when mispredicted branch is the oldest instruction in the out-of-order unit
US6247122B1 (en) Method and apparatus for performing branch prediction combining static and dynamic branch predictors
US7707398B2 (en) System and method for speculative global history prediction updating
US20020144101A1 (en) Caching DAG traces
JP5734945B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JPH11510291A (ja) スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JP2009048633A (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
US5842008A (en) Method and apparatus for implementing a branch target buffer cache with multiple BTB banks
US11392386B2 (en) Program counter (PC)-relative load and store addressing for fused instructions
KR100276138B1 (ko) 브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서
US6836841B1 (en) Predicting output of a reuse region using prior execution results associated with the reuse region
US8521999B2 (en) Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
US6473850B1 (en) System and method for handling instructions occurring after an ISYNC instruction
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040413

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040416

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees