JP5059623B2 - プロセッサ及び命令プリフェッチ方法 - Google Patents

プロセッサ及び命令プリフェッチ方法 Download PDF

Info

Publication number
JP5059623B2
JP5059623B2 JP2007554361A JP2007554361A JP5059623B2 JP 5059623 B2 JP5059623 B2 JP 5059623B2 JP 2007554361 A JP2007554361 A JP 2007554361A JP 2007554361 A JP2007554361 A JP 2007554361A JP 5059623 B2 JP5059623 B2 JP 5059623B2
Authority
JP
Japan
Prior art keywords
prediction
branch
instruction
weighted
counter
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
JP2007554361A
Other languages
English (en)
Other versions
JP2008529191A (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 JP2008529191A publication Critical patent/JP2008529191A/ja
Application granted granted Critical
Publication of JP5059623B2 publication Critical patent/JP5059623B2/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
    • 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
    • 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

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)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、一般的には、プロセッサ分野に関するものである。本発明は、より具体的には、電力的に効率的なプロセッサ命令プリフェッチ方法に関するものである。
携帯型電子デバイスは、非常に様々な組織上、計算上、通信上及び娯楽上のサービスを提供する。これらのデバイスは、ますます普及しさらにますます精巧になってきている。携帯型電子デバイスが発展する上では、機能の向上と小型化に対する要求が熾烈さを極める傾向にある。向上した機能は、向上した計算力、特にこれまでよりもさらに高速かつ強力なプロセッサを要求する。
携帯型電子デバイスは、より高速なプロセッサを要求する高度な特長及び機能を提供するのと同様に、それ自体が小型・軽量化し続けている。この傾向が及ぼす1つの大きな影響は、前記デバイス内のプロセッサ及びその他の電子機器に電力を供給するために用いられる電池の小型化である。電池技術の向上がこの問題を部分的に相殺する一方で、電池の小型化は、携帯型電子デバイスの全ての電子機器、特に埋め込まれたプロセッサに関して厳しい電力収支を依然として課している。
従って、多くの用途、例えばほとんどの携帯型電子デバイス、にとっては、性能を向上させ及び/又は電力消費量を低減させるプロセッサの改良が望ましい。ほとんどの現代のプロセッサは、各々が複数の実行ステップを有する逐次命令が実行の際にオーバーラップするパイプライン化されたアーキテクチャを採用する。最高の性能を確保するためには、これらの命令がパイプライン内を連続的に流れるべきである。命令がパイプラインからフラッシュされ、その後に再始動されることになるようないずれの状況も、性能及び電力消費量に対して悪影響を及ぼす。
実世界のすべてのプログラムは、条件付き分岐命令を含み、これらの命令の実際の分岐行動は、前記命令がパイプラインの奥深くにおいて評価されるまで不明である。ほとんどの現代のプロセッサは、条件付き分岐命令の分岐行動がパイプライン内において早期に予測され、プロセッサが前記分岐予測に基づいて推測的に命令をフェッチ(プリフェッチ)して実行する何らかの形の分岐予測を採用する。実際の分岐行動が決定されたときに、前記分岐が誤予測された場合は、推測的にフェッチされた命令をパイプラインからフラッシュし、新しい命令を正確な次のアドレスからフェッチしなければならない。誤った分岐予測に応じて命令をプリフェッチすることは、プロセッサの性能及び電力消費量に対して悪影響を及ぼす。
既知の分岐予測技術は、静的及び動的の両方の予測を含む。幾つかの分岐命令の起こりうる行動は、プログラマ及び/又はコンパイラによって静的に予測可能である。一例は、エラー検査ルーチンである。ほとんどのコードは適切に実行し、エラーは稀である。従って、「エラー時分岐」関数を実装する分岐命令は、非常に大きな割合の時間において「不成立」と評価する。前記命令は、分岐条件の最も可能性のある結果を知っているプログラマ又はコンパイラによって設定された静的分析予測ビットをオプコード内に含むことができる。その他の分岐命令は、実行時間属性に基づいて静的に予測することができる。例えば、負の変位を有する分岐(すなわち、コード内において「後方に」分岐する分岐)、例えばループ出口評価、が通常は選択され、正の変位を有する分岐(コード内において「前方に」分岐する分岐)はめったに選択されない。従って、前記の分岐は、「成立」、後者の分岐は「不成立」と静的に予測することができる。
動的予測は、一般的には、予測中の分岐命令及び/又は同じコード内のその他の分岐命令の分岐評価歴(及び幾つかの場合は分岐予測精度歴)に基づく。実際のコードの広範な解析は、最近の過去の分岐評価パターンが将来の分岐命令の評価に関する優れた指標であることを示している。単純な分岐歴予測器(predictor)の一例として、条件付き分岐命令のアドレスビットによって各々がインデキシングされる複数の1ビットフラグを維持することができる。各フラグは、分岐が「成立」と評価したときにセットされ、分岐が「不成立」と評価したときにリセットされる。このように、分岐予測は、単純に、関連づけられたフラグの値であることができる。幾つかの分岐命令に関しては、この予測器は、正確な性能をもたらすことができる。
分岐予測精度を最高にすることに密接に関連する1つの設計上の最終目標は、誤った分岐予測の悪影響を最小に抑えることである。1ビットフラグが動的分岐予測器となっている上記の「エラー時分岐」条件について検討する。通常は、前記分岐が成立せず、前記関連フラグはゼロの状態であり、この命令の将来の実行に関して「不成立」と予測される。誤りが発生したときには、分岐が誤予測され、誤った命令がパイプライン内にプリフェッチされる。プロセッサは、既知の分岐誤予測回復方法に従って(性能を犠牲にしさらに電力を浪費して)誤った分岐予測から回復し、「成立した」分岐を反映させるようにフラグがセットされる。しかしながら、前記分岐命令の次の実行は「不成立」になる可能性が依然として非常に高い。この場合は、前記の単一ビット分岐評価歴は、各々の異常な分岐評価に関して2つの誤予測、すなわち、前記異常に関する誤予測及び前記分岐命令の次に後続する実行に関する誤予測を引き起こす。
誤予測分岐の評価の悪影響を最小にするための1つの既知の技術は、強予測又は弱予測、すなわち、信頼度(例えば、強予測又は弱予測)によって重みが付けられた予測(すなわち、成立又は不成立)の概念を導入することである。この概念の単純な一例は、メモリアクセス命令アドレスによってインデキシングされた2ビット飽和カウンタのテーブルを具備する2モード分岐予測器である。各カウンタは、以下のように重み付き予測値が各々割り当てられた4つの状態のうちの1つを想定する。
11−成立が強く予測される
10−成立が弱く予測される
01−不成立が弱く予測される
00−不成立が強く予測される
前記カウンタは、対応する分岐命令が「成立」と評価するごとに数字が増え、前記命令が「不成立」と評価するごとに数字が減る。この数字の増加/減少は、0b11において増加が停止したときに、及び0b00において減少が停止したときに「飽和する」。従って、分岐予測は、結果(成立又は不成立)だけでなく、前記予測の強度又は信頼度を示す重み付け係数も含む。
上記において検討された「エラー時分岐」等の分岐命令は、単一ビットフラグ予測器の場合と同じように2回誤予測するのではなく、飽和カウンタによって1度誤予測するだけであるにすぎない。第1の分岐予測は、予測器を「不成立が強く予測される」から「不成立が弱く予想される」に移行させる。実際の予測は2モードであり、MSBによって表される。従って、前記分岐命令の次の発生は、依然として「不成立」と予測され、この予測はおそらく正確である。
2モード飽和カウンタは、任意の大きさにすることができる。例えば、3ビットカウンタに予測信頼度を以下のように割り当てることができる。
111−成立が非常に強く予測される
110−成立が強く予測される
101−成立が予測される
100−成立が中程度で予測される
011−不成立が中程度で予測される
010−不成立が予測される
001−不成立が強く予測される
000−不成立が非常に強く予測される
当然のことであるが、これらのラベルは参照専用であり、前記カウンタの2進値は、分岐予測信頼度を決定し、範囲のいずれかの端部に向かうほど信頼度が高く、範囲の中央に向かうほど信頼度が低くなる。
当業において知られるように、飽和カウンタは、分岐評価に加えて予測精度を追跡することが可能である。飽和カウンタの出力は、「一致」又は「不一致」の重み付き値であることができ、前記出力を静的予測と組み合わせて重み付き予測に至る。一般的には、当業においては非常に広範な分岐予測方法が知られており、分岐をまったく予測せず2つ以上のその他の独立した予測器の中から予測を選択するために予測器が用いられる分岐予測方法を含む。例えば、本明細書において参照されることによってその全体が本明細書に組み入れられているスコット・マッファーリングの1993の論文"Combining Branch Predictors," Digital Western Research Laboratory Technical Note TN-36(「分岐予測器の結合」、デジタル・ウェスタン・リサーチ・ラボラトリ技術注記TN−36)を参照すること。
予測における信頼度尺度の導入は、経時での実際の分岐行動を追跡することによって分岐予測精度を向上させる一方で、実際の予測は2モード方式であってMSBによって表される。先行技術においては、分岐は、「成立」又は「不成立」として予測され、分岐ターゲットアドレス又は分岐命令への次の順次アドレスのいずれかである予測された次のアドレスからプリフェッチが進行する。すなわち、予測の重み付け、又はその強度は考慮されない。
一実施形態においては、分岐予測の重み付け、又は強度は、プロセッサが条件付き分岐命令に従って命令をプリフェッチするかどうかを決定する。強い重み付き分岐予測である場合は命令がプリフェッチされる。弱い重み付き予測の場合は、プリフェッチを停止させてパイプライン内における分岐条件の評価を待つことによってプロセッサの資源及び電力が保存される。弱い重み付き分岐予測は、強い重み付き分岐予測よりも正確さが低いため、弱い重み付き予測に応じたプリフェッチは、誤予測及びその後のパイプラインフラッシュが発生する可能性がより高くなる。弱い重み付き予測は、プリフェッチを完全に停止させることができ、代替として、キャッシュミスの場合のみにプリフェッチを停止させることができる。
一実施形態は、複数の重み付き分岐予測値のうちの1つを生成する分岐予測機構を有するプロセッサにおける命令プリフェッチ方法に関連する。強い重み付き予測に関しては、予測された次のアドレスから命令のプリフェッチが開始される。弱い重み付き予測に関しては、分岐条件が評価されるまで命令のプリフェッチが停止される。
他の実施形態は、プロセッサに関連する。前記プロセッサは、命令実行パイプラインと、条件付き分岐命令の評価を予測するため及び重み付き分岐予測値を出力するために動作可能な分岐予測機構と、を含む。前記プロセッサは、前記分岐予測機構からの強い重み付き予測に応じて予測された次のアドレスから推測的に命令をフェッチしてこれらの命令をパイプライン内にローディングするために、及び前記分岐予測機構からの弱い重み付き予測に応じて命令プリフェッチを停止させるために動作可能な命令プリフェッチ機構をさらに含む。
他の実施形態は、パイプライン化されたプロセッサ内での誤予測された分岐に関するキャッシュラインリプレースメントを防止する方法に関連する。条件付き分岐命令の評価は、予測及び前記予測の精度の信頼レベルを示す重み付き値を用いて予測することであり、前記条件付き分岐命令に従って、予測された次のアドレスに関して推測的にキャッシュメモリにアクセスされる。前記アクセスがキャッシュ内においてミスした場合で、前記予測値が、精度信頼度が低いことを示す場合は、前記ミスに応じたキャッシュラインリプレースメントが打ち切られる。
図1は、プロセッサ10の機能ブロック図を示す。プロセッサ10は、制御論理14に従って命令実行パイプライン12において命令を実行する。幾つかの実施形態においては、パイプライン12は、複数の並列パイプラインを有するスーパースカラー設計であることができる。パイプライン12は、パイプステージで構成される様々なレジスタ又はラッチ16と、1つ以上の算術論理装置(ALU)18と、を含む。汎用レジスタ(GPR)ファイル20は、メモリ階層の最上部を具備するレジスタを提供する。
パイプライン12は、命令キャッシュ(I−キャッシュ)22から命令をフェッチし、メモリアドレスの変換及び許可は命令変換ルックアサイドバッファ(ITLB)24によって管理される。条件付き分岐命令がパイプライン12において早期に復号されるときには、分岐予測機構23は、分岐行動を予測し、前記予測を命令プリフェッチ装置25に提供する。命令プリフェッチ装置25は、命令キャッシュ22から、「成立」分岐予測に関してはパイプライン12内において計算された分岐ターゲットアドレスから、又は「不成立」と予測された分岐に関しては次の順次アドレスから推測的に命令をフェッチする。いずれの場合においても、前記プリフェッチされた命令は、推測的な実行のためにパイプライン12内にローディングされる。
データキャッシュ(D−キャッシュ)26からデータにアクセスされ、メモリアドレスの変換及び許可は主変換ルックアサイドバッファ(TLB)28によって管理される。様々な実施形態においては、ITLBは、TLBの一部分のコピーを具備することができる。代替として、ITLB及びTLBは、統合することができる。同様に、プロセッサ10の様々な実施形態においては、Iキャッシュ22及びDキャッシュ26は、統合すること、又は統一することができる。Iキャッシュ22及び/又はDキャッシュ26内におけるミスは、メモリインタフェース30の制御の下で主(オフチップ)メモリ32にアクセスさせる。
プロセッサ10は、様々な周辺装置36へのアクセスを制御する入力/出力(I/O)インタフェース34を含むことができる。当業者は、プロセス10の数多くの変形が可能であることを理解するであろう。例えば、プロセッサ10は、Iキャッシュ又はDキャッシュ22、26のいずれか又は両方に関する第2のレベル(L2)のキャッシュを含むことができる。さらに、プロセッサ10において描かれる機能ブロックのうちの1つ以上を特定の実施形態から省くことが可能である。
上述されるように、当業においては非常に様々な分岐予測方法及びアルゴリズムが知られている。様々な分岐予測器の基礎となる構造又は方法にかかわらず、強い重み付き予測は弱い重み付き予測よりも正確であることが直観的に明らかであり、さらに統計的に証明可能である。すなわち、飽和カウンタのより飽和している値は、前記カウンタの重み付け範囲の中央方向の値よりも正確に分岐行動を予測する。中央の値は、その最近の評価歴がフラックス内にある分岐命令を表し、飽和値は、首尾一貫した最近の評価歴を有する分岐命令を表す。
強い重み付き分岐予測と弱い重み付き分岐予測との間におけるこの精度の違いは、強く予測された分岐命令に関する命令のみをプリフェッチすることによって、パイプライン化されたプロセッサ10内の電力を保存するために利用することができる。典型的な分岐予測方法が図2を参照しつつ説明される。パイプライン12において条件付き分岐命令が検出される(ブロック40)。この検出は、通常は、復号パイプステージにおいて行われるが、幾つかの実施形態においては、Iキャッシュ22内にローディングされる前に命令を予め復号することができ、パイプライン制御論理14は、命令をフェッチ直後に条件付き分岐命令を認識することができる。命令が条件付き分岐命令であることが検出され次第、重み付き値を有する予測を用いてその評価(「成立」又は「不成立」)が予測される(ブロック42)。この重み付き予測は、例えば分岐予測機構23によって提供される。分岐予測の重みが評価され(ブロック44)、強い重み付き予測の場合は、Iキャッシュ22から命令がプリフェッチされてパイプライン12において推測的に実行される(ブロック46)。弱い重み付き予測の場合は、命令プリフェッチ装置25は、いずれの命令もプリフェッチしない(ブロック48)。逆に、プリフェッチ装置25は、該当する条件付き分岐命令がパイプライン12において評価されてその実際の分岐行動が知られるまでプリフェッチを停止させる。その時点においては、既知の適切な次のアドレスから命令フェッチが続く。
実際には、この方法は、第3の状態又はデイレクティブ、すなわち、分岐の成立を予測してプリフェッチする、分岐の不成立を予測してプリフェッチする、又は実際の分岐条件の評価を待つ、を予測に加えることによって、先行技術の2モード方式分岐予測(すなわち、「成立」又は「不成立」)を変換させる。プロセッサ10は、(強い重み付き分岐結果と比較して)予測が誤りであってプリフェッチされた命令をフラッシュしなければならない可能性が高いときに、弱い重み付き分岐ターゲットから命令をプリフェッチしないことによって、命令をプリフェッチしてその推測的な実行を始めるために要求される電力を浪費しない。
強く予測される分岐の場合は、本発明の方法は、プロセッサの性能に対して影響を有さず、当業においてよく知られるようにプリフェッチが行われて分岐精度が性能に対して影響を与える。弱く予測される分岐の場合は、プリフェッチが停止され、プロセッサの性能に対する影響は、予測精度および可能性のある次のアドレス、すなわち、分岐ターゲットアドレス又は次の順次アドレス、がIキャッシュ22内に常駐するかどうかに依存する。性能への影響が下表1において要約されている。
Figure 0005059623
弱い重み付き分岐予測が正確である場合は、命令のプリフェッチを停止させることは、パイプライン内にストールを導入することによって性能を低下させる。(プリフェッチを行っているのとは相対的に)分岐命令復号と分岐予測との間、そして最終的な分岐条件の評価との間においてパイプステージ数だけ命令の実行がストールされる。この場合は、究極的には同じ命令がフェッチ及び実行されるため電力の節約はない。
しかしながら、弱い重み付き分岐予測が誤っている場合は、本発明のプリフェッチ停止方法は、電力を節約するだけでなく、プロセッサの性能を向上させることもできる。予測されたアドレスがIキャッシュ22内に常駐する場合は、プロセッサ10は、正確な弱い重み付き分岐予測の場合と同じストールを被る。しかしながら、コントローラ14は、パイプライン12をフラッシュしてその他の誤予測回復動作に従事する必要がない。誤予測された分岐が回復に関する例外を要求する場合は、命令のプリフェッチを停止させていることは、プリフェッチに対するプロセッサの性能の有意な向上を表す。
弱い重み付き分岐予測が誤っておりさらに予測されたアドレスがIキャッシュ22内に常駐しない場合は、本発明のプリフェッチ停止方法は、電力を節約し、プロセッサ性能を大幅に向上させる。この場合は、プリフェッチ動作は、Iキャッシュ22内においてミスし、メモリアクセス及びキャッシュラインリプレースメントを生じさせる。外部メモリへのアクセスは低速で電力を消費し、性能及び電力の両方の管理に対して悪影響を及ぼす。しかしながら、それよりも悪いことに、前記動作は、キャッシュライン全体を、プロセッサ10が実行する必要のない命令に置き換える。このことは、前記置き換えられた命令が再度フェッチされたときに後続するキャッシュミスを引き起こし、他の外部メモリへのアクセスの遅延及び電力消費を要求する。
本発明の一実施形態においては、弱い重み付き分岐予測に応じて命令プリフェッチが完全に停止されるわけではなく、図3を参照して説明されるように、Iキャッシュ22においてプリフェッチがミスした場合のみに停止される。上述されるように、条件付き分岐命令が検出され(ブロック40)、その評価が予測される(ブロック42)。前記予測に強い重みが付けられている場合は、予測された次のアドレスから命令がプリフェッチされる(ブロック46)。前記予測に弱い重みが付けられている場合は、命令プリフェッチ装置25は、Iキャッシュ22にアクセスして前記予測された次のアドレスが常駐するかどうかを決定する(ブロック50)。前記予測されたアドレスがIキャッシュ22内においてヒットする場合は、プリフェッチが継続する(ブロック52)。前記プリフェッチ動作がIキャッシュ22内においてミスした場合は、前記プリフェッチ動作は終了され、パイプライン12において分岐条件が評価されるまでプリフェッチが停止される(ブロック54)。この実施形態においては、正確な弱い重み付き分岐予測の場合におけるストールが回避され、その一方で、誤った弱い重み付き分岐予測に関してキャッシュラインリプレースメントによって被る有意な性能低下に対して保護する。
Iキャッシュミスの場合に弱い重み付き分岐予測が命令のプリフェッチを完全に停止させるか又はプリフェッチを停止させるだけであるかにかかわらず、いずれの所定の実施形態においても、何が「弱い」又は「強い」予測重み付けであるかを定義しなければならない。電力節約に相応の重要性を持たせるとともにある程度の性能劣化は許容可能な用途においては、強い重み付き予測は、飽和カウンタの最も飽和している値のみを具備することができる。すなわち、ハードウェアの観点から、すべてのカウンタビットが一致する場合は、予測は強い重みが付けられてプリフェッチがイネーブルにされ、いずれかのカウンタビットが一致しない場合は、予測は弱い重み付きであるとみなされ、プリフェッチが完全にまたは条件付きでディスエーブルにされる。
電力節約のほうが重要性が低い及び/又は性能のほうが重要である場合は、より柔軟なアプローチ法は、強い重み付きについて定義する際に飽和レベルのカウンタ値に加えて飽和レベルに近いカウンタ値を含むことができる。1つの制限することを意図しない例として、カウンタ値の上位及び下位の25%を強い重み付きとみなし、中央の50%を弱い重み付きとみなすことができる。2進カウンタの場合は、この分布に関するハードウェアの観点では、2つの最上位ビットが一致する場合は、予測値は強い重み付きである。代替として、上位又は下位の1/3を強い重み付きとみなし、中央の1/3を弱い重み付きとみなすことができる。強い重み付き予測と弱い重み付き予測の区別は、様々な方法で、特定の用途に応じて適宜定義可能であることを当業者は直ちに理解するであろう。
本明細書において用いられる強い及び弱いという表現、及びその派生表現は、参照表現である。特に、これらの表現は、分岐予測及び該予測の精度の信頼レベルを示す重み付き出力を生成する分岐予測器の出力を指し、ここで、強い重み付きは、高い信頼度を示す出力を指し、弱い重み付きは、低い信頼度を示す出力を指す。弱い重み付き分岐予測に応じて完全にまたは条件付きで命令プリフェッチ及び/又は推測的命令実行を停止させるあらゆるプロセッサ10は、本発明の適用範囲内である。
本発明は、本明細書においては、本発明の特定の特長、側面及び実施形態に関して説明されているが、数多くの変形、修正、及びその他の条件が本発明の広範な適用範囲内にあることが明確になり、このため、あらゆる変形、修正及び実施形態が本発明の適用範囲内にあるとみなすべきである。従って、本明細書の実施形態は、あらゆる点において例示的な実施形態であって制限するものではないと解釈すべきであり、添付される特許請求項の意味及び同等の意味の範囲内にあるすべての変更は、前記請求項内に包含されることが意図されている。
プロセッサの機能ブロック図である。 電力的に効率的な命令プリフェッチ方法の流れ図である。 電力的に効率的なキャッシュ管理方法の流れ図である。

