JP5145809B2 - 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム - Google Patents
分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム Download PDFInfo
- Publication number
- JP5145809B2 JP5145809B2 JP2007199074A JP2007199074A JP5145809B2 JP 5145809 B2 JP5145809 B2 JP 5145809B2 JP 2007199074 A JP2007199074 A JP 2007199074A JP 2007199074 A JP2007199074 A JP 2007199074A JP 5145809 B2 JP5145809 B2 JP 5145809B2
- Authority
- JP
- Japan
- Prior art keywords
- branch prediction
- branch
- information
- processing
- selection
- 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
- 238000000034 method Methods 0.000 title claims description 403
- 238000012545 processing Methods 0.000 claims description 335
- 230000008569 process Effects 0.000 claims description 332
- 238000009825 accumulation Methods 0.000 claims description 23
- 230000001276 controlling effect Effects 0.000 description 25
- 230000006870 function Effects 0.000 description 22
- 230000000875 corresponding effect Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 206010011732 Cyst Diseases 0.000 description 1
- 230000002902 bimodal effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 208000031513 cyst Diseases 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000013519 translation 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/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
-
- 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
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
Andre Seznec ,et al, 「Design Tradeoffs for the Alpha EV8 Conditional Branch Predictor」、 In proceedings of the 29th IEEE―ACM International Symposium on Computer Architecture、25−29 may 2002
要求に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第1の選択制御処理と、前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、前記第2の選択制御処理にて選択された前記分岐予測情報に基づいて分岐予測結果を生成処理する予測結果生成処理と、を含む処理をパイプライン処理により行い、前記分岐予測情報蓄積処理手段に対してアクセスする制御を行うパイプラインアクセス制御手段と、
を有すると共に、
前記パイプラインアクセス制御手段は、
前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御手段と、
前記インデックス情報制御手段にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第1の選択制御処理を行選択により行う第1の選択制御手段と、
前記インデックス情報制御手段にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第1の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第2の選択制御処理を列選択により行う第2の選択制御手段と、
を含むことを特徴としている。
〔第1の実施の形態〕
先ず、本発明の分岐予測装置の構成について、概略構成から説明し、続いて詳細構成について説明することとする。
本実施の形態の分岐予測装置の概略構成について、図1及び図6を参照しつつ説明する。図1は、本発明における第1実施の形態の分岐予測装置の概略構成の一例を示すブロック図である。図6は、分岐予測装置の分岐予測情報蓄積処理手段へのアクセスに関するパイプライン処理を説明するための説明図である。
図2には、これらの各手段の詳細構成の一例が開示されている。分岐予測装置1の詳細構成について、図2を参照しつつ説明する。図2は、本実施の形態の分岐予測装置の詳細構成の一例を示すブロック図である。
分岐命令アドレス、予測結果生成論理30Aの出力、および、シフトレジスタ11の出力は、その一部をハッシュ値の再計算に活用する。
また、第2の列選択論理25と第2のパイプラインレジスタ26とにより「第2の列選択手段5b」ということもできる。「第2の列選択手段5b」は、前記予測結果生成処理により生成された分岐予測結果情報に基づいて、前記第1の列選択手段にて選択された各分岐予測情報のうち一つの分岐予測情報を選択することができる。
行選択処理により、適切な分岐予測グループが選択される。列選択処理により、分岐予測グループ内から適切な分岐予測情報が選択される。
次に、拡張―Folded―Index―レジスタユニット10の詳細構成について、図3を参照しつつ説明する。図3は、図1の分岐予測装置の拡張―Folded―Index―レジスタユニットの内部構成の一例を示すブロック図である。
また、第2レジスタ(C1)11bと、第4レジスタ(C3)11dと、第5レジスタ(C4)11eと、第6レジスタ(C5)11fと、第7レジスタ(C6)11gとは、各々ビットシフトにより値が可変する。
たとえば、図3に示す各レジスタ11a〜11hのうち、C0、C2、C3、C4、C5は、次のサイクルでのC1、C3、C4、C5、C6の内容である。つまり、C0、C2、C3、C4、C5は、次のサイクルでは、シフトしたC1、C3、C4、C5、C6となる。
ここで、本実施の形態の特徴であるパターン履歴テーブルへのアクセスに関するパイプライン構造について説明するに先立って、プロセッサのパイプライン構造の各ステージについて、図4を参照しつつ説明する。図4は、分岐予測装置を含むプロセッサのパイプライン構造を説明するための説明図である。
次に、パターン履歴テーブルへのアクセスに関するパイプライン構造のステージの概要について、図5を参照しつつ説明する。図5は、図1の分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。図5では、説明の都合上、第1の分岐命令210、第2の分岐命令220、第3の分岐命令230の3つのみを挙げているが、これ以上の分岐命令に対応する分岐予測の処理が順次パイプライン処理される。
分岐予測装置における各種の処理手順について、図2、図3、図6、及び図7を参照しつつ説明する。先ず、「分岐予測方法の基本的構成」を説明し、続いて、「分岐予測手順」、分岐予測手順後の「更新手順」について説明する。
また、前記第3のステップ(T2=−2)では、前記第1の分岐予測結果生成処理(例えば図5、図6に示す符号210G)と、前記第2の分岐命令に関し一又は複数の前記分岐予測情報を選択する第2の列選択処理(例えば図5、図6に示す符号220RA)と、前記第2の分岐命令の次に処理される第3の分岐命令に関し前記分岐予測グループを選択する第3の行選択処理(例えば図5、図6に示す符号230CA)と、を並行して処理を行うことができる。
先ず、分岐予測手順に関して図2、図3、図6、及び図7を参照しつつ説明する。本実施の形態の分岐予測装置が搭載されたプロセッサにおいて、本例では、図5、図6に示す第3の分岐命令の分岐予測に関連する処理にて分岐予測結果生成230Gのステージの処理(「T2=2」・第5のステップ内の処理)にて分岐予測結果を生成するための手順を、「T2=0」(第3のステップ)、「T2=1」(第4のステップ)、「T2=2」(第5のステップ)の順に説明する。
図6に示すT2=0の第3の期間において、分岐予測装置は、図3に示すシフトレジスタ11を構成する第1レジスタ(C0)11a、第3レジスタ(C2)11c、第4レジスタ(C3)11d、第5レジスタ(C4)11e、第6レジスタ(C5)11fの次のサイクル(T2=1)で変更しない値を行選択論理21に入力し、パターン履歴テーブルから分岐情報グループを読み出す処理を行う(図7に示すステップS101)<行選択処理>。
また、この分岐予測結果は、図1に示す予測結果生成論理30Aの出力に対応する。
図6に示すT2=1の第4の期間において、分岐予測装置は、コピーレジスタ27の値に基づいて、第1のパイプラインレジスタ23の出力である分岐情報グループの中から、2つの分岐予測情報を第1の列選択論理24にて選択する処理を行う(図7に示すステップS105)<列選択第1処理(第3の分岐命令に限ると第3の列選択第1処理)>。
ここで、この部分の遅延は、大きくないため、次のステップの演算を前倒しして処理することも可能である。
ここで得られた結果を第2のパイプラインレジスタ26へ格納する。
次に、図6に示すT2=2の第5の期間において、分岐予測装置は、第2のパイプラインレジスタ26に格納された分岐予測結果情報に基づき、第3の分岐命令に関する分岐予測結果生成230Gのステージの処理(第3の分岐命令に限ると第3の分岐予測結果生成処理)による分岐予測結果を生成する(図7に示すステップS108)<分岐予測結果生成処理>。
次に、更新手順に関して、図8を参照しつつ説明する。図8は、本実施の形態の分岐予測装置において、更新手順を説明するための説明図である。
再計算後の値は、履歴ビットと成立/非成立が一致した場合には、その一致した値を、新しい予測ビットの値とする処理を行う。この際に、予測ビットと反対の論理の値を履歴ビットに書き込む処理を行う(ステップS115)<予測ビット書き込み処理>。
履歴ビットと成立/非成立が一致していない場合には、履歴ビットに分岐命令の実行結果を書き込む処理を行う(ステップS116)<実行結果書き込み処理>。
次に、本発明にかかる第2の実施の形態について、図9に基づいて説明する。なお、以下には、前記第1の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。図9は、本発明の「分岐予測装置」を「ハイブリッド分岐予測装置」に適用した第2の実施の形態の一例を示すブロック図である。
また、ひとつの入力の命令カウンタ40がそのままパターン履歴テーブル50の入力となっている。ここで、パターン履歴テーブル50は、他のパターン履歴テーブルよりも小さく遅延が短い上に、この遅延は、もともとハッシュ関数などの遅延が含まれないため、この部分の遅延がプロセッサのクリティカルパスに入ることはない。
ここで、更新手順に関しては、分岐命令がコミットステージに到達した場合には、以下の処理が存在する。すなわち、分岐予測が成功した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリの直前の分岐の成立/非成立を示す1ビットの情報(分岐成立可否情報)を更新する<分岐成立可否情報更新処理>。
履歴ビットと成立/非成立が一致していない場合には、履歴ビットには分岐命令の実行結果を書き込む<実行結果書き込み処理>。
次に、本発明にかかる第3の実施の形態について、図11に基づいて説明する。以下には、前記第1の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。図11は、本発明の分岐予測装置、ハイブリッド分岐予測装置をプロセッサに適用した第3の実施の形態の一例を示すブロック図である。
また、本発明にかかる装置及び方法は、そのいくつかの特定の実施の形態に従って説明してきたが、本発明の主旨および範囲から逸脱することなく本発明の本文に記述した実施の形態に対して種々の変形が可能である。
例えば、上記構成部材の数、位置、形状等は上記実施の形態に限定されず、本発明を実施する上で好適な数、位置、形状等にすることができる。すなわち、上記実施の形態では、パイプライン化パターン履歴テーブルが3個、パターン履歴テーブルが1個、コミットステージ更新拡張―Folded―Index―レジスタユニットが3個、フェッチステージ更新拡張―Folded―Index―レジスタユニットが3個、の場合を示したが、本発明は、これらの個数を制限するものではない。
また、「プロセッサ」は、通常のプロセッサに加えて、マルチプロセッサ、複数のCPUを1チップ集積化したデュアルプロセッサなどを包含する総称である。このため、本実施の形態の「分岐予測装置」や「ハイブリッド分岐予測装置」を含む「プロセッサ」には、そのプロセッサを含むマルチプロセッサ、そのプロセッサと他の種々のプロセッサを含むマルチプロセッサ、そのプロセッサを含むデュアルプロセッサなどが含まれる。
専用のハードウエアの場合、各部を集積回路例えばLSIにて形成されてよい。これらは個別に1チップ化されても良いし、一部または全部を含むように1チップ化されても良い。また、LSIには、各種画像処理回路など他の機能ブロックが含まれていても良い。さらには、集積回路化の手法はLSIに限るものではなく、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
従って、上記に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物を含む趣旨である。
2 パイプラインアクセス制御手段
3 インデックス情報制御手段
4 第1の選択制御手段
5 第2の選択制御手段
5a 第1の列選択手段
5b 第2の列選択手段
6 分岐予測情報蓄積処理手段
7 予測結果生成手段
10 拡張―Folded―Index―レジスタユニット
11 シフトレジスタ部
12 論理回路ユニット
13 分岐履歴レジスタ
14 実行パス履歴レジスタ
15 排他的論理和回路部
20 パイプライン化パターン履歴テーブルユニット
(パイプライン化分岐履歴情報蓄積処理ユニット)
21 行選択論理部(行選択手段)
22 パターン履歴テーブル
23 第1のパイプラインレジスタ(分岐予測グループ情報一時格納部)
24 第1の列選択論理(第1の列選択論理回路部)
25 第2の列選択論理
26 第2のパイプラインレジスタ
27 コピーレジスタ(列選択情報一時格納部)
30A 予測結果生成論理
300 ハイブリッド分岐予測装置
10A―1、10A―2、10A―3 コミットステージ更新拡張―Folded―
―Index―レジスタユニット(第1のインデックス制御ユニット)
10B―1、10B―2、10B―3 フェッチステージ更新拡張―Folded―
―Index―レジスタユニット(第2のインデックス制御ユニット)
30B 予測結果生成論理部
32 多数決回路
33 セレクタ回路
400 プロセッサ
421 分岐予測処理ユニット
Claims (22)
- 分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段と、
要求に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第1の選択制御処理と、前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、前記第2の選択制御処理にて選択された前記分岐予測情報に基づいて分岐予測結果を生成処理する予測結果生成処理と、を含む処理をパイプライン処理により行い、前記分岐予測情報蓄積処理手段に対してアクセスする制御を行うパイプラインアクセス制御手段と、
を有すると共に、
前記パイプラインアクセス制御手段は、
前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御手段と、
前記インデックス情報制御手段にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第1の選択制御処理を行選択により行う第1の選択制御手段と、
前記インデックス情報制御手段にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第1の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第2の選択制御処理を列選択により行う第2の選択制御手段と、
を含むことを特徴とする分岐予測装置。 - 請求項1に記載の分岐予測装置において、
前記インデックス情報制御手段は、
前記分岐命令に先行する他の分岐命令に対応するものであって前記一期間に実行される前記予測結果生成処理にて生成された前記分岐予測結果に基づいて、前記他の期間における前記インデックス情報の値を計算すること、
を特徴とする分岐予測装置。 - 請求項1又は請求項2に記載の分岐予測装置において、
前記インデックス情報制御手段は、
N個前の前記分岐命令から分岐予測ターゲットとなる分岐命令までに実行され通過したN個の分岐命令のパスの情報に関する実行パス履歴情報に基づいて、前記分岐予測ターゲットとなる分岐命令に対応する前記インデックス情報の値の計算を行うこと、
を特徴とする分岐予測装置。 - 請求項1乃至請求項3のうちいずれか一項に記載の分岐予測装置において、
前記インデックス情報制御手段は、
拡張―Folded―Index―レジスタユニットを構成するシフトレジスタの出力の所定の部分を、前記第1の選択制御手段による行選択の入力とする構成を含むものであることを特徴とする分岐予測装置。 - 請求項1乃至請求項4のうちいずれか一項に記載の分岐予測装置において、
前記第2の選択制御手段は、
前記インデックス情報の値に基づいて、一つの分岐予測グループの中から少なくとも2つの各分岐予測情報を選択する第1の列選択手段、
を含むことを特徴とする分岐予測装置。 - 請求項5に記載の分岐予測装置において、
前記第1の列選択手段は、
拡張―Folded―Index―レジスタユニットを構成するシフトレジスタの一部の値が複製されることで前記インデックス情報のうちの列選択情報が格納される列選択情報一時格納部と、
前記第1の選択制御手段にて選択された一つの分岐予測グループに関する情報を一時格納する分岐予測グループ情報一時格納部と、
前記列選択情報一時格納部の列選択情報の値と、前記分岐予測グループ情報一時格納部の一つの分岐予測グループに関する情報とに基づいて、前記一つの分岐予測グループの中から少なくとも2つの各分岐予測情報を選択する第1の列選択論理回路部と、
を含むことを特徴とする分岐予測装置。 - 請求項5に記載の分岐予測装置において、
前記第2の選択制御手段は、
前記予測結果生成処理により生成された分岐予測結果情報に基づいて、前記第1の列選択手段にて選択された各分岐予測情報のうち一つの分岐予測情報を選択する第2の列選択手段、
含むことを特徴とする分岐予測装置。 - 分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を含み、前記分岐予測情報蓄積処理手段に対してパイプライン処理によるアクセスが可能なパイプライン化分岐履歴情報蓄積処理ユニットと、
前記分岐予測情報又は前記分岐予測グループの選択を行うためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行い、プロセッサパイプラインのフェッチステージで処理を行うための第1のインデックス情報制御ユニットと、
前記インデックス情報を制御し、プロセッサパイプラインのコミットステージで処理を行うための第2のインデックス情報制御ユニットと、
を含み、
前記パイプライン化分岐履歴情報蓄積処理ユニットは、
前記第1のインデックス情報制御ユニットにて計算された前記一期間に対応する前記インデックス情報の値に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第1の選択制御処理を行選択により行う第1の選択制御手段と、
前記第1のインデックス情報制御ユニットにて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第1の選択制御処理が行われる前記一期間と異なる前記他の期間に、前記第1の選択制御処理によって選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理を列選択により行う第2の選択制御手段と、
前記第2の選択制御手段にて選択された前記分岐予測情報に基づいて、分岐予測結果を生成処理する予測結果生成手段と、
を含み、
前記第1のインデックス情報制御ユニットは、
前記第1の選択制御手段による第1の選択制御処理と、前記第2の選択制御手段による第2の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うこと、
を特徴とするハイブリッド分岐予測装置。 - 請求項8に記載のハイブリッド分岐予測装置において、
前記第1のインデックス情報制御ユニットは、
前記フェッチステージにて投機実行に利用され、前記フェッチステージにて利用された命令キャッシュインデックスと、前記予測結果生成手段の出力とに基づいて制御すること、
を特徴とするハイブリッド分岐予測装置。 - 請求項8又は請求項9に記載のハイブリッド分岐予測装置において、
前記第2のインデックス情報制御ユニットは、
前記コミットステージにて、前記フェッチステージに利用された命令キャッシュインデックスと、実行ステージでの結果とに基づいて制御し、前記分岐予測情報による分岐予測が失敗し、プロセッサパイプラインの巻き戻しが行われる際に、前記コミットステージにて巻戻先保存処理に利用されること、
を特徴とするハイブリッド分岐予測装置。 - 請求項8乃至請求項10のうちいずれか一項に記載のハイブリッド分岐予測装置において、
前記第2のインデックス情報制御ユニットは、
実行ステージでの実行結果と予測結果とが異なり、前記コミットステージにてプロセッサパイプライン処理の巻き戻し処理が行われる際に、前記インデックス情報を、前記第1のインデックス情報制御ユニットにコピーする処理を行うこと、
を特徴とするハイブリッド分岐予測装置。 - 請求項8乃至請求項11のうちいずれか一項に記載のハイブリッド分岐予測装置において、
前記パイプライン化分岐履歴情報蓄積処理ユニット、前記第1のインデックス情報制御ユニット、及び前記第2のインデックス情報制御ユニットは、それぞれ複数形成され、
各々の各前記第1のインデックス情報制御ユニットは、
それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐履歴情報蓄積処理ユニットの各々の各分岐予測情報の各インデックス情報を各々生成すること、
を特徴とするハイブリッド分岐予測装置。 - 請求項12に記載のハイブリッド分岐予測装置において、
各々の各前記第2のインデックス情報制御ユニットは、
それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐履歴情報蓄積処理ユニットの各々の各分岐予測情報の各インデックス情報を各々生成すること、
を特徴とするハイブリッド分岐予測装置。 - 請求項12に記載のハイブリッド分岐予測装置において、
各々の各前記第1のインデックス情報制御ユニットは、
各々異なる命令数分の分岐履歴情報と、分岐命令キャッシュインデックス情報とに基づいて制御されること、
を特徴とするハイブリッド分岐予測装置。 - 命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置と、
前記プロセッサパイプライン処理における分岐命令の分岐予測を行う、請求項1乃至請求項7のうちいずれか一項に記載の分岐予測装置と、
前記各装置を制御する制御装置と、
を含むことを特徴とするプロセッサ。 - 命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置と、
前記プロセッサパイプライン処理における分岐命令の分岐予測を行う、請求項8乃至請求項14のうちいずれか一項に記載のハイブリッド分岐予測装置と、
前記各装置を制御する制御装置と、
を含むことを特徴とするプロセッサ。 - 分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行う分岐予測方法であって、
少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第1の選択制御処理と、
前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、
前記第2の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、
を含み、
前記第1の選択制御処理と、前記第2の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して行うと共に、
前記第1の選択制御処理は、
前記分岐予測グループを行選択により選択制御する行選択処理、
を含み、
前記第2の選択制御処理は、
一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、
を含み、
前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御ステップを含み、
第1の期間に、第1の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第1の期間に対応する前記インデックス情報の値に基づいて、前記分岐予測グループを選択する第1の行選択処理を行う第1のステップと、
前記第1の期間の後の第2の期間に、前記第1の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第2の期間に対応する前記インデックス情報の値に基づいて、一又は複数の前記分岐予測情報を選択する第1の列選択処理と、前記第1の分岐命令の次に処理される第2の分岐命令に関し前記分岐予測グループを選択する第2の行選択処理と、を並行して処理を行う第2のステップと、
前記第2の期間の後の第3の期間に、前記第1の分岐命令に関して前記第1の列選択処理にて選択された前記分岐予測情報に基づいて、前記第1の分岐命令に関する分岐予測結果を生成する第1の分岐予測結果生成処理と、前記第2の分岐命令に関し一又は複数の前記分岐予測情報を選択する第2の列選択処理と、前記第2の分岐命令の次に処理される第3の分岐命令に関し前記分岐予測グループを選択する第3の行選択処理と、を並行して処理を行う第3のステップと、
を含むことを特徴とする分岐予測方法。 - 請求項17に記載の分岐予測方法において、
前記第3のステップでは、
前記第3の行選択処理の後に、前記第1の分岐予測結果生成処理にて生成された第1の分岐予測結果情報に基づいて、前記第3の期間の後の第4の期間における第4のステップに処理されるべき前記分岐予測情報蓄積処理手段のインデックス情報の値を先行して計算する処理を行うこと
を特徴とする分岐予測方法。 - 請求項18に記載の分岐予測方法において、
前記第3のステップでは、
計算された前記インデックス情報の値に基づいて、前記第4の期間に処理されるべき第3の列選択処理のためのインデックス情報の値を抽出し、特定の列選択情報一時格納部に保持する処理を行うこと、
を特徴とする分岐予測方法。 - 請求項18に記載の分岐予測方法において、
前記第3のステップでは、
計算された前記インデックス情報の値を、前記第4の期間に処理されるべき第4の行選択処理のためのインデックス情報の値として保持する処理を行うこと、
を特徴とする分岐予測方法。 - 請求項19に記載の分岐予測方法において、
前記第4のステップでは、
前記第2の分岐命令に関して生成される第2の分岐予測結果情報を生成する第2の分岐予測結果生成処理と、
前記第3の行選択処理にて各々の前記分岐予測グループの中から選択されたいずれか一つの前記分岐予測グループと、前記列選択情報一時格納部の値と、に基づいて、少なくとも2つの各分岐予測情報を選択する第3の列選択第1処理と、
前記第2の分岐予測結果生成処理にて生成された前記第2の分岐予測結果情報に基づいて、前記第3の列選択第1処理にて選択された各前記分岐予測情報のうち、一つの分岐予測情報を選択する第3の列選択第2処理と、
を行うことを特徴とする分岐予測方法。 - 分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行うための分岐予測制御プログラムであって、
前記分岐予測装置に、
少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第1の選択制御処理と、
前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、
前記第2の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、
を含む処理を実行させ、
前記分岐予測装置に、
前記第1の選択制御処理と、前記第2の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して実行させると共に、
前記第1の選択制御処理は、
前記分岐予測グループを行選択により選択制御する行選択処理、
を含み、
前記第2の選択制御処理は、
一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、
を含み、
前記分岐予測装置に、
前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間において、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御ステップを実行させると共に、
第1の期間に、第1の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第1の期間に対応する前記インデックス情報の値に基づいて、前記分岐予測グループを選択する第1の行選択処理を行う第1のステップと、
前記第1の期間の後の第2の期間に、前記第1の分岐命令に関し、前記インデックス情報制御ステップにて計算された前記第2の期間に対応する前記インデックス情報の値に基づいて、一又は複数の前記分岐予測情報を選択する第1の列選択処理と、前記第1の分岐命令の次に処理される第2の分岐命令に関し前記分岐予測グループを選択する第2の行選択処理と、を並行して処理を行う第2のステップと、
前記第2の期間の後の第3の期間に、前記第1の分岐命令に関して前記第1の列選択処理にて選択された前記分岐予測情報に基づいて、前記第1の分岐命令に関する分岐予測結果を生成する第1の分岐予測結果生成処理と、前記第2の分岐命令に関し一又は複数の前記分岐予測情報を選択する第2の列選択処理と、前記第2の分岐命令の次に処理される第3の分岐命令に関し前記分岐予測グループを選択する第3の行選択処理と、を並行して処理を行う第3のステップと、
を含む処理を実行させることを特徴とする分岐予測制御プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007199074A JP5145809B2 (ja) | 2007-07-31 | 2007-07-31 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
US12/178,218 US8892852B2 (en) | 2007-07-31 | 2008-07-23 | Branch prediction device and method that breaks accessing a pattern history table into multiple pipeline stages |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007199074A JP5145809B2 (ja) | 2007-07-31 | 2007-07-31 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009037302A JP2009037302A (ja) | 2009-02-19 |
JP5145809B2 true JP5145809B2 (ja) | 2013-02-20 |
Family
ID=40339262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007199074A Expired - Fee Related JP5145809B2 (ja) | 2007-07-31 | 2007-07-31 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8892852B2 (ja) |
JP (1) | JP5145809B2 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7689816B2 (en) * | 2008-01-31 | 2010-03-30 | International Business Machines Corporation | Branch prediction with partially folded global history vector for reduced XOR operation time |
CN101763248A (zh) * | 2008-12-25 | 2010-06-30 | 世意法(北京)半导体研发有限责任公司 | 用于多模式分支预测器的系统和方法 |
US9778934B2 (en) * | 2010-11-16 | 2017-10-03 | Advanced Micro Devices, Inc. | Power efficient pattern history table fetch in branch predictor |
US9342432B2 (en) | 2011-04-04 | 2016-05-17 | International Business Machines Corporation | Hardware performance-monitoring facility usage after context swaps |
US8868886B2 (en) | 2011-04-04 | 2014-10-21 | International Business Machines Corporation | Task switch immunized performance monitoring |
US20130055033A1 (en) | 2011-08-22 | 2013-02-28 | International Business Machines Corporation | Hardware-assisted program trace collection with selectable call-signature capture |
CN102520913B (zh) * | 2011-11-03 | 2014-03-26 | 浙江大学 | 基于分组更新历史信息的并行分支预测装置 |
US9652245B2 (en) * | 2012-07-16 | 2017-05-16 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Branch prediction for indirect jumps by hashing current and previous branch instruction addresses |
US10534611B2 (en) * | 2014-07-31 | 2020-01-14 | International Business Machines Corporation | Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV) |
JP6683918B2 (ja) * | 2015-07-24 | 2020-04-22 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10592248B2 (en) * | 2016-08-30 | 2020-03-17 | Advanced Micro Devices, Inc. | Branch target buffer compression |
US10437592B2 (en) | 2017-08-24 | 2019-10-08 | Qualcomm Incorporated | Reduced logic level operation folding of context history in a history register in a prediction system for a processor-based system |
US12045724B2 (en) | 2018-12-31 | 2024-07-23 | Microsoft Technology Licensing, Llc | Neural network activation compression with outlier block floating-point |
US11562247B2 (en) * | 2019-01-24 | 2023-01-24 | Microsoft Technology Licensing, Llc | Neural network activation compression with non-uniform mantissas |
US12014180B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Dynamically foldable and unfoldable instruction fetch pipeline |
US12014178B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Folded instruction fetch pipeline |
US12008375B2 (en) | 2022-06-08 | 2024-06-11 | Ventana Micro Systems Inc. | Branch target buffer that stores predicted set index and predicted way number of instruction cache |
US12020032B2 (en) | 2022-08-02 | 2024-06-25 | Ventana Micro Systems Inc. | Prediction unit that provides a fetch block descriptor each clock cycle |
US12106111B2 (en) | 2022-08-02 | 2024-10-01 | Ventana Micro Systems Inc. | Prediction unit with first predictor that provides a hashed fetch address of a current fetch block to its own input and to a second predictor that uses it to predict the fetch address of a next fetch block |
US11836498B1 (en) * | 2022-08-02 | 2023-12-05 | Ventana Micro Systems Inc. | Single cycle predictor |
US11816489B1 (en) | 2022-08-02 | 2023-11-14 | Ventana Micro Systems Inc. | Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle |
US12118360B2 (en) | 2023-01-05 | 2024-10-15 | Ventana Micro Systems Inc. | Branch target buffer miss handling |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822577A (en) * | 1996-05-01 | 1998-10-13 | International Business Machines Corporation | Context oriented branch history table |
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 |
US6154833A (en) * | 1997-08-11 | 2000-11-28 | Intel Corporation | System for recovering from a concurrent branch target buffer read with a write allocation by invalidating and then reinstating the instruction pointer |
US6108774A (en) * | 1997-12-19 | 2000-08-22 | Advanced Micro Devices, Inc. | Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits |
US6279105B1 (en) * | 1998-10-15 | 2001-08-21 | International Business Machines Corporation | Pipelined two-cycle branch target address cache |
JP3471691B2 (ja) | 1999-12-24 | 2003-12-02 | エヌイーシーコンピュータテクノ株式会社 | マイクロ命令における分岐命令制御方式 |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
JP4027620B2 (ja) * | 2001-06-20 | 2007-12-26 | 富士通株式会社 | 分岐予測装置、プロセッサ、及び分岐予測方法 |
WO2004068337A1 (ja) * | 2003-01-30 | 2004-08-12 | Fujitsu Limited | 情報処理装置 |
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 |
US20060200655A1 (en) * | 2005-03-04 | 2006-09-07 | Smith Rodney W | Forward looking branch target address caching |
US20060218385A1 (en) * | 2005-03-23 | 2006-09-28 | Smith Rodney W | Branch target address cache storing two or more branch target addresses per index |
US20070294518A1 (en) * | 2006-06-14 | 2007-12-20 | Shen-Chang Wang | System and method for predicting target address of branch instruction utilizing branch target buffer having entry indexed according to program counter value of previous instruction |
US8935517B2 (en) * | 2006-06-29 | 2015-01-13 | Qualcomm Incorporated | System and method for selectively managing a branch target address cache of a multiple-stage predictor |
US7984279B2 (en) * | 2006-11-03 | 2011-07-19 | Qualcomm Incorporated | System and method for using a working global history register |
JP5266651B2 (ja) * | 2007-03-07 | 2013-08-21 | 日本電気株式会社 | ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法 |
US7797521B2 (en) * | 2007-04-12 | 2010-09-14 | International Business Machines Corporation | Method, system, and computer program product for path-correlated indirect address predictions |
-
2007
- 2007-07-31 JP JP2007199074A patent/JP5145809B2/ja not_active Expired - Fee Related
-
2008
- 2008-07-23 US US12/178,218 patent/US8892852B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2009037302A (ja) | 2009-02-19 |
US8892852B2 (en) | 2014-11-18 |
US20090037709A1 (en) | 2009-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5145809B2 (ja) | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム | |
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
JP2010532063A (ja) | 条件命令を無条件命令および選択命令へと拡張する方法およびシステム | |
KR20080036940A (ko) | 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법 | |
JP5335440B2 (ja) | オペランドの早期の条件付き選択 | |
US20140025932A1 (en) | Processor, information processing device, and control method of processor | |
US20080162903A1 (en) | Information processing apparatus | |
JP2009524167A5 (ja) | ||
JP2009230338A (ja) | プロセサおよび情報処理装置 | |
JP7077862B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US7472264B2 (en) | Predicting a jump target based on a program counter and state information for a process | |
US8856498B2 (en) | Prefetch request circuit | |
US20090265527A1 (en) | Multiport Execution Target Delay Queue Fifo Array | |
US11507377B2 (en) | Arithmetic processing circuit and arithmetic processing method | |
US10606602B2 (en) | Electronic apparatus, processor and control method including a compiler scheduling instructions to reduce unused input ports | |
JPH10116191A (ja) | 圧縮命令用バッファを備えたプロセッサ | |
US20040128482A1 (en) | Eliminating register reads and writes in a scheduled instruction cache | |
JP6107904B2 (ja) | プロセッサ及びストア命令の変換方法 | |
JPH10260832A (ja) | 情報処理装置 | |
US20080222393A1 (en) | Method and arrangements for pipeline processing of instructions | |
US20050188183A1 (en) | Digital signal processor having data address generator with speculative register file | |
JP2007041999A (ja) | データ処理装置 | |
JP2007079711A (ja) | マイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100611 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120515 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120619 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120820 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120911 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121018 |
|
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: 20121030 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121112 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5145809 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151207 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |