JP2009037302A - 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム - Google Patents

分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム Download PDF

Info

Publication number
JP2009037302A
JP2009037302A JP2007199074A JP2007199074A JP2009037302A JP 2009037302 A JP2009037302 A JP 2009037302A JP 2007199074 A JP2007199074 A JP 2007199074A JP 2007199074 A JP2007199074 A JP 2007199074A JP 2009037302 A JP2009037302 A JP 2009037302A
Authority
JP
Japan
Prior art keywords
branch prediction
branch
information
processing
instruction
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
Application number
JP2007199074A
Other languages
English (en)
Other versions
JP5145809B2 (ja
Inventor
Yasuo Ishii
康雄 石井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2007199074A priority Critical patent/JP5145809B2/ja
Priority to US12/178,218 priority patent/US8892852B2/en
Publication of JP2009037302A publication Critical patent/JP2009037302A/ja
Application granted granted Critical
Publication of JP5145809B2 publication Critical patent/JP5145809B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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

【課題】本発明は、分岐予測精度の低下、処理速度の遅延を防止できる分岐予測装置を提供する。
【解決手段】分岐予測装置(1)は、分岐予測情報をグループ化した分岐予測グループを各々記憶し分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段(6)を含む。さらに、分岐予測装置(1)は、要求に基づいて各々の分岐予測グループの中から少なくとも一つの分岐予測グループを選択制御する第1の選択制御処理と、分岐予測グループの中から一又は複数の分岐予測情報を選択制御する第2の選択制御処理とを含む処理をパイプライン処理により行い、分岐予測情報蓄積処理手段(6)に対してアクセスする制御を行うパイプラインアクセス制御手段(2)を含む。
【選択図】図1

Description

本発明は、分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラムに関する。
コンピュータアーキテクチャにおける分岐予測(Branch Prediction)とは、プログラム実行過程にて条件分岐命令が分岐するか否かを予測するプロセッサ内の機能である。プロセッサは、分岐するか否かが実際に決まる前に、分岐予測機能によって命令をフェッチして実行する。特に、パイプライン処理プロセッサでは、パイプラインを途切れさせないよう命令を次々にフェッチするため、分岐予測が必要となる。
この種の分岐予測を行う分岐予測装置の関連技術として、例えば以下に示す第1の関連技術(非特許文献1)、第2の関連技術(特許文献1)などが挙げられる。
第1の関連技術では、動的分岐予測方式の分岐予測装置の構成の一例が開示されている。この第1の関連技術を図15に示す。図15は、分岐予測装置の第1の関連技術の一例を示すブロック図である。
同図に示す分岐予測装置700において、分岐予測結果は、パターン履歴テーブル720−1、720−2、720−3の読み出し結果を利用して生成する。具体的には、パターン履歴テーブル720−1、720−2、720−3のインデックス情報は、ハッシュ論理回路部710−1、710−2、710−3を利用して生成する(非特許文献第7頁〜第8頁)。同図において、ハッシュ論理回路部710−1、710−2、710−3は、グローバル分岐履歴(情報格納部)702からのグローバル分岐履歴情報と、命令カウンタ740からの対象の命令に対応する分岐命令アドレスとに基づいて、ハッシュ論理の演算を行う。
第1の関連技術の分岐予測装置700は、複数種類のパターン履歴テーブル720−1(Meta:大局分岐予測装置)、パターン履歴テーブル720−2(G1:「e−gskew」型分岐予測装置)、パターン履歴テーブル720−3(G1:「e−gskew」型分岐予測装置)、パターン履歴テーブル720−3(BIM:bimodal分岐予測装置)による各分岐予測結果を予測結果生成論理730にて選択により最終分岐予測結果を出力する、「2Bc−gskew」型のハイブリッド分岐予測装置を構成している。
第2の関連技術(特許文献1)では、分岐予測装置は、パターン履歴テーブルであるタグ付きPHT(Pattern History Table)ユニットの直前にハッシュ論理回路部としてのXOR回路を備えている(特許文献1図2)。XOR回路は、プログラムカウンタが示す実行する分岐命令アドレスと、GHRユニットの内容との排他的論理和を計算する。GHR(Global History Register)ユニットは、最近実行した分岐命令について分岐したか否かに関する履歴を記録しておくレジスタである。計算された排他的論理和は、タグ付きPHT(Pattern History Table)ユニットにインデックスとして供給される。タグ付きPHTユニットは、XOR回路の出力である各インデックスに対して、タグとカウント値とを格納するRAMである。カウント値が0及び1の場合には、分岐しないと予測し、カウント値が2及び3の場合には、分岐すると予測する。
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 特開2003−5956号公報
しかしながら、第1の関連技術、第2の関連技術のいずれも、パターン履歴テーブルの直前にハッシュ論理回路部を設けているため、パターン履歴テーブルに対するアクセス処理を行う際に、分岐予測に関する処理の遅延を悪化させ、プロセッサの処理速度が低下する、という改善すべき点があった。
また、第1の関連技術の分岐予測装置においては、ハッシュ論理回路部710−1、710−2、710−3が命令カウンタ740からの分岐命令アドレスに基づいて演算を行う際には、命令カウンタ740からの分岐命令アドレスがフェッチステージの直前まで判明しないため、プロセッサパイプライン処理のフェッチステージに先立って、ハッシュ論理回路部710−1、710−2、710−3の演算を予め前倒しして演算することができず、ハッシュ論理回路部710−1、710−2、710−3そのものの存在が、処理速度の高速化を妨げていた。
加えて、プロセッサパイプライン処理のフェッチステージ開始後に、判明後の当該分岐命令アドレスに基づいて、ハッシュ論理回路部710−1、710−2、710−3にて複雑なハッシュ論理の演算を行うと、演算処理に時間がかかり、ハッシュ論理回路部の演算による遅延によりパターン履歴テーブルに対するアクセス処理を含む分岐予測の遅延を悪化させ、フェッチステージそのものの遅延につながり、結果としてプロセッサの遅延を悪化させる。このため、分岐予測の遅延にハッシュ論理回路部710−1、710−2、710−3の遅延が含まれるため、分岐予測の遅延によってプロセッサ全体のクロックサイクルが制限され、プロセッサの処理速度に悪影響を及ぼす、という改善すべき点があった。
本発明は、上記した関連技術の改善すべき点を解決することを課題としてなされたものであって、その目的とするところは、ハッシュ論理回路部をパターン履歴テーブルの直前に設けることなく、プロセッサの処理速度に悪影響を与えるような分岐予測の遅延を防止できる分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラムを提供することにある。
上記目的は、主たる独立請求項に記載の特徴の組み合わせにより達成され、また、下位請求項は、発明の更なる有利な具体例を規定する。この発明の概要は、必要な特徴すべてを列挙しているものではなく、よってここには記載されない独立請求項及び下位請求項並びにこれらの特徴群の下位結合(サブコンビネーション)も発明になり得る。
本発明の分岐予測装置は、分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段と、要求に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第1の選択制御処理と、前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、を含む処理をパイプライン処理により行い、前記分岐予測情報蓄積処理手段に対してアクセスする制御を行うパイプラインアクセス制御手段と、を含むことを特徴としている。
本発明のハイブリッド分岐予測装置は、分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を含み、前記分岐予測情報蓄積処理手段に対してパイプライン処理によるアクセスが可能なパイプライン化分岐履歴情報蓄積処理ユニットと、前記分岐予測情報又は前記分岐予測グループの選択を行うためのインデックス情報により前記パイプライン処理によるアクセスを制御し、プロセッサパイプラインのフェッチステージで処理を行うための第1のインデックス情報制御ユニットと、前記インデックス情報を制御し、プロセッサパイプイラインのコミットステージで処理を行うための第2のインデックス情報制御ユニットと、を含み、前記パイプライン化分岐予測情報蓄積処理ユニットは、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択処理する制御を行う第1の選択制御手段と、前記第1の選択制御手段にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択処理する制御を行う第2の選択制御手段と、前記第2の選択制御手段にて選択された前記分岐予測情報に基づいて、分岐予測結果を生成処理する予測結果生成手段と、を含み、前記第1のインデックス情報制御ユニットは、前記第1の選択制御手段による第1の選択制御処理と、前記第2の選択制御手段による第2の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うこと、を特徴としている。
本発明のプロセッサは、命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置と、前記プロセッサパイプライン処理における分岐命令の分岐予測を行う、上述の分岐予測装置又はハイブリッド分岐予測装置と、前記各装置を制御する制御装置と、を含むことを特徴としている。
本発明の分岐予測方法は、分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行う分岐予測方法であって、少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第1の選択制御処理と、前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、前記第2の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、を含み、前記第1の選択制御処理と、前記第2の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して行うことを特徴としている。
分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行う分岐予測制御プログラムであって、前記分岐予測装置に、少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第1の選択制御処理と、前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、前記第2の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、を含む処理を実行させ、前記分岐予測装置に、前記第1の選択制御処理と、前記第2の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して実行させることを特徴としている。
本発明の作用及び他の利得は、以下に説明する「発明を実施するための最良の形態」から明らかにされる。
本発明によれば、分岐予測情報蓄積処理手段の直前にハッシュ論理回路部がないので、分岐予測の遅延を防止でき、パイプラインアクセス制御手段が前記第1の選択制御処理と第2の選択制御処理との2ステージに分けて、パイプライン処理により分岐予測情報蓄積処理手段に対するアクセス処理を行うことで、分岐予測における処理速度の高速化を図ることができ、分岐予測装置の性能が向上する。
なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また、実施の形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
以下、本発明の好適な実施の形態の一例について、図面を参照して具体的に説明する。
〔第1の実施の形態〕
先ず、本発明の分岐予測装置の構成について、概略構成から説明し、続いて詳細構成について説明することとする。
(分岐予測装置の概略構成)
本実施の形態の分岐予測装置の概略構成について、図1及び図6を参照しつつ説明する。図1は、本発明における第1実施の形態の分岐予測装置の概略構成の一例を示すブロック図である。図6は、分岐予測装置の分岐予測情報蓄積処理手段へのアクセスに関するパイプライン処理を説明するための説明図である。
分岐予測装置1は、図1に示すように、分岐命令に関する分岐予測情報(分岐すると予測するか、分岐しないと予測するかを示す情報)と、直前の分岐の成立の可否(成立/非成立)を示す分岐成立可否情報とをグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段6と、要求に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第1の選択制御処理(例えば図6に示す符号230CAの処理)と、前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理(例えば図6に示す符号230RAの処理)と、前記第2の選択制御処理にて選択された前記分岐予測情報に基づいて分岐予測結果を生成処理する予測結果生成処理(例えば図6に示す符号230Gの処理)と、を含む処理をパイプライン処理により行い、前記分岐予測情報蓄積処理手段6に対してアクセスする制御を行うパイプラインアクセス制御手段2と、を含んで構成される。-
さらに、パイプラインアクセス制御手段2は、前記分岐予測情報蓄積処理手段6に対してアクセスし、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第1の選択制御手段4と、第1の選択制御手段4にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御手段5と、第2の選択制御手段5にて選択された前記分岐予測情報に基づいて分岐予測結果を生成する予測結果生成手段7と、第1の選択制御手段4による第1の選択制御処理・第2の選択制御手段5による第2の選択制御処理・予測結果生成手段7による予測結果生成処理によるパイプライン処理を制御する分岐予測生成パイプライン制御手段として機能するインデックス情報制御手段3と、を含んで構成される。
さらに、パイプラインアクセス制御手段2は、前記第1の選択制御処理と、前記第2の選択制御処理と、を含む処理をパイプライン化して処理する制御を行うことができる。
インデックス情報制御手段3は、前記分岐予測情報蓄積処理手段6の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間(例えば図6に示すT2=0の期間)おいて、前記一期間の以降に実行される他の期間(例えば図6に示すT2=1の期間)での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うものである。
また、インデックス情報制御手段3は、前記分岐命令に先行する他の分岐命令に対応するものであって前記一期間(例えば図6に示すT2=0の期間)に実行される前記予測結果生成処理にて生成された前記分岐予測結果に基づいて、前記他の期間(例えば図6に示すT2=1の期間)における前記インデックス情報の値を計算するものである。
さらに、インデックス情報制御手段3は、N個前の前記分岐命令から分岐予測ターゲットとなる分岐命令までに実行され通過したN個の分岐命令のパスの情報に関する実行パス履歴情報(例えば図3に示すD2)に基づいて、前記分岐予測ターゲットとなる分岐命令に対応する前記インデックス情報の値の計算を行うものである。
またさらに、インデックス情報制御手段3は、一例として、拡張―Folded―Index―レジスタユニット(例えば図2に示す符号10)を構成するシフトレジスタの出力を、第1の選択制御手段4による行選択の入力とする構成とすることが好ましい。
第1の選択制御手段4は、インデックス情報制御手段3にて計算された前記一期間例えば図6に示すT2=0の期間)に対応する前記インデックス情報の値に基づいて、前記第1の選択制御処理(例えば図6に示す符号230CAの処理)を行選択により行うものである。
第2の選択制御手段5は、インデックス情報制御手段3にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第1の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第2の選択制御処理を列選択により行うものである。
上述のような構成を有する分岐予測装置1において、概略以下のように動作する。すなわち、分岐予測装置1は、インデックス情報制御手段3により、第1の選択制御手段4による第1の選択制御処理・第2の選択制御手段5による第2の選択制御処理・予測結果生成手段7による予測結果生成処理によるパイプライン処理を制御する。
この際、インデックス情報制御手段3が、前記分岐予測情報蓄積処理手段6の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間おいて、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する。これにより、インデックス情報を前倒しして計算処理が可能となる。
また、インデックス情報制御手段3は、前記分岐命令に先行する他の分岐命令に対応するものであって前記一期間に実行される前記予測結果生成処理にて生成された前記分岐予測結果に基づいて、前記他の期間における前記インデックス情報の値を計算する。
ここで、第1の選択制御手段4は、インデックス情報制御手段3にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第1の選択制御処理を行選択により行う。また、第2の選択制御手段5は、インデックス情報制御手段3にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第1の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第2の選択制御処理を列選択により行う。
さらに、インデックス情報制御手段3は、N個前の前記分岐命令から分岐予測ターゲットとなる分岐命令までに実行され通過したN個の分岐命令のパスの情報に関する実行パス履歴情報に基づいて、前記分岐予測ターゲットとなる分岐命令に対応する前記インデックス情報の値の計算を行う。これにより、実行パス履歴情報をインデックス計算に取り入れることで、複雑なハッシュ論理の構成を導入することなく、分岐予測精度を向上させることができる。
また、インデックス情報制御手段3は、拡張―Folded―Index―レジスタユニットを構成するシフトレジスタの出力を、前記第1の選択制御手段による行選択の入力とする構成を含むものである。これにより、レジスタの値を直接、行選択の入力とすることで、レジスタの値の変化点が固定され、予測精度の低下を防止できる。
このように、分岐予測情報を選択する処理をパイプライン処理で行うことにより、分岐予測における処理を高速に行うことができる。また、分岐予測処理における遅延は、プロセッサのクリティカルパスに入ることはないので、プロセッサ全体としての処理速度の向上に寄与できる分岐予測装置の提供が可能である。
以上のように分岐予測情報を選択する処理をパイプライン処理で行うことにより、分岐予測における処理を高速に行うことができる。また、分岐予測処理における遅延は、プロセッサのクリティカルパスに入ることはないので、プロセッサ全体としての処理速度の向上に寄与できる分岐予測装置の提供が可能である。
(詳細構成)
図2には、これらの各手段の詳細構成の一例が開示されている。分岐予測装置1の詳細構成について、図2を参照しつつ説明する。図2は、本実施の形態の分岐予測装置の詳細構成の一例を示すブロック図である。
本実施の形態の分岐予測装置1は、グローバル分岐履歴などの分岐履歴情報D1、実行パス履歴情報D2を利用したものであり、図2に示すように、インデックス情報制御手段3の一例である拡張―Folded―Index―レジスタユニット10と、拡張―Folded―Index―レジスタユニット10の情報に基づいて、分岐予測情報蓄積処理手段6の一例であるパターン履歴テーブル22に対するパイプライン処理によるアクセス処理を行うパイプライン化パターン履歴テーブル20と、パイプライン化パターン履歴テーブル20からの出力に基づいて予測結果を生成する予測結果生成手段7の一例である予測結果生成論理30Aと、を含んで構成される。
拡張―Folded―Index―レジスタユニット10は、図2に示すように、シフトレジスタ11と、論理回路12と、を含んで構成される。
シフトレジスタ11は、過去数命令分の分岐履歴情報、および、その分岐命令アドレスのハッシュ値を一時格納する。
論理回路12は、シフトレジスタ11内の一時格納される情報を更新する機能(情報更新機能)を含む。論理回路12の入力としては、巻き戻り先のハッシュ値、(例えば図示しない<各分岐命令に対応する分岐先アドレスを格納した>BTBからの)対象となる分岐命令の命令アドレス、予測結果生成論理30Aの直前の分岐予測論理の出力、および、シフトレジスタ11の出力を用いる。このため、論理回路12は、巻き戻り先のハッシュ値を入力する機能と、対象となる分岐命令アドレスを入力する機能と、直前の分岐予測論理の出力を入力する機能と、シフトレジスタの出力を入力する機能とを含む。
巻き戻り先のハッシュ値は、分岐予測結果が間違っていたことがわかった場合に選択される。
分岐命令アドレス、予測結果生成論理30Aの出力、および、シフトレジスタ11の出力は、その一部をハッシュ値の再計算に活用する。
パイプライン化パターン履歴テーブル20は、分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段の一例であるパターン履歴テーブル22と、拡張―Folded―Index―レジスタユニット10のシフトレジスタ11からの出力に基づいて、前記パターン履歴テーブル22に格納された分岐予測情報のグループ群の中から特定のグループを行選択により選択する行選択論理21と、前記行選択論理21にて選択され前記パターン履歴テーブル22から出力される分岐予測情報の特定のグループを一時保持する分岐予測グループ情報一時格納部の一例である第1のパイプラインレジスタ23と、拡張―Folded―Index―レジスタユニット10の論理回路12からの出力(インデックス情報のうちの列選択情報)を複製することによって一時保持する列選択情報一時格納部の一例であるコピーレジスタ27と、このコピーレジスタ27からの情報に基づいて、第1のパイプラインレジスタ23に格納された特定のグループの複数の分岐予測情報の中から、特定のいくつかの分岐予測情報を列選択により選択する第1の列選択論理回路部としての第1の列選択論理24と、予測結果生成論理30Aからの出力に基づいて、第1の列選択論理24にて選択されたいくつかの分岐予測情報の中から特定の分岐予測情報を列選択により選択する第2の列選択論理回路部としての第2の列選択論理25と、この第2の列選択論理25の出力を一時保持する分岐予測情報一時格納部の一例である第2のパイプラインレジスタ26と、を含んで構成される。
ここで、コピーレジスタ27(列選択情報一時格納部)と第1のパイプラインレジスタ23(分岐予測グループ情報一時格納部)と第1の列選択論理24(第1の列選択論理回路部)とにより「第1の列選択手段5a」ということもできる。「第1の列選択手段5a」は、インデックス情報の値に基づいて、一つの分岐予測グループの中から少なくとも2つの各分岐予測情報を選択することができる。
また、第2の列選択論理25と第2のパイプラインレジスタ26とにより「第2の列選択手段5b」ということもできる。「第2の列選択手段5b」は、前記予測結果生成処理により生成された分岐予測結果情報に基づいて、前記第1の列選択手段にて選択された各分岐予測情報のうち一つの分岐予測情報を選択することができる。
パターン履歴テーブル22は、1ビットの分岐予測情報(分岐すると予測するか、分岐しないと予測するかを示す情報)と、直前の分岐の成立の可否(成立/非成立)を示す1ビットの情報(分岐成立可否情報)の合計2ビットを格納する。この情報は2段階の読み出し処理を実現するため、いくつかのグループ(分岐予測グループ)により構成される。
行選択処理により、適切な分岐予測グループが選択される。列選択処理により、分岐予測グループ内から適切な分岐予測情報が選択される。
コピーレジスタ27は、論理回路12のハッシュ値をコピーした情報を、第1の列選択論理24に入力するために一時保持するものである。すなわち、列選択情報一時格納部の一例であるコピーレジスタ27は、拡張―Folded―Index―レジスタユニット10を構成するシフトレジスタ11の一部の値が複製されることで前記インデックス情報のうちの列選択情報を格納することができる。
行選択論理21は、シフトレジスタ11からの出力を直接デコードしパターン履歴テーブル22の適切な分岐予測グループを読み出す。読み出されたパターン履歴テーブル22のエントリは、第1のパイプラインレジスタ23に格納される。
第1のパイプラインレジスタ23の値は、コピーレジスタ27の値に基づいて、第1の列選択論理25にて選択される。すなわち、分岐予測グループ情報一時格納部の一例である第1のパイプラインレジスタ23は、前記第1の選択制御手段にて選択された一つの分岐予測グループに関する情報を一時格納することができる。
第1の列選択論理25は、次の分岐命令の値にふさわしい値を選択する。すなわち、第1の列選択論理回路部としての第1の列選択論理25は、前記列選択情報一時格納部の列選択情報の値と、前記分岐予測グループ情報一時格納部の一つの分岐予測グループに関する情報とに基づいて、前記一つの分岐予測グループの中から少なくとも2つの各分岐予測情報を選択することができる。
第2の列選択論理26の出力は、予測結果生成論理30Aの出力によって選択され、第2のパイプラインレジスタ26に格納される。
ここで、本実施の形態に記載の構成要件と、本発明に記載の構成要件との対応関係について述べると、第1の選択制御手段4の一例として行選択論理21が挙げられる。第2の選択制御手段5の一例として、第1のパイプラインレジスタ23、第1の列選択論理24、第2の列選択論理25、第2のパイプラインレジスタ26、コピーレジスタ27による構成などが挙げられる。予測結果生成手段7の一例として予測結果生成論理30Aなどが挙げられる。分岐予測情報蓄積処理手段の一例としてパターン履歴テーブル22などが挙げられる。
以上のような構成からなる図2における分岐予測装置1において、拡張―Folded―Index―レジスタユニット10は、長い分岐履歴の情報(例えばグローバル分岐履歴情報D1)と実行パス履歴情報D2を効率的にハッシュする。実行パス履歴情報D2が入力されることで、分岐予測精度を向上させることができる。
また、拡張―Folded―Index―レジスタユニット10のシフトレジスタ11の出力は、パターン履歴テーブル22の行選択論理21の入力となっている。これにより、行選択論理21は、対象の分岐命令に関する分岐予測情報の集合を読み出すため、分岐予測の遅延が削減される。
加えて、列選択の情報もパイプラインレジスタからの出力を直接適用するため遅延が削減される。
さらに、パターン履歴テーブル22の読み出し処理は、行選択と列選択の2ステップにパイプライン化して処理されるため、分岐予測精度を損なうことなく処理速度を向上させることができる。
このようにして、本実施の形態では、拡張―Folded―Index―レジスタユニットを活用し、実行パス履歴情報D2を用いたインデックスを作成し、かつ、パターン履歴テーブルへのアクセスをパイプライン化している。このため、低遅延で高精度な分岐予測を実現することできる。
(拡張―Folded―Index―レジスタユニットの詳細構成)
次に、拡張―Folded―Index―レジスタユニット10の詳細構成について、図3を参照しつつ説明する。図3は、図1の分岐予測装置の拡張―Folded―Index―レジスタユニットの内部構成の一例を示すブロック図である。
図3を参照すると、図2に示す、拡張―Folded―Index―レジスタユニットの詳細な構成例が示されている。
拡張―Folded―Index―レジスタユニット10は、図3に示すように、新規分岐履歴情報D1などの分岐履歴情報を一時保持する分岐履歴情報一時記憶手段としての分岐履歴レジスタ13と、実行パス履歴情報を一時保持する実行パス履歴情報一時記憶手段としての実行パス履歴レジスタ14と、新規分岐履歴情報D1の論理値と第7レジスタ(C7)11hの出力の論理値との2入力値に基づいて排他的論理和演算(2入力値が異なる場合に「1」、2入力値が同じ場合に「0」を出力)を行う第1の排他的論理和(XOR:exclusive―OR)演算回路部15aと、前記第1の排他的論理和演算回路部15aの出力を一時保持する第1レジスタ(C0)11aと、第1レジスタ(C0)11aに新たに新データが入力されるとそれまで保持されていた第1レジスタ(C0)11aの旧データがシフトして入力される第2レジスタ(C1)11bと、第2レジスタ(C1)11bの出力の論理値と実行パス履歴レジスタ14の出力の論理値との2入力値に基づいて排他的論理和演算を行う第2の排他的論理和演算回路部15bと、前記第2の排他的論理和演算回路部15bの出力を一時保持する第3レジスタ(C2)11cと、第3レジスタ(C2)11cに新たに新データが入力されるとそれまで保持されていた第3レジスタ(C2)11cの旧データがシフトして入力される第4レジスタ(C3)11dと、第4レジスタ(C3)11dに新たに新データが入力されるとそれまで保持されていた第4レジスタ(C3)11dの旧データがシフトして入力される第5レジスタ(C4)11eと、第5レジスタ(C4)11eに新たに新データが入力されるとそれまで保持されていた第5レジスタ(C4)11eの旧データがシフトして入力される第6レジスタ(C5)11fと、第6レジスタ(C5)11fに新たに新データが入力されるとそれまで保持されていた第6レジスタ(C5)11fの旧データがシフトして入力される第7レジスタ(C6)11gと、分岐履歴レジスタ13の出力の論理値と新規パス履歴情報D2の論理値との2入力値に基づいて排他的論理和演算を行う第3の排他的論理和演算回路部15cと、前記第3の排他的論理和演算回路部15cの出力の論理値と前記第7レジスタ(C6)11gの出力の論理値の2入力値に基づいて排他的論理和演算を行う第4の排他的論理和演算回路部15dと、前記第4の排他的論理和演算回路部15dの出力を一時保持する第8レジスタ(C7)11hと、を含んで構成される。
ここで、第1レジスタ(C0)11aと、第2レジスタ(C1)11bと、第3レジスタ(C2)11cと、第4レジスタ(C3)11dと、第5レジスタ(C4)11eと、第6レジスタ(C5)11fと、第7レジスタ(C6)11gと、第8レジスタ(C7)11hとにより、図1に示す拡張―Folded―Index―レジスタユニット10のシストレジスタ11が構成される。
また、分岐履歴レジスタ13と、実行パス履歴レジスタ14と、第1の排他的論理和演算回路部15aと、第2の排他的論理和演算回路部15bと、第3の排他的論理和演算回路部15cと、第4の排他的論理和演算回路部15dとにより、図1に示す拡張―Folded―Index―レジスタユニット10の論理回路12が構成される。
さらに、各排他的論理和演算回路部の出力が入力される第1レジスタ(C0)11aと、第3レジスタ(C2)11cと、第8レジスタ(C7)11hとは、分岐履歴情報D1や実行パス履歴情報D2に基づいて可変となる。
また、第2レジスタ(C1)11bと、第4レジスタ(C3)11dと、第5レジスタ(C4)11eと、第6レジスタ(C5)11fと、第7レジスタ(C6)11gとは、各々ビットシフトにより値が可変する。
またさらに、第1レジスタ(C0)11aと、第2レジスタ(C1)11bと、第8レジスタ(C7)11hの値は、コピーレジスタ27にコピーされる。このため、シフトレジスタ11は、行選択論理21に入力される第1レジスタ部と、コピーレジスタ27にコピーされる第2レジスタ部とを含む。
実行パス履歴レジスタ14は、N個前の分岐命令からターゲットの分岐命令までに通過したN分岐命令のパスの情報に関する履歴を格納する。実行パス履歴情報により、高い分岐予測精度を実現する.
図3に示す論理回路12の構成例では、15ビットの分岐履歴情報D1と10ビットの実行パス履歴情報D2の合計25ビットをハッシュ論理を用いて圧縮し、8ビットのインデックス情報を生成する。このビット長などは可変であり、ビットをハッシュすることが可能である。
第1レジスタ(C0)11a〜第8レジスタ(C7)11hに格納された情報の1サイクル先の状態は、XORの入力を受け取るレジスタ以外は単純なビットシフトである。
たとえば、図3に示す各レジスタ11a〜11hのうち、C0、C2、C3、C4、C5は、次のサイクルでのC1、C3、C4、C5、C6の内容である。つまり、C0、C2、C3、C4、C5は、次のサイクルでは、シフトしたC1、C3、C4、C5、C6となる。
したがって、このC0、C2、C3、C4、C5のレジスタ値を行アクセスのインデックス情報として利用することにより、パターン履歴テーブルの時間を分岐予測精度を損なうことなく1サイクル手前に開始することができる。
このため、拡張―Folded―Index―レジスタ10では、1サイクル後のレジスタの値の大部分が取得可能であることを活用し、前のサイクルのインデックス情報と後のサイクルのインデックス情報とを含むインデックス情報を損なわない形でパターン履歴テーブルへのアクセスを1サイクル前倒しをして開始する。これにより、分岐予測結果生成過程における、パターン履歴テーブルへのアクセスを2ステージ(予測結果生成処理を含めると3ステージ)のパイプライン化を行うことができる。
また、拡張―Folded―Index―レジスタ10を用いて遅延を増大させない形で実行パス履歴情報D2をパターン履歴テーブルのインデックス計算に導入し、複雑なハッシュ論理を導入した場合と同程度の分岐予測精度を実現できる。これにより、分岐予測精度を落さずにハッシュ論理を除去することができる。従って、分岐予測精度を維持したまま、分岐予測の遅延をプロセッサのクリティカルパスに入らないようし、分岐予測における処理の遅延を削減できる。
(プロセッサのパイプライン構造について)
ここで、本実施の形態の特徴であるパターン履歴テーブルへのアクセスに関するパイプライン構造について説明するに先立って、プロセッサのパイプライン構造の各ステージについて、図4を参照しつつ説明する。図4は、分岐予測装置を含むプロセッサのパイプライン構造を説明するための説明図である。
前記分岐予測装置1は、図4に示すパイプライン構造を持つプロセッサ上で利用されることを想定している。図4では、T=0〜T=9の計8構成のパイプライン構造であるが、このような8構成以外のプロセッサにも適用可能である。
プロセッサのパイプライン処理は、図4に示すように、第1の命令110、第2の命令120、第3の命令130、第4の命令140の4命令が、それぞれ、フェッチステージ(フェッチ処理)、デコードステージ(デコード処理)、オペランドリードステージ(オペランドリード処理)、実行ステージ(実行処理)、メモリアクセスステージ(メモリアクセス処理)、書き戻しステージ(書き戻し処理)、コミットステージ(コミット処理、)、リタイアステージ(リタイア処理)の計8ステージを有する。
具体的には、第1の命令110に関しては、T1=0でフェッチステージ110F(第1のフェッチ処理)、T1=1でデコードステージ110D(第1のデコード処理)、T1=2でオペランドリードステージ110OP(第1のオペランドリード処理)、T1=3で実行ステージ110EX(第1の実行処理)、T1=4でメモリアクセスステージ110MA(第1のメモリアクセス処理)、T1=5で書き戻しステージ110WR(第1の書き戻し処理)、T1=6でコミットステージ110CO(第1のコミット処理)、T1=7でリタイヤステージ110RE(第1のリタイア処理)を処理するように構成される。
第2の命令120に関しては、T1=1でフェッチステージ120F(第2のフェッチ処理)、T1=2でデコードステージ120D(第2のデコード処理)、T1=3でオペランドリードステージ120OP(第2のオペランドリード処理)、T1=4で実行ステージ120EX(第2の実行処理)、T1=5でメモリアクセスステージ120MA(第2のメモリアクセス処理)、T1=6で書き戻しステージ120WR(第2の書き戻し処理)、T1=7でコミットステージ120CO(第2のコミット処理)、T1=8でリタイヤステージ120RE(第2のリタイア処理)を処理するように構成される。
第3の命令130に関しては、T1=2でフェッチステージ130F(第3のフェッチ処理)、T1=3でデコードステージ130D(第3のデコード処理)、T1=4でオペランドリードステージ130OP(第3のオペランドリード処理)、T1=5で実行ステージ130EX(第3の実行処理)、T1=6でメモリアクセスステージ130MA(第3のメモリアクセス処理)、T1=7で書き戻しステージ130WR(第3の書き戻し処理)、T1=8でコミットステージ130CO(第3のコミット処理)、T1=9でリタイヤステージ130RE(第3のリタイア処理)を処理するように構成される。
第4の命令140に関しては、T1=3でフェッチステージ140F(第4のフェッチ処理)、T1=4でデコードステージ140D(第4のデコード処理)、T1=5でオペランドリードステージ140OP(第4のオペランドリード処理)、T1=6で実行ステージ140EX(第4の実行処理)、T1=7でメモリアクセスステージ140MA(第4のメモリアクセス処理)、T1=8で書き戻しステージ140WR(第4の書き戻し処理)、T1=9でコミットステージ140CO(第4のコミット処理)、T1=10でリタイヤステージ140RE(第4のリタイア処理)を処理するように構成される。
このため、T1=0(第1プロセッサ期間)では、プロセッサは、第1の命令110に関するフェッチステージ110Fの処理のみを実行する。
T1=1では、プロセッサは、第1の命令110に関するデコードステージ110Dの処理と、第2の命令120に関するフェッチステージ120Fの処理とを同時に実行する。
T1=2では、プロセッサは、第1の命令110に関するオペランドリードステージ110OPの処理と、第2の命令120に関するデコードステージ120Dの処理と、第3の命令130に関するフェッチステージ130Fの処理とを同時に実行する。
T1=3では、プロセッサは、第1の命令110に関する実行ステージ110EXの処理と、第2の命令120に関するオペランドリードステージ120OPの処理と、第3の命令130に関するデコードステージ130Dの処理と、第4の命令に関するフェッチステージ140Fの処理とを同時に実行する。
T1=4では、プロセッサは、第1の命令110に関するメモリアクセスステージ110MAの処理と、第2の命令120に関する実行ステージ120EXの処理と、第3の命令130に関するオペランドリードステージ130OPの処理と、第4の命令に関するデコードステージ140Dの処理とを同時に実行する。
T1=5では、プロセッサは、第1の命令110に関する書き戻しステージ110WRの処理と、第2の命令120に関するメモリアクセスステージ120MAの処理と、第3の命令130に関する実行ステージ130EXの処理と、第4の命令に関するオペランドリードステージ140OPの処理とを同時に実行する。
T1=6では、プロセッサは、第1の命令110に関するコミットステージ110COの処理と、第2の命令120に関する書き戻しステージ120WRの処理と、第3の命令130に関するメモリアクセスステージ130MAの処理と、第4の命令に関する実行ステージ140EXの処理とを同時に実行する。
T1=7では、プロセッサは、第1の命令110に関するリタイアステージ110REの処理と、第2の命令120に関するコミットステージ120COの処理と、第3の命令130に関する書き戻しステージ130WRの処理と、第4の命令に関するメモリアクセスステージ140MAの処理とを同時に実行する。
T1=8では、プロセッサは、第2の命令120に関するリタイアステージ120REの処理と、第3の命令130に関するコミットステージ130COの処理と、第4の命令140に関する書き戻しステージ140WRの処理とを同時に実行する。
T1=9では、プロセッサは、第3の命令130に関するリタイアステージ130REの処理と、第4の命令140に関するコミットステージ140COの処理とを同時に実行する。
T1=10では、プロセッサは、第4の命令140に関するリタイアステージ140REの処理のみを実行する。
以上のようなパイプライン処理を行うプロセッサにおいて、分岐予測装置は、図4に示すフェッチステージ110F、210F、310F、410Fにおいて分岐予測結果を生成する。
(パターン履歴テーブルへのアクセスに関するパイプライン構造について)
次に、パターン履歴テーブルへのアクセスに関するパイプライン構造のステージの概要について、図5を参照しつつ説明する。図5は、図1の分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。図5では、説明の都合上、第1の分岐命令210、第2の分岐命令220、第3の分岐命令230の3つのみを挙げているが、これ以上の分岐命令に対応する分岐予測の処理が順次パイプライン処理される。
パターン履歴テーブルへのアクセスに関するパイプライン構造は、図5に示すように、第1の分岐命令210、第2の分岐命令220、第3の分岐命令230が、それぞれ、パターン履歴テーブルの分岐予測グループを行選択論理により選択するアクセス処理を行うパターン履歴テーブル行アクセスのステージの処理(第1の選択制御処理)、行選択論理により選択された分岐予測グループから分岐予測情報を第1、第2の列選択論理24、25により選択するアクセス処理を行うパターン履歴テーブル列アクセスのステージの処理(第2の選択制御処理)、選択された分岐予測情報に基づいて、分岐予測結果を生成する処理を行う分岐予測結果生成のステージの処理(予測結果生成処理)の計3ステージを有する。ここに、分岐予測結果生成のステージは、他のステージの期間より短い期間で処理されるようになっている。
より詳細には、第1の分岐命令210に関しては、T2=―2でパターン履歴テーブル行アクセス210CAのステージの処理(第1の行選択処理)、T2=―1でパターン履歴テーブル列アクセス210RAのステージの処理(第1の行選択処理)、T2=0で分岐予測結果生成210Gのステージの処理(第1の分岐予測結果生成処理)を処理するように構成される。
ここで、T2の値は、前述したプロセッサのパイプライン処理のT1の値と相関する値としている。すなわち、プロセッサのパイプライン処理のT1=0の前のT2=−2のタイミングの段階で、分岐予測に関する前処理が行われる。
第2の分岐命令220に関しては、T2=―1でパターン履歴テーブル行アクセス220CAのステージの処理(第2の行選択処理)、T2=0でパターン履歴テーブル列アクセス220RAのステージの処理(第2の列選択処理)、T2=1で分岐予測結果生成220Gのステージの処理(第2の分岐予測結果生成処理)を処理するように構成される。
第3の分岐命令230に関しては、T2=0でパターン履歴テーブル行アクセス230CAのステージの処理(第3の行選択処理)、T2=1でパターン履歴テーブル列アクセス230RAのステージの処理(第3の列選択処理)、T2=2で分岐予測結果生成230Gのステージ(第3の分岐予測結果生成処理)を処理するように構成される。
このため、T2=―2(第1の期間・第1のステップ)では、分岐予測装置は、第1の分岐命令210に関するパターン履歴テーブル行アクセス210CAのステージの処理(第1の行選択処理)のみを実行する(第1のステップ)。
T2=―1(第2の期間・第2のステップ)では、分岐予測装置は、第1の分岐命令210に関するパターン履歴テーブル列アクセス210RAのステージの処理(第1の列選択処理)と、第2の分岐命令220に関するパターン履歴テーブル行アクセス220CAのステージの処理(第2の行選択処理)とを同時に実行する(第2のステップ)。
T2=0(第3の期間・第3のステップ)では、分岐予測装置は、第1の分岐命令210に関する分岐予測結果生成210Gのステージの処理(第1の分岐予測結果生成処理)と、第2の分岐命令220に関するパターン履歴テーブル列アクセス220RAのステージの処理(第2の列選択処理)と、第3の分岐命令230に関するパターン履歴テーブル行アクセス230CAのステージの処理(第3の行選択処理)とを同時に実行する(第3のステップ)。
T2=1(第4の期間・第4のステップ)では、分岐予測装置は、第2の分岐命令220に関する分岐予測結果生成220Gのステージの処理(第2の分岐予測結果生成処理)と、第3の分岐命令220に関するパターン履歴テーブル列アクセス230RAのステージの処理(第3の列選択処理)とを同時に実行する(第4のステップ)。
T2=2(第5の期間・第5のステップ)では、分岐予測装置は、第3の分岐命令230に関する分岐予測結果生成230Gのステージの処理(第2の分岐予測結果生成処理)のみを実行する(第5のステップ)。
以上、パイプライン処理のステージ内容について説明したが、以下には、このようなパイプライン処理を実現するための分岐予測装置の動作とともに、さらに詳細な処理手順について説明することとする。
(分岐予測装置の動作<処理手順>の説明)
分岐予測装置における各種の処理手順について、図2、図3、図6、及び図7を参照しつつ説明する。先ず、「分岐予測方法の基本的構成」を説明し、続いて、「分岐予測手順」、分岐予測手順後の「更新手順」について説明する。
ここで、本実施の形態に係る分岐予測方法の基本的構成について説明する。本実施の形態に係る分岐予測方法は、分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報(分岐すると予測するか、分岐しないと予測するかを示す情報)と、直前の分岐の成立の可否(成立/非成立)を示す分岐成立可否情報とをグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行うものである。
本実施の形態に係る分岐予測方法の基本的構成としては、上述したパイプライン処理のステージを用いて説明すると、少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第1の選択制御処理(例えば図5に示す符号230CA)と、前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理(例えば図5に示す符号230RA)と、前記第2の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理(例えば図5に示す符号230G)と、を含み、前記第1の選択制御処理と、前記第2の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して行うことができる。
この際、前記第1の選択制御処理は、前記分岐予測グループを行選択により選択制御する行選択処理、を含む。前記第1の選択制御処理は、一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、を含む。
加えて、本実施の形態に係る分岐予測方法は、その具体的構成としては、第1の期間に、第1の分岐命令に関し、前記分岐予測グループを選択する第1の行選択処理を行う第1のステップ(例えば図5、図6に示すT2=−2にて行われるステップ)と、前記第1の期間の後の第2の期間に、前記第1の分岐命令に関し、一又は複数の前記分岐予測情報を選択する第1の列選択処理を行う第2のステップ(例えば図5、図6に示すT2=−1にて行われるステップ)と、前記第2の期間の後の第3の期間に、前記第1の分岐命令に関し、前記第1の列選択処理にて選択された前記分岐予測情報に基づいて、前記第1の分岐命令に関する分岐予測結果を生成する第1の分岐予測結果生成処理を行う第3のステップ(例えば図5、図6に示すT2=−1にて行われるステップ)と、を含むものである。
この際、前記第2のステップ(T2=−1)では、前記第1の列選択処理(例えば図5、図6に示す符号210RA)と、前記第1の分岐命令の次に処理される第2の分岐命令に関し前記分岐予測グループを選択する第2の行選択処理(例えば図5、図6に示す符号220CA)と、を並行して処理を行うことができる。
また、前記第3のステップ(T2=−2)では、前記第1の分岐予測結果生成処理(例えば図5、図6に示す符号210G)と、前記第2の分岐命令に関し一又は複数の前記分岐予測情報を選択する第2の列選択処理(例えば図5、図6に示す符号220RA)と、前記第2の分岐命令の次に処理される第3の分岐命令に関し前記分岐予測グループを選択する第3の行選択処理(例えば図5、図6に示す符号230CA)と、を並行して処理を行うことができる。
ここで、図5、図6に示すパイプライン処理において、T2=−2の第1の期間に行われる処理を第1のステップ、T2=−1の第2の期間に行われる処理を第2のステップ、T2=0の第3の期間に行われる処理を第3のステップ、T2=1の第4の期間に行われる処理を第4のステップ、T2=2の第5の期間に行われる処理を第5のステップと称呼することができる。また、各ステップで行われる各処理(パターン履歴テーブル行アクセスなど)を各ステージと称呼することができる。
(分岐予測手順について)
先ず、分岐予測手順に関して図2、図3、図6、及び図7を参照しつつ説明する。本実施の形態の分岐予測装置が搭載されたプロセッサにおいて、本例では、図5、図6に示す第3の分岐命令の分岐予測に関連する処理にて分岐予測結果生成230Gのステージの処理(「T2=2」・第5のステップ内の処理)にて分岐予測結果を生成するための手順を、「T2=0」(第3のステップ)、「T2=1」(第4のステップ)、「T2=2」(第5のステップ)の順に説明する。
先ず、図6に示すように、T2=2ステージにおける分岐予測結果生成処理230Gにて生成された分岐予測結果に基づいて、分岐命令をフェッチするのが「T2=2」(第5のステップ)であるから、分岐命令をフェッチする2サイクル前(「T2=0」・第3のステップ)から分岐予測に関連する処理を開始する。この「T2=0」(第3のステップ)の開始時点では、T2=―2に開始した第1の分岐命令の分岐予測に関連する処理にて第1の分岐予測結果生成処理、及びT2=―1に開始した第2の分岐命令の分岐予測に関連する処理にて第2の分岐予測結果生成処理が終了していない。
<T2=0(第3のステップ)>
図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)<行選択処理>。
次に、図6に示すT2=0の第3の期間において、分岐予測装置は、図3に示す拡張―Folded―Index―レジスタユニット10のシフトレジスタ11(11a〜11h)において、次のサイクル(T2=1)の値を計算する(図7に示すステップS102)<次サイクル値計算処理>。この値の計算は、図6に示す第1の分岐命令に関連する処理であるT2=―2の分岐予測結果生成処理210Gにて生成された分岐予測結果を利用して計算を行う・・・「手順1」。
また、この分岐予測結果は、図1に示す予測結果生成論理30Aの出力に対応する。
さらに、図6に示すT2=0の第3の期間において、分岐予測装置は、計算された値(計算結果)を、次のサイクル(T2=1)におけるシフトレジスタ11の入力値とする処理を行う(図7に示すステップS103)<次サイクル値入力処理>。
加えて、図6に示すT2=0の第3の期間において、分岐予測装置は、計算された値(計算結果)が、次のサイクル(T2=1)におけるシフトレジスタ11の入力値として入力された値のうちで、シフトレジスタ11を構成する第1レジスタ(C0)11a、第2レジスタ(C1)11b、第8レジスタ(C7)11hに各々格納される値は、コピーレジスタ27に入力する処理を行う(図7に示すステップS104)<コピーレジスタ値入力処理>。
このようにして、図6に示すT2=0の第3の期間において、分岐予測装置は、第3の分岐命令に関するパターン履歴テーブルの行アクセス230CAのステージの処理(第3の行選択処理)を行う。
<T2=1(第4のステップ)>
図6に示すT2=1の第4の期間において、分岐予測装置は、コピーレジスタ27の値に基づいて、第1のパイプラインレジスタ23の出力である分岐情報グループの中から、2つの分岐予測情報を第1の列選択論理24にて選択する処理を行う(図7に示すステップS105)<列選択第1処理(第3の分岐命令に限ると第3の列選択第1処理)>。
さらに、図6に示すT2=1の第4の期間において、分岐予測装置は、第2の分岐命令に関連する分岐予測結果生成処理220Gの分岐予測結果(図1の予測結果生成論理30Aの出力に相当)に基づいて、前記第1の列選択論理24にて選択された2つの値の各分岐予測情報の中からひとつの値の分岐予測情報を、第2の列選択論理25にて選択する処理を行う(図7に示すステップS106)<列選択第2処理(第3の分岐命令に限ると第3の列選択第2処理)>・・・(手順2)。
ここで、この部分の遅延は、大きくないため、次のステップの演算を前倒しして処理することも可能である。
ここで得られた結果を第2のパイプラインレジスタ26へ格納する。
このようにして、列選択第1処理、列選択第2処理により、図6に示すT2=1の第4の期間において、分岐予測装置は、第3の分岐命令に関するパターン履歴テーブルの列アクセス230RAのステージの処理(第3の列選択処理)を行う。
<T2=2(第5のステップ)>
次に、図6に示すT2=2の第5の期間において、分岐予測装置は、第2のパイプラインレジスタ26に格納された分岐予測結果情報に基づき、第3の分岐命令に関する分岐予測結果生成230Gのステージの処理(第3の分岐命令に限ると第3の分岐予測結果生成処理)による分岐予測結果を生成する(図7に示すステップS108)<分岐予測結果生成処理>。
次に、図6に示すT2=2の第5の期間において、予測結果生成論理30Aにて生成された前記分岐予測結果情報が、以降の処理(さらに次のサイクルでの前記手順1、手順2、同様の処理<さらに次のサイクルでの値の計算、このサイクルでの第2の列選択などの処理>)に必要となるため、分岐予測装置は、前記分岐予測結果情報を、拡張―Folded―Index―レジスタユニット10、第2の列選択論理25に各々送信する処理を行う(図7に示すステップS109)<分岐予測結果情報送信処理>。
以上のパス(行選択処理、列選択処理、分岐予測結果生成処理)は、各ステージが十分に単純な作業に落とし込まれているためプロセッサのクリティカルパスに入ることはない。
以上まとめると、前記第3のステップでは、前記第3の行選択処理の後に、前記第1の分岐予測結果生成処理にて生成された第1の分岐予測結果情報に基づいて、前記第3の期間の後の第4の期間における第4のステップに処理されるべき前記分岐予測情報蓄積処理手段のインデックス情報の値を先行して計算する処理を行うことができる。
また、前記第3のステップでは、計算された前記インデックス情報の値に基づいて、前記第4の期間に処理されるべき第3の列選択処理のためのインデックス情報の値を抽出し、特定の列選択情報一時格納部に保持する処理を行うこともできる。
さらに、前記第3のステップでは、計算された前記インデックス情報の値を、前記第4の期間に処理されるべき第4の行選択処理のためのインデックス情報の値として保持する処理を行うこともできる。
一方、前記第4のステップでは、前記第2の分岐命令に関して生成される第2の分岐予測結果情報を生成する第2の分岐予測結果生成処理と、前記第3の行選択処理にて各々の前記分岐予測グループの中から選択されたいずれか一つの前記分岐予測グループと、列選択情報一時格納部の値と、に基づいて、少なくとも2つの各分岐予測情報を選択する第3の列選択第1処理と、前記第2の分岐予測結果生成処理にて生成された前記第2の分岐予測結果情報に基づいて、前記第3の列選択第1処理にて選択された各前記分岐予測情報のうち、一つの分岐を選択する第3の列選択第2処理と、を含むことができる。
(更新手順について)
次に、更新手順に関して、図8を参照しつつ説明する。図8は、本実施の形態の分岐予測装置において、更新手順を説明するための説明図である。
先ず、分岐命令がコミットステージに到達した場合には、以下の処理が存在する。すなわち、分岐予測が成功したか否かを判定する(ステップS111)<分岐予測成功判定処理>。
分岐予測が成功した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリの直前の分岐の成立/非成立を示す1ビットの情報(分岐成立可否情報)を更新する処理を行う(ステップS112)<分岐成立可否情報更新処理>。
一方、分岐予測が失敗した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリを参照して次の2ビット値を再計算する処理を行う(ステップS113)<再計算処理>。
再計算後の値に関し、履歴ビットと成立/非成立が一致したか否かを判定する(ステップS114)<履歴ビット一致判定処理>。
再計算後の値は、履歴ビットと成立/非成立が一致した場合には、その一致した値を、新しい予測ビットの値とする処理を行う。この際に、予測ビットと反対の論理の値を履歴ビットに書き込む処理を行う(ステップS115)<予測ビット書き込み処理>。
履歴ビットと成立/非成立が一致していない場合には、履歴ビットに分岐命令の実行結果を書き込む処理を行う(ステップS116)<実行結果書き込み処理>。
効果的なパイプライン化手法により、パイプライン化を図りながらも、分岐予測精度を向上させることができる。
以上のように本実施の形態によれば、行選択、列選択、分岐予測結果生成の各処理をパイプライン処理により実施することで、パターン履歴テーブルに対するアクセスに関する処理速度を向上させ、分岐予測における処理を高速に行うことができる。
また、拡張―Folded―Index―レジスタユニットの値を直接、パターン履歴テーブルの行選択論理の入力としているので、ハッシュ論理の遅延を省略できる。さらに、インデックス情報制御手段の一例である拡張―Folded―Index―レジスタユニットは、シフトレジスタの出力を行選択論理の入力とする構成により、レジスタの値が直接行選択論理に入力されることで、レジスタの値の変化点が固定されているので、分岐予測精度を損なうことなく、2ステージに分けてパターン履歴テーブルにアクセスできる。
さらに、インデックス情報制御手段としての拡張―Folded―Index―レジスタユニットによるインデックス情報の計算は、実行パス履歴情報を考慮して計算されることで、複雑なハッシュ論理を導入することなく、分岐予測精度が向上する。
また、インデックス情報制御手段が、分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間おいて、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する。そして、第1の選択制御手段は、インデックス情報制御手段3にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第1の選択制御処理を行選択により行う。また、第2の選択制御手段は、インデックス情報制御手段にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第1の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第2の選択制御処理を列選択により行う。これにより、インデックス情報を前倒しして計算処理が可能となる。
また、分岐予測処理における遅延は、プロセッサのクリティカルパスに入ることはないので、プロセッサ全体としての処理速度の向上に寄与できる分岐予測装置の提供が可能である。
このように、分岐予測情報蓄積処理手段の直前にハッシュ論理がないので、分岐予測の遅延を防止でき、パイプラインアクセス制御手段が前記第1の選択制御処理と第2の選択制御処理との2ステージに分けて、パイプライン処理により分岐予測情報蓄積処理手段に対するアクセス処理を行うことで、分岐予測における処理速度の高速化を図ることができ、分岐予測装置の性能が向上する。
また、予測精度を高くしようとして、インデックス情報のビット数を増大させたとしても、行選択、列選択の2ステージによるパイプライン処理を行うことで、処理速度の遅延が生じない。
[第2の実施の形態]
次に、本発明にかかる第2の実施の形態について、図9に基づいて説明する。なお、以下には、前記第1の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。図9は、本発明の「分岐予測装置」を「ハイブリッド分岐予測装置」に適用した第2の実施の形態の一例を示すブロック図である。
本第2の実施の形態では、上述の第1の実施の形態の「分岐予測装置」を、「ハイブリッド分岐予測装置」に適用した例を開示している。図2に示す分岐予測装置は、図8に示すように、ハイブリッド分岐予測装置の一部として利用される。
本実施の形態にかかるハイブリッド分岐予測装置は、その基本的構成として、分岐命令に関する分岐予測情報(分岐すると予測するか、分岐しないと予測するかを示す情報)と、直前の分岐の成立の可否(成立/非成立)を示す分岐成立可否情報とをグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を含み、前記分岐予測情報蓄積処理手段に対してパイプライン処理によるアクセスが可能なパイプライン化分岐履歴情報蓄積処理ユニット(例えば図10に示す符号20−1)と、前記分岐予測情報又は前記分岐予測グループの選択を行うためのインデックス情報により前記パイプライン処理によるアクセスを制御し、プロセッサパイプラインのフェッチステージで処理を行うための第1のインデックス情報制御ユニット(例えば図10に示す符号10B−1)と、前記インデックス情報を制御し、プロセッサパイプイラインのコミットステージで処理を行うための第2のインデックス情報制御ユニット(例えば図10に示す符号10A−1)と、を含む。
前記パイプライン化分岐予測情報蓄積処理ユニット(例えば図10に示す符号20−1)は、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択処理する制御を行う第1の選択制御手段(例えば図10に示す符号21)と、前記第1の選択制御手段にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択処理する制御を行う第2の選択制御手段(例えば図10に示す符号23、24、25、26、27からなる構成)と、前記第2の選択制御手段にて選択された前記分岐予測情報に基づいて、分岐予測結果を生成処理する予測結果生成手段(例えば図10に示す符号30B)と、を含む。
前記第1のインデックス情報制御ユニット(例えば図10に示す符号10B−1)は、前記第1の選択制御手段による第1の選択制御処理と、前記第2の選択制御手段による第2の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うことが好ましい。
本実施の形態のハイブリッド分岐予測装置300は、図9に示すように、その具体的構成として、巻戻り先保存用に利用される第2のインデックス情報制御ユニットの一例であるコミットステージ更新拡張―Folded―Index―レジスタユニット10A―1、10A―2、10A―3と、投機的実行用に利用される第1のインデックス情報制御ユニットの一例であるフェッチステージ更新拡張―Folded―Index―レジスタユニット10B―1、10B―2、10B―3と、図2に示す構成と同様構成を有するパイプライン化分岐予測情報蓄積処理ユニットの一例であるパイプライン化パターン履歴テーブル20−1、20−2、20−3と、命令カウンタ40と、分岐予測情報蓄積処理ユニットの一例であるパターン履歴テーブル50と、これらのパイプライン化パターン履歴テーブル20−1、20−2、20−3及びパターン履歴テーブル50の各出力に基づいて予測結果を生成する予測結果生成手段の一例である予測結果生成論理30Bと、を含んで構成される。
ここで、本実施の形態において、図9に示すパイプライン化したパイプライン化パターン履歴テーブル20−1、20−2、20−3は、それぞれ、前記第1の実施の形態の図2に示すパイプライン化パターン履歴テーブル20に対応する。このため、より詳細には、図10に示すような構成となる。
また、図9に示す巻戻り先保存用のコミットステージ更新拡張―Folded―Index―レジスタユニット10A―1、10A―2、10A―3は、図2に示す拡張―Folded―Index―レジスタユニット10に対応する。さらに、図9に示す投機的更新用のフェッチステージ更新拡張―Folded―Index―レジスタユニット10B−1、10B−2、10B−3は、図2に示す拡張―Folded―Index―レジスタユニット10に対応する。
予測結果生成論理30Bは、パイプライン化パターン履歴テーブル20−2、20−3とパターン履歴テーブル50との各出力に基づいて、多数決によっていずれか一つの出力を決定する多数決処理部としての多数決回路32と、この多数決回路32の出力とパターン履歴テーブル50の出力とパイプイライン化パターン履歴テーブル20−1との各出力のうちいずれか一つを選択する分岐予測結果選択部としてのセレクタ回路33と、を含んで構成される。
ここで、図9における10B―1→20―1→33、10B―2→20―2→32→33、10B−3→20―3→32→33の各パスの遅延も同程度になる。
また、ひとつの入力の命令カウンタ40がそのままパターン履歴テーブル50の入力となっている。ここで、パターン履歴テーブル50は、他のパターン履歴テーブルよりも小さく遅延が短い上に、この遅延は、もともとハッシュ関数などの遅延が含まれないため、この部分の遅延がプロセッサのクリティカルパスに入ることはない。
「拡張―Folded―Index―レジスタユニット」は、巻戻先保存用のコミットステージ更新拡張―Folded―Index―レジスタユニット10A―1、10A―2、10A―3と、投機実行用のフェッチステージ更新拡張―Folded―Index―レジスタユニット10B−1、10B−2、10B−3の2種類のタイプがそれぞれ用意されている。
投機実行用のフェッチステージ更新拡張―Folded―Index―レジスタユニット10B―1、10B―2、10B―3は、フェッチステージで利用した命令キャッシュインデックスと予測結果生成論理の出力を用いて更新する。
巻戻先保存用のコミットステージ更新拡張―Folded―Index―レジスタユニット10A―1、10A―2、10A―3は、コミットステージで、フェッチ時に利用した命令キャッシュインデックスと実行ステージでの結果を用いて更新する。もし、実行ステージでの実行結果が予測結果と異なる場合にはコミットステージにおいてパイプラインの巻き戻しが実行される。
「巻き戻し」の時には、巻戻先保存用のコミットステージ更新拡張―Folded―Index―レジスタユニット10A―1、10A―2、10A―3は、巻戻先保存用のコミットステージ更新拡張―Folded―Index―レジスタユニット10A―1、10A―2、10A―3内の各々の内容を、各々の投機実行用のフェッチステージ更新拡張―Folded―Index―レジスタユニット10B―1、10B―2、10B―3に各々コピーする。これにより、分岐予測の正しさを保証する。
コミットステージ更新拡張―Folded―Index―レジスタユニット10A―1、10A―2、10A―3、フェッチステージ更新拡張―Folded―Index―レジスタユニット10B―1、10B―2、10B―3は、異なる長さの分岐履歴をハッシュし、パイプライン化パターン履歴テーブル20―1、20―2、20―3のインデックス情報を生成する。
たとえば、パイプライン化したパイプライン化パターン履歴テーブル20−1、20―2、20―3の容量がそれぞれ512バイトだった場合には、コミットステージ更新拡張―Folded―Index―レジスタユニット10A―1、フェッチステージ更新拡張―Folded―Index―レジスタユニット10B―1では、直前の4命令分の分岐履歴情報と分岐命令キャッシュインデックスの下位2ビットをハッシュの入力として活用する。
コミットステージ更新拡張―Folded―Index―レジスタユニット10A―2、フェッチステージ更新拡張―Folded―Index―レジスタユニット10B―2では、直前の12命令分の分岐履歴情報と分岐命令キャッシュインデックスの下位2ビットをハッシュの入力として活用する。
コミットステージ更新拡張―Folded―Index―レジスタユニット10A―3、フェッチステージ更新拡張―Folded―Index―レジスタユニット10B―3では、直前の24命令分の分岐履歴情報と分岐命令キャッシュインデックスの下位2ビットをハッシュの入力として活用する。
各々のパイプライン化パターン履歴テーブルユニット20―1、20―2、20−3、50は、1ビットの分岐予測情報と、直前の分岐の成立/非成立を示す1ビットの情報の合計2ビットを格納する。
パイプライン化パターン履歴テーブルユニット20―1、20―2、20−3、パターン履歴テーブル50から読み出された分岐予測情報は多数決回路32、および、セレクタ回路33の入力として利用される。
ここで、フェッチステージ更新拡張―Folded―Index―レジスタユニット10B―1は、「第1のインデックス情報制御ユニット」ということもできる。この「第1のインデックス情報制御ユニット」は、前記第1の選択制御手段による第1の選択制御処理と、前記第2の選択制御手段による第2の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うことができる。
また、「第1のインデックス情報制御ユニット」は、前記フェッチステージにて投機実行に利用され、前記フェッチステージにて利用された命令キャシュインデックスと、前記予測結果生成手段の出力とに基づいて制御することができる。さらに、各々の各「第1のインデックス情報制御ユニット」は、それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐予測情報格納ユニットの各々の各分岐予測情報の各インデックス情報を各々生成することができる。加えて、各々の各「第1のインデックス情報制御ユニット」は、各々異なる命令数分の分岐履歴情報と、分岐命令キャッシュインデックス情報とに基づいて制御されることができる。
一方、コミットステージ更新拡張―Folded―Index―レジスタユニット10A―1は、「第2のインデックス情報制御ユニット」ということもできる。この「第2のインデックス情報制御ユニット」は、前記コミットステージにて、前記フェッチステージに利用された命令キャッシュインデックスと、実行ステージでの結果とに基づいて制御し、前記分岐予測情報による分岐予測が失敗し、プロセッサパイプラインの巻き戻しが行われる際に、前記コミットステージにて巻戻先保存処理に利用されることもできる。
また、「第2のインデックス情報制御ユニット」は、実行ステージでの実行結果と予測結果とが異なり、前記コミットステージにてプロセッサパイプライン処理の巻き戻し処理が行われる際に、前記インデックス情報を、前記第1のパイプライン制御ユニットにコピーする処理を行うことができる。さらに、各々の各「第2のインデックス情報制御ユニット」は、それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐予測情報格納ユニットの各々の各分岐予測情報の各インデックス情報を各々生成することができる。
(更新手順について)
ここで、更新手順に関しては、分岐命令がコミットステージに到達した場合には、以下の処理が存在する。すなわち、分岐予測が成功した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリの直前の分岐の成立/非成立を示す1ビットの情報(分岐成立可否情報)を更新する<分岐成立可否情報更新処理>。
一方、分岐予測が失敗した場合には、利用したパターン履歴テーブルのインデックス値の示すエントリを参照して次の2ビット値を再計算する<再計算処理>。
再計算後の値は、履歴ビットと成立/非成立が一致した場合には、その一致した値を、新しい予測ビットの値とする。このときには、予測ビットと反対の論理の値を履歴ビットに書き込む<予測ビット書き込み処理>。
履歴ビットと成立/非成立が一致していない場合には、履歴ビットには分岐命令の実行結果を書き込む<実行結果書き込み処理>。
投機実行用の拡張―Folded―Index―レジスタユニット10B―1、10B―2、10B―3の値は、巻戻先保存用の拡張―Folded―Index―レジスタユニット10A―1、10A―2、10A―3の値にて上書き処理される。
以上のように本実施の形態によれば、前記第1の実施の形態と同様の作用効果を奏しながらも、複数の異なるパターン履歴テーブルを利用したハイブリッド分岐予測装置にも適用できる。
ここで、上記実施の形態において、予測結果生成論理として、単純な多数決回路、あるいは、単純なセレクト回路などとしてもよい。また、上記実施の形態において、複数のパターン履歴テーブルの代替として、単一のパターン履歴テーブルとしてもよい。
その他の構成およびその他のステップ並びにその作用効果については、前述した第1の実施の形態の場合と同一となっている。
[第3の実施の形態]
次に、本発明にかかる第3の実施の形態について、図11に基づいて説明する。以下には、前記第1の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。図11は、本発明の分岐予測装置、ハイブリッド分岐予測装置をプロセッサに適用した第3の実施の形態の一例を示すブロック図である。
本実施の形態では、上述の第1の実施の形態の分岐予測装置又は上述の第2の実施の形態のハイブリッド分岐予測装置を搭載したプロセッサの例を開示している。
本実施の形態にかかるプロセッサは、基本的構成として、命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置(例えば図11に示す符号411、412、413、414、415、416、417、418などの構成)と、前記プロセッサパイプライン処理における分岐命令の分岐予測を行う上述の第1の実施の形態の分岐予測装置又は上述の第2の実施の形態のハイブリッド分岐予測装置と、各装置を制御する制御装置(例えば図11に示す符号432)と、を含むものである。
本実施の形態のプロセッサ400は、パイプライン処理を行うパイプラインプロセッサであり、図11に示すように、その具体的構成として、命令キャッシュから命令を取り出す命令フェッチ処理を行う命令フェッチ処理ユニット411と、命令フェッチ処理ユニット411にてフェッチされた命令のデコード処理を行うデコード処理ユニット412と、レジスタオペランドのレジスタ値を読み出す処理を行う(レジスタから必要とされるオペランドをアクセスする)オペランドリード処理ユニット413と、デコード処理ユニット412でのデコード結果とオペランドリード処理ユニット413にて読み出されたレジスタ値に基づいて、命令を実行する(オペランドを組み合わせて結果もしくはメモリアドレスを生成する)実行処理ユニット(演算処理ユニット)414と、実行処理ユニット414にて計算されたアドレスに対応するメモリの値をデータキャッシュから読み出す処理を行う(必要に応じてデータオペランドを取りにメモリにアクセスする)メモリアクセス処理ユニット415と、書き戻し処理を行う書き戻し処理ユニット416と、コミット処理を行うコミット処理ユニット417と、リタイア処理を行うリタイア処理ユニット418と、本発明の特徴的構成である分岐予測装置又はハイブリッド分岐予測装置である分岐予測処理ユニット421と、を含んで構成される。
さらに、プロセッサ400は、図11に示すように、アドレス変換処理を行うアドレス変換処理ユニット422と、各部の処理に必要な各データ格納ユニット・各処理に必要な各処理ユニットを含む記憶ユニット431と、プロセッサにおけるパイプライン処理などを行うこれらの各部の制御を司る制御ユニット432と、各部の処理に必要な各クロックを生成するクロック生成処理ユニット433と、他の装置との各種インターフェース機能を含む外部インターフェースユニット434と、を含んで構成される。
アドレス変換処理ユニット422は、命令フェッチ処理又はメモリアクセス処理に先立って行われる。
実行処理ユニット414は、ロード/ストア命令の場合には、実行アドレスの計算を行う。また、分岐命令の場合には、分岐先アドレスを計算する。実行処理ユニット414は、一又は複数のALU(Arithmetic and Logic Unit:算術論理演算ユニット)、一又は複数のFPU(Floating Point Unit:浮動小数点演算ユニット)などを含む。
以上のように本実施の形態によれば、前記第1の実施の形態又は第2の実施の形態と同様の作用効果を奏することのできるプロセッサを構成でき、パターン履歴テーブルへのアクセス処理に関し分岐予測精度を保ったままパイプライン化した処理を行うことで分岐予測を高速に行うことができ、処理速度の高速化を図ることのできるプロセッサを提供できる。
なお、スーパースカラプロセッサの場合、Out−of−order実行などの制御を行う不図示のOut−of−order実行制御処理ユニットを備えてよい。Out−of−order実行制御処理ユニットは、プロセッサパイプラインステージのうち、例えば「実行」ステージなどの部分に関しては、命令順の並びに関係なく実行できる機能を有する。
その他の構成およびその他のステップ並びにその作用効果については、前述した実施の形態の場合と同一となっている。
(各種変形例)
また、本発明にかかる装置及び方法は、そのいくつかの特定の実施の形態に従って説明してきたが、本発明の主旨および範囲から逸脱することなく本発明の本文に記述した実施の形態に対して種々の変形が可能である。
例えば、上記構成部材の数、位置、形状等は上記実施の形態に限定されず、本発明を実施する上で好適な数、位置、形状等にすることができる。すなわち、上記実施の形態では、パイプライン化パターン履歴テーブルが3個、パターン履歴テーブルが1個、コミットステージ更新拡張―Folded―Index―レジスタユニットが3個、フェッチステージ更新拡張―Folded―Index―レジスタユニットが3個、の場合を示したが、本発明は、これらの個数を制限するものではない。
また、前記実施の形態では、パターン履歴テーブルに対するアクセスのパイプライン化において、パターン履歴テーブル行アクセス処理(Aステージ)、パターン履歴テーブル列アクセス処理(Bステージ)、分岐予測結果生成処理(Cステージ)としたが、これに限らず、パターン履歴テーブル列アクセス処理(Aステージ)、パターン履歴テーブル行アクセス処理(Bステージ)、分岐予測結果生成処理(Cステージ)とするパイプラインアクセス手法であってもよい。
また、分岐予測におけるパイプライン構造としては、図5、図6に示す3ステージのものに限らず、図12に示すような2ステージのパイプライン構造、図13に示すような4ステージのパイプライン構造であってもよい。
図12に示すパイプライン構造では、第1の分岐命令510、第2の分岐命令520が、それぞれ、行選択を行うステージの処理(例えば符号520CA)と、列選択及び予測結果生成を行うステージの処理(例えば符号520RA)の計2ステージを有する。
また、図13に示すパイプライン構造では、第1の分岐命令610、第2の分岐命令620、第3の分岐命令630、第4の分岐命令640が、それぞれ、行選択を行うステージの処理(例えば符号640CA)と、列選択第1処理を行うステージの処理(例えば符号640RAI)と、列選択第2処理を行うステージの処理(例えば符号640RAII)と、予測結果生成を行うステージの処理(例えば符号640G)の計2ステージを有する。
このように、パターン履歴テーブルに対するパイプラインアクセス処理の手法は、3ステージのパイプラインアセクス処理に限らず、3以上の複数ステージのパイプライン構造であってもよい。
さらに、パターン履歴テーブルに対するアクセスをパイプライン化して処理を行うパイプラインアクセス制御手段(第1のパイプラインアクセス制御手段)を設ける場合に限らず、パイプラインアクセス手法として、パターン履歴テーブル第1行アクセス処理、パターン履歴テーブル第2行アクセス処理、パターン履歴テーブル第1列アクセス処理、パターン履歴テーブル第2列アクセス処理、第1分岐予測結果生成処理、第2分岐予測結果生成処理、・・、のようなスーパーパイプライン方式(第2のパイプラインアクセス処理手段)であってもよい。
さらにまた、パターン履歴テーブルに対するパイプラインアクセス手法は、シングルスカラ方式に限らず、複数例えば2ウエイの並列処理(複数のパイプライン処理が同時に動作する処理)を含むスーパスカラ方式(第3のパイプラインアクセス処理手段)であってもよい。具体的には、パターン履歴テーブル第1行アクセス処理、パターン履歴テーブル第2行アクセス処理をAステージで、パターン履歴テーブル第1列アクセス処理、パターン履歴テーブル第2列アクセス処理をBステージで処理するようにしてもよい。
加えて、パイプラインアクセス処理の各ステージで独立のクロックを用意し、ウェーブパイプライン方式で構成する場合であってもよい(第4のパイプラインアクセス処理)。
また、分岐予測情報蓄積処理手段の一例であるパターン履歴テーブルは、分岐予測情報と、直前の分岐の成立の可否を示す分岐成立可否情報とを対応づけたパターン履歴情報として格納したものに限らず、他の種々の情報を格納したテーブルであってもよい。
本発明の「分岐予測装置」を、「2bc−gskew形式」に類似のハイブリッド分岐予測装置に適用した例について説明したが、他の形式の種々のハイブリッド分岐予測装置に適用してもよい。例えば、3以上(例えば、4、5など)の分岐予測を行ってそれらの多数決を用いるもの全てに適用可能である。
また、本発明の特徴的構成のパイプライン化パターン履歴テーブルユニットの分岐予測情報の分岐予測手法には、種々の各予測手法を具現化した各種テーブルであってもよい。
さらに、ハイブリッド分岐予測装置には、本発明の特徴的構成であるパイプライン化処理可能な分岐予測装置に加え、種々の分岐予測装置を組み合わせて多数決によって予測するようにしてもよい。また、ハイブリッド分岐予測装置におけるパイプライン化処理可能な各分岐予測装置は、複数種類の分岐予測を行うもので構成し、多数決で最終予測結果を決定するものであってもよい。
さらに、前記実施の形態では、「パイプラインアクセス制御手段」が、パターン履歴テーブルから分岐予測情報を読み出す読出し処理のアクセスに関してパイプライン処理を行う例を示したが、「パイプラインアクセス制御手段」が、書き込み処理のアクセスに関してパイプライン処理を行う構成としてもよい。
また、「拡張―Folded―Index―レジスタユニット」は、分岐履歴情報と、実行パス履歴情報と、に基づいてインデックス情報を更新する構成としたが、これに加えて、他の種々の履歴情報を考慮して更新処理を行うよう、レジスタ及びXOR回路を拡張した構成としても構わない。
加えて、前記第2の実施の形態では、一のパイプライン化パターン履歴テーブルユニットに対して、コミットステージ更新拡張―Folded―Index―レジスタユニット、フェッチステージ更新拡張―Folded―Index―レジスタユニットの2つの「拡張―Folded―Index―レジスタユニット」を用いる構成としたが、他の種々の機能や共通する機能を有する、3以上の「拡張―Folded―Index―レジスタユニット」を用いる構成としてもよい。
さらにまた、パターン履歴テーブルを2ステージで選択する際に、行選択により一つの分岐予測グループを選択し、列選択により分岐予測情報を選択する構成としたが、これに限るものではなく、列選択により一つの分岐予測グループを選択し、行選択により分岐予測情報を選択する構成としてもよい。
さらに、分岐予測情報蓄積処理手段の一例であるパターン履歴テーブルの情報を読み出す処理過程において、行選択を、1つの行を選択することによって分岐予測グループを選択する場合に限らず、複数行を同時選択することで分岐予測グループを選択する場合であってもよい。
加えて、複数行を同時選択することで分岐予測グループを選択する場合、列選択において、一つの列を選択することによって、分岐予測グループの中から複数の分岐予測情報を読み出すような構成であってもよい。
上述の実施の形態では、1つのプロセッサ内に分岐予測装置を搭載する構成としたが、マルチプロセッサに分岐予測装置を搭載する構成、分岐予測装置を搭載したプロセッサが複数よりなるマルチプロセッサによる構成であってもよい。
また、前記実施の形態の「分岐予測装置」、「ハイブリッド分岐予測装置」が搭載されるプロセッサとしては、通常のパイプライン処理が可能なパイプラインプロセッサに限らず、スーパースカラ処理が可能なプロセッサ、スーパーパイプライン処理が可能なプロセッサであってもよい。
さらに、プロセッサは、RISC型、CISC命令をプロセッサ内部で複数のRISC命令に分割して実行するCRISC型、CISC型のいずれであってもよい。
また、「プロセッサ」は、通常のプロセッサに加えて、マルチプロセッサ、複数のCPUを1チップ集積化したデュアルプロセッサなどを包含する総称である。このため、本実施の形態の「分岐予測装置」や「ハイブリッド分岐予測装置」を含む「プロセッサ」には、そのプロセッサを含むマルチプロセッサ、そのプロセッサと他の種々のプロセッサを含むマルチプロセッサ、そのプロセッサを含むデュアルプロセッサなどが含まれる。
この際、マルチプロセッサは、集中共有メモリ方式、分散共有メモリ方式のいずれであってもよい。
プロセッサは、デコード処理(命令の解釈)などの制御部の機能の一部をハードウエア的に実現するハードワイヤド方式、該制御部の機能の一部をソフトウエア的に実現するマイクロコード方式のいずれであってもよい。
また、プロセッサは、汎用プロセッサ、各種処理の専用プロセッサであってもよい。
また、分岐予測装置を含むプロセッサと、他の装置との間の通信構造に際し、いずれか一方又は双方に形成されるインタフェースの種類は、今後開発される如何なるインタフェースであっても構わない。
さらに、各手順に示されるステップは、記載された手順に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。また、手順(ステップ)が実行される順序を変更することもできる。さらに、必要に応じて、説明した特定の手順(ステップ)を、組み合わされた手順(ステップ)として除去、追加、または再配置することができる。
さらに、装置の各手段、各機能、各ステージ、各ステップの手順の機能は、専用のハードウエア(例えば専用の半導体回路等)によりその機能を達成してもよいし、一部をソフトウエア的に処理してもよい。すなわち、全機能のうち一部の機能をハードウエアで処理し、全機能のうちさらに他の機能をソフトウエアで処理するようにしてもよい。
専用のハードウエアの場合、各部を集積回路例えばLSIにて形成されてよい。これらは個別に1チップ化されても良いし、一部または全部を含むように1チップ化されても良い。また、LSIには、各種画像処理回路など他の機能ブロックが含まれていても良い。さらには、集積回路化の手法はLSIに限るものではなく、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
さらに、パターン履歴テーブルへのアクセスにパイプライン処理を行う手法は、必ずしも実体のある装置に限られる必要はなく、その方法としても機能することは容易に理解できる。このため、方法にかかる発明も、必ずしも実体のある装置に限らず、その方法としても有効であることに相違はない。この場合、方法を実現するための一例として分岐予測装置、プロセッサなども含めることができる。
ところで、このような分岐予測装置は、単独で存在する場合もあるし、ある機器(例えばプロセッサ)に組み込まれた状態で利用されることもあるなど、発明の思想としてはこれに限らず、各種の態様を含むものである。従って、ソフトウェアであったりハードウェアであったりするなど、適宜、変更可能である。発明の思想の具現化例として分岐予測装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用されるといわざるをえない。
さらにこの場合、一部がソフトウェアであって、一部がハードウェアで実現されている場合であってもよく、一部のソフトウェアに相当する部分を記憶媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。また、上記の説明において、上述した各ステップの動作内容、各処理、各ステージ及び各部の構成要素をプログラム化し、分岐予測装置、ハイブリッド分岐予測装置ないしはコンピュータに実行させてもよい。
加えて、上述のプロセッサなどが搭載される電子機器としては、サーバは、例えばパーソナルコンピュータに限らず、各種サーバー、EWS(エンジニアリングワークステーション)、中型コンピュータ、メインフレームなどが挙げられる。情報端末は、以上の例に加えて、携帯型情報端末、各種モバイル端末、PDA、携帯電話機、ウエアラブル情報端末、種々の(携帯型などの)テレビ・DVDレコーダ・各種音響機器及びそのリモコン、各種情報通信機能を搭載した家電機器、ネットワーク機能を有するゲーム機器等などが挙げられる。
さらに、上記各実施の形態には種々の段階が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。つまり、上述の各実施の形態同士、あるいはそれらのいずれかと各変形例のいずれかとの組み合わせによる例をも含む。この場合において、本実施形態において特に記載しなくとも、各実施の形態及びそれらの変形例に開示した各構成から自明な作用効果については、当然のことながら実施の形態の作用効果として含めることができる。逆に、本実施の形態に記載されたすべての作用効果を奏することのできる構成が、本発明の本質的特徴部分の必須構成要件であるとは限らない。また、実施の形態に示される全構成要件から幾つかの構成要件が削除された構成による実施の形態並びにその構成に基づく技術的範囲も発明になりうる。
そして、各実施の形態及びそれらの変形例を含むこれまでの記述は、本発明の理解を容易にするために、本発明の多様な実施の形態のうちの一例の開示、すなわち、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、例証するものであり、制限するものではなく、適宜変形及び/又は変更が可能である。本発明は、その技術思想、またはその主要な特徴に基づいて、様々な形で実施することができ、各実施の形態及びその変形例によって本発明の技術的範囲が限定的に解釈されてはならないものである。
従って、上記に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物を含む趣旨である。
本発明は、コンピュータ、半導体、通信装置を製造する製造業、その他これに類する産業に適用可能であり、より詳細には、パイプライン化されたプロセッサといった用途に適用できる。
本発明の第1の実施の形態による分岐予測装置の構成の一例を示すブロック図である。 本発明の第1の実施の形態による分岐予測装置の構成の一例を示すブロック図である。 図2の分岐予測装置の拡張―Folded―Index―レジスタの内部構成の一例を示すブロック図である。 図2の分岐予測装置を含むプロセッサのパイプライン構造を説明するための説明図である。 図2の分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。 図2の分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。 本発明の第1の実施の形態による分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン処理の動作過程(処理手順)を説明するための説明図である。 本発明の第1の実施の形態による分岐予測装置において、更新手順を説明するための説明図である。 本発明の第2の実施の形態による分岐予測装置(ハイブリッド分岐予測ユニット)の全体構成の一例を示すブロック図である。 図9の分岐予測装置の詳細構成の一例を示すブロック図である。 本発明の第3の実施の形態によるプロセッサの全体構成の一例を示すブロック図である。 本発明のその他の実施の形態による分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。 本発明のその他の実施の形態による分岐予測装置において、パターン履歴テーブルへのアクセスに関するパイプライン構造を説明するための説明図である。 分岐予測装置においてパイプライン処理を行わない場合の比較例の処理を説明するための説明図である。 分岐予測装置の第1の関連技術の構成の一例を示すブロック図である。
符号の説明
1 分岐予測装置
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 (25)

  1. 分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段と、
    要求に基づいて、各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択制御する第1の選択制御処理と、前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、を含む処理をパイプライン処理により行い、前記分岐予測情報蓄積処理手段に対してアクセスする制御を行うパイプラインアクセス制御手段と、
    を含むことを特徴とする分岐予測装置。
  2. 請求項1に記載の分岐予測装置において、
    前記パイプラインアクセス制御手段は、
    前記第1の選択制御処理と、前記第2の選択制御処理と、前記第2の選択制御処理にて選択された前記分岐予測情報に基づいて分岐予測結果を生成処理する予測結果生成処理と、を含む処理をパイプライン化して処理する制御を行うこと、
    を特徴とする分岐予測装置。
  3. 請求項1又は請求項2に記載の分岐予測装置において、
    前記パイプラインアクセス制御手段は、
    前記分岐予測情報蓄積処理手段の前記分岐予測情報又は前記分岐予測グループを選択するためのインデックス情報の値に関し、分岐予測生成に関する前記パイプライン処理を行う分岐予測生成パイプラインの一期間おいて、前記一期間の以降に実行される他の期間での前記インデックス情報の値を先行して計算し、前記分岐予測生成パイプラインの各期間での各処理に必要な各々のインデックス情報を供給する制御を行うインデックス情報制御手段と、
    前記インデックス情報制御手段にて計算された前記一期間に対応する前記インデックス情報の値に基づいて、前記第1の選択制御処理を行選択により行う第1の選択制御手段と、
    前記インデックス情報制御手段にて計算された前記他の期間に対応する前記インデックス情報の値に基づいて、同一分岐命令の分岐予測に対しては前記第1の選択制御処理が行われる前記一期間と異なる前記他の期間に前記第2の選択制御処理を列選択により行う第2の選択制御手段と、
    を含むことを特徴とする分岐予測装置。
  4. 請求項3に記載の分岐予測装置において、
    前記インデックス情報制御手段は、
    前記分岐命令に先行する他の分岐命令に対応するものであって前記一期間に実行される前記予測結果生成処理にて生成された前記分岐予測結果に基づいて、前記他の期間における前記インデックス情報の値を計算すること、
    を特徴とする分岐予測装置。
  5. 請求項3又は請求項4に記載の分岐予測装置において、
    前記インデックス情報制御手段は、
    N個前の前記分岐命令から分岐予測ターゲットとなる分岐命令までに実行され通過したN個の分岐命令のパスの情報に関する実行パス履歴情報に基づいて、前記分岐予測ターゲットとなる分岐命令に対応する前記インデックス情報の値の計算を行うこと、
    を特徴とする分岐予測装置。
  6. 請求項3乃至請求項5のうちいずれか一項に記載の分岐予測装置において、
    前記インデックス情報制御手段は、
    拡張―Folded―Index―レジスタユニットを構成するシフトレジスタの出力を、前記第1の選択制御手段による行選択の入力とする構成を含むものであることを特徴とする分岐予測装置。
  7. 請求項3乃至請求項6のうちいずれか一項に記載の分岐予測装置において、
    前記第2の選択制御手段は、
    前記インデックス情報の値に基づいて、一つの分岐予測グループの中から少なくとも2つの各分岐予測情報を選択する第1の列選択手段、
    を含むことを特徴とする分岐予測装置。
  8. 請求項7に記載の分岐予測装置において、
    前記第1の列選択手段は、
    拡張―Folded―Index―レジスタユニットを構成するシフトレジスタの一部の値が複製されることで前記インデックス情報のうちの列選択情報が格納される列選択情報一時格納部と、
    前記第1の選択制御手段にて選択された一つの分岐予測グループに関する情報を一時格納する分岐予測グループ情報一時格納部と、
    前記列選択情報一時格納部の列選択情報の値と、前記分岐予測グループ情報一時格納部の一つの分岐予測グループに関する情報とに基づいて、前記一つの分岐予測グループの中から少なくとも2つの各分岐予測情報を選択する第1の列選択論理回路部と、
    を含むことを特徴とする分岐予測装置。
  9. 請求項7に記載の分岐予測装置において、
    前記第2の選択制御手段は、
    前記予測結果生成処理により生成された分岐予測結果情報に基づいて、前記第1の列選択手段にて選択された各分岐予測情報のうち一つの分岐予測情報を選択する第2の列選択手段、
    含むことを特徴とする分岐予測装置。
  10. 分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し、前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を含み、前記分岐予測情報蓄積処理手段に対してパイプライン処理によるアクセスが可能なパイプライン化分岐履歴情報蓄積処理ユニットと、
    前記分岐予測情報又は前記分岐予測グループの選択を行うためのインデックス情報により前記パイプライン処理によるアクセスを制御し、プロセッサパイプラインのフェッチステージで処理を行うための第1のインデックス情報制御ユニットと、
    前記インデックス情報を制御し、プロセッサパイプイラインのコミットステージで処理を行うための第2のインデックス情報制御ユニットと、
    を含み、
    前記パイプライン化分岐予測情報蓄積処理ユニットは、
    各々の前記分岐予測グループの中から少なくとも一つの前記分岐予測グループを選択処理する制御を行う第1の選択制御手段と、
    前記第1の選択制御手段にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択処理する制御を行う第2の選択制御手段と、
    前記第2の選択制御手段にて選択された前記分岐予測情報に基づいて、分岐予測結果を生成処理する予測結果生成手段と、
    を含み、
    前記第1のインデックス情報制御ユニットは、
    前記第1の選択制御手段による第1の選択制御処理と、前記第2の選択制御手段による第2の選択制御処理と、前記予測結果生成手段による予測結果生成処理とを含む処理をパイプライン処理する制御を行うこと、
    を特徴とするハイブリッド分岐予測装置。
  11. 請求項10に記載のハイブリッド分岐予測装置において、
    前記第1のインデックス情報制御ユニットは、
    前記フェッチステージにて投機実行に利用され、前記フェッチステージにて利用された命令キャシュインデックスと、前記予測結果生成手段の出力とに基づいて制御すること、
    を特徴とするハイブリッド分岐予測装置。
  12. 請求項10又は請求項11に記載のハイブリッド分岐予測装置において、
    前記第2のインデックス情報制御ユニットは、
    前記コミットステージにて、前記フェッチステージに利用された命令キャッシュインデックスと、実行ステージでの結果とに基づいて制御し、前記分岐予測情報による分岐予測が失敗し、プロセッサパイプラインの巻き戻しが行われる際に、前記コミットステージにて巻戻先保存処理に利用されること、
    を特徴とするハイブリッド分岐予測装置。
  13. 請求項10乃至請求項12のうちいずれか一項に記載のハイブリッド分岐予測装置において、
    前記第2のインデックス情報制御ユニットは、
    実行ステージでの実行結果と予測結果とが異なり、前記コミットステージにてプロセッサパイプライン処理の巻き戻し処理が行われる際に、前記インデックス情報を、前記第1のパイプライン制御ユニットにコピーする処理を行うこと、
    を特徴とするハイブリッド分岐予測装置。
  14. 請求項10乃至請求項13のうちいずれか一項に記載のハイブリッド分岐予測装置において、
    前記パイプライン化分岐予測情報蓄積処理ユニット、前記第1のインデックス情報制御ユニット、及び前記第2のインデックス情報制御ユニットは、それぞれ複数形成され、
    各々の各前記第1のインデックス情報制御ユニットは、
    それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐予測情報格納ユニットの各々の各分岐予測情報の各インデックス情報を各々生成すること、
    を特徴とするハイブリッド分岐予測装置。
  15. 請求項14に記載のハイブリッド分岐予測装置において、
    各々の各前記第2のパイプライン制御ユニットは、
    それぞれ異なる長さの分岐履歴をハッシュし、各前記パイプライン化分岐予測情報格納ユニットの各々の各分岐予測情報の各インデックス情報を各々生成すること、
    を特徴とするハイブリッド分岐予測装置。
  16. 請求項14に記載のハイブリッド分岐予測装置において、
    各々の各前記第1のインデックス情報制御ユニットは、
    各々異なる命令数分の分岐履歴情報と、分岐命令キャッシュインデックス情報とに基づいて制御されること、
    を特徴とするハイブリッド分岐予測装置。
  17. 命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置と、
    前記プロセッサパイプライン処理における分岐命令の分岐予測を行う、請求項1乃至請求項9のうちいずれか一項に記載の分岐予測装置と、
    前記各装置を制御する制御装置と、
    を含むことを特徴とするプロセッサ。
  18. 命令に基づいて各ステージを順次移行するプロセッサパイプライン処理を実行する複数のプロセッサパイプライン処理装置と、
    前記プロセッサパイプライン処理における分岐命令の分岐予測を行う、請求項10乃至請求項16のうちいずれか一項に記載のハイブリッド分岐予測装置と、
    前記各装置を制御する制御装置と、
    を含むことを特徴とするプロセッサ。
  19. 分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行う分岐予測方法であって、
    少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第1の選択制御処理と、
    前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、
    前記第2の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、
    を含み、
    前記第1の選択制御処理と、前記第2の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して行うこと
    を特徴とする分岐予測方法。
  20. 請求項19に記載の分岐予測方法において、
    前記第1の選択制御処理は、
    前記分岐予測グループを行選択により選択制御する行選択処理、
    を含み、
    前記第1の選択制御処理は、
    一又は複数の前記分岐予測情報を列選択により選択制御する列選択処理、
    を含み、
    第1の期間に、第1の分岐命令に関し、前記分岐予測グループを選択する第1の行選択処理を行う第1のステップと、
    前記第1の期間の後の第2の期間に、前記第1の分岐命令に関し、一又は複数の前記分岐予測情報を選択する第1の列選択処理を行う第2のステップと、
    前記第2の期間の後の第3の期間に、前記第1の分岐命令に関し、前記第1の列選択処理にて選択された前記分岐予測情報に基づいて、前記第1の分岐命令に関する分岐予測結果を生成する第1の分岐予測結果生成処理を行う第3のステップと、
    を含み、
    前記第2のステップでは、
    前記第1の列選択処理と、前記第1の分岐命令の次に処理される第2の分岐命令に関し前記分岐予測グループを選択する第2の行選択処理と、を並行して処理を行い、
    前記第3のステップでは、
    前記第1の分岐予測結果生成処理と、前記第2の分岐命令に関し一又は複数の前記分岐予測情報を選択する第2の列選択処理と、前記第2の分岐命令の次に処理される第3の分岐命令に関し前記分岐予測グループを選択する第3の行選択処理と、を並行して処理を行うこと、
    を特徴とする分岐予測方法。
  21. 請求項20に記載の分岐予測方法において、
    前記第3のステップでは、
    前記第3の行選択処理の後に、前記第1の分岐予測結果生成処理にて生成された第1の分岐予測結果情報に基づいて、前記第3の期間の後の第4の期間における第4のステップに処理されるべき前記分岐予測情報蓄積処理手段のインデックス情報の値を先行して計算する処理を行うこと
    を特徴とする分岐予測方法。
  22. 請求項21に記載の分岐予測方法において、
    前記第3のステップでは、
    計算された前記インデックス情報の値に基づいて、前記第4の期間に処理されるべき第3の列選択処理のためのインデックス情報の値を抽出し、特定の列選択情報一時格納部に保持する処理を行うこと、
    を特徴とする分岐予測方法。
  23. 請求項21に記載の分岐予測方法において、
    前記第3のステップでは、
    計算された前記インデックス情報の値を、前記第4の期間に処理されるべき第4の行選択処理のためのインデックス情報の値として保持する処理を行うこと、
    を特徴とする分岐予測方法。
  24. 請求項21に記載の分岐予測方法において、
    前記第4のステップでは、
    前記第2の分岐命令に関して生成される第2の分岐予測結果情報を生成する第2の分岐予測結果生成処理と、
    前記第3の行選択処理にて各々の前記分岐予測グループの中から選択されたいずれか一つの前記分岐予測グループと、列選択情報一時格納部の値と、に基づいて、少なくとも2つの各分岐予測情報を選択する第3の列選択第1処理と、
    前記第2の分岐予測結果生成処理にて生成された前記第2の分岐予測結果情報に基づいて、前記第3の列選択第1処理にて選択された各前記分岐予測情報のうち、一つの分岐を選択する第3の列選択第2処理と、
    を行うことを特徴とする分岐予測方法。
  25. 分岐命令に関する分岐予測を行う分岐予測装置が、前記分岐命令に関する分岐予測情報をグループ化した分岐予測グループを各々記憶し前記分岐予測情報を蓄積処理する分岐予測情報蓄積処理手段を参照し、前記分岐命令に関する分岐予測結果を生成して分岐予測を行う分岐予測制御プログラムであって、
    前記分岐予測装置に、
    少なくとも一つの前記分岐命令に関し、前記分岐予測情報蓄積処理手段の各々の前記分岐予測グループの中からいずれか一つの前記分岐予測グループを選択制御する第1の選択制御処理と、
    前記第1の選択制御処理にて選択された前記分岐予測グループの中から一又は複数の前記分岐予測情報を選択制御する第2の選択制御処理と、
    前記第2の選択制御処理にて選択された分岐予測情報に基づいて、前記分岐命令に関する分岐予測結果を生成する分岐予測結果生成処理と、
    を含む処理を実行させ、
    前記分岐予測装置に、
    前記第1の選択制御処理と、前記第2の選択制御処理と、前記分岐予測結果生成処理とについてのパイプライン処理を各分岐命令に関して実行させること
    を特徴とする分岐予測制御プログラム。

JP2007199074A 2007-07-31 2007-07-31 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム Active JP5145809B2 (ja)

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 true JP2009037302A (ja) 2009-02-19
JP5145809B2 JP5145809B2 (ja) 2013-02-20

Family

ID=40339262

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007199074A Active JP5145809B2 (ja) 2007-07-31 2007-07-31 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム

Country Status (2)

Country Link
US (1) US8892852B2 (ja)
JP (1) JP5145809B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017027451A (ja) * 2015-07-24 2017-02-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
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)
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
US11562247B2 (en) * 2019-01-24 2023-01-24 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas
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

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1040104A (ja) * 1996-05-01 1998-02-13 Internatl Business Mach Corp <Ibm> 分岐命令の結果予測装置及び方法
JP2001521241A (ja) * 1997-10-24 2001-11-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ
JP2001527233A (ja) * 1997-12-19 2001-12-25 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
JP2003005956A (ja) * 2001-06-20 2003-01-10 Fujitsu Ltd 分岐予測装置、プロセッサ、及び分岐予測方法
WO2004068337A1 (ja) * 2003-01-30 2004-08-12 Fujitsu Limited 情報処理装置
WO2006028555A2 (en) * 2004-09-08 2006-03-16 Advanced Micro Devices, Inc. Processor with dependence mechanism to predict whether a load is dependent on older store
JP2008217687A (ja) * 2007-03-07 2008-09-18 Nec Corp ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法
JP2010509680A (ja) * 2006-11-03 2010-03-25 クゥアルコム・インコーポレイテッド ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
US7797521B2 (en) * 2007-04-12 2010-09-14 International Business Machines Corporation Method, system, and computer program product for path-correlated indirect address predictions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1040104A (ja) * 1996-05-01 1998-02-13 Internatl Business Mach Corp <Ibm> 分岐命令の結果予測装置及び方法
JP2001521241A (ja) * 1997-10-24 2001-11-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ
JP2001527233A (ja) * 1997-12-19 2001-12-25 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
JP2003005956A (ja) * 2001-06-20 2003-01-10 Fujitsu Ltd 分岐予測装置、プロセッサ、及び分岐予測方法
WO2004068337A1 (ja) * 2003-01-30 2004-08-12 Fujitsu Limited 情報処理装置
WO2006028555A2 (en) * 2004-09-08 2006-03-16 Advanced Micro Devices, Inc. Processor with dependence mechanism to predict whether a load is dependent on older store
JP2010509680A (ja) * 2006-11-03 2010-03-25 クゥアルコム・インコーポレイテッド ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
JP2008217687A (ja) * 2007-03-07 2008-09-18 Nec Corp ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017027451A (ja) * 2015-07-24 2017-02-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
JP5145809B2 (ja) 2013-02-20
US20090037709A1 (en) 2009-02-05
US8892852B2 (en) 2014-11-18

Similar Documents

Publication Publication Date Title
JP5145809B2 (ja) 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
TW201704991A (zh) 藉由演算法匹配、停用特徵或限制效能之回溯相容性
US7991980B2 (en) Concurrent execution of instructions in a processing system
JP5335440B2 (ja) オペランドの早期の条件付き選択
US20140025932A1 (en) Processor, information processing device, and control method of processor
US20080162903A1 (en) Information processing apparatus
JP2009524167A5 (ja)
JP2009230338A (ja) プロセサおよび情報処理装置
JP2010198128A (ja) プロセッサシステム
US7472264B2 (en) Predicting a jump target based on a program counter and state information for a process
JP7077862B2 (ja) 演算処理装置及び演算処理装置の制御方法
US7996655B2 (en) Multiport execution target delay queue FIFO array
Liang et al. TCX: A RISC style tensor computing extension and a programmable tensor processor
JP2008242947A (ja) 半導体装置
US10606602B2 (en) Electronic apparatus, processor and control method including a compiler scheduling instructions to reduce unused input ports
US20220100501A1 (en) Compressing Micro-Operations in Scheduler Entries in a Processor
JPH10116191A (ja) 圧縮命令用バッファを備えたプロセッサ
US20040128482A1 (en) Eliminating register reads and writes in a scheduled instruction cache
US20170068542A1 (en) Processor and store instruction conversion method
US20080222393A1 (en) Method and arrangements for pipeline processing of instructions
JPH10260832A (ja) 情報処理装置
US20050188183A1 (en) Digital signal processor having data address generator with speculative register file
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 Written amendment

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 Written amendment

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