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

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

Info

Publication number
JP3565504B2
JP3565504B2 JP2000331110A JP2000331110A JP3565504B2 JP 3565504 B2 JP3565504 B2 JP 3565504B2 JP 2000331110 A JP2000331110 A JP 2000331110A JP 2000331110 A JP2000331110 A JP 2000331110A JP 3565504 B2 JP3565504 B2 JP 3565504B2
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.)
Expired - Fee Related
Application number
JP2000331110A
Other languages
English (en)
Other versions
JP2001166935A (ja
Inventor
バララム・シンハロイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of 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

Images

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)

Description

【0001】
【発明の属する技術分野】
本発明は一般にデータ処理システムに関し、特にスーパスカラ・プロセッサに関する。より詳細には、本発明は、確認ビットを含むキャッシュを用いて、分岐命令宛先の予測の精度を向上させるスーパスカラ・プロセッサ及び方法に関する。
【0002】
【従来の技術】
ほとんどのアーキテクチャは、そのターゲットが分岐のアドレス及び命令自身から計算され得ない分岐命令を含む。ターゲット・アドレスが別のレジスタに記憶されて、命令のアドレス及び命令自身から計算され得ない分岐(条件付きまたは無条件)を、ここではアドレス予測可能分岐命令と呼ぶことにする。例えば、PowerPC(商標)アーキテクチャでは、”リンク・レジスタ条件付き分岐(BCLR)”命令または”リンク・レジスタ及びリンク条件付き分岐(BCLRL)”命令のターゲット・アドレスは、リンク・レジスタ(LR)内で見いだされ、”カウント・レジスタ条件付き分岐(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は、情報を直接発行キュー111乃至117に提供する。発行キュー111、113、115及び117は次に、実行ユニット110、112a及び112b、114a及び114b、及び116a及び116bに供給する。
【0033】
命令キャッシュ108は、IFU106から受信される命令を記憶する。データ・キャッシュ130は、データを実行ユニット110乃至116から受信する。レベル2(L2)キャッシュ120は、データ・キャッシュ130及び命令キャッシュ108からデータ及び命令を記憶するために使用される。プロセッサ100はバス・インタフェース・ユニット(BIU)135を含み、これは情報をL2キャッシュ120と周辺装置インタフェース125との間で渡す。
【0034】
この実施例では、分岐発行キュー111が情報を条件レジスタ(CR)論理または分岐ユニット110に提供する。浮動小数点発行キュー(FIQ)113は、情報を2つの浮動小数点ユニット(FPU)112a及び112bに提供する。発行キュー(IQ)115は、情報を固定小数点ユニット(FXU)114a及びロード/ストア・ユニット(LSU)116に提供する。IQ117は、情報をFXU114b及びLSU116bに提供する。発行キューは前述のように構成されるが、当業者であれば、発行キューが本発明の範囲内において異なって構成され得ることが容易に理解できよう。
【0035】
条件レジスタ118は、CRバス101との間で情報をやり取りする。浮動小数点体系レジスタ(FPR)120は、FPRバス105との間で情報をやり取りする。汎用レジスタ(GPR)124及び126は、GPRバス103との間で情報をやり取りする。完了ユニット107は、完了バス109を介して、リネーム・マッピング102に情報を提供する。
【0036】
分岐ユニット110は、条件レジスタ0乃至7(CR0乃至CR7)を用いて、CRバス101を介して情報をやり取りする。FPU112a及びFPU112bは、条件レジスタ1を用いて、CRバス101を介してCR118に情報を提供する。FPU112a及び112bもまたFPRバス105を介して、FPRプール120との間で情報をやり取りする。FXU114a、FXU114b、LSU116a、及びLSU116bは、条件レジスタ0を用いて、結果をCRバス101を介してCR118に出力する。FXU114a、FXU114b、LSU116a、及びLSU116bはまた、GPRバス103を介して、GPRプール122との間で情報をやり取りする。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に移行して、次の命令をフェッチする。次に、ブロック404で、次の命令がアドレス予測可能分岐命令であるか否かが判断される。命令は無条件アドレス予測可能分岐命令、または条件付きアドレス予測可能分岐命令のいずれかであるかもしれない。次の命令がアドレス予測可能分岐命令でないと判断される場合、プロセスはブロック402に戻る。
【0041】
ブロック404を再度参照して、次の命令がアドレス予測可能分岐命令であると判断されると、プロセスはブロック407に移行し、どのキャッシュ・エントリがこの特定のアドレス予測可能分岐命令に関連付けられるかを判断する。アドレス予測可能分岐命令のアドレス部分が、ターゲット・アドレスを予測するために使用されるべきキャッシュのエントリを決定するために使用される。例えば、64ビットRISCアーキテクチャでは、アドレス予測可能分岐命令のアドレスのビット52乃至58が、好適な実施例の128エントリ・キャッシュを指標付けするために使用され得る。当業者であれば、同じ結果を得るために、他の関連付け機構も使用され得ることが理解できよう。
【0042】
その後、ブロック408で、このアドレス予測可能分岐命令において、無条件分岐または条件付き分岐の発生が予測されるかが判断される。このアドレス予測可能分岐命令において、無条件分岐または条件付き分岐の発生が予測される場合、プロセスはブロック410に移行する。再度ブロック408を参照して、このアドレス予測可能分岐命令において、無条件分岐または条件付き分岐のいずれの発生も予測されない場合には、プロセスはブロック409に移行する。ブロック409では、順次アドレスから次の命令をフェッチする。プロセスは次にブロック412に移行する。
【0043】
ブロック410を参照すると、ブロック410では、ブロック407で決定されたキャッシュのエントリを読出し、このアドレス予測可能分岐命令の予測される宛先を決定する。次に、ブロック411で、予測された宛先から命令をフェッチする。次にブロック412で、キャッシュのこのエントリに関連付けられる確認ビットを読出す。プロセスは次にブロック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に移行し、アドレス予測可能分岐命令が分岐した実際の宛先を、このアドレス予測可能分岐命令に関連付けられるキャッシュのエントリに書込む。その後、ブロック432はキャッシュのこのエントリの確認ビットを”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つを実行する手段を含む、前記(46)記載のプロセッサ。
(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、116a、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 キャッシュ

Claims (54)

  1. プロセッサにおける分岐予測方法であって、
    分岐命令の予測される分岐宛先を記憶するステップと、
    第1の分岐命令を実行する第1のインスタンスに応答して、記憶された宛先が予測誤りであったか否かを判断するステップと、
    予測された分岐宛先が、分岐命令を実行する前記第1のインスタンスにおいて予測誤りであったか否かに関わらず、前記記憶された宛先を保持するステップと、
    第2の分岐命令を実行する第2のインスタンスに応答して、記憶された宛先が予測誤りであったか否かを判断するステップと、
    分岐命令を実行する前記第1及び第2の両方のインスタンスにおいて、前記記憶された宛先が連続して予測誤りであったことに応答して、前記記憶された宛先を実際に分岐された宛先に変更するステップと
    を含む、方法。
  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ビット以上である、請求項25記載の方法。
  28. 分岐命令予測の精度を向上させるプロセッサであって、
    分岐命令の予測される分岐宛先を記憶する手段と、
    第1の分岐命令を実行する第1のインスタンスに応答して、記憶された宛先が予測誤りであったか否かを判断する手段と、
    予測された分岐宛先が、分岐命令を実行する前記第1のインスタンスにおいて予測誤りであったか否かに関わらず、前記記憶された宛先を保持する手段と、
    第2の分岐命令を実行する第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つを実行する第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つを実行する手段を含む、請求項46記載のプロセッサ。
  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ビット以上である請求項52記載のプロセッサ。
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 JP2001166935A (ja) 2001-06-22
JP3565504B2 true 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
JP2001166935A (ja) 2001-06-22
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) プロセッサにおける分岐予測方法及びプロセッサ
US6697932B1 (en) System and method for early resolution of low confidence branches and safe data cache accesses
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US6189091B1 (en) Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
JP3397081B2 (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法
US8037288B2 (en) Hybrid branch predictor having negative ovedrride signals
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
US6289442B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
EP1296229B1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
US7962733B2 (en) Branch prediction mechanisms using multiple hash functions
US20140195787A1 (en) Tracking speculative execution of instructions for a register renaming data store
WO2012006046A1 (en) Methods and apparatus for changing a sequential flow of a program using advance notice techniques
EP3767462A1 (en) Detecting a dynamic control flow re-convergence point for conditional branches in hardware
JP2001527233A (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
US6484256B1 (en) Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
US6871275B1 (en) Microprocessor having a branch predictor using speculative branch registers
US7783692B1 (en) Fast flag generation
US6304959B1 (en) Simplified method to generate BTAGs in a decode unit of a processing system
US6718460B1 (en) Mechanism for error handling in a computer system
EP0912927A1 (en) A load/store unit with multiple pointers for completing store and load-miss instructions
JPH10260833A (ja) プロセッサ
WO1998002801A1 (en) A functional unit with a pointer for mispredicted branch resolution, and a superscalar microprocessor employing the same

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