Claims (10)

  1. 命令実行パイプラインと、メモリサブシステムに結合された命令キャッシュと、飽和カウンタに基づいて、条件付き分岐命令に関する分岐条件の評価を予測して、前記飽和カウンタから重み付き分岐予測値を出力するように動作可能な分岐予測機構と、前記重み付き分岐予測値と、前記プリフェッチが前記命令キャッシュ内でヒットするかどうか、に応答して、前記命令キャッシュから命令を選択的にプリフェッチするとともに、命令キャッシュミスの場合に前記メモリサブシステムから前記命令をプリフェッチするように動作する命令プリフェッチ機構とを具備するプロセッサであって、
    前記命令プリフェッチ機構は、弱い重み付き分岐予測およびキャッシュミスの場合には、前記分岐条件が前記命令実行パイプラインにおいて評価されるまで停止され、これによって、前記メモリサブシステムからの命令のプリフェッチを停止し、前記命令プリフェッチ機構は、強い重み付き分岐予測の場合あるいは前記弱い重み付き分岐予測および命令キャッシュヒットの場合において実行されるプロセッサ。
  2. 前記飽和カウンタの出力を少なくとも1つの静的予測と結合させて前記重み付き分岐予測値を生成することをさらに具備する請求項1に記載のプロセッサ。
  3. 前記飽和カウンタは、nビットを具備し、
    強い重み付き予測を、nの全ビットが一致する予測であると定義することと、
    弱い重み付き予測を、いずれかのビットが一致しない予測であると定義すること、とをさらに具備する請求項1に記載のプロセッサ。
  4. 前記飽和カウンタは、2つ以上のビットを具備し、
    強い重み付き予測を、前記2つの最上位ビットが一致する予測であると定義することと、
    弱い重み付き予測を、前記2つの最上位ビットが一致しない予測であると定義すること、とをさらに具備する請求項1に記載のプロセッサ。
  5. 前記飽和カウンタは、nビットの2進カウンタを具備し、
    強い重み付き予測を、N以下でさらに(2n−1)−N以上のカウンタ値であると定義することと、
    弱い重み付き予測を、Nよりも大きくさらに(2n−1)−N未満のカウンタ値であると定義すること、とをさらに具備し、Nは、(2n/2)−2以下の負でない整数である、請求項1に記載のプロセッサ。
  6. 命令キャッシュから命令をプリフェッチするとともに、命令キャッシュミスの場合にはプロセッサ内のメモリサブシステムから命令をプリフェッチする方法であって、
    命令実行パイプラインにおいて命令を実行することと、
    飽和カウンタに基づいて条件付き分岐命令に関する分岐条件の評価を予測して、前記飽和カウンタからの重み付き分岐予測値を提供することと、
    メモリサブシステムに結合された命令キャッシュから選択的に命令をプリフェッチすることと、
    弱い重み付き分岐予測およびキャッシュミスの場合には、前記分岐条件が前記命令実行パイプラインにおいて評価されるまで、前記メモリサブシステムからの命令のプリフェッチを停止することと、
    強い重み付き分岐予測あるいは弱い重み付き分岐予測および命令キャッシュヒットの場合には、前記命令をプリフェッチすることと、
    を具備する命令プリフェッチ方法。
  7. 前記飽和カウンタの出力を少なくとも1つの静的予測と結合させて前記重み付き分岐予測値を生成することをさらに具備する請求項6に記載の命令プリフェッチ方法。
  8. 強い重み付き予測を、nビット飽和カウンタのnの全ビットが一致する予測であると定義することと、
    弱い重み付き予測を、前記nビット飽和カウンタのいずれかのビットが一致しない予測であると定義すること、とをさらに具備する請求項6に記載の命令プリフェッチ方法。
  9. 前記飽和カウンタは、2つ以上のビットを具備し、
    強い重み付き予測を、2つ以上のビットからなる前記飽和カウンタの前記2つの最上位ビットが一致する予測であると定義することと、
    弱い重み付き予測を、前記飽和カウンタの前記2つの最上位ビットが一致しない予測であると定義すること、とをさらに具備する請求項6に記載の命令プリフェッチ方法。
  10. 強い重み付き予測を、nビットの2進カウンタからなる前記飽和カウンタに基づいて、N以下でさらに(2n−1)−N以上のカウンタ値であると定義することと、
    弱い重み付き予測を、前記飽和カウンタに基づいて、Nよりも大きくさらに(2n−1)−N未満のカウンタ値であると定義すること、とをさらに具備し、Nは、(2n/2)−2以下の負でない整数である、請求項6に記載の命令プリフェッチ方法。
JP2007554361A 2005-02-03 2006-02-03 プロセッサ及び命令プリフェッチ方法 Expired - Fee Related JP5059623B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/050,932 2005-02-03
US11/050,932 US7587580B2 (en) 2005-02-03 2005-02-03 Power efficient instruction prefetch mechanism
PCT/US2006/006993 WO2006084288A2 (en) 2005-02-03 2006-02-03 Instruction prefetch mechanism

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012045190A Division JP5335946B2 (ja) 2005-02-03 2012-03-01 電力的に効率的な命令プリフェッチ機構

Publications (2)

Publication Number Publication Date
JP2008529191A JP2008529191A (ja) 2008-07-31
JP5059623B2 true JP5059623B2 (ja) 2012-10-24

Family

ID=36480912

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007554361A Expired - Fee Related JP5059623B2 (ja) 2005-02-03 2006-02-03 プロセッサ及び命令プリフェッチ方法
JP2012045190A Expired - Fee Related JP5335946B2 (ja) 2005-02-03 2012-03-01 電力的に効率的な命令プリフェッチ機構

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012045190A Expired - Fee Related JP5335946B2 (ja) 2005-02-03 2012-03-01 電力的に効率的な命令プリフェッチ機構

Country Status (9)

Country Link
US (2) US7587580B2 (ja)
EP (2) EP2431868B1 (ja)
JP (2) JP5059623B2 (ja)
KR (1) KR100944139B1 (ja)
CN (1) CN100547542C (ja)
CA (1) CA2596865A1 (ja)
IL (1) IL184986A0 (ja)
RU (1) RU2375745C2 (ja)
WO (1) WO2006084288A2 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US7516304B2 (en) 2005-03-10 2009-04-07 International Business Machines Corporation Parsing-enhancement facility
US20060230236A1 (en) * 2005-04-08 2006-10-12 Sun Microsystems, Inc. Method and apparatus for precognitive fetching
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US8566568B2 (en) * 2006-08-16 2013-10-22 Qualcomm Incorporated Method and apparatus for executing processor instructions based on a dynamically alterable delay
WO2008029450A1 (fr) * 2006-09-05 2008-03-13 Fujitsu Limited Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
US8027218B2 (en) 2006-10-13 2011-09-27 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US7787324B2 (en) * 2006-10-13 2010-08-31 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US7627742B2 (en) * 2007-04-10 2009-12-01 International Business Machines Corporation Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system
US8443176B2 (en) * 2008-02-25 2013-05-14 International Business Machines Corporation Method, system, and computer program product for reducing cache memory pollution
JP5195228B2 (ja) * 2008-09-26 2013-05-08 富士通株式会社 処理プログラム、処理装置及び処理方法
JP5387819B2 (ja) * 2008-12-26 2014-01-15 日本電気株式会社 分岐予測の信頼度見積もり回路及びその方法
JP2011028540A (ja) * 2009-07-27 2011-02-10 Renesas Electronics Corp 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
CN101887400B (zh) * 2010-06-24 2015-08-12 中兴通讯股份有限公司 缓存对象老化的方法和装置
US9122486B2 (en) 2010-11-08 2015-09-01 Qualcomm Incorporated Bimodal branch predictor encoded in a branch instruction
US9836304B2 (en) * 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
RU2475822C1 (ru) * 2011-12-08 2013-02-20 Учреждение Российской академии наук Научно-исследовательский институт системных исследований РАН (НИИСИ РАН) Подсистема памяти ядра микропроцессора
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
CN104106046B (zh) * 2012-02-14 2018-05-15 瑞萨电子株式会社 数据处理装置
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9116686B2 (en) 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9201796B2 (en) * 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine
US9389868B2 (en) * 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9304932B2 (en) * 2012-12-20 2016-04-05 Qualcomm Incorporated Instruction cache having a multi-bit way prediction mask
GB2513043B (en) 2013-01-15 2015-09-30 Imagination Tech Ltd Improved control of pre-fetch traffic
US9519586B2 (en) * 2013-01-21 2016-12-13 Qualcomm Incorporated Methods and apparatus to reduce cache pollution caused by data prefetching
US20140281434A1 (en) * 2013-03-15 2014-09-18 Carlos Madriles Path profiling using hardware and software combination
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
GB2515076B (en) * 2013-06-13 2020-07-15 Advanced Risc Mach Ltd A data processing apparatus and method for handling retrieval of instructions from an instruction cache
JP6287650B2 (ja) * 2014-07-10 2018-03-07 富士通株式会社 シミュレーション方法、シミュレーションプログラム
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US10296463B2 (en) * 2016-01-07 2019-05-21 Samsung Electronics Co., Ltd. Instruction prefetcher dynamically controlled by readily available prefetcher accuracy
US10474462B2 (en) * 2016-02-29 2019-11-12 Qualcomm Incorporated Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions
GB2548871B (en) * 2016-03-31 2019-02-06 Advanced Risc Mach Ltd Instruction prefetching
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US10657057B2 (en) * 2018-04-04 2020-05-19 Nxp B.V. Secure speculative instruction execution in a data processing system
US10901743B2 (en) 2018-07-19 2021-01-26 International Business Machines Corporation Speculative execution of both paths of a weakly predicted branch instruction
US10489305B1 (en) * 2018-08-14 2019-11-26 Texas Instruments Incorporated Prefetch kill and revival in an instruction cache
CN110688160B (zh) * 2019-09-04 2021-11-19 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质
US11288209B2 (en) * 2019-09-20 2022-03-29 Arm Limited Controlling cache entry replacement based on usefulness of cache entry
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core
US11579884B2 (en) 2020-06-26 2023-02-14 Advanced Micro Devices, Inc. Instruction address translation and caching for primary and alternate branch prediction paths
US11567776B2 (en) * 2020-11-03 2023-01-31 Centaur Technology, Inc. Branch density detection for prefetcher
CN114116016B (zh) * 2022-01-27 2022-04-22 广东省新一代通信与网络创新研究院 基于处理器的指令预取方法及装置
US20230418611A1 (en) * 2022-06-23 2023-12-28 Arm Limited Prediction of number of iterations of a fetching process

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666666A (en) * 1995-06-07 1997-09-16 Chaffen; Barry Neckwear
US5721864A (en) * 1995-09-18 1998-02-24 International Business Machines Corporation Prefetching instructions between caches
US5740417A (en) 1995-12-05 1998-04-14 Motorola, Inc. Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states
US5752014A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US5930159A (en) 1996-10-17 1999-07-27 Samsung Electronics Co., Ltd Right-shifting an integer operand and rounding a fractional intermediate result to obtain a rounded integer result
US6735688B1 (en) * 1996-11-13 2004-05-11 Intel Corporation Processor having replay architecture with fast and slow replay paths
US6092187A (en) 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6134633A (en) * 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
JP4111645B2 (ja) * 1999-11-30 2008-07-02 富士通株式会社 キャッシュミスした後のメモリバスアクセス制御方式
KR20010051885A (ko) 1999-11-24 2001-06-25 메리 이. 보울러 피복시 박리 강도가 개선된 폴리이미드 조성물
US6681322B1 (en) * 1999-11-26 2004-01-20 Hewlett-Packard Development Company L.P. Method and apparatus for emulating an instruction set extension in a digital computer system
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6633970B1 (en) * 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
RU2189623C2 (ru) 2000-06-27 2002-09-20 Тюрин Сергей Феофентович Система для программного управления технологическим оборудованием
US6766441B2 (en) 2001-01-19 2004-07-20 International Business Machines Corporation Prefetching instructions in mis-predicted path for low confidence branches
RU2238584C2 (ru) 2002-07-31 2004-10-20 Муратшин Борис Фрилевич Способ организации персистентной кэш памяти для многозадачных, в том числе симметричных многопроцессорных компьютерных систем и устройство для его осуществления
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US20070186050A1 (en) 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US8341383B2 (en) * 2007-11-02 2012-12-25 Qualcomm Incorporated Method and a system for accelerating procedure return sequences
US8874884B2 (en) * 2011-11-04 2014-10-28 Qualcomm Incorporated Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold

Also Published As

Publication number Publication date
EP1851621A2 (en) 2007-11-07
IL184986A0 (en) 2007-12-03
EP2431868A2 (en) 2012-03-21
EP1851621B1 (en) 2013-04-03
JP2008529191A (ja) 2008-07-31
RU2375745C2 (ru) 2009-12-10
JP2012150824A (ja) 2012-08-09
US8661229B2 (en) 2014-02-25
CN100547542C (zh) 2009-10-07
US20090210663A1 (en) 2009-08-20
JP5335946B2 (ja) 2013-11-06
KR100944139B1 (ko) 2010-02-24
EP2431868A3 (en) 2013-01-02
US20060174090A1 (en) 2006-08-03
WO2006084288A2 (en) 2006-08-10
WO2006084288A3 (en) 2007-01-11
RU2007132861A (ru) 2009-03-10
CA2596865A1 (en) 2006-08-10
KR20070108209A (ko) 2007-11-08
CN101147127A (zh) 2008-03-19
EP2431868B1 (en) 2018-10-03
US7587580B2 (en) 2009-09-08

Similar Documents

Publication Publication Date Title
JP5059623B2 (ja) プロセッサ及び命令プリフェッチ方法
JP5313279B2 (ja) 非アラインドメモリアクセス予測
KR101459536B1 (ko) 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치
KR100930199B1 (ko) 루프―종료 브랜치들에 의한 브랜치 히스토리 레지스터의업데이트 억제
JP4585005B2 (ja) 分岐訂正によるプリデコードのエラー処理
JP2011100466A5 (ja)
JP2008532142A5 (ja)
KR20090031751A (ko) 프로액티브 브랜치 타깃 어드레스 캐시 관리를 위한 방법들및 장치
JP5745638B2 (ja) 分岐命令の中に符号化されたバイモーダル分岐予測子

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100831

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101130

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110131

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120301

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120424

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120802

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

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5059623

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees