JP2013122774A - 同時に予測された分岐命令を解決するための方法および装置 - Google Patents
同時に予測された分岐命令を解決するための方法および装置 Download PDFInfo
- Publication number
- JP2013122774A JP2013122774A JP2013003355A JP2013003355A JP2013122774A JP 2013122774 A JP2013122774 A JP 2013122774A JP 2013003355 A JP2013003355 A JP 2013003355A JP 2013003355 A JP2013003355 A JP 2013003355A JP 2013122774 A JP2013122774 A JP 2013122774A
- Authority
- JP
- Japan
- Prior art keywords
- predicted
- branch
- instruction
- state
- instructions
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000012545 processing Methods 0.000 claims description 17
- 238000012790 confirmation Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 21
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000010129 solution processing Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- 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/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/3861—Recovery, 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)
Abstract
【課題】予測された分岐命令の確認の前に同時に分岐予測を解決する方法を提供する。
【解決手段】方法は、2つ以上の予測された分岐命令を処理することを含み、各予測された分岐命令は予測された状態および訂正された状態を有する。予測された分岐命令は、解決ステージに同時に入り、予測された分岐命令の1つから訂正された状態の1つを選択することを含む。予測された分岐命令の1つが予測ミスされた場合、選択された訂正された状態は、先の命令フェッチを導くために使用される。
【選択図】図4
【解決手段】方法は、2つ以上の予測された分岐命令を処理することを含み、各予測された分岐命令は予測された状態および訂正された状態を有する。予測された分岐命令は、解決ステージに同時に入り、予測された分岐命令の1つから訂正された状態の1つを選択することを含む。予測された分岐命令の1つが予測ミスされた場合、選択された訂正された状態は、先の命令フェッチを導くために使用される。
【選択図】図4
Description
本発明は、一般に、コンピュータシステムに関し、より具体的には、同時に予測された分岐命令を解決するための技術に関する。
コンピュータプラットフォームの発展の基本は、プロセッサである。初期のプロセッサは、その時点で使用可能な技術に限定されていた。製造技術において新しい発展は、初期のプロセッサの1/1000のサイズまで減少した、および、上回るトランジスタの設計を可能にする。これらのより小さいプロセッサの設計は、前の予想を上回り、さらに速く、さらに有効であり、処理パワーを出力している間に実質的により少ない電力を使用する。
プロセッサの物理的な設計が発展したため、情報を処理する、および、機能を実効する革新的な方法も変わった。例えば、命令の「パイプライン方式(pipelining)」は、1960年代の初期からプロセッサ設計に実装されていた。パイプライン方式の一例は、命令が順次すばやく流れる間に実行パイプラインをユニットに切断する概念である。ユニットは、いくつかのユニットがいくつかの命令の適切な部分を同時に処理することができるように設計されている。パイプライン方式の利点の1つは、命令が並列に評価されるため、命令の実行が重なっていることである。パイプライン方式は、命令レベル並列性(instruction level parallelism)(ILP)とも呼ばれている。
プロセッサパイプラインは、多くのステージによって構成されている、ここで各ステージは命令を実行することと関連する機能を実行する。各ステージは、パイプステージ(pipe stage)またはパイプセグメント(pipe segment)と呼ばれている。このステージは、パイプラインを形成するために合わせて接続されている。命令は、パイプラインの一方の端から始まり、他方の端で終了する。
パイプライン処理は継続してプロセッサの設計に実装されているが、これは当初プロセッササイクル(processor cycle)ごとに1つの命令のみが実行するように制約されていた。プロセッサの処理する処理量を増加させるために、より最近のプロセッサの設計には、同時に複数の命令を処理することが可能な複数のパイプラインが実装されている。この複数のパイプラインを有するプロセッサのタイプは、スーパースカラプロセッサ(superscalar processor)として分類されることがある。
プロセッサ内において、条件付分岐命令などの特定の命令のタイプが予測されることがある。プロセッサ内の分岐予測ハードウェアは、条件付分岐命令の予測を提供するために設計されることがある。この予測に基づいて、プロセッサは、次の順次命令を実行することを継続するか、または、次の実行されるべき命令に導かれる。
分岐予測ハードウェアを使用するスーパースカラプロセッサは、同じ、または、別々のパイプラインにおいて、同じクロックサイクル内で2つ以上の予測された分岐命令を同時に生じさせ、解決することができる。一般に、このようなアプリケーションにおいて、プロセッサは、予測ミスの場合においていずれかの訂正のステップが行われる前に、最も古い予測ミスされている分岐を決定するために、両方の分岐予測の完全な解決を決定することができるまで待たなければならない。ここには、複数の分岐予測が生じる高速プロセッサのために、最も古い予測ミスされた分岐の決定から、訂正された状態の選択を分離する必要性がある。
本発明は、この必要性を認め、すべての同時分岐命令予測の完全な解決が可能な前に、適切な行動を予測し、適切な行動を実行することに向けてステップを踏むことによって、同時分岐命令予測の処理するプロセッサを開示する。
予測された分岐命令の確認の前に同時に予測された分岐命令を解決する方法が開示されている。この方法は、最初に2つ以上の予測された分岐命令を処理することを備えている。各予測された分岐命令は、予測された状態と訂正された状態を有している。予測された分岐命令は、解決ステージに同時に入り、予測された分岐命令の1つから訂正された状態の1つが選択される。この方法は、予測された分岐命令の少なくとも1つが予測ミスされ、選択された訂正された状態が先の命令フェッチを導くために使用されることをさらに確認する。
複数のパイプラインにおいて、予測された分岐命令の確認の前に同時に予測された分岐命令を解決する方法は、最初に2つ以上の予測された分岐命令を処理することを備えている。各予測された分岐命令は、予測された状態と訂正された状態を有する。予測された分岐命令は、別々のパイプラインの解決ステージに同時に入り、予測された分岐命令の1つから訂正された状態の1つが選択される。この方法は、予測された分岐命令の少なくとも1つが予測ミスされ、選択された訂正された状態が先の命令フェッチを導くために使用されることをさらに確認する。
予測された分岐命令の確認の前に同時に予測された分岐命令を解決するシステムは、複数の分岐命令を予測するように構成された予測ロジックを備えている。各予測された分岐命令は、予測された状態と訂正された状態を有している。このシステムは、2つ以上の予測された分岐命令が解決ステージに同時に達したときに決定するように構成された解決ロジックをさらに備えている。この解決ロジックは、そして予測された分岐命令から1つから訂正された状態1つを選択する。このシステムは、選択された訂正された状態に基づいて先の命令をフェッチするように構成されたフェッチロジックを備えている。
本発明のより完全な理解、ならびに発明のさらなる特徴および利点は、以下の詳細な説明および添付の図面から明らかになる。
以下に説明される添付された図面に関連した詳細な説明は、本発明の種々の実施形態の説明を意図し、本発明で実施されることがある実施形態のみを表すことを意図していない。この詳細な説明は、本発明の全体を通した理解を提供する目的で特定の記述を含む。しかしながら、本発明がこれらの特定の記述なしで実施されることがあることは当業者にとって明らかである。ある例において、よく知られた構成および要素は、本発明の概念を不明瞭にすることを防ぐためにブロック図の形式で示されている。頭字語および他の記述的な専門語は、単に便宜および明瞭のために使用されることがあり、この発明の範囲の限定を意図していない。
スーパースカラのプロセッサにおいて、プロセッサの内部のリソースは、並列な処理を容易にするように設計されている。設計のいくつかの様相は、事前フェッチ、分岐処理、レジスタ値を含むデータの依存性の解決、命令の開始などの命令を含む。プロセッサが大多数のメモリ装置より速く動作するため、プログラム命令は、プロセッサの可能性を最大限に適切に使用するのに、十分な速さでメモリから直接読み込むことができない。
命令キャッシュは、従来のメモリとプロセッサのスピードの差をうめるように設計された特別なメモリである。メモリからフェッチされた命令は、プロセッサクロックスピード(processor clock speed)で読み込むことが可能なより速い命令キャッシュに位置する。フェッチされた命令は、プログラムにおいて次の順次命令または予測が行われた分岐のターゲットであることがある。次の命令が予測された分岐のターゲットであるとき、プロセッサは、分岐がどこへ行くか予想し、前の適切な命令をフェッチするように試みる。分岐予測が誤っている場合、プロセッサは、その命令処理を、予測された分岐パスでフェッチした命令をパージすることによって訂正し、訂正された分岐パスで命令をフェッチすることを再び開始する。この処理は、さらに詳しく図2、3及び4の解説で説明される。
図1は、下に説明される1つの実施形態を使用するスーパースカラプロセッサ100の高レベルの図を示す。プロセッサ100は、確保された高速バス104介して命令キャッシュ106に接続された中心処理ユニット(central processing unit)(CPU)102を備えている。このCPUは、データキャッシュ108に接続される他の分離された高速バス110を備えている。この命令キャッシュ106およびデータキャッシュ108は、汎用バス116を介して入力/出力ポート(I/O)112およびメモリ114とさらに接続される。
プロセッサ100内において、命令フェッチユニット(Instruction Fetch Unit)(IFU)122は、メモリ114から命令キャッシュ106への命令のロードを制御する。一度、命令キャッシュ106が命令によりロードされると、CPU102は、高速バス104を介して命令とアクセスすることが可能となる。命令キャッシュ106は、図1に示すように分離されたメモリ構造であることがあり、または、CPU102の内部の要素として内蔵されることもある。組み込みは、命令キャッシュ106のサイズならびに複雑性、および、CPU102の電力損失に基づいて決めることができる。
命令は、一度にいくつかの命令が命令キャッシュ106からフェッチされ、符号化されることがある。命令キャッシュ106内において、命令は、キャッシュラインとして知られているセクションにグループ分けされる。各キャッシュラインは、複数の命令を含んでいる。フェッチされた命令の数は、必要とされるフェッチの帯域幅ならびに各キャッシュラインの命令の数に依存することがある。1つの実施形態において、CPU102は、各クロックサイクルの間にIFU122で命令キャッシュ106から上位のパイプライン250に4つの命令をロードする。上位のパイプライン250内において、命令は、演算タイプおよびデータ依存について解析される。命令を解析した後、プロセッサ100は、実行のために命令を上位のパイプ250から下位の機能的なユニットまたはパイプライン210および220に分散することができる。
命令は、命令機能、パイプラインの利用可能度、命令キャッシュ106からロードされた命令のグループ内の命令位置などに依存して下位のパイプライン210または220に送信されることがある。下位のパイプライン210および220内において、命令は、オリジナルプログラムシーケンス(original program sequence)ではなく利用可能なリソース基づいて並列に処理される。この処理のタイプは、ダイナミック命令スケジューリング(dynamic instruction scheduling)とよく呼ばれている。
下位のパイプライン210および220は、算術ロジックユニット、フローティングポイントユニット、記憶ユニット、ロードユニットなどの種々の実行ユニット(Execution Units)(EU)118を含むことができる。例えば、算術ロジックユニットなどのEU118は、整数加算、減算、単純乗算、ビット単位ロジック演算(例えば、AND、NOT、OR、XOR)、ビットシフティングなどの広範囲の算術機能実行することができる。命令が実行を終了した後、CPU102は、命令の結果が適正にプロセッサ100を更新するために使用できるように、命令の結果およびレコーダそれらを適正なシーケンスに加える。
プロセッサ100によって実行された大多数のプログラムは、条件付分岐命令を含むことができる。条件付分岐命令の実際の分岐行動は、命令が下位のパイプライン210または220において深部で実行されるまで知られない。分岐命令の最後の実行を待つことによって生じるストールおよび次に分岐命令の結果に基づいて命令をフェッチすべきことを防ぐために、プロセッサ100は、分岐予測のいくつかの形式を使用することができる。分岐予測を使用することによって、プロセッサ100は、上位のパイプ250において条件付分岐命令の分岐行動を予測することができる。予測された分岐評価に基づいて、プロセッサ100は、推論的にフェッチし、予測されたアドレス−分岐ターゲットアドレス(例えば、分岐の予測が行われている場合)または分岐命令の後の次のくるべきアドレス(例えば、分岐の予測が行われていない場合)のいずれかからの命令を実行するために準備する。
条件付分岐命令の1つの例は、単純アセンブラ命令等しくなければジャンプ(jump not equal)(JNE)である。JNE命令が実行されたとき、特定の値は、レジスタにロードされることがあり、値がゼロ(zero)に等しい場合、条件付命令は行われず、シーケンスにおいて次の命令がフェッチされ実行される。しかしながら、レジスタにおいて値がゼロと等しくない場合、条件付分岐は、考慮のうえで行われ、次のフェッチされた命令は、JNE命令に関連したターゲットアドレスに位置する。ターゲットアドレスは、前のJNE命令の実行で前にJNE命令に関連されていてもよい。
命令を予測するとき、いくつかの条件または「状態」が予測されることがある。例えば、分岐方向、ターゲットアドレス、またはプロセッサモードなどのプロセッサ100の特定の状態が予測されることがある。プロセッサモードを予測することは、分岐命令の実行の後に、プロセッサ100がどのモードにいるか予測することを必要とする。例えば、進化したRISCプロセッサアーキテクチャにおいて、命令は、ARMモードまたはサム(Thumb)モードのいずれかで実行されることがある。
条件付分岐の方向を予測する可能な1つの方法は、分岐活動記録テーブル(branch history table)を使用することである。分岐活動記録テーブルは、過去の分岐の数の活動記録を記憶する単純ルックアップテーブルであることがある。1つの分岐活動記録は、過去の条件付分岐の1024方向を記憶することができる。複合演算は、予測技術の階層に基礎付けられた分岐予測を作成するために書き込まれることがある(複数のレベル分岐プレディクタ(predictors))。
図2は、プロセッサ100内の上位のパイプ250および2つの下位のパイプライン210ならびに220の下位レベルの機能的なブロック図200を示し、本発明の1つの態様に従った命令の処理を示す。機能的なハードウェアブロック図200内の異なるロジックブロック(またはステージ)は、ハードウェア、ファームウェア、または両方の組み合わせを含むことができる。機能的なハードウェアブロック図200は、上位のパイプ250および2つの下位のパイプライン210ならびに220によって構成されている。以前に言及したように、上位のパイプ250のステージは、IFU122内に存在する。上位のパイプ250内には、フェッチステージ202、命令キャッシュステージ204、命令符号化ステージ206がある。さらに上位のパイプ250と関連するのは、分岐予測ロジック208である。
上位のパイプ250において第1ステージは、フェッチステージ202である。フェッチステージ202は、検索され取り出されるべき命令の次のグループの選択を制御する。プロセッサ100が起動すると、フェッチステージ202は、検索され取り出され、ロードされるべき開始命令を決定する。図3および図4の検討に関連して説明されているが、フェッチステージ202は、下位のパイプライン210および220からのフィードバックを受信することもできる。フィードバックは、先の命令の選択および命令がどのような順序で実行されるかに影響することがある。
命令キャッシュステージ204において、フェッチステージ202の間で選択された命令アドレスは、そのアドレスに命令が存在しているか決定するように命令キャッシュ106をアクセスするために使用される。命令キャッシュヒットがある場合、CPU102は、命令を命令キャッシュ106から上位のパイプ250へと検索して取り出し、プロセッサ100がメモリ114に戻ることなく、プロセッサスピードでフェッチ命令することを可能にする。命令キャッシュにミスがある場合(例えば、命令キャッシュ106からフェッチされるべき命令が使用不可能な場合)、IFU122は、メモリ114から命令を検索して取り出し、命令キャッシュ106にそれらをロードし、CPU102にそれらを転送する。命令キャッシュステージ204の間に命令が検索して取り出された後、命令は、命令符号化ステージ206の間に解析される。
命令符号化ステージ206の間に種々の命令に関係する情報は、解析され、処理される。例えば、命令符号化ステージ206内で、プロセッサ100は、命令のタイプ(例えば、アクション、記憶、ロード、ジャンプなど)を決定する。命令が条件付分岐命令の場合、分岐予測ロジック208は、引き起こされる。命令符号化ステージ206は、分岐予測ロジック208が分岐命令を生じされたことを通知し、分岐予測ロジック208と通信する。
分岐予測の部分として、分岐予測ロジック208は、予測された状態を提供する。予測された状態に記憶された情報は、予測された分岐方向、予測されたターゲットアドレス、またはプロセッサ100の予測された状態を含むことができる。この情報は、レジスタ、レジスタのグループ、分岐命令と関連するメモリ位置に記憶されることがある。本発明の1つの態様において、予測された状態は、予測された分岐方向のみ含むことができる。他の実施形態において、予測された状態は、予測された分岐方向および予測されたターゲットアドレスにのみ関連する情報を含むことができる。更なる実施形態において、予測された状態は、予測されたターゲットアドレスおよび予測されたプロセッサモードに関連する情報を含むことができる。なお、更なる実施形態において、予測された状態は、予測された分岐方向、予測されたターゲットアドレス、および予測されたプロセッサモードを含むことができる。
分岐方向が予測されたとき、予測された状態は、分岐の予測が行われたか、または、行われていないかを予測する情報を含んでいる。1つの実施形態において、予測された状態は、単一のビットであることがある。例えば、予測された状態に関連したレジスタまたはメモリ位置内で、ビット位置において記憶された「1」は、予測が行われたと分岐を示す。逆に、レジスタまたはメモリ位置内のビット位置に「0」が記憶されている場合、分岐が行われていないと予測されることがある。
ターゲットアドレスが予測された場合、予測された状態は、フェッチされる次の命令の位置を示すターゲットアドレスを含むことができる。ターゲットアドレスのサイズは、プロセッサ100のアーキテクチャに依存することができる。1つの実施形態において、ターゲットアドレスは、予測された状態に関連したレジスタにおいて記憶された32ビットアドレス識別子であることがある。
プロセッサモードが予測されたとき、予測された状態は、一度条件付分岐が実行されると、プロセッサ100が所属される予測されたモードに関連する情報を含むことができる。
例えば、プロセッサモードの予測に基づいて、プロセッサは、命令符号化を異なるように実行する行動をとることができる(つまり、命令のARM符号化対命令のサム符号化)。プロセッサモードの予測された状態は、レジスタおよびメモリ位置に記憶された単一のビットの値であることがある。
予測された状態を補って完全にすると、分岐予測ロジック208は、さらに予測された分岐命令に関連する訂正された状態を計算し、記憶する。訂正された状態は、予測が誤った場合の情報を含む。訂正された状態の一部として記憶された情報は、回復アドレスおよびプロセッサの前の状態を含むことができる。訂正された状態は、分岐の予測ミスの場合の適切な命令の順序のシーケンスを回復するために、プロセッサ100によって使用されることがある。
分岐予測ロジック208によってつくられた予測の結果として、情報は、次の命令フェッチを導くように、フェッチステージ202内のロジックをフェッチするために提供される。予測された状態は、予測に基づく適切な命令を検索し取り出すために、フェッチロジックによって使用される。例えば、予測された状態がターゲットアドレスを含んでいる場合、フェッチロジックは、ターゲットアドレスに位置する命令キャッシュ106から次の命令を検索取り出す。命令キャッシュ106において命令が利用可能でない場合、フェッチロジックは、メモリ114から命令キャッシュ104へ命令をロードし、そして命令を上位のパイプ250にロードする。
初期の分岐予測が解決される前に、予測を要求する他の分岐命令に出くわすことは、まれである。この例において、プロセッサ100は、分岐予測ロジック208によって実行された予測ごとのトラックを維持する。このトラッキングは、最初に届いた予測を識別することを含む。予測の「時期」をトラッキングする1つの方法は、各条件付分岐命令に関連する命令順序値を使用することである。各予測された状態が割り当てられると、命令順序値も割り当てられ、記憶され、または分岐命令とともに搬送される。一度、予測ロジックが予測を実行すると、または、命令符号化ステージ206において現在の命令が予測を要求していないと決定すると、命令は適切な下位のパイプライン210および220に伝わる。
前に記載したように、下位のパイプライン210および220は、命令の特定のタイプと関連することがある。例えば、パイプラインは、算術本質の命令を実行するため、または、ロード/記憶機能のすべてを対応するためのみに設計されることがある。パイプラインに予測された分岐命令を送信するために、パイプラインは、分岐命令に対応するように設計されていなければならない。図2に示すように、両方の下位のパイプライン210および220は、分岐命令に対応するように構成されている。下位のパイプライン210および220は、各プロセッササイクルの間に複数の命令を実行するように設計されていることもある。したがって、下位のパイプライン210および220内で、複数の分岐命令は、同じプロセッササイクルの間に実行されることがある。
一度、命令が適切な下位のパイプライン210または220に入ると、分岐命令などの命令は、より効果的な実行を容易にするために並び換えられることがある。分岐命令が下位のパイプライン210または220に達し、実行を持続させるために更なる情報またはデータを要求する場合、プロセッサ100は、分岐命令を実行する前に、他の命令または命令のグループを実行することができる。この場合において、分岐命令は、実行を用意にするために必要な情報が利用可能となる前に、リザベーションステーション(reservation station)(図示しない)に保有されることがある。例えば、分岐命令は、分岐命令が特定のレジスタに記憶されたターゲットアドレスに分岐され、ターゲットアドレスがまだ利用可能でない場合、リザベーション局に保有される。ターゲットアドレスの値は、他の次の実行された命令として決定されることがある。分岐命令は、次の命令が実行されるまで保有され、特定のレジスタを更新し、ターゲットアドレスが利用可能となる。ターゲットアドレスが利用可能となった後、分岐命令は、更なる実行のために開放される。このような方法で実行された命令は、従来のプログラムシーケンスではなく、利用可能なリソースに基づいて並列に実行される。下位のパイプライン210および220において命令が実行された後、結果は、プロセッサ100が正しくに更新されるように、適切なシーケンスに集められ、再び配列される。
リザベーション局内で、いくつかの命令は、同じ時間に保有され、各命令は、更なる情
報、プロセッサリソースなどを待っている。一般的に、複数の命令は、プロセッサ100
によって、同じプロセッササイクルの間にリザベーション局から開放されることがある。
報、プロセッサリソースなどを待っている。一般的に、複数の命令は、プロセッサ100
によって、同じプロセッササイクルの間にリザベーション局から開放されることがある。
したがって、複数の分岐命令が同じプロセッササイクルの間にリザベーション局から開放
されることは、可能である。
されることは、可能である。
プロセッサ100は、下位のパイプライン210および220においてそれらが実行されているため、命令を監視することを継続する。分岐命令がリザベーション局から開放されるとき、または、最後の実行する準備ができたとき、分岐命令と関連する予測の処理は、各下位のパイプライン210および220の解決ステージ215内で、解決ロジック225によって実行される。解決ステージ215は、図3の記載と関連して説明される。
解決ロジック225は、予測された状態の正しさを確認し、予測ミスの事象において訂正された状態を選択する。例えば、予測された状態がターゲットアドレスであり、ターゲットアドレスが決定された適切なターゲットアドレスと一致しない場合、予測ミスが生じる。予測ミスの場合において、解決ロジック225は、フェッチステージ202に、訂正された状態ならびにフラッシュされる必要がある命令を識別する情報を含むフィードバックを提供する。フラッシュされた命令は、誤った予測に基づいて前にフェッチされた命令である。適切な命令がフラッシュされた後、フェッチロジックは、訂正された状態に基づいた命令を再びフェッチすることを開始する。解決ロジック225が予測が正しいと決定する場合、何も行動が行われず、フェッチされた不確かな命令(予測に基づいて)が次に実行される。
図3は、下位のパイプライン210および220のいずれかの解決ステージ215に関連した処理のフロー300を説明するフローチャートである。処理のフロー300は、予測された分岐命令がすべてのそれらの依存性を解決したとき、開始ブロック302から始まる。分岐依存性は、予測を基礎とされたオペランドが利用可能なとき、解決する。この解決は、解決ステージ215において、下位のパイプライン210および220のいずれかで生じる。
判断ブロック312で、分岐解決ステージ215に同時に入った複数の予測分岐があるかどうかを判断する。前に記載したように、複数の分岐命令は、同じ下位のパイプライン210または220の同じプロセッササイクルの間に解決ステージ215に入ることができる。本発明の1つの態様は、同じ下位のパイプライン210または220において、複数の分岐命令を解決する。別の実施形態において、下位のパイプライン210において、解決ステージ215に入る分岐命令、下位のパイプライン220の解決ステージ215に入る分岐命令は、同時に解決することがある。プロセッサ100がさらに下位のパイプラインを有している場合には、本発明の他の実施形態が下位のパイプラインの1つにおいて、複数の分岐予測を解決することができる。
プロセッサ100は、このアセスメントを作るために、両方の下位のパイプライン210および220を監視する。プロセッサ100が複数の分岐命令が解決ステージ215に同時に入ったと判断する場合、処理フロー300は、複数の同時分岐解決フロー320に導かれる。複数の同時分岐解決フロー320は、分岐解決ステージ215に同時に入った2つ以上の予測された分岐命令をどのように解決するか決定し、図4に関連してさらに説明される。解決ステージ215に1つの分岐命令のみが入ってきた場合、処理フロー300は、判断ブロック314に続く。
判断ブロック314で、分岐予測の結果は、分岐が正しく予測されているか決定するために解析される。判断ブロック314で、条件付分岐命令の予測が正しく予測されている場合(例えば、予測された条件付分岐命令のターゲットアドレスが解決されたターゲットアドレスと一致する)、上位のパイプ250ならびに下位のパイプライン210および220において、残っている命令は、正しく予測され、処理フロー300は、そして終了ブロック350へと導かれる。
判断ブロック314で、分岐予測結果が予測ミスが生じたことを示す場合(例えば、予測ターゲットアドレスが解決ターゲットアドレスと一致しない)、予測ミスの命令より新しいすべての命令(分岐予測の命令順序値に基づく)は、ブロック316に示されるように、上位のパイプ250、下位のパイプライン210および220にフラッシュされる。処理フロー300は、フェッチステージ202内で分岐の訂正された状態の情報がフェッチロジックに送られるブロック318に進む。フェッチロジックは、分岐の訂正された状態に基づいて命令をフェッチする。
図4は、複数の同時分岐解決処理フロー320をさらに詳しく示す。複数の同時分岐解決処理フロー320は、同じプロセッササイクルの間に2つ以上の予測された分岐が解決ステージ215に達したときに始まる。2つ以上の予測分岐が解決時期215に同時に入ったとき、プロセッサ100は、同じプロセッササイクルの間に両方の分岐の解決をハンドルする。この解決は、分岐が予測ミスされたかどうかの決定を含み、パイプラインを再び導くなどの適切な行動を行う。
図4に示すように、複数の同時分岐解決処理フロー320は、最初に、ブロック402で解決されている分岐の訂正された状態の1つを選ぶ。予測ミスが生じたかどうかを複数の同時分岐解決処理フロー320が決定する前に、訂正された状態の1つの選択が生じる。複数の同時分岐解決処理フロー320の初期において、訂正された状態の1つ選択することによって、予測ミスの予期で更なる時間が保管されることがある。予測ミスが生じていない場合、この選択によって、更なる処理時間の損失はない。
特定の分岐の訂正された状態の選択は、いくつかの要因に基づくことが可能である。1つの実施形態において、訂正された状態の選択は、解決分岐の相対的な時期に基づき、最も古い分岐命令が選択される。別の実施形態において、訂正された状態の選択は、下位のパイプライン210および220の最近の予測ミスに基づくことができる。さらに他の実施形態において、選択は、最後の予測が届いた下位のパイプライン210または220に基づくことができる。さらなる実施形態において、命令のタイプは、訂正された状態を選択する基礎として使用されることがある。一方、訂正された状態は、ランダムに選ばれることがある。選択の処理にかかわらず、選択された訂正された状態は、予測ミスの場合において、先の命令フェッチのフェッチロジックを操作するために使用されることがある。
訂正された状態の選択は、プロセッサ100の実行スピードに影響があることがある。プロセッサの設計によるが、各前述の態様は、特定のスピードの利点がある。例えば、下位のパイプライン210または220に基づいて訂正された状態を選ぶことは、最後に予測ミスされた下位のパイプライン210または220の決定よりさらに速く実行することができる。訂正された状態の確実性は、複数の同時分岐解決処理フロー320において、後で確認される。
前述した実施形態を使用するプロセッサ100の1つの利点は、プロセッサ100が最も古い分岐予測が予測ミスされたことを予期することである。したがって、プロセッサ100は、単一のサイクルにおいて、分岐が予測ミスされたことを厳密に決定するために必要とされる余分な時間を考慮するためのプロセッサの回数を減少する代わりに、上位のパイプ250および下位のパイプライン210ならびに220をフラッシュされるなどの適当な行動を実行する。プロセッサ100が訂正された予測ミス分岐を選ぶ場合、最も古い予測ミス分岐が対応する分岐予測を決定するために待つ前に、プロセッサ100が命令をフラッシュし、再びフェッチすることを開始するため、より高いクロック周波数を実現することができる。プロセッサ100にもたらす増加したクロックレートは、間違った訂正された状態を選んでいるため、どのクロックサイクルの損失より上回っている。
ブロック402で訂正された状態の情報が選択された後、複数の同時分岐解決処理フロー320は、判断ブロック404に進む。判断ブロック404で、解決ロジック225は、任意の分岐命令の予測ミスが生じたかどうか決定する。判断ブロック404で、予測ミスが生じていない場合、複数の同時分岐解決処理フロー320は、ブロック450で終了する。この例において、両方の予測が訂正され、命令がロードされた上位のパイプ250および下位のパイプライン210および220は有効であり、訂正は必要ではない。
予測ミスが生じた場合、複数の同時分岐解決処理フロー320は、上位のパイプ250においてすべての命令がフラッシュされるブロック406に進む。上位のパイプ250において、すべての命令がプログラムの順序にあるため、これらはいずれの解決分岐より新しい。上位のパイプ250の命令がいずれの解決分岐命令より新しいため、これらは予測ミスパスにフェッチされ、フラッシュされる。
ブロック406で上位のパイプ250がフラッシュされた後、複数の同時分岐解決処理フロー320は、ブロック408に続く。ブロック408で、フェッチロジックは、上位のパイプ250においてフェッチすることを再び導くために、選択された分岐の訂正された状態を使用する。複数の同時分岐解決処理フロー320は、判断ブロック410に続く。判断ブロック410で、訂正された状態の情報の選択は、予測ミス分岐命令が訂正された状態が選択された分岐命令に関連するか調べることによって確認される。判断ブロック410で確認が成功した場合、ブロック418でプロセッサ100は、命令順序値に基づいて、下位のパイプライン210および220からのより最近の命令をフラッシュする。ブロック418の結果、複数の同時分岐解決処理フロー320は、終了し、ブロック450に進む。
ブロック410で確認が失敗した場合(つまり、最も古い予測ミス分岐が選択されない)、すべての命令は、ブロック412で上位のパイプ250から再度フラッシュされる。ブロック412での命令のフラッシュは、ブロック408で上位のパイプ250からフェッチされた命令を効果的に移動する。第2の分岐の訂正された状態情報は、そしてブロック414でフェッチロジックに送られる。フェッチロジックは、第2分岐の訂正された状態に基づいて命令をフェッチする。第2の分岐命令(命令順序値に基づく)より新しいすべての命令は、ステップ416で下位のパイプライン210および220からフラッシュされる。下位のパイプライン210および220から命令がフラッシュされた後、ステップ450で複数の同時分岐解決処理フロー320は終了する。
本明細書に含まれた実施形態に関連して説明される例示的なロジックブロック、モジュール、回路、構成部品、および/または構成要素は、汎用プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレー(FPGA)もしくは他のプログラミング可能なロジックデバイス、ディスクリートのゲートもしくはトランジスタロジック、ディスクリートのハードウェア構成要素、あるいは本明細書で説明される機能を実行するように設計された任意の組み合わせを使用して、実施、または実行されることがある。汎用プロセッサは、マイクロプロセッサであることがあるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンであってもよい。プロセッサは、コンピューティングデバイスの組み合わせとして、例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと連携する1つ以上のマイクロプロセッサ、または他の任意のそのような構成として実施されることもある。
本明細書において特定の実施形態が図示され、記述されているが、当業者は、同じ効果を実現するために意図された任意の機構が、示された特定の実施形態の代わりに用いられること、および発明が他の環境において他の適用例があることがあることが分かる。
この応用例は、本発明の任意の適用例または変形例に及ぶことを意図する。下記の特許請求の範囲は、発明の範囲を本明細書で説明された特定の実施例に限定することを全く意図していない。
Claims (28)
- 予測された分岐命令の確認の前に同時に予測された分岐命令を解決する方法であって、
2つ以上の予測された分岐命令を処理することと、各予測された分岐命令は予測された状態および訂正された状態を有し、前記予測された分岐命令は、解決ステージに同時に入り、
前記予測された分岐命令の1つから前記訂正された状態の1つを選択することと、
予測ミスされた前記予測された分岐命令の少なくとも1つを決定することと、
前記選択された訂正された状態に基づく先の命令フェッチを導くことと、
を含む方法。 - 前記予測された状態は、さらに分岐方向を含む請求項1に記載の方法。
- 前記予測された状態は、さらにプロセッサのモードを含む請求項1に記載の方法。
- 前記予測された状態は、さらにターゲットアドレスを含む請求項1に記載の方法。
- 前記選択された訂正された状態は、最も古い前記予測された分岐命令の1つに関連する請求項1に記載の方法。
- 前記選択された訂正された状態は、ランダムに選ばれる請求項1に記載の方法。
- 前記選択された訂正された状態は、最後に予測されたパイプラインに基づく請求項1に記載の方法。
- 前記選択された訂正された状態は、最後に予測ミスされたパイプラインに基づく請求項1に記載の方法。
- 前記選択された訂正された状態は、前記予測された分岐命令のタイプを基礎とする請求項1に記載の方法。
- 複数のパイプラインにおいて、予測された分岐命令の確認の前に、同時に予測された命令を解決する方法であって、
2つ以上の予測された分岐命令を処理することと、各予測された分岐命令は予測された状態および訂正された状態を有し、前記予測された分岐命令は、別々のパイプラインの解決ステージに同時に入り、
前記予測された分岐命令の1つから前記訂正された状態の1つを選択することと、
予測ミスされた前記予測された分岐命令の少なくとも1つを決定することと、
前記選択された訂正された状態に基づいて先の命令フェッチを導くことと、
を含む方法。 - 前記予測された状態は、さらに分岐方向を含む請求項10に記載の方法。
- 前記予測された状態は、さらにプロセッサのモードを含む請求項10に記載の方法。
- 前記予測された状態は、さらにターゲットアドレスを含む請求項10に記載の方法。
- 前記選択された訂正された状態は、最も古い前記予測された分岐命令の1つに関連する請求項10に記載の方法。
- 前記選択された訂正された状態は、ランダムに選ばれる請求項10に記載の方法。
- 前記選択された訂正された状態は、最後に予測されたパイプラインに基づく請求項10に記載の方法。
- 前記選択された訂正された状態は、最後に予測ミスされたパイプラインに基づく請求項10に記載の方法。
- 前記選択された訂正された状態は、前記予測された分岐命令のタイプに基づく請求項10に記載の方法。
- 予測された分岐命令の確認の前に同時に予測された分岐命令を解決するシステムは、
複数の分岐命令を予測するように構成された予測ロジックと、各予測された分岐命令は、予測された状態および訂正された状態を有しており、
2つ以上の予測された分岐命令が解決ステージに同時に達したときに決定するように構成された解決ロジックと、前記解決ロジックは、前記分岐命令の少なくとも1つが予測ミスされたとき、前記予測された分岐命令の1つから前記訂正された状態の1つを選ぶ、
前記選択された訂正された状態に基づいて命令をフェッチするように構成されたフェッチロジックと、
を備えるシステム。 - 前記予測された状態は、さらに分岐方向を備える請求項19に記載のシステム。
- 前記システムは、プロセッサである請求項19に記載の方法。
- 前記予測された状態は、さらに前記プロセッサのモードを備える請求項20に記載のシステム。
- 前記予測された状態は、さらにターゲットアドレスを備える請求項19に記載のシステム。
- 前記選択された訂正された状態は、最も古い前記予測された分岐命令の1つに関連する請求項19のシステム。
- 前記選択された訂正された状態は、ランダムに選ばれる請求項19に記載の方法。
- 前記選択された訂正された状態は、最後に予測されたパイプラインに基づく請求項19に記載の方法。
- 前記選択された訂正された状態は、最後に予測ミスされたパイプラインに基づく請求項19に記載の方法。
- 前記選択された訂正された状態は、前記予測された分岐命令のタイプを基礎とする請求項19に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/535,536 US7617387B2 (en) | 2006-09-27 | 2006-09-27 | Methods and system for resolving simultaneous predicted branch instructions |
US11/535,536 | 2006-09-27 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009530609A Division JP5221546B2 (ja) | 2006-09-27 | 2007-09-27 | 同時に予測された分岐命令を解決するための方法および装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013122774A true JP2013122774A (ja) | 2013-06-20 |
Family
ID=38924371
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009530609A Expired - Fee Related JP5221546B2 (ja) | 2006-09-27 | 2007-09-27 | 同時に予測された分岐命令を解決するための方法および装置 |
JP2013003355A Pending JP2013122774A (ja) | 2006-09-27 | 2013-01-11 | 同時に予測された分岐命令を解決するための方法および装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009530609A Expired - Fee Related JP5221546B2 (ja) | 2006-09-27 | 2007-09-27 | 同時に予測された分岐命令を解決するための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7617387B2 (ja) |
EP (1) | EP2069915B1 (ja) |
JP (2) | JP5221546B2 (ja) |
KR (1) | KR101073732B1 (ja) |
CN (1) | CN101523344B (ja) |
AT (1) | ATE511674T1 (ja) |
WO (1) | WO2008039947A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
CN102184091A (zh) * | 2011-04-18 | 2011-09-14 | 孙瑞琛 | 一种分支预测方法及装置 |
US20140156977A1 (en) * | 2011-12-28 | 2014-06-05 | Mark J. Dechene | Enabling and disabling a second jump execution unit for branch misprediction |
WO2013100998A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Processor with second jump execution unit for branch misprediction |
US9268569B2 (en) * | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
US9411590B2 (en) | 2013-03-15 | 2016-08-09 | Qualcomm Incorporated | Method to improve speed of executing return branch instructions in a processor |
US10108419B2 (en) * | 2014-09-26 | 2018-10-23 | Qualcomm Incorporated | Dependency-prediction of instructions |
US10853076B2 (en) * | 2018-02-21 | 2020-12-01 | Arm Limited | Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping |
US10782976B2 (en) * | 2018-05-07 | 2020-09-22 | Dejan Spasov | Issuing and flushing instructions from reservation stations using wrap bits and indexes |
US20190369999A1 (en) * | 2018-06-04 | 2019-12-05 | Advanced Micro Devices, Inc. | Storing incidental branch predictions to reduce latency of misprediction recovery |
US11086629B2 (en) * | 2018-11-09 | 2021-08-10 | Arm Limited | Misprediction of predicted taken branches in a data processing apparatus |
US20210149676A1 (en) * | 2019-11-14 | 2021-05-20 | Higon Austin R&D Center Corporation | Branch Prediction Method, Branch Prediction Unit and Processor Core |
CN111459549B (zh) | 2020-04-07 | 2022-11-01 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
CN112256331B (zh) * | 2020-12-22 | 2021-04-27 | 鹏城实验室 | 虚拟机指令解析加速方法、装置和计算机存储介质 |
US11663013B2 (en) | 2021-08-24 | 2023-05-30 | International Business Machines Corporation | Dependency skipping execution |
US11809874B2 (en) * | 2022-02-01 | 2023-11-07 | Apple Inc. | Conditional instructions distribution and execution on pipelines having different latencies for mispredictions |
US11915001B1 (en) | 2022-12-26 | 2024-02-27 | Rebellions Inc. | Neural processor and method for fetching instructions thereof |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05143336A (ja) * | 1991-04-18 | 1993-06-11 | Internatl Business Mach Corp <Ibm> | デジタル・コンピユータ及び分岐命令実行方法 |
JPH06110684A (ja) * | 1992-08-11 | 1994-04-22 | Internatl Business Mach Corp <Ibm> | スーパスカラ処理システムおよび方法 |
US5586278A (en) * | 1994-03-01 | 1996-12-17 | Intel Corporation | Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor |
JPH096612A (ja) * | 1995-06-07 | 1997-01-10 | Internatl Business Mach Corp <Ibm> | カウント・レジスタおよびリンク・レジスタへの書込みを行う多重分岐命令を処理するための方法と装置 |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
JPH10171652A (ja) * | 1996-10-07 | 1998-06-26 | Internatl Business Mach Corp <Ibm> | ブランチ・ヒストリ・テーブルを更新するための方法および装置 |
US5812839A (en) * | 1994-01-03 | 1998-09-22 | Intel Corporation | Dual prediction branch system having two step of branch recovery process which activated only when mispredicted branch is the oldest instruction in the out-of-order unit |
JPH10333908A (ja) * | 1997-05-30 | 1998-12-18 | Mitsubishi Electric Corp | 分岐予測方法 |
JPH11500551A (ja) * | 1995-02-14 | 1999-01-12 | 富士通株式会社 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JP2000132391A (ja) * | 1998-10-23 | 2000-05-12 | Nec Corp | 分岐予測機構 |
JP2000515277A (ja) * | 1996-07-16 | 2000-11-14 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット |
US6157998A (en) * | 1998-04-03 | 2000-12-05 | Motorola Inc. | Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers |
JP2005165950A (ja) * | 2003-12-05 | 2005-06-23 | Fujitsu Ltd | 分岐予測装置および分岐予測方法 |
JP2008544353A (ja) * | 2005-06-10 | 2008-12-04 | クゥアルコム・インコーポレイテッド | マイクロプロセッサの命令パイプライン内の命令フラッシングを管理する方法及び装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0756735A (ja) * | 1993-08-16 | 1995-03-03 | Nkk Corp | 並列演算処理装置 |
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 |
US6119075A (en) * | 1997-11-26 | 2000-09-12 | Digital Equipment Corporation | Method for estimating statistics of properties of interactions processed by a processor pipeline |
US6260138B1 (en) * | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
US6460132B1 (en) * | 1999-08-31 | 2002-10-01 | Advanced Micro Devices, Inc. | Massively parallel instruction predecoding |
US6578134B1 (en) * | 1999-11-29 | 2003-06-10 | Ati International Srl | Multi-branch resolution |
US6757816B1 (en) * | 1999-12-30 | 2004-06-29 | Intel Corporation | Fast branch misprediction recovery method and system |
SE0003446L (sv) * | 2000-09-27 | 2002-03-28 | Ericsson Telefon Ab L M | En pipelinemikroprocessor och ett förfarnade relaterande därtill |
US20040158597A1 (en) * | 2001-04-05 | 2004-08-12 | Ye Ding Feng | Method and apparatus for constructing efficient elliptic curve cryptosystems |
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 |
US7000233B2 (en) * | 2003-04-21 | 2006-02-14 | International Business Machines Corporation | Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread |
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
-
2006
- 2006-09-27 US US11/535,536 patent/US7617387B2/en not_active Expired - Fee Related
-
2007
- 2007-09-27 EP EP07843403A patent/EP2069915B1/en not_active Not-in-force
- 2007-09-27 WO PCT/US2007/079781 patent/WO2008039947A1/en active Application Filing
- 2007-09-27 CN CN200780034761.7A patent/CN101523344B/zh not_active Expired - Fee Related
- 2007-09-27 KR KR1020097008607A patent/KR101073732B1/ko not_active IP Right Cessation
- 2007-09-27 JP JP2009530609A patent/JP5221546B2/ja not_active Expired - Fee Related
- 2007-09-27 AT AT07843403T patent/ATE511674T1/de not_active IP Right Cessation
-
2009
- 2009-09-29 US US12/569,365 patent/US8082428B2/en not_active Expired - Fee Related
-
2013
- 2013-01-11 JP JP2013003355A patent/JP2013122774A/ja active Pending
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05143336A (ja) * | 1991-04-18 | 1993-06-11 | Internatl Business Mach Corp <Ibm> | デジタル・コンピユータ及び分岐命令実行方法 |
JPH06110684A (ja) * | 1992-08-11 | 1994-04-22 | Internatl Business Mach Corp <Ibm> | スーパスカラ処理システムおよび方法 |
US5812839A (en) * | 1994-01-03 | 1998-09-22 | Intel Corporation | Dual prediction branch system having two step of branch recovery process which activated only when mispredicted branch is the oldest instruction in the out-of-order unit |
US5586278A (en) * | 1994-03-01 | 1996-12-17 | Intel Corporation | Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor |
JPH11500551A (ja) * | 1995-02-14 | 1999-01-12 | 富士通株式会社 | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 |
JPH096612A (ja) * | 1995-06-07 | 1997-01-10 | Internatl Business Mach Corp <Ibm> | カウント・レジスタおよびリンク・レジスタへの書込みを行う多重分岐命令を処理するための方法と装置 |
JP2000515277A (ja) * | 1996-07-16 | 2000-11-14 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット |
JPH10171652A (ja) * | 1996-10-07 | 1998-06-26 | Internatl Business Mach Corp <Ibm> | ブランチ・ヒストリ・テーブルを更新するための方法および装置 |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
JPH10333908A (ja) * | 1997-05-30 | 1998-12-18 | Mitsubishi Electric Corp | 分岐予測方法 |
US6157998A (en) * | 1998-04-03 | 2000-12-05 | Motorola Inc. | Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers |
JP2000132391A (ja) * | 1998-10-23 | 2000-05-12 | Nec Corp | 分岐予測機構 |
JP2005165950A (ja) * | 2003-12-05 | 2005-06-23 | Fujitsu Ltd | 分岐予測装置および分岐予測方法 |
JP2008544353A (ja) * | 2005-06-10 | 2008-12-04 | クゥアルコム・インコーポレイテッド | マイクロプロセッサの命令パイプライン内の命令フラッシングを管理する方法及び装置 |
Also Published As
Publication number | Publication date |
---|---|
US8082428B2 (en) | 2011-12-20 |
US20080077781A1 (en) | 2008-03-27 |
CN101523344B (zh) | 2013-01-23 |
JP2010505210A (ja) | 2010-02-18 |
EP2069915B1 (en) | 2011-06-01 |
WO2008039947A1 (en) | 2008-04-03 |
US7617387B2 (en) | 2009-11-10 |
CN101523344A (zh) | 2009-09-02 |
US20100023696A1 (en) | 2010-01-28 |
KR101073732B1 (ko) | 2011-10-13 |
JP5221546B2 (ja) | 2013-06-26 |
KR20090061667A (ko) | 2009-06-16 |
ATE511674T1 (de) | 2011-06-15 |
EP2069915A1 (en) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5221546B2 (ja) | 同時に予測された分岐命令を解決するための方法および装置 | |
US9021240B2 (en) | System and method for Controlling restarting of instruction fetching using speculative address computations | |
KR100234648B1 (ko) | 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템 | |
US7478228B2 (en) | Apparatus for generating return address predictions for implicit and explicit subroutine calls | |
US7707398B2 (en) | System and method for speculative global history prediction updating | |
US7444501B2 (en) | Methods and apparatus for recognizing a subroutine call | |
JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
US11163577B2 (en) | Selectively supporting static branch prediction settings only in association with processor-designated types of instructions | |
US7844806B2 (en) | Global history branch prediction updating responsive to taken branches | |
US20100287358A1 (en) | Branch Prediction Path Instruction | |
JP4134179B2 (ja) | ソフトウエアによる動的予測方法および装置 | |
TW201617877A (zh) | 管理用於分支預測的歷史資訊 | |
US9639370B1 (en) | Software instructed dynamic branch history pattern adjustment | |
JP2001236224A (ja) | 分岐予測テーブル汚染の低減方法 | |
US7472264B2 (en) | Predicting a jump target based on a program counter and state information for a process | |
WO2004068337A1 (ja) | 情報処理装置 | |
US7849299B2 (en) | Microprocessor system for simultaneously accessing multiple branch history table entries using a single port | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
US9323536B2 (en) | Identification of missing call and return instructions for management of a return address stack | |
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: 20140311 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140805 |