JP2001166935A - プロセッサにおける分岐予測方法及びプロセッサ - Google Patents

プロセッサにおける分岐予測方法及びプロセッサ

Info

Publication number
JP2001166935A
JP2001166935A JP2000331110A JP2000331110A JP2001166935A JP 2001166935 A JP2001166935 A JP 2001166935A JP 2000331110 A JP2000331110 A JP 2000331110A JP 2000331110 A JP2000331110 A JP 2000331110A JP 2001166935 A JP2001166935 A JP 2001166935A
Authority
JP
Japan
Prior art keywords
destination
branch
entries
cache
response
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
JP2000331110A
Other languages
English (en)
Other versions
JP3565504B2 (ja
Inventor
Shinharoi Bararamu
バララム・シンハロイ
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 JP2001166935A publication Critical patent/JP2001166935A/ja
Application granted granted Critical
Publication of JP3565504B2 publication Critical patent/JP3565504B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 キャッシュを用いて、分岐命令の宛先の予測
の精度を向上させるスーパスカラ・プロセッサ及び方法
を提供すること。 【解決手段】 キャッシュが複数のエントリを含んで確
立される。複数の分岐命令の各々が、キャッシュのエン
トリの1つに関連付けられる。キャッシュのエントリの
1つは、キャッシュのこのエントリに関連付けられる分
岐命令の予測される宛先を記憶する。予測された宛先
は、分岐命令の実行に際して、その分岐命令が分岐する
と予測される宛先である。予測されて記憶される宛先
は、分岐命令の宛先の2度の連続する予測誤りに応答し
てのみ、キャッシュのエントリの1つ内で更新される。
ここで2度の連続する予測誤りは、キャッシュのエント
リの1つを用いて行われる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般にデータ処理シ
ステムに関し、特にスーパスカラ・プロセッサに関す
る。より詳細には、本発明は、確認ビットを含むキャッ
シュを用いて、分岐命令宛先の予測の精度を向上させる
スーパスカラ・プロセッサ及び方法に関する。
【0002】
【従来の技術】ほとんどのアーキテクチャは、そのター
ゲットが分岐のアドレス及び命令自身から計算され得な
い分岐命令を含む。ターゲット・アドレスが別のレジス
タに記憶されて、命令のアドレス及び命令自身から計算
され得ない分岐(条件付きまたは無条件)を、ここでは
アドレス予測可能分岐命令と呼ぶことにする。例えば、
PowerPC(商標)アーキテクチャでは、"リンク
・レジスタ条件付き分岐(BCLR)"命令または"リン
ク・レジスタ及びリンク条件付き分岐(BCLRL)"
命令のターゲット・アドレスは、リンク・レジスタ(L
R)内で見いだされ、"カウント・レジスタ条件付き分
岐(BCCTR)"命令または"カウント・レジスタ及び
リンク条件付き分岐(BCCTRL)"命令のターゲッ
ト・アドレスは、カウント・レジスタ(CTR)内で見
いだされる。リンク・レジスタ及びカウント・レジスタ
は、PowerPCアーキテクチャにおける特殊目的レ
ジスタであって、これらの命令のアドレスを格納するた
めに使用される。
【0003】アーキテクチャは、アドレス予測可能分岐
の直前の命令が完了するとき、これらの特殊目的レジス
タがアドレス予測可能分岐の必要ターゲット・アドレス
を含むことを保証する。完了ユニットから完了信号が受
信されるとき、命令は完了する。深いパイプライン式マ
イクロプロセッサでは、命令は通常、その実行及び続く
完了よりも何サイクルも先行してフェッチされる。この
前の命令の完了は、通常、アドレス予測可能分岐に続く
命令のフェッチよりも何サイクルも遅れるので、こうし
た分岐のターゲットを高精度で予測できることが必要で
ある。
【0004】少量メモリのキャッシュがプロセッサ内に
設けられ、こうしたアドレス予測可能分岐の予測ターゲ
ット・アドレスを記憶する。
【0005】プログラマは特定のシーケンスでコードを
作成する。コードは様々な分岐命令またはジャンプ命令
を含み得る。分岐命令は命令の実行の間に、命令の本来
の順序からの逸脱を生じさせる。命令の実行のスピード
を速める1つの方法は、分岐命令の実行の起こりそうな
結果を予測することである。予測はこの分岐命令が次回
実行されるときに、分岐が発生するか否かに関して行わ
れる。
【0006】キャッシュはプロセッサ内に保持される少
量のメモリであり、特定のタイプの分岐命令の予測され
る宛先を含む。この特定のタイプの分岐命令はアドレス
予測可能分岐命令であり、そのターゲット・アドレスは
前述のキャッシュなどの別のレジスタに記憶され、また
ターゲット・アドレスは命令自身からは計算され得な
い。
【0007】キャッシュは複数のエントリを含み、各分
岐命令はエントリの1つに関連付けられる。分岐命令が
フェッチされるとき、この分岐命令に関連付けられるキ
ャッシュのエントリが読出され、この分岐命令の予測さ
れる宛先が決定される。
【0008】一般に、分岐命令が実行された後に、実際
の分岐宛先が予測された分岐宛先と異なった場合、キャ
ッシュの適切なエントリが実際の宛先を含むように更新
される。しかしながら、より一般的な宛先と一般的でな
い宛先との間で、分岐命令が連続的に分岐し続ける場合
に、問題が生じ得る。例えば、分岐命令が最初に宛先"
A"に分岐し、次に宛先"B"に、そして次に再度宛先"
A"に分岐し、このパターンを継続する場合、キャッシ
ュが常に不正な予測を含むことは明らかである。"B"へ
の分岐後、キャッシュのエントリは、"B"を予測される
宛先として含むように更新される。その後、"A"への次
の分岐の後、キャッシュは再度"A"を宛先として予測す
るように更新される。この例では、キャッシュは常に、
この分岐命令の宛先を誤って予測することになる。
【0009】
【発明が解決しようとする課題】従って、キャッシュを
用いて、特定のタイプのアドレス予測可能分岐命令の宛
先の予測の精度を向上させるデータ処理システム及び方
法が待望される。
【0010】
【課題を解決するための手段】キャッシュを用いて、分
岐命令の宛先の予測の精度を向上させるスーパスカラ・
プロセッサ及び方法が開示される。キャッシュが複数の
エントリを含んで確立される。複数の分岐命令の各々
は、キャッシュのエントリの1つに関連付けられる。キ
ャッシュのエントリの1つは、キャッシュのこのエント
リに関連付けられる分岐命令の予測される宛先を記憶す
る。予測された宛先は、分岐命令の実行に際して、その
分岐命令が分岐すると予測される宛先である。予測され
て記憶される宛先は、分岐命令の宛先の2度の連続する
予測誤りに応答してのみ、キャッシュのエントリの1つ
内で更新される。ここで2度の連続する予測誤りは、キ
ャッシュのエントリの1つを用いて行われる。
【0011】本発明の前述の目的、及びその他の目的、
特徴及び利点が、以下の詳細から明らかになろう。
【0012】
【発明の実施の形態】本発明の新規の特徴が、付随する
特許請求の範囲で述べられる。しかしながら、本発明並
びにその好適な使用モード、更に目的及び利点は、添付
の図面を参照しながら後述する好適な実施例を参照する
ことにより、最もよく理解できるであろう。
【0013】本発明は一般にスーパスカラ・プロセッサ
に関し、特に、こうしたプロセッサの全体スループット
を向上させるシステム及び方法に関する。以下の説明
は、当業者が本発明を利用することを可能にするため
に、また特許出願及びその要件というからみで述べられ
る。当業者であれば、好適な実施例の様々な変更が容易
に明らかであろう。ここでの一般的な原理は、他の実施
例にも適用可能である。従って、本発明はここで示され
る実施例に限られるものではなく、本発明の原理及び特
徴に矛盾しない最も広い範囲において、許容されるもの
である。
【0014】本発明はスーパスカラ・プロセッサにおい
て、キャッシュを用いることにより、特定タイプのアド
レス予測可能分岐命令の宛先の予測の精度を向上させる
システム及び方法である。ここで命令はアドレス予測可
能な分岐命令であり、そのターゲット・アドレスは別の
レジスタに記憶される。このタイプのアドレス予測可能
分岐命令のターゲット・アドレスは、命令自身から計算
することができない。
【0015】キャッシュは複数のエントリを含む。各ア
ドレス予測可能分岐命令は、エントリの1つに関連付け
られる。アドレス予測可能分岐命令に関連付けられるエ
ントリは、アドレス予測可能分岐命令が次に実行される
際に分岐すると予測される宛先を記憶する。
【0016】本発明の重要な特徴によれば、各キャッシ
ュ・エントリがそれに関連付けられる確認ビットを含
む。確認ビットは、特定のアドレス予測可能分岐命令の
連続する予測誤りを追跡するために使用される。好適に
は、確認ビットは単一ビットである。しかしながら、当
業者であれば、複数のビットが使用され得ることが理解
できよう。例えば、確認ビットは2ビット乃至3ビット
を用いて実現される。
【0017】アドレス予測可能分岐命令がフェッチされ
るとき、アドレス予測可能分岐命令に関連付けられるキ
ャッシュのエントリが読出されて、分岐の予測される宛
先が決定される。更に、このエントリに関連付けられる
確認ビットも読出される。次にアドレス予測可能分岐命
令が実行されて、実際の宛先が決定される。
【0018】アドレス予測可能分岐命令が分岐した実際
の宛先が、キャッシュ・エントリから読出された予測さ
れた宛先と同一の場合、確認ビットは1にセットされ
る。
【0019】確認ビットが1にセットされると、確認ビ
ットは最後の予測が正しかったか、或いは、キャッシュ
・エントリがアドレス予測可能分岐命令の最後の実行に
対して正しい予測を含むように更新されたことを示す。
【0020】アドレス予測可能分岐命令が分岐した実際
の宛先が、キャッシュ・エントリから読出された予測さ
れた宛先と異なる場合、確認ビットの設定が決定され
る。予測を行う際に確認ビットが1にセットされ、最後
の予測が正しかったことを示す場合、確認ビットはゼロ
にリセットされる。このように、このアドレス予測可能
分岐命令の次の実行のために、確認ビットはこの予測が
不正であったことを示す。
【0021】予測を行う際に確認ビットが既にゼロにセ
ットされ、最後の予測が不正であったことを示す場合、
キャッシュ・エントリは実際の宛先をエントリに記憶す
ることにより更新される。確認ビットもまた1にセット
される。このように、このアドレス予測可能分岐命令の
次の実行のために、確認ビットは、キャッシュ・エント
リに記憶される予測が、分岐が最後に実行されたときの
実際の宛先であったことを示す。
【0022】1例として、連続実行中に次の分岐パター
ンに従う、すなわち、最初に位置"A"に分岐し、次に"
B"、"A"、"C"の順に分岐し、再度"A"に分岐する特
定のアドレス予測可能分岐命令について考えてみよう。
このアドレス予測可能分岐命令は位置"A"に最も頻繁に
分岐することは明らかである。従って、キャッシュのエ
ントリは、エントリが宛先"A"を含むならば、最も頻繁
に正しいことになる。
【0023】分岐が最初に実行されるとき、キャッシュ
のエントリが値"A"を有さないと仮定して、確認ビット
が読出される。確認ビットの現行値がゼロにセットされ
ており、この分岐が最後に実行されたとき、キャッシュ
が不正な予測を含んだことを示すと仮定すると、確認ビ
ットは1にセットされ、エントリは宛先"A"を記憶する
ように更新される。
【0024】更に説明を続けると、実際の宛先"B"への
次の実行に対して、キャッシュは不正な予測"A"、及び
確認ビットとして"1"を含む。従って、この実行では、
キャッシュに記憶される予測は更新されない。しかしな
がら、確認ビットはゼロにリセットされる。実際の宛
先"A"への次の実行に対して、キャッシュは正しい予
測"A"及び確認ビットとしてゼロを含む。従って、この
実行に際してキャッシュに記憶される予測は更新されな
い。しかしながら、確認ビットは1にセットされる。実
際の宛先"C"への次の実行に対してキャッシュは不正な
予測"A"、及び確認ビットとして"1"を含む。従って、
この実行では、キャッシュに記憶される予測は更新され
ないが、確認ビットはゼロにリセットされる。この例か
ら容易に明らかなように、キャッシュ値は2度の連続す
る予測誤りが発生しない限り、同一のまま維持され、こ
のことは同一のキャッシュ・エントリを用いて決定され
る。
【0025】1つのキャッシュ・エントリを用いて決定
される最初の予測は、異なるキャッシュ・エントリを用
いて決定される第2の予測に連続しない。2つの予測が
連続するには、予測は同一のキャッシュ・エントリを用
いて決定されなければならない。
【0026】別の例として、複数のアドレス予測可能分
岐命令が同一のキャッシュ・エントリをエイリアスすな
わち別名で使用する。エイリアシングは2つ以上の命令
が同一のキャッシュ・エントリにマップされるとき発生
する。エントリがエイリアスされるとき、エントリはそ
のキャッシュ・エントリにマップされる命令の1つだけ
のための予測を含む。例えば、命令のセットA、B、C
及びDが全て同一のキャッシュ・エントリにエイリアス
されると仮定する。この例では、第1の命令Aが位置a
に分岐し、第2の命令Bが位置bに分岐し、第3の命令
Cが位置cに分岐し、第4の命令Dが位置dに分岐す
る。これらの4つの命令が1つのキャッシュ・エントリ
にマップされる場合、エントリはこれらの命令の1つだ
けの予測を含む。
【0027】また、命令の実行順序が次のようであると
仮定する。すなわち、A、A、B、A、C、A、A、
D、A。関連付けられる確認ビットの開始値がゼロとす
ると、このキャッシュ・エントリに記憶される予測は、
このエントリを利用するに当たり、2度の連続する予測
誤りが発生するときだけ変化する。本発明を使用する
と、キャッシュが5度正確に正しいターゲット宛先を予
測する。本発明を使用しない場合には、キャッシュは正
しいターゲット宛先を2度しか予測しない。
【0028】スーパスカラ・プロセッサは次のように、
プロセッサ・パイプライン内で多数のステージを含む。
各ステージは1つ以上のパイプラインを含む。命令フェ
ッチ・ステージと呼ばれる典型的な第1ステージでは、
命令がメモリ階層からフェッチされる。次に、解読ステ
ージでは、命令が異なる制御ビットに解読され、これら
は一般に(1)命令により指定される演算を実行する機
能ユニットのタイプ、(2)演算のソース・オペラン
ド、及び(3)演算の結果の宛先を指定する。
【0029】ディスパッチ・ステージでは、解読された
命令が制御ビットに従い、実行ステージを有するユニッ
トへ、またはことによると介在する予約ステーションに
ディスパッチされ、これらが最終的に、命令を関連付け
られる実行ステージ(実行ユニットとも呼ばれる)へ発
行する。
【0030】実行ステージは命令により指定される演算
を処理する。命令により指定される演算の実行は、1つ
以上のオペランドの受諾、及び1つ以上の結果の使用可
能オペランド順序での生成を含む。
【0031】完了ステージは、並行実行から生じるプロ
グラム順序の問題、すなわち、複数の並行して実行され
る命令が、結果を1つのレジスタに預ける問題を取り扱
う。これはまた、中断された命令に続いて、結果を宛先
レジスタに預ける命令に起因する回復問題を扱う。
【0032】図1は、本発明に従うスーパスカラ・プロ
セッサ100のブロック図である。プロセッサは命令フ
ェッチ・ユニット(IFU)106を含み、これは信号
を解読ユニット104に提供する。解読ユニット104
はリネーム・マッピング構造102を使用する。リネー
ム・マッピング構造102は、情報を直接発行キュー1
11乃至117に提供する。発行キュー111、11
3、115及び117は次に、実行ユニット110、1
12a及び112b、114a及び114b、及び11
6a及び116bに供給する。
【0033】命令キャッシュ108は、IFU106か
ら受信される命令を記憶する。データ・キャッシュ13
0は、データを実行ユニット110乃至116から受信
する。レベル2(L2)キャッシュ120は、データ・
キャッシュ130及び命令キャッシュ108からデータ
及び命令を記憶するために使用される。プロセッサ10
0はバス・インタフェース・ユニット(BIU)135
を含み、これは情報をL2キャッシュ120と周辺装置
インタフェース125との間で渡す。
【0034】この実施例では、分岐発行キュー111が
情報を条件レジスタ(CR)論理または分岐ユニット1
10に提供する。浮動小数点発行キュー(FIQ)11
3は、情報を2つの浮動小数点ユニット(FPU)11
2a及び112bに提供する。発行キュー(IQ)11
5は、情報を固定小数点ユニット(FXU)114a及
びロード/ストア・ユニット(LSU)116に提供す
る。IQ117は、情報をFXU114b及びLSU1
16bに提供する。発行キューは前述のように構成され
るが、当業者であれば、発行キューが本発明の範囲内に
おいて異なって構成され得ることが容易に理解できよ
う。
【0035】条件レジスタ118は、CRバス101と
の間で情報をやり取りする。浮動小数点体系レジスタ
(FPR)120は、FPRバス105との間で情報を
やり取りする。汎用レジスタ(GPR)124及び12
6は、GPRバス103との間で情報をやり取りする。
完了ユニット107は、完了バス109を介して、リネ
ーム・マッピング102に情報を提供する。
【0036】分岐ユニット110は、条件レジスタ0乃
至7(CR0乃至CR7)を用いて、CRバス101を
介して情報をやり取りする。FPU112a及びFPU
112bは、条件レジスタ1を用いて、CRバス101
を介してCR118に情報を提供する。FPU112a
及び112bもまたFPRバス105を介して、FPR
プール120との間で情報をやり取りする。FXU11
4a、FXU114b、LSU116a、及びLSU1
16bは、条件レジスタ0を用いて、結果をCRバス1
01を介してCR118に出力する。FXU114a、
FXU114b、LSU116a、及びLSU116b
はまた、GPRバス103を介して、GPRプール12
2との間で情報をやり取りする。GPRプール122は
シャドーGPR構成を用いて実現され、そこには2つの
GPRすなわちGPR124及びGPR126が含まれ
る。全ての実行ユニット110乃至116は、完了バス
109を介して、結果を完了ユニット107に提供す
る。
【0037】図2は、本発明の方法及びシステムに従
い、キャッシュの各エントリに関連付けられる確認ビッ
トを含むキャッシュを示す図である。キャッシュ200
は複数のエントリ202を含むように示される。また複
数の確認ビット204が、キャッシュ200内に含まれ
る。各エントリは、関連付けられる確認ビットを有す
る。各キャッシュ・エントリは、エントリに関連付けら
れるアドレス予測可能分岐命令の宛先の予測を含む。例
えば、エントリ206に関連付けられるアドレス予測可
能分岐命令では、予測がフィールド208に記憶され、
確認ビットの値がフィールド210に記憶される。
【0038】図3は、本発明の方法及びシステムに従
い、各エントリが確認ビットを関連付けられて有する、
複数のエントリを有するキャッシュを確立する様子を示
すハイレベル・フローチャートである。プロセスはブロ
ック300で開始し、その後ブロック302に移行し
て、複数のエントリを含むキャッシュを確立する。次
に、ブロック304で、異なる確認ビットを確立し、キ
ャッシュの各エントリに関連付ける。プロセスは次にブ
ロック306に移行し、各アドレス予測可能分岐命令を
キャッシュのエントリの1つに関連付ける。プロセスは
次にブロック308で終了する。
【0039】好適な実施例では、アドレス予測可能分岐
命令をキャッシュの特定のエントリに関連付けるため
に、ハッシング機構が利用される。アドレス予測可能分
岐命令は、そのアドレス予測可能分岐命令のアドレスを
用いて、キャッシュのエントリに関連付けられる。アド
レス予測可能分岐命令のアドレス部分が、その命令のた
めに使用するキャッシュのエントリを決定するために使
用される。例えば、64ビットRISCアーキテクチャ
では、ビット52乃至58がキャッシュ内のエントリを
選択するために使用される。当業者であれば、他の関連
付け機構も使用され得ることが理解できよう。
【0040】図4は、本発明の方法及びシステムに従
い、キャッシュ内のエントリに関連付けられる確認ビッ
トを用いて、アドレス予測可能分岐命令の宛先の予測を
向上させるハイレベル・フローチャートである。プロセ
スはブロック400で開始し、その後ブロック402に
移行して、次の命令をフェッチする。次に、ブロック4
04で、次の命令がアドレス予測可能分岐命令であるか
否かが判断される。命令は無条件アドレス予測可能分岐
命令、または条件付きアドレス予測可能分岐命令のいず
れかであるかもしれない。次の命令がアドレス予測可能
分岐命令でないと判断される場合、プロセスはブロック
402に戻る。
【0041】ブロック404を再度参照して、次の命令
がアドレス予測可能分岐命令であると判断されると、プ
ロセスはブロック407に移行し、どのキャッシュ・エ
ントリがこの特定のアドレス予測可能分岐命令に関連付
けられるかを判断する。アドレス予測可能分岐命令のア
ドレス部分が、ターゲット・アドレスを予測するために
使用されるべきキャッシュのエントリを決定するために
使用される。例えば、64ビットRISCアーキテクチ
ャでは、アドレス予測可能分岐命令のアドレスのビット
52乃至58が、好適な実施例の128エントリ・キャ
ッシュを指標付けするために使用され得る。当業者であ
れば、同じ結果を得るために、他の関連付け機構も使用
され得ることが理解できよう。
【0042】その後、ブロック408で、このアドレス
予測可能分岐命令において、無条件分岐または条件付き
分岐の発生が予測されるかが判断される。このアドレス
予測可能分岐命令において、無条件分岐または条件付き
分岐の発生が予測される場合、プロセスはブロック41
0に移行する。再度ブロック408を参照して、このア
ドレス予測可能分岐命令において、無条件分岐または条
件付き分岐のいずれの発生も予測されない場合には、プ
ロセスはブロック409に移行する。ブロック409で
は、順次アドレスから次の命令をフェッチする。プロセ
スは次にブロック412に移行する。
【0043】ブロック410を参照すると、ブロック4
10では、ブロック407で決定されたキャッシュのエ
ントリを読出し、このアドレス予測可能分岐命令の予測
される宛先を決定する。次に、ブロック411で、予測
された宛先から命令をフェッチする。次にブロック41
2で、キャッシュのこのエントリに関連付けられる確認
ビットを読出す。プロセスは次にブロック414に移行
し、このアドレス予測可能分岐命令を実行し、実行され
たアドレス予測可能分岐命令の実際の宛先を決定する。
【0044】次にブロック416で、このアドレス予測
可能命令において、無条件分岐または条件付き分岐が発
生したか否かを判断する。アドレス予測可能命令におい
て、無条件分岐命令も条件付き分岐命令も発生しなかっ
た場合、プロセスはブロック402に戻る。再度ブロッ
ク416を参照して、アドレス予測可能命令において、
無条件分岐または条件付き分岐が発生した場合、プロセ
スはブロック418に移行する。
【0045】ブロック418では、アドレス予測可能分
岐命令が予測された宛先に分岐したか、すなわち、予測
された宛先が実際の宛先に等しいか否かが判断される。
アドレス予測可能分岐命令が予測された宛先に分岐した
と判断されると、プロセスはブロック420に移行し、
このアドレス予測可能分岐命令に対して、キャッシュの
エントリに関連付けられる確認ビットが"1"に等しいか
否かが判断される。このアドレス予測可能分岐命令に対
して、キャッシュのエントリに関連付けられる確認ビッ
トが"1"に等しい場合、プロセスはブロック402に移
行する。再度ブロック420を参照して、このアドレス
予測可能分岐命令に対して、キャッシュのエントリに関
連付けられる確認ビットが"1"に等しくない、すなわ
ち、"0"と判断されると、プロセスはブロック421に
移行し、このアドレス予測可能分岐命令に対するエント
リに関連付けられる確認ビットを、"1"にセットする。
プロセスは次にブロック402に移行する。
【0046】再度ブロック418を参照して、アドレス
予測可能分岐命令が予測された宛先に分岐しなかったと
判断されると、プロセスはブロック422に移行し、こ
の分岐命令の後に、フェッチされた全ての命令をフラッ
シュする。次にブロック424で、正しいアドレスから
命令をフェッチする。その後ブロック426で、このア
ドレス予測可能分岐命令に対して、キャッシュのエント
リに関連付けられる確認ビットが"1"か否かが判断され
る。このアドレス予測可能分岐命令に対して、キャッシ
ュのエントリに関連付けられる確認ビットが"1"に等し
いと判断されると、プロセスはブロック428に移行
し、キャッシュのこのエントリの確認ビットを"0"にセ
ットする。プロセスは次にブロック402に移行する。
【0047】再度ブロック426を参照して、このアド
レス予測可能分岐命令に対して、キャッシュのエントリ
に関連付けられる確認ビットが"1"に等しくない、すな
わち"0"と判断されると、プロセスはブロック430に
移行し、アドレス予測可能分岐命令が分岐した実際の宛
先を、このアドレス予測可能分岐命令に関連付けられる
キャッシュのエントリに書込む。その後、ブロック43
2はキャッシュのこのエントリの確認ビットを"1"にセ
ットする。プロセスは次にブロック402に移行する。
【0048】以上、好適な実施例について述べてきた
が、当業者であれば、本発明の趣旨及び範囲内におい
て、形態及び詳細における様々な変化が可能であること
が理解できよう。
【0049】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0050】(1)プロセッサにおける分岐予測方法で
あって、分岐命令の予測される分岐宛先を記憶するステ
ップと、第1の分岐命令を実行する第1のインスタンス
に応答して、記憶された宛先が予測誤りであったか否か
を判断するステップと、予測された分岐宛先が、分岐命
令を実行する前記第1のインスタンスにおいて予測誤り
であったか否かに関わらず、前記記憶された宛先を保持
するステップと、分岐命令を実行する第2のインスタン
スに応答して、記憶された宛先が予測誤りであったか否
かを判断するステップと、分岐命令を実行する前記第1
及び第2の両方のインスタンスにおいて、前記記憶され
た宛先が予測誤りであったことに応答して、前記記憶さ
れた宛先を変更するステップとを含む、方法。 (2)前記変更するステップが、第1の分岐命令を実行
する前記第1及び第2のインスタンスが連続して発生す
ることに応答して行われる、前記(1)記載の方法。 (3)前記予測された分岐宛先を、前記分岐命令に関連
付けられるキャッシュ内の複数のエントリの1つに記憶
するステップを含む、前記(2)記載の方法。 (4)前記キャッシュの前記複数のエントリの各々を、
連続する予測誤りを判断するために使用される複数の確
認ビットの異なる1つに関連付けるステップを含む、前
記(3)記載の方法。 (5)前記分岐命令を実行する前に、前記分岐命令に関
連付けられる前記複数のエントリの前記1つを読出すス
テップを含む、前記(4)記載の方法。 (6)前記記憶された宛先が予測誤りであることに応答
して、前記複数の確認ビットの前記1つが1にセットさ
れているか否かを判断するステップと、前記複数の確認
ビットの前記1つが1にセットされていることに応答し
て、前記複数の確認ビットの前記1つをゼロにリセット
するステップとを含む、前記(5)記載の方法。 (7)前記複数の確認ビットの前記1つがゼロにセット
されていることに応答して、実際の宛先を前記キャッシ
ュの前記複数のエントリの前記1つに記憶することによ
り、前記複数のエントリの前記1つを更新するステップ
と、前記確認ビットの前記1つを1にセットするステッ
プとを含む、前記(6)記載の方法。 (8)前記記憶された宛先が正しい予測であることに応
答して、前記複数の確認ビットの前記1つがゼロにセッ
トされているか否かを判断するステップと、前記複数の
確認ビットの前記1つがゼロにセットされていることに
応答して、前記確認ビットの前記1つを1にセットする
ステップとを含む、前記(7)記載の方法。 (9)プロセッサにおける分岐予測方法であって、少な
くとも第1及び第2の分岐命令を含む分岐命令セットを
エイリアシングするステップと、前記分岐命令セットの
1つに対する分岐宛先を予測し、予測された分岐宛先を
前記分岐命令セットの1つの予測として記憶するステッ
プと、前記分岐命令セットから命令を実行するインスタ
ンスに応答して、記憶された宛先がそれぞれのインスタ
ンスにおいて予測誤りであったか否かを判断するステッ
プと、前記分岐命令セットからの命令に関して、予測誤
りが連続することに応答して、前記記憶された宛先を変
更するステップと、記憶された宛先を変更して後、前記
分岐命令セットからの命令の1つを実行する第1のイン
スタンスにおいて、前記記憶された宛先を変更無しに保
持するステップとを含む、分岐予測方法。 (10)前記記憶された宛先を変更無しに保持するステ
ップが、前記分岐命令セットから命令を実行する連続す
るインスタンスの間に、他の分岐命令に加えてエイリア
ス・セットの命令が介在することを問わない、前記
(9)記載の方法。 (11)前記記憶された宛先を変更無しに保持するステ
ップが、前記第1のインスタンスの後、特定のインスタ
ンスに応答して、前記記憶された宛先を変更無しに保持
するステップを含み、前記記憶された宛先を変更するス
テップが、前記分岐命令セットからの命令に関して、予
測誤りが少なくとも2度の連続シーケンスであることに
応答して変更するステップを含む、前記(10)記載の
方法。 (12)前記予測された分岐宛先を、前記分岐命令に関
連付けられるキャッシュ内の複数のエントリの1つに記
憶するステップを含む、前記(11)記載の方法。 (13)前記キャッシュの前記複数のエントリの各々
を、連続する予測誤りを判断するために使用される複数
の確認ビットの異なる1つに関連付けるステップを含
む、前記(12)記載の方法。 (14)前記分岐命令セットからの命令の1つを実行す
る前に、当該命令に関連付けられる前記複数のエントリ
の1つを読出すステップを含む、前記(13)記載の方
法。 (15)前記記憶された宛先が予測誤りであることに応
答して、前記複数の確認ビットの前記1つが1にセット
されているか否かを判断するステップと、前記複数の確
認ビットの前記1つが1にセットされていることに応答
して、前記確認ビットの前記1つをゼロにリセットする
ステップとを含む、前記(14)記載の方法。 (16)前記複数の確認ビットの前記1つがゼロにセッ
トされていることに応答して、実際の宛先を前記キャッ
シュの前記複数のエントリの前記1つに記憶することに
より、前記複数のエントリの前記1つを更新するステッ
プと、前記確認ビットの前記1つを1にセットするステ
ップとを含む、前記(15)記載の方法。 (17)前記記憶された宛先が正しい予測であることに
応答して、前記複数の確認ビットの前記1つがゼロにセ
ットされているか否かを判断するステップと、前記複数
の確認ビットの前記1つがゼロにセットされていること
に応答して、前記確認ビットの前記1つを1にセットす
るステップとを含む、前記(16)記載の方法。 (18)プロセッサに含まれるキャッシュを用いて、複
数の分岐命令の1つの宛先の予測の精度を向上させる前
記プロセッサにおける方法であって、前記キャッシュが
複数のエントリを含み、前記複数の分岐命令の各々が、
前記キャッシュの前記複数のエントリの1つに関連付け
られるものにおいて、前記複数の分岐命令の1つの予測
される分岐宛先を、当該分岐命令に関連付けられる前記
キャッシュの前記複数のエントリの1つに記憶するステ
ップと、前記キャッシュの前記複数のエントリの前記1
つを用いて行われる、前記複数の分岐命令の前記1つの
宛先の2度の連続する予測誤りに応答して、前記キャッ
シュの前記複数のエントリの前記1つに記憶される前記
予測される分岐宛先を更新するステップとを含む、方
法。 (19)前記キャッシュの前記複数のエントリの各々
を、連続する予測誤りを決定するために使用される複数
の確認ビットの異なる1つに関連付けるステップを含
む、前記(18)記載の方法。 (20)実行の間に実際の宛先に分岐する、前記複数の
分岐命令の前記1つを実行するステップを含む、前記
(19)記載の方法。 (21)前記実際の宛先と前記予測された分岐宛先とを
比較するステップと、前記実際の宛先が前記予測された
分岐宛先と異なることに応答して、前記予測された分岐
宛先の前に行われた先行予測が不正であったか否かを判
断するステップと、前記先行予測が不正であったことに
応答して、前記実際の宛先を前記複数のエントリの前記
1つに記憶することにより、前記複数のエントリの前記
1つに記憶される前記予測される分岐宛先を更新するス
テップとを含む、前記(20)記載の方法。 (22)前記複数の分岐命令の前記1つを実行するステ
ップの前に、前記複数の分岐命令の前記1つに関連付け
られる前記複数のエントリの前記1つを読出すステップ
を含む、前記(21)記載の方法。 (23)前記複数のエントリの前記1つに関連付けられ
る前記複数の確認ビットの前記1つを読出すステップ
と、前記実際の宛先が前記予測された分岐宛先と異なる
ことに応答して、前記複数の確認ビットの前記1つが1
にセットされているか否かを判断するステップと、前記
複数の確認ビットの前記1つが1にセットされているこ
とに応答して、前記複数の確認ビットの前記1つをゼロ
にリセットするステップとを含む、前記(22)記載の
方法。 (24)前記複数の確認ビットの前記1つがゼロにセッ
トされていることに応答して、前記実際の宛先を前記キ
ャッシュの前記複数のエントリの前記1つに記憶するこ
とにより、前記複数のエントリの前記1つを更新するス
テップと、前記確認ビットの前記1つを1にセットする
ステップとを含む、前記(23)記載の方法。 (25)前記実際の宛先が前記予測された宛先に等しい
ことに応答して、前記複数の確認ビットの前記1つがゼ
ロにセットされているか否かを判断するステップと、前
記複数の確認ビットの前記1つがゼロにセットされてい
ることに応答して、前記確認ビットの前記1つを1にセ
ットするステップとを含む、前記(24)記載の方法。 (26)前記キャッシュの前記複数のエントリの各々
を、複数の確認ビットの異なる1つに関連付けるステッ
プにおいて、前記複数の確認ビットの各々が1ビットを
含む、前記(25)記載の方法。 (27)前記キャッシュの前記複数のエントリの各々
を、複数の確認ビットの異なる1つに関連付けるステッ
プにおいて、前記複数の確認ビットの各々が2ビットを
含む、前記(26)記載の方法。 (28)分岐命令予測の精度を向上させるプロセッサで
あって、分岐命令の予測される分岐宛先を記憶する手段
と、第1の分岐命令を実行する第1のインスタンスに応
答して、記憶された宛先が予測誤りであったか否かを判
断する手段と、予測された分岐宛先が、分岐命令を実行
する前記第1のインスタンスにおいて予測誤りであった
か否かに関わらず、前記記憶された宛先を保持する手段
と、分岐命令を実行する第2のインスタンスに応答し
て、記憶された宛先が予測誤りであったか否かを判断す
る手段と、分岐命令を実行する前記第1及び第2の両方
のインスタンスにおいて、前記記憶された宛先が予測誤
りであったことに応答して、前記記憶された宛先を変更
する手段とを含む、プロセッサ。 (29)前記変更する手段が、第1の分岐命令を実行す
る前記第1及び第2のインスタンスが連続して発生する
ことに応答して変更する手段を含む、前記(28)記載
のプロセッサ。 (30)前記予測された分岐宛先を、前記分岐命令に関
連付けられるキャッシュ内の複数のエントリの1つに記
憶する手段を含む、前記(29)記載のプロセッサ。 (31)前記キャッシュの前記複数のエントリの各々
を、連続する予測誤りを判断するために使用される複数
の確認ビットの異なる1つに関連付ける手段を含む、前
記(30)記載のプロセッサ。 (32)前記分岐命令を実行する前に、前記分岐命令に
関連付けられる前記複数のエントリの前記1つを読出す
手段を含む、前記(31)記載のプロセッサ。 (33)前記記憶された宛先が予測誤りであることに応
答して、前記複数の確認ビットの前記1つが1にセット
されているか否かを判断する手段と、前記複数の確認ビ
ットの前記1つが1にセットされていることに応答し
て、前記複数の確認ビットの前記1つをゼロにリセット
する手段とを含む、前記(32)記載のプロセッサ。 (34)前記複数の確認ビットの前記1つがゼロにセッ
トされていることに応答して、実際の宛先を前記キャッ
シュの前記複数のエントリの前記1つに記憶することに
より、前記複数のエントリの前記1つを更新する手段
と、前記確認ビットの前記1つを1にセットする手段と
を含む、前記(33)記載のプロセッサ。 (35)前記記憶された宛先が正しい予測であることに
応答して、前記複数の確認ビットの前記1つがゼロにセ
ットされているか否かを判断する手段と、前記複数の確
認ビットの前記1つがゼロにセットされていることに応
答して、前記確認ビットの前記1つを1にセットする手
段とを含む、前記(34)記載のプロセッサ。 (36)分岐予測を向上させるプロセッサであって、少
なくとも第1及び第2の分岐命令を含む分岐命令セット
をエイリアシングする手段と、前記分岐命令セットの1
つに対する分岐宛先を予測し、予測された分岐宛先を前
記分岐命令セットの1つの予測として記憶する手段と、
前記分岐命令セットから命令を実行するインスタンスに
応答して、記憶された宛先がそれぞれのインスタンスに
おいて予測誤りであったか否かを判断する手段と、前記
分岐命令セットからの命令に関して、予測誤りが連続す
ることに応答して、前記記憶された宛先を変更する手段
と、記憶された宛先を変更して以来、前記分岐命令セッ
トからの命令の1つを実行する第1のインスタンスにお
いて、前記記憶された宛先を変更無しに保持する手段と
を含む、プロセッサ。 (37)前記記憶された宛先を変更無しに保持する手段
が、前記分岐命令セットから命令を実行する連続するイ
ンスタンスの間に、他の分岐命令に加えてエイリアス・
セットの命令が介在することを問わない、前記(36)
記載のプロセッサ。 (38)前記記憶された宛先を変更無しに保持する手段
が、前記第1のインスタンスの後、特定のインスタンス
に応答して、前記記憶された宛先を変更無しに保持する
手段を含み、前記記憶された宛先を変更する手段が、前
記分岐命令セットからの命令に関して、予測誤りが少な
くとも2度の連続シーケンスであることに応答して変更
する手段を含む、前記(37)記載のプロセッサ。 (39)前記予測された分岐宛先を、前記分岐命令に関
連付けられるキャッシュ内の複数のエントリの1つに記
憶する手段を含む、前記(38)記載のプロセッサ。 (40)前記キャッシュの前記複数のエントリの各々
を、連続する予測誤りを判断するために使用される複数
の確認ビットの異なる1つに関連付ける手段を含む、前
記(39)記載のプロセッサ。 (41)前記分岐命令セットからの命令の1つを実行す
る前に、当該命令に関連付けられる前記複数のエントリ
の1つを読出す手段を含む、前記(40)記載のプロセ
ッサ。 (42)前記記憶された宛先が予測誤りであることに応
答して、前記複数の確認ビットの前記1つが1にセット
されているか否かを判断する手段と、前記複数の確認ビ
ットの前記1つが1にセットされていることに応答し
て、前記確認ビットの前記1つをゼロにリセットする手
段とを含む、前記(41)記載のプロセッサ。 (43)前記複数の確認ビットの前記1つがゼロにセッ
トされていることに応答して、実際の宛先を前記キャッ
シュの前記複数のエントリの前記1つに記憶することに
より、前記複数のエントリの前記1つを更新する手段
と、前記確認ビットの前記1つを1にセットする手段と
を含む、前記(42)記載のプロセッサ。 (44)前記記憶された宛先が正しい予測であることに
応答して、前記複数の確認ビットの前記1つがゼロにセ
ットされているか否かを判断する手段と、前記複数の確
認ビットの前記1つがゼロにセットされていることに応
答して、前記確認ビットの前記1つを1にセットする手
段とを含む、前記(43)記載のプロセッサ。 (45)プロセッサに含まれるキャッシュを用いて、複
数の分岐命令の1つの宛先の予測の精度を向上させるプ
ロセッサであって、前記キャッシュが複数のエントリを
含み、前記複数の分岐命令の各々が、前記キャッシュの
前記複数のエントリの1つに関連付けられるものにおい
て、前記複数の分岐命令の1つの予測される分岐宛先
を、当該分岐命令に関連付けられる前記キャッシュの前
記複数のエントリの1つに記憶する手段と、前記キャッ
シュの前記複数のエントリの前記1つを用いて行われ
る、前記複数の分岐命令の前記1つの宛先の2度の連続
する予測誤りに応答して、前記キャッシュの前記複数の
エントリの前記1つに記憶される前記予測される分岐宛
先を更新する手段とを含む、プロセッサ。 (46)前記キャッシュの前記複数のエントリの各々
を、連続する予測誤りを決定するために使用される複数
の確認ビットの異なる1つに関連付ける手段を含む、前
記(45)記載のプロセッサ。 (47)実行の間に実際の宛先に分岐する、前記複数の
分岐命令の前記1つを実行する手段を含む、前記(4
6)記載のプロセッサ。 (48)前記実際の宛先と前記予測された分岐宛先とを
比較する手段と、前記実際の宛先が前記予測された分岐
宛先と異なることに応答して、前記予測された分岐宛先
の前に行われた先行予測が不正であったか否かを判断す
る手段と、前記先行予測が不正であったことに応答し
て、前記実際の宛先を前記複数のエントリの前記1つに
記憶することにより、前記複数のエントリの前記1つに
記憶される前記予測される分岐宛先を更新する手段とを
含む、前記(47)記載のプロセッサ。 (49)前記複数の分岐命令の前記1つを実行する手段
の前に、前記複数の分岐命令の前記1つに関連付けられ
る前記複数のエントリの前記1つを読出す手段を含む、
前記(48)記載のプロセッサ。 (50)前記複数のエントリの前記1つに関連付けられ
る前記複数の確認ビットの前記1つを読出す手段と、前
記実際の宛先が前記予測される分岐宛先と異なることに
応答して、前記複数の確認ビットの前記1つが1にセッ
トされているか否かを判断する手段と、前記複数の確認
ビットの前記1つが1にセットされていることに応答し
て、前記複数の確認ビットの前記1つをゼロにリセット
する手段とを含む、前記(49)記載のプロセッサ。 (51)前記複数の確認ビットの前記1つがゼロにセッ
トされていることに応答して、前記実際の宛先を前記キ
ャッシュの前記複数のエントリの前記1つに記憶するこ
とにより、前記複数のエントリの前記1つを更新する手
段と、前記確認ビットの前記1つを1にセットする手段
とを含む、前記(50)記載のプロセッサ。 (52)前記実際の宛先が前記予測された宛先に等しい
ことに応答して、前記複数の確認ビットの前記1つがゼ
ロにセットされているか否かを判断する手段と、前記複
数の確認ビットの前記1つがゼロにセットされているこ
とに応答して、前記確認ビットの前記1つを1にセット
する手段とを含む、前記(51)記載のプロセッサ。 (53)前記キャッシュの前記複数のエントリの各々
を、複数の確認ビットの異なる1つに関連付ける手段に
おいて、前記複数の確認ビットの各々が1ビットを含
む、前記(52)記載のプロセッサ。 (54)前記キャッシュの前記複数のエントリの各々
を、複数の確認ビットの異なる1つに関連付ける手段に
おいて、前記複数の確認ビットの各々が2ビットを含
む、前記(53)記載のプロセッサ。
【図面の簡単な説明】
【図1】本発明によるスーパスカラ・プロセッサのブロ
ック図である。
【図2】本発明の方法及びシステムによる、キャッシュ
の各エントリに関連付けられる確認ビットを含むキャッ
シュを示す図である。
【図3】本発明の方法及びシステムにより、各エントリ
が確認ビットを関連付けられて有する、複数のエントリ
を有するキャッシュを確立する様子を示すハイレベル・
フローチャートである。
【図4】本発明の方法及びシステムにより、キャッシュ
内のエントリに関連付けられる確認ビットを用いて、分
岐命令の宛先の予測を向上させるハイレベル・フローチ
ャートである。
【符号の説明】
100 スーパスカラ・プロセッサ 101 CRバス 102 リネーム・マッピング構造 104 解読ユニット 105 FPRバス 106 命令フェッチ・ユニット(IFU) 107 完了ユニット 108 命令キャッシュ 109 完了バス 110、112a、112b、114a、114b、1
16a、116b 実行ユニット 111、113、115、117 直接発行キュー 118 条件レジスタ 120 レベル2(L2)キャッシュ 122 汎用レジスタ(GPR)プール 124、126 汎用レジスタ(GPR) 125 周辺装置インタフェース 130 データ・キャッシュ 135 バス・インタフェース・ユニット(BIU) 202、206、212 エントリ 204 確認ビット 208、210 フィールド 200 キャッシュ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 12/08 561 G06F 12/08 561

Claims (54)

    【特許請求の範囲】
  1. 【請求項1】プロセッサにおける分岐予測方法であっ
    て、 分岐命令の予測される分岐宛先を記憶するステップと、 第1の分岐命令を実行する第1のインスタンスに応答し
    て、記憶された宛先が予測誤りであったか否かを判断す
    るステップと、 予測された分岐宛先が、分岐命令を実行する前記第1の
    インスタンスにおいて予測誤りであったか否かに関わら
    ず、前記記憶された宛先を保持するステップと、 分岐命令を実行する第2のインスタンスに応答して、記
    憶された宛先が予測誤りであったか否かを判断するステ
    ップと、 分岐命令を実行する前記第1及び第2の両方のインスタ
    ンスにおいて、前記記憶された宛先が予測誤りであった
    ことに応答して、前記記憶された宛先を変更するステッ
    プとを含む、方法。
  2. 【請求項2】前記変更するステップが、第1の分岐命令
    を実行する前記第1及び第2のインスタンスが連続して
    発生することに応答して行われる、請求項1記載の方
    法。
  3. 【請求項3】前記予測された分岐宛先を、前記分岐命令
    に関連付けられるキャッシュ内の複数のエントリの1つ
    に記憶するステップを含む、請求項2記載の方法。
  4. 【請求項4】前記キャッシュの前記複数のエントリの各
    々を、連続する予測誤りを判断するために使用される複
    数の確認ビットの異なる1つに関連付けるステップを含
    む、請求項3記載の方法。
  5. 【請求項5】前記分岐命令を実行する前に、前記分岐命
    令に関連付けられる前記複数のエントリの前記1つを読
    出すステップを含む、請求項4記載の方法。
  6. 【請求項6】前記記憶された宛先が予測誤りであること
    に応答して、前記複数の確認ビットの前記1つが1にセ
    ットされているか否かを判断するステップと、 前記複数の確認ビットの前記1つが1にセットされてい
    ることに応答して、前記複数の確認ビットの前記1つを
    ゼロにリセットするステップとを含む、請求項5記載の
    方法。
  7. 【請求項7】前記複数の確認ビットの前記1つがゼロに
    セットされていることに応答して、実際の宛先を前記キ
    ャッシュの前記複数のエントリの前記1つに記憶するこ
    とにより、前記複数のエントリの前記1つを更新するス
    テップと、 前記確認ビットの前記1つを1にセットするステップと
    を含む、請求項6記載の方法。
  8. 【請求項8】前記記憶された宛先が正しい予測であるこ
    とに応答して、前記複数の確認ビットの前記1つがゼロ
    にセットされているか否かを判断するステップと、 前記複数の確認ビットの前記1つがゼロにセットされて
    いることに応答して、前記確認ビットの前記1つを1に
    セットするステップとを含む、請求項7記載の方法。
  9. 【請求項9】プロセッサにおける分岐予測方法であっ
    て、 少なくとも第1及び第2の分岐命令を含む分岐命令セッ
    トをエイリアシングするステップと、 前記分岐命令セットの1つに対する分岐宛先を予測し、
    予測された分岐宛先を前記分岐命令セットの1つの予測
    として記憶するステップと、 前記分岐命令セットから命令を実行するインスタンスに
    応答して、記憶された宛先がそれぞれのインスタンスに
    おいて予測誤りであったか否かを判断するステップと、 前記分岐命令セットからの命令に関して、予測誤りが連
    続することに応答して、前記記憶された宛先を変更する
    ステップと、 記憶された宛先を変更して後、前記分岐命令セットから
    の命令の1つを実行する第1のインスタンスにおいて、
    前記記憶された宛先を変更無しに保持するステップとを
    含む、分岐予測方法。
  10. 【請求項10】前記記憶された宛先を変更無しに保持す
    るステップが、前記分岐命令セットから命令を実行する
    連続するインスタンスの間に、他の分岐命令に加えてエ
    イリアス・セットの命令が介在することを問わない、請
    求項9記載の方法。
  11. 【請求項11】前記記憶された宛先を変更無しに保持す
    るステップが、前記第1のインスタンスの後、特定のイ
    ンスタンスに応答して、前記記憶された宛先を変更無し
    に保持するステップを含み、前記記憶された宛先を変更
    するステップが、前記分岐命令セットからの命令に関し
    て、予測誤りが少なくとも2度の連続シーケンスである
    ことに応答して変更するステップを含む、請求項10記
    載の方法。
  12. 【請求項12】前記予測された分岐宛先を、前記分岐命
    令に関連付けられるキャッシュ内の複数のエントリの1
    つに記憶するステップを含む、請求項11記載の方法。
  13. 【請求項13】前記キャッシュの前記複数のエントリの
    各々を、連続する予測誤りを判断するために使用される
    複数の確認ビットの異なる1つに関連付けるステップを
    含む、請求項12記載の方法。
  14. 【請求項14】前記分岐命令セットからの命令の1つを
    実行する前に、当該命令に関連付けられる前記複数のエ
    ントリの1つを読出すステップを含む、請求項13記載
    の方法。
  15. 【請求項15】前記記憶された宛先が予測誤りであるこ
    とに応答して、前記複数の確認ビットの前記1つが1に
    セットされているか否かを判断するステップと、 前記複数の確認ビットの前記1つが1にセットされてい
    ることに応答して、前記確認ビットの前記1つをゼロに
    リセットするステップとを含む、請求項14記載の方
    法。
  16. 【請求項16】前記複数の確認ビットの前記1つがゼロ
    にセットされていることに応答して、実際の宛先を前記
    キャッシュの前記複数のエントリの前記1つに記憶する
    ことにより、前記複数のエントリの前記1つを更新する
    ステップと、 前記確認ビットの前記1つを1にセットするステップと
    を含む、請求項15記載の方法。
  17. 【請求項17】前記記憶された宛先が正しい予測である
    ことに応答して、前記複数の確認ビットの前記1つがゼ
    ロにセットされているか否かを判断するステップと、 前記複数の確認ビットの前記1つがゼロにセットされて
    いることに応答して、前記確認ビットの前記1つを1に
    セットするステップとを含む、請求項16記載の方法。
  18. 【請求項18】プロセッサに含まれるキャッシュを用い
    て、複数の分岐命令の1つの宛先の予測の精度を向上さ
    せる前記プロセッサにおける方法であって、前記キャッ
    シュが複数のエントリを含み、前記複数の分岐命令の各
    々が、前記キャッシュの前記複数のエントリの1つに関
    連付けられるものにおいて、 前記複数の分岐命令の1つの予測される分岐宛先を、当
    該分岐命令に関連付けられる前記キャッシュの前記複数
    のエントリの1つに記憶するステップと、 前記キャッシュの前記複数のエントリの前記1つを用い
    て行われる、前記複数の分岐命令の前記1つの宛先の2
    度の連続する予測誤りに応答して、前記キャッシュの前
    記複数のエントリの前記1つに記憶される前記予測され
    る分岐宛先を更新するステップとを含む、方法。
  19. 【請求項19】前記キャッシュの前記複数のエントリの
    各々を、連続する予測誤りを決定するために使用される
    複数の確認ビットの異なる1つに関連付けるステップを
    含む、請求項18記載の方法。
  20. 【請求項20】実行の間に実際の宛先に分岐する、前記
    複数の分岐命令の前記1つを実行するステップを含む、
    請求項19記載の方法。
  21. 【請求項21】前記実際の宛先と前記予測された分岐宛
    先とを比較するステップと、 前記実際の宛先が前記予測された分岐宛先と異なること
    に応答して、前記予測された分岐宛先の前に行われた先
    行予測が不正であったか否かを判断するステップと、 前記先行予測が不正であったことに応答して、前記実際
    の宛先を前記複数のエントリの前記1つに記憶すること
    により、前記複数のエントリの前記1つに記憶される前
    記予測される分岐宛先を更新するステップとを含む、請
    求項20記載の方法。
  22. 【請求項22】前記複数の分岐命令の前記1つを実行す
    るステップの前に、前記複数の分岐命令の前記1つに関
    連付けられる前記複数のエントリの前記1つを読出すス
    テップを含む、請求項21記載の方法。
  23. 【請求項23】前記複数のエントリの前記1つに関連付
    けられる前記複数の確認ビットの前記1つを読出すステ
    ップと、 前記実際の宛先が前記予測された分岐宛先と異なること
    に応答して、前記複数の確認ビットの前記1つが1にセ
    ットされているか否かを判断するステップと、 前記複数の確認ビットの前記1つが1にセットされてい
    ることに応答して、前記複数の確認ビットの前記1つを
    ゼロにリセットするステップとを含む、請求項22記載
    の方法。
  24. 【請求項24】前記複数の確認ビットの前記1つがゼロ
    にセットされていることに応答して、前記実際の宛先を
    前記キャッシュの前記複数のエントリの前記1つに記憶
    することにより、前記複数のエントリの前記1つを更新
    するステップと、 前記確認ビットの前記1つを1にセットするステップと
    を含む、請求項23記載の方法。
  25. 【請求項25】前記実際の宛先が前記予測された宛先に
    等しいことに応答して、前記複数の確認ビットの前記1
    つがゼロにセットされているか否かを判断するステップ
    と、 前記複数の確認ビットの前記1つがゼロにセットされて
    いることに応答して、前記確認ビットの前記1つを1に
    セットするステップとを含む、請求項24記載の方法。
  26. 【請求項26】前記キャッシュの前記複数のエントリの
    各々を、複数の確認ビットの異なる1つに関連付けるス
    テップにおいて、前記複数の確認ビットの各々が1ビッ
    トを含む、請求項25記載の方法。
  27. 【請求項27】前記キャッシュの前記複数のエントリの
    各々を、複数の確認ビットの異なる1つに関連付けるス
    テップにおいて、前記複数の確認ビットの各々が2ビッ
    トを含む、請求項26記載の方法。
  28. 【請求項28】分岐命令予測の精度を向上させるプロセ
    ッサであって、 分岐命令の予測される分岐宛先を記憶する手段と、 第1の分岐命令を実行する第1のインスタンスに応答し
    て、記憶された宛先が予測誤りであったか否かを判断す
    る手段と、 予測された分岐宛先が、分岐命令を実行する前記第1の
    インスタンスにおいて予測誤りであったか否かに関わら
    ず、前記記憶された宛先を保持する手段と、 分岐命令を実行する第2のインスタンスに応答して、記
    憶された宛先が予測誤りであったか否かを判断する手段
    と、 分岐命令を実行する前記第1及び第2の両方のインスタ
    ンスにおいて、前記記憶された宛先が予測誤りであった
    ことに応答して、前記記憶された宛先を変更する手段と
    を含む、プロセッサ。
  29. 【請求項29】前記変更する手段が、第1の分岐命令を
    実行する前記第1及び第2のインスタンスが連続して発
    生することに応答して変更する手段を含む、請求項28
    記載のプロセッサ。
  30. 【請求項30】前記予測された分岐宛先を、前記分岐命
    令に関連付けられるキャッシュ内の複数のエントリの1
    つに記憶する手段を含む、請求項29記載のプロセッ
    サ。
  31. 【請求項31】前記キャッシュの前記複数のエントリの
    各々を、連続する予測誤りを判断するために使用される
    複数の確認ビットの異なる1つに関連付ける手段を含
    む、請求項30記載のプロセッサ。
  32. 【請求項32】前記分岐命令を実行する前に、前記分岐
    命令に関連付けられる前記複数のエントリの前記1つを
    読出す手段を含む、請求項31記載のプロセッサ。
  33. 【請求項33】前記記憶された宛先が予測誤りであるこ
    とに応答して、前記複数の確認ビットの前記1つが1に
    セットされているか否かを判断する手段と、 前記複数の確認ビットの前記1つが1にセットされてい
    ることに応答して、前記複数の確認ビットの前記1つを
    ゼロにリセットする手段とを含む、請求項32記載のプ
    ロセッサ。
  34. 【請求項34】前記複数の確認ビットの前記1つがゼロ
    にセットされていることに応答して、実際の宛先を前記
    キャッシュの前記複数のエントリの前記1つに記憶する
    ことにより、前記複数のエントリの前記1つを更新する
    手段と、 前記確認ビットの前記1つを1にセットする手段とを含
    む、請求項33記載のプロセッサ。
  35. 【請求項35】前記記憶された宛先が正しい予測である
    ことに応答して、前記複数の確認ビットの前記1つがゼ
    ロにセットされているか否かを判断する手段と、 前記複数の確認ビットの前記1つがゼロにセットされて
    いることに応答して、前記確認ビットの前記1つを1に
    セットする手段とを含む、請求項34記載のプロセッ
    サ。
  36. 【請求項36】分岐予測を向上させるプロセッサであっ
    て、 少なくとも第1及び第2の分岐命令を含む分岐命令セッ
    トをエイリアシングする手段と、 前記分岐命令セットの1つに対する分岐宛先を予測し、
    予測された分岐宛先を前記分岐命令セットの1つの予測
    として記憶する手段と、 前記分岐命令セットから命令を実行するインスタンスに
    応答して、記憶された宛先がそれぞれのインスタンスに
    おいて予測誤りであったか否かを判断する手段と、 前記分岐命令セットからの命令に関して、予測誤りが連
    続することに応答して、前記記憶された宛先を変更する
    手段と、 記憶された宛先を変更して以来、前記分岐命令セットか
    らの命令の1つを実行する第1のインスタンスにおい
    て、前記記憶された宛先を変更無しに保持する手段とを
    含む、プロセッサ。
  37. 【請求項37】前記記憶された宛先を変更無しに保持す
    る手段が、前記分岐命令セットから命令を実行する連続
    するインスタンスの間に、他の分岐命令に加えてエイリ
    アス・セットの命令が介在することを問わない、請求項
    36記載のプロセッサ。
  38. 【請求項38】前記記憶された宛先を変更無しに保持す
    る手段が、前記第1のインスタンスの後、特定のインス
    タンスに応答して、前記記憶された宛先を変更無しに保
    持する手段を含み、前記記憶された宛先を変更する手段
    が、前記分岐命令セットからの命令に関して、予測誤り
    が少なくとも2度の連続シーケンスであることに応答し
    て変更する手段を含む、請求項37記載のプロセッサ。
  39. 【請求項39】前記予測された分岐宛先を、前記分岐命
    令に関連付けられるキャッシュ内の複数のエントリの1
    つに記憶する手段を含む、請求項38記載のプロセッ
    サ。
  40. 【請求項40】前記キャッシュの前記複数のエントリの
    各々を、連続する予測誤りを判断するために使用される
    複数の確認ビットの異なる1つに関連付ける手段を含
    む、請求項39記載のプロセッサ。
  41. 【請求項41】前記分岐命令セットからの命令の1つを
    実行する前に、当該命令に関連付けられる前記複数のエ
    ントリの1つを読出す手段を含む、請求項40記載のプ
    ロセッサ。
  42. 【請求項42】前記記憶された宛先が予測誤りであるこ
    とに応答して、前記複数の確認ビットの前記1つが1に
    セットされているか否かを判断する手段と、 前記複数の確認ビットの前記1つが1にセットされてい
    ることに応答して、前記確認ビットの前記1つをゼロに
    リセットする手段とを含む、請求項41記載のプロセッ
    サ。
  43. 【請求項43】前記複数の確認ビットの前記1つがゼロ
    にセットされていることに応答して、実際の宛先を前記
    キャッシュの前記複数のエントリの前記1つに記憶する
    ことにより、前記複数のエントリの前記1つを更新する
    手段と、 前記確認ビットの前記1つを1にセットする手段とを含
    む、請求項42記載のプロセッサ。
  44. 【請求項44】前記記憶された宛先が正しい予測である
    ことに応答して、前記複数の確認ビットの前記1つがゼ
    ロにセットされているか否かを判断する手段と、 前記複数の確認ビットの前記1つがゼロにセットされて
    いることに応答して、前記確認ビットの前記1つを1に
    セットする手段とを含む、請求項43記載のプロセッ
    サ。
  45. 【請求項45】プロセッサに含まれるキャッシュを用い
    て、複数の分岐命令の1つの宛先の予測の精度を向上さ
    せるプロセッサであって、前記キャッシュが複数のエン
    トリを含み、前記複数の分岐命令の各々が、前記キャッ
    シュの前記複数のエントリの1つに関連付けられるもの
    において、 前記複数の分岐命令の1つの予測される分岐宛先を、当
    該分岐命令に関連付けられる前記キャッシュの前記複数
    のエントリの1つに記憶する手段と、 前記キャッシュの前記複数のエントリの前記1つを用い
    て行われる、前記複数の分岐命令の前記1つの宛先の2
    度の連続する予測誤りに応答して、前記キャッシュの前
    記複数のエントリの前記1つに記憶される前記予測され
    る分岐宛先を更新する手段とを含む、プロセッサ。
  46. 【請求項46】前記キャッシュの前記複数のエントリの
    各々を、連続する予測誤りを決定するために使用される
    複数の確認ビットの異なる1つに関連付ける手段を含
    む、請求項45記載のプロセッサ。
  47. 【請求項47】実行の間に実際の宛先に分岐する、前記
    複数の分岐命令の前記1つを実行する手段を含む、請求
    項46記載のプロセッサ。
  48. 【請求項48】前記実際の宛先と前記予測された分岐宛
    先とを比較する手段と、 前記実際の宛先が前記予測された分岐宛先と異なること
    に応答して、前記予測された分岐宛先の前に行われた先
    行予測が不正であったか否かを判断する手段と、 前記先行予測が不正であったことに応答して、前記実際
    の宛先を前記複数のエントリの前記1つに記憶すること
    により、前記複数のエントリの前記1つに記憶される前
    記予測される分岐宛先を更新する手段とを含む、請求項
    47記載のプロセッサ。
  49. 【請求項49】前記複数の分岐命令の前記1つを実行す
    る手段の前に、前記複数の分岐命令の前記1つに関連付
    けられる前記複数のエントリの前記1つを読出す手段を
    含む、請求項48記載のプロセッサ。
  50. 【請求項50】前記複数のエントリの前記1つに関連付
    けられる前記複数の確認ビットの前記1つを読出す手段
    と、 前記実際の宛先が前記予測される分岐宛先と異なること
    に応答して、前記複数の確認ビットの前記1つが1にセ
    ットされているか否かを判断する手段と、 前記複数の確認ビットの前記1つが1にセットされてい
    ることに応答して、前記複数の確認ビットの前記1つを
    ゼロにリセットする手段とを含む、請求項49記載のプ
    ロセッサ。
  51. 【請求項51】前記複数の確認ビットの前記1つがゼロ
    にセットされていることに応答して、前記実際の宛先を
    前記キャッシュの前記複数のエントリの前記1つに記憶
    することにより、前記複数のエントリの前記1つを更新
    する手段と、 前記確認ビットの前記1つを1にセットする手段とを含
    む、請求項50記載のプロセッサ。
  52. 【請求項52】前記実際の宛先が前記予測された宛先に
    等しいことに応答して、前記複数の確認ビットの前記1
    つがゼロにセットされているか否かを判断する手段と、 前記複数の確認ビットの前記1つがゼロにセットされて
    いることに応答して、前記確認ビットの前記1つを1に
    セットする手段とを含む、請求項51記載のプロセッ
    サ。
  53. 【請求項53】前記キャッシュの前記複数のエントリの
    各々を、複数の確認ビットの異なる1つに関連付ける手
    段において、前記複数の確認ビットの各々が1ビットを
    含む、請求項52記載のプロセッサ。
  54. 【請求項54】前記キャッシュの前記複数のエントリの
    各々を、複数の確認ビットの異なる1つに関連付ける手
    段において、前記複数の確認ビットの各々が2ビットを
    含む、請求項53記載のプロセッサ。
JP2000331110A 1999-11-01 2000-10-30 プロセッサにおける分岐予測方法及びプロセッサ Expired - Fee Related JP3565504B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/431369 1999-11-01
US09/431,369 US6457120B1 (en) 1999-11-01 1999-11-01 Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions

Publications (2)

Publication Number Publication Date
JP2001166935A true JP2001166935A (ja) 2001-06-22
JP3565504B2 JP3565504B2 (ja) 2004-09-15

Family

ID=23711643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000331110A Expired - Fee Related JP3565504B2 (ja) 1999-11-01 2000-10-30 プロセッサにおける分岐予測方法及びプロセッサ

Country Status (5)

Country Link
US (1) US6457120B1 (ja)
JP (1) JP3565504B2 (ja)
CN (1) CN1142483C (ja)
GB (1) GB2363873B (ja)
TW (1) TW539996B (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
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
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
US7203824B2 (en) * 2001-07-03 2007-04-10 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
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
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
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
CN1295598C (zh) * 2004-03-09 2007-01-17 中国人民解放军国防科学技术大学 双栈返回地址预测器中返回地址栈的恢复方法
US7441136B2 (en) * 2005-04-04 2008-10-21 Advanced Micro Devices, Inc. System for predictive processor component suspension and method thereof
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
US20080126771A1 (en) * 2006-07-25 2008-05-29 Lei Chen Branch Target Extension for an Instruction Cache
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
US9733944B2 (en) * 2010-10-12 2017-08-15 Intel Corporation Instruction sequence buffer to store branches having reliably predictable instruction sequences
US9678755B2 (en) 2010-10-12 2017-06-13 Intel Corporation Instruction sequence buffer to enhance branch prediction efficiency
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
CN106843812A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种实现间接转移关联软件预测的方法及装置
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
JPH0628184A (ja) 1991-08-26 1994-02-04 Internatl Business Mach Corp <Ibm> ブランチ予測方法及びブランチプロセッサ
US5835745A (en) 1992-11-12 1998-11-10 Sager; David J. Hardware instruction scheduler for short execution unit latencies
US5625788A (en) * 1994-03-01 1997-04-29 Intel Corporation Microprocessor with novel instruction for signaling event occurrence and for providing event handling information in response thereto
US5881277A (en) * 1996-06-13 1999-03-09 Texas Instruments Incorporated Pipelined microprocessor with branch misprediction cache circuits, systems and methods
US6101577A (en) 1997-09-15 2000-08-08 Advanced Micro Devices, Inc. Pipelined instruction cache and branch prediction mechanism therefor

Also Published As

Publication number Publication date
GB2363873B (en) 2004-01-21
US6457120B1 (en) 2002-09-24
JP3565504B2 (ja) 2004-09-15
GB2363873A (en) 2002-01-09
TW539996B (en) 2003-07-01
GB0026320D0 (en) 2000-12-13
CN1142483C (zh) 2004-03-17
CN1305150A (zh) 2001-07-25

Similar Documents

Publication Publication Date Title
JP3565504B2 (ja) プロセッサにおける分岐予測方法及びプロセッサ
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US7159103B2 (en) Zero-overhead loop operation in microprocessor having instruction buffer
US6697932B1 (en) System and method for early resolution of low confidence branches and safe data cache accesses
US7925868B2 (en) Suppressing register renaming for conditional instructions predicted as not executed
US5421020A (en) Counter register implementation for speculative execution of branch on count instructions
US6189091B1 (en) Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US6289442B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
JP2005500616A (ja) 2レベルの分岐予測キャッシュによる分岐予測
JP2001521241A (ja) 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ
JPH10133873A (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法
WO2012006046A1 (en) Methods and apparatus for changing a sequential flow of a program using advance notice techniques
WO2006028555A2 (en) Processor with dependence mechanism to predict whether a load is dependent on older store
US6397326B1 (en) Method and circuit for preloading prediction circuits in microprocessors
US7366885B1 (en) Method for optimizing loop control of microcoded instructions
US9606804B2 (en) Absolute address branching in a fixed-width reduced instruction set computing architecture
JP3794918B2 (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
US6662360B1 (en) Method and system for software control of hardware branch prediction mechanism in a data processor
US6871275B1 (en) Microprocessor having a branch predictor using speculative branch registers
WO2004099978A2 (en) Apparatus and method to identify data-speculative operations in microprocessor
US7900027B2 (en) Scalable link stack control method with full support for speculative operations
US7783692B1 (en) Fast flag generation
WO1998002805A1 (en) A load/store unit with multiple pointers for completing store and load-miss instructions

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040406

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20040406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040406

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: 20040601

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20040601

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040604

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080618

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080618

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090618

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100618

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees