JP2013175201A - ゼロ述語分岐予測ミスにおける分岐予測ミス振舞い抑制 - Google Patents
ゼロ述語分岐予測ミスにおける分岐予測ミス振舞い抑制 Download PDFInfo
- Publication number
- JP2013175201A JP2013175201A JP2013049602A JP2013049602A JP2013175201A JP 2013175201 A JP2013175201 A JP 2013175201A JP 2013049602 A JP2013049602 A JP 2013049602A JP 2013049602 A JP2013049602 A JP 2013049602A JP 2013175201 A JP2013175201 A JP 2013175201A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- instruction
- misprediction
- predicate
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000001629 suppression Effects 0.000 title description 2
- 239000013598 vector Substances 0.000 claims abstract description 215
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000004044 response Effects 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims description 38
- 230000006399 behavior Effects 0.000 claims description 28
- 230000008859 change Effects 0.000 claims description 13
- 230000001419 dependent effect Effects 0.000 claims description 5
- 238000011010 flushing procedure Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims 10
- 230000002401 inhibitory effect Effects 0.000 claims 3
- 238000000638 solvent extraction Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000005192 partition Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- OCKGFTQIICXDQW-ZEQRLZLVSA-N 5-[(1r)-1-hydroxy-2-[4-[(2r)-2-hydroxy-2-(4-methyl-1-oxo-3h-2-benzofuran-5-yl)ethyl]piperazin-1-yl]ethyl]-4-methyl-3h-2-benzofuran-1-one Chemical compound C1=C2C(=O)OCC2=C(C)C([C@@H](O)CN2CCN(CC2)C[C@H](O)C2=CC=C3C(=O)OCC3=C2C)=C1 OCKGFTQIICXDQW-ZEQRLZLVSA-N 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- 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
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】述語ベクトルがナルであるとの決定に応答してコントロールのフローを命令の周りで分岐させる条件付き分岐命令が非実行であると予測される。しかしながら、予測が誤りであるという検出に応答して、予測ミス振舞いが禁止される。
【選択図】図7
Description
図1を参照すれば、コンピュータシステムの一実施形態のブロック図が示されている。コンピュータシステム100は、プロセッサ102と、レベル2(L2)キャッシュ106と、メモリ108と、大量記憶装置110とを備えている。図示されたように、プロセッサ102は、レベル1(L1)キャッシュ104を備えている。コンピュータシステム100では、特定のコンポーネントを示して説明するが、別の実施形態では、異なるコンポーネント及び異なる数のコンポーネントがコンピュータシステム100に存在してもよいことに注意されたい。例えば、コンピュータシステム100は、メモリハイアラーキー(例えば、メモリ108及び/又は大量記憶装置110)を含まなくてもよい。それとは別に、L2キャッシュ106は、プロセッサ102の外部に示されているが、他の実施形態では、L2キャッシュ106がプロセッサ102の内部にあってもよいことが意図される。更に、そのような実施形態では、レベル3(L3)キャッシュ(図示せず)が使用されてもよいことに注意されたい。加えて、コンピュータシステム100は、グラフィックプロセッサ、ビデオカード、ビデオ捕獲装置、ユーザインターフェイス装置、ネットワークカード、光学ドライブ、及び/又は他の周辺装置を備え、これらは、バス、ネットワーク、又は別の適当な通信チャンネル(明瞭化のために全て図示せず)を使用してプロセッサ102に結合される。
図2は、図1のプロセッサの一実施形態の付加的な細部を示すブロック図である。図2に示す実施形態において、プロセッサ102は、多数のパイプライン段を含むが、簡潔化のために、図2には全部が示されていない。従って、図示されたように、プロセッサ102は、L1キャッシュ104、命令フェッチユニット201、分岐予測ユニット210、予測ミスユニット212、整数実行ユニット202、フローティングポイント実行ユニット206、及びベクトル実行ユニット204を備えている。整数実行ユニット202、フローティングポイント実行ユニット206及びベクトル実行ユニット204は、グループとして交換可能に「実行ユニット」も称されることに注意されたい。
命令セットアーキテクチャー(マクロスカラーアーキテクチャーと称される)及びそのサポートハードウェアは、コンパイル時にパラレル性を完全に決定する必要なく且つ有用なスタティック分析情報を破棄することなく、コンパイラーがループのためのプログラムコードを発生するのを許す。マクロスカラーアーキテクチャーの種々の実施形態を以下に説明する。特に、以下に詳細に述べるように、ループに対してパラレル性を強制せず、むしろ、動的な条件が許す場合にはランタイムにパラレル性を利用できるようにする命令のセットが与えられる。従って、このアーキテクチャーは、コンパイラーにより発生されるコードが、使用するパラレル性の量を切り換えることで、ランタイムの条件に基づいて、ループの繰り返しに対して非パラレル(スカラー)実行とパラレル(ベクトル)実行との間を動的に切り換えできるようにする命令を含む。
以下の例は、マクロスカラー動作を紹介し、そしてパラレル化ループ例において図3に示して上述したループのようなベクトル化ループへのその使用を示すものである。理解を容易にするために、これらの例は、C++フォーマットの擬似コードを使用して表わされる。
以下の例の説明において、特に指示のない限りベクトル量である変数に対して次のフォーマットが使用される。
ベクトルp5の要素は、a<bのテスト結果に基づいて0又は1にセットされる。ベクトルp5は、以下に詳細に述べるように「述語ベクトル(predicate vector)」であることに注意されたい。述語ベクトルを発生する幾つかの命令は、プロセッサ状態フラグを、結果の述語を反映するようにセットもする。例えば、プロセッサ状態フラグ又は条件コードは、FIRST(最初)、LAST(最後)、NONE(なし)、及び/又はALL(全部)フラグを含むことができる。
述語ベクトルp5のアクティブな(即ち、非ゼロの)要素により指定されるベクトル‘a’の要素のみがb+cの結果を受け取る。aの残りの要素は、ゼロにセットされる。この動作は、「ゼロ化(zeroing)」と称され、述語ベクトルの前に感嘆符(“!”)を使用して表示される。
x+=VECLEN;
VECLENは、ベクトル当たりの要素の数を通信するマシン値である。この値は、アッセンブラーにより決定されるのではなく、コードを実行するプロセッサによりランタイムに決定される。
多数の共通のプログラミング言語と同様に、以下の例は、二重のスラッシュ記号を使用して、コメントを指示する。これらのコメントは、指示されたベクトルに含まれた値に関する情報、又はそれに対応する例において遂行される動作の説明を与えることができる。
以下のコード例1において、従来のベクトルアーキテクチャーを使用する「ベクトル化不能」なプログラムコードループが示されている。(ベクトル化不能であるのに加えて、このループは、データ依存性の微粒子特性のために従来のマルチスレッドアーキテクチャーにおいてマルチスレッド可能でないことにも注意されたい。)明瞭化のために、このループは、ループをベクトル化不能にする基本的なループ伝搬依存性へ蒸留される。
VectorReadIntは、メモリ読み取り動作を遂行するための命令である。データサイズ(このケースでは整数)によりスケーリングされるオフセットOffsetのベクトルがスカラーベースアドレスBaseに追加されて、メモリアドレスのベクトルを形成し、これが、次いで、行先ベクトルに読み込まれる。命令が述語又はゼロ化された場合には、アクティブな要素に対応するアドレスのみが読み取られる。ここに述べる実施形態では、無効アドレスへの読み取りは、フォールトとなることが許されるが、そのようなフォールトは、第1のアクティブなアドレスが無効である場合にプログラムの終了を生じるだけである。
VectorWriteIntは、メモリ書き込み動作を遂行するための命令である。データサイズ(このケースでは整数)によりスケーリングされるオフセットOffsetのベクトルがスカラーベースアドレスBaseに追加されて、メモリアドレスのベクトルを形成する。値Valueのベクトルがこれらメモリアドレスに書き込まれる。この命令が述語又はゼロ化される場合には、データがアクティブなアドレスのみに書き込まれる。ここに述べる実施形態では、不法アドレスへの書き込みは、常に、フォールトを生じる。
VectorIndexは、Startによって指定されたスカラースタート値からの増分により単調に調整する値のベクトルを発生するための命令である。この命令は、インデックス調整が一定であるときにループインデックス変数を初期化するのに使用される。述語化又はゼロ化が適用されるときには、第1のアクティブな要素は、スタート値を受け取り、そしてその後のアクティブな要素にのみ増分が適用される。例えば、
PropagatePostT命令は、predにより決定されたsrcにおけるアクティブな要素の値をdestの後続インアクティブ要素へ伝播する。アクティブな要素、及び第1のアクティブな要素に先行するインアクティブな要素は、destにおいて不変のままである。この命令の目的は、条件付きで計算された値を得て、その条件付きで計算された値を、等価スカラーコードにおいて生じる後続ループ繰り返しへ伝播することである。例えば、
PropagatePriorF命令は、predにより決定されたsrcのインアクティブな要素の値をdestの後続アクティブ要素へ伝播する。インアクティブな要素は、srcからdestへコピーされる。述語の第1の要素がアクティブである場合には、srcの最後の要素がその位置へ伝播される。例えば、
ConditionalStop命令は、述語のベクトルpredを評価し、そしてdepsにより指定されたデータ依存性を意味する隣接述語要素間の遷移を識別する。スカラー値depsは、4ビットのアレイと考えられ、各ビットは、左から右へ処理されるときにpredにおける真/偽要素間の考えられる遷移を指定する。これらのビットは、セットされた場合には、指示された依存性の存在を搬送し、そしてセットされない場合には、依存性の不存在を保証する。それらは、
kTF:述語が真であるところの繰り返しから、述語の値が偽であるところの後続繰り返しへのループ伝搬依存性を意味する。
kFF:述語が偽であるところの繰り返しから、述語の値が偽であるところの後続繰り返しへのループ伝搬依存性を意味する。
kFT:述語が偽であるところの繰り返しから、述語の値が真であるところの後続繰り返しへのループ伝搬依存性を意味する。
kTT:述語が真であるところの繰り返しから、述語の値が真であるところの後続繰り返しへのループ伝搬依存性を意味する。
GeneratePredicatesは、依存性インデックスベクトルDIVを取り上げ、そしてpredで指示された処理済の以前のグループが与えられると、安全にパラレルに処理できる要素の次のグループに対応する述語を発生する。predの要素がアクティブでない場合には、安全にパラレルに処理できる要素の第1グループに対して述語が発生される。ベクトルの最終要素が処理されたことをPredが指示する場合には、処理すべき要素がないことを指示するインアクティブな述語の結果ベクトルを命令が発生し、そしてZFフラグがセットされる。結果の最後の要素がアクティブであることを指示するためにCFフラグがセットされる。第1の例の値を使用して、GeneratePredicatesは、次のように動作する。
先の例では、コントロールフロー判断がループ伝搬依存性とは独立しているので、ベクトル区画化ループを開始する前にベクトル区画を決定することができる。しかしながら、これは、常にそうではない。例2A及び例2Bに示された次の2つのループについて考える。
VectorReadIntFFは、VectorReadIntの第1のフォールト変形例である。この命令は、少なくとも第1のアクティブな要素が有効なアドレスである場合には、フォールトを発生しない。無効アドレスに対応する結果は、強制的にゼロにされ、そしてこのデータを使用するその後の命令への述語をマスクするのに使用できるフラグpfが返送される。アドレスの第1のアクティブな要素がアンマップされる場合には、この命令は、フォールトとなり、コンピュータシステム100のバーチャルメモリシステム(図示せず)がそれに対応するページをポピュレートできるようにし、それにより、プロセッサ102が前方に進行し続けることができるよう保証する。
Remaining命令は、述語のベクトルPredを評価し、そしてベクトルにおける残りの要素を計算する。これは、最後のアクティブな述語に続くインアクティブな述語のセットに対応する。Predにアクティブな要素がない場合には、全てのアクティブな述語のベクトルが返送される。同様に、Predが全てのアクティブな述語のベクトルである場合には、インアクティブな述語のベクトルが返送される。例えば、
上述したように、述語ベクトル、ひいては、述語化は、ベクトルのどの要素が所与のベクトル動作により変更されるか又は不変のままであるか決定するのに使用される。述語化は、ベクトル動作の要素ごとに個々にコントロールされるので、ある場合には、ベクトル動作の各要素が述語化され、ベクトル動作が実行されるとき結果ベクトルの要素が実際に変更されないことが考えられる。ベクトル要素が変更されない述語ベクトルは、ナル述語又は空述語とも称される。従って、述語ベクトルがナル又は空である場合には、その述語ベクトルにより述語化される命令の結果が記憶されない。ナル述語で実行される場合に、そのような命令は、何の効果ももたないが、依然、実行リソース(例えば、実行パイプラインのスロット)を消費する。それ故、それらは、実行から完全に安全に省略することができ、有用な仕事を行うための実行リソースを解放することができる。
102:プロセッサ
104:L1キャッシュ
106:L2キャッシュ
108:メモリ
110:大量記憶装置
201:命令フェッチユニット
202:整数実行ユニット
204:ベクトル実行ユニット
206:フローティングポイント実行ユニット
210:分岐予測ユニット
212:予測ミスユニット
Claims (13)
- プログラム命令実行のコントロールのフローが条件付きフローコントロール命令の実行に応答して変更されないと予測する予測を発生する段階であって、前記条件付きフローコントロール命令は、述語ベクトルの1つ以上の要素の各々がナルであるとの決定に応答してコントロールのフローを変更するものである段階と、
前記予測が誤りであることを検出する段階と、
前記予測が誤りであるとの前記検出に応答して予測ミス振舞いを禁止する段階と、
を備えた方法。 - 予測ミス振舞いを禁止する前記段階は、前記条件付きフローコントロール命令の予測ミス経路内に入るプログラム命令を実行することを含む、請求項1に記載の方法。
- 予測ミス振舞いを禁止する前記段階は、前記条件付きフローコントロール命令と命令ターゲットとの間でプログラム順にプログラム命令をプロセッサの実行パイプラインからフラッシュするのを禁止することを含む、請求項1に記載の方法。
- 前記1つ以上の述語要素の各々は、それに対応するベクトル要素が特定のベクトル命令の結果を受け取るか又は特定ベクトル命令の実行中に不変のままにするかコントロールする、請求項1に記載の方法。
- 予測ミス振舞いを禁止する前記段階は、更に、前記条件付きフローコントロール命令により指定された条件コードフラグの状態が述語発生命令の結果であるとの決定を受け取ることに依存する、請求項4に記載の方法。
- 予測ミス振舞いを禁止する前記段階は、更に、前記条件付きフローコントロール命令と前記条件付きフローコントロール命令の命令ターゲットとの間の予測ミス経路内に入るプログラム命令が前記述語ベクトルの述語要素に依存するとの決定を受け取ることに依存する、請求項4に記載の方法。
- 予測ミス振舞いを禁止する前記段階は、更に、前記条件付きフローコントロール命令と前記条件付きフローコントロール命令の命令ターゲットとの間の予測ミス経路内に入るプログラム命令が前記述語ベクトルによりゼロ化述語化から導出された述語ベクトルに依存するとの決定を受け取ることに依存する、請求項4に記載の方法。
- ベクトルプログラム命令のベクトルオペランドの異なる要素において同時に動作するように構成された複数の実行パイプラインを含む実行ユニットと、
前記実行ユニットに結合され、そしてフローコントロール命令がプログラム命令実行のコントロールのフローを変更しないとの予測を発生するように構成された予測ユニットであって、前記フローコントロール命令は、述語ベクトルの1つ以上の要素の各々がナルであるとの決定に応答してコントロールのフローを変更するものである予測ユニットと、
前記予測が誤りであることを検出するよう構成された予測ミス検出ユニットであって、前記予測が誤りであるとの前記検出に応答して前記実行パイプラインの予測ミス振舞いを禁止するように更に構成された予測ミス検出ユニットと、
を備えたプロセッサ。 - 予測ミス振舞いを禁止するために、前記予測ミス検出ユニットは、前記フローコントロール命令の予測ミス経路内に入るプログラム命令を前記実行ユニットが実行できるように構成される、請求項8に記載のプロセッサ。
- 前記1つ以上の述語要素の各々は、それに対応するベクトル要素が特定ベクトル命令の結果を受け取るか又は特定ベクトル命令の実行中に不変のままにするかコントロールするように構成される、請求項8に記載のプロセッサ。
- 前記予測ミス検出ユニットは、更に、前記フローコントロール命令により指定された条件コードフラグの状態が述語発生命令の結果であるとの決定を受け取るのに応答して予測ミス振舞いを禁止するように構成される、請求項10に記載のプロセッサ。
- 前記予測ミス検出ユニットは、更に、前記フローコントロール命令と前記フローコントロール命令の命令ターゲットとの間の予測ミス経路内に入るプログラム命令が前記述語ベクトルの述語要素に依存するか又は前記述語ベクトルによりゼロ化述語化から導出された述語ベクトルに依存するかの決定を受け取るのに応答して予測ミス振舞いを禁止するように構成される、請求項11に記載のプロセッサ。
- プログラム命令を記憶するように構成されたメモリと、
前記メモリに結合されたプロセッサであって、
ベクトルプログラム命令のベクトルオペランドの異なる要素において同時に動作するように構成された複数の実行パイプラインを含む実行ユニット;
前記実行ユニットに結合され、そしてフローコントロール命令がプログラム命令実行のコントロールのフローを変更しないとの予測を発生するように構成された予測ユニットであって、前記フローコントロール命令は、述語ベクトルの1つ以上の要素の各々がナルであるとの決定に応答してコントロールのフローを変更するような予測ユニット;及び
前記予測が誤りであることを検出するように構成された予測ミス検出ユニットであって、前記予測が誤りであるとの前記検出に応答して前記実行パイプラインの予測ミス振舞いを禁止するように構成された予測ミス検出ユニット;
を含むものであるプロセッサと、
を備えたシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/404,362 | 2012-02-24 | ||
US13/404,362 US9268569B2 (en) | 2012-02-24 | 2012-02-24 | Branch misprediction behavior suppression on zero predicate branch mispredict |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013175201A true JP2013175201A (ja) | 2013-09-05 |
JP5612148B2 JP5612148B2 (ja) | 2014-10-22 |
Family
ID=47720430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013049602A Active JP5612148B2 (ja) | 2012-02-24 | 2013-02-22 | ゼロ述語分岐予測ミスにおける分岐予測ミス振舞い抑制 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9268569B2 (ja) |
EP (1) | EP2631785A1 (ja) |
JP (1) | JP5612148B2 (ja) |
KR (1) | KR101417597B1 (ja) |
CN (1) | CN103353834B (ja) |
TW (1) | TW201349111A (ja) |
WO (1) | WO2013126228A2 (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013254484A (ja) * | 2012-04-02 | 2013-12-19 | Apple Inc | ベクトル分割ループの性能の向上 |
JP2014182817A (ja) * | 2013-03-15 | 2014-09-29 | Intel Corp | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
JP2016536665A (ja) * | 2013-10-09 | 2016-11-24 | エイアールエム リミテッド | 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 |
JP2017509064A (ja) * | 2014-03-28 | 2017-03-30 | インテル・コーポレーション | マスクド結果要素に伝搬する対応アンマスクド結果要素にソース要素を記憶するプロセッサ、方法、システム、及び命令 |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
JP2018527657A (ja) * | 2015-07-31 | 2018-09-20 | エイアールエム リミテッド | 条件付きロードの抑制 |
US10223113B2 (en) | 2014-03-27 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140189330A1 (en) * | 2012-12-27 | 2014-07-03 | Ayal Zaks | Optional branches |
US9519482B2 (en) * | 2014-06-20 | 2016-12-13 | Netronome Systems, Inc. | Efficient conditional instruction having companion load predicate bits instruction |
TWI566090B (zh) * | 2014-10-17 | 2017-01-11 | Insyde Software Corp | Debugging firmware / software to produce tracking systems and methods, recording media and computer program products |
GB2548600B (en) * | 2016-03-23 | 2018-05-09 | Advanced Risc Mach Ltd | Vector predication instruction |
GB2558220B (en) | 2016-12-22 | 2019-05-15 | Advanced Risc Mach Ltd | Vector generating instruction |
US10503507B2 (en) * | 2017-08-31 | 2019-12-10 | Nvidia Corporation | Inline data inspection for workload simplification |
US11645078B2 (en) | 2019-07-19 | 2023-05-09 | Intel Corporation | Detecting a dynamic control flow re-convergence point for conditional branches in hardware |
CN111538535B (zh) * | 2020-04-28 | 2021-09-21 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
US11113067B1 (en) * | 2020-11-17 | 2021-09-07 | Centaur Technology, Inc. | Speculative branch pattern update |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04137169A (ja) * | 1990-09-28 | 1992-05-12 | Nec Corp | 情報処理装置 |
JPH04349570A (ja) * | 1991-05-28 | 1992-12-04 | Nec Corp | 情報処理装置 |
US5799180A (en) * | 1995-10-31 | 1998-08-25 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken |
US6918032B1 (en) * | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US20100042789A1 (en) * | 2008-08-15 | 2010-02-18 | Apple Inc. | Check-hazard instructions for processing vectors |
US20100262813A1 (en) * | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
US20100325483A1 (en) * | 2008-08-15 | 2010-12-23 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
WO2011022142A1 (en) * | 2009-08-19 | 2011-02-24 | International Business Machines Corporation | Insertion of operation-and-indicate instructions for optimized simd code |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5522053A (en) | 1988-02-23 | 1996-05-28 | Mitsubishi Denki Kabushiki Kaisha | Branch target and next instruction address calculation in a pipeline processor |
US5471593A (en) | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
US5835967A (en) * | 1993-10-18 | 1998-11-10 | Cyrix Corporation | Adjusting prefetch size based on source of prefetch address |
US5682493A (en) * | 1993-10-21 | 1997-10-28 | Sun Microsystems, Inc. | Scoreboard table for a counterflow pipeline processor with instruction packages and result packages |
ES2138051T3 (es) * | 1994-01-03 | 2000-01-01 | Intel Corp | Metodo y aparato para la realizacion de un sistema de resolucion de bifurcaciones en cuatro etapas en un procesador informatico. |
US5809271A (en) * | 1994-03-01 | 1998-09-15 | Intel Corporation | Method and apparatus for changing flow of control in a processor |
US5687338A (en) * | 1994-03-01 | 1997-11-11 | Intel Corporation | Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor |
US5740416A (en) * | 1994-10-18 | 1998-04-14 | Cyrix Corporation | Branch processing unit with a far target cache accessed by indirection from the target cache |
US5692168A (en) * | 1994-10-18 | 1997-11-25 | Cyrix Corporation | Prefetch buffer using flow control bit to identify changes of flow within the code stream |
US5732253A (en) * | 1994-10-18 | 1998-03-24 | Cyrix Corporation | Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches |
US5835951A (en) * | 1994-10-18 | 1998-11-10 | National Semiconductor | Branch processing unit with target cache read prioritization protocol for handling multiple hits |
WO1997013201A1 (en) * | 1995-10-06 | 1997-04-10 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US6282663B1 (en) | 1997-01-22 | 2001-08-28 | Intel Corporation | Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
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 |
JP2000293373A (ja) * | 1999-04-12 | 2000-10-20 | Hitachi Ltd | 分岐予測装置 |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US20030135719A1 (en) | 2002-01-14 | 2003-07-17 | International Business Machines Corporation | Method and system using hardware assistance for tracing instruction disposition information |
US7155598B2 (en) | 2002-04-02 | 2006-12-26 | Ip-First, Llc | Apparatus and method for conditional instruction execution |
JP3709933B2 (ja) | 2002-06-18 | 2005-10-26 | 日本電気株式会社 | 分岐予測による分岐命令高速化方法、およびプロセッサ |
US7159103B2 (en) | 2003-03-24 | 2007-01-02 | Infineon Technologies Ag | Zero-overhead loop operation in microprocessor having instruction buffer |
US20050097304A1 (en) * | 2003-10-30 | 2005-05-05 | International Business Machines Corporation | Pipeline recirculation for data misprediction in a fast-load data cache |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US7254700B2 (en) * | 2005-02-11 | 2007-08-07 | International Business Machines Corporation | Fencing off instruction buffer until re-circulation of rejected preceding and branch instructions to avoid mispredict flush |
US20060190710A1 (en) | 2005-02-24 | 2006-08-24 | Bohuslav Rychlik | Suppressing update of a branch history register by loop-ending branches |
US7734901B2 (en) | 2005-10-31 | 2010-06-08 | Mips Technologies, Inc. | Processor core and method for managing program counter redirection in an out-of-order processor pipeline |
US7711934B2 (en) * | 2005-10-31 | 2010-05-04 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
US8266413B2 (en) | 2006-03-14 | 2012-09-11 | The Board Of Trustees Of The University Of Illinois | Processor architecture for multipass processing of instructions downstream of a stalled instruction |
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
US7925868B2 (en) * | 2007-01-24 | 2011-04-12 | Arm Limited | Suppressing register renaming for conditional instructions predicted as not executed |
US7624254B2 (en) * | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
US8099586B2 (en) * | 2008-12-30 | 2012-01-17 | Oracle America, Inc. | Branch misprediction recovery mechanism for microprocessors |
US8145890B2 (en) | 2009-02-12 | 2012-03-27 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state |
JP5423156B2 (ja) * | 2009-06-01 | 2014-02-19 | 富士通株式会社 | 情報処理装置及び分岐予測方法 |
US20110047357A1 (en) | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
US8433885B2 (en) | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US8555040B2 (en) | 2010-05-24 | 2013-10-08 | Apple Inc. | Indirect branch target predictor that prevents speculation if mispredict is expected |
US9098295B2 (en) * | 2011-01-21 | 2015-08-04 | Apple Inc. | Predicting a result for an actual instruction when processing vector instructions |
US8862861B2 (en) * | 2011-05-13 | 2014-10-14 | Oracle International Corporation | Suppressing branch prediction information update by branch instructions in incorrect speculative execution path |
-
2012
- 2012-02-24 US US13/404,362 patent/US9268569B2/en active Active
-
2013
- 2013-02-11 WO PCT/US2013/025504 patent/WO2013126228A2/en active Application Filing
- 2013-02-20 EP EP13155929.6A patent/EP2631785A1/en not_active Ceased
- 2013-02-21 TW TW102106080A patent/TW201349111A/zh unknown
- 2013-02-22 JP JP2013049602A patent/JP5612148B2/ja active Active
- 2013-02-22 KR KR1020130019269A patent/KR101417597B1/ko active IP Right Grant
- 2013-02-22 CN CN201310175278.8A patent/CN103353834B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04137169A (ja) * | 1990-09-28 | 1992-05-12 | Nec Corp | 情報処理装置 |
JPH04349570A (ja) * | 1991-05-28 | 1992-12-04 | Nec Corp | 情報処理装置 |
US5799180A (en) * | 1995-10-31 | 1998-08-25 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken |
US6918032B1 (en) * | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US20100042789A1 (en) * | 2008-08-15 | 2010-02-18 | Apple Inc. | Check-hazard instructions for processing vectors |
US20100325483A1 (en) * | 2008-08-15 | 2010-12-23 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
US20100262813A1 (en) * | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
WO2011022142A1 (en) * | 2009-08-19 | 2011-02-24 | International Business Machines Corporation | Insertion of operation-and-indicate instructions for optimized simd code |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JP2013254484A (ja) * | 2012-04-02 | 2013-12-19 | Apple Inc | ベクトル分割ループの性能の向上 |
JP2014182817A (ja) * | 2013-03-15 | 2014-09-29 | Intel Corp | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 |
US9367314B2 (en) | 2013-03-15 | 2016-06-14 | Intel Corporation | Converting conditional short forward branches to computationally equivalent predicated instructions |
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 |
JP2016536665A (ja) * | 2013-10-09 | 2016-11-24 | エイアールエム リミテッド | 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 |
US10261789B2 (en) | 2013-10-09 | 2019-04-16 | Arm Limited | Data processing apparatus and method for controlling performance of speculative vector operations |
US10223113B2 (en) | 2014-03-27 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements |
JP2017509064A (ja) * | 2014-03-28 | 2017-03-30 | インテル・コーポレーション | マスクド結果要素に伝搬する対応アンマスクド結果要素にソース要素を記憶するプロセッサ、方法、システム、及び命令 |
US10223119B2 (en) | 2014-03-28 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to store source elements to corresponding unmasked result elements with propagation to masked result elements |
JP2018527657A (ja) * | 2015-07-31 | 2018-09-20 | エイアールエム リミテッド | 条件付きロードの抑制 |
Also Published As
Publication number | Publication date |
---|---|
WO2013126228A2 (en) | 2013-08-29 |
KR20130097676A (ko) | 2013-09-03 |
US9268569B2 (en) | 2016-02-23 |
KR101417597B1 (ko) | 2014-07-09 |
TW201349111A (zh) | 2013-12-01 |
JP5612148B2 (ja) | 2014-10-22 |
US20130227251A1 (en) | 2013-08-29 |
EP2631785A1 (en) | 2013-08-28 |
CN103353834B (zh) | 2016-09-28 |
CN103353834A (zh) | 2013-10-16 |
WO2013126228A3 (en) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5612148B2 (ja) | ゼロ述語分岐予測ミスにおける分岐予測ミス振舞い抑制 | |
KR101511837B1 (ko) | 벡터 분할 루프들의 성능 향상 | |
US9298456B2 (en) | Mechanism for performing speculative predicated instructions | |
US8850162B2 (en) | Macroscalar vector prefetch with streaming access detection | |
US9182959B2 (en) | Predicate count and segment count instructions for processing vectors | |
US20110276782A1 (en) | Running subtract and running divide instructions for processing vectors | |
US9471324B2 (en) | Concurrent execution of heterogeneous vector instructions | |
US9632775B2 (en) | Completion time prediction for vector instructions | |
US9389860B2 (en) | Prediction optimizations for Macroscalar vector partitioning loops | |
US20130007422A1 (en) | Processing vectors using wrapping add and subtract instructions in the macroscalar architecture | |
US9367309B2 (en) | Predicate attribute tracker | |
US9442734B2 (en) | Completion time determination for vector instructions | |
US20130318332A1 (en) | Branch misprediction behavior suppression using a branch optional instruction | |
US9390058B2 (en) | Dynamic attribute inference | |
US9335980B2 (en) | Processing vectors using wrapping propagate instructions in the macroscalar architecture | |
US9335997B2 (en) | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture | |
US20130024671A1 (en) | Processing vectors using wrapping negation instructions in the macroscalar architecture | |
US20130024656A1 (en) | Processing vectors using wrapping boolean instructions in the macroscalar architecture | |
US20130024655A1 (en) | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140414 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140421 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140722 |
|
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: 20140804 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140903 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5612148 Country of ref document: JP 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 |
|
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 |