JP3798404B2 - 2レベルの分岐予測キャッシュによる分岐予測 - Google Patents
2レベルの分岐予測キャッシュによる分岐予測 Download PDFInfo
- Publication number
- JP3798404B2 JP3798404B2 JP2003521935A JP2003521935A JP3798404B2 JP 3798404 B2 JP3798404 B2 JP 3798404B2 JP 2003521935 A JP2003521935 A JP 2003521935A JP 2003521935 A JP2003521935 A JP 2003521935A JP 3798404 B2 JP3798404 B2 JP 3798404B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- branch prediction
- instruction
- prediction
- level cache
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
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)
Description
スーパースカラーマイクロプロセッサでは、1クロックサイクルに複数の命令を実行し、その設計に合わせた最も短いクロックサイクルを選択することによって高性能が実現されている。本明細書で使用されるように、「クロックサイクル」との用語は、マイクロプロセッサ内の命令処理パイプラインの各種ステージに与えられる時間間隔を指す。記憶装置(例えばレジスタやアレイ)は、クロックサイクルに従って値を取得する。例えば、記憶装置が、クロックサイクルを定義しているクロック信号の立ち上がりまたは立ち下がりに従って値を取得し得る。次に、記憶装置は、クロック信号の立ち上がりに値を取得した場合は次の立ち上がりまで、足り下がりで取得した場合は立ち下がりまでこの値をストアし得る。本明細書に使用する「命令処理パイプライン」との用語は、パイプライン方式での命令の処理に使用される論理回路を指す。パイプラインを、任意の数のステージに分割して、これらステージで命令処理の一部を実行することが可能であるが、一般に命令処理では、命令のフェッチ、命令のデコード、命令の実行、およびデスティネーションへの実行結果のストアが行われる。
図1を参照すると、プロセッサ10の一実施形態のブロック図が示される。別の実施形態も可能であり、考慮される。プロセッサ10は、プリフェッチユニット12、分岐予測ユニット14、命令キャッシュ16、命令整列ユニット18、複数個のデコードユニット20A〜20C、複数個のリザベーションステーション22A〜22C、複数個の機能ユニット24A〜24C、ロード/ストアユニット26、データキャッシュ28、レジスタファイル30、リオーダーバッファ32、MROMユニット34およびバスインターフェイスユニット37を備える。本明細書において、後に文字が付された参照符号によって参照される複数の要素は、参照符号のみによって集合的に参照される。例えば、デコードユニット20A〜20Cは、デコードユニット20として集合的に参照される。
エンドビット 00001
図2に、分岐予測ユニット14の一実施形態の一部を示す。図2に示した部分のほか、分岐予測ユニット14の他の実施形態も可能であり、考慮される。図2に示すように、分岐予測ユニット14は、グローバル予測記憶域205、ローカル予測記憶域206、分岐ターゲット記憶域208、更新論理200,202、グローバル履歴シフトレジスタ(GHSR)204、ラインバッファ210、戻りアドレススタック(RAS)230、連続アドレス生成器(SEQ)232、予測論理220、犠牲キャッシュ260、分岐アドレス計算器270、命令キャッシュ16、L2キャッシュ1828、およびデコーダ回路400を備える。犠牲キャッシュ260は、ローカル予測記憶域206から排除された分岐予測情報をストアするように構成されたレベル2(L2)キャッシュである。一実施形態においては、犠牲キャッシュ260は、以前はローカル予測記憶域206に保持されていたが、別のデータを記憶する領域を確保するために排除されたデータのみをキャッシュするように構成されている。ローカル予測記憶域206と犠牲キャッシュ260とがデータを重複して記憶することがないため、より多くの分岐予測情報を保持することができ有利である。
上記したように、一実施形態においては、分岐予測ユニット14にグローバル予測メカニズムが含まれ得る。グローバル予測メカニズムの詳細は、同時係属中であって譲受人が共通する特許出願「グローバル履歴分岐予測における条件付き分岐の動的分類(Dynamic Classification of Conditional Branches in Global History Branch Prediction)」、米国特許出願第09/441,630号、1999年11月16日出願、ズラスキー ジュニアら(Zuraski, Jr. et al.)に記載されている。同開示は、参照として本願に包含される。上記したように、プリフェッチユニット12は、分岐命令を検出して、分岐命令に対応する分岐情報を分岐予測ユニット14に送るように構成され得る。条件付き分岐が検出されると、更新論理200は、この分岐予測に対応するエントリをローカル予測記憶域206内に作成し、新たに作成したこの分岐予測エントリを「分岐不成立」に初期化し得る。一実施形態においては、ローカル予測記憶域206は、分岐マーカーを含む分岐予測情報をストアし得る。この情報は、分岐予測を作成して、分岐ターゲット記憶域208、連続アドレス232、または戻りスタックアドレス230にストアされている複数の分岐ターゲットアドレスのうちから行き先を選択するために使用される。ローカル予測記憶域206内に分岐のエントリを作成する際に、予測分岐方向が「分岐不成立」に初期化され、これと対応する分岐マーカーが、連続アドレス232を示すように初期化される。このほかに、条件付き分岐に対応するエントリがラインバッファ210内に作成される。ラインバッファのエントリには、グローバル履歴、フェッチアドレス、グローバル予測およびグローバルビットが含まれ得る。
リオーダーバッファ32は、リタイヤ時または予測ミスの発生時に、分岐の挙動に関する情報を更新論理200に送る。また、ラインバッファ210も、更新論理200,202にラインバッファのエントリを送る。ラインバッファの分岐のエントリが、分類が非動的であると分類されており、「分岐不成立」と予測されていることを示し、かつリオーダーバッファ32が、対応する分岐の予測が外れたことを示す場合、更新論理200は、予測ミスとなった分岐に対応する分岐予測のエントリを更新する。更新論理200は、ローカル予測記憶域206内の分岐予測を「分岐不成立」から「分岐成立」に更新し、分岐ターゲットアドレスを分岐ターゲット記憶域208にストアする。ストアした分岐ターゲットアドレスに対応する「動的」(すなわち「グローバル」)ビットが、分岐が静的すなわち非動的であることを示すように初期化される。この値は、2進数の0によって表され得る。この分岐予測のエントリが分岐予測ユニット14から削除される前に、この分岐が次に実行されたとき、分岐予測のエントリは「分岐成立」を示し、分岐は非動的として分類されている。分岐が「分岐成立」と予測され、非動的であると分類されている場合、予測論理220は、マルチプレクサ212からターゲットアドレスを選択する。上記と同様に、分岐予測が正しい場合は、更新論理200または202によって分岐予測を更新する必要はない。これに対して、「分岐成立」と予測された非動的な分岐が成立しなかった場合、分岐予測のエントリとグローバル履歴シフトレジスタ204とが更新される。
非動的であると分類され、かつ「分岐成立」と予測された分岐の予測が外れた場合、更新論理200は、ローカル予測記憶域206内の、予測ミスとなった分岐に対応する動的ビットを更新して、分岐を動的すなわちグローバルであると分類する。さらに、更新論理200は、グローバル予測記憶域204内の、予測ミスとなった分岐に対応するグローバル予測エントリを、「分岐不成立」に更新する。また、更新論理202は、分岐が不成立だったことを示すようにグローバル履歴シフトレジスタ204を更新する。一実施形態においては、グローバル履歴シフトレジスタ204は、最新の8個の動的分岐の挙動を記録する。
上記の分岐予測ユニット14の動作の概略は、対応するフェッチアドレスがローカル予測記憶域206に存在する場合の分岐予測を想定している。しかし、受け取ったフェッチアドレスに対応する分岐予測がローカル予測記憶域206にない場合もある。次に、このような状況に対処する方法を概説する。
一実施形態においては、ローカル予測記憶域206は、命令キャッシュ16と同様な方法によって編成され得る。ローカル予測記憶域206にストアされているデータは、ウェイに編成された記憶域のラインから構成され得る。一実施形態においては、ローカル予測記憶域206は、命令キャッシュ16内の全エントリを格納できるだけの十分なサイズを有する。別の実施形態においては、ローカル予測記憶域206のサイズは、命令キャッシュ16のサイズよりも小さくてもよい。例えば、ローカル予測記憶域206は、命令キャッシュ16のサイズの4分の1であり得る。このような実施形態においては、ローカル予測記憶域206内の、同じ記憶場所を指している複数のフェッチアドレスのエントリ同士を区別するために、ローカル予測記憶域206にローカル予測と共に追加ビットがストアされ得る。一実施形態においては、グローバル予測記憶域205が、複数のフェッチアドレスの予測を1つの記憶場所に格納できるように構成され得る。当業者は、ローカル予測記憶域206およびグローバル予測記憶域205を様々に構成可能であることを容易に理解するであろう。
一般に分岐命令は、少なくとも1つのオペコード(マイクロプロセッサ10が使用する命令セット内で分岐命令を識別する)と、分岐ターゲットアドレスを生成するために分岐命令のアドレスに加算される変位(あるいは分岐命令の直後の命令のアドレス)とを有する。このため、分岐命令は、通常は少なくとも2バイトを占める。このことを利用すれば、全命令バイトに対する分岐マーカービットをストアする必要がなく、連続する命令バイトの組に対してストアされる分岐マーカービットのビット数を低減させることができる。しかし、分岐が「分岐成立」と予測されていることを示すように分岐マーカーがセットされていても、分岐予測が見落とされ得る、シングルバイトのRET命令が関与する留意すべき特定の場合が存在する。この特定の場合に対処するための実施形態を以下に記載する。
図15を参照すると、分岐予測情報450の一実施形態が示される。上記のように、連続する命令バイト50の各組は、ローカル予測記憶域206にストアされている、対応する分岐マーカービット52と分岐予測情報450とのセットを有する。本図の実施形態においては、分岐予測情報450は、500A〜500Cの3つの分岐命令情報を有する。500A〜500Cの各々は6ビットであり、成立予測分岐に対応する情報を提供している。図15に示すように、分岐予測情報には、動的ビット502、エンド調整ビット504、および分岐命令の種類およびサイズの分類に使用する4つのビット506が含まれる。動的ビット502は、ローカル予測記憶域206にあるローカル分岐予測ではなく、グローバル予測記憶域205にあるグローバル分岐予測を使用すべきことを示し得る。エンド調整ビット504は、対応する分岐命令が偶数バイトで終端しているか奇数バイトで終端しているかを示し得る。最後に、分岐情報506は、分岐命令の種類およびサイズの分類に使用され得る。
図16を参照すると、予測論理の一実施形態220が示される。図16には、比較回路系802、ローカル予測回路900、ターゲット選択回路1100、および制御回路1102が記載されている。比較回路802はフェッチアドレスのオフセットを受信するように結合され、かつ予測回路900およびターゲット選択回路1100に信号1704を送るようにさらに結合されている。ターゲット選択回路1100および予測回路900は、ローカル予測記憶域206から分岐予測のエントリに関する情報を受信するように結合されている。制御回路1102は、予測回路900、ターゲット選択回路1100、ローカル予測記憶域206、およびグローバル予測記憶域205に結合されている。一般に、比較回路802は、上記のようにフェッチアドレスを受け取って回路900,1100に信号1704を送る。予測回路900は、ローカル予測記憶域206から受け取った分岐マーカービットおよび回路802から受け取った信号に基づいて分岐予測が作成されるかどうかを判定するように構成されており、得られた予測1710を制御回路1102に送る。また、ターゲット選択回路1100は、ローカル予測記憶域206から受け取った分岐マーカービットを使用して、分岐成立の際にどの分岐ターゲットを使用すべきかを示す情報(indication)1706を制御回路1102に送る。また、制御回路は、分岐ターゲット情報1714を受け取って、フェッチアドレスを選択する信号240をマルチプレクサ202に送る。さらに、一実施形態においては、回路1102は、分岐アドレス計算器270に分岐予測250を送る。また、本実施形態には特定の分岐について別の予測を提供し得るグローバル予測メカニズムが記載されているが、本メカニズムは、グローバル予測メカニズムがなくても使用することができる。
上記したように、一実施形態においては、信号240によって選択されてマルチプレクサ212によって送信されるフェッチアドレス243は、所定のフェッチアドレスに関し、分岐予測ユニット16によって送信される最終的な分岐予測を提供し得る。しかし、別の実施形態においては、分岐予測ユニット14は、初期の段階で予測ミスを検出するために、分岐アドレスの計算を実行するように構成される。図19は、分岐アドレス計算器270のブロック図である。本図の実施形態においては、分岐アドレス計算器270は、マルチプレクサ222からアドレス236を、ローカル予測記憶域206から予測情報242を、命令キャッシュ16から命令バイトの組241を、マルチプレクサ212からターゲットアドレス243を受け取るように構成されている。分岐アドレス計算器270はフェッチアドレス245を送るようにも構成されている。
上記したように、犠牲キャッシュ260を使用して、ローカル予測記憶域206から排除された分岐予測情報がストアされ得る。図20は、ローカル予測記憶域206と犠牲キャッシュ260との相互作用(interaction)の一実施形態を示すブロック図である。図20には、ローカル予測記憶域206および犠牲キャッシュ260のほかに、I(命令)キャッシュ16、L2キャッシュ1828およびデコーダ400が記載されている。本図の実施形態においては、犠牲キャッシュ260は、ローカル予測記憶域206から排除された分岐予測情報をストアするように構成され、L2キャッシュ1828は、プログラム命令を含め、データをストアするように構成されている。
上記したように、シングルバイトのRET命令が関与する特別な場合がある。図14に示すように、特定の位置に現れる、「分岐成立」と予測されたシングルバイトのRET命令が、予測論理220によって見落とされ、その後「分岐不成立」と予測される可能性がある。下記に、このような見落とされた予測を検出するように構成された分岐予測ユニット14の一実施形態を記載する。図23は、分岐予測ユニット14の一実施形態を示すブロック図である。図23の実施形態は図2の実施形態と類似している。しかし、図23の実施形態においては、戻りアドレススタック230が、マルチプレクサ221Aに結合されているほか、分岐アドレス計算器270と比べて分岐アドレス計算器270Aが変更されており、信号223Aは、マルチプレクサ221Aへの3つの入力のうちの1つを選択するように構成されている。図23の実施形態は、全般に前の例と同じように動作する。しかし、分岐アドレス計算器270Aは、シングルバイトのRET命令に対応する見落とされた予測を検出すると、戻りスタック230から送られるフェッチアドレスを選択するように構成されている。
Claims (17)
- 1次レベルキャッシュ(206)が第1のアドレスに対応する第1分岐予測情報(2100)を有さないことを検出するステップと、
2次レベルキャッシュ(260,1828)が、前記第1のアドレスに対応し、前記第1分岐予測情報の一部を含む第2分岐予測情報(2120,2122)を有するかどうかを判定するステップと、
前記2次レベルキャッシュが前記第2分岐予測情報を有することが検出されると、前記第1の分岐予測情報を再生成するステップと、
分岐命令のタイプを示す第3分岐予測情報を生成するステップと、
前記第2分岐予測情報と、前記第3分岐予測情報とを組み合わせるステップと、
前記第1のアドレスに対応する、前記1次レベルキャッシュの第1のエントリに前記第1の分岐予測情報として、前記組み合わせられた第2および第3分岐予測情報をストアするステップとを含む方法。 - 前記1次レベルキャッシュ(206)の前記第1のエントリ(2100)が使用可能であるかどうかを判定するステップと、
前記第1のエントリが使用不可能であることが検出されると、前記第1のエントリ(2100)の内容を排除するステップと、
前記排除を受けて、前記内容の一部(2120,2122)を前記2次レベルキャッシュ(260,1828)にストアするステップと、をさらに含む請求項1記載の方法。 - 前記生成するステップは、前記第1アドレスに対応するプログラム命令を受信し、デコードするステップを含む請求項1または2記載の方法。
- 分岐予測情報(2100)をストアするように構成された1次レベルキャッシュ(206)と、
前記分岐予測情報の一部(2120,2122)をストアするように構成された2次レベルキャッシュ(260)と、
前記1次レベルキャッシュ(206)および前記2次レベルキャッシュ(260,1828)に結合された回路系(400)とを備え、前記回路系は、
前記1次レベルキャッシュが第1のアドレスに対応する第1分岐予測情報を有さないことを検出し、
前記2次レベルキャッシュが前記第1のアドレスに対応し、前記第1分岐予測情報の一部を含む第2分岐予測情報を有するかどうかを判定し、
前記2次レベルキャッシュが前記第2分岐予測情報を有することが検出されると、前記第1分岐予測情報を再生成するように構成され、前記回路系は、前記第1分岐予測情報を再生成するために、さらに、
分岐命令のタイプを示す第3分岐予測情報を生成し、
前記第2分岐予測情報と、前記第3分岐予測情報とを組み合わせ、
前記第1のアドレスに対応する、前記1次レベルキャッシュの第1のエントリに前記第1の分岐予測情報として、前記組み合わせられた第2および第3分岐予測情報をストアするように構成されている、分岐予測機構。 - 前記回路系(400)は、
前記1次レベルキャッシュの前記第1のエントリが使用可能であるかどうかを判定し、
前記第1のエントリが使用不可能であることが検出されると、前記第1のエントリの内容を排除し、
前記排除を受けて、前記内容の一部を前記2次レベルキャッシュにストアするようにさらに構成されている請求項4記載の分岐予測機構。 - 前記第3分岐予測情報を生成するために、前記回路系は、前記第1アドレスに対応するプログラム命令を受信し、デコードするように構成されている、請求項4または5記載の分岐予測機構。
- 前記プログラム命令は、前記第2次レベルキャッシュ(260,1828)からフェッチされる、請求項6記載の分岐予測機構。
- 相互接続(2624)と、
前記相互接続に結合されたメモリ(2604)と、
分岐予測情報をストアするように構成された2次レベルキャッシュ(260,1828)と、
1次レベルキャッシュ(206)を備えたプロセッサ(10)とを備え、前記プロセッサは、
前記1次レベルキャッシュ(206)が第1のアドレスに対応する第1分岐予測情報を有さないことを検出し、
前記2次レベルキャッシュ(260,1828)が前記第1のアドレスに対応し、前記第1分岐予測情報の一部を含む第2分岐予測情報を有するかどうかを判定し、
前記2次レベルキャッシュが前記第2分岐予測情報を有することが検出されると、前記第1の分岐予測を再生成するように構成され、前記プロセッサは、前記第1分岐予測情報を再生成するために、さらに、
分岐命令のタイプを示す第3分岐予測情報を生成し、
前記第2分岐予測情報と、前記第3分岐予測情報とを組み合わせ、
前記第1のアドレスに対応する、前記1次レベルキャッシュの第1のエントリ(2100)に前記第1の分岐予測として、前記組み合わせられた第2および第3分岐予測情報をストアするように構成されている、コンピュータシステム。 - 前記プロセッサ(10)は、前記1次レベルキャッシュ(206)の前記第1のエントリ(2100)が使用可能であるかどうかを判定し、前記第1のエントリが使用不可能であることが検出されると、前記第1のエントリ(2100)の内容を排除し、前記排除を受けて、前記内容の一部を前記2次レベルキャッシュ(260,1828)にストアするようにさらに構成されている請求項8記載のコンピュータシステム。
- 前記2次レベルキャッシュ(260,1828)および前記1次レベルキャッシュ(206)は重複する情報をストアしない、請求項1、2または3記載の方法。
- 前記2次レベルキャッシュ(260,1828)は、前記1次レベルキャッシュ(206)から排除された情報のみをストアするように構成されている、請求項10記載の方法。
- 前記第3分岐予測情報は、前記プログラム命令のなかの成立予測分岐の位置をさらに示す、請求項3記載の方法。
- 前記2次レベルキャッシュ(260,1828)および前記1次レベルキャッシュ(206)は重複する情報をストアしない、請求項4、5、6または7記載の分岐予測機構。
- 前記2次レベルキャッシュ(260,1828)は、前記1次レベルキャッシュ(206)から排除された情報のみをストアするように構成されている、請求項13記載の分岐予測機構。
- 前記第3分岐予測情報は、前記プログラム命令のなかの成立予測分岐の位置をさらに示す、請求項6または7記載の分岐予測機構。
- 前記2次レベルキャッシュ(260,1828)および前記1次レベルキャッシュ(206)は重複する情報をストアしない、請求項8または9記載のコンピュータシステム。
- 前記2次レベルキャッシュ(260,1828)は、前記1次レベルキャッシュ(206)から排除された情報のみをストアするように構成されている、請求項16記載のコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/912,011 US7024545B1 (en) | 2001-07-24 | 2001-07-24 | Hybrid branch prediction device with two levels of branch prediction cache |
PCT/US2002/020481 WO2003017091A1 (en) | 2001-07-24 | 2002-06-27 | Branch prediction device with two levels of branch prediction cache |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005500616A JP2005500616A (ja) | 2005-01-06 |
JP3798404B2 true JP3798404B2 (ja) | 2006-07-19 |
Family
ID=25431252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003521935A Expired - Fee Related JP3798404B2 (ja) | 2001-07-24 | 2002-06-27 | 2レベルの分岐予測キャッシュによる分岐予測 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7024545B1 (ja) |
EP (1) | EP1410177A1 (ja) |
JP (1) | JP3798404B2 (ja) |
KR (1) | KR100880686B1 (ja) |
CN (1) | CN1310134C (ja) |
TW (1) | TW591530B (ja) |
WO (1) | WO2003017091A1 (ja) |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
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 |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
JP3851235B2 (ja) * | 2002-06-28 | 2006-11-29 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
US7783871B2 (en) * | 2003-06-30 | 2010-08-24 | Intel Corporation | Method to remove stale branch predictions for an instruction prior to execution within a microprocessor |
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 |
US7337271B2 (en) * | 2003-12-01 | 2008-02-26 | International Business Machines Corporation | Context look ahead storage structures |
US7415597B2 (en) * | 2004-09-08 | 2008-08-19 | Advanced Micro Devices, Inc. | Processor with dependence mechanism to predict whether a load is dependent on older store |
US7428632B2 (en) * | 2004-09-14 | 2008-09-23 | Arm Limited | Branch prediction mechanism using a branch cache memory and an extended pattern cache |
US7836288B2 (en) * | 2004-09-14 | 2010-11-16 | Arm Limited | Branch prediction mechanism including a branch prediction memory and a branch prediction cache |
US8001363B2 (en) * | 2005-04-04 | 2011-08-16 | Globalfoundries Inc. | System for speculative branch prediction optimization and method thereof |
US7437543B2 (en) * | 2005-04-19 | 2008-10-14 | International Business Machines Corporation | Reducing the fetch time of target instructions of a predicted taken branch instruction |
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 |
CN100419715C (zh) * | 2005-11-25 | 2008-09-17 | 华为技术有限公司 | 嵌入式处理器系统及其数据操作方法 |
US7577793B2 (en) * | 2006-01-19 | 2009-08-18 | International Business Machines Corporation | Patrol snooping for higher level cache eviction candidate identification |
CN100395731C (zh) * | 2006-02-23 | 2008-06-18 | 华为技术有限公司 | 处理器及其数据操作方法 |
CN101449256B (zh) | 2006-04-12 | 2013-12-25 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
US7574586B2 (en) * | 2006-05-16 | 2009-08-11 | Texas Instruments Incorporated | Efficient transfer of branch information |
US7487340B2 (en) * | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US7533252B2 (en) * | 2006-08-31 | 2009-05-12 | Intel Corporation | Overriding a static prediction with a level-two predictor |
CN101627365B (zh) | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
US7840786B2 (en) * | 2007-04-16 | 2010-11-23 | Advanced Micro Devices, Inc. | Techniques for storing instructions and related information in a memory hierarchy |
US8782384B2 (en) * | 2007-12-20 | 2014-07-15 | Advanced Micro Devices, Inc. | Branch history with polymorphic indirect branch information |
US8181005B2 (en) * | 2008-09-05 | 2012-05-15 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with sparse and dense prediction caches |
US20110093658A1 (en) * | 2009-10-19 | 2011-04-21 | Zuraski Jr Gerald D | Classifying and segregating branch targets |
WO2011076120A1 (en) * | 2009-12-25 | 2011-06-30 | Shanghai Xin Hao Micro Electronics Co. Ltd. | High-performance cache system and method |
US8464030B2 (en) * | 2010-04-09 | 2013-06-11 | International Business Machines Corporation | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits |
CN103250131B (zh) | 2010-09-17 | 2015-12-16 | 索夫特机械公司 | 包括用于早期远分支预测的影子缓存的单周期多分支预测 |
EP2628072B1 (en) | 2010-10-12 | 2016-10-12 | Soft Machines, Inc. | An instruction sequence buffer to enhance branch prediction efficiency |
US8667257B2 (en) | 2010-11-10 | 2014-03-04 | Advanced Micro Devices, Inc. | Detecting branch direction and target address pattern and supplying fetch address by replay unit instead of branch prediction unit |
KR101638225B1 (ko) | 2011-03-25 | 2016-07-08 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 |
CN103562866B (zh) | 2011-03-25 | 2018-03-30 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
KR101966712B1 (ko) | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
CN107729267B (zh) | 2011-05-20 | 2022-01-25 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
TWI548994B (zh) | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
IN2014CN03678A (ja) | 2011-11-22 | 2015-09-25 | Soft Machines Inc | |
EP2783281B1 (en) | 2011-11-22 | 2020-05-13 | Intel Corporation | 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 |
US9235419B2 (en) | 2012-06-11 | 2016-01-12 | International Business Machines Corporation | Branch target buffer preload table |
US9430241B2 (en) | 2012-06-15 | 2016-08-30 | International Business Machines Corporation | Semi-exclusive second-level branch target buffer |
US9280351B2 (en) | 2012-06-15 | 2016-03-08 | International Business Machines Corporation | Second-level branch target buffer bulk transfer filtering |
US9298465B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Asynchronous lookahead hierarchical branch prediction |
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 |
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 |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
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 |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
KR101463536B1 (ko) | 2012-11-30 | 2014-11-19 | 성균관대학교산학협력단 | 메모리 관리 장치, 방법 및 시스템 |
US20140244932A1 (en) * | 2013-02-27 | 2014-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for caching and indexing victim pre-decode information |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9195606B2 (en) | 2013-03-15 | 2015-11-24 | Intel Corporation | Dead block predictors for cooperative execution in the last level cache |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
KR101708591B1 (ko) | 2013-03-15 | 2017-02-20 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
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 |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
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 |
US9563430B2 (en) | 2014-03-19 | 2017-02-07 | International Business Machines Corporation | Dynamic thread sharing in branch prediction structures |
US20150268961A1 (en) * | 2014-03-21 | 2015-09-24 | Samsung Electronics Co., Ltd. | Decoupling l2 btb from l2 cache to accelerate search for miss after miss |
US9823932B2 (en) * | 2015-04-20 | 2017-11-21 | Arm Limited | Branch prediction |
CN105867884B (zh) * | 2016-03-24 | 2018-06-15 | 清华大学 | 一种改进型PAp分支预测方法 |
DE102017201648A1 (de) | 2016-03-31 | 2017-10-05 | Dr. Ing. H.C. F. Porsche Ag | Verfahren zum Bearbeiten einer Oberfläche eines metallischen Bauteils und metallisches Bauteil |
US10592248B2 (en) * | 2016-08-30 | 2020-03-17 | Advanced Micro Devices, Inc. | Branch target buffer compression |
US20190004806A1 (en) * | 2017-06-30 | 2019-01-03 | Qualcomm Incorporated | Branch prediction for fixed direction branch instructions |
US11163573B2 (en) * | 2019-02-13 | 2021-11-02 | International Business Machines Corporation | Hierarchical metadata predictor with periodic updates |
US10990405B2 (en) | 2019-02-19 | 2021-04-27 | International Business Machines Corporation | Call/return stack branch target predictor to multiple next sequential instruction addresses |
US11714725B2 (en) * | 2019-06-03 | 2023-08-01 | University Of Central Florida Research Foundation, Inc. | System and method for ultra-low overhead and recovery time for secure non-volatile memories |
US11194582B2 (en) * | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
US5276882A (en) * | 1990-07-27 | 1994-01-04 | International Business Machines Corp. | Subroutine return through branch history table |
US5423011A (en) * | 1992-06-11 | 1995-06-06 | International Business Machines Corporation | Apparatus for initializing branch prediction information |
US5809271A (en) | 1994-03-01 | 1998-09-15 | Intel Corporation | Method and apparatus for changing flow of control in a processor |
US5608885A (en) | 1994-03-01 | 1997-03-04 | Intel Corporation | Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions |
EP0798632B1 (en) | 1996-03-25 | 2002-09-11 | Sun Microsystems, Inc. | Branch prediction method in a multi-level cache system |
US5995749A (en) | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
US5933629A (en) * | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for detecting microbranches early |
US6553488B2 (en) * | 1998-09-08 | 2003-04-22 | Intel Corporation | Method and apparatus for branch prediction using first and second level branch prediction tables |
US6247097B1 (en) * | 1999-01-22 | 2001-06-12 | International Business Machines Corporation | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions |
US6446197B1 (en) | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
-
2001
- 2001-07-24 US US09/912,011 patent/US7024545B1/en not_active Expired - Fee Related
-
2002
- 2002-02-28 US US10/086,131 patent/US6854050B1/en not_active Expired - Lifetime
- 2002-06-27 CN CNB02814709XA patent/CN1310134C/zh not_active Expired - Fee Related
- 2002-06-27 KR KR1020047001076A patent/KR100880686B1/ko not_active IP Right Cessation
- 2002-06-27 JP JP2003521935A patent/JP3798404B2/ja not_active Expired - Fee Related
- 2002-06-27 WO PCT/US2002/020481 patent/WO2003017091A1/en active Application Filing
- 2002-06-27 EP EP02746741A patent/EP1410177A1/en not_active Withdrawn
- 2002-07-09 TW TW091115129A patent/TW591530B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1310134C (zh) | 2007-04-11 |
TW591530B (en) | 2004-06-11 |
US7024545B1 (en) | 2006-04-04 |
WO2003017091A1 (en) | 2003-02-27 |
CN1535415A (zh) | 2004-10-06 |
EP1410177A1 (en) | 2004-04-21 |
JP2005500616A (ja) | 2005-01-06 |
KR20040014673A (ko) | 2004-02-14 |
US6854050B1 (en) | 2005-02-08 |
KR100880686B1 (ko) | 2009-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3798404B2 (ja) | 2レベルの分岐予測キャッシュによる分岐予測 | |
US6502188B1 (en) | Dynamic classification of conditional branches in global history branch prediction | |
US6253316B1 (en) | Three state branch history using one bit in a branch prediction mechanism | |
US6154818A (en) | System and method of controlling access to privilege partitioned address space for a model specific register file | |
JP3794917B2 (ja) | 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ | |
US6502185B1 (en) | Pipeline elements which verify predecode information | |
US8069336B2 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
US5822575A (en) | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction | |
US6260134B1 (en) | Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte | |
US5850532A (en) | Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched | |
KR100698493B1 (ko) | 좁은 피연산자들에서 계산을 수행하는 방법 및 장치 | |
US6542986B1 (en) | Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor | |
WO2007019001A1 (en) | Call return stack way prediction repair | |
US6516395B1 (en) | System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes | |
US6453387B1 (en) | Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy | |
US6202142B1 (en) | Microcode scan unit for scanning microcode instructions using predecode data | |
US6212621B1 (en) | Method and system using tagged instructions to allow out-of-program-order instruction decoding | |
US6460132B1 (en) | Massively parallel instruction predecoding | |
KR100603067B1 (ko) | 분기 예측의 타입을 분류하기 위해 복귀 선택 비트들을 이용하는 분기 예측 | |
US5946468A (en) | Reorder buffer having an improved future file for storing speculative instruction execution results | |
US5915110A (en) | Branch misprediction recovery in a reorder buffer having a future file | |
US5951671A (en) | Sharing instruction predecode information in a multiprocessor system | |
US5890006A (en) | Apparatus for extracting instruction specific bytes from an instruction | |
JP2001522082A (ja) | より小さな数の分岐予測および代替ターゲットを用いて近似的により大きな数の分岐予測をすること | |
US6061775A (en) | Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050524 |
|
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: 20060322 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060419 |
|
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: 20100428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110428 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120428 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |