JP2010509680A - ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 - Google Patents

ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 Download PDF

Info

Publication number
JP2010509680A
JP2010509680A JP2009536380A JP2009536380A JP2010509680A JP 2010509680 A JP2010509680 A JP 2010509680A JP 2009536380 A JP2009536380 A JP 2009536380A JP 2009536380 A JP2009536380 A JP 2009536380A JP 2010509680 A JP2010509680 A JP 2010509680A
Authority
JP
Japan
Prior art keywords
branch
instruction
stage
history information
register
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
JP2009536380A
Other languages
English (en)
Other versions
JP5209633B2 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010509680A publication Critical patent/JP2010509680A/ja
Application granted granted Critical
Publication of JP5209633B2 publication Critical patent/JP5209633B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • 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
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)

Abstract

分岐履歴情報を処理する方法が開示される。方法は、命令キャッシュから分岐命令を読み出し、複数のパイプラインステージにおいて分岐命令を実行する。方法は、分岐命令が特定されたことを確認する。方法は、さらに、第1のパイプラインステージ中において、分岐履歴情報を受信して第1のレジスタに分岐履歴情報をロードする。方法は、第2のパイプラインステージ中において、第2のレジスタに分岐履歴情報をさらにロードする。

Description

本発明は、一般に、コンピュータシステムに係り、特に、ワーキング・グローバル・ヒストリ・レジスタを使用する方法及びシステムに関する。
コンピュータプラットフォーム発展の中心には、プロセッサがある。初期のプロセッサは、当時の利用可能な技術によって制限された。製造技術における最近の進歩により、トランジスタ設計が縮小され、初期のプロセッサのサイズの1/1000を下回ることが可能となっている。これらのより小さなプロセッサ設計は、より速く、より効率的であり、本質的により少ない電力を使用する一方で、事前の予想を超える処理能力を実現する。
プロセッサの物理設計が発展されるにつれて、情報処理及び機能実行の革新的な方法は、同様に変化してきた。例えば、命令の「パイプライン化」は、1960年代前半からプロセッサ設計において実施されている。パイプライン化の一例は、ユニット又はステージへ実行パイプラインを分けるという概念であり、命令は、パイプライン中を続々と順次流れる。複数のステージが複数の命令の適切な部分を同時に処理することができるように、ステージが用意される。パイプライン化の1つの利点は、命令が並列に評価されることから命令の実行がオーバーラップされることである。
プロセッサパイプラインは、各ステージが命令の実行に関連する機能を果たす複数のステージから構成される。各ステージは、パイプステージ又はパイプセグメントと称される。ステージは、パイプラインを形成するように連携して結合される。命令は、パイプラインの一方の端から入り、他方の端から出る。
プロセッサによって実行されるほとんどのプログラムは、条件付き分岐命令を含むが、命令がパイプライン中の深くにおいて評価されるまで、命令の実際の分岐動作は、特定されない。分岐命令の実際の評価を待つことに起因するストールを回避するために、近代のプロセッサは、ある分岐予測手法を使用することができ、それによって条件付き分岐命令の分岐動作は、パイプラインの早期に予測される。予測された分岐評価に基づいて、プロセッサは、予測されたアドレス、即ち、分岐ターゲットアドレス(分岐すると予測される場合)又は分岐命令の後続のシーケンシャルアドレス(分岐しないと予測される場合)のいずれかから命令を投機的にフェッチして実行する。条件付き分岐命令がテイクン(taken)か、ノットテイクン(not taken)かは、分岐方向の決定と称される。分岐方向の決定は、予測時及び実際の分岐決定時に行われることができる。実際の分岐動作が決定された時に、分岐が誤予測だった場合には、投機的にフェッチされた命令は、パイプラインからフラッシュされなければならず、新たな命令が正確なアドレスからフェッチされる。誤った分岐予測に応じて投機的に命令をフェッチすることは、プロセッサのパフォーマンス及び電力消費に悪影響を与える可能性がある。従って、分岐予測の精度を向上させることは、重要なプロセッサ設計目標である。
分岐予測の公知の手法は、2つの予測器へ分岐予測を分割することを含み、この2つの予測器は、初期分岐ターゲットアドレスキャッシュ(BTAC)及び分岐履歴テーブル(BHT)である。BTACは、命令フェッチグループアドレスによってインデックスを付けられ、また、分岐ターゲットとも称され、命令フェッチグループアドレスに対応する次にフェッチされるアドレスを含む。分岐命令がプロセッサパイプラインを通過して、その分岐が分岐成立であった後に、エントリは、BTACに追加される。BTACがいっぱいになると、次のエントリが追加される際に、エントリは、標準キャッシュリプレースメントアルゴリズム(例えば、ラウンドロビン又はリースト・リーセントリ・ユーズド(least-recently used))を使用して、BTACから取り除かれる。
BTACは、高連想(highly-associative)キャッシュ設計であることができ、命令実行パイプラインの早期にアクセスされることができる。フェッチグループアドレスがBTACエントリに一致する(BTACヒット)場合、対応する次のフェッチアドレス又はターゲットアドレスは、次のサイクルにおいてフェッチされる。ターゲットアドレスのこの一致及び連続フェッチングは、暗黙的なテイクン分岐予測(implicit taken branch prediction)と称される。不一致(BTACミス)である場合、次の順次インクリメントされたアドレスが次のサイクルにおいてフェッチされる。この不一致状況は、暗黙的なノットテイクン予測(implicit not-taken prediction)とも称される。
BTACは、パターン履歴テーブル(PHT)としても知られる分岐履歴テーブル(BHT)のようなより正確な個別の分岐方向予測器とともに利用されてもよい。従来のBHTは、個々の分岐命令に対してより正確なテイクン又は正確なノットテイクン判定を実現するために、一連の飽和予測方向カウンタを含むことができる。例えば、各飽和予測方向カウンタは、4つの状態のうちの1つの状態をとる2ビットカウンタを有してもよく、これらの4つの状態は、夫々以下のように重みが加えられた予測値を割り当てられる。
11 − 分岐する可能性大(Strongly predicted taken)
10 − 分岐する可能性小(Weakly predicted taken)
01 − 分岐しない可能性小(Weakly predicted not taken)
00 − 分岐しない可能性大(Strongly predicted not taken)
予測値とも称されるBHTの出力は、次のサイクルにおいて分岐命令のターゲットアドレス又は次のシーケンシャルアドレスのいずれかをフェッチすることに帰着するテイクン又はノットテイクン判定である。BHTは、それが既知となるように分岐結果情報で一般に更新される。
分岐予測の精度を高めるために、種々の他の予測技術は、フィードバックとして他の分岐から最近の分岐履歴情報を使用して実施されることができる。当業者が認識するように、最新の分岐動作は、以前に実行された分岐命令の履歴に関連づけられることができる。例えば、以前に実行された分岐命令の履歴は、条件付き分岐命令の予測方法に影響を与えてもよい。
グローバル・ブランチ・ヒストリ・レジスタ又はグローバル・ヒストリ・シフト・レジスタとも称されるグローバル・ヒストリ・レジスタ(GHR:Global History Register)は、以前に実行された分岐命令における過去の履歴の経過を追うために使用されることができる。GHRに格納されるように、分岐履歴は、予測結果の向上を達成するために、現在の実行済み分岐命令までのコードパス中に遭遇した分岐命令のシーケンスの一覧(view)を提供する。
いくつかのプロセッサでは、分岐命令及びその関連予測情報の特定は、命令デコードステージの後になって起こることができる。一般に、命令デコードステージは、命令実行シーケンスの後のステージでありうる。命令が分岐命令としてデコードされて確認された後、GHRは、適切な分岐履歴情報をロードされる。分岐履歴情報が特定されると、この分岐履歴情報は、GHRへシフトされる。GHRの出力は、次の条件付き分岐命令の予測に使用されるBHT内に格納された予測値を特定するのに使用される。
GHRを使用する従来のプロセッサでは、複数の分岐命令が比較的短期間の間に並列に実行される場合、GHRは、遭遇した実際の分岐履歴情報を反映していないかもしれない。この例では、GHRが第1の分岐命令からの分岐履歴情報で更新される前に、第2の分岐命令が予測されるだろう。結果として、第2の条件付き分岐命令に関してBHT内のエントリを特定するのにGHRの不正確な値が使用されることとなる。BHT内のエントリにインデックスを付けるために不正確な値を使用することは、分岐予測の精度に影響するだろう。プロセッサが第1の条件付き分岐命令からの分岐履歴情報に対応することができる場合、異なる値がGHRに格納され、BHT内の異なるエントリは、第2の条件付き分岐命令に関して特定されるだろう。
従って、より正確な分岐予測を達成するために、GHRより早く分岐履歴情報を格納して使用することができるプロセッサを有することがこの業界において要請されている。本発明の開示は、この要請を認識し、プロセッサの実行ステージの早期に分岐命令を特定するプロセッサを開示する。入力として分岐命令情報を使用することで、プロセッサは、後続の条件付き分岐命令に対して予測値の選定を導くことができる。
分岐履歴情報を処理する方法が開示される。この方法は、第1のパイプラインステージ中に分岐命令を特定し、前記第1のパイプラインステージ中に第1のレジスタへ前記分岐履歴情報をロードする。この方法は、第2のパイプラインステージ中に前記分岐命令を確認し、前記分岐履歴情報は、前記第2のパイプラインステージ中に第2のレジスタへロードされる。
分岐履歴情報を有する第1のレジスタ、及び分岐履歴情報を有する第2のレジスタを具備するパイプラインプロセッサが開示される。このパイプラインプロセッサは、分岐命令が特定される第1のパイプラインステージ中に第1のレジスタが前記分岐履歴情報をロードされ、第2のパイプラインステージ中に第2のレジスタが前記分岐履歴情報をロードされる複数のパイプラインステージを有する。
分岐履歴情報を処理する方法が開示される。この方法は、分岐命令をフェッチし、第1のパイプラインステージ中に前記分岐命令を特定し、前記第1のパイプラインステージ中に第1のレジスタに分岐履歴情報をロードする。この方法は、第2のパイプラインステージ中に前記分岐命令を確認し、前記分岐履歴情報は、第2のパイプラインステージ中に第2のレジスタへロードされる。
本発明についてのより完全な理解、並びに本発明のさらなる特徴及び利点は、以下の詳細な説明及び添付の図面から明らかになるだろう。
図1は、本発明の実施形態を使用するプロセッサのハイレベルのロジック・ハードウェア・ブロック図を示す。 図2は、図1のプロセッサによって使用される典型的な分岐履歴テーブルを示す。 図3は、ワーキング・グローバル・ヒストリ・レジスタを使用する図1のプロセッサの下位レベル論理回路図を示す。 図4は、ワーキング・グローバル・ヒストリ・レジスタ及びグローバル・ヒストリ・レジスタの詳細図を示す。 図5は、図1のプロセッサによって実行される命令の典型的なグループを示す。 図6は、図1のプロセッサの種々のステージを経由して命令が実行される図5の命令の典型的なグループのタイミング図を示す。 図7は、ワーキング・グローバル・ヒストリ・レジスタを使用する図1のプロセッサによって実行される命令プロセスフローを例証するフローチャートを示す。
詳細な説明
添付の図面に関連して以下に示される詳細な説明は、本発明の種々の実施形態の説明として意図され、本発明が実行されることができる実施形態だけを提示するように意図するものではない。詳細な説明は、本発明の充分な理解を提供する目的で、具体的な詳細を含む。しかしながら、本発明がこれらの具体的な詳細なしに実行されてもよいことは、当業者には明らかだろう。いくつかの例では、公知の構造及び構成要素は、本発明の概念を不明瞭にすることがないようにブロック図の形態で示されている。頭字語及び他の記述的な用語は、便宜上及び明確にするために単に使用されているが、本発明の範囲を制限するように意図されるものではない。
図1は、以下に記述されるような一実施形態を利用するスーパースカラープロセッサ100のハイレベル図を示している。プロセッサ100は、命令キャッシュ106に専用の高速バス104を介して結合される中央演算処理装置(CPU)102を有している。命令キャッシュは、メモリ114に汎用バス116を介して同様に結合される。
プロセッサ100内では、命令フェッチユニット(IFU)122は、メモリ114から命令キャッシュ106への命令のローディングを制御する。命令キャッシュ106が命令をロードされると、CPU102は、高速バス104を介してそれらにアクセスすることができる。命令キャッシュ106は、図1に示されるような個別のメモリ構造であってもよく、或いは、命令キャッシュ106は、CPU102の内部構成要素として統合されていてもよい。統合は、CPU102の複雑さ及び電力損失と同様に命令キャッシュ106のサイズにも依存するだろう。さらに、IFU122は、分岐ターゲットアドレスキャッシュ130(BTAC)、分岐履歴テーブル140(BHT)及び2つの下流パイプライン160及び170に結合されている。
命令は、いくつかの命令を同時に命令キャッシュ106からフェッチされてデコードされることができる。命令キャッシュ106内では、命令は、キャッシュラインとして知られているセクションにグループ化される。各キャッシュラインは、複数の命令及び関連データを含むことができる。フェッチされる命令の数は、必要とされるフェッチ帯域幅及び各キャッシュライン中の命令の数に依存してもよい。IFU122内では、フェッチされた命令は、オペレーションタイプ及びデータ依存性に関して分析される。命令を分析した後に、プロセッサ100は、さらなる実行のために、IFU122から下流機能ユニット、即ち、下流パイプライン160又は170へ命令を分配することができる。
下流パイプライン160及び170は、算術論理演算ユニット、浮動小数点演算ユニット、ストアユニット及びロードユニット等を含む種々の演算実行ユニット(EU)118を含むことができる。例えば、算術論理演算ユニットのようなEU118は、広範囲の演算機能、例えば、整数の加算、減算、簡単な乗算、ビット単位の論理演算(例えば、AND、NOT、OR、XOR)及びビットシフト等を実行することができる。さらに、下流パイプライン160及び170は、レゾリューションステージ(図示せず)を有することができ、レゾリューションステージ中に条件付き分岐命令の実際の結果が特定される。分岐命令の実際の結果が特定されると、プロセッサ100は、実際の結果を予測結果と比較することができ、そして、それらが一致しない場合、誤予測が生じたこととなる。
当業者は、BTAC130が分岐ターゲットバッファ(BTB)又は分岐ターゲット命令キャッシュ(BTIC)と同類でありうることを認識する。BTB又はBTICは、分岐アドレス及び分岐ターゲットの命令データ(即ち、オペコード)の両方を格納する。説明を簡単にするために、BTAC130は、本発明の種々の実施形態に関連して使用される。本発明の他の実施形態は、BTAC130の代わりにBTB又はBTICを選定的に含んでもよい。
最初に分岐命令が実行される時には、BTAC130にエントリがなく、BTACミスが生じる。分岐命令がその実行を終了した後、BTAC130は、特定の条件付き分岐命令についてのターゲットアドレス及びプロセッサモード(例えば、アドバンストRISCプロセッサアーキテクチャにおけるArm対Thumb動作)を反映するために、続いて更新されることができる。分岐命令が再度フェッチされた後は常に、BTAC130に格納された情報は、フェッチされた分岐命令をたとえ完全にはデコードしていなくても、次のプロセッササイクルでフェッチされることができる。
BTACヒット(例えば、フェッチグループアドレスがBTAC130内のアドレスと一致する場合)は、条件付き又は無条件分岐命令のいずれかに対して生じることができる。これは、BTAC130が条件付き分岐命令及び無条件分岐命令の両方に関連する情報を格納することができる事実によるものである。無条件分岐命令のBTACヒットの場合には、分岐命令が無条件であるという事実とともに予測されたターゲットアドレス及び予測されたプロセッサモードが格納されることができる。無条件分岐命令アドレスがBTAC130中のエントリに格納される状況では、エントリは、テイクン(分岐)(taken)の分岐方向を示す。
図2は、プロセッサ100によって使用される典型的な分岐履歴テーブル(BHT)140のより詳細な説明図を示している。BHT140は、mアドレスビットを有するアドレスを使用してインデックスを付けられる2のラインに組織化されてもよい。一実施形態では、9ビットのアドレスは、512のラインを有するBHT140に帰着して使用される。各ライン202中には、2のカウンタ204があり、ここで、nは、適切なカウンタを選定するために使用されるビット数である。さらに、3ビットのアドレスは、ライン202毎に8つのカウンタ204を有するBHT140に帰着して、カウンタ204を選定するために使用さることができる。ある典型的な実施形態では、フェッチグループアドレスの12桁目から4桁目のビット(9ビット)は、BHT140内のライン202を選定するために使用されることができる。フェッチグループアドレスの3桁目から1桁目までのビット(3ビット)は、特定のカウンタ204を選定するために使用されることができる。
プロセッサ100は、命令デコードステージより前の命令実行プロセスのより早期に分岐命令を特定することができる。分岐命令がより早期に特定される場合、予測値(条件付き分岐命令)又はテイクン分岐方向(無条件分岐命令)等のような分岐履歴情報は、同時に特定されてもよい。図3の議論に記述されることになるワーキング・グローバル・ヒストリ・レジスタ(WGHR)は、命令実行プロセスのより早期に分岐履歴情報を受信して処理するためにプロセッサ100によって使用されることができる。例えば、WGHRは、条件付き分岐命令の予測値及び無条件分岐命令の分岐方向を格納することができる。この代わりに、WGHRは、条件付き分岐命令の予測値だけを格納してもよい。WGHRの出力は、次の条件付き分岐命令のためにBHT140内の対応するエントリにインデックスを付けるために使用されてもよい。
図3は、ワーキング・グローバル・ヒストリ・レジスタ(WGHR)316を含むプロセッサ100の下位レベル論理ブロック図300を示している。上流パイプ350が下位レベルブロック図300内にある。フェッチ論理回路302は、上流パイプのトップに結合されている。上流パイプ350は、4つの命令実行ステージ、例えば、命令キャッシュ第1ステージ(IC1)304、命令キャッシュ第2ステージ(IC2)306、命令データアラインメントステージ(IDA)308及びデコードステージ(DCD)310を含む。本発明の範囲を限定することなしに、パイプステージが上流パイプ350に追加されてもよく、或いは上流パイプ350から削除されてもよいことに留意されたい。フェッチ論理回路302、上流パイプ350、ワーキング・グローバル・ヒストリ・レジスタ(WGHR)316、グローバル・ヒストリ・レジスタ(GHR)314、分岐訂正ロジック回路(BCL)330、選定マルチプレクサ(mux)322及びアドレスハッシング論理回路320は、IFU122内に同様に設けられることができる。
プロセッサ100が命令の実行を開始すると、フェッチ論理回路302は、IC1ステージ304中にどの命令がフェッチされるかを決定する。命令を読み出すために、フェッチ論理回路302は、命令キャッシュ106にフェッチグループアドレスを送信する。フェッチグループアドレスが命令キャッシュ106内に検出される(例えば、命令キャッシュヒット)と、命令は、IC2ステージ304中に命令キャッシュ106内のヒットキャッシュラインから読み出される。
並行して、IC1ステージ304中において、プロセッサ100は、BTAC130にフェッチグループアドレスを送信する。プロセッサ100がBTACヒットに遭遇する場合、このフェッチグループアドレスに関してBTAC内に格納されている情報は、IC2ステージ306中に受信される。前述されたように、BTAC130内に格納された情報は、分岐情報、例えば、分岐ターゲット、プロセッサモード及びテイクン分岐方向(無条件分岐命令の場合)等を含むことができる。
同様にIC1ステージ304中において、フェッチ論理回路は、アドレスハッシング論理回路320にフェッチグループアドレスを送信する。アドレシングハッシング論理回路320内では、フェッチグループアドレスの12桁目から4桁目までのビットは、選定マルチプレクサ322の出力と排他的論理和を計算される(XOR’d)。アドレスハッシング論理回路320(例えば、XOR関数)の出力は、BHT140へアドレスインデックスを提供する。前述したように、フェッチグループアドレスの3桁目から1桁目までのビットは、適切なカウンタ204を選定するための選定ビットを提供することができる。
IC2ステージ306中において、プロセッサ100は、命令キャッシュ106、BTAC130及びBHT140に命令フェッチグループアドレスを送信した結果を読み出す。IC2ステージ306では、プロセッサ100は、BTACヒットが生じたか否かを判断する。BTACヒットがIC2ステージ306中に確認される場合、プロセッサ100は、分岐が条件付き分岐命令又は無条件分岐命令のいずれであるかをさらに判断する。IC2ステージ306では、BHT140からの予測値が同様に受信されて格納される。
命令キャッシュ106内の各キャッシュラインが複数の命令を含むことができるので、夫々の命令は、キャッシュラインから分離される必要がありうる。同様に、データは、キャッシュライン中の命令と密接に結びついていることができる。キャッシュラインからの情報は、命令を適切に分析して実行するために、フォーマットされてアラインされる必要がありうる。個々の実行可能命令への命令のアラインメント及びフォーマットは、IDAステージ308中に生じる。
命令がIDAステージ308中に処理された後、命令は、デコード(DCD)ステージ310を通過する。DCDステージ310中に、命令は、命令のタイプ、及びどのような追加情報又はリソースがさらなる処理に必要となるかを判断するために分析される。命令のタイプ又は現在の命令ロードに応じて、プロセッサ100は、DCDステージ310内に命令を保持してもよく、或いは、プロセッサ100は、さらなる実行のために下流パイプライン160又は170のいずれかに命令を渡してもよい。DCDステージ310では、プロセッサ100は、条件付き分岐命令として命令を確認し、BHT140から命令の予測値(IC2ステージ306中に読み出されている)を確認する。予測値の精度は、下流パイプライン160又は170のいずれかにおいて命令実行の後のステージ中に検証されるだろう。分岐予測が不正確(例えば、誤予測)であると決定されるまで、プロセッサ100は、予測値が真の値であると仮定し、この予測に基づいて命令をフェッチして処理する。
ワーキング・グローバル・ヒストリ・レジスタ316(WGHR)は、上流パイプ350に結合されている。WGHR316によって、DCDステージ310より前に特定されている分岐命令に関連する分岐履歴情報をプロセッサ100が格納及び処理することが可能となる。一実施形態では、BTACヒットが生じる場合、WGHR316は、条件付き分岐命令に対してBHT140から予測値をロードされることができる。前述されたように、BTACヒットは、フェッチされている命令が分岐命令であって、関連した分岐履歴情報(例えば、条件付き分岐命令に関する予測値又は無条件分岐命令に関するテイクン方向)を有することを示す。この条件に基づいて、プロセッサ100は、分岐命令がDCDステージ310中で確認されるまで待つこととは対照的に、連続分岐予測のために早期に分岐履歴情報(即ち、分岐履歴情報がより最新のものである)を利用することができる。WGHR314の出力は、BHT140内の次のエントリに関してアドレスインデックスを決定するためにアドレスハッシング論理回路320に送信される。
分岐履歴情報がいつ利用可能になるかは、分岐履歴情報がBHT140からどれくらい速く取り出されることができるか、並びに、BTACヒットがどれくらい速く応答されることができるかに依存している。いくつかのプロセッサ設計では、分岐履歴情報及びBTACヒットは、IC2ステージ306中に受信されることができる。他のプロセッサ設計では、分岐履歴情報及びBTACヒットは、IDAステージ308中に受信されてもよい。前述されたステージ以外のステージを組み込んでいるさらに他のプロセッサ設計では、分岐履歴情報及びBTACヒットは、デコードステージより前のこれらのステージ中に利用可能であろう。
一実施形態では、条件付き分岐命令に関する分岐履歴情報は、IC2ステージ306中にWGHR316へシフトされる(BTACヒットが生じる場合)。さらに他の実施形態では、条件付き分岐命令及び無条件分岐命令の両方に関する分岐履歴情報は、WGHR316へシフトされる。さらなる実施形態では、WGHR316は、分岐履歴情報でIDAステージ308中に更新されてもよい。この状況は、IDAステージ308までにBHT140に格納された予測値又はBTACヒット情報が利用可能でない場合に、生じるだろう。
選定マルチプレクサ322は、WGHR316の出力を受信するように構成される。一実施形態では、WGHR316の出力は、プロセッサ100によって処理された最近の9つの分岐命令の分岐履歴を含む9ビット値である。選定マルチプレクサ322の出力は、次の条件付き分岐命令に対してBHT140へインデックスを付けるアドレスハッシング論理回路320へのインプットとして使用される。
GHR314がDCDステージ310中に分岐履歴情報をロードされることを除いて、GHR314は、WGHR316と同様に動作する。分岐命令がDCDステージ310を通過すると、GHR314のコンテンツは、WGHR316のコンテンツをミラーすることとなる。状況に応じて、GHRの出力は、予測値にインデックスを付けるために使用されてもよい。
GHR314の出力は、選定マルチプレクサ322に結合される。BTACミスが生じ、命令がテイクン分岐命令として確認されるDCDステージ310中にBTACミスが決定される場合、選定マルチプレクサ322は、インデックスを付けるためのアドレスハッシング論理回路320によって使用されるべきGHR314の出力を選定するように指示される。この場合、WGHR316がテイクン分岐(BTACミスによる)に関する分岐履歴情報をまだ有していないので、GHR314が使用される。この代わりに、現在の分岐命令に対してBHT140にインデックスを付けるより前に順次フェッチされた分岐命令によって、WGHR316が更新されることができるので、BTACミスが生じる場合、GHR314の出力は、アドレスハッシング論理回路320によって同様に使用されることができる。この場合、WGHR314は、現在の分岐命令に関する適切な値を反映してなく、アドレスハッシング論理回路320によって使用される場合には、BHT140内の誤ったエントリがインデックスを付けられるだろう。
GHR314の出力は、分岐訂正ロジック回路(BCL)330に同様に結合されている。BCL340は、GHR314を使用して、誤予測が生じた場合の回復目的に使用される分岐履歴情報の「正確な」コピーを提供する。誤予測が生じる場合、BCL340は、GHR314及びWGHR316の両方の分岐履歴情報を復元する。前述のように、分岐命令がリゾリューションステージに達して、実際の結果が予測結果と一致しない場合、誤予測が生じる。
誤予測が生じる場合、BCL340は、誤予測された条件付き分岐命令に基づいてフェッチされた命令をフラッシュするようにフェッチ論理回路302に指示するフェッチ論理回路302に情報を送信する。より効率的にするために、BCL340は、選定マルチプレクサ322に正確な分岐履歴情報を提供するのと同時に、正確な分岐履歴情報にGHR314及びWGHR316を復元する。誤予測が生じる場合、プロセッサ100は、適切なカウンタ204にインデックスを付ける際に使用されるアドレスハッシング論理回路320へ導かれるべきBCL340の出力(選定マルチプレクサ320を経由する)を選定することができる。
プロセッサ100が誤予測に遭遇する場合、BCL340は、それらの正確な値にGHR及びWGHRを復元する。一実施形態では、GHR314が条件付き分岐命令に関する予測値をロードされた後、BCL340は、GHR314のスナップショットを得ることができる。BCL340は、続いて、GHR314の最近の予測値(例えば、MSB)を反転させることができる。予測値を反転することによって、誤予測が生じる場合、BCL340は、GHR314及びWGHR316に反映されるべき訂正された値を準備する。例えば、DCDステージ310中で条件付き分岐命令及びその予測値を特定した後に、GHR314及びBCL340は、値「101011111」(MSB=>LSB)をロードされる。BCL340は、条件付き分岐命令に対応するMSBを入れ替えて、条件付き分岐命令にリンクされた訂正された値「001011111」を格納することができる。従って、条件付き分岐命令が不正確に予測される場合、訂正値は、GHR314、WGHR316及び選定マルチプレクサ322に送信される用意ができている。
図4は、WGHR316、GHR314及びBCL340の詳細図400を示している。詳細図400において、WGHR選定マルチプレクサ402は、IC2ステージ306及びDCDステージ310から分岐履歴情報を受信し、さらに、BCL340から訂正分岐履歴情報を受信する。GHR選定マルチプレクサ404は、DCDステージ310から分岐履歴情報を受信し、BCL340から訂正分岐履歴情報を受信する。
WGHR選定マルチプレクサ402は、どのインプットがWGHR316に分岐履歴情報をロードするのに使用されるかを選定する。誤予測が生じる場合、BCL340からのインプットは、IC2ステージ306又はDCDステージ310から送信される情報よりも優先権を有する。誤予測の後続の連続分岐履歴情報は、不正確に予測された分岐経路をフェッチダウンされた条件付き分岐命令に関連している可能性があるので、BCL340が優先される。従って、IC2ステージ又はDCDステージ310によって渡された分岐履歴情報は、同様に不正確かもしれない。
誤予測が生じない場合、WGHR選定マルチプレクサ402のインプット選定は、最高の優先度から最低の優先度にリストされた以下の例に従って、決定されることができる。
a)IC2ステージ306中に分岐命令がBTACミスを返すが、DCDステージ310中でデコードされた後に予測されたテイクンとなる場合、DCDステージ310中に確認された分岐履歴値は、WGHR316へシフトされる。予測されたテイクン分岐命令の後にフェッチされた命令がフラッシュされる必要があるので、DCDステージ310は、この場合に優先権を有する。従って、同じプロセッササイクル中にWGHR316に書き込む準備ができている連続分岐命令に関してIC2ステージ306中に特定された全ての分岐履歴情報が破棄される。
b)DCDステージ310がBTACミスに関連する分岐命令をまだ実行していない場合、IC2ステージ306は、次に最優先権を有するだろう。BTACヒットが分岐命令に対して生じる限りは、IC2ステージ306中に特定された分岐履歴情報は、WGHR316にシフトされる。
c)分岐命令がBTACヒット、及び前述された例(b)に従ってロードされた関連する分岐履歴情報として以前に特定されている場合、WGHR316は、DCDステージ310から再度書き換えられるだろう。同様に、条件付き分岐命令がBTACミスであり、分岐命令がノットテイクン(非分岐)(not taken)と予測される場合、WGHR316は、この分岐履歴情報を書き込まれる。このWGHR316への書き込みは、命令がデコードステージ310を通過した後にGHR314及びWGHR316が同期されることを保証する。
GHR選定マルチプレクサ404は、GHR314を更新するために使用される適切な入力を選定する。WGHR選定ロジック402と同様に、GHR選定マルチプレクサ404は、上に説明されたのと同じ根拠で、BCL340からの入力に最優先権を与える。従って、誤予測が生じない場合、GHR314は、特定の分岐命令に関してDCDステージ310中に特定された分岐履歴情報で更新される。
図6は、命令が上流パイプ350中を移動するように、命令500の典型的なグループのタイミング図600を示している。命令500の典型的なグループには、複数の分岐命令がある。図6のX軸602は、プロセッササイクルを示し、Y軸604は、命令が通過する上流パイプ350内の実行ステージ、並びにGHR314及びWGHR316のコンテンツを示す。GHR314及びWGHR316のコンテンツは、あるプロセッササイクル中に書き込まれ、次のプロセッササイクルの初めにラッチされる。タイミング図600に示されるように、GHR314及びWGHR316のラッチされたコンテンツが示されている。説明を容易にするために、GHR314及びWGHR316の3つの最上位ビットだけが示されている。命令が実行されるにつれて、命令は、Y軸604を下に移動する。
プロセッササイクル1では、フェッチ論理回路302は、命令Aに関して命令キャッシュ106、BTAC130及びアドレスハッシング論理回路320へフェッチグループアドレスを送信する。これは、命令AがIC1ステージ304に入るように、タイミング図600に示されている。さらに、プロセッササイクル1では、GHR314及びWGHR316の3つの最上位ビットは、全てゼロであり、これは、実行された最近の3つの分岐命令が全てノットテイクンであることを示す。
プロセッササイクル2では、命令キャッシュ106、BTAC130及びBHT140へフェッチグループアドレスを送信した結果が受信される。これは、命令AがIC2ステージ306に入っているように、タイミング図に表示されている。命令キャッシュ106が複数の命令を格納しているので、命令A+4がIC2ステージ306において命令Aとともに読み出されて示されている。IC2ステージ306内の論理回路は、BTAC130及びBHT140から受信された情報を分析する。IC2ステージ306中において、プロセッサ100は、命令Aが条件付き分岐命令(BTACヒットからの情報に基づいている)であること、及びBHT140から返された予測値を判断する。この例では、命令Aは、テイクンと予測される。命令Aに関するBHT140内の実際のエントリは、強いテイクン(strongly taken)(11)又は弱いテイクン(weak taken)(10)のいずれであってもよい。プロセッササイクル2の終わりに、プロセッサ100は、条件付き分岐命令Aに関連した予測値を反映するために、WGHR316のMSBに「1」をロードする。命令Aがテイクンと予測されていることから、次連続命令A+4は、実行されるべき次の命令ではないので、命令AがIC2ステージ306を通過する後に次連続命令A+4は、フラッシュされる。タイミング図600に示されるように、値「100」は、プロセッササイクル3の初めにWGHR316へラッチされる。
プロセッササイクル3では、命令Aは、IDAのステージ308に入る。IDAステージ308にある間に、命令Aは、フォーマット及びアラインされ、従って、DCDステージ310に入るための命令を用意している。命令AがIDAステージ308を進む間に、命令Bに関するフェッチグループアドレスは、IC1ステージ304中に命令キャッシュ106、BTAC130及びBHT140に送信される。
プロセッササイクル4では、命令AがDCDステージ310に入り、命令B及びB+4に対するフェッチ要求からの結果が受信され(IC2ステージ306)、命令B+8のフェッチグループアドレスが命令キャッシュ106、BTAC130及びBHT140に送信される(IC1ステージ304)。WGHR316のコンテンツ(「100」)は、選定マルチプレクサ322によって選定され、命令B+8に関してBHT140のエントリにインデックスを付けるために、アドレスハッシング論理回路320によって使用される。命令AがDCDステージ310にある時に、プロセッサ100は、命令Aが条件付き分岐命令であることを確認し、その結果として、予測値(「1」)がGHR314へシフトされる。プロセッサ100がGHR314をラッチするプロセッササイクル5の初めまで、プロセッサ100は、命令AによるGHR314の更新された値を参照しないだろう。プロセッササイクル4の終わりに、命令Aは、上流パイプ350から離れ、さらなる実行のために下流パイプライン160又は170に導かれる。
WGHR316を利用せず、分岐履歴情報、及び命令500の実行される典型的なグループを格納するGHRだけを使用する従来のプロセッサ内では、命令B+8に関してBHTから返された予想値は、正確でない可能性がある。これは、命令B+8に関してBHT内のエントリを決定するのに、プロセッササイクル4においてアドレスハッシング論理回路がGHRの値を使用する(例えば、値「000」が使用される)からである。命令Aに関する分岐履歴情報が正確に反映されているというわけではないので、GHRのこの値は、プロセッサが遭遇した実際の分岐履歴を正確に反映しているわけではない。同じ命令シーケンスがその後に実行される場合、この場合には、命令B+8をフェッチする際にプロセッサが遅れを経験することとなる(即ち、アドレスハッシング論理回路がBHTエントリにアクセスするためにGHRの値を使用する時までにGHRのコンテンツが更新される)が、BTHへの異なるエントリがアクセスされてもよい。この場合、分岐履歴情報を格納するGHRだけを使用するプロセッサは、同じ命令実行シーケンスを有する同じ条件付き分岐命令に関する2つの異なるBHTエントリにアクセスすることもありうる。
一実施形態では、命令AがDCDステージ310中にある場合、WGHR316は、GHR314がロードされるのと同時に予測値で書き換えられる。同じ予測値で両方のレジスタを同時に書き込むことによって、2つのレジスタは、命令Aに関して同期される。2つの条件付き分岐命令が互いに直後にテイクンを予測されるのは、めったにないので、2つのレジスタを同期させることがあらゆる分岐履歴情報を失う可能性はほとんどない。
プロセッササイクル5では、命令B及びB+4は、IDAステージ308に入り、一方、命令B+8及びB+12は、IC2ステージ306に入る。さらに、プロセッササイクル5では、命令B+16及びB+20に関するフェッチグループアドレスは、命令キャッシュ106、BTAC130及びBHT140に送信される。IC2ステージ306では、命令B+8は、BTACヒットを返す。命令B+8がBTACヒットであるので、プロセッサ100は、命令B+8が条件付き分岐命令であり、IC2ステージ306中にBHT140から返されたその予測値がWGHR316へシフトされることを同様に決定する。この例では、命令B+8は、同様にテイクンと予測される。BHT140内の実際のエントリは、強いテイクン(11)又は弱いテイクン(10)のいずれかであってもよい。命令B+8がテイクン分岐命令と予測されたので、命令B+8がIC2ステージ306から離れ、命令C(BTACヒットから受信される)を反映するターゲットアドレスがフェッチ論理回路302に導かれた後、命令B+12、B+16及びB+20は、フェッチ論理回路302によってフラッシュされることができる。WGHR316のコンテンツは、テイクンの予測値(「1」)で更新され、この値は、タイミング図600に反映されるように、プロセッササイクル6の初めにラッチされる。
プロセッササイクル6では、命令B及びB+4がDCDステージ310に入り、一方、命令B+8がIDAステージ308に入る。さらにプロセッササイクル6中において、命令Cに関するフェッチグループアドレスは、命令キャッシュ106、BTAC130及びBHT140に送信される(IC1ステージ304)。プロセッササイクル6の終わりに、命令B及びB+4は、上流パイプ350から離れ、さらなる実行のために下流パイプライン160又は170に導かれる。
プロセッササイクル7では、命令B+8は、DCDステージ310中に処理される。DCDステージ310中に、命令B+8は、条件付き分岐命令として確認され、その予測値が同様に確認される。命令B+8に関して特定された予測値は、GHR314へシフトされ、プロセッササイクル7中にWGHR316へリロードされる。命令C及びC+4は、IC2ステージ306中に命令キャッシュ106から返される。プロセッササイクル7の終わりに、命令B+8は、上流パイプ350から離れ、さらなる実行のために下流パイプライン160又は170に導かれる。
分岐命令が互いに極めて近接して(パイプラインの深さに基づいて)実行されるかもしれないコードセグメントでは、最新の分岐履歴情報は、分岐予測を処理するために使用される。
プロセッササイクル8中において、GHR314の値は、WGHR316とともにラッチされる。命令C及びC+4は、IDAステージ310中に処理され、命令C及びC+4に後続するあらゆるシーケンシャル命令は、フェッチされて実行されることができる。
図7は、ワーキング・グローバル・ヒストリ・レジスタ(WGHR)316を使用して命令を実行するプロセッサ100によって用いられる命令プロセスフロー700を示すフローチャートである。命令プロセスフロー700は、ブロック702において開始する。命令プロセスフローは、フェッチ論理回路302が(BHT140へインデックスを付けるために)BTAC130及びアドレスハッシング論理回路320にフェッチグループアドレスを送信するブロック704に進む。前述されたように、フェッチグループアドレスの送信は、プロセッサ100のIC1ステージ304中に生じることができる。ブロック704において、BTAC130の探索(フェッチされている命令が分岐命令かどうかを判断する)の結果が返される。この結果は、IC2ステージ306中に返される。命令プロセスフロー700は、ブロック704から決定ブロック706へ進む。プロセッサ100は、決定ブロック706でBTACヒットが生じたか否かを判断する。この判断は、IC2ステージ306中に同様に生じることができる。前述されたように、BTACヒットは、条件付き分岐命令又はテイクン無条件分岐命令に対して生じることができる。BTACヒットでない(例えば、BTACミス)場合、命令プロセスフロー700は、ブロック712に直接進む。
BTACヒットの場合、命令プロセスフロー700は、ブロック710に進む。ブロック710において、WGHR316は、BHT140からWGHR316に読み出された予測値をシフトすることにより更新される。例えば、分岐命令がテイクンと予測された場合、「1」がWGHR316にシフトされ、予測がノットテイクンである場合、「0」がWGHR316にシフトされる。実施に応じて、予測値は、デコードステージより前の任意のプロセッサ実行ステージ中に返されてもよい。前述されたような実施形態では、WGHR316は、IC2ステージ306中に更新される。
命令プロセスフロー700は、命令がデコードステージ(例えば、DCDステージ310)を通過するブロック712に進む。デコードステージ中に、ブロック712において、命令は、分岐命令として確認されることができる。命令がデコードステージ中で実行された後、命令プロセスフロー700は、決定ブロック714に進む。決定ブロック714において、命令が分岐命令でない場合、命令プロセスフロー700は、ブロック720で終了する。
ブロック714において、命令が分岐命令であることをプロセッサ100が確認する場合、命令プロセスフロー700は、ブロック716に進む。ブロック716において、WGHR316及びGHR314は、適切な分岐履歴情報で更新され、命令プロセスフローが終了する。
ここに開示された実施形態に関連して記述された種々の実例となる論理ブロック、モジュール、回路、エレメント及び/又はコンポーネントは、汎用プロセッサ、デジタル・シグナル・プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は他のプログラム可能論理構成要素、ディスクリートゲート又はトランジスタロジック、個別のハードウェア構成要素、或いはここに記述された機能を実行するように設計されたこれらの任意の組み合わせで実施又は実行されてもよい。汎用プロセッサは、マイクロプロセッサであってもよいが、選択的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ又は状態機械であってもよい。プロセッサは、コンピュータ構成要素の組み合せ、例えば、DSP及びマイクロプロセッサの組み合せ、複数のマイクロプロセッサ、DSPコアと連動する1以上のマイクロプロセッサ、又はいかなる他のこのような機器構成として実施されてもよい。
特定の実施形態がここに例証されて記述されたが、当業者は、同じ目的を達成するように適合されるいかなる配置が示された特定の実施形態に代用されてもよいこと、及び、本発明が他の環境において他の用途を有することを認識する。本出願は、本発明のいかなる適応又は変形をカバーするように意図される。添付の特許請求の範囲は、本発明の範囲を本明細書に記述された特定の実施形態に制限するように意図するものではない。

Claims (22)

  1. 第1のパイプラインステージ中に分岐命令を特定することと、
    前記第1のパイプラインステージ中に第1のレジスタへ分岐命令情報をロードすることと、
    第2のパイプラインステージ中で前記分岐命令を確認することと、を具備し、
    前記分岐命令情報は、前記第2のパイプラインステージ中に第2のレジスタへロードされる、分岐履歴情報を処理する方法。
  2. 前記分岐命令を特定する前記ステップは、分岐ターゲットアドレスキャッシュ(BTAC)ヒットが受信される場合に起こる、請求項1の方法。
  3. 前記分岐命令を特定する前記ステップは、分岐ターゲット命令キャッシュ(BTIC)ヒットが受信される場合に起こる、請求項1の方法。
  4. 前記第1のパイプラインステージは、命令キャッシュステージである、請求項1の方法。
  5. 前記第1のレジスタ及び前記第2のレジスタは、シフトレジスタである、請求項1の方法。
  6. 前記第1のレジスタ及び前記第2のレジスタは、9ビットシフトレジスタである、請求項5の方法。
  7. 前記第1のレジスタ及び前記第2のレジスタは、条件付き分岐命令に関する分岐履歴情報を格納する、請求項1の方法。
  8. 前記第1のレジスタ及び前記第2のレジスタは、条件付き分岐命令及び無条件分岐命令に関する分岐履歴情報を格納する、請求項1の方法。
  9. 前記第2のパイプラインステージは、デコードステージである、請求項1の方法。
  10. 分岐履歴情報を有する第1のレジスタと、
    分岐履歴情報を有する第2のレジスタと、
    分岐命令が特定される第1のパイプラインステージ中に、前記第1のレジスタが前記分岐履歴情報をロードされ、第2のパイプラインステージ中に、前記第2のレジスタが前記分岐履歴情報をロードされる複数のパイプラインステージと、を具備するパイプラインプロセッサ。
  11. 前記分岐命令は、分岐ターゲットアドレスキャッシュ(BTAC)ヒットが発生する場合に特定される、請求項10のパイプラインプロセッサ。
  12. 前記分岐命令は、分岐ターゲット命令キャッシュ(BTIC)ヒットが発生する場合に特定される、請求項10のパイプラインプロセッサ。
  13. 前記第1のパイプラインステージは、命令キャッシュステージである、請求項10のパイプラインプロセッサ。
  14. 前記第2のパイプラインステージは、命令デコードステージである、請求項10のパイプラインプロセッサ。
  15. 前記分岐履歴情報は、条件付き分岐命令に関する分岐履歴情報をさらに有する、請求項10のパイプラインプロセッサ。
  16. 前記分岐履歴情報は、条件付き分岐命令及び無条件分岐命令に関する分岐履歴情報をさらに有する、請求項10のパイプラインプロセッサ。
  17. 前記第1のレジスタ及び前記第2のレジスタは、シフトレジスタである、請求項10のパイプラインプロセッサ。
  18. 前記第2のレジスタは、分岐訂正論理回路に入力を与えるために使用される、請求項10のパイプラインプロセッサ。
  19. 分岐命令をフェッチすることと、
    第1のパイプラインステージ中に前記分岐命令を特定することと、
    前記第1のパイプラインステージ中に第1のレジスタに分岐履歴情報をロードすることと、
    第2のパイプラインステージ中に前記分岐命令を確認することと、を具備し、
    前記分岐履歴情報は、前記第2のパイプラインステージ中に第2のレジスタへロードされる、分岐履歴情報を処理する方法。
  20. 前記分岐命令を特定する前記ステップは、分岐ターゲットアドレスキャッシュ(BTAC)ヒットが受信される場合に起こる、請求項19の方法。
  21. 前記第1のパイプラインステージは、命令キャッシュステージである、請求項19の方法。
  22. 前記第2のパイプラインステージは、デコードステージである、請求項19の方法。
JP2009536380A 2006-11-03 2007-10-25 ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 Expired - Fee Related JP5209633B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/556,244 US7984279B2 (en) 2006-11-03 2006-11-03 System and method for using a working global history register
US11/556,244 2006-11-03
PCT/US2007/082538 WO2008055045A1 (en) 2006-11-03 2007-10-25 A system and method for using a working global history register

Publications (2)

Publication Number Publication Date
JP2010509680A true JP2010509680A (ja) 2010-03-25
JP5209633B2 JP5209633B2 (ja) 2013-06-12

Family

ID=38926137

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009536380A Expired - Fee Related JP5209633B2 (ja) 2006-11-03 2007-10-25 ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法

Country Status (8)

Country Link
US (1) US7984279B2 (ja)
EP (1) EP2084602B1 (ja)
JP (1) JP5209633B2 (ja)
KR (1) KR101081674B1 (ja)
CN (1) CN101529378B (ja)
AT (1) ATE496329T1 (ja)
DE (1) DE602007012131D1 (ja)
WO (1) WO2008055045A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009037302A (ja) * 2007-07-31 2009-02-19 Nec Corp 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
DE102015002130A1 (de) 2014-02-26 2015-08-27 Fanuc Corporation Programmierbare Steuerung

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100031011A1 (en) * 2008-08-04 2010-02-04 International Business Machines Corporation Method and apparatus for optimized method of bht banking and multiple updates
US8078851B2 (en) * 2008-12-18 2011-12-13 Faraday Technology Corp. Processor and method for recovering global history shift register and return address stack thereof by determining a removal range of a branch recovery table
JP5367416B2 (ja) * 2009-03-04 2013-12-11 光洋サーモシステム株式会社 搬送ロボット装置
WO2013100998A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Processor with second jump execution unit for branch misprediction
US9229723B2 (en) 2012-06-11 2016-01-05 International Business Machines Corporation Global weak pattern history table filtering
US9858081B2 (en) * 2013-08-12 2018-01-02 International Business Machines Corporation Global branch prediction using branch and fetch group history
US10372590B2 (en) 2013-11-22 2019-08-06 International Business Corporation Determining instruction execution history in a debugger
CN113721985B (zh) * 2021-11-02 2022-02-08 超验信息科技(长沙)有限公司 Risc-v向量寄存器分组设置方法、装置及电子设备
US20230315468A1 (en) * 2022-03-30 2023-10-05 Advanced Micro Devices, Inc. Enforcing consistency across redundant tagged geometric (tage) branch histories

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08106387A (ja) * 1994-10-06 1996-04-23 Oki Electric Ind Co Ltd 命令プリフェッチ回路及びキャッシュ装置
JPH1074166A (ja) * 1996-03-13 1998-03-17 Sun Microsyst Inc 多重レベル・ダイナミック・セット予測方法および装置
JPH10283183A (ja) * 1997-04-09 1998-10-23 Hewlett Packard Co <Hp> 分岐予測調整方法
US6647467B1 (en) * 1997-08-01 2003-11-11 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US20050132175A1 (en) * 2001-05-04 2005-06-16 Ip-First, Llc. Speculative hybrid branch direction predictor
WO2005119428A1 (en) * 2004-06-02 2005-12-15 Intel Corporation Tlb correlated branch predictor and method for use therof

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155818A (en) * 1988-09-28 1992-10-13 Data General Corporation Unconditional wide branch instruction acceleration
US5604877A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US6418530B2 (en) 1999-02-18 2002-07-09 Hewlett-Packard Company Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions
US6622240B1 (en) * 1999-06-18 2003-09-16 Intrinsity, Inc. Method and apparatus for pre-branch instruction
SE0003446L (sv) * 2000-09-27 2002-03-28 Ericsson Telefon Ab L M En pipelinemikroprocessor och ett förfarnade relaterande därtill
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US20040225866A1 (en) * 2003-05-06 2004-11-11 Williamson David James Branch prediction in a data processing system
US20050228977A1 (en) * 2004-04-09 2005-10-13 Sun Microsystems,Inc. Branch prediction mechanism using multiple hash functions
US7181190B2 (en) 2004-04-30 2007-02-20 Microsoft Corporation Method for maintaining wireless network response time while saving wireless adapter power
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7278012B2 (en) * 2005-06-02 2007-10-02 Qualcomm Incorporated Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
TW200739419A (en) * 2006-04-07 2007-10-16 Univ Feng Chia Prediction mechanism of a program backward jump instruction

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08106387A (ja) * 1994-10-06 1996-04-23 Oki Electric Ind Co Ltd 命令プリフェッチ回路及びキャッシュ装置
JPH1074166A (ja) * 1996-03-13 1998-03-17 Sun Microsyst Inc 多重レベル・ダイナミック・セット予測方法および装置
JPH10283183A (ja) * 1997-04-09 1998-10-23 Hewlett Packard Co <Hp> 分岐予測調整方法
US6647467B1 (en) * 1997-08-01 2003-11-11 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US20050132175A1 (en) * 2001-05-04 2005-06-16 Ip-First, Llc. Speculative hybrid branch direction predictor
WO2005119428A1 (en) * 2004-06-02 2005-12-15 Intel Corporation Tlb correlated branch predictor and method for use therof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6012014528; Kevin Skadron, Margaret Martonosi, Douglas W. Clark: '"Speculative Updates of Local and Global Branch History: A Quantitative Analysis"' The Journal of Instruction-Level Parallelism Volume 2, 2000, [online] *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009037302A (ja) * 2007-07-31 2009-02-19 Nec Corp 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US8892852B2 (en) 2007-07-31 2014-11-18 Nec Corporation Branch prediction device and method that breaks accessing a pattern history table into multiple pipeline stages
DE102015002130A1 (de) 2014-02-26 2015-08-27 Fanuc Corporation Programmierbare Steuerung
JP2015161997A (ja) * 2014-02-26 2015-09-07 ファナック株式会社 分岐命令を高速に処理するためのインストラクションキャッシュを有するプログラマブルコントローラ
US10120687B2 (en) 2014-02-26 2018-11-06 Fanuc Corporation Programmable controller

Also Published As

Publication number Publication date
WO2008055045A1 (en) 2008-05-08
EP2084602A1 (en) 2009-08-05
KR20090089358A (ko) 2009-08-21
US7984279B2 (en) 2011-07-19
JP5209633B2 (ja) 2013-06-12
US20080109644A1 (en) 2008-05-08
EP2084602B1 (en) 2011-01-19
CN101529378B (zh) 2013-04-03
KR101081674B1 (ko) 2011-11-09
CN101529378A (zh) 2009-09-09
ATE496329T1 (de) 2011-02-15
DE602007012131D1 (de) 2011-03-03

Similar Documents

Publication Publication Date Title
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
US7278012B2 (en) Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US7685410B2 (en) Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
US9367471B2 (en) Fetch width predictor
US9201654B2 (en) Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US20110320787A1 (en) Indirect Branch Hint
EP2069915B1 (en) Methods and system for resolving simultaneous predicted branch instructions
JP5815596B2 (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
JPH0863356A (ja) 分岐予測装置
JPH0334024A (ja) 分岐予測の方法とそのための装置
US8473727B2 (en) History based pipelined branch prediction
US10007524B2 (en) Managing history information for branch prediction
US20070174592A1 (en) Early conditional selection of an operand
EP1609058A2 (en) Method and apparatus for hazard detection and management in a pipelined digital processor
US20050216713A1 (en) Instruction text controlled selectively stated branches for prediction via a branch target buffer
US20090070569A1 (en) Branch prediction device,branch prediction method, and microprocessor
US10318303B2 (en) Method and apparatus for augmentation and disambiguation of branch history in pipelined branch predictors
EP0666538A2 (en) Data processor with branch target address cache and method of operation
US20060259752A1 (en) Stateless Branch Prediction Scheme for VLIW Processor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120621

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120628

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120821

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120921

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130221

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

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5209633

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees